$(document).ready(function () {
	var settings = {
		dateFormat: 'yy-mm-dd',
		yearRange: '2002:' + ((new Date()).getFullYear() + 3),
		onSelect: updateDates
	};
	
	$('#advanced-search').click(showAdvancedForm);
	$('.close-button', '#advanced-search-form').click(hideOnClick);
	$('.text-submit a', '#advanced-search-form').click(triggerSubmit);
	$(document.body).mousedown(hideOnExternalClick);
	
	$('.date-cleaner', '#advanced-search-form').click(clearDates);
	$('form', '#advanced-search-form').submit(performSearch);
	
	$("#from-picker, #to-picker", '#advanced-search-form').datepicker($.extend({}, $.datepicker.regional[lang], settings));
	$('input[type=checkbox]', '#advanced-search-form').prettyCheckboxes();
	
	loadCookie('agenda-venezia-advanced');
});

function clearDates() {
	$("#from, #to", '#advanced-search-form').val('');
	$('#from-date .value, #to-date .value', '#advanced-search-form').text('');
	return false;
}

function showAdvancedForm() {
	if (!$('#advanced-search-form:visible').length) {
		$('#advanced-search-form').fadeIn();
	}
}

function hideAdvancedForm() {
	$('#advanced-search-form').fadeOut();
}

function hideOnClick() {
	hideAdvancedForm();
	return false;
}

function hideOnExternalClick(e) {
	if ($('#advanced-search-form:visible').length) {
		if (!$(e.target).parents('#advanced-search-form').length && !$(e.target).is('#advanced-search-form')) {
			hideAdvancedForm();
			return false;
		}
	}
}

function setDate(target, date) {
	$("#" + target, '#advanced-search-form').val(date);
	$("#" + target + "-date .value", '#advanced-search-form').text(date.substring(8, 10) + '/' + date.substring(5, 7) + '/' + date.substring(0, 4));
}

function updateDates(date) {
	var target = ($(this).attr('id')).split('-')[0];
	setDate(target, date);
	checkDates(target, date);
}

function checkDates(target, date) {
	if (target == 'from') {
		if ($.trim($("#to").val()) == '') {
			setDate('to', date);
		} else {
			var from = getDateObject(date);
			var to = getDateObject($("#to").val());
			
			if (from.getTime() > to.getTime()) {
				setDate('to', date);
				$("#to-picker").datepicker("setDate", from);
			}
		}
	} else if (target == 'to') {
		if ($.trim($("#from").val()) == '') {
			setDate('from', date);
		} else {
			var from = getDateObject($("#from").val());
			var to = getDateObject(date);
			
			if (from.getTime() > to.getTime()) {
				setDate('from', date);
				$("#from-picker").datepicker("setDate", to);
			}
		}
	}
}

function triggerSubmit() {
	$('form', '#advanced-search-form').trigger('submit');
	return false;
}

function performSearch() {
	saveCookie('agenda-venezia-advanced');
	hideAdvancedForm();
}

function saveCookie(name) {
	if ($("#from").val() && $("#to").val() ) {
		$.cookie(name, $("#from").val() + "|" + $("#to").val(), {path:'/'});
	} else {
		$.cookie(name, null);
	}
}

function getDateObject(date) {
	date = date.split('-');
	return new Date(date[0], date[1] - 1, date[2]);
}

function loadCookie(name) {
	var value = $.cookie(name);
	if (value) {
		var data = value.split('|');
		
		if (data[0]) {
			setDate('from', data[0]);
			$("#from-picker").datepicker("setDate", getDateObject(data[0]));
		}
		if (data[1]) {
			setDate('to', data[1]);
			$("#to-picker").datepicker("setDate", getDateObject(data[1]));
		}
	}
}