//GLOBALS----------------------------------------
function showElement(id) {
	if ((document.getElementById(id).tagName == "SPAN") || (document.getElementById(id).tagName == "LI")) {
		document.getElementById(id).style.display = "inline";
	} else {
		document.getElementById(id).style.display = "block";
	}
}

function showElements(array) {
	for (var i = 0; i < array.length; i ++) {

		if ((document.getElementById(array[i]).tagName == "SPAN") || (document.getElementById(array[i]).tagName == "LI")) {
			document.getElementById(array[i]).style.display = "inline";
		} else {
			document.getElementById(array[i]).style.display = "block";
		}
	}
}

function hideElement(id) {
	if (id != "") {
		document.getElementById(id).style.display = "none";
	}
}

function hideElements(array) {
	for (var i = 0; i < array.length; i ++) {
		document.getElementById(array[i]).style.display = "none";
	}
}

function changeStyle(id,styleSelector,value){
	if (document.getElementById(id)) {
		eval("document.getElementById(id).style." + styleSelector + "='" + value + "';");
	}
}
function changeCss(id,style) {
	document.getElementById(id).className = style;
}

function clearField(field,value) {
	if (value) {
		field.defaultValue = value;
		if (field.value == value) {
			field.select();
		}
	} else if ((field.value != "")||(field.value != " ")){
		//field.defaultValue = field.value;
		field.select();
	}
}

function fillField(field,value) {
	if (value) {
		field.defaultValue = value;
	}
	if ((field.value == '')||(field.value == " ")){
		//field.value = field.defaultValue;
	}
}

//select fields---
function getValue(field) {
	var val;
	if (field.type == "select-one") {
		val = field.options[field.options.selectedIndex].value;
	}
	if (field[0].type == "radio") {
		for (var i = 0; i < field.length; i ++) {
			if (field[i].checked) {
				val = field[i].value;
			}
		}
	}
	return val;
}

function getNumValue(field) {
		return parseFloat(getValue(field));
}

function setValue(field,val) {
	if (field.type == "select-one") {
		for (var v = 0; v < field.options.length; v++) {
			if (field.options[v].value == val) {
				field.selectedIndex = field.options[v].index;
			}
		}
	}
	if (field[0].type == "radio") {
		for (var i = 0; i < field.length; i ++) {
			if (field[i].value == val) {
				field[i].checked = true;
			}
		}
	}
}


//COOKIES----
function getCookie(name) {
	var c = name + "=";
	var val = "";
	if (document.cookie.length > 0) {
		offset = document.cookie.indexOf(c);
		if (offset != -1) {
			offset += c.length;
			end = document.cookie.indexOf(";",offset);
			if (end == -1) end = document.cookie.length;
			val = unescape(document.cookie.substring(offset,end))
		}
	}
	return val;
}

function setCookie(name,value,expires) {
	var c = name + "=" + escape(value) + ((expires) ? "; expires=" + expires.toGMTString() : "");
	document.cookie = c;
}

function setExpire(mins) {
	var now = new Date();
	var m = parseFloat(now.getTime()) + (parseFloat(mins)*60000);
	var exDate = new Date(m);
	return exDate;
}


function isVisible(whichElement) {
	if (whichElement) {
		return true;
	} else {
		return false;
	}
}

function fromToFocus(fromField,toField) {
	if (isVisible(fromField) && isVisible(toField)) {
		if (fromField.value == "") {
			fromField.focus();
		} 
		if (fromField.value != "" && toField.value == ""){
			toField.focus();
		}
	}
}

//-Browser check
var detect = navigator.userAgent.toLowerCase();
var OS,browser,total,thestring;
var version = 0;
function getBrowser() {
	if (checkIt('konqueror'))
	{
		browser = "Konqueror";
		OS = "Linux";
	}
	else if (checkIt('safari')) browser = "Safari"
	else if (checkIt('omniweb')) browser = "OmniWeb"
	else if (checkIt('opera')) browser = "Opera"
	else if (checkIt('webtv')) browser = "WebTV";
	else if (checkIt('icab')) browser = "iCab"
	else if (checkIt('msie')) browser = "Internet Explorer"
	else if (!checkIt('compatible'))
	{
		browser = "Netscape Navigator"
		version = detect.charAt(8);
	}
	else browser = "An unknown browser";

	if (!version) version = detect.charAt(place + thestring.length);

	if (!OS)
	{
		if (checkIt('linux')) OS = "Linux";
		else if (checkIt('x11')) OS = "Unix";
		else if (checkIt('mac')) OS = "Mac"
		else if (checkIt('win')) OS = "Windows"
		else OS = "an unknown operating system";
	}
	return browser;
}

function checkIt(string)
{
	place = detect.indexOf(string) + 1;
	thestring = string;
	return place;
}

//Add body onload event
function addOnload(newOnLoad) {
	if (window.onload == "" || window.onload == null) {
		window.onload = newOnLoad;
	} else {
		var existing = window.onload;
		var doThis = function() {
			existing();
			newOnLoad();
		}
		window.onload = doThis;
	}
}
//define your function to be added to onload event
//var newOnLoad = function newFunction() { alert('bye'); } 

function setTabIndex(form) {
	var c = 1;
	for (var i = 0; i < form.elements.length; i ++) {		
		if (form.elements[i].type != "hidden") {
			form.elements[i].tabIndex = c;
			c++;
		}
	}
}
//------/GLOBALS----------------------------------------
function dateOffset(fromMonth,fromDay,toMonth,toDay) {
	this.m1 = fromMonth;
	this.d1 = fromDay;
	this.m2 = toMonth;
	this.d2 = toDay;
}

var airDates;
var hotelDates;
var carDates;
var ahDates;
var hcDates;
var allDates;

function setDates(dates) {
	setValue(orbotForm.fromMonth,dates.m1);
	setValue(orbotForm.fromDay,dates.d1);
	setValue(orbotForm.toMonth,dates.m2);
	setValue(orbotForm.toDay,dates.d2);
}

var orbotForm;
var qsPage;
var previousType;
function baseGenerateSearch(sType) {
	var f = orbotForm;
	sType.setToDefault();
	
	if (sType.type == "s") {
		changeStyle("sSrch","background","#FF3");
		changeStyle("hint","background","#FFF");
		changeStyle("crt","background","#FFF");
		changeStyle("dpSrch","background","#FFF");
	} else if (sType.type == "dp") {
		changeStyle("sSrch","background","#FFF");
		changeStyle("hint","background","#FF3");
		changeStyle("crt","background","#FF3");
		changeStyle("dpSrch","background","#FF3");
	}
	for (var i = 0; i < allElements.length; i ++) {
		hideElements(allElements[i]);
	}
	setValue(f.searchType,sType.id);
	f.searchMethodHidden.value = "find";
	sType.setDefaultDates();
	document.getElementById("expandText").innerHTML = sType.expandNote;
	showElements(allElements[sType.index]);
	if (sType.id == "air" || sType.id == "airhotel") {
		fromToFocus(f.from,f.to);
	}
	/*if (sType.id == "car" || sType.id == "hotel") {
		searchNear(sType.snDefault);
	}	*/
	previousType = sType;
	setCookie(qsPage,sType.id);
}

function qsToTab(tab) {
	if (getBrowser() == "Safari") {
		return true;
	} else {
		var f = orbotForm;
		if (getValue(f.searchType) != "car" && getValue(f.searchType) != "hotel") {
			if (tab == "hotel") {
				setValue(f.searchMode,"std");
			} else if (tab == "car") {
				setValue(f.searchMode,"air");
			}
		}
		for (var a = 0; a < allSearches.length; a ++) {
			if (allSearches[a].id == tab) {
				sType = allSearches[a];
			}
		}
		for (var s = 0; s < f.searchType.length; s ++) {
			if (f.searchType[s].checked) {
				f.searchType[s].value = tab;
			}
		}
		sType.setDefaultDates();
		sType.setToDefault();
		clickSubmit("expand");
		return false;
	}
}

//SEARCH NEAR
var snAirCar = new Array("toLocation","acTo","carTo","anote","carDrop");
var snAirHotel = new Array("toLocation","hotelTo","hotelNote");
var snPoiCar = new Array("toLocation","acTo","carTo","carNote");
var snPoiHotel = new Array("toLocation","hotelTo");
var snAdrCar = new Array("adrSearch","carNote");
var snAdrHotel = new Array("adrSearch");
var snAll = new Array(snAirCar,snAirHotel,snPoiCar,snPoiHotel,snAdrCar,snAdrHotel);
var snText = new Array("airTxt","adrTxt","stdTxt");

function searchNear(t) {
	if (getValue(orbotForm.searchType) == "car") sType = carSearch;
	if (getValue(orbotForm.searchType) == "hotel") sType = hotelSearch;
	setValue(orbotForm.searchMode,t);
	var txtId = t + "Txt";
	sType.setToDefault();
	orbotForm.to.defaultValue = sType.toDefault;
	
	for (var i = 0; i < snText.length; i ++) {
		changeStyle(snText[i],"fontWeight","normal");
	}
	
	changeStyle(txtId,"fontWeight","bold");
	
	for (var i = 0; i < snAll.length; i++) {
		hideElements(snAll[i]);
	}

	if (t == "air") {
		if (sType.id == "car") {
			showElements(snAirCar);
		} else if (sType.id == "hotel") {
			showElements(snAirHotel);
			if (orbotForm.to.value == orbotForm.to.defaultValue) {
				orbotForm.to.value = "";
			}
		}
	}
	if (t == "std") {
		if (sType.id == "car") {
			showElements(snPoiCar);
		} else if (sType.id == "hotel") {	
			showElements(snPoiHotel);
		}
		if (orbotForm.to.value == orbotForm.to.defaultValue || orbotForm.to.value == "") {
			orbotForm.to.value = "Enter city or point of interest...";
		}
	}
	if (t == "adr") {
		if (sType.id == "car") {
			showElements(snAdrCar);
		} else if (sType.id == "hotel") {
			showElements(snAdrHotel);
		}
		
	}
	
}
//----/SEARCH NEAR


function clickSubmit(hiddenValue) {
	var f = orbotForm;
	f.searchMethodHidden.value = hiddenValue;
	f.submit();
}
function orbotSearch(id,elementsIndex) {
	this.id = id;
	this.index = elementsIndex;
	if (this.id == "air" || this.id == "hotel" || this.id == "car") {
		this.type = "s";
	} else {
		this.type = "dp";
	}
	this.elements = allElements[elementsIndex];
	this.expandNote = expandNotes[elementsIndex];
	this.fromDefault = "";
	this.toDefault = "Enter city or point of interest...";
	if (id == "car") {
		this.toDefault = "Where from?";
	}
	if (id == "air" || id == "airhotel") {
		this.toDefault = "";
	}
	this.setToDefault = function() {
		if (orbotForm.to.value == "" || orbotForm.to.value == "Where from?" || orbotForm.to.value == "Enter city or point of interest...") {
			orbotForm.to.value = this.toDefault;
			orbotForm.to.defaultValue = this.toDefault;
		}
	}
	this.dates = allDates[elementsIndex];
	this.setDefaultDates = function() {
		if ((getValue(orbotForm.fromMonth) == previousType.dates.m1) && (getValue(orbotForm.fromDay) == previousType.dates.d1) && (getValue(orbotForm.toMonth) == previousType.dates.m2) && (getValue(orbotForm.toDay) == previousType.dates.d2)) {
			setDates(this.dates);
		}
	}
	this.isOn = false;
	this.hasError = false;
	this.snDefault = "air";
	if (id == "hotel") {
		this.snDefault = "std";
	}
}

//PAX SYNC-----------------


//MAX PAX variables
var hcPax = 4;
var ahAdult = 4;
var ahChild = 3;
var hPax = 8;

function setMaxPax(v,mx,field) {
	if (v > mx) {
		v = mx;
	}
	setValue(field,v);
}

function displayTotalPax(trigger) {
	var f = orbotForm;
	if (trigger == "h") {
		var p = getNumValue(f.hguests);
		setMaxPax(p,hcPax,f.hcguests);
	}
	if (trigger == "hc") {
		setValue(f.hguests,getNumValue(f.hcguests));
	}
	if (trigger == "a") {
		var ad = getNumValue(f.airadult) + getNumValue(f.airsenior); //ADULTS TOTAL
		var c = getNumValue(f.airyouth) + getNumValue(f.airchild) + getNumValue(f.airinfantLap) + getNumValue(f.airinfantSeat); //CHILD TOTAL
		var all = ad + c; //PAX TOTAL
		setMaxPax(ad,ahAdult,f.pkgadult); // SET a+h adults
		setMaxPax(c,ahChild,f.pkgchild); // SET a+h children
		setMaxPax(all,hPax,f.hguests); //SET h pax
		setMaxPax(all,hcPax,f.hcguests); //SET h+c pax
	}
	if (trigger == "ah") {
		var all = getNumValue(f.pkgadult) + getNumValue(f.pkgchild);
		setMaxPax(all,hPax,f.hguests); //SET h pax
		setMaxPax(all,hcPax,f.hcguests); //SET h+c pax
	}
	var c = getNumValue(f.pkgchild);
	for (var a = 1; a <= ahChild; a ++) {
		hideElement("age" + a);
	}
	if (c != 0) {
		showElement("ages");
		for (var a = 1; a <= c; a ++) {
			var e = "pkgchildage" + a;
			showElement("age" + a);
			if(getValue(f.elements[e]) == "1") {
				showElement("age" + a + "u2");
			} else {
				hideElement("age" + a + "u2");
			}
		}
	} else if (c == 0) {
		hideElement("ages");
	}
}





//SUDO PROP FILE
//Define the text under "Expand search options"
var expandNotes = new Array(5);
expandNotes[0] = "(One-way, non-stops, preferred airlines, etc.)"; //air
expandNotes[1] = "(Hotel chain, specific hotel name, star rating)"; //hotel
expandNotes[2] = "(Automatic/manual transmission, air conditioning)"; //car
expandNotes[3] = ""; //a+h
expandNotes[4] = ""; //h+c

//Define which elements are used in each orbot
var allElements = new Array(5);
allElements[0] = new Array("fromLocation","toLocation","acTo","airTo","anote","airFromDate","airToDate","airFrTime","airToTime","airOpt","airPax","expand"); //air
allElements[1] = new Array("toLocation","hotelTo","hotelNote","searchNear","guRm","hGu","rooms","roomselect","afterDates","hotelToDate","hotelFromDate","hotelOpt","expand"); //hotel
allElements[2] = new Array("searchNear","toLocation","acTo","carTo","carNote","carDrop","carFromDate","carToDate","carFrTime","carToTime","carAge","expand","adrSearch"); //car
allElements[3] = new Array("fromLocation","toLocation","acTo","airTo","anote","airFromDate","airToDate","afterDates","aphRm","ahPax","ahNote"); //a+h
allElements[4] = new Array("toLocation","hcToNote","hotelTo","hotelToDate","hotelFromDate","hcFrLb","hcToLb","carFrTime","carToTime","hcFrTime","hcToTime","hcNote","hcLine","guRm","hcGu","rooms","hotelCarNote","roomfix"); //h+c


function jumpMenu(targ,selObj,restore){
  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  if (restore) selObj.selectedIndex=0;
}

function toEvent(field) {
	fillField(field);
}


function getElementPosition(elem) {
    var offsetTrail = elem;
    var offsetLeft = 0;
    var offsetTop = 0;
    while (offsetTrail) {
        offsetLeft += offsetTrail.offsetLeft;
        offsetTop += offsetTrail.offsetTop;
        offsetTrail = offsetTrail.offsetParent;
    }
    if (navigator.userAgent.indexOf("Mac") != -1 &&
        typeof document.body.leftMargin != "undefined") {
        offsetLeft += document.body.leftMargin;
        offsetTop += document.body.topMargin;
    }
    return {left:offsetLeft, top:offsetTop};
}

function setElementPosition(layerEl,fixedEl,xOffset,yOffset) {
    layerEl.style.position = "absolute";
    layerEl.style.top = parseFloat(getElementPosition(fixedEl).top + yOffset) + "px";
    layerEl.style.left = parseFloat(getElementPosition(fixedEl).left + xOffset) + "px";
}

function setSubmitEvent() {
	orbotForm.submitType.value = "click";
}
