$(function() {
  $("#date_selection").date_input();
  
  $("#processCarrier").hide();
	$("#etape_2").hide();
	$("#bouton_verif_date").hide();
	
	$("#date_selection").change(function () {
	  $("#processCarrier").hide();
		$("#etape_2").hide();
		$("#formulaire_retour").hide();
		$("#bouton_verif_date").show();
		}
	)
	
$("#bouton_verif_date").click(function() {

    $("#bouton_verif_date").hide();

		//traitement de vérification de date
    $("p#formulaire_retour").html("<img id='miniloader2' src='themes/pretarecevoir/img/mini_loader.gif' />");
	  $("p#formulaire_retour").fadeIn("slow");

    var datedl = $("#date_selection").val();
    var typedl = $("#typejour").val();
    var creneaudl = $("#input_creneau_livraison").val();
    var horaire1dl = $("#time1").val();
    var horaire2dl = $("#time2").val();
    var panierid = $("#panierid").val();
		//var dataString = 'dl='+ ddl;

    $("#formulaire_retour").load("themes/pretarecevoir/date_livraison.php",{ 'dl':datedl,'type':typedl,'h1':horaire1dl,'h2':horaire2dl,'panier_id':panierid } );
		$("#formulaire_retour").fadeIn("slow");

});
  
});

  jQuery.extend(DateInput.DEFAULT_OPTS, {
  month_names: ["Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"],
  short_month_names: ["Jan", "Fev", "Mar", "Avr", "Mai", "Juin", "Juil", "Aou", "Sep", "Oct", "Nov", "Dec"],
  short_day_names: ["Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam"]
});

$.extend(DateInput.DEFAULT_OPTS, {
  stringToDate: function(string) {
    var matches;
    if (matches = string.match(/^(\d{4,4})-(\d{2,2})-(\d{2,2})$/)) {
      return new Date(matches[1], matches[2] - 1, matches[3]);
    } else {
      return null;
    };
  },

  dateToString: function(date) {
    var month = (date.getMonth() + 1).toString();
    var dom = date.getDate().toString();
    if (month.length == 1) month = "0" + month;
    if (dom.length == 1) dom = "0" + dom;
    //return date.getFullYear() + "-" + month + "-" + dom;
    return dom + "/" + month + "/" + date.getFullYear();
  }
});

//**** //
//**** Calcul des jours fériés
//**** //
function JoursFeries (an){
var JourAn = new Date(an, "00", "01");
var FeteTravail = new Date(an, "04", "01");
var Victoire1945 = new Date(an, "04", "08");
var FeteNationale = new Date(an,"06", "14");
var Assomption = new Date(an, "07", "15");
var Toussaint = new Date(an, "10", "01");
var Armistice = new Date(an, "10", "11");
var Noel = new Date(an, "11", "25");
//**var SaintEtienne = new Date(an, "11", "26");**//

var G = an%19;
var C = Math.floor(an/100);
var H = (C - Math.floor(C/4) - Math.floor((8*C+13)/25) + 19*G + 15)%30;
var I = H - Math.floor(H/28)*(1 - Math.floor(H/28)*Math.floor(29/(H + 1))*Math.floor((21 - G)/11));
var J = (an*1 + Math.floor(an/4) + I + 2 - C + Math.floor(C/4))%7;
var L = I - J;
var MoisPaques = 3 + Math.floor((L + 40)/44);
var JourPaques = L + 28 - 31*Math.floor(MoisPaques/4);
var Paques = new Date(an, MoisPaques-1, JourPaques);
//**var VendrediSaint = new Date(an, MoisPaques-1, JourPaques-2);**//
var LundiPaques = new Date(an, MoisPaques-1, JourPaques+1);
var Ascension = new Date(an, MoisPaques-1, JourPaques+39);
var Pentecote = new Date(an, MoisPaques-1, JourPaques+49);
var LundiPentecote = new Date(an, MoisPaques-1, JourPaques+50);

//**SaintEtienne et Vendredi Saint sont des fêtes exclusivement alscacienne. On les ignore dans notre cas.**//
return new Array(JourAn, Paques, LundiPaques, FeteTravail, Victoire1945, Ascension, Pentecote, LundiPentecote, FeteNationale, Assomption, Toussaint, Armistice, Noel);
}

//**** //
//**** Test une valeur dans un tableau
//**** //
function in_array(array,valeur) {
var valeurString = valeur.toString("dd/MM/yyyy");
    for(var i = 0, l = array.length; i < l; i++) {
        //alert (array[i]);
        var valeurTableau = array[i].toString("dd/MM/yyyy");

        if(valeurTableau==valeurString) {
            rowid = i;
            return 1;
            //alert ("oui " + valeurTableau + " > " + valeurString);
        }else{
          //alert ("non " + valeurTableau + " - " + valeurString);
        }
    }
    return 0;
}


//**** //
//**** Calcul de la date minimum de livraison (6 jours ouvrables après la date du jour)
//**** //
function calc_date_mini(){

var date_now = new Date();
var date_now_annee = date_now.getFullYear();
var date_now_mois = date_now.getMonth();
var date_now_jour = date_now.getDate();

//**init. des compteurs**//
var cpt_i = 0;
var cpt_j = 0;
var cpt_k = 0;

//**init. des tableaux récupérant les jours feries de l'annee en cours et de l'annee suivante.**//
var tab_1=new Array;
var tab_2=new Array;
tab_1=JoursFeries(date_now.getFullYear());
tab_2=JoursFeries(date_now.getFullYear()+1);

for(cpt_i=0; cpt_j < 7 ; cpt_i++) {
var date_eval = new Date(date_now_annee, date_now_mois, date_now_jour+cpt_i);
var day_date_eval = date_eval.getDay();
if((day_date_eval != 6) && (day_date_eval != 0)) {
cpt_j++;
for(cpt_k = 0; cpt_k <13; cpt_k++){
if(date_eval.getMonth() == tab_1[cpt_k].getMonth() && date_eval.getFullYear() == tab_1[cpt_k].getFullYear() && date_eval.getDate() == tab_1[cpt_k].getDate()){
cpt_j--;
break;
}
if(date_eval.getMonth() == tab_2[cpt_k].getMonth() && date_eval.getFullYear() == tab_2[cpt_k].getFullYear() && date_eval.getDate() == tab_2[cpt_k].getDate()){
cpt_j--;
break;
}
}
}
}
return date_eval;
}

//**** //
//**** Fonction de vérification si une date entrée est au de^là de la date minimum
//**** //
function verif_date_mini(date_entree, date_mini){
//alert (date_entree);
var date_entree_n = new Date(date_entree);
var date_mini_n = new Date(date_mini);

if (date_entree_n != "") {
//**Transformation d'une date en jj/mm/aaaa en mm/jj/aaaa puis en date :Fri Sep 5 15:14:41 UTC+0200 2003)**//
/*
var date_entree_jour = date_entree.substring(0,2);
var date_entree_mois = date_entree.substring(3,5);
var date_entree_annee = date_entree.substring(6,10);
var nouvelle_date_entree = new Date(date_entree_annee, date_entree_mois-1, date_entree_jour);
*/

//if (nouvelle_date_entree.getTime()<date_mini_n.getTime()) {
if (date_entree.getTime()<date_mini_n.getTime()) {
return 0;
}
else {
return 1;
}
}
}


(function () {
	$(document).ready(function () {

		var messages = ["merci de sélectionner une date", "choisir ici une date", "sélection de votre date"];
		var input = $("#date_selection"), date_string = $("#your_date"), date = null;
		var input_empty = "Sélectionner ...", empty_string = "";
		input.val(input_empty);
		date_string.text(empty_string);
		input.change(
			function (e) {
				date_string.removeClass();
				if (input.val().length > 0) {
					date = Date.parse(input.val());

					//si une date a été selectionnée
          if (date !== null) {
						input.removeClass();
						//date_string.addClass("accept").text(date.toString("dddd, MMMM dd, yyyy h:mm:ss tt"));

//test si date antérieure
var aujourdhui = new Date();
if(date.getTime()<aujourdhui.getTime()){
  date_string.addClass("refuse").html( "<i><b>Vous avez choisi une livraison pour le " + date.toString("dddd dd MMMM yyyy") + "</b></i>.<br /><br /><b>Nous ne pouvons pas vous livrer pour une date passée.</b><br /><br />Merci de sélectionner à nouveau une date de livraison souhaitée.");
  $("#bouton_verif_date").hide();
  $("#formulaire_retour").hide();
  $("#etape_2").hide();
}else{//else - test date antérieure

      //test le délai des 6 jours
      var jourMini = calc_date_mini();
      var delaiOk = verif_date_mini(date, jourMini);
      var anneeselectionnee = date.getFullYear();
      var feries = JoursFeries(anneeselectionnee);
      var presence = in_array(feries, date);
      if(delaiOk===0){
      
      if(date.toString("dddd")==="dimanche" || date.toString("dddd")==="samedi" || presence==1){
        date_string.addClass("refuse").html( "<i><b>Vous avez choisi une livraison pour le " + date.toString("dddd dd MMMM yyyy") + ".</b></i><br /><br /><b>Le délai de votre commande est trop court.</b><br />De plus, vous avez sélectionné un jour férié ou un week-end, notez bien que vous ne pourrez pas venir chercher votre commande dans nos locaux.<br /><br /><b>Mais nous avons peut-être une solution pour vous :</b><br />nous allons tout faire pour essayer de valider votre commande manuellement. Pour cela, envoyez-nous votre sélection de produits par mail (<a href='order.php?liv=" + date.toString("dddd dd MMMM yyyy") + "'>il vous suffit de cliquer ici</a>)<br />Nous allons vous recontacter dès que possible pour finaliser cela ensemble.<input type='hidden' id='typejour' name='typejour' value='locaux' />");
        $("#bouton_verif_date").hide();
        $("#formulaire_retour").hide();
        $("#etape_2").hide();
      }else{
        date_string.addClass("refuse").html( "<i><b>Vous avez choisi une livraison pour le " + date.toString("dddd dd MMMM yyyy") + ".</b></i><br /><br /><b>Le délai de votre commande est trop court.</b><br /><br /><b>Mais nous avons peut-être une solution pour vous :</b><br />nous allons tout faire pour essayer de valider votre commande manuellement. Pour cela, envoyez-nous votre sélection de produits par mail (<a href='order.php?liv=" + date.toString("dddd dd MMMM yyyy") + "'>il vous suffit de cliquer ici</a>)<br />Nous allons vous recontacter dès que possible pour finaliser cela ensemble.");
        $("#etape_2").hide();
				$("#formulaire_retour").hide();
				$("#bouton_verif_date").hide();
			}

      }else{//else - test le délai des 6 jours

          //test si on est un jour férié
          // année de la date sélectionnée
          var anneeselectionnee = date.getFullYear();
          var feries = JoursFeries(anneeselectionnee);
          var presence = in_array(feries, date);
          if(presence==1){
            date_string.addClass("accept-warning").html( "<i><b>Vous avez choisi une livraison pour le " + date.toString("dddd dd MMMM yyyy") + ".</b></i><br /><br /><b>Pour une livraison un jour ferié, les frais de port sont doublés.</b><br />Pour bénéficier de frais de port normaux<br />nous vous invitons à modifier votre date pour une livraison dans la semaine d'avant.<br /><br /><b>Si vous voulez vraiment vous faire livrer ce jour ferié,</b><br />nous vous demandons de choisir un créneau de 3 heures ci-dessous :<br /><p id='timeselect'>Entre <input type='text' id='time1' size='10' value='08h00' class='input-time1' /> et <input type='text' id='time2' size='10' value='11h00' class='input-time2' /></p><input type='hidden' id='typejour' name='typejour' value='ferie' />");
            //time select
                var tranche = 3;
                $("#time1").timePicker({startTime: "08h00", endTime: new Date(0, 0, 0, 17, 0, 0), separator: 'h', step: 60});
                $("#time1").change(function() {
                  var finhoraire = parseInt($("#time1").val().substring(0,2)) + tranche;
                  if(finhoraire==tranche){finhoraire = parseInt($("#time1").val().substring(1,2)) + tranche;}
                  $("#time2").val(finhoraire + "h00");
                  $("#etape_2").hide();
									$("#formulaire_retour").hide();
									$("#bouton_verif_date").show();
                });
                $("#time2").change(function() {
                  var finhoraire = parseInt($("#time1").val().substring(0,2)) + tranche;
                  if(finhoraire==tranche){finhoraire = parseInt($("#time1").val().substring(1,2)) + tranche;}
                  $("#time2").val(finhoraire + "h00");
                });
                //time select

          }else{//else - test jour férié

                //test si on est un dimanche
                if(date.toString("dddd")==="dimanche"){
                  date_string.addClass("accept-warning").html( "<i><b>Vous avez choisi une livraison pour le " + date.toString("dddd dd MMMM yyyy") + ".</b></i><br /><br /><b>Pour une livraison un dimanche, les frais de port sont doublés.</b><br />Pour bénéficier de frais de port normaux<br />nous vous invitons à modifier votre date pour une livraison dans la semaine d'avant.<br /><br /><b>Si vous voulez vraiment vous faire livrer ce dimanche,</b><br />nous vous demandons de choisir un créneau de 3 heures ci-dessous :<br /><p id='timeselect'>Entre <input type='text' id='time1' size='10' value='08h00' class='input-time1' /> et <input type='text' id='time2' size='10' value='11h00' class='input-time2' /></p><input type='hidden' id='typejour' name='typejour' value='dimanche' />");
                //time select
                var tranche = 3;
                $("#time1").timePicker({startTime: "08h00", endTime: new Date(0, 0, 0, 17, 0, 0), separator: 'h', step: 60});
                $("#time1").change(function() {
                  var finhoraire = parseInt($("#time1").val().substring(0,2)) + tranche;
                  if(finhoraire==tranche){finhoraire = parseInt($("#time1").val().substring(1,2)) + tranche;}
                  $("#time2").val(finhoraire + "h00");
                  $("#etape_2").hide();
									$("#formulaire_retour").hide();
									$("#bouton_verif_date").show();
                });
                $("#time2").change(function() {
                  var finhoraire = parseInt($("#time1").val().substring(0,2)) + tranche;
                  if(finhoraire==tranche){finhoraire = parseInt($("#time1").val().substring(1,2)) + tranche;}
                  $("#time2").val(finhoraire + "h00");
                });
                //time select

                }else{//else - test dimanche

                      //test si on est un samedi
                      if(date.toString("dddd")==="samedi"){
                        date_string.addClass("accept-warning").html( "<i></b>Vous avez choisi une livraison pour le " + date.toString("dddd dd MMMM yyyy") + ".</b></i><br /><br /><b>Pour une livraison un samedi, un supplément de livraison de 5 euros est appliqué.</b><br />Pour bénéficier de frais de port normaux<br />nous vous invitons à modifier votre date pour une livraison dans la semaine d'avant.<br /><br /><b>Si vous voulez vraiment vous faire livrer ce samedi,</b><br />nous vous demandons de choisir un créneau horaire de 3 heures ci-dessous :<br /><p id='timeselect'>Entre <input type='text' id='time1' size='10' value='08h00' class='input-time1' /> et <input type='text' id='time2' size='10' value='11h00' class='input-time2' /></p><input type='hidden' id='typejour' name='typejour' value='samedi' />");
                      //time select
                      var tranche = 3;
                      $("#time1").timePicker({startTime: "08h00", endTime: new Date(0, 0, 0, 17, 0, 0), separator: 'h', step: 60});
                      $("#time1").change(function() {
                        var finhoraire = parseInt($("#time1").val().substring(0,2)) + tranche;
                        if(finhoraire==tranche){finhoraire = parseInt($("#time1").val().substring(1,2)) + tranche;}
                        $("#time2").val(finhoraire + "h00");
                        $("#etape_2").hide();
												$("#formulaire_retour").hide();
												$("#bouton_verif_date").show();
                      });
                      $("#time2").change(function() {
                        var finhoraire = parseInt($("#time1").val().substring(0,2)) + tranche;
                        if(finhoraire==tranche){finhoraire = parseInt($("#time1").val().substring(1,2)) + tranche;}
                        $("#time2").val(finhoraire + "h00");
                      });
                      //time select

                      }else{//else - test samedi
                        date_string.addClass("accept").html( "<i><b>Vous avez choisi une livraison pour le " + date.toString("dddd dd MMMM yyyy") + ".</b></i><br /><br /><b>Pour une livraison en semaine,</b><br />nous vous demandons de choisir un créneau horaire de 3 heures ci-dessous :<br /><p id='timeselect'>Entre <input type='text' id='time1' size='10' value='08h00' class='input-time1' /> et <input type='text' id='time2' size='10' value='11h00' class='input-time2' /></p><input type='hidden' id='typejour' name='typejour' value='semaine' />");
                      //time select
                      var tranche = 3;
                      $("#time1").timePicker({startTime: "08h00", endTime: new Date(0, 0, 0, 17, 0, 0), separator: 'h', step: 60});
                      $("#time1").change(function() {
                        var finhoraire = parseInt($("#time1").val().substring(0,2)) + tranche;
                        if(finhoraire==tranche){finhoraire = parseInt($("#time1").val().substring(1,2)) + tranche;}
                        $("#time2").val(finhoraire + "h00");
                        $("#etape_2").hide();
												$("#formulaire_retour").hide();
												$("#bouton_verif_date").show();
                      });
                      $("#time2").change(function() {
                        var finhoraire = parseInt($("#time1").val().substring(0,2)) + tranche;
                        if(finhoraire==tranche){finhoraire = parseInt($("#time1").val().substring(1,2)) + tranche;}
                        $("#time2").val(finhoraire + "h00");
                      });
                      //time select
                      }
                      //fin - test jour de livraison

                }//fin - test dimanche

          }//fin - test jour férié

      }//fin - test le délai des 6 jours

}//fin - test date antérieure

					} else {
						input.addClass("validate_error");
						date_string.addClass("refuse").text(messages[Math.round(messages.length * Math.random())] + "...");
					}
				} else {
					date_string.text(empty_string).addClass("empty");
				}
			}
		);
		input.focus(
			function (e) {
				if (input.val() === input_empty) {
					input.val("");
				}
			}
		);
		input.blur(
			function (e) {
				if (input.val() === "") {
					input.val(input_empty).removeClass();
				}
			}
		);
		var count = 1;
		$("#clickme").attr("style", $("#clickme").attr("style") + "cursor:pointer;").click( function (e) {
			if (count > 4) {
				count = 1;
			}
			$("#ninjaism").attr("src","images/ninjaism" + count + ".png");
			count++;
			e.stopPropagation();
			$(document).click( function (e) {
				$("#ninjaism").attr("src","images/shim.gif");
			});
		});
	});
}());

