/*---------------
Nouveau fichier calcul de date par ADAKA
---------------*/

Date.prototype.getFirstDayWeek = function() {
	var firstDayWeek=new Date();
	var numOfdaysPastSinceLastMonday = this.getDay()- 1;
		if(numOfdaysPastSinceLastMonday==-1)
			numOfdaysPastSinceLastMonday=6;
		firstDayWeek.setTime(this.getTime() - numOfdaysPastSinceLastMonday*86400000);
	return firstDayWeek;
}
Date.prototype.getWeek = function() {
	var numOfdaysPastSinceLastMonday;
	var firstWeekDay;
	var onejan; //1er janvier
	var onejanDay; //jour du 1er janvier
	
	var finAnnee=new Date(this.getFullYear()-1, 11, 31);
	
	this.setTime(this.getFirstDayWeek());
	onejan = new Date(this.getFullYear(),0,1);
	onejanDay = onejan.getDay();
	
	switch (onejanDay) {
	 case 0: //Dimanche
		firstWeekDay = new Date(this.getFullYear(),0,2);
	 break;
	 case 1: //Lundi
		firstWeekDay = new Date(this.getFullYear(),0,1);
	 break;
	 case 2: //Mardi
		firstWeekDay = new Date(this.getFullYear()-1,11,31);
	 break;
	 case 3: //Mercredi
		firstWeekDay = new Date(this.getFullYear()-1,11,30);
	 break;
	 case 4: //Jeudi
		firstWeekDay = new Date(this.getFullYear()-1,11,29);
	 break;
	 case 5: //Vendredi
		firstWeekDay = new Date(this.getFullYear(),0,4);
	 break;
	 case 6: //Samedi
		firstWeekDay = new Date(this.getFullYear(),0,3);
	 break;
	}

	var week = Math.ceil(((this - firstWeekDay) / 86400000)/7)+1;
	if(finAnnee.getDay() < 3){
		week++;
	}
	return week;
}
function getDateRangeOfWeek(weekNo){
		var d1 = new Date();
		var weekNoToday = (d1.getWeek());
		var weeksInTheFuture = weekNo - weekNoToday;
		
		if((d1.getWeek()>weekNo)||(weeksInTheFuture<0)){
			var addTime=0;
		
			onejan = new Date(d1.getFullYear()+1,0,1);
			onejanDay = onejan.getDay();
			
			weekNo --;
			var msTime;
			switch (onejanDay) {
			 case 0: //Dimanche
				msTime =(weekNo*604800000+(86400000));
			 break;
			 case 1: //Lundi
				msTime =(weekNo*604800000);
			 break;
			 case 2: //Mardi
				msTime =(weekNo*604800000-(86400000));
			 break;
			 case 3: //Mercredi
				msTime =(weekNo*604800000-(86400000*2));
			 break;
			 case 4: //Jeudi
				msTime =(weekNo*604800000-(86400000*3));
			 break;
			 case 5: //Vendredi
				msTime =(weekNo*604800000+(86400000*3));
			 break;
			 case 6: //Samedi
				msTime =(weekNo*604800000+(86400000*2));
			 break;
			}
			
			var d2=new Date();
			d2.setTime(onejan.getTime() +msTime);
			return d2;
		}
		else{
			var time = d1.getFirstDayWeek().getTime() + (weeksInTheFuture+1)*604800000;
			d1.setTime(time);
			return d1;
		}

};


// secteur : jour (1 = mardi)
var date_jour = 
{
	1:1,
	2:3,
	3:3,
	4:3,
	5:2
};

function th_get_date(jour)
{
  var groupe = $('#th_groupe').text();
  var searchSection = new RegExp('Secteur ([0-9]+) - Zone ([0-9]+)');
  var result = searchSection.exec(groupe);
  var date =  new Date(jour.getTime() + (1000 * 60 * 60 * 24 * date_jour[result[1]]));
  var str_jour = new String(date.getDate());
  if(str_jour.length == 1) str_jour = "0"+str_jour;
  var str_mois = new String(date.getMonth()+1);
  if(str_mois.length == 1) str_mois = "0"+str_mois;
  var str_annee = new String(date.getFullYear());
  return str_jour+"/"+str_mois+"/"+str_annee;
}

function post_form(event)
{
  var searchSemaine =  new RegExp('emaine ([0-9]+) ');
  var textLien = $(this).text();
  var result = searchSemaine.exec(textLien);
  if(result.length < 2) return true;
  var jour = getDateRangeOfWeek(result[1]);
  var href = $(this).attr('href');

  var form = $(this).parents("table.det_detail").find("form");
  form.attr('action',href);

  form.find('input[name=reservationDate]').attr('value',th_get_date(jour));
  form.find('input[name=submit]').click();
  return false;
}

$('table.det_detail a.LinkIn').bind("click",post_form);

$('#cherche_date').click(function(){
	$('#availabilityBegin').val($("#datepicker").val());
	$('#availabilityEnd').val('');
	//$('form.catalog_search_form').submit();
});

var uriCourant = document.location.href;
var indiceRecherche = uriCourant.lastIndexOf('recherche.html');
var panierCourant;
var indiceSemaine;

var numSemaine = getWeekNumber($('#availabilityBegin').val());
if(numSemaine<10){
numSemaine="0"+numSemaine;
}
numSemaine='Semaine '+ numSemaine;
if(indiceRecherche!=-1){
	$('#availabilityBegin').val('');
	$('#main .col1 a.LinkIn b').each(function(){
	panierCourant=$(this).text();
	indiceSemaine=panierCourant.lastIndexOf(numSemaine);
	if(indiceSemaine<0){
		$(this).parent().parent().parent().parent().parent().parent().parent().parent().hide();
	}
	});
}

function getWeekNumber( maDate )
{
		if(maDate){
		day = maDate.substring(0,2);
		month = maDate.substring(3,5);
		year = maDate.substring(6,10);
		maDate=month+'/'+day+'/'+year;
		
        var d = new Date(maDate);
        var DoW = d.getDay();
        d.setDate(d.getDate() - (DoW + 6) % 7 + 3); // Nearest Thu
        var ms = d.valueOf(); // GMT
        d.setMonth(0);
        d.setDate(4); // Thu in Week 1
        return Math.round((ms - d.valueOf()) / (7 * 864e5)) + 1;
		}
};
$('.date_reservation').text($('.date_reservation').text().substring(3,($('.date_reservation').text().length-$('.date_reservation').text().lastIndexOf(' au '))));

// ajout de la fonction pour trouver la bonne durée de résa
function upDateSelect()
{
  var groupe = $('#th_groupe');
  var select = $('select[name=reservationUnits]');
		if (groupe[0] && select[0]) {
			groupe = groupe.text();
		  var searchSection = new RegExp('Secteur ([0-9]+) - Zone ([0-9]+)');
		  var result = searchSection.exec(groupe);
		  var goodValue = 'Secteur '+result[1]+' -> '+result[2];
 		  var tmpValue = '';
		  $('select[name=reservationUnits] option').each(function(i, option) {
		  	test = $(option).text();
		  	var searchSection = new RegExp('Secteur ([0-9]+)');
			  var result2 = searchSection.exec(test);
				if (result2 ) {
					if(result2[1] == result[1]) {
						tmpValue = $(option).attr('value');
					}
				}
				});
		  $('select[name=reservationUnits] option').each(function(i, option) {
		  	$(option).attr('value',tmpValue);
				});
		}
}
upDateSelect();
