var errs = new Array();
var htlLoad = true;
var lbls = new Array();
var tdate = new Date();
var req;
var udCtr = 0;
function BC (id)
{
 var obj = document.getElementById(id);
 return obj;
}

function tabForm(obj)
{
	CloseCalendar();
	for (var ctr = 0; ctr < 3; ctr++)
	{
//		BC('tab'+ctr).className = 'betab';
		BC('beform'+ctr).style.display = 'none';
	}
//	BC(obj).className = 'betabA';
	BC('beform'+obj.substring(3,4)).style.display = 'block';
	if (obj == 'tab1' && htlLoad) 
	{
		getOptions('htl');
		htlLoad = false;
	}

}


function CreateDay(y,m,d,t)
{ // Function to create table cells for each day of month and all empty days
	var today = new Date();
	var c = document.createElement('td');
	if (y == 0 && m == 0)
	{
		c.innerHTML = '&nbsp;';
		//c.style.backgroundColor = '#ddd;';
	}
	else if (y < today.getFullYear() || 	(y == today.getFullYear() && m-1 < today.getMonth()) || 	(y == today.getFullYear() && m-1 == today.getMonth() && d < today.getDate())	) {
		c.style.textDecoration = 'line-through';
		c.innerHTML = d;
		//c.style.backgroundColor = '#fdd;';
	} else {
		c.innerHTML = '<a href="javascript:SetDates('+y+','+m+','+d+',\''+t+'\')">' + d +'<\/a>'
		//c.style.backgroundColor = '#cfc;';
	}
	return c;
}

function CloseCalendar()
{
	CalcNights();
	BC('cal').style.display = 'none';
	var elList = new Array('DAY_RDATE','MONTH_RDATE','RTIME','PAX1','PAX2','roomtype','rooms','starrating','pick_up_hour','pick_up_min','drop_off_hour','drop_off_min');
	for (var ctr = 0; ctr < elList.length; ctr++)
	{
			BC(elList[ctr]).style.visibility = 'visible';
	}
	
	
}

function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

function ShowHideCalendar(requestor,elem)
{
	req = requestor;
	if (req == 'close') CloseCalendar();
	else {
		var doCar = '';
		var y = 0;
		var m = 0;
		var d = 0;
		var xpos = findPosX(elem);
		var ypos = findPosY(elem);
		BC('cal').style.display = 'block';
		BC('cal').style.top = ypos +'px';
		BC('cal').style.left = xpos +'px';
		
		switch (req){
				case "fldep":
					d = BC('DAY_DATE').options[BC('DAY_DATE').selectedIndex].value;
					m = BC('MONTH_DATE').options[BC('MONTH_DATE').selectedIndex].value % 100;
					y = parseInt(BC('MONTH_DATE').options[BC('MONTH_DATE').selectedIndex].value / 100);
					BC('DAY_RDATE').style.visibility = 'hidden';
					BC('MONTH_RDATE').style.visibility = 'hidden';
					BC('RTIME').style.visibility = 'hidden';
					BC('PAX1').style.visibility = 'hidden';
					BC('PAX2').style.visibility = 'hidden';
					break;
				case "flret":
					d = BC('DAY_RDATE').options[BC('DAY_RDATE').selectedIndex].value;
					m = BC('MONTH_RDATE').options[BC('MONTH_RDATE').selectedIndex].value % 100;
					y = parseInt(BC('MONTH_RDATE').options[BC('MONTH_RDATE').selectedIndex].value / 100);
					BC('PAX2').style.visibility = 'hidden';
					break;
					case "htl":
						var checkin = 	BC('checkin').value.split('/');
						BC('roomtype').style.visibility = 'hidden';
						BC('rooms').style.visibility = 'hidden';
						if (checkin.length == 3)
						{
							d = parseInt(checkin[0]);
							m = parseInt(checkin[1]);
							y = parseInt(checkin[2]);
						} else {
							
							d = tdate.getDate();
							m = parseInt(tdate.getMonth()) + 1;
							y = tdate.getFullYear();
						}
						BC('rooms').style.visibility = 'hidden';
						BC('starrating').style.visibility = 'hidden';
						break;
					case "car1":
						BC('pick_up_hour').style.visibility = 'hidden';
						BC('pick_up_min').style.visibility = 'hidden';
						BC('drop_off_hour').style.visibility = 'hidden';
						BC('drop_off_min').style.visibility = 'hidden';
						cday = 'pick_up_day';
						cmonth = 'pick_up_off_month';
						doCar = 'pick_up';
						break;
					case "car2":
						BC('drop_off_hour').style.visibility = 'hidden';
						BC('drop_off_min').style.visibility = 'hidden';
						cday = 'drop_up_day';
						cmonth = 'pick_up_off_month';
						doCar = 'drop_off';
						
						break;
						
				default : break;
			}
			
			if (doCar != '')
			{
				d = BC(doCar+'_day').value;
				m = BC(doCar+'_month').options[BC(doCar+'_month').selectedIndex].value;
				if (m <= parseInt(tdate.getMonth())) y = parseInt(tdate.getFullYear()) +1;
				else y = tdate.getFullYear();
				if (parseInt(d/100) != 0)
				{
					d = tdate.getDate();
					m = parseInt(tdate.getMonth()) + 1;
					y = tdate.getFullYear();
				}
			}
	
		writeCalendar(d,m,y,req);
	}
}

function writeCalendar(d,m,y,t)
{
	var target = t;
	var renderObj = document.getElementById('calBody');
	if (renderObj.hasChildNodes)
	{
		while (renderObj.hasChildNodes()) {renderObj.removeChild(renderObj.firstChild);}
	}
	var days = new Array();
	var rawdays = new Array();
	var baseDate = new Date(y,m-1,1);
	var dow = baseDate.getDay();
	

	var maxDays = new Date(y,m,0).getDate();
	for (var ctr = 0; ctr < maxDays; ctr++)
	{
		rawdays.push(new Date(y,m-1,ctr+1));
	}
	var fday = rawdays[0].getDay();
	var lday = fday + maxDays-1;
	var dctr = 0;
	for (var ctr=1; ctr<43;ctr++)
	{
		if (ctr < fday || ctr > lday) days.push(CreateDay(0,0,0,''));
		else {
			days.push(CreateDay(rawdays[dctr].getFullYear(),rawdays[dctr].getMonth()+1,rawdays[dctr].getDate(),target));
			dctr++;
		}		
	}
	for (var i = 0; i < days.length;)
	{
		var r = document.createElement('tr');
		if (i>7 && days[i].innerHTML == '&nbsp;') break;
		for (var x = 0; x<7; x++)
		{
			r.appendChild(days[i++])
		}
		renderObj.appendChild(r);
		
	}
	BC('showD').innerHTML = '<a href="javascript:writeCalendar(1,' + (parseInt(m)-1) + ','+y+',\''+t+'\')">&lt;&lt;</a> '+  monthNames[baseDate.getMonth()] + ' ' + baseDate.getFullYear();
	BC('showD').innerHTML += ' <a href="javascript:writeCalendar(1,' + (parseInt(m)+1) + ','+y+',\''+t+'\')">&gt;&gt;</a>'
}


function CalcNights()
{
	var d = 0;
	var m= 0;
	var y=0;;
	var checkin = 	BC('checkin').value.split('/');
	if (checkin.length == 3)
	{
		d = parseInt(checkin[0]);
		m = parseInt(checkin[1]);
		y = parseInt(checkin[2]);
	} else {
		d = tdate.getDate();
		m = parseInt(tdate.getMonth()) + 1;
		y = tdate.getFullYear();
		BC('checkin').value = '' + tdate.getDate() + '/' + (parseInt(tdate.getMonth()) + 1) + '/' + tdate.getFullYear();
		BC('nights').value = 2; 
	}
	var tempDate = new Date();
	tempDate.setFullYear(y);
	tempDate.setMonth(m-1);
	var day = parseInt(BC('nights').value) + d;
	tempDate.setDate(day);
	var cOutStr = '' + tempDate.getDate() + '/' + (parseInt(tempDate.getMonth()) +1) + '/' + tempDate.getFullYear();
	BC('checkOut').innerHTML = cOutStr;
}

function SetType(t)
{
	var state = true;
	var els = new Array('DAY_RDATE','MONTH_RDATE','RTIME');
	if (t == 'R') state = false;
	if (state) BC('flcal2').style.visibility = 'hidden';
	else BC('flcal2').style.visibility = 'visible';
	for (var i =0; i< els.length; i++)
	{
		BC(els[i]).disabled = state;
		}
}

function UpdateGuess()
{
	BC('guess2').value = BC('guess').value;
}
var flregd = /^\d+$/;

function ValidateFlight()
{
	var fldepDT = new Date( parseInt(BC('MONTH_DATE').options[BC('MONTH_DATE').selectedIndex].value / 100), BC('MONTH_DATE').options[BC('MONTH_DATE').selectedIndex].value % 100 -1, BC('DAY_DATE').selectedIndex +1);
	var flretDT = new Date( parseInt(BC('MONTH_RDATE').options[BC('MONTH_RDATE').selectedIndex].value / 100), BC('MONTH_RDATE').options[BC('MONTH_RDATE').selectedIndex].value % 100 -1, BC('DAY_RDATE').selectedIndex +1);
	var flreg = /^\w+.*$/;

	errs = new Array();
	BC('lDAY_DATE').className = '';
	BC('lPAX2').className = '';
	BC('lLARR').className = '';
	var dest = BC('LARR').value;
	var charList="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ,[]-";
	var haserror = false;
	if (dest.length < 3 || !dest.match(flreg) || dest.match(flregd)) haserror = true;
	for (var i = 0; i < dest.length; i++)
	{
		if (charList.indexOf(dest.substring(i,i+1)) == -1) haserror = true;
	}
	if (haserror) errs.push(new ErrMsg('lLARR',errFlight01));
	if (fldepDT < tdate)
		errs.push(new ErrMsg('lDAY_DATE',errFlight03));
	if (BC('PAX2').selectedIndex > BC('PAX0').selectedIndex + 1)
		errs.push(new ErrMsg('lPAX2',errFlight02));
	var paxtest = BC('PAX0').selectedIndex + 1 + BC('PAX1').selectedIndex + BC('PAX2').selectedIndex;
	if (paxtest > 9)
		errs.push(new ErrMsg('lPAX0|lPAX1|lPAX2',errFlight04));
	if (errs.length < 1) return true;
	ErrMsgProvidor();
	return false;
}

function ValidateHotel()
{
	errs = new Array();
	var dtreg = /(\d|\d\d)\/(\d|\d\d)\/\d\d\d\d/;
	if (BC('destination').options[BC('destination').selectedIndex].value == 'none' || BC('destination').options[BC('destination').selectedIndex].value == 0)
	{
		errs.push(new ErrMsg('ldestination',errHotel01));
	}
	if (!BC('checkin').value.match(dtreg)) errs.push(new ErrMsg('lcheckin',errHotel03));
	if (BC('nights').value == '')
	{
		BC('nights').value == 1
		errs.push(new ErrMsg('lnights',errHotel02));
	}
	
	if (errs.length > 0)
	{
		ErrMsgProvidor();
		return false;	
	} else {
	var htDay = BC('checkin').value.split('/')[0]; 
	var htMnth = BC('checkin').value.split('/')[1];
	var htY = ''+BC('checkin').value.split('/')[2];
	if (htDay < 10) htDay = '0' + htDay;
	if (htMnth < 10) htMnth = '0' + htMnth;
	if (htY.length < 4) htY = '20' + htY;
	var hDT = '' + htY + '-' + htMnth + '-' + htDay;
	var URLRoot = "http://hotels.ebookers.com/HotelLink?country=GB&currency=GBP&language=EN";
	var URL = URLRoot + '&destination=' + BC('destination').options[BC('destination').selectedIndex].value;
	URL = URL + '&checkin='+ hDT;
	URL = URL + '&nights=' + BC('nights').value;
	URL = URL + '&roomtype=' + BC('roomtype').options[BC('roomtype').selectedIndex].value;
	URL = URL + '&rooms=' + BC('rooms').options[BC('rooms').selectedIndex].value
	URL = URL + '&starrating=' + BC('starrating').options[BC('starrating').selectedIndex].value;
	window.location.href = URL;
	}
}

function ValidateCar()
{
	var dtreg = /\d+/;
	errs= new Array();
	if (BC('guess').value.length < 3)
		errs.push(new ErrMsg('lguess',errCar01));
	if (BC('guess2').value.length < 3)
		errs.push(new ErrMsg('lguess2',errCar02));
	if (!BC('pick_up_day').value.match(dtreg)) errs.push(new ErrMsg('lpick_up_day', errCar04));
	if (!BC('drop_off_day').value.match(dtreg)) errs.push(new ErrMsg('ldrop_off_day', errCar05));
	if (parseInt(BC('driver_age').value) < 21 || BC('driver_age').value == '' || !BC('driver_age').value.match(flregd))
		errs.push(new ErrMsg('ldriver_age',errCar03));
	if (GetCarDate('pick_up') < tdate)
		errs.push(new ErrMsg('lpick_up_day',errCar04));
	if (GetCarDate('drop_off') < tdate)
		errs.push(new ErrMsg('lpick_up_day',errCar05));
	if (errs.length < 1) return true;
	ErrMsgProvidor();
	return false;
}

function ErrMsg(label, alertTxt)
{
	this.Label = label;
	this.AlertText = alertTxt;
}

function ErrMsgProvidor()
{
	var errStr = ErrStr;
	for (var i = 0; i < lbls.length; i++)
	{
		BC(lbls[i]).className = '';
	} 

	for (var i = 0; i < errs.length; i++)
	{
		if (errs[i].Label.indexOf('|') != -1)
		{
			var lblarray = errs[i].Label.split('|');
			for (var c = 0; c < lblarray.length; c++){
				lbls.push(lblarray[c]);
				BC(lblarray[c]).className = 'lblErr';
			}
		} else {
			lbls.push(errs[i].Label);
			BC(errs[i].Label).className = 'lblErr';
	}
		errStr += ' - ' + errs[i].AlertText + '\n';
	}	
	alert(errStr);
}
function UpdateDates(orig)
{
	if (udCtr > 0)
	{
		udCtr = 0;
	} else {
		udCtr = 1;
		if (orig == 'fldep' || orig =='flret')
		{
			var fldepDT = new Date( parseInt(BC('MONTH_DATE').options[BC('MONTH_DATE').selectedIndex].value / 100), BC('MONTH_DATE').options[BC('MONTH_DATE').selectedIndex].value % 100 -1, BC('DAY_DATE').selectedIndex +1);
			var flretDT = new Date( parseInt(BC('MONTH_RDATE').options[BC('MONTH_RDATE').selectedIndex].value / 100), BC('MONTH_RDATE').options[BC('MONTH_RDATE').selectedIndex].value % 100 -1, BC('DAY_RDATE').selectedIndex +1);
 			if (orig == 'fldep') {
 				 udCtr = 1;
 				 SetDates(fldepDT.getFullYear(), (fldepDT.getMonth() +1), parseInt(fldepDT.getDate() + 7), 'flret');
 			} else if (fldepDT > flretDT)
	 		{
 				udCtr = 1;	
 				SetDates(flretDT.getFullYear(), (flretDT.getMonth() +1), parseInt(flretDT.getDate() - 1), 'fldep');
			}

		}
		if (orig == 'car1' || orig == 'car2')
		{
			udCtr = 1
			var pDT = GetCarDate('pick_up');
			var dDT = GetCarDate('drop_off');;
			if (pDT >= dDT)
 			{
 				if (orig == 'car1')
 				{
 					pDT.setDate(pDT.getDate() +7);
 					SetDates(pDT.getFullYear(), (pDT.getMonth() +1), (pDT.getDate()), 'car2');
 				}
 				else {
 					dDT.setDate(dDT.getDate() -7);
 					SetDates(dDT.getFullYear(), (dDT.getMonth() +1), (dDT.getDate()), 'car1');
 				}
			}
		}
	}
	udCtr = 0;
}

function GetCarDate(t)
{
	var pd = BC(t+'_day').value;
	var pm = BC(t+'_month').value;
	var m = parseInt(tdate.getMonth()) + 1;
	var py = tdate.getFullYear();
	if (pm < m) py = py + 1;
	var pDT = new Date(py, pm-1, pd);
	return pDT;
}

function BuildDays(t)
{
	var selD = BC(t);
	var dd = selD.selectedIndex;
	var tm = 'MONTH_DATE'
	if (t != 'DAY_DATE') tm = 'MONTH_RDATE'; 
	var selM = BC(tm);
	var selMonth = selM.options[selM.selectedIndex].value % 100;
	var selYear = parseInt(selM.options[selM.selectedIndex].value / 100);
	var maxDays = new Date(selYear,selMonth,0).getDate();
	if (maxDays != selD.length)
	{
		for (var i = selD.length -1; i >=0; i--)
			{
				selD.remove(i);
			}
			for (var i=0; i < maxDays; i++)
			{
				var op = new Option(i+1, i+1, false, false);
				selD.options[selD.length] = op;
			}
			if (dd <= selD.length) selD.selectedIndex = dd;
			else selD.selectedIndex = 0;
			if (selD.selectedIndex == -1) selD.selectedIndex = 0;
	}
}
function SetDates(iy,im,id,t)
{
	var safeDate = new Date(iy,im-1,id);
	var y = safeDate.getFullYear();
	var m = parseInt(safeDate.getMonth()) +1;
	var d = safeDate.getDate();
	var dT;
	var mT;
	var sisterField = '';
	var compareValue = 0;
	var mode = 0;
	
	switch (t)
	{
		case 'fldep':
			BC('DAY_DATE').selectedIndex = d-1;
			mT = 'MONTH_DATE'
			mode = 'f';
			sisterField = 'fldep';
			break;
		case 'flret':
			BC('DAY_RDATE').selectedIndex = d-1;
			mT = 'MONTH_RDATE';
			mode = 'f';
			sisterField = 'flret';
			break;
		case 'htl':
			BC('checkin').value = d + '/' + m + '/' + y
			break;
		case 'car1':
			BC('pick_up_day').value = d;
			mT = 'pick_up_month';
			mode = 'c';
			sisterField = 'car1';
			break;
		case 'car2':
			BC('drop_off_day').value = d;
			mT = 'drop_off_month';
			mode = 'c';
			sisterField = 'car2';
			break;
	}
	if (mode != 0)
	{
		
		if (m < 10) m = '0'+m;
		var op = m;
		if (mode == 'f') op= y+''+m;
		for (var i = 0; i < BC(mT).length; i++)
		{
			if (BC(mT).options[i].value == op)
			{
				BC(mT).selectedIndex = i;
			}
		}
	}
	if (sisterField != '') UpdateDates(sisterField);
	CloseCalendar();	
}

// AJAX

function _getXmlHttp()
{
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
	var progids=["Msxml2.XMLHTTP", "Microsoft.XMLHTTP"]
	for (i in progids) {
		try { return new ActiveXObject(progids[i]) }
		catch (e) {}
	}
@end @*/

	try { return new XMLHttpRequest();}
	catch (e2) {return null; }
}

var request = new Request();
var activity = 'fldep';

var myAjaxUrl = '';
	
function getOptions(activity)
{
	//myAjaxUrl = 'http://www.ebookers.com/hpcomponents/hpAirports.html?VERSION=UK&LANG=EN&activity=' + activity;
	if (activity == "fldep")
	{
		result = "ABZ|Aberdeen~ALC|Alicante (ES)~AMS|Amsterdam (NL)~ATH|Athens (GR)~BCN|Barcelona (ES)~BFS|Belfast~BER|Berlin (DE)~BHX|Birmingham~BLK|Blackpool~BRS|Bristol~BRU|Brussels (BE)~BUD|Budapest (HU)~CWL|Cardiff~CPH|Copenhagen (DK)~ORK|Cork (IE)~DUB|Dublin (IE)~MME|Durham Tees Valley~DUS|Dusseldorf (DE)~EMA|East Midlands~EDI|Edinburgh~EXT|Exeter~FAO|Faro (PT)~FRA|Frankfurt (DE)~GVA|Geneva (CH)~GLA|Glasgow~GCI|Guernsey~HAM|Hamburg (DE)~HEL|Helsinki (FI)~HUY|Humberside~INV|Inverness~IOM|Isle of Man~JER|Jersey~LCA|Larnaca (CY)~LBA|Leeds Bradford~LIS|Lisbon (PT)~LPL|Liverpool~LON|London All~LCY|London City~LGW|London Gatwick~LHR|London Heathrow~LTN|London Luton~STN|London Stansted~LDY|Londonderry~MAD|Madrid (ES)~AGP|Malaga (ES)~MAN|Manchester~MIL|Milan (IT)~MUC|Munich (DE)~NCL|Newcastle~NQY|Newquay~NCE|Nice (FR)~NWI|Norwich~OSL|Oslo (NO)~PMI|Palma Mallorca (ES)~PAR|Paris (FR)~PLH|Plymouth~OPO|Porto (PT)~PRG|Prague (CZ)~KEF|Reykjavik (IS)~ROM|Rome (IT)~SNN|Shannon (IE)~SZD|Sheffield~SOU|Southampton~SEN|Southend~ARN|Stockholm (SE)~SYY|Stornoway~TFS|Tenerife (ES)~VIE|Vienna (AT)~VNO|Vilnius (LT)~WAW|Warsaw (PL)~WIC|Wick~ZRH|Zurich (CH)";
	}
	else if (activity == "htl")
	{
		result = "0|--Select Top Destinations--~AAMS1|Amsterdam~ABKK|Bangkok~ABCN1|Barcelona~ACPT|Cape Town~ADXB|Dubai~ADUB|Dublin~CJNB|Johannesburg~CLAS|Las Vegas~AMIA|Miami~CNYC|New York~ASFO|San Francisco~0|--In Alphabetical Order--~AADL|Adelaide~CZGLE|Adelaide-Glenelg~CWSY|Airlie Beach~CALH|Albany~CALBU|Albufeira~CALBY|Albury~CASP|Alice Springs~CAMM|Amman~AAMS1|Amsterdam~CANA|Anaheim~CANU|Antigua~CARUB|Aruba~CASSI|Assisi~AATH1|Athens~AATL|Atlanta~CAKL|Auckland~CAVN|Avignon~CAYQ|Ayers Rock~ABAH|Bahamas~CBAH|Bahrain~ABALI|Bali~CNUSA|Bali-Nusa Dua~CBLAL|Ballarat~CBNK|Ballina~ABKK|Bangkok~ABAR|Barbados~ABCN1|Barcelona~CBVAE|Barossa Valley~CBATH|Bath~CBEDA|Bedarra Island~APEK|Beijing~CBEY|Beirut~ABEL1|Belfast~CBEG|Belgrade~ABEN|Berlin~ABER1|Berlin World Cup Area~CBRN|Berne~CBHX|Birmingham~ABMOU|Blue Mountains~ABLQ1|Bologna~CBOB|Bora Bora Island~CBOD|Bordeaux~ABOS|Boston~CBMP|Brampton Island~CBNE|Brisbane~CBME|Broome~ABRU1|Brussels~CBUH|Bucharest~CBUD|Budapest~CBUE|Buenos Aires~CBDB|Bundaberg~CBWT|Burnie (Wynyard)~CPUS|Busan (Pusan)~CBUSL|Busselton~ACNS|Cairns~ACAI|Cairo~CYYC|Calgary~CCLOU|Caloundra~CCCUA|Calcutta~CCBR|Canberra~CCUN|Cancun~ACEQ|Cannes~CCPT|Cape Town~CCAPB|Cape Tribulation~CCAS|Casablanca~CCST|Castaway Island~ACENT|Cetral Coast~CCHEG|Chengdu~ACNX|Chiang Mai~ACHI|Chicago~CCKG|Chongqing~CCHC|Christchurch~CCOFF|Coffs Harbour~CCCOL|Coles Bay~CCGN|Cologne~ACGN2|Cologne World Cup Area~CCMB|Colombo~CQCM|Como~CCDA|Cooinda~CCOOU|Coolum Beach~AAACP|Copenhagen~ACORA|Coral Coast~AORK|Cork~CCRAD|Cradle Mountain~CCUSC|Cuzco (Cusco)~CDAIN|Daintree~CDALY|Dalian~CDFW|Dallas~ADRW|Darwin~CDDI|Daydream Island~CDNAR|Denarau Island~ADEV|Devon & Cornwall~CDIJ|Dijon~CDJER|Djerba~CDOH|Doha~ADOM|Dominican Republic~ADTM2|Dortmund World Cup Area~ADXB|Dubai~ADUB|Dublin~CDBV|Dubrovnik~CDUD|Dunedin~CDKI|Dunk Island~CDUR|Durban~ADUS|Dusseldorf~AEDA|Edinburgh~CFAO|Faro~AFIJI|Fiji~AAFLR|Florence & Pisa~AFRA|Frankfurt~AFRA2|Frankfurt World Cup Area~CFRAQ|Fraser Island~CJFM|Fremantle~CFUK|Fukuoka~AGELS|Gelsenkirchen World Cup Area~AGVE|Geneva~CGOA|Genoa~AGLS|Glasgow~CGOI|Goa~AGOLD|Gold Coast~CHOPI|Gold Coast-Hope Isl~COOLS|Gold Coast-Sanc Cove~CGRX|Granada~AUS07|Grand Canyon~AGUM|Guam~CCAN|Guangzhou~AHAM1|Hamburg~AHAM2|Hamburg Word Cup Area~CHAMM|Hammamet~CHAMI|Hamilton Island~CHGH|Hangzhou~AHAJ|Hannover World Cup Area~CHAN|Hanoi~CHAR3|Harbin~CHAV|Havana~AHAWA|Hawaii~AHAW2|Hawai - Kauai Island~AHAW3|Hawaii - Lanai Island~AHAW4|Hawaii - Maui Island~AHAW5|Hawaii - Oahu Island~CHIS|Hayman Island~CQHD|Heidelberg~AHEL|Helsinki~CHERO|Heron Island~AHVB|Hervey Bay~CSGN|Ho Chi Minh City~CHBA|Hobart~CHOIA|Hoi An~AHKG|Hong Kong~CKOWL|Hong Kong Kowloon~CHOU|Houston~CHUH|Huahine Island~AHUNT|Hunter Valley~AIBI|Ibiza~AIGU|Iguazu~CILP|Ile Des Pins~CINN|Innsbruck~CINTE|Interlaken~CIST|Istanbul~CJABI|Jabiru~AJAM|Jamaica~AJKT|Jakarta~CJRS|Jerusalem~AJNB|Johannesburg~CJHB|Johore Bahru~AKLT|Kaiserslautern World Cup Area~CKAKA|Kakadu~CKANY|Kangaroo Island~CKTM|Kathmandu~CKATO|Katoomba~AKEN|Kenya~CKINE|Kings Canyon~AKOSA|Koh Samui~ABKI|Kota Kinabalu~AKRAB|Krabi & Islands~CKRK|Krakow~AKUL|Kuala Lumpur~CKUNM|Kunming~CKYOT|Kyoto~CQLP|La Spezia~ALANK|Langkawi~ALAS|Las Vegas~ALST|Launceston~CQLS|Lausanne~CLEUR|Leura~CLIM|Lima~CLMK|Limerick~ALIS|Lisbon~CLZR|Lizard Island~ALOM|Lombok~AGB10|London~ALGW|London Gatwick~ALTN|London Luton~ASTN|London Stansted~ALONS|London Suburbs~CLHR|London-Heathrow~CLONN|Long Island~ALAX|Los Angeles~CLUCE|Lucerne~CLXR|Luxor~CLYN|Lyon~CMKY|Mackay~CMAD|Madrid~CMAGC|Magnetic Island~CAGP|Malaga~AMAN|Manchester~CMNL|Manila~CQRL|Marbella~CRAK|Marrakech~CMTAA|Matamanoa Island~AMAUR|Mauritius~AAAME|Melbourne~CMELG|Melbourne-Airport~CDANP|Melbourne-Dandenong~CMLBU|Melbourne-Preston~CMEX|Mexico City~AMIA|Miami~AAAMI|Milan~CMVD|Montevideo~CYMQ|Montreal~CMRIS|Moorea Island~CMET|Moreton Island~CMOW|Moscow~CMOSM|Mossman~CMON|Mount Cook~ABOM|Mumbai~AMUC|Munich~AMUC1|Munich World Cup Area~ANADI|Nadi~CNGO|Nagoya~CNBO|Nairobi~CNKG|Nanjing~CNAP|Naples~ANBAY|Nelson Bay~ANEWC|New Caledonia~ADEL|New Delhi~AMSY|New Orleans~CNYC|New York~ANYCA|New York Airports~C1NEW|Newcastle~ANIAA|Niagara Falls~ANCE1|Nice~CNOOS|Noosa~CNOUM|Noumea~ANUE1|Nuremberg World Cup Area~AORL|Orlando~COSA|Osaka~AOSL|Oslo~CPMO|Palermo~CPALC|Palm Cove~CPMI|Palma De Mallorca~CPPT|Papeete~CPAR|Paris~APARD|Paris Disneyland~APARS|Paris Suburbs~CORY|Paris-Orly~CCDG|Paris-Roissy~CPKE|Parkes~APATT|Pattaya & Koh Chang~CPEN|Penang~APER1|Perth~CSCAE|Perth~CPEEP|Phi Phi Island~APHL|Philadelphia~CPHIS|Phillip Island~AHKT|Phuket~CPSA|Pisa~CPOKO|Pokolbin~CPRTA|Port Arthur~CPOWZ|Port Douglas~COPOR|Port Macquarie~CVLI|Port Vila~COPO|Porto~CPOSI|Positano~APRG1|Prague~CTAO|Qingdao (Tsingtao)~AYQB|Quebec~CZQN|Queenstown~CRIX|Riga~AAARR|Rimini & Riccione~ARIO|Rio De Janeiro~CROK|Rockhampton~AROM1|Rome~CROT|Rotorua~CRTM|Rotterdam~CSLC|Salt Lake City~CSSA|Salvador~ASZG1|Salzburg~CSAN|San Diego~ASFO|San Francisco~CSCL|Santiago De Chile~CSANO|Santorini-Fira Town~CSAO|Sao Paulo~CSCAM|Scamander~CSEA|Seattle~CSEL|Seoul~CSVQ|Seville~CSEYC|Seychelles~CSHA|Shanghai~CSSH|Sharm El Sheikh~CSHEY|Shenyang~AAASN|Siena~CSIN|Singapore~CSOF|Sofia~CSORR|Sorrento~CSOI|South Molle Island~CLED|St Petersburg~ASTO|Stockholm~CSXB|Strasbourg~ASTR|Stuttgart~STR1|Stuttgart World Cup Area~ASUNS|Sunshine Coast~CSUV|Suva~CSWAV|Swan Valley~ASYDN|Sydney~CSYDA|Sydney Airport~CBONB|Sydney-Bondi Beach~CCOOY|Sydney-Coogee~CEDGC|Sydney-Edgecliff~CHOMH|Sydney-Homebush Bay~CMAN6|Sydney-Manly~CSYDN|Sydney-North Sydney~APPT|Tahiti~ATPE|Taipei~CTLL|Tallinn~CTAMV|Tamar Valley~CTEU|Te Anau~CTLV|Tel Aviv~CTERG|Terrigal~CTYO|Tokyo~CNRT|Tokyo-Narita~AYTO|Toronto~ATOWN|Townsville~ATRIN|Trinidad and Tobago~ATUN|Tunis~CTWIW|Twin Waters~AURUL|Uluru (Ayers Rock)~CVLC|Valencia~AYVR|Vancouver~AVLI|Vanuatu~CVRA|Varadero~AVCE|Venice~AVRN|Verona~CVIE|Vienna~AWAW|Warsaw~AWAS|Washington DC~CWLG|Wellington~AWHIT|Whitsunday~CWUH|Wuhan~CSIA|Xian~CYEPP|Yeppoon~CYORK|York~CZAG|Zagreb~CZERM|Zermatt~AZRH1|Zurich";
	}

//	request.GetNoCache(myAjaxUrl,function(result)
//	{
//		if (result.readyState!=ReadyState.Complete)
//			return;				
//		if (result.status==HttpStatus.OK && result.responseText != "")
//		{
			var vals = result.split("~");
			var sel;
			
			switch (activity){
				case "fldep":
					sel = BC("DEP");
					break;
				case "htl":
					sel = BC("destination");
					break;
				default : break;
			}
			
			for (var i = sel.length -1; i >=0; i--)
			{
				sel.remove(i);
			}
			var selectThis = 0;
			for (var i=0; i < vals.length -1; i++)
			{
				var pair = vals[i].split("|");
				var op = new Option(pair[1], pair[0], false, false);
				if (pair[0] == 'LON') selectThis = i;
				sel.options[sel.length] = op;
			}
			sel.selectedIndex = selectThis;
//		}
//		else
//		{
//			alert('Get options failed. ' + result.responseText);
//		}
//	}
//	)
}

function CachedResponse(response) {
	this.readyState = ReadyState.Complete
	this.status = HttpStatus.OK
	this.responseText = response
}

ReadyState = {
	Uninitialized: 0,
	Loading: 1,
	Loaded:2,
	Interactive:3,
	Complete: 4
	}
	
HttpStatus = {
	OK: 200,
	NotFound: 404
	}

function Request_from_cache(url, f_change) {
	var result = this._cache[url];
	
	if (result != null) {
		var response = new CachedResponse(result)
		f_change(response)
		return true
	}
	else
		return false
}

function Request_cached_get(url, f_change) {
	if (!this.FromCache(url, f_change)){
		var request = this
		this.Get(url,
			/* Cache results if request completed */
			function(x){
				if ((x.readyState==ReadyState.Complete)&&(x.status==HttpStatus.OK))
				{request._cache[url]=x.responseText}
				f_change(x)
			},
			"GET")
	}
}
function Request_get(url, f_change, method) {
	if (!this._get) return;
	
	if (method == null) method="GET"
	if (this._get.readyState != ReadyState.Uninitialized)
		this._get.abort() 
	
	this._get.open(method, url, true);
	
	if (f_change != null) {
		var _get = this._get;
		this._get.onreadystatechange = function(){f_change(_get);}
	}
	this._get.send(null);
}
function Request_get_no_cache(url, f_change, method){
	var sep = (-1 < url.indexOf("?")) ? "&" : "?"	
	var newurl = url + sep + "__=" + encodeURIComponent((new Date()).toString());
	return this.Get(newurl, f_change, method);
}

function Request() {
	this.Get = Request_get
	this.GetNoCache = Request_get_no_cache
	this.CachedGet = Request_cached_get
	this.FromCache = Request_from_cache
	
	this.Use = function(){return this._get!=null}
	this.Cancel = function(){if (this._get) this._get.abort();}
	this._cache = new Object();
	
	this._get = _getXmlHttp();
	if (this._get == null) return;
}
function chngClick(linkObject, tag, clickType)
{
	var linkType = 'clickin';
	if (clickType == 'out') {linkType = 'clickout'};
	var newLink = 'http://int.sitestat.com/ebookers/uk/s?'+ tag + '&ns_type=' + linkType + '&ns_url='+ linkObject.href;
	linkObject.href = newLink;
}
var awrz_rnd = Math.floor(Math.random()*999999999999);
var awrz_zoneids = new Array('166','137','384','138','139','140','602','958','959','960');
var awrz_zonenames = new Array('landing','top','large_banner','left','sky','hidden','skyleft','half_sky','wide_banner','large_sky');
var awrz_n = new Array('a62e3cd1','a79ab873','a111e06a','a644e06a','a0129c0b','af82df73','ac266706','ac67db32','a6cb91de','a71bceda');
var awrz_p=location.protocol=='https:'?'https:':'http:';
function awrz_GetIndex(name)
{
 var index = -1;
 if (typeof(name) != 'undefined')
  for (var i=0; i<awrz_zonenames.length; i++)
   if (awrz_zonenames[i] == name )
   {
    index = i;
    break;
   }
 return index;
} 
function awrz_InsertAd(name)
{
 var index = awrz_GetIndex(name);
 if (index > -1)
 {
  if (!document.phpAds_used) document.phpAds_used = ',';
  awrz_tag = "<" + "script language='JavaScript' type='text/javascript'";
  awrz_tag += "src='" + awrz_p + "//awrz.net/adjs.php?n=" + awrz_n[index];
  awrz_tag += "&amp;what=zone:" + awrz_zoneids[index];
  awrz_tag += "&amp;source={derive}&amp;q={derive}";
  awrz_tag += "&amp;exclude=" + document.phpAds_used + "&amp;r=" + awrz_rnd;
  if (window.location) awrz_tag += "&amp;loc=" + escape(window.location);
  if (document.referrer) awrz_tag += "&amp;referer=" + escape(document.referrer);
  awrz_tag += "'><" + "/script>";

  document.write(awrz_tag);
 }
}
function awrz_InsertAdScript(name) {
 awrz_InsertAd(name);
}
var dayNames = new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');		
var monthNames = new Array('January','Febuary','March','April','May','June','July','August','September','October','November','December');	
var ErrStr = 'Please provide correct information for the following fields highlighted in red:\n';		
var errFlight01 = 'To.';		
var errFlight02 = 'Only one infant per adult is permitted.';		
var errFlight03 = 'Depart.';		
var errFlight04 = 'A maximum of 9 passengers is permitted.';		
var errHotel01 = 'Please select a destination.';		
var errHotel02 = 'Please enter the number of nights.';		
var errHotel03 = 'Please enter a valid check-in date (dd/mm/yyyy).';		
var errCar01 = 'Please enter a valid 3 letter Pick-Up City code.';		
var errCar02 = 'Please enter a valid 3 letter Drop-Off City code.';		
var errCar03 = 'The Age of the Driver should be above 21 years.';		
var errCar04 = 'Please enter a valid future pick-up date.';		
var errCar05 = 'Please eneter a valid future drop-off date.';
