// JScript File


/*** region Static variables ***/
//var contentHolder = "_ctl0_ContentPlaceHolder1_";
var contentHolder = "ctl00_ContentPlaceHolder1_";
var ucInscriptionId = contentHolder + "UcInscription1_";
var cssValidatorOk = "validator_ok";
var cssValidatorError = "validator_error";
/*** endregion Static variables ***/

/*** region Global variables ***/
var listOfDependentControlIds = "";

var listOfRequiredControlIds = "";
var listOfRequiredErrorMsg = "";

var listOfRegExpControlIds = "";
var listOfRegExpErrorMsg = "";
var listOfRegExp = "";

var listOfConfirmControlIds = "";
var listOfConfirmToControlIds = "";
var listOfConfirmErrorMsg = "";

var listOfRequiredControlIds_InUcDynamic = "";
var listOfRequiredErrorMsg_InUcDynamic = "";
var listOfParentOfRequiredControlIds_InUcDynamic = "";

var listOfRegExpControlIds_InUcDynamic = "";
var listOfRegExpErrorMsg_InUcDynamic = "";
var listOfRegExp_InUcDynamic = "";
var listOfParentOfRegExpControlIds_InUcDynamic = "";

var listOfConfirmControlIds_InUcDynamic = "";
var listOfConfirmToControlIds_InUcDynamic = "";
var listOfConfirmErrorMsg_InUcDynamic = "";
var listOfParentOfConfirmControlIds_InUcDynamic = "";

var listOfDependentControlIds_InUcDynamic = "";
var listOfParentOfDependentControlIds_InUcDynamic = "";

var listOfCheckLengthControlIds_InUcDynamic = "";
var listOfCheckLengthErrorMsg_InUcDynamic = "";
var listOfParentOfCheckLengthControlIds_InUcDynamic = "";
var listOfCheckLengthMin_InUcDynamic = "";
var listOfCheckLengthMax_InUcDynamic = "";
var listOfCheckLengthRequired_InUcDynamic = "";

var listOfRequiredControlIds_Dates = "";
var listOfRequiredErrorMsg_Dates = "";
var listOfParentOfRequiredControlIds_Dates = "";

var listOfRequiredControlsIds_Gender = "";
var listOfRequiredErrorMsg_Gender = "";
var listOfParentOfRequiredControlIds_Gender = "";

var tabSelected = 0;
/*** endregion Global variables ***/




/************* MakeMandatoryDependentControl **************/
// Used to make mandatory some fields when an optin is checked
// parentId: The parent id of the checked control
// controlId: The control checkBox
// dependentControlIds: list of dependent controls to show or hide
// TODO: change 'ucPROFILE_BlockYourHousehold_' to make it variable extend it to others panels
/**********************************************************/
function MakeMandatoryDependentControl(parentId, controlId, dependentControlIds) {
    var arrDependentControlIds = dependentControlIds.split(',');    //Get an array of dependants controls

    if (parentId != '')
        parentId = parentId + '_';

    var control = document.getElementById(ucInscriptionId + parentId + controlId); //Get an reference to the checkbox control

    //We check if our control is a textbox
    if (control.type == "checkbox") {
        for (var i = 0; i < arrDependentControlIds.length; i++) {
            //Here we gona catch some variables
            var dependentControlId = Trim(arrDependentControlIds[i]);
            //Get somes references
            var activeField = document.getElementById(ucInscriptionId + parentId + dependentControlId + '_ActiveField');
            var panel = document.getElementById(ucInscriptionId + 'ucPROFILE_BlockYourHousehold_' + dependentControlId + '_Panel');
            var labelControl = document.getElementById(ucInscriptionId + 'ucPROFILE_BlockYourHousehold_' + dependentControlId + '_Label');
            var dependentControl = document.getElementById(ucInscriptionId + 'ucPROFILE_BlockYourHousehold_' + dependentControlId);
            var dependentControlValidator = document.getElementById(ucInscriptionId + 'ucPROFILE_BlockYourHousehold_' + dependentControlId + '_Validator');
            var listOfCheckLengthControlIds_Table = listOfCheckLengthControlIds_InUcDynamic.split(',');
            var listOfCheckLengthErrorMsg_Table = listOfCheckLengthErrorMsg_InUcDynamic.split(',');
            var listOfCheckLengthMin_InUcDynamic_Table = listOfCheckLengthMin_InUcDynamic.split(',');
            var listOfCheckLengthMax_InUcDynamic_Table = listOfCheckLengthMax_InUcDynamic.split(',');
            var listOfRequiredControlIds_InUcDynamic_table = listOfRequiredControlIds_InUcDynamic.split(',');
            var listOfRequiredErrorMsg_InUcDynamic_table = listOfRequiredErrorMsg_InUcDynamic.split(',');

            var arrOfCheckLengthControlIds_InUcDynamic = listOfCheckLengthControlIds_InUcDynamic.split(',');
            var arrOfCheckLengthRequired_InUcDynamic = listOfCheckLengthRequired_InUcDynamic.split(',');

            //Find the error message for our dependent control
            for (var j = 0; j < listOfCheckLengthControlIds_Table.length; j++) {
                if (listOfCheckLengthControlIds_Table[j] == dependentControlId) {
                    var erreurMessage = listOfCheckLengthErrorMsg_Table[j];
                    var ControlMinLeght = listOfCheckLengthMin_InUcDynamic_Table[j];
                    var ControlMaxLeght = listOfCheckLengthMax_InUcDynamic_Table[j];
                }
            }
            for (var j = 0; j < listOfRequiredControlIds_InUcDynamic_table.length; j++) {
                if (listOfRequiredControlIds_InUcDynamic_table[j] == dependentControlId) {
                    var erreurMessageRequired = listOfRequiredErrorMsg_InUcDynamic_table[j];
                }
            }



            //Get a  reference to the function that make the dependent controp mandatory. We add an reference now to implement the event onblur latter.
            var checkRequiredControlFunction = function() { CheckRequiredControl('ucPROFILE_BlockYourHousehold', dependentControlId, erreurMessageRequired); CheckLength('ucPROFILE_BlockYourHousehold', dependentControlId, erreurMessage, ControlMinLeght, ControlMaxLeght, 'Yes'); }
            var checkLenghtOnlyControlFunction = function() { CheckLength('ucPROFILE_BlockYourHousehold', dependentControlId, erreurMessage, ControlMinLeght, ControlMaxLeght, 'No'); }


            if (dependentControl != null) {
                if (control.checked == true) {
                    //If the checkbox is clicked
                    if (labelControl.innerHTML.indexOf(' *') == -1) {

                        dependentControl.onblur = null; //delete the event
                        //addEvent(dependentControl, 'onblur', checkRequiredControlFunction);
                        dependentControl.onblur = checkRequiredControlFunction; //Add our function to the onblur event
                        labelControl.innerHTML = labelControl.innerHTML + ' *'; //Add the star to the label so the user is warned that form field is mandatory
                        dependentControlValidator.style.display = 'block'; //Show the dependent control
                        //there we implement somes global list used for the form validation
                        listOfRequiredControlIds_InUcDynamic += dependentControlId + ',';
                        listOfRequiredErrorMsg_InUcDynamic += erreurMessage + ',';
                        listOfParentOfRequiredControlIds_InUcDynamic += 'ucPROFILE_BlockYourHousehold,';
                        listOfCheckLengthRequired_InUcDynamic = '';

                        for (var k = 0; k < arrOfCheckLengthControlIds_InUcDynamic.length - 1; k++) {
                            if (arrOfCheckLengthControlIds_InUcDynamic[k] == dependentControlId) {
                                arrOfCheckLengthRequired_InUcDynamic[k] = 'Yes';
                            }
                            listOfCheckLengthRequired_InUcDynamic += arrOfCheckLengthRequired_InUcDynamic[k] + ',';
                        }

                        var spanTag = document.createElement('input');
                        spanTag.setAttribute('type', 'hidden');
                        spanTag.id = ucInscriptionId + 'ucPROFILE_BlockYourHousehold_' + dependentControlId + '_RequiredField';
                        panel.appendChild(spanTag);
                    }
                } else {
                    //Split some global list to get all mandatory control  
                    var arrRequiredControlIds_InUcDynamic = listOfRequiredControlIds_InUcDynamic.split(",");
                    var arrRequiredErrorMsg_InUcDynamic = listOfRequiredErrorMsg_InUcDynamic.split(",");
                    var arrParentOfRequiredControlIds_InUcDynamic = listOfParentOfRequiredControlIds_InUcDynamic.split(",");

                    //Clear the Global list
                    listOfRequiredControlIds_InUcDynamic = '';
                    listOfRequiredErrorMsg_InUcDynamic = '';
                    listOfParentOfRequiredControlIds_InUcDynamic = '';

                    listOfCheckLengthRequired_InUcDynamic = '';

                    //Then reAdd the splited list to the global list only if the item is not equal to the dependent control
                    //TODO : we have a probleme there, this delete the mandatory of a field also if it was mandatory at start.
                    for (var j = 0; j < arrRequiredControlIds_InUcDynamic.length - 1; j++) {
                        if (arrRequiredControlIds_InUcDynamic[j] != dependentControlId) {
                            listOfRequiredControlIds_InUcDynamic += arrRequiredControlIds_InUcDynamic[j] + ',';
                            listOfRequiredErrorMsg_InUcDynamic += arrRequiredErrorMsg_InUcDynamic[j] + ',';
                            listOfParentOfRequiredControlIds_InUcDynamic += arrParentOfRequiredControlIds_InUcDynamic[j] + ',';
                        }
                    }

                    for (var k = 0; k < arrOfCheckLengthControlIds_InUcDynamic.length - 1; k++) {
                        if (arrOfCheckLengthControlIds_InUcDynamic[k] == dependentControlId) {
                            arrOfCheckLengthRequired_InUcDynamic[k] = 'No';
                        }
                        listOfCheckLengthRequired_InUcDynamic += arrOfCheckLengthRequired_InUcDynamic[k] + ',';
                    }

                    //Change cssClass to the original one
                    var classCss = dependentControl.className;
                    classCss = classCss.replace(/errorblue/g, '');
                    dependentControl.className = classCss;

                    dependentControl.onblur = null; //delete the event
                    dependentControl.onblur = checkLenghtOnlyControlFunction;
                    dependentControlValidator.style.display = 'none'; //hide the dependent control
                    labelControl.innerHTML = labelControl.innerHTML.replace(' *', ''); //Delete the star
                }
            }
        }
    }
}


/************* ShowDependentControl **************/
// Used to Show or hide the dependent controls
// parentId: The parent id of the control
// controlId: The control
// dependentControlIds: list of+ dependent controls to show or hide
/**********************************************************/
function ShowDependentControl(parentId, controlId, dependentControlIds) {
    var arrDependentControlIds = dependentControlIds.split(',');

    if (controlId == 'ucDateChildrensV2') //Dans le cas UserControlStatic UserChildrenControl, traiter spécifiquement pour chaque cas
    {
        for (i = 0; i < arrDependentControlIds.length; i++) {
            var control = document.getElementById(parentId + '_' + controlId + '_dateBirth_tbxYear');
            var dependentControlId = Trim(arrDependentControlIds[i]);
            var dependentControl = document.getElementById(parentId + '_' + dependentControlId);
            var dependentControlLabel = document.getElementById(parentId + '_' + dependentControlId + '_Label');
            var dependentControlLabelSex = document.getElementById(parentId + '_' + dependentControlId + '_lblSex');
            var requiredField = document.getElementById(parentId + '_' + dependentControlId + '_RequiredField');
            var activeField = document.getElementById(parentId + '_' + dependentControlId + '_ActiveField');
            var panel = document.getElementById(parentId + '_' + dependentControlId + '_Panel');
            if (dependentControlLabel != null) {
                var validator = document.getElementById(parentId + '_' + dependentControlId + '_Validator');
            } else if (dependentControlLabelSex != null) {
                var validator = document.getElementById(parentId + '_' + dependentControlId + '_radSex_Validator');
            }

            if (panel == null || activeField == null)
                continue;

            var strValid = OnChangeChildBirthDateV2(parentId);

            if ((strValid == 'ValidPasse') || (strValid == 'ValidFutur')) {
                activeField.value = 1;
                panel.style.display = 'inline-block';



                if (requiredField != null) {
                    if (dependentControlLabel != null) {
                        dependentControlLabel.innerHTML = requiredField.value + " *";
                    }
                }

                if (dependentControlLabelSex != null) {
                    var strLabelText2 = Trim(dependentControlLabelSex.innerHTML);
                    if ((strValid == 'ValidPasse' && strLabelText2.lastIndexOf('*') == -1)) {
                    
                        dependentControlLabelSex.innerHTML = dependentControlLabelSex.innerHTML + " *";
                    
                }
}
                if (validator != null) {
                    if (strValid == 'ValidFutur') {


                        //Enlever * a la fin
                        if (dependentControlLabel != null) {
                        
                            validator.style.display = 'none';

                            var classCss = dependentControl.className;
                            classCss = classCss.replace(/errorblue/g, '');

                            dependentControl.className = classCss;

                            var strLabelText = Trim(dependentControlLabel.innerHTML);
                            if (strLabelText.lastIndexOf('*') == strLabelText.length - 1) {
                                dependentControlLabel.innerHTML = strLabelText.substring(0, strLabelText.length - 1);
                            }
                        } else if (dependentControlLabelSex != null ) {
                            var strLabelText = Trim(dependentControlLabelSex.innerHTML);
                            if (strLabelText.lastIndexOf('*') == strLabelText.length - 1) {
                                dependentControlLabelSex.innerHTML = strLabelText.substring(0, strLabelText.length - 1);
                            }
                        }   

                    }
                    else {
                        if (requiredField == null) {
                            validator.style.display = 'none';
                        }
                        else {
                            validator.style.display = 'block';
                        }
                    }
                }
            }
            else {
                activeField.value = 0;
                panel.style.display = 'none';
            }
        }
    }
    else {
        if (parentId != '')
            parentId = parentId + '_';

        var control = document.getElementById(ucInscriptionId + parentId + controlId);

        //pour le checkbox (par example les cas à cocher des avantages)
        if (control.type == 'checkbox') {
            for (i = 0; i < arrDependentControlIds.length; i++) {
                var dependentControlId = Trim(arrDependentControlIds[i]);
                var activeField = document.getElementById(ucInscriptionId + parentId + dependentControlId + '_ActiveField');
                var panel = document.getElementById(ucInscriptionId + parentId + dependentControlId + '_Panel');

                if (panel == null || activeField == null)
                    continue;

                if (control.checked == true)
                    activeField.value++;
                else if (activeField.value > 0)
                    activeField.value--;

                if (activeField.value > 0) {
                    panel.style.display = 'block';
                }
                else {
                    panel.style.display = 'none';
                }
            }
        }
        //cas dropdownlist yes/no
        else if (control.type == 'select-one') {
            for (i = 0; i < arrDependentControlIds.length; i++) {
                var dependentControlId = Trim(arrDependentControlIds[i]);
                var activeField = document.getElementById(ucInscriptionId + parentId + dependentControlId + '_ActiveField');
                var panel = document.getElementById(ucInscriptionId + parentId + dependentControlId + '_Panel');

                if (panel == null || activeField == null)
                    continue;

                panel.style.display = 'block';

                if (control.value != '0' && control.value != 'Single') {
                    activeField.value = 1;
                    panel.style.display = 'block';
                }
                else {
                    activeField.value = 0;
                    panel.style.display = 'none';
                }
            }
        }
    }
}


//cas dropdownlist number (pour le combobox numbre des enfants mineurs)
function ShowDependentControlForNumberChild(parentId, controlId, dependentControlIds, childBlocIds) {
    ShowDependentControl(parentId, controlId, dependentControlIds);

    var control = document.getElementById(ucInscriptionId + parentId + "_" + controlId);
    var arrChildBlocIds = childBlocIds.split(",");

    for (i = 0; i < arrChildBlocIds.length; i++) {
        var childBlocId = Trim(arrChildBlocIds[i]);
        var activeField = document.getElementById(ucInscriptionId + parentId + "_" + childBlocId + "_ActiveField");
        var panel = document.getElementById(ucInscriptionId + parentId + "_" + childBlocId + "_Panel");

        if (panel == null || activeField == null)
            continue;

        if (i < control.selectedIndex)
            activeField.value = 1;
        else
            activeField.value = 0;

        if (activeField.value > 0)
            panel.style.display = "block";
        else
            panel.style.display = "none";
    }
}

function LoadDependentControl() {
    var arrDependentControlIds = listOfDependentControlIds.split(",");

    for (i = 0; i < arrDependentControlIds.length; i++) {
        var dependentControlId = Trim(arrDependentControlIds[i]);
        if (dependentControlId == "")
            continue;

        var activeField = document.getElementById(ucInscriptionId + dependentControlId + "_ActiveField");
        var panel = document.getElementById(ucInscriptionId + dependentControlId + "_Panel");

        if (panel == null || activeField == null)
            continue;

        if (activeField.value > 0)
            panel.style.display = "block";
        else
            panel.style.display = "none";
    }

    //dependence in ucDynamic
    var arrDependentControlIds_InUcDynamic = listOfDependentControlIds_InUcDynamic.split(",");
    var arrParentOfDependentControlIds_InUcDynamic = listOfParentOfDependentControlIds_InUcDynamic.split(",");

    for (i = 0; i < arrDependentControlIds_InUcDynamic.length; i++) {
        var dependentControlId = Trim(arrDependentControlIds_InUcDynamic[i]);
        var parentId = Trim(arrParentOfDependentControlIds_InUcDynamic[i]);

        if (dependentControlId == "" || parentId == "")
            continue;

        var activeField = document.getElementById(ucInscriptionId + parentId + "_" + dependentControlId + "_ActiveField");
        var panel = document.getElementById(ucInscriptionId + parentId + "_" + dependentControlId + "_Panel");

        if (panel == null || activeField == null)
            continue;

        if (activeField.value > 0)
            panel.style.display = "block";
        else
            panel.style.display = "none";
    }
}

function Trim(myString) {
    return myString.replace(/^\s+/g, '').replace(/\s+$/g, '')
}

/************* CheckRequiredControl **************/
// Used to check if a mandatoryfield is well filled by the user
// parentId: The parent id of the control
// controlId: The control
// errorMsg: the error message to show if the field is leaved empty
/**********************************************************/
function CheckRequiredControl(parentId, controlId, errorMsg) {
    if (parentId == '') {
        var control = document.getElementById(ucInscriptionId + controlId);
        var validator = document.getElementById(ucInscriptionId + controlId + '_Validator');
        var activeField = document.getElementById(ucInscriptionId + controlId + '_ActiveField');
    }
    else {
        var parent = document.getElementById(ucInscriptionId + parentId);
        var parentActiveField = document.getElementById(ucInscriptionId + parentId + '_ActiveField');

        //si control parent est visible --> pas besoin de vérifier ce champ
        if (parentActiveField != null && parentActiveField.value < 1)
            return true;

        var control = document.getElementById(ucInscriptionId + parentId + '_' + controlId);
        var validator = document.getElementById(ucInscriptionId + parentId + '_' + controlId + '_Validator');
        var activeField = document.getElementById(ucInscriptionId + parentId + '_' + controlId + '_ActiveField');
    }

    //si ce champ est caché --> pas besoin de vérifier ce champ
    if (activeField != null && activeField.value < 1)
        return true;

    //Verify dans la cas control user children specifique    
    //pas besoin de vérifier ce champ dans le cas la date futur
    var strControlUserChild = ucInscriptionId + parentId;
    if ((strControlUserChild.indexOf('ucYourChildrensV2') != -1) && (OnChangeChildBirthDateV2(ucInscriptionId + parentId) == 'ValidFutur')) {
        return true;
    }

    if (control != null) {
        if (control.type == "text" || control.type == 'password') {
            var classCss = control.className;
            classCss = classCss.replace(/errorblue/g, '');

            if (Trim(control.value) == "") {
                SetValidator(validator.id, errorMsg, false);
                control.className = classCss + ' errorblue';
                _focusErrorControl(control);

                return false;
            }
            else {
                SetValidator(validator.id, errorMsg, true);
                control.className = classCss;
                return true;
            }
        }
        else if (control.type == 'checkbox') {
        }
        else if (control.type == 'select-one') {
            var classCss = control.className;
            classCss = classCss.replace(/errorblue/g, '');

            if (Trim(control.value) == "") {
                SetValidator(validator.id, errorMsg, false);
                control.className = classCss + ' errorblue';
                _focusErrorControl(control);
                return false;
            }
            else {
                SetValidator(validator.id, errorMsg, true);
                control.className = classCss;
                return true;
            }
        }
        else if (control.type == 'radio') {
        }
    }
    return true;
}

/************* CheckLength **************/
// Used to check the lenght of an textbox control
// parentId: The parent id of the control
// controlId: The control
// errorMsg: the error message to show if the field is leaved empty
// minLeng: the manimum lenght
// maxLeng: the maximum lenght
// required: Yes or No,  depend if the field is mandatory or not
/**********************************************************/
function CheckLength(parentId, controlId, errorMsg, minLeng, maxLeng, required) {

    var minLen = parseInt(minLeng);
    var maxLen = parseInt(maxLeng);
    if (minLen < 0 || maxLen < 0 || (minLen == 0 && maxLen == 0) || minLen > maxLen)
        return true;

    if (parentId == "") {
        var control = document.getElementById(ucInscriptionId + controlId);
        var validator = document.getElementById(ucInscriptionId + controlId + '_Validator');
        var activeField = document.getElementById(ucInscriptionId + controlId + '_ActiveField');

    }
    else {
        var parent = document.getElementById(ucInscriptionId + parentId);
        var parentActiveField = document.getElementById(ucInscriptionId + parentId + '_ActiveField');

        //si control parent est visible --> pas besoin de vérifier ce champ
        if (parentActiveField != null && parentActiveField.value < 1)
            return true;

        var control = document.getElementById(ucInscriptionId + parentId + '_' + controlId);
        var validator = document.getElementById(ucInscriptionId + parentId + '_' + controlId + '_Validator');
        var requiredField = document.getElementById(ucInscriptionId + parentId + '_' + controlId + '_RequiredField');
        var activeField = document.getElementById(ucInscriptionId + parentId + '_' + controlId + '_ActiveField');
    }
    //alert(ucInscriptionId + parentId + "_" + controlId + "_ActiveField // " + ucInscriptionId + parentId + "_" + controlId + "_RequiredField");
    //si ce champ est caché --> pas besoin de vérifier ce champ
    if (activeField != null && activeField.value < 1)
        return true;

    //Verify dans la cas control user children specifique    
    //pas besoin de vérifier ce champ dans le cas la date futur
    var strControlUserChild = ucInscriptionId + parentId;
    if ((strControlUserChild.indexOf('ucYourChildrensV2') != -1) && (OnChangeChildBirthDateV2(ucInscriptionId + parentId) == 'ValidFutur')) {
        return true;
    }

    if (control.type == 'text' || control.type == 'password') {
        var classCss = control.className;
        classCss = classCss.replace(/errorblue/g, '');

        if (required == 'Yes' && Trim(control.value) == '') {
            return false;
        }
        else if (Trim(control.value) != '' && (control.value.length > maxLen || control.value.length < minLen)) {
            validator.style.display = 'block';
            SetValidator(validator.id, errorMsg, false);
            control.className = classCss + ' errorblue';
            _focusErrorControl(control);


            return false;
        }
        else {
            if (requiredField == null) {
                validator.style.display = 'none';
            }
            else {
                validator.style.display = 'block';
            }
            SetValidator(validator.id, errorMsg, true);
            control.className = classCss;
            return true;
        }
    }
    return true;
}


/******************* CheckRequiredDate ********************/
// Used to check if the date is required
// parentId: The parent id of the control
// controlId: The control
// errorMsg: the error message to show if the field is leaved empty
/**********************************************************/
function CheckRequiredDate(parentId, controlId, errorMsg) {
    var dayControl = document.getElementById(controlId + '_ddlDay');
    var monthControl = document.getElementById(controlId + '_ddlMonth');
    var yearControl = document.getElementById(controlId + '_tbxYear');
    var validator = document.getElementById(controlId + '_Validator');

    var month = monthControl.value;
    var year = yearControl.value;

    var classCss = yearControl.className;
    classCss = classCss.replace(/errorblue/g, '');
    if (year.length < 4 || (dayControl != null && _isDateValid(dayControl.value, month, year) == false) || year <= 1753 + BuddishCalendar(curentCountry)) {
        SetValidator(validator.id, errorMsg, false);
        yearControl.className = classCss + ' errorblue';
        _focusErrorControl(yearControl);
        return false;
    }
    else {
        SetValidator(validator.id, errorMsg, true);
        yearControl.className = classCss;
        return true;
    }
}


/******************* CheckRequiredDateBudish ********************/
// Used to check if the date is required
// parentId: The parent id of the control
// controlId: The control
// errorMsg: the error message to show if the field is leaved empty
/**********************************************************/
function CheckRequiredDateBudish(parentId, controlId, errorMsg) {
    var dayControl = document.getElementById(controlId + '_ddlDay');
    var monthControl = document.getElementById(controlId + '_ddlMonth');
    var yearControl = document.getElementById(controlId + '_tbxYear');
    var validator = document.getElementById(controlId + '_Validator');

    var month = monthControl.value;
    var year = yearControl.value;

    var classCss = yearControl.className;
    classCss = classCss.replace(/errorblue/g, '');
    if (year != "") {
        if (dayControl != null && year <= 1753 + BuddishCalendar(curentCountry)) {
            SetValidator(validator.id, errorMsg, false);
            yearControl.className = classCss + ' errorblue';
            _focusErrorControl(yearControl);
        }
        else {
            SetValidator(validator.id, errorMsg, true);
            yearControl.className = classCss;
        }
    }
}



function CheckRegExp(parentId, controlId, regExp, errorMsg) {
    if (parentId == "") {
        var control = document.getElementById(ucInscriptionId + controlId);
        var validator = document.getElementById(ucInscriptionId + controlId + '_Validator');
        var activeField = document.getElementById(ucInscriptionId + controlId + '_ActiveField');
    }
    else {
        var parent = document.getElementById(ucInscriptionId + parentId);
        var parentActiveField = document.getElementById(ucInscriptionId + parentId + '_ActiveField');
        //si control parent est visible --> pas besoin de vérifier ce champ
        if (parentActiveField != null && parentActiveField.value < 1)
            return true;

        var control = document.getElementById(ucInscriptionId + parentId + "_" + controlId);
        var validator = document.getElementById(ucInscriptionId + parentId + "_" + controlId + '_Validator');
        var activeField = document.getElementById(ucInscriptionId + parentId + "_" + controlId + '_ActiveField');
    }

    //si ce champ est caché --> pas besoin de vérifier ce champ
    if (activeField != null && activeField.value < 1)
        return true;

    var classCss = control.className;
    classCss = classCss.replace(/errorblue/g, "");

    if (control.type == "text" || control.type == 'password') {
        if (Trim(control.value) != "") {
            var RegularExpression = new RegExp(regExp);

            if (!RegularExpression.test(control.value)) {
                SetValidator(validator.id, errorMsg, false);
                control.className = classCss + ' errorblue';
                _focusErrorControl(control);
                return false;
            }
            else {
                SetValidator(validator.id, errorMsg, true);
                control.className = classCss;
                return true;
            }
        }
    }
    return true;
}


/******************************************** CheckConfirm ************************************************/
// ???????
// parentId: The parent id of the control
// controlId: The control ID
// controlConfirmId: ????
// errorMsg: the error message to show if the field is leaved empty
/**********************************************************************************************************/
function CheckConfirm(parentId, controlId, controlConfirmId, errorMsg) {
    if (parentId == '') {
        var control = document.getElementById(ucInscriptionId + controlId);
        var controlConfirm = document.getElementById(ucInscriptionId + controlConfirmId);
        var validator = document.getElementById(ucInscriptionId + controlId + '_Validator');
        var activeField = document.getElementById(ucInscriptionId + controlId + '_ActiveField');
    }
    else {
        var parent = document.getElementById(ucInscriptionId + parentId);
        var parentActiveField = document.getElementById(ucInscriptionId + parentId + '_ActiveField');
        //si control parent est visible --> pas besoin de vérifier ce champ
        if (parentActiveField != null && parentActiveField.value < 1)
            return true;

        var control = document.getElementById(ucInscriptionId + parentId + '_' + controlId);
        var controlConfirm = document.getElementById(ucInscriptionId + parentId + '_' + controlConfirmId);
        var validator = document.getElementById(ucInscriptionId + parentId + '_' + controlId + '_Validator');
        var activeField = document.getElementById(ucInscriptionId + parentId + '_' + controlId + '_ActiveField');
    }


    if (control.type == controlConfirm.type && (control.type == 'text' || control.type == 'password')) {
        var classCss = control.className;
        classCss = classCss.replace(/errorblue/g, '');

        if (control.value == '' || control.value != controlConfirm.value) {
            SetValidator(validator.id, errorMsg, false);
            control.className = classCss + ' errorblue';
            _focusErrorControl(control);
            return false;
        }
        else {
            SetValidator(validator.id, errorMsg, true);
            control.className = classCss;
            return true;
        }
    }
    return true;
}

/******************* IsValidRegistration ********************/
// Used to check if the field is well filled by the user
/***********************************************************/
function IsValidRegistration() {
    //Requires controls
    var arrRequiredControlIds = listOfRequiredControlIds.split(',');
    var arrRequiredErrorMsg = listOfRequiredErrorMsg.split(',');
    // Requires RegEx controls
    var arrRegExpControlIds = listOfRegExpControlIds.split(',');
    var arrRegExpErrorMsg = listOfRegExpErrorMsg.split(',');
    var arrRegExp = listOfRegExp.split('##');
    // Confirm Controls
    var arrConfirmControlIds = listOfConfirmControlIds.split(',');
    var arrConfirmToControlIds = listOfConfirmToControlIds.split(',');
    var arrConfirmErrorMsg = listOfConfirmErrorMsg.split(',');
    // Dynamic Users controls
    var arrRequiredControlIds_InUcDynamic = listOfRequiredControlIds_InUcDynamic.split(',');
    var arrRequiredErrorMsg_InUcDynamic = listOfRequiredErrorMsg_InUcDynamic.split(',');
    for (var j = 0; j < arrRequiredErrorMsg_InUcDynamic.length; j++) {
        arrRequiredErrorMsg_InUcDynamic[j] = arrRequiredErrorMsg_InUcDynamic[j].replace("#", ",")
    }
    var arrParentOfRequiredControlIds_InUcDynamic = listOfParentOfRequiredControlIds_InUcDynamic.split(',');
    var arrRegExpControlIds_InUcDynamic = listOfRegExpControlIds_InUcDynamic.split(',');
    var arrRegExpErrorMsg_InUcDynamic = listOfRegExpErrorMsg_InUcDynamic.split(',');
    var arrRegExp_InUcDynamic = listOfRegExp_InUcDynamic.split('##');
    var arrParentOfRegExpControlIds_InUcDynamic = listOfParentOfRegExpControlIds_InUcDynamic.split(',');
    var arrConfirmControlIds_InUcDynamic = listOfConfirmControlIds_InUcDynamic.split(',');
    var arrConfirmToControlIds_InUcDynamic = listOfConfirmToControlIds_InUcDynamic.split(',');
    var arrConfirmErrorMsg_InUcDynamic = listOfConfirmErrorMsg_InUcDynamic.split(',');
    for (var j = 0; j < arrConfirmControlIds_InUcDynamic.length; j++) {
        arrConfirmErrorMsg_InUcDynamic[j] = arrConfirmErrorMsg_InUcDynamic[j].replace("#", ",")
    }
    var arrParentOfConfirmControlIds_InUcDynamic = listOfParentOfConfirmControlIds_InUcDynamic.split(',');
    var arrCheckLengthControlIds_InUcDynamic = listOfCheckLengthControlIds_InUcDynamic.split(',');
    var arrCheckLengthErrorMsg_InUcDynamic = listOfCheckLengthErrorMsg_InUcDynamic.split(',');
    var arrParentOfCheckLengthControlIds_InUcDynamic = listOfParentOfCheckLengthControlIds_InUcDynamic.split(',');
    var arrCheckLengthMin_InUcDynamic = listOfCheckLengthMin_InUcDynamic.split(',');
    var arrCheckLengthMax_InUcDynamic = listOfCheckLengthMax_InUcDynamic.split(',');
    var arrCheckLengthRequired_InUcDynamic = listOfCheckLengthRequired_InUcDynamic.split(',');
    // Gender Controls
    var arrRequiredControlsIds_Gender = listOfRequiredControlsIds_Gender.split(',');
    var arrRequiredErrorMsg_Gender = listOfRequiredErrorMsg_Gender.split(',');
    var arrParentOfRequiredControlIds_Gender = listOfParentOfRequiredControlIds_Gender.split(',');
    // Date controls
    var arrRequiredControlIds_Dates = listOfRequiredControlIds_Dates.split(',');
    var arrRequiredErrorMsg_Dates = listOfRequiredErrorMsg_Dates.split(',');
    var arrParentOfRequiredControlIds_Dates = listOfParentOfRequiredControlIds_Dates.split(',');


    var res = true;


    for (var i = 0; i < arrRequiredControlIds.length; i++) {
        var requiredControlId = Trim(arrRequiredControlIds[i]);
        if (requiredControlId == '')
            continue;
        res = CheckRequiredControl('', requiredControlId, arrRequiredErrorMsg[i]) && res;
    }

    for (var i = 0; i < arrRegExpControlIds.length; i++) {
        var regExpControlId = Trim(arrRegExpControlIds[i]);

        if (regExpControlId == '')
            continue;

        res = CheckRegExp('', regExpControlId, arrRegExp[i], arrRegExpErrorMsg[i]) && res;

    }

    for (var i = 0; i < arrConfirmControlIds.length; i++) {
        var confirmControlId = Trim(arrConfirmControlIds[i]);

        if (confirmControlId == '')
            continue;

        res = CheckConfirm('', confirmControlId, arrConfirmToControlIds[i], arrRequiredErrorMsg[i]) && res;
    }

    for (var i = 0; i < arrRequiredControlIds_InUcDynamic.length; i++) {
        var requiredControlId = Trim(arrRequiredControlIds_InUcDynamic[i]);
        if (requiredControlId == '')
            continue;

        res = CheckRequiredControl(arrParentOfRequiredControlIds_InUcDynamic[i], requiredControlId, arrRequiredErrorMsg_InUcDynamic[i]) && res;
    }

    for (var i = 0; i < arrRegExpControlIds_InUcDynamic.length; i++) {
        var regExpControlId = Trim(arrRegExpControlIds_InUcDynamic[i]);

        if (regExpControlId == '')
            continue;

        res = CheckRegExp(arrParentOfRegExpControlIds_InUcDynamic[i], regExpControlId, arrRegExp_InUcDynamic[i], arrRegExpErrorMsg_InUcDynamic[i]) && res;
    }

    for (var i = 0; i < arrCheckLengthControlIds_InUcDynamic.length; i++) {
        var controlId = Trim(arrCheckLengthControlIds_InUcDynamic[i]);
        if (controlId == '')
            continue;

        res = CheckLength(arrParentOfCheckLengthControlIds_InUcDynamic[i], controlId, arrCheckLengthErrorMsg_InUcDynamic[i], arrCheckLengthMin_InUcDynamic[i], arrCheckLengthMax_InUcDynamic[i], arrCheckLengthRequired_InUcDynamic[i]) && res;
    }

    for (var i = 0; i < arrConfirmControlIds_InUcDynamic.length; i++) {
        var confirmControlId = Trim(arrConfirmControlIds_InUcDynamic[i]);
        if (confirmControlId == '')
            continue;

        res = CheckConfirm(arrParentOfConfirmControlIds_InUcDynamic[i], confirmControlId, arrConfirmToControlIds_InUcDynamic[i], arrConfirmErrorMsg_InUcDynamic[i]) && res;
    }

    for (var i = 0; i < arrRequiredControlsIds_Gender.length; i++) {
        var GenderControlId = Trim(arrRequiredControlsIds_Gender[i]);
        if (GenderControlId == '')
            continue;

        res = CheckValidRadio(arrRequiredErrorMsg_Gender[i], GenderControlId, arrParentOfRequiredControlIds_Gender[i]) && res;
    }

    for (var i = 0; i < arrRequiredControlIds_Dates.length; i++) {
        var DateControlId = Trim(arrRequiredControlIds_Dates[i]);
        if (DateControlId == '')
            continue;

        res = CheckRequiredDate('', ucInscriptionId + arrParentOfRequiredControlIds_Dates[i] + "_" + DateControlId, arrRequiredErrorMsg_Dates[i]) && res;
    }



    return res;
}

function CheckValidRadio(errorMessage, controlId, ParentControlId) {
    var ParentPanel = document.getElementById(ucInscriptionId + ParentControlId + "_Panel");
    var radioControlPanel = document.getElementById(ucInscriptionId + ParentControlId + "_" + controlId + "_Panel");
    var radioControlValidator = document.getElementById(ucInscriptionId + ParentControlId + "_" + controlId + "_radSex_Validator");

    var ParentName = "";
    if (ParentControlId.toString().indexOf("Profile") > -1) {
        ParentName =  ParentControlId.toString().replace("ucPROFILE_BlockYourChildren_ucYourChildrensV2Profile_", "ucPROFILE_BlockYourChildren$ucYourChildrensV2Profile$");
    }
    else {
        ParentName = ParentControlId.toString().replace("BlockYourChildren_ucYourChildrensV2Reg_UcChildrenV2", "BlockYourChildren$ucYourChildrensV2Reg$UcChildrenV2");
    }
    var listOfRadioBtn = document.getElementsByName("ctl00$ContentPlaceHolder1$UcInscription1$" + ParentName + "$" + controlId + "$radSex");


    if (radioControlPanel.style.display != 'none') {
        for (var i = 0; i < listOfRadioBtn.length; i++) {
            if (listOfRadioBtn[i].checked == true || OnChangeChildBirthDateV2(ucInscriptionId + ParentControlId) == 'ValidFutur') {//&& arrRequiredControlsIds_Gender.indexOf(controlId) < -1) {
                SetValidator(radioControlValidator.id, errorMessage, true);
                return true;
            }
        }

        //var classCss = dateControl.className;
        //classCss = classCss.replace(/errorblue/g, '');
        //radioControlValidator.className = classCss + ' errorblue';
        SetValidator(radioControlValidator.id, errorMessage, false);
        _focusErrorControl(ParentPanel);

        return false;
    } else {
        SetValidator(radioControlValidator.id, errorMessage, false);
        return true;
    }
}

function SetValidator(validatorID, errorMessage, isValid) {
    var ValidatorControl = document.getElementById(validatorID);

    if (isValid) {
        ValidatorControl.className = cssValidatorOk;
        ValidatorControl.innerHTML = '&nbsp;';
    } else {
        ValidatorControl.className = cssValidatorError;
        ValidatorControl.innerHTML = errorMessage + '&nbsp;';
    }
}

function SetBtnNavigation(tabIndex) {
    tabSelected = tabIndex;
    var mytab1 = document.getElementById('mytab1')

    var btnNext = document.getElementById(contentHolder + 'btnNext');
    var btnBack = document.getElementById(contentHolder + 'btnBack');
    var btnSave = document.getElementById(contentHolder + 'btnSave');
    var panelTerme = document.getElementById(contentHolder + 'panelTerme');

    if (mytab1 != null) {
        var tabber = document.getElementById('mytab1').tabber;
        if (tabIndex == 0) {
            btnNext.style.display = 'block';
            btnBack.style.display = 'none';
            btnSave.style.display = 'none';
            if (panelTerme != null)
                panelTerme.style.display = "none";
        }
        else if (tabIndex < tabber.tabs.length - 1) {
            btnNext.style.display = 'block';
            btnBack.style.display = 'block';
            btnSave.style.display = 'none';
            if (panelTerme != null)
                panelTerme.style.display = "none";
        }
        else {
            btnNext.style.display = 'none';
            btnBack.style.display = 'block';
            btnSave.style.display = 'block';
            if (panelTerme != null)
                panelTerme.style.display = "block";
        }
    }
    else    //there is only one tab
    {
        btnNext.style.display = 'none';
        btnBack.style.display = 'none';
        btnSave.style.display = 'block';
        if (panelTerme != null)
            panelTerme.style.display = 'block';
    }
}

function ClickNext() {
    tabSelected++;
    document.getElementById('mytab1').tabber.tabShow(tabSelected);

    SetBtnNavigation(tabSelected);
}

function ClickPrevious() {
    tabSelected--;
    document.getElementById('mytab1').tabber.tabShow(tabSelected);

    SetBtnNavigation(tabSelected);
}


function IsPhoneInput(e) {
    if ([e.keyCode || e.which] == 8) //this allow backspace
        return true;
    if ([e.keyCode || e.which] == 45) //this allow minus
        return true;
    if ([e.keyCode || e.which] < 48 || [e.keyCode || e.which] > 57)
        e.preventDefault ? e.preventDefault() : e.returnValue = false;
}

function IsNumberInput(e) {
    if ([e.keyCode || e.which] == 8) //this allow backspace
        return true;
    if ([e.keyCode || e.which] < 48 || [e.keyCode || e.which] > 57)
        e.preventDefault ? e.preventDefault() : e.returnValue = false;
}

function IsNumber(sText) {
    var validChars = "0123456789";
    var ret = true;
    var chr;

    for (i = 0; i < sText.length; i++) {
        chr = sText.charAt(i);
        if (validChars.indexOf(chr) == -1)
            return false;
    }
    return true;
}

function OnChangeChildDate(dayControlId, monthControlId, yearControlId, avatarControlId, selectedAvatar) {
    var dayControl = document.getElementById(dayControlId);
    var monthControl = document.getElementById(monthControlId);
    var yearControl = document.getElementById(yearControlId);
    var avatarControl = document.getElementById(avatarControlId);

    var month = monthControl.value;
    var year = yearControl.value;

    if (year.length < 4)
        return false;

    var today = new Date();
    var ageMonth = (today.getFullYear() - year) * 12 + today.getMonth() - month;

    ShowChildAvatar(ageMonth, avatarControlId, selectedAvatar);
}


function ShowChildAvatar(ageMonth, avatarControlId, selectedAvatar) {
    var avatarControlHolder = document.getElementById(avatarControlId + "_spAvatarHolder");

    var index = 0;
    if (ageMonth < 4)
        index = 0;
    else if (ageMonth < 6)
        index = 1;
    else if (ageMonth < 8)
        index = 2;
    else if (ageMonth < 12)
        index = 3;
    else if (ageMonth < 15)
        index = 4;
    else
        index = 5;

    var html = arrHtmlChildAvatars[index];
    html = html.replace(/#CONTROL#/g, avatarControlId);
    for (var i = 1; i <= 5; i++) {
        html = html.replace("#SELECTED" + i + "#", (i == selectedAvatar ? "checked" : ""));
    }
    avatarControlHolder.innerHTML = html;
}

function AddChildrenV2(childBlockId) {
    var yourChildrenId = childBlockId.substring(0, childBlockId.lastIndexOf('_'));

    //get hidden field nbChildren and show new children
    var nbChildrenField = document.getElementById(yourChildrenId + "_nbChildrens");
    if (nbChildrenField.value >= 4)
        return;

    for (i = 1; i <= 4; i++) {
        var childAdded = document.getElementById(yourChildrenId + "_UcChildrenV2" + i + "_Panel");
        var childActiveField = document.getElementById(yourChildrenId + "_UcChildrenV2" + i + "_ActiveField");
        var childIdField = document.getElementById(yourChildrenId + "_UcChildrenV2" + i + "_Id");

        var validator = document.getElementById(yourChildrenId + "_UcChildrenV2" + i + "_ucDateChildrensV2_dateBirth_Validator");
        var errorMsg = document.getElementById(yourChildrenId + "_UcChildrenV2" + i + "_ucDateChildrensV2_dateBirth_ErrorMsg");

        if (childAdded.style.display == "none") {
            childAdded.style.display = "block";
            childActiveField.value = -1;    //cad bloc est visible mais n'est pas pris en compte 
            childIdField.value = 0;
            nbChildrenField.value++;

            validator.style.display = "none";
            errorMsg.style.display = "none";
            errorMsg.innerHTML = "";
            break;
        }
    }
}

function DeleteChildrenV2(childBlockId) {
    var yourChildrenId = childBlockId.substring(0, childBlockId.lastIndexOf('_'));
    //search children block with numChildren and disappear this block    
    var nbChildrenField = document.getElementById(yourChildrenId + "_nbChildrens");
    if (nbChildrenField.value <= 1)
        return;

    var childBlock = document.getElementById(childBlockId + "_Panel");
    childBlock.style.display = "none";

    var childActiveField = document.getElementById(childBlockId + "_ActiveField");
    childActiveField.value = 0;
    nbChildrenField.value--;

    var childIdField = document.getElementById(childBlockId + "_Id");
    childIdField.value = 0;

    //reset all field in block
    var childDay = document.getElementById(childBlockId + "_ucDateChildrensV2_dateBirth_ddlDay");
    var childMonth = document.getElementById(childBlockId + "_ucDateChildrensV2_dateBirth_ddlMonth");
    var childYear = document.getElementById(childBlockId + "_ucDateChildrensV2_dateBirth_tbxYear");

    var childLastName = document.getElementById(childBlockId + "_tbx_CHD_LASTNAME");
    var childLastNamePanel = document.getElementById(childBlockId + "_tbx_CHD_LASTNAME_Panel");
    var childLastNameValidator = document.getElementById(childBlockId + "_tbx_CHD_LASTNAME_Validator");

    var childGenderPanel = document.getElementById(childBlockId + "_ucGenderChildrensV2_Panel");

    var childFirstName = document.getElementById(childBlockId + "_tbx_CHD_FIRSTNAME");
    var childFirstNamePanel = document.getElementById(childBlockId + "_tbx_CHD_FIRSTNAME_Panel");
    var childFirstNameValidator = document.getElementById(childBlockId + "_tbx_CHD_FIRSTNAME_Validator");

    var childFirstName1 = document.getElementById(childBlockId + "_tbx_CHD_FIRSTNAME1");
    var childFirstName1Panel = document.getElementById(childBlockId + "_tbx_CHD_FIRSTNAME1_Panel");
    var childFirstName1Validator = document.getElementById(childBlockId + "_tbx_CHD_FIRSTNAME1_Validator");


    var childFirstName2 = document.getElementById(childBlockId + "_tbx_CHD_FIRSTNAME2");
    var childFirstName2Panel = document.getElementById(childBlockId + "_tbx_CHD_FIRSTNAME2_Panel");
    var childFirstName2Validator = document.getElementById(childBlockId + "_tbx_CHD_FIRSTNAME2_Validator");

    var childFirstName3 = document.getElementById(childBlockId + "_tbx_CHD_FIRSTNAME3");
    var childFirstName3Panel = document.getElementById(childBlockId + "_tbx_CHD_FIRSTNAME3_Panel");
    var childFirstName3Validator = document.getElementById(childBlockId + "_tbx_CHD_FIRSTNAME3_Validator");

    var childIni = document.getElementById(childBlockId + "_tbx_CHD_INITIAL");
    var childIniPanel = document.getElementById(childBlockId + "_tbx_CHD_INITIAL_Panel");
    var childIniValidator = document.getElementById(childBlockId + "_tbx_CHD_INITIAL_Validator");

    var childBirthTown = document.getElementById(childBlockId + "_tbx_CHD_BIRTHTOWN");
    var childBirthTownPanel = document.getElementById(childBlockId + "_tbx_CHD_BIRTHTOWN_Panel");
    var childBirthTownValidator = document.getElementById(childBlockId + "_tbx_CHD_BIRTHTOWN_Validator");

    var childCertificate = document.getElementById(childBlockId + "_tbx_CHD_CERTIFICATE");
    var childCertificatePanel = document.getElementById(childBlockId + "_tbx_CHD_CERTIFICATE_Panel");
    var childCertificateValidator = document.getElementById(childBlockId + "_tbx_CHD_CERTIFICATE_Validator");

    if (childDay != null) {
        childDay.value = 1;
    }

    if (childMonth != null) {
        childMonth.value = 1;
    }

    if (childYear != null) {
        childYear.value = "";
    }

    if (childLastName != null) {
        childLastName.value = "";
        childLastNamePanel.style.display = "none";
        childLastNameValidator.style.display = "none";
    }

    if (childGenderPanel != null) {
        childGenderPanel.style.display = "none";
    }

    if (childFirstName != null) {
        childFirstName.value = "";
        childFirstNamePanel.style.display = "none";
        childFirstNameValidator.style.display = "none";
    }

    if (childFirstName1 != null) {
        childFirstName1.value = "";
        childFirstName1Panel.style.display = "none";
        childFirstName1Validator.style.display = "none";
    }

    if (childFirstName2 != null) {
        childFirstName2.value = "";
        childFirstName2Panel.style.display = "none";
        childFirstName2Validator.style.display = "none";
    }

    if (childFirstName3 != null) {
        childFirstName3.value = "";
        childFirstName3Panel.style.display = "none";
        childFirstName3Validator.style.display = "none";
    }

    if (childIni != null) {
        childIni.value = "";
        childIniPanel.style.display = "none";
        childIniValidator.style.display = "none";
    }

    if (childBirthTown != null) {
        childBirthTown.value = "";
        childBirthTownPanel.style.display = "none";
        childBirthTownValidator.style.display = "none";
    }

    if (childCertificate != null) {
        childCertificate.value = "";
        childCertificatePanel.style.display = "none";
        childCertificateValidator.style.display = "none";
    }

}

// Etienne 2009-02-12 : Clear the year value of a ucDateChildrensV2 user control.
function ClearChildrenV2(childBlockId) {
    var yearControl = document.getElementById(childBlockId + "_ucDateChildrensV2_dateBirth_tbxYear");
    var txtMonthsControl = document.getElementById(childBlockId + "_ucDateChildrensV2_dateBirth_tbxChildAge");
    var ddlMonthsControl = document.getElementById(childBlockId + "_ucDateChildrensV2_dateBirth_ddlChildAge");
    var txtMonthsControl = document.getElementById(childBlockId + "_ucDateChildrensV2_dateBirth_tbxChildAge");
    var ddlMonthsControl = document.getElementById(childBlockId + "_ucDateChildrensV2_dateBirth_ddlChildAge");
    var txtMonthsControl = document.getElementById(childBlockId + "_ucDateChildrensV2_dateBirth_tbxChildAge");

    if (ddlMonthsControl != null) {
        ddlMonthsControl.selectedIndex = 0;
    }
    if (txtMonthsControl != null) {
        txtMonthsControl.value = "";
    }
    yearControl.value = "";
}

/************************** ChangeSexNameBaby **************************/
// ????
// childBlockId: The child block ID
/***********************************************************************/
function ChangeSexNameBaby(childBlockId) {
    //Active ou desactive Male, Female
    var dayControl = document.getElementById(childBlockId + '_ucDateChildrensV2_dateBirth_ddlDay');
    var monthControl = document.getElementById(childBlockId + '_ucDateChildrensV2_dateBirth_ddlMonth');
    var yearControl = document.getElementById(childBlockId + '_ucDateChildrensV2_dateBirth_tbxYear');

    var day = dayControl.value;
    var month = monthControl.value;
    var year = yearControl.value;

    var sexMale = document.getElementById(childBlockId + '_ucGenderChildrensV2_radSex_0');
    var sexFeMale = document.getElementById(childBlockId + '_ucGenderChildrensV2_radSex_1');

    var today = new Date();
    var DateInput = new Date(year, parseInt(month) - 1, day);

    if (sexMale != null && sexFeMale != null) {
        if (DateInput.getTime() - today.getTime() > 0) {
            sexMale.checked = '';
            sexFeMale.checked = '';
        }
        else {
            if ((sexMale.checked == '') && (sexFeMale.checked == ''))
                sexMale.checked = 'checked';
        }
    }
}

/************************ DispatchMonthsToChildDate **********************/
// When a date change, this fuction is called to disp   tch the birth
// date in month from the dropdownlist to birth date in dd/mm/yyyy
// NumberOfMonthsControlID: The dropdownlist in month control ID
// DayControlId: The Day control Id
// MonthControlId: The month control Id
// YearControlID: The Year contril Id
// Return: 
/***********************************************************************/
function DispatchMonthsToChildDate(NumberOfMonthsControlID, DayControlId, MonthControlId, YearControlId) {
    var objNumberOfMonths = document.getElementById(NumberOfMonthsControlID);
    var objDdlDay = document.getElementById(DayControlId);
    var objDdlMonth = document.getElementById(MonthControlId);
    var objTxbYear = document.getElementById(YearControlId);

    var Now = new Date()
    if (objNumberOfMonths.type == 'select-one') {
        var Months = objNumberOfMonths[objNumberOfMonths.selectedIndex].value;
    }
    else if (objNumberOfMonths.type == 'text') {
        var Months = objNumberOfMonths.value;
    }

    if (Months.toString() != "" && Months != 0) {
        var Month = Months / 12;
        var Years = Math.floor(Month);
        var MonthValue = ((Month - Years) * 12);
        var YearValue = Now.getFullYear() - Years;

        MonthValue = ((Math.abs(Now.getMonth() - MonthValue)));

        if (MonthValue == 0) {
            MonthValue = 12;
        }

        objDdlDay.selectedIndex = 15 - 1;

        if (MonthValue != null) {
            objDdlMonth.selectedIndex = MonthValue;
        }
        else {
            objDdlMonth.selectedIndex = 0;
        }
        objTxbYear.value = YearValue.toString();
    }
    else {

        objDdlDay.selectedIndex = 0;
        objDdlMonth.selectedIndex = 0;
        objTxbYear.value = '';
    }
}

/************************ OnChangeChildBirthDateV2 **********************/
// When a date change, this fuction is called to check if the date entered
// by the user is ok.
// childBlockId: The control ID
// Return: 
/***********************************************************************/
function OnChangeChildBirthDateV2(childBlockId) {
    var childActiveField = document.getElementById(childBlockId + '_ActiveField');

    if (childActiveField == null)
        return;

    childActiveField.value = 1; //ce bloc sera valider 

    //vefify birth date + show relate info (name, sex)
    var dayControl = document.getElementById(childBlockId + '_ucDateChildrensV2_dateBirth_ddlDay');
    var monthControl = document.getElementById(childBlockId + '_ucDateChildrensV2_dateBirth_ddlMonth');
    var yearControl = document.getElementById(childBlockId + '_ucDateChildrensV2_dateBirth_tbxYear');
    var validator = document.getElementById(childBlockId + '_ucDateChildrensV2_dateBirth_Validator');
    var errorMsg = document.getElementById(childBlockId + '_ucDateChildrensV2_dateBirth_ErrorMsg');
    var ddlMonthsControl = document.getElementById(childBlockId + "_ucDateChildrensV2_dateBirth_ddlChildAge");
    var txtMonthsControl = document.getElementById(childBlockId + "_ucDateChildrensV2_dateBirth_tbxChildAge");

    var day = dayControl.value;
    var month = monthControl.value;
    var year = yearControl.value;

    //Etienne : 16/02/2008 check diference between 2 dates in day.
    OlderChildInDay = 9 * 30;
    MaximumDaysOfPregnacy = 36 * 30;
    MinimumDaysOfvalidity = 6 * 30;

    var today = new Date();
    var current_date = new Date();
    var selected_date = new Date();

    selected_date.setFullYear(year - BuddishCalendar(curentCountry));
    selected_date.setMonth(month - 1);
    selected_date.setDate(day);
    var ageDay = days_between(selected_date, current_date);
    //-----------------------------------------------------------

    if (year.length == 0) {
        childActiveField.value = -1;    //cad bloc est visible mais n'est pas pris en compte    
        validator.style.display = 'none';
        errorMsg.innerHTML = _arrDateErrorMsgs[3];  //date vide
        errorMsg.style.display = 'block';
        return 'DateVide';
    }

    if (year.length < 4 || _isDateValid(day, month, year) == false) {
        //saisi incorrect
        SetValidator(validator.id, '&nbsp;', false);
        validator.style.display = 'inline';
        validator.style.width = 'auto';
        errorMsg.innerHTML = _arrDateErrorMsgs[0];  //date invalid
        errorMsg.style.display = 'block';

        _focusErrorControl(yearControl);
        return 'DateInvalid';
    }

    if (ageDay > -MinimumDaysOfvalidity && (ddlMonthsControl != null || txtMonthsControl != null)) {
        SetValidator(validator.id, '&nbsp;', false);
        validator.style.display = 'inline';
        validator.style.width = 'auto';

        errorMsg.style.display = 'block';
        errorMsg.innerHTML = _arrDateErrorMsgs[4];

        return 'ValidFutur';
    } else if (ageDay > OlderChildInDay || ageDay < -MaximumDaysOfPregnacy) {

        //9 month est max pour pregnant, 36 is max pour enfant agé
        SetValidator(validator.id, '&nbsp;', false);
        validator.style.display = 'inline';
        validator.style.width = 'auto'; //test

        errorMsg.style.display = 'block';


        if (ageDay < -MaximumDaysOfPregnacy) {
            childActiveField.value = 1;    //bloc visible mais ne pas être sauvegardé                 
            errorMsg.innerHTML = _arrDateErrorMsgs[1];  //date > 36 dans le passé        
            return 'ValidPasse';
        }
        else {
            childActiveField.value = 1;    //bloc visible mais ne pas être sauvegardé         
            errorMsg.innerHTML = _arrDateErrorMsgs[2];  //date > 9 dans le futur        
            _focusErrorControl(yearControl);
            return 'NotDateProgram';
        }
    } else {
        SetValidator(validator.id, '&nbsp;', true);
        validator.style.display = 'inline';
        errorMsg.style.display = 'none';

        if (ageDay < 0) {
            return 'ValidPasse';
        }
        else {
            return 'ValidFutur';
        }
    }
}

//Etienne : 16/02/2008 check diference between 2 date in day.
function days_between(D1, D2) {
    return Math.round((D1 - D2) / 86400000);
}


function IsValidYourChildrens() {
    //var res = true;
    for (i = 0; i < _arrChildBlockIdsV2.length; i++) {
        var childBlockId = Trim(_arrChildBlockIdsV2[i]);
        if (childBlockId == "")
            continue;

        var childActiveField = document.getElementById(childBlockId + "_ActiveField");

        if (childActiveField.value > 0) {
            var res = OnChangeChildBirthDateV2(childBlockId);
            if ((res == "DateInvalid") || (res == "NotDateProgram")) {
                return false;
            }
        }
    }
    return true;
}

function ValidCondTerme() {
    var conditionTerme = document.getElementById(ucInscriptionId + "chkTerm");
    var validator = document.getElementById(ucInscriptionId + "chkTerm_Validator");

    if (conditionTerme != null && validator != null) {
        if (conditionTerme.checked) {
            validator.style.display = "none";
            return true;
        }
        else {
            validator.style.display = "block";
            _focusErrorControl(conditionTerme);
            return false;
        }
    }
    return true;
}

var _isValidEmail = true;

function CheckEmailIsUsed(emailClientId, errorMsg) {
    _isValidEmail = false;
    var email = document.getElementById(emailClientId);
    if (email.value == "")
        return;

    var arrContext = new Array(emailClientId, errorMsg);
    //call function in server-side to valid email
    PageMethods.CheckEmailIsUsed(email.value, CheckEmailIsUsedSuccess, CheckEmailIsUsedFailed, arrContext);
}

function _diplayEmailIsUsed(emailClientId, errorMsg) {
    var email = document.getElementById(emailClientId);
    var validator = document.getElementById(emailClientId + "_Validator");

    if (email != null && validator != null) {
        var classCss = email.className;
        classCss = classCss.replace(/errorblue/g, "");

        validator.className = cssValidatorError;
        validator.innerHTML = errorMsg + "&nbsp;";

        email.className = classCss + " errorblue";
    }
}

function CheckEmailIsUsedSuccess(result, arrContext, methodName) {
    if (result == false) {
        _diplayEmailIsUsed(arrContext[0], arrContext[1]);
        _isValidEmail = false;
    }
    else {
        _isValidEmail = true;
    }
}

function CheckEmailIsUsedFailed(error, arrContext, methodName) {
    if (error != null) {
        _diplayEmailIsUsed(arrContext[0], arrContext[1]);
        _isValidEmail = false;
    }
}

function IsValidEmail(errorMsg) {
    if (!_isValidEmail) {
        var emailControlId = "ucREGISTRATION_BlockYouNew_tbx_USR_EMAIL";
        var email = document.getElementById(ucInscriptionId + emailControlId);

        //if in profil
        if (email == null) {
            //return true;
            emailControlId = "ucPROFILE_BlockYou_tbx_USR_EMAIL";
            email = document.getElementById(ucInscriptionId + emailControlId);
        }

        var validator = document.getElementById(ucInscriptionId + emailControlId + "_Validator");

        if (email != null && validator != null) {
            var classCss = email.className;
            classCss = classCss.replace(/errorblue/g, "");

            validator.className = cssValidatorError;
            validator.innerHTML = errorMsg + "&nbsp;";

            email.className = classCss + " errorblue";

            _focusErrorControl(email);
        }
    }
    return _isValidEmail;
}
/////
function isValidBudishDate() {
    var _isValidReturn = true;

    var arrRequiredControlIds_Dates = listOfRequiredControlIds_Dates.split(',');
    var arrRequiredErrorMsg_Dates = listOfRequiredErrorMsg_Dates.split(',');
    var arrParentOfRequiredControlIds_Dates = listOfParentOfRequiredControlIds_Dates.split(',');

    var dateConjControlId = 'ucREGISTRATION_BlockYouNew_ucREGISTRATION_BlockYourPartner_date_CJT_DATEOFBIRTH';
    var dateConjControl = document.getElementById(ucInscriptionId + dateConjControlId + '_tbxYear');
    var conjvalidator = document.getElementById(ucInscriptionId + dateConjControlId + '_Validator');


    var dateControlId = 'ucREGISTRATION_BlockYouNew_date_USR_DATEOFBIRTH';
    var dateControl = document.getElementById(ucInscriptionId + dateControlId + '_tbxYear');
    var validator = document.getElementById(ucInscriptionId + dateControlId + '_Validator');

    var parent;
    var parentActiveField;

    var year;
    var conjyear;

    if (dateControl != null) { year = dateControl.value; }
    if (dateConjControl != null) { conjyear = dateConjControl.value; }

    for (var i = 0; i < arrRequiredControlIds_Dates.length; i++) {
        if (arrRequiredControlIds_Dates[i] == 'date_USR_DATEOFBIRTH') {
            if (year == "") {
                var classCss = dateControl.className;
                classCss = classCss.replace(/errorblue/g, '');

                validator.className = cssValidatorError;
                validator.innerHTML = arrRequiredErrorMsg_Dates[i] + '&nbsp;';
                dateControl.className = classCss + ' errorblue';
                _focusErrorControl(dateControl);
                _isValidReturn = false && _isValidReturn;
            }
        }

        if (arrRequiredControlIds_Dates[i] == 'date_CJT_DATEOFBIRTH') {
            parent = document.getElementById(ucInscriptionId + arrParentOfRequiredControlIds_Dates[i]);
            parentActiveField = document.getElementById(ucInscriptionId + arrParentOfRequiredControlIds_Dates[i] + '_ActiveField');
            if (parentActiveField != null && parentActiveField.value != 0) {
                if (conjyear == "") {
                    var classCss = dateConjControl.className;
                    classCss = classCss.replace(/errorblue/g, '');
                    conjvalidator.className = cssValidatorError;
                    conjvalidator.innerHTML = arrRequiredErrorMsg_Dates[i] + '&nbsp;';
                    dateConjControl.className = classCss + ' errorblue';
                    _focusErrorControl(dateConjControl);
                    _isValidReturn = false && _isValidReturn;
                }
            }
        }
    }

    if (year <= 1753 + BuddishCalendar(curentCountry) || year.length < 4) {
        var classCss = dateControl.className;
        classCss = classCss.replace(/errorblue/g, '');

        validator.className = cssValidatorError;
        //validator.innerHTML = errorMsg + '&nbsp;';
        dateControl.className = classCss + ' errorblue';
        _focusErrorControl(dateControl);
        _isValidReturn = false && _isValidReturn;
    }

    if (parentActiveField != null && parentActiveField.value != 0) {
        if (conjyear <= 1753 + BuddishCalendar(curentCountry) || year.length < 4) {
            var classCss = dateConjControl.className;
            classCss = classCss.replace(/errorblue/g, '');

            conjvalidator.className = cssValidatorError;
            //      conjvalidator.innerHTML = errorMsg + '&nbsp;';
            dateConjControl.className = classCss + ' errorblue';
            _focusErrorControl(dateConjControl);
            _isValidReturn = false && _isValidReturn;
        }
    }

    return _isValidReturn;
}


var _haveFocusedError = true;

function _focusErrorControl(control) {
    //si il y a un control déjà focus, pas besoin focus un autre
    if (_haveFocusedError)
        return;

    var mytab1 = document.getElementById('mytab1');

    if (mytab1 == null)  //il y a un seul onglet -- registration
    { }
    else {
        var tabs = document.getElementById("mytab1").tabber.tabs;
        for (var i = 0; i < tabs.length; i++) {
            var tab = tabs[i].div;
            //if(tab.contains(control))
            if (_contains(tab, control)) {
                tabSelected = i;
                mytab1.tabber.tabShow(tabSelected);
                SetBtnNavigation(tabSelected);

                break;
            }
        }
    }

    control.focus();
    _haveFocusedError = true;
}

function _isDateValid(day, month, year) {
    if (day <= _nbDayInMonth(month, year))
        return true;
    return false;
}

function _nbDayInMonth(month, year) {
    if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
        return 31;
    else if (month == 4 || month == 6 || month == 9 || month == 11)
        return 30;
    else if ((month == 2) && (year % 4 == 0))
        return 29;
    else
        return 28;
}

function _contains(container, child) {
    var mytab1 = document.getElementById("mytab1");
    if (mytab1 != null) {
        var temp = child.parentNode;
        while (temp != mytab1) {
            if (temp == container)
                return true;

            temp = temp.parentNode;
        }
    }
    return false;
}

function ValidRegistration(errorMsgEmail) {
    _haveFocusedError = false;

    var c = document.getElementById('ctl00_ContentPlaceHolder1_btnSave');

    var isValidReg = IsValidRegistration() && IsValidEmail(errorMsgEmail) && isValidBudishDate();
    var isValidChildrens = IsValidYourChildrens();
    var isValidCondTerme = ValidCondTerme();

    if (isValidReg && isValidChildrens && isValidCondTerme) {
        isValidate = true;
        c.style.visibility = 'hidden';
        return true;
    }
    else {
        return false;
    }

}


function BuddishCalendar(lang) {
    if (lang == 'TH') {
        return 543;
    }
    else {
        return 0;
    }
}
