/* Fonctions utiles en javascript */

//=Décochage impossible d'une checkbox
//=========================================
function CheckAlways(element)
{
    element.checked = true;
    return true;
}

function Popup(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

function PopupCentrer(page,largeur,hauteur,options) {
  var top=(screen.height-hauteur)/2;
  var left=(screen.width-largeur)/2;
  window.open(page,"","top="+top+",left="+left+",width="+largeur+",height="+hauteur+","+options);
}
function popUp(theURL,winName,features) {
	window.open(theURL,winName,features);
}

function popUpCenter( fichier, nom, largeur, hauteur, options )
{
	var gauche = ( screen.width - largeur ) / 2;
	var haut = ( screen.height - hauteur ) / 2;
	if ( options )
		{
			options = 'width=' + largeur + 'px, height=' + hauteur + 'px,  top=' + haut + ', left=' + gauche + ', ' + options;
		}
	else
		{
			options = 'width=' + largeur + 'px, height=' + hauteur + 'px,  top=' + haut + ', left=' + gauche;
		}
	document.open( fichier, nom, options );
}



function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

// fonctions d'affichage des calques
var vis = new Array();
function swap_couche(couche, rtl) {
	triangle = MM_findObj('triangle' + couche);
	if (!(layer = MM_findObj('Layer' + couche))) return;
	if (vis[couche] == 'hide'){
		if (triangle)
		{
			triangle.src = 'themes/demo/picto/deplierbas' + rtl + '.gif';
		}
		layer.style.display = 'block';
		vis[couche] = 'show';
	} else {
		if (triangle)
		{
			triangle.src = 'themes/demo/picto/deplierhaut' + rtl + '.gif';
		}
		layer.style.display = 'none';
		vis[couche] = 'hide';
	}
}

function SV_showHideLayers() { //v6.0
  var i,p,v,obj,args=SV_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?"block":(v=='hide')?"none":v; }
    obj.display=v; }
}

//fonction qui supprime les espaces inutiles (en fin et debut de chaine)
function trim (chaine)
{
	chaine = unescape(chaine);
	return chaine.replace(/(^\s*)|(\s*$)/g, "");
}

//=========================================
// Affichage du calque d'erreur
//=========================================
function calqueErreur(docu, titre, chaine, idElement)
{
	var erreur = "<table border=0 width=\"100%\"><tr><td align=\"center\" class=\"dos_txt-s-erreur\">"+titre+"</td></tr><tr><td>";
	erreur += chaine;
	erreur +="</td></tr><tr align=center><td><input type=\"button\" id=\"boutCalqueErreurOk\" value=\"  OK  \" onClick=\"document.getElementById('"+idElement+"').style.display='none'\"></td></tr></table>";

	docu.getElementById(idElement).innerHTML = erreur;
	docu.getElementById(idElement).style.display = 'block';
	docu.getElementById('boutCalqueErreurOk').focus();
}

//=========================================
// Génération d'un mot de passe
//=========================================
function pwgen(pwl) {
  // On peut mettre d'autres caractères, y compris des lettres accentuées (encore faut-il que
  // le code ASCII soit le même sur les 3 systèmes codeur, client et serveur)
  // Mais on gagne nettement plus en augmentant la taille du mot de passe que le nombre de caractères.
  var source = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
  var pw = '';
  for (var i = 1; i <= pwl; i++) {
	pw += source.substr(Math.floor(Math.random()*source.length),1);
  }
  return pw;
}


//=========================================
// Cochage d'un ensemble de checkbox
//=========================================
function setCheckboxes(the_form, tableau, do_check)
{
    var elts      = document.forms[the_form].elements[tableau];
    var elts_cnt  = (typeof(elts.length) != 'undefined')
                  ? elts.length
                  : 0;

    if (elts_cnt) {
        for (var i = 0; i < elts_cnt; i++) {
            elts[i].checked = do_check;
        } // end for
    } else {
        elts.checked        = do_check;
    } // end if... else

    return true;
}

//=========================================
// Vérification d'une adresse email
//=========================================
function VerificationEmail(email)
{
	var reg = /^[\w.-]+@[\w.-]+\.\w{1,4}$/
	var reg2 = /[.@]{2,}/
	return ((reg.exec(email)!=null) && (reg2.exec(email)==null))
}

function verifDateExpiration(dateExp)
{
    // Vérification de la validité de la date d'expiration de la carte
    // Date d"expiration du type 06/06 ou 06/2006
    var verifDateExpiration = new RegExp("^[0-9]{2}(/|-)(([0-9]{2})|([0-9]{4}))$");
    // on teste l'année
    var testAnnee = dateExp.substring(3,7);
    var testMois = dateExp.substring(0,2);
    var dateDuJour = new Date();
    if(testAnnee<dateDuJour.getFullYear())
    {
        return false;
    }
    else
    {
        if(testAnnee==dateDuJour.getFullYear())
        {
            if(testMois<=dateDuJour.getMonth()+1) // mois inclus car janvier : 0 et décembre : 12
            {
                return false;
            }
            else
            {
                if(testMois>12)
                {
                    return false;
                }
            }
        }
        else
        {
            if(testMois>12)
            {
                return false;
            }
        }
    }

    return verifDateExpiration.test(dateExp);
}



//=========================================
// Fonction JQUERY
//=========================================
//Init Reservation
function initReservation(){
    $('#btn-reserver').click(
        function(){
            if ($('#cgv:checked').val() == undefined){
                    alert("Vous devez accepter les conditions générales");
                    return false;
             }

             if ($('#radio_cc:checked').val() == undefined && $('#radio_cb:checked').val() == undefined){
                    alert("Vous devez choisir votre moyen de paiement");
                    return false;
             }

             //test si un mode de paiement a été selectionné
             //Commentaire nous n'avons plus d appel sofinco
             /*if($('#radio_cc:checked').val()){
                var myArray = document.getElementsByName('op');
                var longueur = document.getElementsByName('op').length;
                var i = 0 ;

                for ( i=0 ; i<longueur ; i++ ) {
                    if ( myArray[i].checked == true) {
                        break;
                    }
                }

                if(i==longueur){
                    alert('Vous devez choisir un mode de paiement');
                    return false;
                }
            }*/

            if($('#radio_cb:checked').val()){
                if($('#dbc').val() == 0){
                    $('#block-reserver').html('<img src="espacepro/img/ajax-loader.gif" alt="chargement en cours" align="absmiddle" border="0"><br><strong>Veuillez patienter quelques instants....</strong>');
                    $('#dbc').val(1);
                    AjaxPreparePaybox();
                }

                return false;
            }else{
                //RegEx
                if( $('#numcartecora').val().length < 19){
                    alert("Le numero de carte cora est invalide");
                    return false;
                }else if(!verifDateExpiration($('#dateExpcartecora').val())){
                    alert("La date d'expiration est invalide");
                    return false;
                }

                $('#form-valider-paiement').attr('action', 'index-reservation_enregistrer.html');
                $('#form-valider-paiement').submit();
            }
        });
}

//Fonction qui récupère les modes de paiement sofinco
function AjaxGetSofinco(){
    $.get(
        'pbx/ajax.php',
        {
            action:"getsofinco",
            montant:$('#mc').val()
        },
        function success(data){
            var returnCode;
            returnCode = data.substr(0, 5);
            if (returnCode == 'error'){
                alert('Le serveur de paiement par carte cora n\'est pas disponible actuellement.\nVeuillez nous excuser pour ces désagréments. ');
                $('#sofinco').hide();
            } else{
                $('#sofinco').html(data);
            }
        }
    )
}


function AjaxPreparePaybox(){
    //déclaration tu tableau de paramêtre
    var params = {};
    //action
    params['action'] = 'preparePbx';

    //si choix paiement par carte cora
    /*if($('#radio_cc:checked').val()){
        var myArray = document.getElementsByName('op');
        var longueur = document.getElementsByName('op').length;
        var i = 0 ;
        var optionPaiementRetenue ;
        var libelleOptionPaiementRetenue = '';

        for ( i=0 ; i<longueur ; i++ ) {
            if ( myArray[i].checked == true) {
                optionPaiementRetenue = myArray[i].value;
                libelleOptionPaiementRetenue = myArray[i].title;
                break;
            }
        }

        params['opt']                   = optionPaiementRetenue;
        params['libelleOptionPaiement'] = libelleOptionPaiementRetenue;
        params['chx_pbx']               = 'CC';
    }else{*/
        params['chx_pbx'] = 'CB';
    //}
        //pour la newslettrer
        if($('#newsletter:checked').val()){
            params['chx_news'] = 1;
        }
        else{
            params['chx_news'] = 0;
        }

    //tester si la case est cochée
    $.get(
        'pbx/ajax.php',
        params,
        function success(data){

            var returnCode;
            returnCode = data.substr(0, 5);
            if (returnCode == 'ERROR') {
                alert('Une Erreur s\'est produite. Merci de bien vouloir recommencer la manipulation \n' + data);
                $('#block-reserver').html('<a href="#" id="btn-reserver"><img src="themes/cora/boutons/bt_reserver.gif" title="Réserver votre commande"></a>');
                $('#dbc').val(0);
                initReservation();

                }
            else {
                $('#pbfile').val(data);
                $('#form-valider-paiement').submit();
            }
        });
    return true;
}

//Evénements
$(function(){

    //Radio button
    $('#radio_cc').click(
        function(){
            $('#sofinco').html('<div align="center"><img src="espacepro/img/ajax-loader.gif" alt="chargement en cours" align="absmiddle" border="0"><br><strong>Veuillez patienter quelques instants....</strong></div>');
            $('#sofinco').show();
            AjaxGetSofinco();
        });
    $('#radio_chq').click(
        function(){
            $('#sofinco').hide();
        });
    $('#radio_cb').click(
        function(){
            $('#sofinco').hide();
        });

    initReservation();
});
