var calJours = ['Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi'];
var calMois = ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Decembre'];


function controlEspace(string) {
    for(i = 0; i < string.length; i++) {
        if( string.charCodeAt(i)==32)
            return false;
    }
    return true;
}


function sansEspaceAuDebut(string) {
    tail = string.length;
    deb = 0;
    for(i = 0; i < string.length; i++) {
        if( string.charCodeAt(i)>32 || string.charCodeAt(i)<32) break;
        else deb++;
    }
    return string.slice(deb, tail);
}

function sansEspaceALaFin(string) {
    tail = string.length-1;
    moins = string.length;
    for(i = tail; i>=0; i--) {
        if( string.charCodeAt(i)>32 || string.charCodeAt(i)<32 ) break;
        else moins--;
    }
    return(string.slice(0,moins));
}

function sansEspace(string) {
    return( sansEspaceAuDebut(sansEspaceALaFin(string)));
}

function ctrlF( f) {
    
    var bid;
    bid = sansEspace( f.nom.value);
    if( bid.length==0) {
        alert("Merci d'indiquer votre nom");
        return false;
    }
    bid = sansEspace( f.prenom.value);
    if( bid.length==0) {
        alert("Merci d'indiquer votre prénom");
        return false;
    }
    bid = sansEspace( f.adr.value);
    if( bid.length==0) {
        alert("Merci d'indiquer votre adresse");
        return false;
    }
    bid = sansEspace( f.tel.value);
    if( bid.length==0) {
        alert("Merci d'indiquer votre numéro de téléphone");
        return false;
    }
    bid = sansEspace( f.email.value);
    if( bid.length==0) {
        alert("Merci d'indiquer votre email");
        return false;
    }

    var maReg = new RegExp ( "^\\w[\\w+\.\-]*@[\\w\-]+\.\\w[\\w+\.\-]*\\w$", "gi" ) ;
    if ( bid.search( maReg ) == -1 ) {
        alert ( "l'email est incorrect" ) ;
        return false;
    }
    
    return calculPeriode(f);
    
}

function calculPeriode( f) {
    if( f.date_arr.value=="" ) {
        alert("Merci d'indiquer une date d'arrivée");
        return false;
    }
    if( f.date_deb.value=="" ) {
        alert("Merci d'indiquer une date de départ");
        return false;
    }
    var aj = f.date_arr.value.substr(0,2);
    var am = f.date_arr.value.substr(3,2);
    var aa = f.date_arr.value.substr(6,4);
    
    var dj = f.date_deb.value.substr(0,2);
    var dm = f.date_deb.value.substr(3,2);
    var da = f.date_deb.value.substr(6,4);
		
		var a2 = new Date( aa, am-1, aj);
    var d2 = new Date( da, dm-1, dj);

    var a = new Date( aa, am, aj);
    var d = new Date( da, dm, dj);
    var temps_a = a.getTime() / 86400000;
    var temps_d = d.getTime() / 86400000;

    if( temps_a <= new Date().getTime()/86400000 || temps_a > temps_d) {
        alert("Période invalide");
        return false;
    }

    var nbrJ = Math.floor(temps_d - temps_a);
    if( nbrJ <= 0 || nbrJ>30) {
        alert( "Période invalide: merci de vérifier la saisie des dates.");
        return false;
    }

    var nt = nbrJ>1 ? " nuitées": " nuitée";
    var rp = f.hdiner.value=="oui" ? "\net vous souhaitez ": "\net vous ne souhaitez pas ";
    
    var str1 = calJours[a2.getDay()] +" "+ a2.getDate() +" "+ calMois[a2.getMonth()] +" "+ a2.getFullYear();
    var str2 = calJours[d2.getDay()] + d2.getDate() +" "+ calMois[d2.getMonth()] +" "+ d2.getFullYear();
    
    if( window.confirm ("Vous envisagez d'arriver: "+str1+
        "\npour repartir le: "+str2+
        "\n\nVotre demande de réservation concerne donc: " + nbrJ + nt +rp+"manger avec nous le soir de votre arrivée. "+
        "\n\nVoulez-vous confirmer votre demande de réservation ? "+
        "\n (Quelques secondes après avoir cliqué sur OK,\n un message de confirmation s'affichera)")) {
        return( {
            'dep':str2,
            'arr':str1
        });
    }
    else return false;
}

function envoyer( f) {
    var res = ctrlF(f);

    if( res!=false) {
        requestor = createHttpRequest();
        requestor.onreadystatechange = function() {
            if (requestor.readyState == 4 || requestor.readyState == "complete") {
                alert("Votre demande a bien été envoyée");
            }
        }
         
        requestor.open( "POST", "contact/pre_reservation", true);
        requestor.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        var dat = "nom="+f.nom.value.trim();
        dat += "&prenom="+f.prenom.value.trim();
        dat += "&adr="+f.adr.value.trim();
        dat += "&tel="+f.tel.value.trim();
        dat += "&email="+f.email.value.trim();
        dat += "&arrivee="+res['arr'];
        dat += "&depart="+res['dep'];
        dat += "&adulte="+f.adulte.value;
        dat += "&enf11="+f.enf11.value;
        dat += "&enf12="+f.enf12.value;
        dat += "&enf13="+f.enf13.value;
        dat += "&enf14="+f.enf14.value;
        dat += "&diner="+f.hdiner.value;
        dat += "&cplt="+f.cplt.value.trim();
        requestor.send(dat);
    }
    return true;
}

function createHttpRequest() {
    var objXMLHttp=null;
    if (window.XMLHttpRequest)
        objXMLHttp=new XMLHttpRequest();
    else if (window.ActiveXObject)
        objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP");
    return objXMLHttp;
}

function initLoading() {
    var tabCal = $$('.calendrier]');

    var d = new Date();
    var j = d.getDay();
    var m = d.getMonth();
    var a = d.getFullYear();

    if( tabCal.length>0) {
        var myCal = Array(tabCal.length);
        for( var i=0; i<tabCal.length; i++) {
            var str ="{'"+ tabCal[i].getProperty('id')+"'"+":"+"'d-m-Y'}";
            //myCal[i] = new Calendar( JSON.decode(str), { classes: ['alternate'], navigation: 2, direction:1, blocked:[ ',* * 2011'] } ); //
            myCal[i] = new Calendar( JSON.decode(str), {
                classes: ['alternate'],
                blocked: ['0 * '+a+2+'-2500 0,1,2,3,4,5,6'],
                navigation: 2,
                direction:1,
                locale:'fr',
                'date_fin':new Date( a+1, 12, 31)
            } );
        }
    }
}

window.addEvent('domready', initLoading);

