var alertMethod = function (txt, options) { alert(txt); };
var dismissAlertMethod = function () { };
var getElement = function (id) { return (document.all ? document.all[id] : document.getElementById(id)); }

function preloadImages(){
	var d=document; if(d.images){ if(!d.p) d.p=[];
	var i,j=d.p.length,a=preloadImages.arguments; for(i=0; i<a.length; i++)
	if(a[i].indexOf("#")!=0){ d.p[j]=new Image; d.p[j++].src=a[i];}}
}

function LoadSuggest(item, lang, img, scale){
	fullSearch = true;
	InstallAC(document.forms[0], item, null, LANG_ROOT_PATH + 'AJAX/SuggestResult.aspx', lang, getElement(img), validateForm, scale);
}

function ShowHidePanel(object){
	var ctrl = getElement(object);

	if(ctrl.style.display == 'none')
		ctrl.style.display = '';
	else
		ctrl.style.display = 'none';
}

function toggleControl(object, displayState){
	if(displayState == 'show')
		getElement(object).style.display = '';
	else
		getElement(object).style.display = 'none';
}

function ExpandPanel(id, imgID, onImg, offImg){
	var panel = getElement(id);
	var image = getElement(imgID);

	if(panel.style.display == 'none'){
		panel.style.display = '';
		image.src = offImg;
	}
	else{
		panel.style.display = 'none';
		image.src = onImg;
	}
}

function parse_monthyear(monthyear){
	var strs = monthyear.split("-");
	var dateObj = {};
	dateObj.year = strs[0];
	dateObj.month = strs[1];
	return dateObj;
}

function parse_date(dt){
	var dateNow = new Date();
	var strs = dt.split("-");
	var dateObj = {};
	dateObj.year = (strs.length > 0 ? parseInt(strs[0], 10) : dateNow.getFullYear());
	dateObj.month = (strs.length > 1 ? parseInt(strs[1], 10) : (dateNow.getMonth() + 1));
	dateObj.day = (strs.length > 2 ? parseInt(strs[2], 10) : dateNow.getDate());
	return dateObj;
}

function calendarChanged(){
	var checkInDateObj = parse_date(getElement('checkIn').value);
	var checkOutDateObj = parse_date(getElement('checkOut').value);
	var checkInDate = new Date(checkInDateObj.year, checkInDateObj.month - 1, checkInDateObj.day);
	var checkOutDate = new Date(checkOutDateObj.year, checkOutDateObj.month - 1, checkOutDateObj.day);

	var today = new Date();
	if(checkInDate < today){
		checkInDate = today;
		setDropdownValue(getElement('ddCheckInDay'), checkInDate.getDate());
		setDropdownValue(getElement('ddCheckInMonth'), checkInDate.getFullYear() + '-' + (checkInDate.getMonth() + 1));
		getElement('checkIn').value = checkInDate.getFullYear() + "-" + (checkInDate.getMonth() + 1) + "-" + checkInDate.getDate();
	}

	if(checkOutDate <= checkInDate){
		checkOutDate = checkInDate;
		checkOutDate.setDate(checkOutDate.getDate() + 1);
		setDropdownValue(getElement('ddCheckOutDay'), checkOutDate.getDate());
		setDropdownValue(getElement('ddCheckOutMonth'), checkOutDate.getFullYear() + '-' + (checkOutDate.getMonth() + 1));
		getElement('checkOut').value = checkOutDate.getFullYear() + "-" + (checkInDate.getMonth() + 1) + "-" + checkInDate.getDate();
	}
}

function dateDropdownChanged(sender){
	var checkInDay = getElement('ddCheckInDay');
	var checkInYM = getElement('ddCheckInMonth');
	var checkInMonthYear = new parse_monthyear(checkInYM.value);
	var checkInDate = new Date(checkInMonthYear.year, checkInMonthYear.month - 1, checkInDay.value);
	getElement('checkIn').value = checkInDate.getFullYear() + "-" + (checkInDate.getMonth() + 1) + "-" + checkInDate.getDate();

	var checkOutDay = getElement('ddCheckOutDay');
	var checkOutYM = getElement('ddCheckOutMonth');
	var checkOutMonthYear = new parse_monthyear(checkOutYM.value);
	var checkOutDate = new Date(checkOutMonthYear.year, checkOutMonthYear.month - 1, checkOutDay.value);
	getElement('checkOut').value = checkOutDate.getFullYear() + "-" + (checkOutDate.getMonth() + 1) + "-" + checkOutDate.getDate();

	var today = new Date();
	if (checkInDate < today) {
		if (sender == checkInDay) { checkInDate.setMonth(checkInDate.getMonth() + 1); }
		else { checkInDate = today; }
	}
	setDropdownValue(checkInDay, checkInDate.getDate());
	setDropdownValue(checkInYM, checkInDate.getFullYear() + '-' + (checkInDate.getMonth() + 1));
	getElement('checkIn').value = checkInDate.getFullYear() + "-" + (checkInDate.getMonth() + 1) + "-" + checkInDate.getDate();
	if (checkOutDate < checkInDate) {
		if (sender == checkOutDay) { checkOutDate.setMonth(checkInDate.getMonth() + 1); }
		else {
			checkOutDate = checkInDate;
			checkOutDate.setDate(checkOutDate.getDate() + 1);
		}
	}
	setDropdownValue(checkOutDay, checkOutDate.getDate());
	setDropdownValue(checkOutYM, checkOutDate.getFullYear() + '-' + (checkOutDate.getMonth() + 1));
	getElement('checkOut').value = checkOutDate.getFullYear() + "-" + (checkOutDate.getMonth() + 1) + "-" + checkOutDate.getDate();
}

// FORM VALIDATION
function validateForm() {
	dismissAlertMethod();
	if(abortSuggest){ abortSuggest(); }
	
	var errCity = getElement('errCity')
	var errDateOut = getElement('errDateReturn');
	var cityField = getElement('tbcity');
	var checkInField = getElement('checkIn');
	var checkOutField = getElement('checkOut');
	var currency = getElement('ddCurrency');

	if(trim(cityField.value).length == 0){
		errCity.innerHTML = '<font color=red>X</font>';
		alertMethod(TXT_NO_DEST_ERROR, { anchor: cityField, anchorPos: "left" });
		FocusItem(cityField);
		return false;
	}

	var inDateElems = checkInField.value.split('-');
	var outDateElems = checkOutField.value.split('-');

	try{
		var checkInDate = new Date(inDateElems[0], inDateElems[1], inDateElems[2]);
		var checkOutDate = new Date(outDateElems[0], outDateElems[1], outDateElems[2]);
		if(checkInDate > checkOutDate){
			errDateOut.innerHTML = '<font color=red>X</font>';
			return false;
		}
		else{ errDateOut.innerHTML = ''; }
	}
	catch(e){
		errDateOut.innerHTML = '<font color=red>X</font>';
		return false;
	}

	var btn = getElement('btnSearch');
	if (btn && TXT_SEARCHING.length > 0) { btn.firstChild.innerHTML = TXT_SEARCHING.toUpperCase(); }

	var URL = HOTELS_PATH + 'hotelsearch.aspx';
	URL += '?city=' + encodeURIComponent(cityField.value);
	URL += '&dtCheckIn=' + checkInField.value;
	URL += '&dtCheckOut=' + checkOutField.value;
	URL += '&occupancy=' + getElement('ddOccupants').value;
	URL += '&currency=' + currency.value;
	
	if(currency && currency.value.length > 0){
		document.cookie = 'Currency=' + currency.value + '; path=/;';
	}

	window.location.href = URL;

	return false;
}

function FocusItem(elem){
	elem.focus();
	elem.select();
}

function trim(str){ return str.replace(/^\s+/, "").replace(/\s+$/, ""); };

function setElementValue(id, val) {
	var elem = getElement(id);
	if (elem) { elem.value = val; }
}

function setDropdownValue(ctl, val) {
	if (ctl) {
		if (ctl.setValue) { ctl.setValue(val); }
		else { ctl.value = val; }
	}
}

function updateDropdownValue(ctl) {
	if (ctl && ctl.updateValue) { ctl.updateValue(); }
}

function setDisabled(ctl, val) {
	if (ctl) {
		if (ctl.setDisabled) { ctl.setDisabled(val); }
		else if (ctl.disabled != null) { ctl.disabled = val; }
	}
}


function tooltipAlert(message, options) {
	var tipHtml = '<table cellpadding="0" cellspacing="0" border="0">' +
		'<tr><td class="alert_tl"></td><td class="alert_tr"></td></tr>' +
		'<tr><td colspan="2" class="alertContent">' + message + '</td></tr>' +
		'<tr><td class="alert_bl"></td><td class="alert_br"></td></tr></table>';
	flexitip.addTip(tipHtml, options);
}

function dismissTooltipAlerts() {
	flexitip.clearTips();
}

