var initCallbacks = new Array();
var verbose;
var firstLoad = 0;
var updateDropOpenTime = 1;

$(document).ready(function() {
	// IE Fix for select dropdowns
	$(".ui-dialog").hover(function() {
		$("select").css({ visibility: "hidden" });
	}, function() {
    	$("select").css({ visibility: "visible" });
	});


	for(var i = 0; i < initCallbacks.length; i++) {
		initCallbacks[i]();
	}

	});

function isIE(version) {
	if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
		var ieversion=new Number(RegExp.$1) // capture x.x portion and store as a number

		if (ieversion == version) {
			return true;
		}
	}
	return false;
}

function sessionExpireCheck() {
	$.getJSON('/sessioncheck.php', function(data) {
		if (data == 1) {
			alert('Session has expired!');
		} else {
			setTimeout('sessionExpireCheck()', 10000);
		}
	});
}

function addInitCallback(callback) {
	initCallbacks.push(callback);
}

function initSearchBox() {
	$('#pickup_country').change( changePickupCountry );
	$('#pickup_city').change( changePickupCity );
	$('#pickup_location').change( changePickupLocation );
	$('#dropoff_country').change( changeDropoffCountry );
	$('#dropoff_city').change( changeDropoffCity );
	$('#dropoff_location').change( changeDropoffLocation );
	$('#pickup_year').change( changePickupYear );
	$('#pickup_month').change( changePickupMonth );
	$('#pickup_day').change( changePickupDay );
	$('#pickup_hour').change( changePickupHour );
	//$('#pickup_minute').change( changePickupMinute );
	$('#dropoff_year').change( changeDropoffYear );
	$('#dropoff_month').change( changeDropoffMonth );
	$('#dropoff_day').change( changeDropoffDay );
	$('#dropoff_hour').change( changeDropoffHour );
	//$('#dropoff_minute').change( changeDropoffMinute );

	initSearchBoxSelectValues();
}

function initSearchBoxSelectValues () {
	// Select User values for dropdown menus on page load
	setOptionSelected(document.getElementById('pickup_country').options, pickupCountry);
	setOptionSelected(document.getElementById('pickup_city').options, pickupCity);
	setOptionSelected(document.getElementById('pickup_location').options, pickupLocation);
	setOptionSelected(document.getElementById('dropoff_country').options, dropoffCountry);
	setOptionSelected(document.getElementById('dropoff_city').options, dropoffCity);
	setOptionSelected(document.getElementById('dropoff_location').options, dropoffLocation);
	//setOptionSelected(document.getElementById('pickup_year').options, pickupYear);

	setOptionSelectedArray(document.getElementById('pickup_hour').options, Array(pickupHour, 12));
	setOptionSelectedArray(document.getElementById('dropoff_hour').options, Array(dropoffHour, 12));
	

	setPickupCalendar();
	setDropoffCalendar();
	//document.getElementById('f-calendar-field-pickup_date_calendar').value = pickupYear + '-' + pickupMonth + '-' + pickupDay;
	//document.getElementById('f-calendar-field-dropoff_date_calendar').value = dropoffYear + '-' + dropoffMonth + '-' + dropoffDay;

	firstLoad = 1;
	changePickupYear();
	firstLoad = 0;
	updatePickupHourDropdown();
	updateDropoffHourDropdown();
}

function setPickupCalendar() {
	$("#f-calendar-field-pickup_date_calendar").datepicker('destroy');
	var defaultDate = (new Date(pickupYear, pickupMonth - 1, pickupDay));
	$(function() {
		$("#f-calendar-field-pickup_date_calendar").datepicker({
			minDate:new Date(), 
			defaultDate:defaultDate, 
			maxDate: '+1Y', 
			numberOfMonths: 2, 
			showButtonPanel: true,
			dayNames : [	"Dom",
					"Lun",
							"Mar",
							"Mer",
							"Gio",
							"Ven",
							"Sab",
							"Dom" ],
			monthNames : [	"Gen",
					"Feb",
							"Mar",
							"Apr",
							"Mag",
							"Giu",
							"Lug",
							"Ago",
							"Set",
							"Ott",
							"Nov",
							"Dic" ],
			dayNamesMin: [	"Dom",
							"Lun",
							"Mar",
							"Mer",
							"Gio",
							"Ven",
							"Sab",],
			closeText: "Chiudi la ricerca",
			onClose: function(dateText, inst) {
			 	changePickupDate();
				$("#f-calendar-field-pickup_date_calendar").val('');
				setPickupCalendar();
			}
			});
		return;
		});
}

function setDropoffCalendar() {
	$("#f-calendar-field-dropoff_date_calendar").datepicker('destroy');
	var defaultDate = (new Date(dropoffYear, dropoffMonth - 1, dropoffDay));
	$(function() {
		$("#f-calendar-field-dropoff_date_calendar").datepicker({
			minDate:new Date(), 
			defaultDate:defaultDate, 
			maxDate: '+1Y', 
			numberOfMonths: 2, 
			showButtonPanel: true,
			dayNames : [	"Dom",
					"Lun",
							"Mar",
							"Mer",
							"Gio",
							"Ven",
							"Sab",
							"Dom" ],
			monthNames : [	"Gen",
					"Feb",
							"Mar",
							"Apr",
							"Mag",
							"Giu",
							"Lug",
							"Ago",
							"Set",
							"Ott",
							"Nov",
							"Dic" ],
			dayNamesMin: [	"Dom",
							"Lun",
							"Mar",
							"Mer",
							"Gio",
							"Ven",
							"Sab",],
			closeText: "Chiudi la ricerca",
			onClose: function(dateText, inst) {
			 	changeDropoffDate();
				$("#f-calendar-field-dropoff_date_calendar").val('');
				setDropoffCalendar();
			}
			});
		return;
		});
}

function initInsertDate() {
	$('#birth_year').change ( updateDayDropoff );
	$('#birth_month').change ( updateDayDropoff );
}


function updateDayDropoff() {
	var options = document.getElementById('birth_day').options;

	var birthDay = parseInt($('#birth_day').val());
	var birthYear = parseInt($('#birth_year').val());
	var birthMonth = parseInt($('#birth_month').val());

	options.length = 0;
	if (birthYear == 0 || birthMonth == 0) {
	} else {
		var firstDay = 1;
		var lastDay = monthLength(birthMonth, birthYear);

		for (var i = firstDay; i <= lastDay; i++) {
			options.add(new Option(i + '.', i));
		}
	}

	setOptionSelected (options, birthDay);
}


// month in [1,12]
// year any integer
// return number of days in the month
function monthLength(month, year) {
	if (month < 1 || month > 12) {
		consolelog("Invalid monthLenght parameter month: " + month);
		return 0;
	}
	var lastDay = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)[month-1];
	if (month == 2 && year % 4 == 0) lastDay++; // Y2100 bug

	return lastDay;
}


/* Usage:
		var prevValue = $('#xxx').val();
		var options = document.getElementById('xxx').options;
		...
		update list of options
		...
 		setOptionSelected (options, prevValue, defaultValue);
// Try to select previously selected option value
*/
function setOptionSelected (options, selected_value) {
	//consolelog("searching for " + selected_value);
	//if (isNaN(selected_value)) return;
	for (var i = 0; i < options.length; i++) {
		if (verbose) consolelog("opt " + options[i].value + ' ' + selected_value);
		if (options[i].value == selected_value) {
			options[i].selected = true;
			return;
		}
	}
}

// Select first possible nonzero value in the array
function setOptionSelectedArray (options, selected_value_array) {
	//consolelog("searching for " + selected_value);
	//verbose = 1;
	for (var j = 0; j < selected_value_array.length; j++) {
		var selected_value = selected_value_array[j];
		if (verbose) consolelog("try option " + selected_value);
		//if (isNaN(selected_value)) continue;
		//if (selected_value == 0) continue;
		for (var i = 0; i < options.length; i++) {
			if (verbose) consolelog("opt " + options[i].value + ' ' + selected_value);
			if (options[i].value == selected_value) {
				options[i].selected = true;
				return;
			}
		}
	}
	//verbose = 0;
}


function toInteger (id) {
	//var y = parseInt(document.getElementById(id).value, 10);
	//document.getElementById(id).value = (isNaN(y) || y<=0 ? "" : y);
	var y = parseInt(id.value, 10);
	id.value = (isNaN(y) || y<=0 ? "" : y);
}


/*
 * Update Pickup Place
 */

function updatePickupCountryDropdown() {
	var options = document.getElementById('pickup_country').options;

	setOptionSelected(options, pickupCountry);
	changePickupCountry();
}

function changePickupCountry() {
	pickupCountry = parseInt($('#pickup_country').val());
	updatePickupCityDropdown();
}

function updatePickupCityDropdown() {
	var options = document.getElementById('pickup_city').options;

	if(pickupCountry == 0) {
		options.length = 1;
		changePickupCity();
		return;
	}
	$.getJSON('/' + LANG + '/process/cityrq/' + pickupCountry, function(data) {
		options.length = 1;
		for(var i = 0; i < data.length; i++) {
			options.add(new Option(data[i]['name'], data[i]['id']));
		}
		setOptionSelected(options, pickupCity);
		changePickupCity();
	});
}

function changePickupCity () {
	pickupCity = parseInt($('#pickup_city').val());
	updatePickupLocationDropdown();
}

function updatePickupLocationDropdown() {
	var options = document.getElementById('pickup_location').options;
	if(pickupCity == 0) {
		options.length = 1;
		changePickupLocation();
		return;
	}
	$.getJSON('/' + LANG + '/process/locationrq/' + pickupCity, function(data) {
		options.length = 1;
		for(var i = 0; i < data.length; i++) {
			options.add(new Option(data[i]['name'], data[i]['id']));
		}
		setOptionSelected(options, pickupLocation);
		changePickupLocation();
	});
}

function changePickupLocation () {
	pickupLocation = parseInt($('#pickup_location').val());

	updatePickupHourDropdown();
	updateDropoffCountryDropdown();
};

/*
 * Update Dropoff Place
 */


function updateDropoffCountryDropdown() {
	var options = document.getElementById('dropoff_country').options;

	options.length = 1;
	if (pickupLocation == 0) {
		changeDropoffCountry();
		return;
	}
	$.getJSON('/' + LANG + '/process/dropcountryrq/' + pickupLocation, function(data) {
		for(var i = 0; i < data.length; i++) {
			options.add(new Option(data[i]['name'], data[i]['id']));
		}
		setOptionSelectedArray(options, new Array(dropoffCountry == 0 ? -1 : dropoffCountry, pickupCountry));
		changeDropoffCountry();
	});
}

function changeDropoffCountry () {
	dropoffCountry = parseInt($('#dropoff_country').val());
	updateDropoffCityDropdown();
}

function updateDropoffCityDropdown() {
	var options = document.getElementById('dropoff_city').options;

	options.length = 1;
	if (pickupLocation == 0 || dropoffCountry == 0) {
		changeDropoffCity();
		return;
	}
	$.getJSON('/' + LANG + '/process/dropcityrq/' + pickupLocation + '/' + dropoffCountry, function(data) {
		for(var i = 0; i < data.length; i++) {
			options.add(new Option(data[i]['name'], data[i]['id']));
		}
		setOptionSelectedArray(options, new Array(dropoffCity == 0 ? -1 : dropoffCity, pickupCity));
		changeDropoffCity();
	});
}

function changeDropoffCity() {
	dropoffCity = parseInt($('#dropoff_city').val());
	updateDropoffLocationDropdown();
}

function updateDropoffLocationDropdown() {
	var options = document.getElementById('dropoff_location').options;

	options.length = 1;
	if (pickupLocation == 0 || dropoffCity == 0) {
		changeDropoffLocation();
		return;
	}
	$.getJSON('/' + LANG + '/process/droplocationrq/' + pickupLocation + '/' + dropoffCity, function(data) {
		for(var i = 0; i < data.length; i++) {
			options.add(new Option(data[i]['name'], data[i]['id']));
		}
		setOptionSelectedArray(options, new Array(dropoffLocation == 0 ? -1 : dropoffCity, pickupLocation));
		changeDropoffLocation();
	});
}

function changeDropoffLocation() {
	dropoffLocation = parseInt($('#dropoff_location').val());
	updateDropOpenTime = 1;
	updateDropoffHourDropdown();
}

/*
 * Update Pickup Time
 */

function changePickupDate () {
	var pickupDate = document.getElementById('f-calendar-field-pickup_date_calendar').value;
	var ymd = pickupDate.split('/');
	pickupYear = parseInt(ymd[2], 10);
	pickupMonth = parseInt(ymd[0], 10);
	pickupDay = parseInt(ymd[1], 10);
	//consolelog("got: " + ymd[0] + '-' + ymd[1] + '-' + ymd[2]);
	//verbose = 1;
	setOptionSelected(document.getElementById('pickup_month').options, pickupMonth + "-" + pickupYear);	
	updatePickupMonthDropdown();
	//verbose = 0;
}
//depracated with "mon year" format
function updatePickupYearDropdown() {
	var options = document.getElementById('pickup_year').options;

	setOptionSelected(options, pickupYear);
	changePickupYear();
}

function changePickupYear() {
	if ($('#pickup_month').val()){
		pickupYear = parseInt(($('#pickup_month').val()).substring(($('#pickup_month').val()).indexOf('-')+1, ($('#pickup_month').val()).length));
	} else { 	
		updatePickupMonthDropdown();
	}
}

function updatePickupMonthDropdown() {
	var months = document.getElementById('pickup_month').options;

	months.length = 0;

	if (pickupYear == 0) {
	} else {
		var firstMonth = 0;
		
		firstMonth = currentMonth - 1;
		
		for (var j = 0; j < yearList.length; j++) {
			for (var i = firstMonth; i < monthNames.length; i++) {
				months.add(new Option(monthNames[i] + " " + yearList[j], (i + 1) + "-" + yearList[j]));
			}
			firstMonth = 0;
		}
	}
	setOptionSelected(months, pickupMonth + "-" + pickupYear);
	changePickupMonth();
}

function changePickupMonth() {
	changePickupYear();
	pickupMonth = parseInt($('#pickup_month').val());
	updatePickupDayDropdown();
}

function updatePickupDayDropdown() {
	var options = document.getElementById('pickup_day').options;

	options.length = 0;
	if (pickupYear == 0 || pickupMonth == 0) {
	} else {
		var firstDay = 1;
		if (currentYear == pickupYear && currentMonth == pickupMonth) {
			firstDay = currentDay;
		}

		var lastDay = monthLength(pickupMonth, pickupYear);

		for (var i = firstDay; i <= lastDay; i++) {
			options.add(new Option(i, i));
		}
	}

	setOptionSelected (options, pickupDay);
	changePickupDay();
}

function changePickupDay() {
	pickupDay = parseInt($('#pickup_day').val());
	setPickupCalendar();
	
	pickupTomorrowDay = pickupDay + tomorrowDays;
	pickupTomorrowMonth = pickupMonth;
	pickupTomorrowYear = pickupYear;
	var monthLen = monthLength(pickupTomorrowMonth, pickupTomorrowYear);
	if (pickupTomorrowDay > monthLen) {
		pickupTomorrowDay -= monthLen;
		pickupTomorrowMonth++;
	}
	if (pickupTomorrowMonth > 12) {
		pickupTomorrowMonth -= 12;
		pickupTomorrowYear++;
	}
	if (pickupTomorrowYear > dropoffYear
		|| pickupTomorrowYear == dropoffYear && pickupTomorrowMonth > dropoffMonth
		|| pickupTomorrowYear == dropoffYear && pickupTomorrowMonth == dropoffMonth && pickupTomorrowDay > dropoffDay) {
		dropoffYear = pickupTomorrowYear;
		dropoffMonth = pickupTomorrowMonth;
		dropoffDay = pickupTomorrowDay;
	}
	updatePickupHourDropdown();
	updateDropoffMonthDropdown();
}

function updatePickupHourDropdown() {
	
	var options = document.getElementById('pickup_hour').options;
	
	if (pickupLocation == 0 || pickupYear == 0
		|| pickupMonth == 0 || pickupDay == 0) {
		options.length = 0;
		for (var i = 0; i < 24; i++) {			
			for (var j = 0; j < minuteList.length; j++) {
				options.add(new Option(i + ":" + minuteList[j], i + ":" + minuteList[j]));
			}
		}
		setOptionSelected(options, 12 + ":" + "00");
		changePickupHour();
	} else {
		var pickupDate = pickupYear + '-' + pickupMonth + '-' + pickupDay;
		$.getJSON('/' + LANG + '/process/locationopentimerq/' + pickupLocation + '/' + pickupDate, function(data) {
			options.length = 0;
			for(var i = 0; i < data.length; i++) {
				for (var j = 0; j < minuteList.length; j++) {
					options.add(new Option(data[i] + ":" + minuteList[j], data[i] + ":" + minuteList[j]));
				}
			}
			// Copy-paste from if-clause, Asynchrouneus getJSON!!
			if (pickupHour == null) {
				pickupHour = 12;
				pickupMinute = "00";
			}
			if (pickupMinute == "0"){
				pickupMinute = "00";
			}
			setOptionSelected(options,pickupHour + ":" +  pickupMinute);					
			changePickupHour();
		});
	}
}

function changePickupHour() {
	pickupHour = parseInt($('#pickup_hour').val());
	changePickupMinute();
	//updatePickupMinuteDropdown();
}
//depracated with "hh:mm" format
function updatePickupMinuteDropdown() {
	var options = document.getElementById('pickup_minute').options;

	options.length = 0;
	if (isNaN(pickupHour)) {
	} else {
		for (var i = 0; i < minuteList.length; i++) {
			options.add(new Option(minuteList[i], minuteList[i]));
		}
	}
	setOptionSelected(options, pickupMinute);
	changePickupMinute();
}

function changePickupMinute() {
	pickupMinute = parseInt(($('#pickup_hour').val()).substring(($('#pickup_hour').val()).indexOf(':')+1, ($('#pickup_hour').val()).length));
}


/*
 * Update Dropoff Time
 */

function changeDropoffDate () {
	var dropoffDate = document.getElementById('f-calendar-field-dropoff_date_calendar').value;
	var ymd = dropoffDate.split('/');
	dropoffYear = parseInt(ymd[2], 10);
	dropoffMonth = parseInt(ymd[0], 10);
	dropoffDay = parseInt(ymd[1], 10);
	//consolelog("drop got: " + ymd[0] + '-' + ymd[1] + '-' + ymd[2]);

	updateDropoffMonthDropdown();
}
//depracated with "mon year" format
function updateDropoffYearDropdown() {
	var options = document.getElementById('dropoff_year').options;

	options.length = 0;
	if (pickupYear == 0 || pickupMonth == 0 || pickupDay == 0) {
		updateDropoffMonthDropdown();
		return;
	}

	for (var i = 0; i < yearList.length; i++) {
		if (pickupTomorrowYear > yearList[i]) continue;
		options.add(new Option(yearList[i], yearList[i]));
	}

	setOptionSelected(options, dropoffYear);
	changeDropoffYear();
}

function changeDropoffYear() {
	if ($('#dropoff_month').val()){
		dropoffYear = parseInt(($('#dropoff_month').val()).substring(($('#dropoff_month').val()).indexOf('-')+1, ($('#dropoff_month').val()).length));
		updateDropOpenTime = 1;
	}
	//updateDropoffMonthDropdown();
}

function updateDropoffMonthDropdown() {
	var options = document.getElementById('dropoff_month').options;

	options.length = 0;
	if (isNaN(dropoffYear) || pickupYear == 0
		|| pickupMonth == 0 || pickupDay == 0) {
	} else {
		var firstMonth = 0;
		if (pickupTomorrowYear == dropoffYear) {
			firstMonth = pickupTomorrowMonth - 1;
		}
		
		for (var j = 0; j < yearList.length; j++) {
			if (pickupTomorrowYear > yearList[j]) continue;			
			for (var i = firstMonth; i < monthNames.length; i++) {
				options.add(new Option(monthNames[i] + " " + yearList[j], (i + 1) + "-" + yearList[j]));
			}
			firstMonth = 0;
		}
	}
	setOptionSelected(options, dropoffMonth + "-" + dropoffYear);
	changeDropoffMonth();
}

function changeDropoffMonth() {
	if (dropoffMonth != parseInt($('#dropoff_month').val())) updateDropOpenTime = 1;
	dropoffMonth = parseInt($('#dropoff_month').val());
	changeDropoffYear();
	updateDropoffDayDropdown();
}

function updateDropoffDayDropdown() {
	var options = document.getElementById('dropoff_day').options;

	options.length = 0;
	if (pickupYear == 0 || pickupMonth == 0
		|| pickupDay == 0 || dropoffYear == 0
		|| dropoffMonth == 0) {
	} else {
		var firstDay = 1;
		if (dropoffYear == pickupTomorrowYear && dropoffMonth == pickupTomorrowMonth) {
			firstDay = pickupTomorrowDay;
		}

		var lastDay = monthLength(dropoffMonth, dropoffYear);

		for (var i = firstDay; i <= lastDay; i++) {
			options.add(new Option(i, i));
		}
	}
	setOptionSelected (options, dropoffDay);
	changeDropoffDay();
}

function changeDropoffDay() {
	if (dropoffDay != parseInt($('#dropoff_day').val())) updateDropOpenTime = 1;
	dropoffDay = parseInt($('#dropoff_day').val());
	
	setDropoffCalendar();
	updateDropoffHourDropdown();

}

function updateDropoffHourDropdown() {
	var options = document.getElementById('dropoff_hour').options;

	if (dropoffLocation == 0 || pickupYear == 0 || pickupMonth == 0 || pickupDay == 0
		|| dropoffYear == 0 || dropoffMonth == 0 || dropoffDay == 0) {
		options.length = 0;
		for (var i = 0; i < 24; i++) {
			for (var j = 0; j < minuteList.length; j++) {
				options.add(new Option(i + ":" + minuteList[j], i + ":" + minuteList[j]));
			}
		}
		setOptionSelected(options, 12 + ":" + "00");
		changeDropoffHour();
	} else {
		if (updateDropOpenTime == 0) {
			setOptionSelectedArray (options, new Array(dropoffHour, 12 + ":" + "00"));
			return;
		}
		updateDropOpenTime = 0;
		var dropoffDate = dropoffYear + '-' + dropoffMonth + '-' + dropoffDay;
		$.getJSON('/' + LANG + '/process/locationdroptimerq/' + pickupLocation + '/' + dropoffDate, function(data) {
			options.length = 0;
			for(var i = 0; i < data.length; i++) {				
				for (var j = 0; j < minuteList.length; j++) {
					options.add(new Option(data[i] + ":" + minuteList[j], data[i] + ":" + minuteList[j]));
				}
			}
			if (dropoffHour == null) {
				dropoffHour = 12;
				dropoffMinute = "00";
			}
			if (dropoffMinute == "0"){
				dropoffMinute = "00";
			}
			// Copy-paste from if-clause, Asynchrouneus getJSON!!
			setOptionSelected(options, dropoffHour + ":" +  dropoffMinute);	
			changeDropoffHour();
		});
	}

}

function changeDropoffHour() {
	dropoffHour = parseInt($('#dropoff_hour').val());
	changeDropoffMinute();
	//updateDropoffMinuteDropdown();
}
//depracated with "hh:mm" time format
function updateDropoffMinuteDropdown() {
	var options = document.getElementById('dropoff_minute').options;

	options.length = 0;
	if (isNaN(dropoffHour)) {
	} else {
		for (var i = 0; i < minuteList.length; i++) {
			options.add(new Option(minuteList[i], minuteList[i]));
		}
	}

	setOptionSelected(options, dropoffMinute);
	changeDropoffMinute();
}


function changeDropoffMinute() {
	dropoffMinute = parseInt(($('#dropoff_hour').val()).substring(($('#dropoff_hour').val()).indexOf(':')+1, ($('#dropoff_hour').val()).length));
	//dropoffMinute = parseInt($('#dropoff_minute').val());
}

function updateExtraPrice(id, reservNumber) {
	var key = '#quantity_' + id;
	var amount = $(key).val();

	var url = '/3/process/updateextraprice/' + id + '/' + amount + '/' + bookingRequestId + '/';
	if (reservNumber != 0) {
		url += '/' + reservNumber;
	}

	$.getJSON(url, function(data) {
		$('#price_' + data['id']).html(data['price']);
		//$('#localtotal').html(data['localtotal']);
		//$('#nowtotal').html(data['nowtotal']);
		$('#extra_total').html(data['total']);
		$('#car_total').html(data['car_total']);
		//updateExtraTotalPrices();
	});
}

function consolelog(message) {
	if(window.console) {
		console.log(message);
	}
}

function updateFilter(id) {
	var any = document.getElementById('filter_any');
	var a = document.getElementById('filter_automatic');
	var m = document.getElementById('filter_manual');

	if (id == 'any') {
		if (any.checked) {
			a.checked = true;
			m.checked = true;
		} else {
			a.checked = true;
			m.checked = false;
		}
	} else if (id == 'a' || id == 'm') {
		if (a.checked && m.checked) {
			any.checked = true;
		} else if (a.checked || m.checked) {
			any.checked = false;
		}
	}
}

function initTermsDialog() {
	$('#tc').dialog({
		modal: true,
		autoOpen: false,
		draggable: false,
		height: 'auto',
		width: 600,
		position: 'center',
		bgiframe: true,
		overlay: {
			opacity: 0.5,
			background: "black"
		}
	});
}

function openTerms(branchId) {
	$.get('/' + LANG + '/tc/' + branchId, function(data) {
		$('#tc').html(data);
		$('#tc').dialog('open');
		$('#tc').dialog('option', 'modal', true);
		$('#tc').dialog('option', 'bgiframe', true);
		$(window).trigger("resize").trigger("resize");
		//$('#terms').dialog('open');
	});
	return false;
}

function initExtraInfoDialog() {
	$('#extrainfo').dialog({
		modal: true,
		autoOpen: false,
		draggable: false,
		height: 250,
		width: 250,
		position: 'center',
		resizable: false,
		overlay: {
			opacity: 0.5,
			background: 'black'
		}
	});
}

function explainEmail() {
	data = "";
	$('#explain').show();
	$('#explain').html(data);
	$('#explain').dialog('open');
	return false;
}

function explainBook() {
	data = "";
	$('#explain').show();
	$('#explain').html(data);
	$('#explain').dialog('open');
	return false;
}

function openExtraInfo(extraId) {

	$.get('/' + LANG + '/process/extrainforq/' + extraId, function(data) {
		if (data.length == 0) return;
		if (isIE(6)) {
			data = '<iframe class="overlap_iframe"></iframe>' + data;
		}
		$('#extrainfo').html(data);
		$('#extrainfo').dialog('open');
	});

	return false;
}

function initCvv2Dialog() {
	$('#whatiscvv2').dialog({
		modal: false,
		autoOpen: false,
		draggable: false,
		height: 350,
		width: 400
	});

	$('#open_cvv2_dialog').click(function(e) {
		return openCvv2(e.pageX, e.pageY);
	});
}

function openCvv2(x, y) {
	$.get('/' + LANG + '/whatiscvv2', function(data) {
		if (isIE(6)) {
			data = '<iframe class="overlap_iframe"></iframe>' + data;
		}
		$('#whatiscvv2').html(data);
		$('#whatiscvv2').dialog('open');
	});
	return false;
}

function initSelfServiceTabs() {
	$('#selfservice-tabs').tabs();
}

function showVoucherInfo() {}

/**
 * Change booking
 */
function initChangeBooking() {
	$('#check_availability').click(function() {
		var data = {
			pickup_location: $('#pickup_location').val(),
			dropoff_location: $('#dropoff_location').val(),
			pickup_day: $('#pickup_day').val(),
			pickup_month: $('#pickup_month').val(),
			pickup_year: $('#pickup_year').val(),
			pickup_hour: $('#pickup_hour').val(),
			pickup_minute: $('#pickup_minute').val(),
			dropoff_day: $('#dropoff_day').val(),
			dropoff_month: $('#dropoff_month').val(),
			dropoff_year: $('#dropoff_year').val(),
			dropoff_hour: $('#dropoff_hour').val(),
			dropoff_minute: $('#dropoff_minute').val(),
			driver_age: $('#driver_age').val()
		};

		$.post('/3/process/checkavailability', data, function(data) {
			if(data['status'] == 0) {
				alert(data['message']);
			} else if(data['status'] == 2) {
				if(confirm(data['message'])) {
					$('#search_for_new_car').click();
					return false;
				}
			} else {
				window.location.href = '/3/changebooking/';
				return false;
			}
			return false;
		}, "json");
		return false;
	});

	$('#close_search').click(function() {
		$("#car_search").hide();
		$("#change_booking").show();
		return false;
	});

	$('#search_for_new_car').click(function() {
		var data = {
			pickup_location: $('#pickup_location').val(),
			dropoff_location: $('#dropoff_location').val(),
			pickup_day: $('#pickup_day').val(),
			pickup_month: $('#pickup_month').val(),
			pickup_year: $('#pickup_year').val(),
			pickup_hour: $('#pickup_hour').val(),
			pickup_minute: $('#pickup_minute').val(),
			dropoff_day: $('#dropoff_day').val(),
			dropoff_month: $('#dropoff_month').val(),
			dropoff_year: $('#dropoff_year').val(),
			dropoff_hour: $('#dropoff_hour').val(),
			dropoff_minute: $('#dropoff_minute').val(),
			driver_age: $('#driver_age').val()
		};

		$.post('/3/process/searchvehicles', data, function(data) {
			$("#result").html('');
			$('#car_search').show();
			$("#loading").fadeIn('slow');
			for(var i = 0;i < data.length; i++) {
				$("#result").append(data[i]);
			}

			$("#loading").fadeOut('slow');
			if(data.length > 0) {
				$('#change_booking').hide();
			} else {
				$('#car_search').hide();
			}

			if(data.length == 0) {
				alert("Siamo spiacenti ma non esistono veicoli che combacino con il tuo criterio di ricerca. Controlla che i dati inseriti siano corretti.");
			}
		}, "json");

		return false;
	});

	$('#convert_quote').click(function() {
		return checkBookForm(document.getElementById('personal_form'));
	});

	$('#amend_booking').click(function() {
		var data = {
			pickup_location: $('#pickup_location').val(),
			dropoff_location: $('#dropoff_location').val(),
			pickup_day: $('#pickup_day').val(),
			pickup_month: $('#pickup_month').val(),
			pickup_year: $('#pickup_year').val(),
			pickup_hour: $('#pickup_hour').val(),
			pickup_minute: $('#pickup_minute').val(),
			dropoff_day: $('#dropoff_day').val(),
			dropoff_month: $('#dropoff_month').val(),
			dropoff_year: $('#dropoff_year').val(),
			dropoff_hour: $('#dropoff_hour').val(),
			dropoff_minute: $('#dropoff_minute').val(),
			driver_age: $('#driver_age').val()
		};

		$.post('/3/process/checkavailability', data, function(data) {
			if(data['status'] == 0) {
				alert(data['message']);
			} else if(data['status'] == 2) {
				if(confirm(data['message'])) {
					$('#search_for_new_car').click();
					return false;
				}
			} else {
				checkBookForm(document.getElementById('personal_form'));
				return false;
			}
			return false;
		}, "json");
		return false;
	});
}


function checkCardType() {
	var type = document.getElementById('cc_type').options[document.getElementById('cc_type').options.selectedIndex].text;
}
function initCardType() {
	$('#cc_type').change( checkCardType );
	setOptionSelected(document.getElementById('cc_start_year').options, 2012);
}

function loadHowto(){
	var str="<embed src='/images/Banner_6.swf' type='application/x-shockwave-flash' wmode='transparent' height='600' width='600'></embed>";
	document.write(str);
}

function loadBanner() {
	var str="<embed src='/images/Eavto_351x156.swf' type='application/x-shockwave-flash' wmode='transparent' height='156' width='351'></embed>";
	document.write(str);
}

function loadRinningText() {
	var str="<embed src='/images/Eavto_376x30.swf' type='application/x-shockwave-flash' wmode='transparent' height='30' width='376'></embed>";
	document.write(str);

}

function initCarInfoDialog() {
	$('#carInfoContainer').dialog({
		modal: true,
		autoOpen: false,
		position: 'top',
		overlay: {
			opacity: 0.8,
			background: "black"
		}
	});
	$(".ui-dialog-titlebar-close").hide();
}



function showCarInfo(carId) {
	if ($.browser.msie && $.browser.version == 6) {	
		$.getJSON('/' + LANG + '/carinfo/' + carId + '/' + vehicleRequestId + '/IE6/', function(data) {
			$('#carInfoContainer').dialog('option', 'width', 668);
			$('#carInfoContainer').dialog('option', 'height', 410);
			$('#carInfoContainer').dialog('option', 'bgiframe', true);
			$('#carInfoContainer').dialog('option', 'resizable', false);
			$('#carInfoContainer').html(data);
			$('#carInfoContainer').dialog('open');
			$('#carInfoContainer').dialog('option', 'modal', true);
		});
	} else {
		$.getJSON('/' + LANG + '/carinfo/' + carId + '/' + vehicleRequestId + '/', function(data) {
			$('#carInfoContainer').html(data);			
			$('#carInfoContainer').dialog('option', 'width', 0);
			$('#carInfoContainer').dialog('option', 'height', 0);
			$('#carInfoContainer').dialog('open');
			$('#carInfoContainer').dialog('option', 'modal', true);
		});
	}
	return;
	/*window.open('/' + LANG + '/carinfo/' + carId, 'carinfo', 'height=600,width=640,scrollbars=yes');
	return false;*/
}

function showSeal() {
	window.open('/' + LANG + '/seal/', 'seal', 'height=600,width=640,scrollbars=yes');
	return false;
}

function currencyInfo() {
	alert("");
	return true;
}
	/*$.getJSON('/' + LANG + '/carinfo/' + carId, function(data) {
document.getElementById('carinfo').innerHTML=data;
	$('#carinfo').html(data['content']);
	$('#carinfo').dialog('option', 'title', data['title']);
	$('#carinfo').dialog({
		modal: false,
		autoOpen: false,
		width: 'auto',
		height: 'auto'
		});
	$('#carinfo').show();
	$('#carinfo').dialog('open');
//document.getElementById('carinfo').style.display='';
//document.getElementById('carinfo').style.height='auto';
});

	//carinfoDialog.data('dialog.height', 'auto');
	//document.getElementById('carinfo').style.height = 'auto';
	return false;
}
var carinfoDialog;
function initCarinfoDialog() {
	carinfoDialog = $('#carinfo').dialog({
	modal: false,
		autoOpen: false,
	width: 'auto'
	});
	document.getElementById('carinfo').style.display='';
	carinfoDialog.data('height.dialog', 'auto');*/


function loadNextCars() {
	if(type == 0) {
		url = '/' + LANG + '/process/vehiclerq/' + vehicleRequestId + '/';
	} else {
		url = '/' + LANG + '/process/vehiclerq/' + vehicleRequestId + '/' + type + '/';
	}

	$.getJSON(url, function(data) {
		progress = -1;
		updateProgress();
		for(var i = 0;i < data.length; i++) {
			$("#result").append(data[i]);
		}
		vehicleCount += data.length;
		updateVehicleCount();
		if (vehicleCount > 0) {
			$('#found_cars').show();
			filterCars();
		} else {
			$('#found_no_cars').show();
		}
		$("body").css('cursor', 'auto');

	});
}

function setCurrency(curr) {
	currency = curr;
	$.post('/' + LANG + '/setCurrency/', {"currency":currency});
	$('.USD').hide();
	$('.RUR').hide();	
	$('.'+curr).show();
}

function updateVehicleCount() {
	$("#vehicle_count").html("" + vehicleCount);
}

function updateProgress() {
	if(progress == -1) { 
		$("#progressbar").progressbar("option", "value", 100);
		$("#loading").hide();
		return;
	}
	progress++;
	var str = '';
	for(var i = 0;i < progress; i++) {
		 $("#progressbar").progressbar("option", "value", progress + 1);
	}
	setTimeout('updateProgress()',10);
	if (progress >= 100) {
		progress = 0;
	}
}

function loadCars() {
	vehicleCount = 0;
	$("#result").html('');
	$("#loading").fadeIn('slow');
	$('body').css('cursor','wait');
	$("#progressbar").progressbar({ value: 0 });
	setTimeout('updateProgress()', 10);
	loadNextCars();
}

$(function() {
	$("#progressbar").progressbar({
		value: 0
	});
});


function filterCars() {
	if(document.getElementById('filter_any').checked) {
		$('.f_automatic').show();
		$('.f_manual').show();
	} else if (document.getElementById('filter_automatic').checked && !document.getElementById('filter_manual').checked) {
		$('.f_automatic').show();
		$('.f_manual').hide();
	} else if (document.getElementById('filter_manual').checked && !document.getElementById('filter_automatic').checked) {
		$('.f_automatic').hide();
		$('.f_manual').show();
	} else {
		$('.f_automatic').show();
		$('.f_manual').show();
	}
	
	// Elite types
	$('#type_n').attr('checked', $('#type_m').attr('checked'));
	$('#type_h').attr('checked', $('#type_e').attr('checked'));
	$('#type_d').attr('checked', $('#type_c').attr('checked'));
	$('#type_j').attr('checked', $('#type_i').attr('checked'));
	$('#type_r').attr('checked', $('#type_s').attr('checked'));
	$('#type_g').attr('checked', $('#type_f').attr('checked'));
	$('#type_u').attr('checked', $('#type_p').attr('checked'));
	$('#type_w').attr('checked', $('#type_l').attr('checked'));
	
	var types = new Array('m', 'e', 'c', 'i', 's', 'f', 'p', 'l', 'x', 'o', 'v', 'n', 'h', 'd', 'j', 'r', 'g', 'u', 'w');
	
	for (i=0; i<types.length; i++) {
		if ($('#type_' + types[i]).attr('checked')) {
			$('.f_type_' + + types[i]).show();
		} else {
			$('.f_type_' + types[i]).hide();
		}
	}
	
	return false;
}

function hideResult() {
	if (document.getElementById('result')) {
		$('#found_cars').hide();
		$('#found_no_cars').hide();
		$('#result').hide();
		$('#loading').show();
		$('body').css('cursor', 'wait');
		progress = 0;
		setTimeout('updateProgress()', 200);
	}
}
function disableCardData(disable) {
	$('#cc_holder').attr('disabled', disable);
	$('#cc_type').attr('disabled', disable);
	$('#cc_number_input').attr('disabled', disable);
	$('#cc_expire_month').attr('disabled', disable);
	$('#cc_expire_year').attr('disabled', disable);
	
	if(disable){
		$('#comments').val("#pays_with_transfer#");
	} else {
		$('#comments').val('');
	}
}

