/* -----------------------------------------------------------------------------*/
var blocAstuces = [
    {
        titre: 'Pratique',

        texte: 'Vos devis sont conserv&eacute;s dans votre <strong>espace devis</strong>.<br />Comparez-les, pour proc&eacute;der au meilleur choix lors de votre souscription en ligne.'

    },
    {
        titre: '&nbsp;',
        texte: 'Avec Flexeo Sant&eacute; et Modulo &agrave; la carte, d&eacute;couvrez la <strong>personnalisation &agrave; l\'infini !</strong><br />Vite, validez vos informations pour inventer votre formule !'
    },
    {
        titre: '&nbsp;',
        texte: 'Avec Flexeo Sant&eacute;, nul besoin de votre identit&eacute; pour vous fournir <strong>un devis</strong>. Alors n\'h&eacute;sitez pas, <strong>c\'est anonyme et gratuit !</strong>'
    },
   /* {
        titre: 'Votre souscription 100% en ligne',
        texte: 'Gagnez du temps en souscrivant &agrave; votre toute premi&egrave;re e-mutuelle en ligne'
    },*/
    {
        titre: '&nbsp;',

        texte: 'Soyez le premier inform&eacute; des <strong>offres promotionnelles</strong> et des <strong>nouveaut&eacute;s AG2R La Mondiale</strong><br />Cochez la case "oui" en bas de votre formulaire.'

    }
];

var blocAstucesIndex = 0;
var blocAstucesTimer;


/* -----------------------------------------------------------------------------*/

function isDate(y, m, d) 
{
        if(typeof y == "string" && m instanceof RegExp && d){
            if(!m.test(y)) return 1;
            y = RegExp["$" + d.y], m = RegExp["$" + d.m], d = RegExp["$" + d.d];
        }
        d = Math.abs(d) || 0, m = Math.abs(m) || 0, y = Math.abs(y) || 0;
        return arguments.length != 3 ? 1 : d < 1 || d > 31 ? 2 : m < 1 || m > 12 ? 3 : /4|6|9|11/.test(m) && d == 31 ? 4
        : m == 2 && (d > ((y = !(y % 4) && (y % 1e2) || !(y % 4e2)) ? 29 : 28)) ? 5 + !!y : 0;
}


/* -----------------------------------------------------------------------------*/

function loadRollover()
{
    // Rollover sur les menus
	$(".id_menu a").hover(function(){
		$(this).children().attr("src",$(this).children().attr("src").replace("_off","_on"));
	},function(){
		$(this).children().attr("src",$(this).children().attr("src").replace("_on","_off"));	
	});
}

function iFrameShim()
{
    // Rollover sur les tooltips + Bugfix des éléments au-dessus d'un select sous IE6 (IFrame shim)
	$(".info, th .picto_interrogation").click(function(){
        $('.ajax__tooltip_popup').bgiframe();
    });
	
    /*$(".calendrier").datepicker({
		clearText: 'Effacer', clearStatus: '',
		closeText: 'Fermer', closeStatus: 'Fermer sans modifier',
		prevText: '&#x3c;', prevStatus: 'Voir le mois pr&eacute;c&eacute;dent',
		prevBigText: '&#x3c;&#x3c;', prevBigStatus: '',
		nextText: '&#x3e;', nextStatus: 'Voir le mois suivant',
		nextBigText: '&#x3e;&#x3e;', nextBigStatus: '',    
		currentText: '', currentStatus: 'Voir le mois courant',
		monthNames: ['Janvier','F&eacute;vrier','Mars','Avril','Mai','Juin','Juillet','Ao&ucirc;t','Septembre','Octobre','Novembre','D&eacute;cembre'],
		monthNamesShort: ['Jan','F&eacute;v','Mar','Avr','Mai','Jun','Jul','Ao&ucirc;','Sep','Oct','Nov','D&eacute;c'],
		monthStatus: 'Voir un autre mois', yearStatus: 'Voir un autre ann&eacute;e',
		weekHeader: 'Sm', weekStatus: '',
		dayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'],
		dayNamesShort: ['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'],
		dayNamesMin: ['Di','Lu','Ma','Me','Je','Ve','Sa'],
		dayStatus: 'Utiliser DD comme premier jour de la semaine', dateStatus: 'Choisir le DD, MM d',
		dateFormat: 'dd/mm/yy', firstDay: 0,
		initStatus: 'Choisir la date', isRTL: false,
		yearRange: '1930:2015',
		showOn: "both", 
        buttonImage: "img/pictos/calendrier.png"
    });*/
    	
    $(".ui-datepicker-trigger img").attr("alt","Ouvrir le calendrier");		
    
    $(".ajax__validatorcallout_div").bgiframe();
    
    // Fermeture de la popup sur la zone grise
	$('.popin').click(function(o) {
	    var obj = o.target;
	    
	    if ($(obj).hasClass('popin') || $(obj).hasClass('fermeture')) {
    	    $('.popup_fermer', obj).click();
    	}
	}); 
	
	
	// Zones pliables dépliables Espace devis  
	$('.b_d_header').click(function(evt) {
	    $this = $(this);
	    if ($this.hasClass('h_closed')) {
    	    $this.next(".b_d_dyn").slideDown(300);
    	    $this.removeClass('h_closed').addClass('h_open');
    	    $this.find("p a").html( $this.find("p a").html().replace("afficher", "masquer") );
    	} else if ($this.hasClass('h_open')) {
    	    $this.next(".b_d_dyn").slideUp(300);
    	    $this.removeClass('h_open').addClass('h_closed');
    	    $this.find("p a").html( $this.find("p a").html().replace("masquer", "afficher") );
    	}
    	
    	evt.preventDefault();
	}); 
	
	
	// Bloc astuces
	if ($('#blocastuce')) {
	    window.clearInterval(blocAstucesTimer);
	    blocAstucesTimer = window.setInterval("majBlocAstuces()", 10000);
	}
}

$(document).ready(function() {
    for (var n = 0; n < GAPopups.length; n++) {    
        var popup = $find(GAPopups[n].pid);
        
        if (popup && n < GAPopups.length) {
            popup.imgurl = GAPopups[n].img;
            
            popup.add_shown(function(e) {
                $(document.body).append("<img src='" + e.imgurl + "' width='1' height='1' alt='' />");
            });
        }
    }
});

function majBlocAstuces() {
    var obj = blocAstuces[++blocAstucesIndex % blocAstuces.length];

    $('#blocastuce h3, #blocastuce p').slideUp("normal", function() {
        $('#blocastuce h3').html(obj.titre);
        $('#blocastuce p').html(obj.texte);
        $('#blocastuce h3, #blocastuce p').slideDown("normal");
    });
}

/* 
 * Gestion de la colorisation à la volée des champs
 */
var ColorStates = [];
    
function RegisterColorState(ctlId)
{
    ColorStates[ColorStates.length] = ctlId;
}

function UpdateColorState(colorStateId, controlId, cssClass)
{
    var value = $('#' + colorStateId).attr('value');
    var tabEl = [];
    var isUpdate = false;
    
    if (value && value.length > 0) {
        tabEl = value.split('$$');
        var len = tabEl.length;
        
        for (var n = 0; n < len ; n++) {
            var tabKeyVal = tabEl[n].split(':');
            
            if (tabKeyVal[0] == controlId) {
                tabEl[n] = controlId + ':' + cssClass;
                isUpdate = true;
                break;
            }
        }
    }
        
    if (!isUpdate) {
        tabEl[tabEl.length] = controlId + ':' + cssClass;
    }
    
    $('#' + colorStateId).attr('value', tabEl.join('$$'));
}

function RestoreColorState(colorStateId)
{
    var value = $('#' + colorStateId).attr('value');

    if (!value || value.length == 0) {
        return;
    }
    
    var tabEl = value.split('$$');
    var len = tabEl.length;
    
    for (var n = 0; n < len; n++) {
        var tabKeyVal = tabEl[n].split(':');

        // Pas de couleurs sur les champs désactivés
        if ($('#' + tabKeyVal[0]).attr("disabled") != undefined) {
            $('#' + tabKeyVal[0]).removeClass(tabKeyVal[1]);
            continue;
        }
        
        $('#' + tabKeyVal[0]).addClass(tabKeyVal[1]);
    }
}


function RestoreAllColorStates()
{
    var len = ColorStates.length;
    for (var n = 0; n < len; n++) {
        RestoreColorState(ColorStates[n]);
    }
}


$(document).ready(function(){
    loadRollover();
    AddWaitingPopup();
    RestoreAllColorStates();
    iFrameShim(); 
    
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function(sender, args) {
        if (args.get_response().get_webRequest().get_url().indexOf('AjaxValidate.aspx') == -1) {
            RestoreAllColorStates();
        }
    });
});


function SetSimulateurValue(value, id)
{
    $('#ctl00_cBdPopup_' + id + '_SIMFormule option:selected').removeAttr('selected');
    $('#ctl00_cBdPopup_' + id + '_SIMFormule option[value=\'' + value + '\']').attr('selected', true);
    $('#ctl00_cBdPopup_' + id + '_SIMFormule').change();
}



/*
 * Popup d'attente AJAX
 */
function AddWaitingPopup()
{
    $(document.body).prepend('<div id="WaitingIndicator">Traitement en cours.<br />Veuillez patienter...</div>');

    Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(function(sender, args) {
        $("#WaitingIndicator").bgiframe();
        $("#WaitingIndicator").show();
        
        if ($.browser.msie) {
            $("#WaitingIndicator").centerIE6();
        } else {
            $("#WaitingIndicator").center();
        }
    });

    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function(sender, args) {
        $('#WaitingIndicator').fadeOut();
    });        
}

function ValidatorValidate(val) 
{    
    var retval = true;
        
    if (val.evaluationfunction) {
        retval = val.evaluationfunction(val); 
    }
    
    if (!val.isajax) {
        val.isvalid = retval;
        ValidatorUpdateDisplay(val);
    }
}


function ValidatorOnChange(evt) 
{
    var cont = document.getElementById(evt);
    var vals = cont.Validators;
    var hasValidValues = true;
    
    for (var i = 0; i < vals.length; i++) {
        var propValid = true;
        
        if (vals[i].controlpropertiesfunction != null && 
            vals[i].controlpropertiesfunction != 'undefined') {
            try {
                controlFunc = eval(vals[i].controlpropertiesfunction);

                if (controlFunc) {
                    propValid = controlFunc(vals[i]);
                }
            } catch (Exception) {
                propValid = true;
            }
        }
    
        if (!propValid) {
            continue;
        }
        
        ValidatorValidate(vals[i]);
        
        if (vals[i].isvalid == false) {
            hasValidValues = false;
            break;
        }
    }
    
    ValidatorUpdateIsValid();    
    return hasValidValues;
}


function ValidatorHookupControl(control, val) 
{
    if (!control) {
        return;
    }
    
    if (typeof(control.Validators) == "undefined") {
        control.Validators = new Array;

        if (control.type == 'text' && control.nodeName.toUpperCase() == 'INPUT') {
            var ev = control.onchange;
            $(control).blur(function(evt) { 
                if (!ValidatorOnChange(control.id)) {
                    VerifierDesactiverSaisie(control.id);
                }
            });
        } else {
            var ev = control.onchange;
            var func = new Function("ValidatorOnChange('" + control.id + "');");
            $(control).change(function() { 
                if (!ValidatorOnChange(control.id)) {
                    VerifierDesactiverSaisie(control.id);
                }
            });
        }
    }
    
    control.Validators[control.Validators.length] = val;
}


/*
 * Validateurs Flexeo
 */
function ValidatorUpdateDisplay(validator)
{
    if (validator.noupdate) {
        return;
    }

    var controlId = [validator.controltovalidate];
    var ctlToFocus = null;
    
    if (validator.multiplecontrols) {
        controlId = validator.multiplecontrols;
    }
    
    for (var n = 0; n < controlId.length; n++) {
        var ctlBlock = controlId[n].split('_');
        var colorStateId = ctlBlock[0] + '_' + ctlBlock[1] + '_ColorState';

        if (!validator.isvalid) {
            $("#" + controlId[n]).removeClass("valid");                    
            $("#" + controlId[n]).addClass("error");                    
            UpdateColorState(colorStateId, controlId[n], "error");
        } else {
            $("#" + controlId[n]).removeClass("error");                    

            // Pas de MAJ couleurs si champ vide non requis
            if ($("#" + controlId[n]).val() == '') {
                UpdateColorState(colorStateId, controlId[n], "");
                continue;
            }

            $("#" + controlId[n]).addClass("valid");                    
            UpdateColorState(colorStateId, controlId[n], "valid");
        }         
    }
}
 
 
function AjaxEvaluateIsValid(validator, validatorClass, controls, isdelayed)
{
    // Calage de la validation après un appel ASP.Net AJAX    
    var value = '';
    
    if (controls.constructor == Array) {
        var names = '';
        
        for (var n = 0; n < controls.length; n++) {
            value += (n > 0 ? String.fromCharCode(160) : '');
            
            if (controls[n].indexOf("@@") > -1) {
                value += controls[n].substring(2, controls[n].length - 2)
            } else {
                if ($("#" + controls).attr('type') == 'checkbox' &&
                    !$("#" + controls).is(':checked')) {
                    value = '';
                } else {
                    value += $("#" + controls[n]).val();
                }
            }
            
            names += String.fromCharCode(160) + controls[n];
        }
        
        value += names;
    } else {
        value = $("#" + controls).val();
        
        if ($("#" + controls).attr('type') == 'checkbox' &&
            !$("#" + controls).is(':checked')) {
            value = '';
        }
    }

    $.ajax({
        type: "POST",
        async: false,
        timeout: 500,
        dataType: "json",
        url: "AjaxValidate.aspx",
        data: "validator=" + validatorClass + "&value=" + value,
        success: function(result){
             validator.isvalid = result.isvalid;
             
             if (result.errormessage && result.errormessage != '') {
                validator.errormessage = result.errormessage;
             }

             if (result.controltovalidate && result.controltovalidate != '') {
                validator.controltovalidate = result.controltovalidate;
             }
             
             validator.noupdate = false;
             ValidatorUpdateDisplay(validator);
        }
    });
    
    return validator.isvalid;
}

 
function CodePostalValidatorEvaluateIsValid(validator)
{
    return AjaxEvaluateIsValid(validator, "CodePostalValidator", validator.controltovalidate);
}

function CodePromoValidatorEvaluateIsValid(validator)
{
    return AjaxEvaluateIsValid(validator, "CodePromoValidator", validator.controltovalidate);
}

function FlexeoAgeValidatorControlPropertiesValid(validator)
{
    if ($('#' + validator.dateeffetcontrol).val() == '') {
        return false;
    }
    
    return true;
}

function FlexeoAgeValidatorEvaluateIsValid(validator)
{
    var controls = [validator.dateeffetcontrol, validator.controltovalidate, validator.regimesocialcontrol, validator.typepersonne];   
    validator.multiplecontrols = controls;
    return AjaxEvaluateIsValid(validator, "FlexeoAgeValidator", controls);
}

function NumAffiliationValidatorEvaluateIsValid(validator)
{
    var controls = [validator.controltovalidate, validator.regimesocialcontrol];   
    return AjaxEvaluateIsValid(validator, "NumAffiliationValidator", controls);
}


function HeureFutureValidatorEvaluateIsValid(validator)
{
    var controls = [validator.hourcontroltovalidate, validator.controltovalidate, validator.datecontroltovalidate];   
    validator.multiplecontrols = controls;
    return AjaxEvaluateIsValid(validator, "HeureFutureValidator", controls);
}

function DateValidatorEvaluateIsValid(validator)
{
    return AjaxEvaluateIsValid(validator, "DateValidator", validator.controltovalidate);
}

function NumeroSSValidatorEvaluateIsValid(validator)
{
    return AjaxEvaluateIsValid(validator, "NumeroSSValidator", validator.controltovalidate);
}

function DateFutureValidatorEvaluateIsValid(validator)
{
    return AjaxEvaluateIsValid(validator, "DateFutureValidator", validator.controltovalidate);
}


function DateAnterieureValidatorEvaluateIsValid(validator)
{
    return AjaxEvaluateIsValid(validator, "DateAnterieureValidator", validator.controltovalidate);
}

function RIBValidatorEvaluateIsValid(validator)
{
    var controls = [validator.codebanquecontrol, validator.codeguichetcontrol, validator.numerocomptecontrol, validator.clecontrol];   
    validator.multiplecontrols = controls;
    
    for (var n = 0; n < controls.length; n++) {
        if (!controls[n] || $('#' + controls[n]).val().length == 0) {
            return;
        }
    }
    
    return AjaxEvaluateIsValid(validator, "RIBValidator", controls);
}

function RIBValidatorControlPropertiesValid(validator)
{
    var controls = [validator.codebanquecontrol, validator.codeguichetcontrol, validator.numerocomptecontrol, validator.clecontrol];   
    
    for (var n = 0; n < controls.length; n++) {
        if (!controls[n] || $('#' + controls[n]).val().length == 0) {
            return false;
        }
    }
    
    return true;
}


/*
 * Spécifique Devis etape 1
 */
function VerifierDesactiverSaisie(ctlId)
{
    if ($('#ctl00_cBdContenu_ActivationSaisie') &&
        (ctlId == 'ctl00_cBdContenu_CodePostal' || ctlId == 'ctl00_cBdContenu_DateNaissancePrinc' || 
         ctlId == 'ctl00_cBdContenu_RegimeSocialPrinc' || ctlId == 'ctl00_cBdContenu_FiscaliteMadelin' || 
         ctlId == 'ctl00_cBdContenu_DateFinExFisc' || ctlId == 'ctl00_cBdContenu_DateEffet') &&
         $('#ctl00_cBdContenu_ActivationSaisie').val() == '1') {
        
        $('#ctl00_cBdContenu_ActivationSaisie').val('0');
        setTimeout('__doPostBack(\'ctl00$cBdContenu$ActivationSaisie\',\'\')', 0)            
    }
}


function AssurePrincipalValidatorControlPropertiesValid(validator)
{
    var controls = []
    
    if ($('#' + validator.regimecontrol).val() == 'TN') {
        controls = [validator.controltovalidate, validator.datenaissancecontrol, validator.regimecontrol, validator.fiscalitecontrol, validator.datefinexfisccontrol, validator.dateeffetcontrol];   
    } else {
        controls = [validator.controltovalidate, validator.datenaissancecontrol, validator.regimecontrol, validator.dateeffetcontrol];   
    }
    
    for (var n = 0; n < controls.length; n++) {
        if (controls[n] && $('#' + controls[n]).val().length == 0) {
            return false;
        }
    }

    return true;
}


function AssurePrincipalValidatorEvaluateIsValid(validator)
{
    var controls = [validator.controltovalidate, validator.datenaissancecontrol, validator.regimecontrol, validator.fiscalitecontrol, validator.datefinexfisccontrol, validator.dateeffetcontrol];   

    if ($('#' + validator.regimecontrol).val() == 'TN') {
        controls = [validator.controltovalidate, validator.datenaissancecontrol, validator.regimecontrol, validator.fiscalitecontrol, validator.datefinexfisccontrol, validator.dateeffetcontrol];   
    } else {
        controls = [validator.controltovalidate, validator.datenaissancecontrol, validator.regimecontrol, validator.dateeffetcontrol];   
    }

    validator.noupdate = true;
    validator.multiplecontrols = controls;
    
    for (var n = 0; n < controls.length; n++) {
        if (controls[n] && 
            ($('#' + controls[n]).val() == undefined || 
             $('#' + controls[n]).val().length == 0)) {
            return false;
        }
    }    
    
    if (AjaxEvaluateIsValid(validator, "AssurePrincipalValidator", controls)) {
        if ($('#' + validator.activationcontrol).val() == '0') {
            $('#' + validator.activationcontrol).val('1');
            setTimeout('__doPostBack(\'' + validator.activationcontrol.replace('$', '_') + '\',\'\')', 0)            
            
            validator.noupdate = false;
            validator.multiplecontrols = [validator.datenaissancecontrol, validator.regimecontrol];
            ValidatorUpdateDisplay(validator);
            validator.noupdate = true;
        }
        
        return true;
    }

    if (validator.errormessage == 'TNS') {
        $find(FSPopup).show();

        validator.noupdate = false;
        validator.multiplecontrols = [validator.datenaissancecontrol, validator.regimecontrol];
        ValidatorUpdateDisplay(validator);
        validator.noupdate = true;
    }

    if ($('#' + validator.activationcontrol).val() == '1') {
        $('#' + validator.activationcontrol).val('0');
        setTimeout('__doPostBack(\'' + validator.activationcontrol.replace('$', '_') + '\',\'\')', 0)            
    }
    
    return false;
}