var se_calendar = {"start": false, "end": false};
var se_boxcalendar = false;

function se_init() {

	var se_interface = document.getElementById('se_interface');
	if (se_interface !== null) {

		if ($.cookie('se_startdate')) {
			var startdate = $.cookie('se_startdate');
		} else {
			var sd = new Date(); var syy = sd.getFullYear();var smm = sd.getMonth() + 1;var sdd = sd.getDate();
			var startdate =  syy + '-' + zeroPad(smm,2) + '-' + zeroPad(sdd,2);
		}
		if ($.cookie('se_enddate')) {
			var enddate = $.cookie('se_enddate');
		} else {
			var sd = new Date();
			var ed = new Date(sd.getTime()+1000*3600*24*7);var eyy = ed.getFullYear();var emm = ed.getMonth() + 1;var edd = ed.getDate();
			var enddate = eyy + '-' + zeroPad(emm,2) + '-' + zeroPad(edd,2);
		}

		var startmonth = startdate.substr(0,7);
		var sdd = startdate.substr(8,2).replace(/^0/,'');
		var the_month = document.se_interface.starting_month;
		var the_day = document.se_interface.starting_day;
		
		for (i=0; i < the_month.length; i++) {
			if (the_month.options[i].value==startmonth) {
				the_month.selectedIndex = i;
				se_changeMonth(the_month,'start');
				i = the_month.length;
			}
		}
		
		for (i=0; i < the_day.length; i++) {
			if (the_day.options[i].value==sdd) {
				the_day.selectedIndex = i;
				i = the_day.length;
			}
		}
		
		var endmonth = enddate.substr(0,7);
		var edd = enddate.substr(8,2).replace(/^0/,'');
		var the_month = document.se_interface.ending_month;
		var the_day = document.se_interface.ending_day;
		
		for (i=0; i < the_month.length; i++) {
			if (the_month.options[i].value==endmonth) {
				the_month.selectedIndex = i;
				se_changeMonth(the_month,'end');
				i = the_month.length;
			}
		}
		
		for (i=0; i < the_day.length; i++) {
			if (the_day.options[i].value==edd) {
				the_day.selectedIndex = i;
				i = the_day.length;
			}
		}

		document.se_interface.selected_start_date.value = startdate;
		document.se_interface.selected_end_date.value = enddate;
	}
		
}

function se_availDays(month) {
	giornimese = Array(0,31,28,31,30,31,30,31,31,30,31,30,31);
	anno = month.split("-")[0];
	mese = parseInt(month.split("-")[1].replace(/^0/,''));
	if ((anno % 4 == 0 && anno % 100 != 0) || anno % 400 == 0) {
		giornimese[2] = 29;
	}
	return giornimese[mese];
}


function se_changeMonth(item,whichdate) {
	// menu select dei giorni
	var select_days = document.getElementById(whichdate+'ing_day');
	var selected_index = item.selectedIndex;
	var month = item.options[selected_index].value;
	var avail_days = se_availDays(month);
	var starting_day = 1;
	
	var selected_day = parseInt(item.form.elements['selected_'+whichdate+'_date'].value.split("-")[2].replace(/^0/,''));
	
	if (selected_index == 0) {
		var d = new Date();
		var starting_day = d.getDate();
	}
	
	// rimuovo tutte le opzioni
	while (select_days.options.length > 0) {
		select_days.remove(0);
	}
	
	// aggiungo le nuove opzioni
	for (j=starting_day; j <= avail_days; j++) {
		var elOptNew = document.createElement('option');
		elOptNew.text = j;
		elOptNew.value = j;
				
		try	{
			select_days.add(elOptNew,null); // standards compliant
		} catch(ex) {
			select_days.add(elOptNew); // IE only
		}
		// seleziono l'opzione nel caso sia uguale a quella scelta precedentemente
		if (j == selected_day) {
			select_days.options[select_days.options.length-1].selected = true;
		}
	}
	
	// aggiungere codice per settare l'altra select (start/end, end/start)
	
	// chiamare il set_date
	se_set_the_date(whichdate);
}

function se_changeDay(item,whichdate) {
	se_set_the_date(whichdate);
}


function set_searchengine_city(item) {
	if (this.selectedIndex > 0) {
		document.searchengine.starting_city.value = this.options[this.selectedIndex].value;
	} else {
		document.searchengine.starting_city.value = '';
	}
}

function set_searchengine_interest(item) {
	if (this.selectedIndex > 0) {
		document.searchengine.interest.value = this.options[this.selectedIndex].value;
	} else {
		document.searchengine.interest.value = '';
	}
}


function seToggleCalendar(whichdate) {
	if (eval('se_calendar.'+whichdate)) {
		if (se_boxcalendar) {
			$('#div_se_calendarbox').fadeOut({opacity: 0}, 300);
			se_boxcalendar = false;
		}
		eval('se_calendar.'+whichdate+'=false');
	} else {
		var pos = $('#se_calendar_'+whichdate).position();
		var y = pos.top + 23;
		$('#div_se_calendarbox').css('top',y+'px');
		if (!se_boxcalendar) {
			$('#div_se_calendarbox').fadeIn({opacity: 1}, 300);
			se_boxcalendar = true;
		} else {
			otherdate = (whichdate=='start'?'end':'start');
			eval('se_calendar.'+otherdate+'=false');
		}
		seDisplayCalendar(whichdate);
		eval('se_calendar.'+whichdate+'=true');
	}
}

function seDisplayCalendar(whichdate) {
	var selected_date = encodeURIComponent(document.se_interface.elements['selected_'+whichdate+'_date'].value);
	// chiama la box del calendarietto
	$('#div_se_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="Loading..." style="margin: 50px auto"/></td></table>');
	$('#div_se_calendarbox').load('/ajax/calendar.php?idlingua='+idlingua+'&selected_date='+selected_date+'&which='+whichdate);
}

function se_set_the_date(whichdate) {
	var the_month = document.se_interface.elements[whichdate+'ing_month'];
	var the_day = document.se_interface.elements[whichdate+'ing_day'];
	var the_date = the_month.options[the_month.selectedIndex].value + '-' + zeroPad(the_day.options[the_day.selectedIndex].value,2);
	
	var checkbox_dates = document.se_interface.specific_dates;
	
	document.se_interface.elements['selected_'+whichdate+'_date'].value = the_date;
	
	if (eval('se_calendar.'+whichdate) && se_boxcalendar) {
		seDisplayCalendar(whichdate);
	}

	if (!checkbox_dates.checked) {
		checkbox_dates.checked = true;
		set_searchengine_dates(checkbox_dates);
	}
	
}

function se_callCalendar(when,closeCalendar,direction,which) {
	
	if (closeCalendar==null) {
		closeCalendar = false;
	}

	var mese = when.substr(0,7);
	var giorno = when.substr(8,2);
	var form = document.se_interface;
	var select_months = form.elements[which+'ing_month'];
	
	form.elements['selected_'+which+'_date'].value = mese + '-' + giorno;
	
	// vado a selezionare il mese
	for (i=0; i < select_months.options.length; i++) {
		if (select_months.options[i].value == mese) {
			// trovo il mese lo reimposto
			select_months.selectedIndex = i;
			// ricarico i giorni disponibili
			se_changeMonth(select_months,which)
			i = select_months.options.length;
		}
	}

	if (closeCalendar) {
		$('#div_se_calendarbox').fadeOut(300);
		eval('se_calendar.start=false');
		eval('se_calendar.end=false');
		se_boxcalendar=false;
	}
}

function set_searchengine_dates(item) {
	if (item.checked) {
		document.searchengine.datada.value = document.se_interface.selected_start_date.value;
		document.searchengine.dataa.value = document.se_interface.selected_end_date.value;
	} else {
		document.searchengine.datada.value = '';
		document.searchengine.dataa.value = '';
		/*
		$.cookie('se_startdate','',{path: '/', expires: 0});
		$.cookie('se_enddate','',{path: '/', expires: 0});
		*/
	}
}

function se_makesearch() {

	if (document.se_interface.specific_dates.checked) {
		$.cookie('se_startdate',document.se_interface.selected_start_date.value,{path: '/', expires: 7});
		$.cookie('se_enddate',document.se_interface.selected_end_date.value,{path: '/', expires: 7});
		document.searchengine.datada.value = document.se_interface.selected_start_date.value;
		document.searchengine.dataa.value = document.se_interface.selected_end_date.value;
	} 
	
	if (document.se_interface.starting_city.selectedIndex > 0) {
		document.searchengine.starting_city.value = document.se_interface.starting_city.options[document.se_interface.starting_city.selectedIndex].value;
	}

	if (document.se_interface.interest.selectedIndex > 0) {
		document.searchengine.interest.value = document.se_interface.interest.options[document.se_interface.interest.selectedIndex].value;
	}

	if (document.searchengine.datada.value == '' &&
		document.searchengine.dataa.value == '' &&
		document.searchengine.interest.value == '' &&
		document.searchengine.starting_city.value == '') {
		alert(LABEL_JS_PROVIDE_ONE_PARAMETER);
		return false;
	}
	if (document.searchengine.datada.value > document.searchengine.dataa.value) {
		alert(LABEL_JS_ERROR_DATES);
		return false;
	}
		
	document.searchengine.submit();
}

$(document).ready(function() {
	se_init();
})

