// JavaScript Document

function makeEmpty(raison) {
    document.getElementById(raison).value="";   
}

// determine if the radio button was selected
function showdiv(id) {
    //  show the msg
    document.getElementById(id).className = "show";
    
}

function hidediv(id) {
    //  show the msg
    document.getElementById(id).className = "hide";
}

//for codepostal
function requireLength(id,nonduchamp,id2,min) { 
    fld = document.getElementById(id2).value;
    var message ="";
    var len= fld.length;
    // set minimum and/or maximum field lengths

    if (len >min || len <min) {
        message ="Le nombre de chiffres dans le  champ « "+nonduchamp+" » est incorrect.\n";
        document.getElementById(id).className= "texterror";
    } else if (!fixInt(id2)) {
        message ="La valeur dans le champ « "+nonduchamp+" » est incorrecte.\n";
        document.getElementById(id).className= "texterror";
    } else {
        document.getElementById(id).className= "textnor";
    }
    return message;
}

// check if numeric
function fixInt(id,sep) {
    // integer check/complainer 
    fld = document.getElementById(id).value;
    len = fld.length;
    if (!len)
        // blank fields are the domain of requireValue 
        return true;
    var val= fld;
    if (typeof(sep) != 'undefined')
        val = val.replace(new RegExp(sep,'g'),'');
    val= parseInt(val);
    if (isNaN(val)) {
        // parse error 
        return false;
    } else
        return true;
}

function checkradiobutton(radio_name) {
    var message ="";
    myradio = document.getElementsByName(radio_name);
    rad_val =0;
    for (var i=0; i < myradio.length; i++) {
        if (myradio[i].checked) {
            rad_val = 1;
        }
    }
    if(rad_val == 1) {
    } else {
        message= "Au moins un type de civilité doit etre selectionné.\n";
        myradio.className= "texterror";
    }
    return message;
}

function checkselect(select_id,idtoshow) {
    var message = "";
    type = document.getElementById(select_id).value;
    if(type=='Entreprise') {
        //show txtbox
        document.getElementById(idtoshow).className= "show";
        //document.getElementById(idimg).className= "show";
        if (validateEmpty(idtoshow, 'Raison_Sociale')!="") {
            message = validateEmpty(idtoshow, 'Raison Sociale');
        }
    } else {
        document.getElementById(idtoshow).className= "hide";
    }
    return message;
}

// verifie si le checkbox a été selecter
function check_selectbox(id,nonduchamp) {       
    var message ="";    
    option = document.getElementById(id).value;
    
    if (option == "") { 
        message = "la selection « "+nonduchamp+" » est vide.\n"
        document.getElementById(id).className= "texterror";
    } else{
        document.getElementById(id).className= "textnor";
    }
    return message;
}

function validateEmpty(id,nonduchamp) {
    fld= document.getElementById(id);
    var error = "";
    if (fld.value.length == 0) {
        error = "le champ « "+nonduchamp+" » est vide.\n"
        document.getElementById(id).className= "texterror";
    } else {
        document.getElementById(id).className= "textnor";
    }
    return error;  
    
}

function validatePhone(id,id2,id3,nonduchamp,nonduchamp2,nonduchamp3) {
    fld= document.getElementById(id);
    fld2= document.getElementById(id2);
    fld3= document.getElementById(id3);

    var error = "";
    var stripped = fld.value.replace(/[\(\)\.\-\ ]/g, ''); 
    var stripped2 = fld2.value.replace(/[\(\)\.\-\ ]/g, '');
    var stripped3= fld3.value.replace(/[\(\)\.\-\ ]/g, '');
    
    if (fld.value == "" && fld2.value == "" && fld3.value =="") {
        error = "Vous devez mettre au moins un numero de telephone.\n";
        document.getElementById(id).className= "texterror";
        document.getElementById(id2).className= "texterror";
        document.getElementById(id3).className= "texterror";
    }
    else if (isNaN(parseInt(stripped)) && fld.value !="") {
        error = "Le champ « "+nonduchamp+" » contient des caracteres illegaux.\n";
        document.getElementById(id).className= "texterror";
    }
    else if (isNaN(parseInt(stripped2))&&fld2.value !="") {
        error = "Le champ « "+nonduchamp2+" » contient des caracteres illegaux.\n";
        document.getElementById(id2).className= "texterror";
    } 
    else if (isNaN(parseInt(stripped3))&&fld3.value !="") {
        error = "Le champ « "+nonduchamp3+" » contient des caracteres illegaux.\n";
        document.getElementById(id3).className= "texterror";
    } 
    else if (!(stripped.length == 10)&&fld.value !="") {
        error = "le numero de telephone doit comporter 10 chiffres.\n";
        document.getElementById(id).className= "texterror";
    }
    else if (!(stripped2.length == 10)&&fld2.value !="") {
        error = "le numero de telephone doit comporter 10 chiffres.\n";
        document.getElementById(id2).className= "texterror";
    }
    else if (!(stripped3.length == 10)&&fld3.value !="") {
        error = "le numero de telephone doit comporter 10 chiffres.\n";
        document.getElementById(id3).className= "texterror";
    }
    else {
        document.getElementById(id).className= "textnor";
        document.getElementById(id2).className= "textnor";
        document.getElementById(id3).className= "textnor";
    }
    return error;
}

function validateEmail(id) {
    fld = document.getElementById(id);
    var error="";
    var tfld = trim(fld.value);                        // value of field with whitespace trimmed off
    var emailFilter = /^[^@]+@[^@.]+\.[^@]*\w\w$/ ;
    var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/ ;
    
    if (fld.value == "") {
        document.getElementById(id).className= "texterror";
        error = "Vous n'avez pas precise votre adresse mail.\n";
    }
    else if (!emailFilter.test(tfld)) {              //test email for illegal characters
        document.getElementById(id).className= "texterror";
        error = "Veillez mettre un adresse mail valide.\n";
    }
    else if (fld.value.match(illegalChars)) {
        document.getElementById(id).className= "texterror";
        error = "Votre adresse mail contient des characteurs illegaux.\n";
    }
    else {
        document.getElementById(id).className= "textnor";
    }
    return error;
}

function speciale_validateEmail(id) {
    fld = document.getElementById(id);
    var error="";
    var tfld = trim(fld.value);   
    if (fld.value != "") {
        // value of field with whitespace trimmed off
        var emailFilter = /^[^@]+@[^@.]+\.[^@]*\w\w$/ ;
        var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/ ;
        
        if (fld.value == "") {
            document.getElementById(id).className= "texterror";
            error = "Vous n'avez pas mis l'adresse mail de votre correspontant.\n";
        } else if (!emailFilter.test(tfld)) {              //test email for illegal characters
            document.getElementById(id).className= "texterror";
            error = "Veillez mettre un adresse mail valide pour votre correspontant.\n";
        } else if (fld.value.match(illegalChars)) {
            document.getElementById(id).className= "texterror";
            error = "L'adresse mail de votre correspontant contient des characteurs illegaux.\n";
        } else {
            document.getElementById(id).className= "textnor";
        }
        return error;
    }
    return error;
}


function trim(s) {
    return s.replace(/^\s+|\s+$/, '');
} 

function copyme(from,to) {
    source= document.getElementById(from);      
    to = document.getElementById(to);   
    //copy
    to.value = source.value
}

// check for valid numeric strings     
function IsNumeric(strString) {
    var strValidChars = "0123456789.-";
    var strChar;
    var blnResult = true;

    if (strString.length == 0)
	return false;

    //  test strString consists of valid characters listed above
    for (i = 0; i < strString.length && blnResult == true; i++) {
        strChar = strString.charAt(i);
        if (strValidChars.indexOf(strChar) == -1) {
            blnResult = false;
        }
    }
    return blnResult;
}

function validateFormOnSubmit() {
    var reason = "";

    reason += check_selectbox('select4','type');
    reason += checkselect('select4','raison');
    reason += check_selectbox('select5','civilite');
    reason += validateEmpty('nom','Nom');
    reason += validateEmpty('prenom','Prenom');
    reason += validatePhone('tel1','tel2','tel3','Telephone_fixe','Telephone_bureau','Telephone_portable');
    reason += validateEmail('email');
    reason += validateEmpty('addresse','Adresse');
    reason += validateEmpty('ville','ville');
    reason += requireLength('code','Code_postal','code',5);

    myradio = document.getElementsByName('presta_addresse');

    for (var i=0; i < myradio.length; i++) {
        if (myradio[i].checked) {
            rad_val = myradio[i].value;
        }
    }
    if (rad_val =='1') {
        // if true then we check for presta addresse
        reason += validateEmpty('addresse1','Prestataire_Adresse');
        reason += validateEmpty('ville1','Prestataire_ville');
        reason += requireLength('codepostal1','Prestataire_code_postal','codepostal1',5);
    }
    reason += validateEmpty('debuter', 'Debut Projet');

    if (reason != "") {
        alert("Vous devez faire les corrections suivantes :\n" + reason);
        return false;
    }
    return true;
}


function checknull(idstring) {  
    //alert('str.length');
    //convert the string into an array
    str = idstring.split(",")
    var flag = 0;

    for (i = 0 ; i< str.length; i++) {
        if(!document.getElementById(str[i]).value.length )      
        { flag = 1;
          document.getElementById(str[i]).className='texterror';
        }
        else 
            document.getElementById(str[i]).className='textnor';
    }
    if (flag == '1')
        return false
    else 
        return true;
}

function validateme(test) {
    var nom2 = test;
    //alert(nom2);
    if (document.getElementById(nom2).value == "") {
        document.getElementById(nom2).className = "texterror";  
        alert("Ce champ est obligatoire");      
        return false;
    } else {
        document.getElementById(nom2).className = "textnor";    
        //document.myform.submit();
        return true;
    }
}

function dynamicValidation(field,types,groupcount,uniqueId,uniquetype,label) {
    var names = field.split(",")
    var types = types.split(",")
    var group = groupcount.split(",")

    var uniqueIdfields = uniqueId != "" ? uniqueId.split(",") : "";
    var uniquetypefields = uniquetype != "" ? uniquetype.split(",") : "";
    var labels = label != "" ? label.split(",") : "";

    //count no of groups
    var lengroup = group.length;

    //break names into groupnames, based on group sizes as specified in 'groupcount'
    var groupName = new Array();
    for (var counter = 0; counter < lengroup; ++counter) {
        var groupname = new Array();
        for (var j = 0; j < group[counter]; j++) {
            groupname[j] = names[j]; //push into array
        }
        names.splice(0, group[counter]); //remove the element to reduce the array
        mystring = groupname.toString();
        groupName[counter] = mystring;
        //      alert(groupName[counter])
    }

    var groupType = new Array()
    for (counter = 0; counter < lengroup; counter++) {
        var grouptype = new Array()
        for (j = 0; j < group[counter]; j++) {
            grouptype[j] = types[j]//push into array
        }
        types.splice(0, group[counter]);//remove the element to reduce the array
        mystring = grouptype.toString();
        groupType[counter] =mystring;
        //alert(groupType[counter])
    }

    var reason = "";
    for (c = 0; c < groupName.length; ++c) {
        //alert(groupName[c]);
        mynamearray = groupName[c].split(",")
        mytypearray = groupType[c].split(",")
        var error = 0;

	// Look for filled input fields. The key here is in 'break'ing
	// out of the for() loop as soon as we know it's okay or not.

        for (b = 0; b < mynamearray.length; ++b) {
            //alert(mynamearray[b]);
            //alert(mytypearray[b]);

            //get name
            name = mynamearray[b];
            label = mynamearray[0];
            type = mytypearray[b];

            if (!document.getElementById(name)) {
                // alert('id="' + name + '" not in document type=' + type + ' b=' + b);
                continue;
            }

            if (type == "radio") {
                myradio = document.getElementsByName(name);
                rad_val =0;
                //alert(myradio.length);
                for (var j=0; j < myradio.length; j++) {
                    //alert(myradio[j].checked)
                    if (myradio[j].checked) {
                        rad_val = 1;
                    }
                }
                if (rad_val != 1) {
                    error = 1;
                } else {
                    error = 0;
                    break;
                }
            }
            if (type == "checkbox") {
                //alert(document.getElementById(name).checked)
                if (!document.getElementById(name).checked) {
                    error = 1;
                } else {
                    error = 0;
                    break; // after finding one checked element, we stop searching for submited elements in the group
                }

            }
            if (type == "text") {
                //alert(name);
                mytext = document.getElementById(name).value;
                if (mytext == "") {
                    error = 1;
                } else {
                    error = 0;
                    break;
                }
            }
            if (type == "textarea") {
                mytextarea = document.getElementById(name).value;
                if (mytextarea == "") {
                    error = 1;
                } else {
                    error = 0;
                    break;
                }
            }
            if (type == "select") {
                myselect = document.getElementById(name).value;
                if (myselect == "") {
                    error = 1;
                } else {
                    error = 0;
                    break;
                }
            }
        }//innner for
        msg = "";
        if (error==1) {
            msg = " - Précisez une valeur pour le champ « "+label+" »\n";
            reason+=msg;
        }
    }//outer for

    //now check the individuals fields
    var uniquerrormsg = "";
    if (uniqueIdfields != "") {
        //when champ uniques does not exists
        for (b = 0; b < uniqueIdfields.length; ++b) {
            type = uniquetypefields[b] ;
            name = uniqueIdfields[b]
            testlabel = labels[b]
            if (type == "radio") {
                myradio = document.getElementsByName(name);
                rad_val = 0;
                //alert(myradio.length);
                for (var j=0; j < myradio.length; j++) {
                    //alert(myradio[j].checked)
                    if (myradio[j].checked) {
                        rad_val = 1;
                    }
                }
                if (rad_val != 1) {
                    uniquerrormsg += " - Le champ obligatoire « "+testlabel+" » est vide \n";
                } else {
                    //nothing
                }
            }//radio
            if (type == "checkbox") {
                //alert(document.getElementById(name).checked)
                if (!document.getElementById(name).checked) {
                    uniquerrormsg += " - La case à cocher obligatoire « "+testlabel+" » est vide \n";
                } else {
                }
            }//checkbox
            if (type == "text") {
                mytext = document.getElementById(name).value;
                if (mytext == "") {
                    uniquerrormsg += " - Le champ obligatoire « "+testlabel+" » est vide \n";
                } else {
                }
            }//text
            if (type == "textarea") {
                mytextarea = document.getElementById(name).value;
                if (mytextarea == "") {
                    uniquerrormsg += " - Le champ obligatoire « "+testlabel+" » est vide \n";
                }
                else {
                }
            }
            if (type == "select") {
                myselect = document.getElementById(name).value;
                if (myselect == "") {
                    uniquerrormsg += " - La boite de sélection obligatoire « "+testlabel+" » est vide \n";
                } else {
                }
            }//select
        }//for
    }
    reason += uniquerrormsg;

    if (reason != "") {
        alert("Vous devez faire les corrections suivantes :\n" + reason);
        return false;
    }
    return true;
}
