var displayPrice = false;
var calendar = false;
var tariffe = new Array('I','R1','R2','F');

function zeroPad(num,count) {
	var numZeropad = num + '';
	while(numZeropad.length < count){
		numZeropad = "0" + numZeropad;
	}
	return numZeropad;
} 

function booking_select_tour(form) {

	// alert('selected day vale: ' + item.form.selected_day.value);
	// alert('invocazione booking_select_tour');
	// viene invocata al cambio del tour / museo
	
	var idlingua = form.idlingua.value;
	if(form.idmuseum.type=='hidden'){
		var idmuseum = encodeURIComponent(form.idmuseum.value);
	}else{
		var idmuseum = encodeURIComponent(form.idmuseum.options[form.idmuseum.selectedIndex].value);
		//imposto il museo selezionato
		form.selected_idmuseum.value = form.idmuseum.options[form.idmuseum.selectedIndex].value;
	}
	
	// carico le select box di data per il museo / tour
	$('#div_booking_calendar').load('/ajax/get_select_dates.php?idlingua='+idlingua+'&idmuseum='+idmuseum, function(){

		// menu select dei mesi
		var select_tour_month = document.getElementById('select_tour_month');
		// menu select dei giorni
		var select_tour_day = document.getElementById('select_tour_day');
	
		// se le date erano state selezionate provo a reimpostarle
		var found_month = false;
		if (form.selected_month.value) {
			for (i=0; i < select_tour_month.options.length; i++) {
				if (select_tour_month.options[i].value == form.selected_month.value) {
					// trovo il mese lo reimposto
					select_tour_month.selectedIndex = i;
					// cerco di reimpostare il giorno
					booking_select_month(select_tour_month);
					found_month = true;
					i = select_tour_month.options.length;
				}
			}
		}
		if (!found_month) {
		// se non sono riuscito a reimpostare la data significa che per quel tour
		// non è più disponibile, pertanto devo reimpostare la selezionata alla prima
		// data disponibile
			set_the_date(form);
		}		
	});
}

function booking_select_month(item) {
	// viene invocata al cambio del mese
	// alert('selected day vale: ' + item.form.selected_day.value);
	// alert('invocazione booking_select_month');

	var idmuseum = encodeURIComponent(item.form.selected_idmuseum.value);
	var month = encodeURIComponent(item.options[item.selectedIndex].value);
	
	// menu select dei giorni
	var select_tour_day = document.getElementById('select_tour_day');
	
	// recupero i giorni validi per il mese selezionato
	$.getJSON('/ajax/get_select_days.php?idmuseum=' + idmuseum + '&month=' + month, function(data) {
		
		// rimuovo tutte le opzioni
		while (select_tour_day.options.length > 0) {
			select_tour_day.remove(0);
		}
		
		// aggiungo le nuove opzioni provenienti dal json
		for (j=0; j < data.length; j++) {
		    var elOptNew = document.createElement('option');
			elOptNew.text = data[j];
			elOptNew.value = data[j];
			try	{
					select_tour_day.add(elOptNew,null); // standards compliant
				} catch(ex) {
					select_tour_day.add(elOptNew); // IE only
			}
			// seleziono l'opzione nel caso sia uguale a quella scelta precedentemente
			if (data[j] == parseInt(item.form.selected_day.value.replace(/^0/,''))) {
				select_tour_day.options[select_tour_day.options.length-1].selected = true;
			}
		}
		// operazione finale di selezione data (quando cambia il mese, la data scelta potrebbe non essere disponibile)
		booking_select_day(select_tour_day);
	});
	
}

function booking_select_day(item) {
	// viene invocata al cambio del giorno
	// effettuo tutte le operazioni necessario al cambio data
	set_the_date(item.form);
}

function toggleCalendar() {
	if(!calendar){
		$('#div_booking_calendarbox').fadeIn({opacity: 1}, 300);
		displayCalendar();
		calendar=true;
	} else {
		$('#div_booking_calendarbox').fadeOut({opacity: 0}, 300);
		calendar=false;
	}
}

function displayCalendar() {
	// chiama la box del calendarietto
	var idmuseum = encodeURIComponent(document.forms['booking'].selected_idmuseum.value);
	var idlingua = encodeURIComponent(document.forms['booking'].idlingua.value);
	var selected_date = encodeURIComponent(document.forms['booking'].selected_date.value);
	
	$('#div_booking_calendarbox').html('<table class="tablecalendarbox" border="0" cellspacing="3" cellpadding="2" width="180"><td width="100%" align="center"><img src="/images/ajax-loader2.gif" alt="'+LABEL_JS_LOADING+'..." style="margin: 50px auto"/></td></table>');
	
	$('#div_booking_calendarbox').load('/ajax/calendar.php?idlingua='+idlingua+'&idmuseum='+idmuseum+'&selected_date='+selected_date);

}

function set_the_date(form) {

	// imposto il mese selezionato
	form.selected_month.value = form.select_tour_month.options[form.select_tour_month.selectedIndex].value;

	// imposto il giorno selezionato
	form.selected_day.value = form.select_tour_day.options[form.select_tour_day.selectedIndex].value;

	// imposto la data completa selezionata
	form.selected_date.value = form.selected_month.value + '-' + form.selected_day.value;

	// parametri per le chiamate ajax
	var idmuseum = encodeURIComponent(form.selected_idmuseum.value);
	var idlingua = encodeURIComponent(form.idlingua.value);
	var selected_date = encodeURIComponent(form.selected_date.value);
	
	// qui devo anche:
	// 1 - ricaricare la box del calendario se aperta
	if (calendar) {
		displayCalendar();
	}
	
	// 2 - ricaricare il div delle persone e delle lingue
	// e poi tour time (per il momento non si fa qui, perché non c'è fascia oraria)
	$('#div_booking_people').load('/ajax/get_info_tour.php?idlingua='+idlingua+'&idmuseum='+idmuseum+'&selected_date='+selected_date, function(){
		// riseleziono interi, ridotti e free se presenti
		for (i=0; i < tariffe.length; i++) {
			var the_select = document.getElementById('select_people_' + tariffe[i]);
			if (the_select != null) {
				for (j = 0; j < the_select.options.length; j++) {
					if (form.elements['selected_people_'+ tariffe[i]].value==the_select.options[j].value) {
						the_select.selectedIndex = j;
						j = the_select.options.length;
					}
				}
			} else {
				// altrimenti azzero i memorizzati di quella tariffa (non sono piu' disponibili)
				form.elements['selected_people_'+ tariffe[i]].value = 0;
			}
		}
		// riseleziono la lingua, se disponibile
		if (form.select_language.type == 'select-one') {
			for (i = 0; i < form.select_language.options.length; i++) {
				if (form.selected_language.value==form.select_language.options[i].value) {
					form.select_language.selectedIndex = i;
					i = form.select_language.options.length;
				}
			}
		} else {
			// altrimenti azzero la selezionata perché non più disponibile
			form.selected_language.value = form.select_language.value;
		}
		// imposto il product id
		form.selected_idproduct.value = form.idproduct.value;
	});
	
	// 3 - cancellare il div del prezzo (perché deve essere ricalcolato)
	if (displayPrice) {
		$('#div_booking_price').fadeOut({opacity: 0}, 300);
		displayPrice = false;
	}
	
}

function callCalendar(when,closeCalendar,direction,which) {
	// viene invocata dal click sulle frecce della box del calendario
	// mese successivo / mese precedente
	// e dal click sulla data

	if (closeCalendar==null) {
		closeCalendar = false;
	}
	
	if (direction==null) {
		direction = 'up';
	}
	
	var mese = when.substr(0,7);
	var giorno = when.substr(8,2);
	var form = document.forms['booking'];
	
	var found_month = false;
	
	// salvo il giorno selezionato per poterlo riselezionare nella select (se possibile)
	form.selected_day.value = giorno;
	
	// vado a selezionare il mese
	while (!found_month) {
		for (i=0; i < form.select_tour_month.options.length; i++) {
			if (form.select_tour_month.options[i].value == mese) {
				// trovo il mese lo reimposto
				form.select_tour_month.selectedIndex = i;
				// cerco di reimpostare il giorno (ricaricando i giorni disponibili)
				booking_select_month(form.select_tour_month);
				found_month = true;
				i = form.select_tour_month.options.length;
			}
		}
		// se non ho trovato il mese vuol dire che non 
		// è disponibile e devo cercare il prossimo mese
		// nella direzione richiesta (successivo o precedente)
		if (!found_month) {
			aa = parseFloat(mese.substr(0,4));
			mm = parseFloat(mese.substr(5,2));
			if (direction == 'up') {
				mm += 1;
				if (mm == 13) { 
					mm = 1; 
					aa += 1;
				}
			} else {
				mm -= 1;
				if (mm == 0) {
					mm = 12;
					aa -= 1;
				}
			}
			mese = aa + '-' + zeroPad(mm,2);
		}
	}

	if (closeCalendar) {
		$('#div_booking_calendarbox').fadeOut(300);
		calendar=false;
	}

}

function booking_set_people(kindofticket) {
	// la funzione memorizza la qta del tipo di biglietto/ingresso selezionata
	var form = document.forms['booking'];
	
	var the_select = form.elements['select_people_'+kindofticket];
	form.elements['selected_people_'+kindofticket].value = the_select.options[the_select.selectedIndex].value;
	
	// alert(form.elements['selected_people_'+kindofticket].value);
	// devo cancellare il div del prezzo (perché deve essere ricalcolato)
	if (displayPrice) {
		$('#div_booking_price').fadeOut({opacity: 0}, 300);
		displayPrice = false;
	}	
}

function booking_set_language(item) {
	// la funzione memorizza la lingua selezionata
	var form = item.form;
	form.selected_language.value = item.options[item.selectedIndex].value;
}

function booking_get_price(how_was_calculated) {
	// la funzione calcola e visualizza il prezzo totale
	// per il prezzo suddiviso in dettagli si farà un popup in ajax
	var form = document.forms['booking'];	

	var idlingua = form.idlingua.value;
	var selected_idmuseum = encodeURIComponent(form.selected_idmuseum.value);
	var selected_date = encodeURIComponent(form.selected_date.value);
	var selected_people_I = form.selected_people_I.value;
	var selected_people_R1 = form.selected_people_R1.value;
	var selected_people_R2 = form.selected_people_R2.value;
	var selected_people_F = form.selected_people_F.value;
	var codice_riga = form.codice_riga.value;

	$('#div_booking_price').fadeIn({opacity: 0}, 300);
	$('#div_booking_price').html('<img src="/images/ajax-loader2.gif" alt="'+LABEL_JS_LOADING+'..." style="margin: 15px auto"/>');
	
	$('#div_booking_price').load('/ajax/get_price_total.php?idlingua='+idlingua+
								'&selected_idmuseum='+selected_idmuseum	+ 
								'&selected_date='+selected_date +
								'&selected_people_I='+selected_people_I +
								'&selected_people_R1='+selected_people_R1 +
								'&selected_people_R2='+selected_people_R2 +
								'&selected_people_F='+selected_people_F +
								'&codice_riga='+codice_riga+
								'&how_was_calculated='+how_was_calculated,
								function(){
									displayPrice = true;
								})

}

function remove_cart(codice_riga){
	document.getElementById('codice_riga').value = codice_riga;
	if(confirm(LABEL_JS_REMOVE_CART)){
		document.forms['remove_row'].submit();
	}
}

function popup_price_details(){
	// apre il popup con il dettaglio
	// delle voci per il calcolo del prezzo
	var form = document.forms['booking'];
	
	var idlingua = form.idlingua.value;
	var selected_idmuseum = encodeURIComponent(form.selected_idmuseum.value);
	var selected_date = encodeURIComponent(form.selected_date.value);
	var selected_people_I = form.selected_people_I.value;
	var selected_people_R1 = form.selected_people_R1.value;
	var selected_people_R2 = form.selected_people_R2.value;
	var selected_people_F = form.selected_people_F.value;	

	$('#popup').load('/ajax/price_details.php?idlingua='+idlingua+
				'&selected_idmuseum='+selected_idmuseum	+ 
				'&selected_date='+selected_date +
				'&selected_people_I='+selected_people_I +
				'&selected_people_R1='+selected_people_R1 +
				'&selected_people_R2='+selected_people_R2 +
				'&selected_people_F='+selected_people_F,
				function(){
					$('#alertpopup').click();
				});
}


