// (c) RBA Software Ltd 2001
var gDelimiter=new String("|");
var gIsNav=(navigator.appName.indexOf("Netscape") >= 0);
var gIsIE=(navigator.appName.indexOf("Microsoft") >= 0);

var gAdultCounts=new Array(2,2,2,2,1,3,1,4);
var gChildCounts=new Array(0,1,0,1,0,0,0,0);

function getSelectionValue(obj) {
	if (obj && obj.selectedIndex >= 0) {
		return obj.options[obj.selectedIndex].value;
	}
	return '';
}

function getRadioValue(obj) {
	if (obj) {
		for (var i=0; i<obj.length; i++) {
			if (obj[i].checked)
				return obj[i].value;
		}
	}
	return null;
}

function showField(field,show) {
	var obj=getLayer(field);
	if (!obj) return;
	if (obj.style) {
		obj.style.visibility=show ? "visible" : "hidden";
	} else {
		obj.visibility=show ? "show" : "hide";
	}
}

function getLayer(layer) {
	if (document.all)
		return eval('document.all.'+layer);
	if (document.getElementById)
		return document.getElementById(layer);
	return eval('document.'+layer);
}

function writeToLayer(layer,text) {
	if (!layer) return;
	if (document.layers) {
		layer.document.write(text);
		layer.document.close();
	} else {
		layer.innerHTML=text;
	}
}

function setRadioValue(obj,value) {
	if (!obj || value==null) 
		return;
	if (value.length>0) {
		for (var i=0; i<obj.length; i++) {
			if (obj[i].value==value) {
				obj[i].checked=true;
				return;
			}
		}
	}
}

function setSelectionValue(obj,value) {
	if (!obj) return;
	if (value!=null) {
		if (value.length>0) {
			obj.selectedIndex= getIndexOfOption(obj, value);
		} else {
			obj.selectedIndex= -1;
		}
	}
}

function buildSelection(options,values,selected,asString) {
	var o=options.split("|");
	var v,s=str='';
	var selectedOpt;
	if (values==null) {
		v=o;
	} else {
		v=values.split("|");
	}
	selectedOpt= (selected==null) ? -1 : selected;
	for (var i=0; i < o.length; i++) {
		s=(i==selectedOpt) ? 'SELECTED ' : '';
		str+='<OPTION '+s+'VALUE="'+v[i]+'">'+o[i];
	}
	str+='</SELECT>';
	if (asString) {
		return str;
	}
	document.writeln(str);
}

function buildAdults(adults,selected,asString) {
	var opts="";
	for (var i=1; i<=adults; i++) 
		opts+="|"+String(i);
	return buildSelection(opts,opts,selected,asString);
}

function buildChildAges(ages,selected,asString) {
	var opts="  ";
	var vals=" 0";
	var j=0;
	var len=ages.length / 2;
	for (var i=0; i<len; i++) {
		var age=parseInt(ages.substr(j,2),10);
		opts+="|"+age;
		vals+="|"+age;
		j+=2;
	}
	return buildSelection(opts,vals,selected,asString);
}

function buildDayList(asString) {
	var opts=" ";
	var vals="00";
	for (var i=1; i<=31; i++) {
		opts+="|"+i;
		vals+="|"+(i<10?'0':'')+String(i);
	}
	return buildSelection(opts,vals,0,asString);
}

function buildMonthYearList(monthNames,startMonth,startYear,monthCount,asString) {
	var fullDate="";
	var fullValue="";
	var sep="|";
	var month=startMonth-1;
	var year=startYear;
	var names=monthNames.split("|");
	var isMY=gDateFormat.indexOf('M')<gDateFormat.indexOf('Y');
	for (var i=0; i<=monthCount; i++) {
		if (isMY) {
			fullDate=fullDate + sep + names[month++]+" "+year;
		} else {
			fullDate=fullDate + sep + year +" "+names[month++];
		}
		fullValue=fullValue + sep+year + "-" + ((month<10)?'0':'') + month;
		if (month==12) {
			month=0;
			year++;
		}
	}
	return buildSelection(fullDate,fullValue,0,asString);
}

function buildNumericSelection(from,count,minSize,asString) {
	var s="  ";
	var max=from+count;
	for (var i=from; i<max; i++) {
		s+="|"+pad(String(i),"0",minSize);
	}
	return buildSelection(s,null,null,asString);
}

function buildTimeSelection(asString) {
	var opts=" ";
	var vals="0";
	for (var h=0; h<24; h++) {
		for (var m=0; m<60; m+=5) {
			opts+="|"+String(h)+':'+pad(String(m),"0",2);
			vals+="|"+String(h*100+m);
		}
	}
	return buildSelection(opts,vals,asString);
}

function statusMsg(msg) {
	window.status=msg;
	return true;
}

function hideMsg() {
	window.status='';
	return true;
}

function trim(text) {
	if (text==null || text.length==0)
		return '';
	var end=text.length;
	do {
		end--;
	} while (end>=0 && text.charAt(end)==' ');
	if (end<0)
		return '';
	var start=0;
	while (text.charAt(start)==' ')
		start++;
	return text.substring(start,end+1);
}

function isEmpty(text) {
	return (trim(text).length==0);
}

function changeSelection(obj, val, newOption, newValue) {
	with (obj) {
		for (var idx= 0; idx< options.length; idx++) {
			if (options[idx].value== val) {
				options[idx].text= newOption;
				options[idx].value= newValue;
				break;
			}
		}
	}
}

function getIndexOfElement(arr, val) {
	for (var idx=0; idx< arr.length; idx++) {
		if (arr[idx]== val) {
			return idx;
		}
	}
	return null;
}
 
function pad(str,padChar,minLen,right) {
	var count=minLen - str.length;
	while (count-- > 0) 
		str=(right)?(str + padChar):(padChar + str);
	return str;
}

function getChildAgeOpt(min,max) {
	var s='';
	var delim='';
	for (var i=min; i<=max; i++) {
		s+=delim+String(i);
		delim="|";
	}
	return s;
}

function getChildAgeVal(min,max) {
	return getChildAgeOpt(min,max);
}
	
function getRoomTypeDesc(type) {
	var i=getIndexOfElement(gRoomTypeVal.split("|"),type);
	if (i==null)
		return '';
	return (gRoomTypeOpt.split("|"))[i];
}

function truncateEmptyOptions(text) {
	var optionListText= new String(text);
	for (var idx= (optionListText.length-1); idx>= 0; idx--) {
		if (optionListText.charAt(idx)!= "|") {
			return (optionListText.substring(0, (idx+1)));
		}
	}
	return optionListText;
}

function ResetForm(form) {
	form.reset();
	initForm(form);
}

function displayCalendar(event,cal) {
	var win=top.gCalWindow;
	if (!win || win.closed) {
		if (!cal)
			cal="calendar.jsp";
		win=window.open(cal,"Calendar","width=250,height=185");
		top.gCalWindow=win;
		moveWin(win,event.screenX,event.screenY);
	} else {
		if (win.closed) win.open();
		win.crtCal();
		win.focus();
	}
	return false;
}

function showBusy(text,showImage) {
	var s='<html><head>'+ parent.gStyleSheet+ '</head>';
	s+='<body><table width=100% cellspacing="0" cellpadding="0" align="center" border=0><tr>';
	s+='<td class=titlerow width="100%" align="left">'+text+'...</td></tr></table>';
	if (showImage)
		s+=parent.gWaitImage;
	s+='</body></html>';
	return s;
}

function goWait(url,submitter,target) {
	location.replace(url+'?submitter='+submitter+'&target='+target);
}

function showElementsIn(select) {
	var text='';
	var select=window.prompt("Show what?",select);
	var obj=eval(select);
	if (obj) {
		if (typeof(obj)!="object") {
			text=select+'='+obj;
		} else {
		for (var idx in obj) {
			text+=', ' + idx + '=' + obj[idx];
		}}
		alert(text);
	}
}

function addSelection(obj, newOption, newValue) {
	obj.options[obj.options.length]= new Option(newOption, newValue);
	return obj.options.length-1;
}

function addSortedSelection(obj, newOption, newValue) {
	var idx= obj.options.length;
	obj.options[obj.options.length]= new Option(' ', ' ');
	while (idx> 0 && obj.options[idx-1].text> newOption) {
		obj.options[idx].text= obj.options[idx-1].text;
		obj.options[idx].value= obj.options[idx-1].value;
		idx--;
	}
	obj.options[idx].text= newOption;
	obj.options[idx].value= newValue;
	return idx;
}

function addToOptionList(obj, newOption, newValue) {
	var idx= getIndexOfOption(obj, newValue);
	var add= idx< 0 ? true: false;
	if (add)
		idx= addSortedSelection(obj, newOption, newValue);
	setOptionSelected(obj, idx);
	return add;
}

function getIndexOfOption(obj, value) {
	if (obj.options) {
		for (var idx= 0; idx< obj.options.length; idx++) {
			if (obj.options[idx].value== value)
				return idx;
		}
	}
	return -1;
}

function setOptionSelected(obj, idx) {
	obj.options[idx].selected= true;
}

function displaySearchDest(url,width,height) {
	var win=top.gSearchDestWindow;
	var w=(width!=null)?width:600;
	var h=(height!=null)?height:450;
	if (!win || win.closed) {
		win= window.open(url,"","width="+w+",height="+h+",resizable,scrollbars");
		moveWin(win,screen.availWidth-600,30);
		top.gSearchDestWindow=win;
	} else {
		if (win.closed) win.open();
		win.location.replace(url);
		win.focus();
	}
	return false;
}

function displayEmailSearch(url,client,value) {
	var win=top.gSearchEmailWindow;
	url+='?searchClientId='+client+'&search='+escape(value);
	if (!win || win.closed) {
		win= window.open(url,"","width=800,height=400,resizable,scrollbars");
		moveWin(win,screen.availWidth-850,30);
		top.gSearchEmailWindow=win;
	} else {
		if (win.closed) win.open();
		win.location.replace(url);
		win.focus();
	}
	return false;
}

function closeWindows() {
	closeCal();
	closePopUp();
	closeSearchDest();
	closeInfo();
}

function closeCal() {
	var win=top.gCalWindow;
	if (win!= null && !win.closed)
  		win.close();
}

function closePopUp() {
	var win=top.gPopUpWindow;
	if (win!= null && !win.closed)
  		win.close();
}

function closeSearchDest() {
	var win=top.gSearchDestWindow;
	if (win!= null && !win.closed)
  		win.close();
}

function closeSearchEmail() {
	var win=top.gSearchEmailWindow;
	if (win!= null && !win.closed)
  		win.close();
}

function closeInfo() {
	var win=top.gInfoWindow;
	if (win!= null && !win.closed)
  		win.close();
}

function getStatusDesc(code,descList,codeList) {
	for (var i=0; i<codeList.length; i++) {
		if (code==codeList[i]) {
			return descList[i];
		}
	}
	return " ";
}

function setCommonCity(city, cityName, countryName) {
	var cityAndCountryName= cityName;
	if (trim(countryName).length>0)
		cityAndCountryName+=', '+countryName;
	var obj=getCityField();
	if (addToOptionList(obj, cityAndCountryName, city)) {
		var optArr= new Array(obj.options.length);
		var valArr= new Array(optArr);
		for (var idx= 0; idx< optArr.length; idx++) {
			optArr[idx]= obj.options[idx].text;
			valArr[idx]= obj.options[idx].value;
		}
		parent.gCityOpt= optArr.join("|");
		parent.gCityVal= valArr.join("|");
	}
	return true;
}

function moveWin(win,x,y) {
	win.moveTo(x,y);
}

function openPopUp(url,event,width,height,move) {
	var win=top.gPopUpWindow;
	if(width==null)
		width = 500;
	if(height==null)
		height = 500;
	if (!win || win.closed) {
		win=window.open(url,"","width=" + width + ",height=" + height + ",resizable,scrollbars");
		top.gPopUpWindow=win;
		var y=(event!=null)?event.screenY:9999;
		//moveWin(win,screen.availWidth-width,Math.min(y,screen.availHeight-height));
		if (move!=false)
			moveWin(win,screen.availWidth-width-20,20);
	} else {
		if (win.closed) win.open();
		win.focus();
		win.location.replace(url);
	}
	return false;
}

function openInfo(url,event,width,height) {
	location=url;
	return false;
}

function showItem(event,url,city,code,lang) {
	if (lang==null || trim(lang)=='')
		lang='E';
	return openInfo(url+'?city='+trim(city)+'&item='+trim(code)+'&lang='+trim(lang),event);
}

function showInfo(event,url,type,city,item,lang) {
	if (type=='HH' || type=='AA')
		return showItem(event,url,city,item,lang);
	return openPopUp(url+'?type='+escape(type)+'&city='+escape(city)+'&item='+escape(item),event,400,200,false);
}

function showPics(event,url,city,code,lang) {
	//return openInfo(url+trim(city)+'/'+trim(code)+'/01/08',event);
	return showItem(event,url,city,code,lang);
}

function showMap(event,url,city,code) {
	return openPopUp(url+trim(city)+'-'+trim(code)+'.JPG',event,400,300,false);
}

function getKeyEvent(event) {
	if (event.keyCode)
		return event.keyCode;
	if (event.which)
		return event.which;
	return 0;
}

function editKey(event,delimiters) {
	var key=getKeyEvent(event);
	if (key==8 || key==9) return true;
	var chr=String.fromCharCode(key);
	if (delimiters==null)
		delimiters='/\\d/';
	var exp=eval(delimiters);
	return chr.match(exp)!=null;
}

function openPaymentPopUp(url,event) {
	var win=top.gPaymentWindow;
	if (!win || win.closed) {
		win=window.open(url,"Payment","width=400,height=500,resizable,scrollbars,status");
		top.gPaymentWindow=win;
		var y=(event!=null)?event.screenY:9999;
	} else {
		if (win.closed) win.open();
		win.focus();
		win.location.replace(url);
	}
	return false;
}

function closePaymentPopUp() {
	var win=top.gPaymentWindow;
	if (win!= null && !win.closed)
  		win.close();
}

function setCookie(name,value,expires,path,domain,secure) {
	document.cookie = name + "=" + escape(value) +
	((expires)? "; expires=" + expires.toGMTString() : "") +
	((path)? "; path=" + path : "") +
	((domain)? "; domain=" + domain : "") +
	((secure)? "; secure=" + secure : "");
}

function roll(imgName,rollover) {
	document.images[imgName].src = gRoll[rollover].src;
}

function buildDateSelection(dayField,mthField,monthNames,startMonth,startYear,monthCount,asString) {
	var dayList=dayField+buildDayList(true);
	var mthList=mthField+buildMonthYearList(monthNames,startMonth,startYear,monthCount,true);
	var isDM=gDateFormat.indexOf('D')<gDateFormat.indexOf('M');
	var s= isDM ? dayList+mthList: mthList+dayList;
	if (asString) {
		return s;
	}
	document.writeln(s);
}
