// JavaScript Document

function isInt(x) {
	var y=parseInt(x);
	if (isNaN(y)) return false;
	return x==y && x.toString()==y.toString();
}

function isset(variable){
	if (typeof(window[variable]) != "undefined") return true;
	else return false;
}

//jQueryj = jQuery.noConflict();

jQuery(function(){
	// - - - - - - - - - - - - - - - -
	/* CALENDAR */
	// - - - - - - - - - - - - - - - -
	
	/* Swiss-French initialisation for the jQuery UI date picker plugin. */
	/* Written Martin Voelkle (martin.voelkle@e-tc.ch). */
	jQuery.datepicker.regional['fr-CH'] = {
		closeText: 'Fermer',
		prevText: '&#x3c;',
		nextText: '&#x3e;',
		currentText: 'Courant',
		monthNames: ['Janvier','Février','Mars','Avril','Mai','Juin',
		'Juillet','Août','Septembre','Octobre','Novembre','Décembre'],
		monthNamesShort: ['Jan','Fév','Mar','Avr','Mai','Jun',
		'Jul','Aoû','Sep','Oct','Nov','Déc'],
		dayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'],
		dayNamesShort: ['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'],
		dayNamesMin: ['Di','Lu','Ma','Me','Je','Ve','Sa'],
		weekHeader: 'Sm',
		dateFormat: 'dd.mm.yy',
		firstDay: 1,
		isRTL: false,
		showMonthAfterYear: false,
		yearSuffix: ''
	};
	jQuery.datepicker.setDefaults(jQuery.datepicker.regional['fr-CH']);

	// jours chômés
	var disabledDays = [
		"2.12.2010",
		"5.12.2010",
		"3.1.2011",
		"5.1.2011"
	];
	
	/* utility functions */
	function closingDate(date) {
		var dateSelect = date.getDate()+"."+(date.getMonth()+1)+"."+date.getFullYear();
		var dateCurrent = new Date();
		var dateTomorow = (dateCurrent.getDate()+1)+"."+(dateCurrent.getMonth()+1)+"."+dateCurrent.getFullYear();
		
		// désactivation si jour actuel ou passé
		if(dateCurrent > date){
			return [false];
		}
		
		// désactivation d'après le tableau disabledDays;
		for (i=0; i<disabledDays.length; i++) {
			if(jQuery.inArray(dateSelect,disabledDays) != -1) {
				//console.log('bad:  ' + (m+1) + '-' + d + '-' + y + ' / ' + disabledDays[i]);
				return [false];
			}
		}
		
		return [true];
	}
	
	function disabledDate(date) {
		var noWeekend;
		return noWeekend[0] ? closingDate(date) : noWeekend;
	}

	/* options Datepicker */
	jQuery.datepicker.setDefaults({
		dateFormat: 'dd.mm.yy',
		duration: 'fast',
		gotoCurrent: true,
		constrainInput: true,
		beforeShowDay: closingDate
	});

	jQuery(".setDate").datepicker()
	
	// - - - - - - - - - - - - - - - -
	/* MASQUAGE DES HOTELS VIDES */
	// - - - - - - - - - - - - - - - -
	
	jQuery('.hotel li').each(function(){
		var roomNb = jQuery(this).find('select[name=roomType] option').length;
		
		// si l'hotel n'a pas de chambre
		if(roomNb < 1){
			// si la région n'aura plus d'hotel
			if(jQuery(this).parent().find('li').length <= 1){
				// s'il n'y a plus aucun hôtel
				if(jQuery(this).parent().parent().parent().find('li').length <= 2){
					jQuery('form#booking').before('<div class="error">Aucun hotel ne correspond &agrave; ces crit&egrave;res.</div>');
					jQuery('form#booking').remove();
				}
				// s'il reste des hotels
				else jQuery(this).parent().parent().remove();
			}
			// s'il reste des hotels
			else jQuery(this).remove();
		}
	});
	
	// - - - - - - - - - - - - - - - -
	/* VALIDATION FORMULAIRE */
	// - - - - - - - - - - - - - - - -
	
	jQuery('form#search').submit(function(){
		jQuery('input').removeClass('error');
		if(jQuery('div.error').length > 0) jQuery('div.error').html('');
		else jQuery('form#search input[type=submit]').before('<div class="error"></div>');
		var result = true;
		
		var testEntryDate = jQuery('input[name=entry]').attr('value').split('.');
		if(testEntryDate.length != 3){
			jQuery('input[name=entry]').addClass('error');
			jQuery('div.error').append("La date d'entr&eacute;e doit &ecirc;tre au format DD.MM.YYYY<br />");
			result = false;
		}
		
		if(jQuery('select[name=days]').attr('value').length > 0 && !isInt(jQuery('select[name=days]').attr('value'))){
			jQuery('select[name=days]').addClass('error');
			jQuery('div.error').append("Veuillez spécifier un nombre de jours pour la durer de votre séjour<br />");
			result = false;
		}
		
		if(jQuery('input[name=adults]').attr('value').length > 0 && !isInt(jQuery('input[name=adults]').attr('value'))){
			jQuery('input[name=adults]').addClass('error');
			jQuery('div.error').append("Le nombre d'adultes doit être un nombre<br />");
			result = false;
		}
		if(jQuery('input[name=children]').attr('value').length > 0 && !isInt(jQuery('input[name=children]').attr('value'))){
			jQuery('input[name=children]').addClass('error');
			jQuery('div.error').append("Le nombre d'enfants doit être un nombre<br />");
			result = false;
		}
		
		if(jQuery('input[name=budget]').attr('value').length > 0 && !isInt(jQuery('input[name=budget]').attr('value'))){
			jQuery('input[name=budget]').addClass('error');
			jQuery('div.error').append("Le prix max doit être un nombre, sans virgule ni devise<br />");
			result = false;
		}
		return result;
	});
	
	
	jQuery('form#booking').submit(function(){
		jQuery('input').removeClass('error');
		if(jQuery('div.error').length > 0) jQuery('div.error').html('');
		else jQuery('form#booking input[type=submit]').before('<div class="error"></div>');
		var result = true;
		
		var testEntryDate = jQuery('#booking [name=entry]').attr('value').split('.');
		if(testEntryDate.length != 3){
			jQuery('#booking input[name=entry]').addClass('error');
			jQuery('div.error').append("La date d'entr&eacute;e doit &ecirc;tre au format DD.MM.YYYY<br />");
			result = false;
		}
		if(jQuery('#booking [name=days]').attr('value').length > 0 && !isInt(jQuery('#booking [name=days]').attr('value'))){
			jQuery('#booking [name=days]').addClass('error');
			jQuery('div.error').append("Veuillez spécifier un nombre de jours pour la durer de votre séjour<br />");
			result = false;
		}
		if(jQuery('#booking [name=adults]').attr('value') < 1 || !isInt(jQuery('#booking [name=adults]').attr('value'))){
			jQuery('#booking [name=adults]').addClass('error');
			jQuery('div.error').append("Le nombre d'adultes doit être un nombre<br />");
			result = false;
		}
		if(jQuery('#booking [name=children]').attr('value') > 0 && !isInt(jQuery('#booking [name=children]').attr('value'))){
			jQuery('#booking [name=children]').addClass('error');
			jQuery('div.error').append("Le nombre d'enfants doit être un nombre<br />");
			result = false;
		}
		if(jQuery('#booking [name=hotelChoice]').attr('value').length <= 5){
			jQuery('#booking [name=hotelChoice]').addClass('error');
			jQuery('div.error').append("Un hôtel doit être sélectionné<br />");
			result = false;
		}
		if(jQuery('#booking [name=roomChoice]').attr('value').length <= 5){
			jQuery('#booking [name=roomChoice]').addClass('error');
			jQuery('div.error').append("Un type de chambre doit être sélectionné. Peut-être qu'aucune chambre n'est disponible pour votre recherche. Essayez de changer la date de d&eacute;part ou le nombre de jours<br />");
			result = false;
		}
		if(jQuery('#booking [name=custName]').attr('value').length <= 2){
			jQuery('#booking [name=custName]').addClass('error');
			jQuery('div.error').append("Le nom doit être renseigné<br />");
			result = false;
		}
		if(jQuery('#booking [name=custFirstname]').attr('value').length <= 2){
			jQuery('#booking [name=custFirstname]').addClass('error');
			jQuery('div.error').append("Le prénom doit être renseigné<br />");
			result = false;
		}
		if(jQuery('#booking [name=custAdd]').attr('value').length <= 3){
			jQuery('#booking [name=custAdd]').addClass('error');
			jQuery('div.error').append("L'adresse postale doit être complétée<br />");
			result = false;
		}
		if(jQuery('#booking [name=custZip]').attr('value').length < 4){
			jQuery('#booking [name=custZip]').addClass('error');
			jQuery('div.error').append("Le numéro postal doit être complété<br />");
			result = false;
		}
		if(jQuery('#booking [name=custEmail]').attr('value').length <= 6){
			jQuery('#booking [name=custEmail]').addClass('error');
			jQuery('div.error').append("Une adresse email valide doit être renseignée<br />");
			result = false;
		}
		return result;
	});
	
	jQuery('.setDate').change(function() {
		element = jQuery(this).attr('value').split('.');
		var dateSelect = new Date();
		var dateCurrent = new Date();
		var error = "";
		dateSelect.setDate(element[0]);
		dateSelect.setMonth(element[1]-1);
		dateSelect.setFullYear(element[2]);
		
		// verification que le jour choisi est valide
		var checkDate = closingDate(dateSelect);
		if(checkDate == "false") {
			//alert('La date choisie n\'est pas valide. Nos cuisines sont fermées le week-end, les jours fériés et chômés. \n\nNous avons choisi pour vous la date possible suivante.');
			
			jQuery('#mr-center').after('<span class="lbCall" name="checkDate"></span>');
			chargeContent(jQuery('.lbCall').attr("name"));
			
			nextOpenDay = dateSelect;
			for(b=0;b<100;b++){
				dateSelect.setDate(element[0]++);
				
				if(closingDate(dateSelect) == "true"){
					var validDate = dateSelect.getDate()+"."+(dateSelect.getMonth()+1)+"."+dateSelect.getFullYear();
					jQuery(this).attr('value',validDate);
					break;
				}
			}
		}
	});
	
	jQuery('.setHotel').click(function(){
		var target = jQuery(this).attr('target');
		jQuery('.hotel > li').removeClass("hotelSelect");
		jQuery('#'+target).addClass("hotelSelect");
		jQuery('input[name=hotelChoice]').attr('value',jQuery('#'+target+' span.title').html());
		jQuery('input[name=roomChoice]').attr('value',jQuery('#'+target+' select[name=roomType]').val());
		jQuery('input[name=price]').attr('value',jQuery('#'+target+' select[name=roomType]').val());
		//jQuery('html').scrollTop(jQuery('html').innerHeight());
		self.location.hash="#lastStand";
	});
	
	
	// dans une réservation directe sur un hotel, suppression des chambres ne correspondant pas à la date ou au séjour
	function selectRoom(){
		var selectDays = jQuery('#booking .setDays').val();
		var selectDate = new Date();
			selectDate.setDate(jQuery('#booking .setDate').val().substring(0,2));
			selectDate.setMonth(jQuery('#booking .setDate').val().substring(3,5)-1);
			selectDate.setYear(jQuery('#booking .setDate').val().substring(6,10));
		
		jQuery('.alertRoom').empty();
		jQuery('select[name=roomChoice]').html("");
		jQuery('select[name=roomChoice]').show();
		for(rl=0;rl<roomList.length;rl++){
			var startPeriod = new Date();
			var roomSP = roomList[rl][2]+" ";
			startPeriod.setDate(roomSP.substring(0,2));
			startPeriod.setMonth(roomSP.substring(3,5));
			startPeriod.setYear(roomSP.substring(6,10));
			
			var endPeriod = new Date();
			var roomEP = roomList[rl][3]+" ";
			endPeriod.setDate(roomEP.substring(0,2));
			endPeriod.setMonth(roomEP.substring(3,5));
			endPeriod.setYear(roomEP.substring(6,10));
			
			if(startPeriod.getTime() <= selectDate.getTime() && endPeriod.getTime() > selectDate.getTime() && roomList[rl][1] == selectDays){
				jQuery('select[name=roomChoice]').html('<option value="'+roomList[rl][0]+' '+roomList[rl][1]+' nuits" class="'+roomList[rl][1]+' '+roomList[rl][2]+' '+roomList[rl][3]+'">'+roomList[rl][0]+': '+roomList[rl][4]+' CHF</option>\n\r');
			}
		}
		
		if(jQuery('select[name=roomChoice] option').length < 1){
			jQuery('select[name=roomChoice]').html('<option value="">aucune</option>').hide();
			jQuery('select[name=roomChoice]').after('<span class="alertRoom">aucune chambre n\'est disponible avec ces paramètres, changer la date de départ et/ou le nombre de jours</span>');
		}
	}
	
	selectRoom();
	
	jQuery('#booking .setDate').change(function() {
		selectRoom();
	});
	
	jQuery('#booking .setDays').change(function() {
		selectRoom();
	});
});
