//for the iframe username check
//initial sets the src of the iframe
//document domina ensures that we can read from the iframe
//host and https set the proper host/https to check depending on location

var legaUserChars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_';


function inValidCharSet(str,charset)
{
	var result = true;

	// Note: doesn't use regular expressions to avoid early Mac browser bugs
	for (var i=0;i<str.length;i++)
		if (charset.indexOf(str.substr(i,1))<0)
		{
			result = false;
			break;
		}

	return result;
}






// Form Validation
function radio_button_checked(button) {
    var radio_choice = false;
    for (counter = 0; counter < button.length; counter++) {
        if (button[counter].checked)
            radio_choice = true;
    }
    return(radio_choice);
}

function checkForm() {
    try {

        // skip the following if this is an upgrade form

        if (document.regform.EmailAddress) {
            re = /^[+\w-.&]+\@[\w-.&]+\.\w+/;
            if (document.regform.EmailAddress.value) {
                if (!re.test(document.regform.EmailAddress.value)) {
                    alert("Veuillez entrer une adresse E-mail valide.");
                    document.regform.EmailAddress.focus();
                    return false;
                }
            } else {
                    alert("Veuillez entrer une adresse E-mail.");
                    document.regform.EmailAddress.focus();
                    return false;
            }

            if (document.regform.username.value.length=='') {
                alert("Veuillez entrer un pseudo.");
                document.regform.username.focus();
                return false;
            }

            if(!inValidCharSet(document.regform.username.value,legaUserChars)) {
                alert("Pseudo invalide! Chiffres et lettres uniquement. Sans espace!");
                return false;
            }

            if (document.regform.password.value.length < 6) {
                alert("Veuillez entrer un Mot de Passe valide (6 caractères au moins).");
                document.regform.password.focus();
                return false;
            }

            if (document.regform.password.value != document.regform.PassWord_Check.value) {
                alert("Votre mot de passe ne correspond pas à la vérification.");
                document.regform.PassWord_Check.focus();
                return false;
            }
        }

        if (document.regform.prenom.value.length=='') {
            alert("Veuillez entrer votre Prénom.");
            document.regform.prenom.focus();
            return false;
        }

        if (document.regform.nom.value.length=='') {
            alert("Veuillez entrer votre Nom.");
            document.regform.nom.focus();
            return false;
        }

        if (document.regform.adresse.value == '') {
            alert("Veuillez entrer votre Adresse.");
            document.regform.adresse.focus();
            return false;
        }

        if (document.regform.ville.value == '') {
            alert("Veuillez entrer votre Ville.");
            document.regform.ville.focus();
            return false;
        }

        if (document.regform.cp.value == '') {
            alert("Veuillez entrer votre Code Postal.");
            document.regform.cp.focus();
            return false;
        }

        if (document.regform.pays.value=='') {
            alert("Veuillez selectionner un Pays.");
            document.regform.pays.focus();
            return false;
        }
        
        if (document.regform.annee.value=='' || document.regform.annee.value < 0) {
            alert("Veuillez selectionner une Année de naissance.");
            document.regform.annee.focus();
            return false;
        }
        if (document.regform.mois.value=='' || document.regform.mois.value < 0) {
            alert("Veuillez selectionner un Mois de naissance.");
            document.regform.mois.focus();
            return false;
        }
        if (document.regform.jour.value=='' || document.regform.jour.value < 0) {
            alert("Veuillez selectionner un Jour de naissance.");
            document.regform.jour.focus();
            return false;
        }

        if (document.regform.gender && document.regform.gender.value=='') {
            alert("Veuillez selectionner un Genre.");
            document.regform.gender.focus();
            return false;
        }



        if (document.regform.iagree && !document.regform.iagree.checked) {
            alert("In order to continue, you must check the box labeled I Agree.");
            document.regform.iagree.focus();
            return false;
        }



    }
    catch(e) {
        if (e) { alert("There is a problem with our validation logic:\n" + e); return(false); }
    }

    return DoubleClickTrapperAction();
}











function y2k(d) {
    return (d < 1000) ? d + 1900 : d;
}

function checkDate(month,day,year) {

    // check to make sure that selected date is valid
    var SY = year;
    var SM = month;
    var SD = day-1;

    // check months with only 30 days
    if (((SM == 4) || (SM == 6) || (SM == 9) || (SM == 11)) && (SD == 30)) {
        errorMsg = "Incorrect date entered. ";
        errorMsg = errorMsg + month;
        errorMsg = errorMsg + " only has 30 days."
        alert(errorMsg);
        return false;
    }

    // check February on leap years (only 29 days)
    var leapyear = false;
    var i = year;

    // check for leapyear - Any year divisible by 4, except those divisible by 100 (but NOT 400)
    if ( (Math.floor(i/4) == (i/4)) && ((Math.floor(i/100) != (i/100)) || (Math.floor(i/400) == (i/400))) )
        leapyear = true;
    else
        leapyear = false;

    if ( leapyear && (SM == 2) && (SD > 28) ){
        errorMsg = "Incorrect date entered.  February only has 29 days in ";
        errorMsg = errorMsg + year;
        alert(errorMsg);
        return false;
    }

    // check February for all other years (only 28 days)
    if ( (SM == 2) && (SD > 27) && (leapyear == false) ) {
        errorMsg = "Incorrect date entered.  February only has 28 days in ";
        errorMsg = errorMsg + year;
        alert(errorMsg);
        return false;
    }

    return true;
}











/** Functions for use in registration templates.*/
/**
 *  This function populates fields with ids "dayOfBirth",
 *  "monthOfBirth", and "yearOfBirth" by parsing the value
 *  of the field with id "dob". The lists of days
 *  of the month depends on the month and year chosen. The
 *  function should be called after a page is loaded and 
 *  when any of the target fields is changed by the user.
 */
function loadDateOfBirth(mode) {    
    var day = document.getElementById("dayOfBirth");
    var month = document.getElementById("monthOfBirth");
    var year = document.getElementById("yearOfBirth");
    var dateOfBirth = document.getElementById("dateOfBirth");    
    
    // Get Current Year
    var time = new Date();
    var currYear = time.getFullYear();
    var thisYear = time.getFullYear();
    
    
    var daysInMonth=0;
    var totalMonths=12;
    var totalYears=110;
    
    // Prepare Year Dropdown
    year.options.length=totalYears+1;
    year.options[0].value=-1;
    year.options[0].text="Année";
    for (var i=1; i<=totalYears; i++,thisYear--) {
        year.options[i].value=thisYear;
        year.options[i].text=thisYear;
    }
    
    // Prepare Month Dropdown
    month.options.length=13;
    month.options[0].value=-1;
    month.options[0].text="Mois";
    month.options[1].value="0" + 1;
    month.options[1].text="Janvier";
    month.options[2].value="0" + 2;
    month.options[2].text="Février";
    month.options[3].value="0" + 3;
    month.options[3].text="Mars";
    month.options[4].value="0" + 4;
    month.options[4].text="Avril";
    month.options[5].value="0" + 5;
    month.options[5].text="Mai";
    month.options[6].value="0" + 6;
    month.options[6].text="Juin";
    month.options[7].value="0" + 7;
    month.options[7].text="Juillet";
    month.options[8].value="0" + 8;
    month.options[8].text="Aout";
    month.options[9].value="0" + 9;
    month.options[9].text="Septembre";
    month.options[10].value=10;
    month.options[10].text="Octobre";
    month.options[11].value=11;
    month.options[11].text="Novembre";
    month.options[12].value=12;
    month.options[12].text="Décembre";
    
    var od = 0;
    var om = 0;
    var oy = 0;
    if (mode == 1 && dateOfBirth) {
        // We need to parse dateOfBirth and reset value for
        // day, month, year select list
        var dob = dateOfBirth.value;
        var dobLen = dob.length;
        if (dobLen>0) {
            var dateOfBirthArr=dob.split("/");  
            om=dateOfBirthArr[0];
            od=dateOfBirthArr[1];
            oy=dateOfBirthArr[2];          
            oy = (currYear - oy) + 1;           
            month.options.selectedIndex=om;
            year.options.selectedIndex=oy;          
        }
    }
        
    var monthValue = month.value;
    if (year.value > 0 && monthValue > 0) {
        if (monthValue==2) {
            if (year.value % 4 != 0) {
                daysInMonth=28;
            } else if  (year.value % 400 == 0) {
                daysInMonth=29;
            } else if (year.value % 100 == 0) {
                daysInMonth=28;
            } else {
                daysInMonth=29;
            }        
        } else if (monthValue==1 || monthValue==3 || monthValue==5 || 
                   monthValue==7 || monthValue==8 || monthValue==10 || monthValue==12) {
            daysInMonth=31;
        } else {
            daysInMonth=30;
        }
    }                
    day.options.length=daysInMonth+1;
    day.options[0].value=-1;
    day.options[0].text="Jour";
    for (var i=1; i<=daysInMonth; i++) {
    	if (i < 10){
        	day.options[i].value= "0" + i;
    	} else {
    		day.options[i].value= i;
    	}
        day.options[i].text=i;
    }    
    
    if (mode == 1 && od > 0) {
        day.options.selectedIndex=od;
    }
    
    // Prepare dateOfBirth
    if (year.value > 0 || month.value > 0 || day.value > 0) {
        dateOfBirth.value = year.value + month.value + day.value;        
    } else {
        dateOfBirth.value="";
    }
}
