var error_email_nl="gelieve een correct e-mail adres in te vullen";
var error_obligatory_nl="gelieve alle verplichte velden in te vullen";
var error_password_nl="gelieve een correct paswoord in te vullen";
var error_username_nl="gelieve een correcte gebruikersnaam in te vullen";
var error_usernames_duplicates_nl="gelieve telkens een andere gebruikersnaam in te vullen:";
var error_technical_nl = "uw aanvraag kon niet uitgevoerd worden, gelieve opnieuw te proberen";

var error_email_fr="veuillez introduire une adresse e-mail correcte";
var error_obligatory_fr="veuillez remplir tous les champs indispensables";
var error_password_fr="veuillez introduire un mot de passe correct";
var error_username_fr="veuillez introduire un nom d'utilisateur correct";
var error_usernames_duplicates_fr="veuillez introduire à chaque fois un autre nom d'utilisateur:";
var error_technical_fr = "votre demande n'a pas pu être exécutée, veuillez recommencer";

var unitUsername_nl="gebruikersnaam";
var unitUsername_fr="nom d'utilisateur";
var unitPassword_nl="paswoord";
var unitPassword_fr="mot de passe";
var unitPhone_nl="gsm nr ontvanger";
var unitPhone_fr="gsm n° récepteur";
var unitBrand_nl="merk toestel";
var unitBrand_fr="marque appareil";
var unitType_nl="type toestel";
var unitType_fr="type appareil";
var unitRemove_nl="x dit toestel verwijderen...";
var unitRemove_fr="x supprimer cet appareil...";

function $()
{
    var elements = new Array();
    for (var i = 0; i < arguments.length; i++) {
        var element = arguments[i];
        if (typeof element == 'string')
            element = document.getElementById(element);
        if (arguments.length == 1)
            return element;
        elements.push(element);
    }
    return elements;
}

var unitCounter=0;
function addNewUnit(){
    unitCounter++;
    var lang = document.contactForm.lang_forms.value;
    //parentNode
    var unitInfoContainer = document.getElementById("unitInfoContainer");
    //create unitInfoFieldsDiv
    var unitInfoFieldsDiv = document.createElement("div");
    unitInfoFieldsDiv.id = "unitInfoFields_" + unitCounter;
    unitInfoFieldsDiv.className = "unitInfoFields";
    //username
    var unitUsernameInputLabel= document.createElement("label");
    unitUsernameInputLabel.setAttribute("for", "unitUsername_" + unitCounter);
    unitUsernameInputLabel.innerHTML = eval("unitUsername_"+lang)+"*";
    var unitUsernameInput =  document.createElement("input");
    unitUsernameInput.type =  "text";
    unitUsernameInput.className= "inputField_v1";
    unitUsernameInput.id= "unitUsername_" + unitCounter;
    unitUsernameInput.name= "unitUsername_" + unitCounter;
    //unitUsernameInput.value  = $("unitUsername_0").value+"_"+unitCounter;
    addEvent(unitUsernameInput, 'focus', oninputfocus);
    addEvent(unitUsernameInput, 'blur', oninputblur);
    //password
    var unitPasswordInputLabel= document.createElement("label");
    unitPasswordInputLabel.setAttribute("for", "unitPassword_" + unitCounter);
    unitPasswordInputLabel.innerHTML = eval("unitPassword_"+lang)+"*" ;
    var unitPasswordInput =  document.createElement("input");
    unitPasswordInput.type = "text";
    unitPasswordInput.className= "inputField_v1";
    unitPasswordInput.id= "unitPassword_" + unitCounter;
    unitPasswordInput.name= "unitPassword_" + unitCounter;
    addEvent(unitPasswordInput, 'focus', oninputfocus);
    addEvent(unitPasswordInput, 'blur', oninputblur);
    //PhoneNumber
    var unitPhoneInputLabel= document.createElement("label");
    unitPhoneInputLabel.setAttribute("for", "unitPhone_" + unitCounter);
    unitPhoneInputLabel.innerHTML = eval("unitPhone_"+lang)+"*" ;
    var unitPhoneInput = document.createElement("input");
    unitPhoneInput.type = "text";
    unitPhoneInput.className= "inputField_v1";
    unitPhoneInput.id= "unitPhone_" + unitCounter;
    unitPhoneInput.name= "unitPhone_" + unitCounter;
    addEvent(unitPhoneInput, 'focus', oninputfocus);
    addEvent(unitPhoneInput, 'blur', oninputblur);
    //unitBrand
    var unitBrandInputLabel= document.createElement("label");
    unitBrandInputLabel.setAttribute("for", "unitBrand_" + unitCounter);
    unitBrandInputLabel.innerHTML = eval("unitBrand_"+lang)+"*" ;
    var unitBrandInput =  document.createElement("input");
    unitBrandInput.type =  "text";
    unitBrandInput.className = "inputField_v1";
    unitBrandInput.id = "unitBrand_" + unitCounter;
    unitBrandInput.name = "unitBrand_" + unitCounter;
    addEvent(unitBrandInput, 'focus', oninputfocus);
    addEvent(unitBrandInput, 'blur', oninputblur);
    //unitType
    var unitTypeInputLabel= document.createElement("label");
    unitTypeInputLabel.setAttribute("for", "unitType_" + unitCounter);
    unitTypeInputLabel.innerHTML = eval("unitType_"+lang)+"*" ;
    var unitTypeInput =  document.createElement("input");
    unitTypeInput.type =  "text";
    unitTypeInput.className= "inputField_v1";
    unitTypeInput.id= "unitType_" + unitCounter;
    unitTypeInput.name= "unitType_" + unitCounter;
    addEvent(unitTypeInput, 'focus', oninputfocus);
    addEvent(unitTypeInput, 'blur', oninputblur);
		

    //removeUnitButton
    //	var removeUnitButton = document.createElement("input");
    //		removeUnitButton.type = "button";
    //		removeUnitButton.className="unit_btn";
    //		removeUnitButton.onclick = function () { unitInfoContainer.removeChild(this.parentNode); };
    //		removeUnitButton.value = "toestel verwijderen...";
    //removeUnitButton
    var removeUnitButton = document.createElement("a");
    removeUnitButton.className="unit_btn";
    removeUnitButton.onclick = function () {
        unitInfoContainer.removeChild(this.parentNode);
    };
    removeUnitButton.innerHTML = eval("unitRemove_"+lang);

    //append
    unitInfoFieldsDiv.appendChild(unitUsernameInputLabel);
    unitInfoFieldsDiv.appendChild(unitUsernameInput);
		
    unitInfoFieldsDiv.appendChild(unitPasswordInputLabel);
    unitInfoFieldsDiv.appendChild(unitPasswordInput);
		
    unitInfoFieldsDiv.appendChild(unitPhoneInputLabel);
    unitInfoFieldsDiv.appendChild(unitPhoneInput);
		
    unitInfoFieldsDiv.appendChild(unitBrandInputLabel);
    unitInfoFieldsDiv.appendChild(unitBrandInput);
		
    unitInfoFieldsDiv.appendChild(unitTypeInputLabel);
    unitInfoFieldsDiv.appendChild(unitTypeInput);
		
    unitInfoFieldsDiv.appendChild(removeUnitButton);
		
    unitInfoContainer.appendChild(unitInfoFieldsDiv);
			
}


function addEvent(obj, evType, fn){
    //login button
    if((obj!= $("addNewUnit_btn")) && (obj!= $("news"))&& (obj!= $("submit"))){
        if (obj.addEventListener){
            obj.addEventListener(evType, fn, true);
            return true;
        } else if (obj.attachEvent){
            var r = obj.attachEvent("on"+evType, fn);
            return r;
        } else {
            return false;
        }
    }
} 
addEvent(window, 'load', function() {
    var input, textarea,selectt;
    var inputs = document.getElementsByTagName('input');
    for (var i = 0; (input = inputs[i]); i++) {
        addEvent(input, 'focus', oninputfocus);
        addEvent(input, 'blur', oninputblur);
    }
    var textareas = document.getElementsByTagName('textarea');
    for (var i = 0; (textarea = textareas[i]); i++) {
        addEvent(textarea, 'focus', oninputfocus);
        addEvent(textarea, 'blur', oninputblur);
    }
    var selects = document.getElementsByTagName('select');
    for (var i = 0; (selectt = selects[i]); i++) {
        addEvent(selectt, 'focus', oninputfocus);
        addEvent(selectt, 'blur', oninputblur);
    }
});

function oninputfocus(e) {
    /* Cookie-cutter code to find the source of the event */
    if (typeof e == 'undefined') {
        var e = window.event;
    }
    var source;
    if (typeof e.target != 'undefined') {
        source = e.target;
    } else if (typeof e.srcElement != 'undefined') {
        source = e.srcElement;
    } else {
        return;
    }
    /* End cookie-cutter code */
    // source.style.border='1px solid #000';
    source.style.background='#FFFFE6';
}
function oninputblur(e) {
    /* Cookie-cutter code to find the source of the event */
    if (typeof e == 'undefined') {
        var e = window.event;
    }
    var source;
    if (typeof e.target != 'undefined') {
        source = e.target;
    } else if (typeof e.srcElement != 'undefined') {
        source = e.srcElement;
    } else {
        return;
    }
    /* End cookie-cutter code */
    //source.style.border='1px solid #423724';
    //alert(source.id);
    source.style.background="#fff";
}
 
 
 
 
//---------------------------------------//
//contact forms

// Removes leading whitespaces
function LTrim( value )
{
    var re = /\s*((\S+\s*)*)/;
    return value.replace(re, "$1");
}

// Removes ending whitespaces
function RTrim( value )
{
    var re = /((\s*\S+)*)\s*/;
    return value.replace(re, "$1");
}

// Removes leading and ending whitespaces
function trim( value )
{
    return LTrim(RTrim(value));
}

function verifyAlpha(AZ) {
    var CorrChar = new Array;
    var pos = 0;
    CorrChar[pos] = 10;
    pos++;
    CorrChar[pos] = 13;
    pos++;
    for (var l = 32; l <= 34; l++) {
        CorrChar[pos] = l;
        pos++;
    }
    for (var m = 38; m <= 125; m++) {
        CorrChar[pos] = m;
        pos++;
    }
    for (var n = 192; n < 255; n++) {
        CorrChar[pos] = n;
        pos++;
    }
    var validChar = false;
    if (AZ.length != 0) {
        for (var i = 0; i < AZ.length; i++) {
            validChar = false;
            for (var j = 0; j < CorrChar.length; j++) {
                if (AZ.charCodeAt(i) == CorrChar[j]) {
                    validChar = true;
                    break;
                }
            }
            if (!validChar) {
                AZ = AZ.replace(AZ.substring(i, i + 1), " ");
                i--;
            }
        }
    }
    return AZ;
}

function validateForm() 
{
    setValidateRemark([]);
    var lang, lastName, firstName, street, number, postalCode, city, country, email, remarks, phone, companyName, unitUsername, unitPassword, unitBrand, unitType, unitPhone;
    //var unitdata = new Array();
    var userBean;
    var unitBeanList = new Array();

    //testcase without javascript testing/////
    /*
    userBean = new UserBean("myfirstname","mylastname","","","","","","","nl","test@ngi.be","");
    //unitBeanList.push(new UnitBean("myuser","mypassword","myphone","mybrand","mytype",0));
    unitBeanList.push(new UnitBean("myuser","mypassword","myphone","mybrand","mytype",0));
    unitBeanList.push(new UnitBean("myuser1","mypassword","myphone","mybrand","mytype",1));
    unitBeanList.push(new UnitBean("myuser2","mypassword","myphone","mybrand","mytype",2));
    unitBeanList.push(new UnitBean("myuser3","mypassword","myphone","mybrand","mytype",3));
    registration.saveRegistration(new RequestBean(unitBeanList,userBean,"remark",document.contactForm.news.checked), {callback: sendDataCallBack, errorHandler: sendDataError});
    return false;
    */
    /////////////

    lang = document.contactForm.lang_forms.value;
	
    remarks = verifyAlpha( trim(document.contactForm.remarks.value) );

    if(remarks != "")
    {
        var isNav = navigator.appName.toLowerCase().indexOf("netscape") >= 0;
        var splitString = remarks.split("\n");
        remarks = "";

        for(var i = 0; i < splitString.length; i++)
        {
            if(isNav)
            {
                remarks += splitString[i] + " \n";
            }
            else
            {
                if(splitString[i].charAt(0) != " ")
                {
                    remarks += " " + splitString[i];
                }
                else
                {
                    remarks += splitString[i];
                }
            }
        }
    }

    document.contactForm.remarks.value = remarks;

    lastName = verifyAlpha( trim(document.contactForm.lastName.value) );
    document.contactForm.lastName.value = lastName;

    if(lastName == "")
    {
        setValidateRemark([eval("error_obligatory_"+lang)]);
        //document.contactForm.lastName.focus();
        document.contactForm.lastName.className = "fieldError";
        return false;
    }
    else
    {
        document.contactForm.lastName.className = "inputField_v1";
    }

    firstName = verifyAlpha( trim(document.contactForm.firstName.value) );
    document.contactForm.firstName.value = firstName;

    if(firstName == "")
    {
        setValidateRemark([eval("error_obligatory_"+lang)]);
        //document.contactForm.firstName.focus();
        document.contactForm.firstName.className = "fieldError";
        return false;
    }
    else
    {
       document.contactForm.firstName.className = "inputField_v1";
    }

    street = verifyAlpha( trim(document.contactForm.street.value) );
    document.contactForm.street.value = street;

    number = verifyAlpha( trim(document.contactForm.number.value) );
    document.contactForm.number.value = number;


    postalCode = verifyAlpha( trim(document.contactForm.postalCode.value) );
    document.contactForm.postalCode.value = postalCode;

    city = verifyAlpha( trim(document.contactForm.city.value) );
    document.contactForm.city.value = city;

    country = verifyAlpha( trim(document.contactForm.country.value) );
    document.contactForm.country.value = country;

    companyName = verifyAlpha( trim(document.contactForm.companyName.value) );
    document.contactForm.companyName.value = companyName;

    phone = verifyAlpha( trim(document.contactForm.phone.value) );
    document.contactForm.phone.value = phone;

    email = verifyAlpha( trim(document.contactForm.email.value) );
    document.contactForm.email.value = email;

    if(email == "")
    {
        setValidateRemark([eval("error_obligatory_"+lang)]);
        //document.contactForm.email.focus();
        document.contactForm.email.className = "fieldError";
        return false;
    }
    else
    {
        if( email.indexOf("@") < 1 ||
            email.indexOf("@") > email.length - 4 ||
            email.indexOf("@") != email.lastIndexOf("@") ||
            email.indexOf(".") == 0 ||
            email.lastIndexOf(".") < email.indexOf("@") + 2 ||
            email.lastIndexOf(".") > email.length - 2) 
            {
            setValidateRemark([eval("error_email_"+lang)]);
            //document.contactForm.email.focus();
            document.contactForm.email.className = "fieldError";
            return false;
        }
        else
        {
            document.contactForm.email.className = "inputField_v1";
        }
    }

    userBean = new UserBean(firstName,lastName,companyName,street,number,postalCode,city,country,lang,email,phone);

    var unitCounter2 = 0;

    for(var i=0; i<=unitCounter;i++)
    {
        if(document.getElementById("unitInfoFields_"+i) != null)
        {
            unitUsername = trim(document.contactForm["unitUsername_"+i].value);
            document.contactForm["unitUsername_"+i].value = unitUsername;
            unitPassword = trim(document.contactForm["unitPassword_"+i].value);
            document.contactForm["unitPassword_"+i].value = unitPassword;
            unitBrand = trim(document.contactForm["unitBrand_"+i].value);
            document.contactForm["unitBrand_"+i].value = unitBrand;
            unitType = trim(document.contactForm["unitType_"+i].value);
            document.contactForm["unitType_"+i].value = unitType;
            unitPhone = trim(document.contactForm["unitPhone_"+i].value);
            document.contactForm["unitPhone_"+i].value = unitPhone;

            if((unitUsername.length==0) && (unitPassword.length==0) && (unitBrand.length==0) && (unitType.length==0) && (unitPhone.length==0))
            {
                continue;
            }
            else
            {
                unitCounter2++;
            }
        }
        else
        {
            continue;
        }

        if(unitUsername == '')
        {
            setValidateRemark([eval("error_obligatory_"+lang)]);
            //document.contactForm["unitUsername_"+i].focus();
            document.contactForm["unitUsername_"+i].className = "fieldError";
            return false;
        }

        unitUsername = verifyAlpha(unitUsername);
        
        if(unitUsername != document.contactForm["unitUsername_"+i].value)
        {
            setValidateRemark([eval("error_username_"+lang)]);
            //document.contactForm["unitUsername_"+i].focus();
            document.contactForm["unitUsername_"+i].className = "fieldError";
            return false;
        }
        else
        {
            document.contactForm["unitUsername_"+i].className = "inputField_v1";
        }

        if(unitPassword == '')
        {
            setValidateRemark([eval("error_obligatory_"+lang)]);
            //document.contactForm["unitPassword_"+i].focus();
            document.contactForm["unitPassword_"+i].className = "fieldError";
            return false;
        }

        unitPassword = verifyAlpha(unitPassword);

        if(unitPassword != document.contactForm["unitPassword_"+i].value)
        {
            setValidateRemark([eval("error_password_"+lang)]);
            //document.contactForm["unitPassword_"+i].focus();
            document.contactForm["unitPassword_"+i].className = "fieldError";
            return false;
        }
        else
        {
            document.contactForm["unitPassword_"+i].className = "inputField_v1";
        }
        
        if(unitPhone == '')
        {
            setValidateRemark([eval("error_obligatory_"+lang)]);
            //document.contactForm["unitPhone_"+i].focus();
            document.contactForm["unitPhone_"+i].className = "fieldError";
            return false;
        }
        else
        {
            document.contactForm["unitPhone_"+i].className = "inputField_v1";
        }

        if(unitBrand == '')
        {
            setValidateRemark([eval("error_obligatory_"+lang)]);
            //document.contactForm["unitBrand_"+i].focus();
            document.contactForm["unitBrand_"+i].className = "fieldError";
            return false;
        }
        else
        {
            document.contactForm["unitBrand_"+i].className = "inputField_v1";
        }

        if(unitType == '')
        {
            setValidateRemark([eval("error_obligatory_"+lang)]);
            //document.contactForm["unitType_"+i].focus();
            document.contactForm["unitType_"+i].className = "fieldError";
            return false;
        }
        else
        {
            document.contactForm["unitType_"+i].className = "inputField_v1";
        }

        unitBeanList.push(new UnitBean(unitUsername,unitPassword,unitPhone,unitBrand,unitType,i));
        //unitdata.push([username,password,unitBrand,unitType,unitPhone]);
    }

    if(unitCounter2 == 0)
    {
        setValidateRemark([eval("error_obligatory_"+lang)]);
        //document.contactForm["unitUsername_0"].focus();
        document.contactForm["unitUsername_0"].className = "fieldError";
        return false;
    }
    else
    {
        var duplicate_usernames = "";

        /*
        for(var i=0; i < (unitdata.length - 1); i++)
        {
            for(var y=i + 1; y < unitdata.length; y++)
            {
                if(unitdata[i][0].equals(unitdata[y][0]))
                {
                    if(duplicate_usernames.indexOf(unitdata[i][0])<0)
                    {
                        if(duplicate_usernames.length > 0)
                        {
                            duplicate_usernames += ", ";
                        }

                        duplicate_usernames += unitdata[i][0];
                    }
                }
            }
        }
        */
       
        for(var i=0; i < (unitBeanList.length - 1); i++)
        {
            for(var y=(i + 1); y < unitBeanList.length; y++)
            {
                if(unitBeanList[i].unitUsername == unitBeanList[y].unitUsername)
                {
                    if(duplicate_usernames.indexOf(unitBeanList[i].unitUsername)<0)
                    {
                        duplicate_usernames += (duplicate_usernames.length > 0)?", ":" "; 
                        duplicate_usernames += "'"+unitBeanList[i].unitUsername+"'";
                    }

                    document.contactForm["unitUsername_"+unitBeanList[i].unitFieldNumber].className = "fieldError";
                    document.contactForm["unitUsername_"+unitBeanList[y].unitFieldNumber].className = "fieldError";
                 }
            }
        }

        if(duplicate_usernames.length > 0)
        {
            setValidateRemark([eval("error_usernames_duplicates_"+lang) + duplicate_usernames]);
            return false;
        }
    }

    /*
    if(typeof(registration) != "undefined")
    {
        document.getElementById("submit").disabled = true;
        registration.saveRegistration(new RequestBean(unitBeanList,userBean,remarks,document.contactForm.news.checked), {callback: sendDataCallBack, errorHandler: sendDataError});
    }
    else
    {
        setValidateRemark([eval("error_technical_"+lang)]);
    }
    */

    try
    {
        document.getElementById("submit").disabled = true;
        registration.saveRegistration(new RequestBean(unitBeanList,userBean,remarks,document.contactForm.news.checked), {callback: sendDataCallBack, errorHandler: sendDataError});
    }
    catch(error)
    {
        alert(error);
        setValidateRemark([eval("error_technical_"+lang)]);
    }

    return false;
}

function setValidateRemark(messages)
{
    var newList = "";

    if(messages.length >0)
    {
        newList += "<ul>";

        for(var i=0; i<messages.length; i++)
        {
            newList += "<li>"+messages[i]+"</li>";
        }

        newList += "</ul>";
    }

    document.getElementById("validateRemark").innerHTML = newList;
}

function sendDataCallBack(responseBean)
{
    if(responseBean.error)
    {
      document.getElementById("submit").disabled = false;
      var elem;

      for(var i=0; i<responseBean.fieldNames.length;i++)
      {
          elem = document.contactForm[responseBean.fieldNames[i]];

          //test if user did not delete unit while sending data
          if(typeof(elem) != "undefined")
          {
            elem.className = "fieldError";
          }
      }

      setValidateRemark(responseBean.errorMessages);

    }
    else
    {
      document.getElementById("ntrip_form_div").style.display = 'none';

      if(responseBean.mailingListResult.length>0)
      {
         document.getElementById("mailingListResult").innerHTML =  responseBean.mailingListResult;
      }

      document.getElementById("ntrip_result_div").style.display = '';
    }
}

function sendDataError(error)
{
    alert("senderror:"+error)
    document.getElementById("submit").disabled = false;
    setValidateRemark([eval("error_technical_"+document.contactForm.lang_forms.value)]);
}

function UserBean(firstName,lastName,companyName,street,number,postalCode,city,country,language,email,phone)
{
    this.firstName = firstName;
    this.lastName = lastName;
    this.companyName = companyName;
    this.street = street;
    this.number = number;
    this.postalCode=postalCode;
    this.city = city;
    this.country = country;
    this.language = language;
    this.email = email;
    this.phone = phone;
}

function UnitBean(unitUsername,unitPassword,unitPhone,unitBrand,unitType,unitFieldNumber)
{
    this.unitUsername = unitUsername;
    this.unitPassword = unitPassword;
    this.unitPhone = unitPhone;
    this.unitBrand = unitBrand;
    this.unitType = unitType;
    this.unitFieldNumber = unitFieldNumber;
}

function RequestBean(unitBeanList,userBean,remark,addToMailingList)
{
    this.unitBeanList = unitBeanList;
    this.userBean = userBean;
    this.remark = remark;
    this.addToMailingList = addToMailingList;
}
