//(lyubobg, 2007-05-14) Array for storing all autocomplete objects
var allAutoCompleteObjects = new Array();
var __months=['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
var __monthsLong=['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
var __weekdays=['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
var isMozilla = !(document.all);
var __lcid = 1033;
var ie = (document.all);
var ns=(document.layers);
var w3=(document.getElementById && !ie);
var minStayPreset = null;
var maxStayPreset = null;

// JS validation
var _bindEvent = function(el, evname, func) {
	if (el.attachEvent) { // IE
		el.attachEvent("on" + evname, func);
	} else if (el.addEventListener) { // Gecko / W3C
		el.addEventListener(evname, func, true);
	} else {
		el["on" + evname] = func;
	}
};
function checkJS(){
	var __JS=document.createElement('input');
	__JS.type='hidden';
	__JS.name='hasJS';
	__JS.value='true';
	document.forms[0].appendChild(__JS);
	return true;
}
if(isMozilla)
{
	HTMLElement.prototype.__defineGetter__("innerText", function () 
		{
			var r = this.ownerDocument.createRange();
			r.selectNodeContents(this);
			return r.toString();
		}
	);
	HTMLElement.prototype.__defineSetter__("innerText", function (str) 
		{
			this.innerHTML = str;
		}
	);
}
var DATEFORMAT = 'MM/dd/yyyy';
var __key, __form, __loading, __ez, __trips, __scroller, __stops, __airlines, __cities, __total;
var reload = true;
function redirect(res){
	reload = false;
	var lc = (res.value != null) ? res.value : document.location; 
	document.location = lc+'&rnd='+Math.random();
	return false;
}
//(lyubobg, 2007-04-03) open flight details in new window on the results page, without header and footer
function redirectNewWindow(res){
	reload = false;
	var lc = (res.value != null) ? res.value : document.location; 
	//document.location = lc+'&rnd='+Math.random();
	rulesWindow.location=lc+'&rnd='+Math.random();
	rulesWindow.focus();
	return false;
}
function onBuy(id){
	reload = false;
	EzSearch.Ajaxes.OnBuy(__key, id, redirect);
	return false;
}
function onTD(id){
	reload = false;
	//(lyubobg, 2007-04-03) open flight details in new window on the results page, without header and footer
	//(lyubobg, 2007-05-11) Set the currency if specified specific culture info in the request __lcid
	EzSearch.Ajaxes.OnTD(__key, id, __lcid, redirectNewWindow);
	return false;
}
function onAS(id){
	reload = false;
	EzSearch.Ajaxes.OnAS(__key, id, redirect);			
	return false;
}
var total = 1;
function doPr(){
	//var p = document.getElementById('progbar');
	//if (reload && p){
	//	p.style.width = ( total % 100 ) + '%';
	//	total += 2;
	//}
}
function El(tag, parent, rowspan){
	var el=document.createElement(tag);
	if (rowspan)
		el.rowSpan=rowspan;
	if(parent)
		parent.appendChild( el );
	el.getText=El.prototype.getText;
	el.setText=El.prototype.setText;
	el.setHtml=El.prototype.setHtml;
	return el;
}
El.prototype.getText=function(){
	return this.innerText;
}
El.prototype.setText=function(val){
	this.innerText=val;
}
El.prototype.setHtml=function(val){
	this.innerHTML=val;
}
function doSort(tab, sort){
	var tabs=document.getElementById('sortTabs');
	for(var i=0;i<tabs.childNodes.length;++i){
		tabs.childNodes[i].className='';
	}
	document.getElementById(tab).className='on';
	__ez.applySort(__trips, sort);
	
	return false;
}
__trips=new Array();
var __totalCount = 0;
function setResultsCount(count){
	if (count > 0 && __total ){
		__totalCount+=count; 
		__total.innerHTML=__totalCount+' results found so far&#8230;';
	}
}
var progress_counter = 0;
var timeout_mils = 120000;
var execTimeout = false, recover = null;
function onLoad (res){
	if (!reload)
		return;	
	if (recover == null){
	    recover = window.setInterval(function(){execTimeout = true; clearInterval(recover);}, timeout_mils)
	}
    progress_counter++;
	var val = res.value;
	var hldr = document.getElementById(__form);
	if (execTimeout){ //2m
	    execTimeout = false;
		EzSearch.Ajaxes.endGetMoreResults(__key, __lcid, onLoad);
		return;
	}
	if (val == null) // error ? - reset
	{
		doPr();
		EzSearch.Ajaxes.getMoreResults(__key, __lcid, onLoad);
		return;
	}
	if (typeof hldr != 'undefined' && (res.value[0] == 'end' || val[0] == 'con') ){
		var cnt = document.createElement('div');
		cnt.innerHTML = val[1];
		hldr.innerHTML = '';
		hldr.appendChild(cnt);

		if (val[2] && val[2][0]){
			if (__ez == null)
				__ez = new Trips(document.getElementById('Results'));
			__ez.setContainer(document.getElementById('Results'));
			var arr=eval(val[2][0]);
			var offset = __trips.length;
			
			for(var i=0;i<arr.length;++i){
				//__trips[i+offset] = 
				__ez.AddTrip(arr[i][0]);
			}
			__ez.applySort(__trips, 'Price');
			setResultsCount(arr.length);
		}
	}
	if (val[0] == 'err')
	{
		reload = false;
		document.location = document.location+'&rnd='+Math.random();
		return;
	}
	if (val[0] != 'end')
	{
		doPr();
		EzSearch.Ajaxes.getMoreResults(__key, __lcid, onLoad);
	}
	else{
		if(document.getElementById(__loading))
			document.getElementById(__loading).style.display='none';
			if (val[2]){
				if (val[2][3]){//e & vacation
					var slider = document.getElementById('Slider');
		            var container = document.getElementById('Redesign_Container');
		            var outboundCells = document.getElementById('outboundCells');
		            var returnCells = document.getElementById('returnCells');
		            var outboundSet = document.getElementById('outboundFieldset');
		            var returnSet = document.getElementById('returnFieldset');
		            __scroller = new Scroller(slider, container, outboundCells, returnCells, outboundSet, returnSet);
					if (val[2][2]) {
						__scroller.Init( eval(val[2][1]), eval(val[2][2]) );
					}
					else{
						__scroller.Init( eval(val[2][1]), new Object() );	
					}
					var listCol = document.getElementById('listCol');
					var airlineList = El('ul', listCol);
					var stopsList = El('ul', listCol);
					__airlines = new AirlinesList( airlineList, eval(val[2][3]) );
					__stops = new StopsList( stopsList, eval(val[2][4]) );
					
					if (val[2][5]){
						var cityList = El('ul', listCol);
						__cities = new CitiesList( cityList, eval(val[2][5]) );
						moveTabs('mat_cities');
						__cities.show();__airlines.hide();
					}
					else{
						moveTabs('mat_air');
						__airlines.show();
					}
				}
				else{
					if (val[2][1]){
						var clist=document.getElementById('cpMC');
						__cities = new MCitiesList( clist, eval(val[2][1]) );
					}
				}
			}
	}
}
function moveTabs(curr){
    var t=document.getElementById('matSortTab');
    var lis=t.childNodes;
    for(var i=0;i<lis.length;++i){
        if (lis[i].nodeName.toLowerCase() != 'li')
            continue;
        if (lis[i].id == curr){
            lis[i].className='on';
        } else{
            lis[i].className='';
        }
    }
}
function CopyValue (srcEl, destEl)
{
	if (typeof(srcEl) == "string") srcEl = document.getElementById(srcEl);
	if (typeof(destEl) == "string") destEl = document.getElementById(destEl);
	destEl.value = srcEl.value;
}

function openWindow(url, title, width, height){
	if (width == undefined)
		width = 320;
	if (height == undefined)
		height = 370;
	window.open(url, title, 'status=1,scrollbars=1,width='+width+',height='+height);
	return false;
}
function openWindow2(url, title, width, height){
	if (width == undefined)
		width = 320;
	if (height == undefined)
		height = 370;
	return window.open(url, title, 'status=1,scrollbars=1,width='+width+',height='+height);
}
function openWindow_noscroll(url, title, width, height){
	if (width == undefined)
		width = 320;
	if (height == undefined)
		height = 370;
	window.open(url, title, 'status=1,scrollbars=0,width='+width+',height='+height);
	return false;
}

function fixDateTime(target, refDate, limitDate, me, dir){
var format = DATEFORMAT;
	if (document.getElementById(refDate)) {
		var baseDate = new Date ( document.getElementById(refDate).value );
		var endDate = new Date ( document.getElementById(limitDate).value );
		
		var crct = document.getElementById(me);
		var refDateTime = new Date( baseDate.setHours(dir * 24 * parseInt(crct.value)) );
		document.getElementById(target).value = formatDate(refDateTime, format);
	}
}
var DAYSOFFSET = 14;

function fixStopDate (depart, returnn, minstay){
	var dep = document.getElementById(depart);
	var ret = document.getElementById(returnn);
	var stay = document.getElementById(minstay);

	var depDate = new Date (dep.value);
	var retDate = new Date (ret.value);

	var sel = "0";
	if (depDate && retDate){
		var diff = Math.ceil( (retDate.getTime() - depDate.getTime()) / 86400000 );
		if (diff<=0){
			var newDate = new Date(dep.value);
			//ret.setAttribute ('startDate', formatDate(newDate,  DATEFORMAT ) );
			newDate = new Date( newDate.setHours(24 * 7) );
			ret.value = formatDate( newDate,  DATEFORMAT);
			retDate = newDate;
			diff = Math.ceil( (retDate.getTime() - depDate.getTime()) / 86400000 );
		}
		
		var ispostback = stay.options.length == 1;
		for(var i=stay.options.length-1;i>=0;i--){
			if (stay.options[i].selected && (ispostback || i != 0) ) // after pb we have one item, otherwise last item is always selected...
				sel = stay.options[i].value;
			stay.remove(i);
		}
		
		for (var i=Math.max(0, diff-14);i<diff;i++){
			var opt = document.createElement("OPTION");
			opt.value = (i + 1);
			opt.text = (i + 1) + ' days';
			stay.options.add(opt);
			//if (opt.value == sel)
				//stay.options[stay.options.length-1].selected = true;
		}
		//if ( stay.selectedIndex == -1 )
			stay.options[stay.options.length-1].selected = true;
	}
}
function onDateChanged(depart, latDep, returnn, latRet, minstay, maxstay)
{
	var min = 0;
	var max = 0;
	var dt = 86400000;
	var d, d2, r, r2;
	
	var dep = document.getElementById(depart);
	var ldep = document.getElementById(latDep);
	
	var ret = document.getElementById(returnn);
	var lret = document.getElementById(latRet);
	
	var minDD = document.getElementById(minstay);
	var maxDD = document.getElementById(maxstay);
	
	if (dep.value){
		var d = new Date( dep.value );
		if (d.getFullYear() < 2000 || d.getFullYear() >= 2100){
			d.setFullYear( new Date().getFullYear() );
			dep.value = formatDate( d, DATEFORMAT);
		}
		if (ldep && ldep.value){
			//ldep.setAttribute( 'startDate', formatDate(d, DATEFORMAT) );
			var d2 = new Date( ldep.value );
			if (d2.getFullYear() < 2000 || d2.getFullYear() >= 2100)
			{
				d2.setFullYear( new Date().getFullYear() );
				ldep.value = formatDate( d2, DATEFORMAT);
			}
			if (d2 < d)
			{	
				ldep.value = '';
				d2 = d;
			}
		}
		else
			d2 = d;
	}
	else
		return; // dep value is null
	if (ret.value){
		var r = new Date( ret.value );
		if (r.getFullYear() < 2000 || r.getFullYear() >= 2100)
		{
			r.setFullYear( new Date().getFullYear() );
			ret.value = formatDate( r, DATEFORMAT);
		}
		if (lret && lret.value){
			var r2 = new Date( lret.value );
			if (r2.getFullYear() < 2000 || r2.getFullYear() >= 2100)
			{
				r2.setFullYear( new Date().getFullYear() );
				lret.value = formatDate( r2, DATEFORMAT);
			}
			if (r2 < r)
			{	
				lret.value = '';
				r2 = r;
			}
		}
		else
			r2 = r;
	}
	else
		return; // ret value is null
		
	if (r < d)
	{
		var newr = new Date(d);
		ret.value=formatDate(new Date(newr.setHours(24 * 14)), DATEFORMAT); // Move 2 weeks forward
		r = new Date( ret.value );
		r2 = r;
		if (lret)
			lret.value='';
	}
	min = Math.ceil( (r.getTime() - d2.getTime()) / 86400000 );
	max = Math.ceil( (r2.getTime() - d.getTime()) / 86400000 );
	//max = Math.min(max, 60); // set max of 60 days interval to limit dropdown length
	if (!minDD || !maxDD)
		return;
		
	// fix min and max
	max = Math.max(min, max);
	if (!isNaN(min) && !isNaN(max)){
		var i;
		var lenX = minDD.options.length;
		var lenY = maxDD.options.length;
		for(var i=minDD.options.length-1;i>=0;i--){
			minDD.remove(i);
		}
		for(var i=maxDD.options.length-1;i>=0;i--){
			maxDD.remove(i);
		}
		min = Math.max(min, 0);
		if (min == 0){
			for(var i=1;i<=12;i++){
				var opt = document.createElement("OPTION") ;
				opt.text = i + ' hours' ;
				opt.value = i/100;
				minDD.options.add(opt);
				var opt = document.createElement("OPTION") ;
				opt.text = i + ' hours' ;
				opt.value = i/100;
				maxDD.options.add(opt);
			}
			if (max > 0){
			for(var i=1;i<=max;i++){
				var opt = document.createElement("OPTION") ;
				opt.text = i + ' days' ;
				opt.value = i;
				minDD.options.add(opt);
				var opt = document.createElement("OPTION") ;
				opt.text = i + ' days' ;
				opt.value = i;
				maxDD.options.add(opt);
			}
			}
		} 
		else {
			for(var i=min;i<=max;i++){
				var opt = document.createElement("OPTION") ;
				opt.text = i + ' days' ;
				opt.value = i;
				minDD.options.add(opt);
			}

			for(var i=min;i<=max;i++){
				var opt = document.createElement("OPTION") ;
				opt.text = i + ' days' ;
				opt.value = i;
				maxDD.options.add(opt);
				if (i > min+DAYSOFFSET)
					break;
			}
		}
		//		maxDD.options[maxDD.options.length-1].selected = true;
		
		minStayPreset = Math.min(minStayPreset, minDD.options[maxDD.options.length-1].value);
		maxStayPreset = Math.min(maxStayPreset, maxDD.options[maxDD.options.length-1].value);
		if (minStayPreset)
		{
			minDD.options.value=minStayPreset;
		}
		if (maxStayPreset)
		{
			maxDD.options.value=maxStayPreset;
		}
		//if (!minDD.options.value && minDD.options.length > 0)
		if (minDD.options.length > 0)
			minDD.options[0].selected = true;
		//if (!maxDD.options.value && maxDD.options.length > 0)
		if (maxDD.options.length > 0)
			maxDD.options[maxDD.options.length-1].selected=true;
	}
}
function fixStayInterval(depart, latDep, returnn, latRet, minstay, maxstay){
	var minDD = document.getElementById(minstay);
	var maxDD = document.getElementById(maxstay);
	var dep = document.getElementById(depart);
	var ret = document.getElementById(returnn);
	var lret = document.getElementById(latRet);

	var start = parseInt(minDD.value);
	
	if (lret){
		// standard date picker
		if (dep.value){
			var d = new Date( dep.value );
			if (lret.value)
				var r = new Date( lret.value );
			else if (ret.value)
				var r = new Date( ret.value );
			if (r)
				max = Math.ceil( (r.getTime() - d.getTime()) / 86400000 );
		}
	} else
	{
		// date picker with biased dates
		max = parseInt(minDD.options[minDD.options.length-1].value);
	}

	if (max <= 0){
		// Hours
		max = parseFloat(minDD.value);
		max = max * 100;
		for(i=maxDD.options.length-1;i>=0;i--){
			maxDD.remove(i);
		}
		for(i=max;i<=12;i++){
			var opt = document.createElement("OPTION") ;
			opt.text = i + ' hours' ;
			opt.value = i/100;
			maxDD.options.add(opt);
		}
	} else {
		var sel = 0;
		for(i=maxDD.options.length-1;i>=0;i--){
			if (maxDD.options[i].selected)
				sel = maxDD.options[i].value;
			maxDD.remove(i);
		}
		for(i=start;i<=max;i++){
			var opt = document.createElement("OPTION") ;
			opt.text = i + ' days' ;
			opt.value = i;
			if (sel = i)
				opt.selected = true;
			maxDD.options.add(opt);
			if (i > start+DAYSOFFSET)
				break;
		}
	}
	if (maxDD.options.length)
		maxDD.options[maxDD.options.length-1].selected = true;
}
function changeStayInterval2(chk1, chk2, depart, returnn, minstay, maxstay){
	var dep = document.getElementById(depart);
	var ret = document.getElementById(returnn);
	var minDD = document.getElementById(minstay);
	var maxDD = document.getElementById(maxstay);
	var chkbox1 = document.getElementById(chk1);
	var chkbox2 = document.getElementById(chk2);

	var dOffset = chkbox1.checked ? 1 : 0;
	var rOffset = chkbox2.checked ? 1 : 0;

	var startDate = new Date( dep.value );
	var endDate = new Date( ret.value );
	var startDate2 = new Date( dep.value );
	startDate2.setHours(24 * dOffset);
	var endDate2 = new Date( ret.value );
	endDate2.setHours(24 * rOffset);
	
	var min = Math.ceil( (endDate.getTime() - startDate2.getTime()) / 86400000 );
	var max = Math.ceil( (endDate2.getTime() - startDate.getTime()) / 86400000 );
	
	var dif = Math.ceil( (endDate.getTime() - startDate.getTime()) / 86400000 ); // days
	
	for(var i=maxDD.options.length;i>=0;i--)
		maxDD.remove(i);
	for(var i=minDD.options.length;i>=0;i--)
		minDD.remove(i);

	for (var i=min;i<=max;i++){
		var opt = document.createElement("OPTION");
		opt.value = i;
		opt.text = i + ' days';
		minDD.options.add(opt);
	}
	for (var i=min;i<=max;i++){
		var opt = document.createElement("OPTION");
		opt.value = i;
		opt.text = i + ' days';
		maxDD.options.add(opt);
	}
	if (maxDD.options.length)
		maxDD.options[maxDD.options.length-1].selected = true;
}
function changeStayInterval(depart, ret, minstay, maxstay, latestDep, latestRet, fixStart){
	var startDate = new Date( document.getElementById(depart).value );
	var endDate = new Date( document.getElementById(ret).value );
	
// Fix startDate and endDate to latest datetime
	var fixSource;
	var _endDate;
	if (fixStart){
		var _d1 = new Date ( document.getElementById(depart).value );
		_d1 = new Date ( _d1.setHours(24) );
		//document.getElementById(ret).setAttribute('startDate', formatDate(_d1, DATEFORMAT) );
		var currDate = new Date( document.getElementById(ret).value );
		if (currDate < _d1){
			//var nextDate = new Date( _d1.setHours(6*24) );
			var nextDate = new Date( _d1.setHours(1*24) );
			document.getElementById(ret).value = formatDate(nextDate, DATEFORMAT);
			endDate = nextDate;
			document.getElementById(latestRet).value='';
		}
		// set start and end dates for latest field
		fixSource = document.getElementById(depart);
		var _ed = document.getElementById(ret).value;
		var maxDaysOffset = new Date( fixSource.value ).setHours(DAYSOFFSET*24);
		var fromEndDate = new Date ( _ed ).valueOf(); 
		_endDate = formatDate( new Date( Math.min(fromEndDate, maxDaysOffset) ), DATEFORMAT);
		//document.getElementById(latestDep).setAttribute('startDate', fixSource.value);
		//document.getElementById(latestDep).setAttribute('endDate', _endDate);
		document.getElementById(latestDep).value='';
	}
	else{
		document.getElementById(latestRet).value='';
	}

	var minDD = document.getElementById(minstay);
	var maxDD = document.getElementById(maxstay);
	var dif = Math.ceil( (endDate.getTime() - startDate.getTime()) / 86400000 ); // days

	var sel1 = 0;
	var sel2 = 0;
	for(var i=minDD.options.length;i>=0;i--){
		if (minDD.options[i].selected)
			sel1 = minDD.options[i].value;
		minDD.remove(i);
	}
	for(var i=maxDD.options.length;i>=0;i--){
		if (maxDD.options[i].selected)
			sel2 = maxDD.options[i].value;
		maxDD.remove(i);
	}
	if ( isNaN(dif) )
		return;
	for(var i=0;i<DAYSOFFSET;i++){
		var option1 = document.createElement("OPTION") ;
		var option2 = document.createElement("OPTION") ;
		option1.text = (dif - i ) + ' days' ;
		option1.value = dif - i;
		option2.text = (dif + i) + ' days' ;
		option2.value = dif + i;
		if (sel1 == dif - i)
			option1.selected = true;
		if (sel2 == dif + i)
			option2.selected = true;
		if	(dif - i > 0)
			minDD.options.add(option1, 0);
		maxDD.options.add(option2);
	}
}
function adjustStayInterval(sdate, edate, stay){
	var startDate = new Date( document.getElementById(sdate).value );
	var endDate = new Date( document.getElementById(edate).value );
	var stayDD = document.getElementById(stay);
	var dif = Math.ceil( (endDate.getTime() - startDate.getTime()) / 86400000 ); // days
	
	for(var i=0;i<stayDD.options.length;i++)
		stayDD.options[i].selected = stayDD.options[i].value == dif;
}
function formatDate(date, format){
	var year, month, day;
	var ry, rm, rd;
	if (format.indexOf('yyyy') >= 0){
		year = date.getFullYear();
		ry = 'yyyy';
	}
	else if (format.indexOf('yy') >= 0){
		year = date.getFullYear().substr(2, 2);
		ry = 'yy';
	}
	if (format.indexOf('MMM') >= 0){
		var months = new Array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
		month = months[date.getMonth()];
		rm = 'MMM';
	} else 	if (format.indexOf('MM') >= 0){
			month = date.getMonth() + 1;
			if (month < 10) 
				month = '0' + month;
			rm = 'MM';
	} else 	if (format.indexOf('M') >= 0){
			month = date.getMonth() + 1;
			rm = 'M';
	}
	if (format.indexOf('dd') >= 0){
		day = date.getDate();
		if (day < 10)
			day = '0' + day;
		rd = 'dd';
	} else if (format.indexOf('d') >= 0){
		day = date.getDate();
		rd = 'd';
	}
	return format.replace(ry, year).replace(rm, month).replace(rd, day);
}

function isAgreed(agrID){
	if (document.getElementById(agrID).checked)
		return true;
	else{
		alert ('You must accept Terms and conditions prior proceeding with registration');
		return false;
	}
}

function syncSize(pane){
	var documentWidth;
	var documentHeight;
	if (ie)
      {
      documentWidth=document.body.offsetWidth; ///2+document.body.scrollLeft-20;
      documentHeight=document.body.offsetHeight; ///2+document.body.scrollTop-20;
      } 
    else if (ns)
      {
      documentWidth=window.innerWidth;
      documentHeight=window.innerHeight;
      } 
    else if (w3)
      {
      documentWidth=self.innerWidth;
      documentHeight=self.innerHeight;
      } 

    pane.style.width=documentWidth;
    pane.style.height=documentHeight;
	pane.style.paddingTop = "100px";

	//pane.style.height = window.screen.availHeight + "px";
	//pane.style.paddingTop = "100px";
	//pane.style.width = window.screen.availWidth + "px";
}
function setCustom(id){
	var cst = document.getElementById(id).nextSibling;
	if (document.getElementById(id).value == '0')
		cst.style.display='block';
	else
		cst.style.display='none';
}
function setValue (id, val){
	val = parseInt(val);
	var cst = document.getElementById(id).nextSibling;
	var dd = document.getElementById(id);
	if (val > 30){
		alert('Select value less than 30 days');
		return;
	}
	if (val){
		var exists = false;
		for(i=0;i<dd.length;++i){
			if (dd.options[i].value == val){
				exists = true;
				dd.options[i].selected=true;
			}
		}
		if (!exists){
			dd.remove(dd.length-1);
			var opt = document.createElement("OPTION");
			opt.value = val;
			opt.text = val+' days';
			dd.options.add(opt);
			dd.options[dd.options.length-1].selected=true;
			opt = document.createElement("OPTION");
			opt.value = "0";
			opt.text = 'Other...';
			dd.options.add(opt);
		}
		cst.style.display='none';
	}
}
function preSet(lid, eid){
	var lt = document.getElementById(lid);
	var ea = document.getElementById(eid);
	lt.select();
	if (lt && lt.value == '')
		lt.value = ea.value;
}

var cell;
function go(dir, tid, b, max){
    var bar = document.getElementById(b);
    var bars = bar.getElementsByTagName('li');
        for(var i=0;i<bars.length;++i){
            if (bars[i].className == 'next')
                bars[i].style.display = dir ? 'none' : 'block';
            if (bars[i].className == 'prev')
                bars[i].style.display = dir ? 'block' : 'none';
        }
    var a=document.getElementById(tid);
    var tr=a.getElementsByTagName('tr');
    for(var r=0;r<tr.length;++r){
        var td=tr[r].getElementsByTagName('td');
        for (var t=1;t<td.length;++t){
            if ( (dir && t > max-1) || (!dir && t <= max-1) ){ // we have ont 'th' in this row, so start 1 before	
					td[t].style.display='block';
            } else
                td[t].style.display='none';
        }                    
        var th=tr[r].getElementsByTagName('th');
        for (var t=2;t<th.length;++t){
            if ( (dir && t > max) || (!dir && t <= max) ){
                th[t].style.display='block';
            } else
                th[t].style.display='none';
        }                    
    }
}
//*************************************************************************
// Autocomplete Functions
//*************************************************************************
var acs=new Array();
function AutoComplete(oText, oDiv, fnType, nMaxSize, callback, param1, param2, param3)
{
	if (!oText || !oDiv)
		return; // not supported!
	// initialize member variables
	
	this.oText = oText; // the text box
	innerDiv = document.createElement("div");
	innerDiv.className="acForm";// Create inner div to hold the items
	oDiv.appendChild(innerDiv);
	this.oDiv = innerDiv; // a hidden <div> for the popup auto-complete
	this.oDiv.id=oText.id+"_div";
	this.nMaxSize = nMaxSize;
	this.offset = 0;
	this.shim = null;
	this.failedText = null;
	this.txt = null;
	this.loading = false;
	this.sugg = new Object();
	this.sugg.length = 0;
	this.fnType = fnType;
	this.callback = callback;
	this.params = new Array();
	this.params[0] = param1;
	this.params[1] = param2;
	this.params[2] = param3;
	// attach handlers to the text-box 
	oText.AutoComplete = this;
	oText.onkeyup = AutoComplete.prototype.onTextChange;
	if (ie || isMozilla){
		oText.onkeydown = AutoComplete.prototype.OnKeyDown;// mozilla
		oText.onkeypress = AutoComplete.prototype.OnKeyPress;// mozilla
	}
	else
		oText.onkeydown = AutoComplete.prototype.OnKeyPress;	 // IE
	if (ie && document.all.urns){ // hide elements for IE
		this.shim = document.createElement('<iframe src=\'blank.html\' scrolling=\'no\' frameborder=\'0\' style=\'position:absolute;top:21px; left:0px;\'></iframe>');
		this.shim.style.visibility='hidden';
		this.oDiv.offsetParent.appendChild(this.shim); 
	}
	oText.originalonblur = oText.onblur;
	oText.originalonfocus = oText.onfocus;
	oText.onblur = AutoComplete.prototype.onTextBlur;
	oText.onfocus = AutoComplete.prototype.onTextFocus;
	acs[acs.length]=this;
	this.visible=false;
	//(lyubobg, 2007-05-14) Add the current object into the Array with all autocomplete objects
	allAutoCompleteObjects.push(this);
}
AutoComplete.prototype.onTextBlur = function()
{
	this.AutoComplete.onblur();
	this.originalonblur();
}
AutoComplete.prototype.onTextFocus = function()
{
	this.select();
	this.AutoComplete.hideInactive();
	this.AutoComplete.visible=true;
	this.originalonfocus();
}
AutoComplete.prototype.show = function()
{
//	if (!this.visible && !override)
//		return;
    //(lyubobg, 2007-05-14) Hide all other possibly active autocomplete objects
    for (var i=0;i<allAutoCompleteObjects.length;i++) {
       if (this!=allAutoCompleteObjects[i])
          allAutoCompleteObjects[i].hide();
    }
	if (!ie){ // Firefox expects Dom 2.0
		this.oDiv.style.left = this.oText.offsetLeft+'px';
		this.oDiv.style.top = this.oText.offsetTop+this.oText.offsetHeight+'px';
	}
	else{
		this.oDiv.style.left = this.oText.offsetLeft;
		this.oDiv.style.top = this.oText.offsetTop+this.oText.offsetHeight;
	}
	if (this.shim){
		this.shim.style.visibility = "visible";
		this.shim.style.left = this.oDiv.style.left;
		this.shim.style.top = this.oDiv.style.top;
		this.shim.width = this.oDiv.offsetWidth;
		this.shim.height = this.oDiv.offsetHeight;
	}
	this.oDiv.style.visibility = "visible";
	
//	if (!this.visible)
//		this.hide();//check again..
}
AutoComplete.prototype.hide = function()
{
	document.title='';
	this.visible=false;
	this.oDiv.innerHTML = "";
	this.oDiv.style.visibility = "hidden";
	if (this.shim){
		this.shim.style.visibility = "hidden";
	}		
}
AutoComplete.prototype.hideInactive = function()
{	
	for(var i=0;i<acs.length;++i){
		if (acs[i] != this){
			acs[i].hide();
		}
	}
}
AutoComplete.prototype.onblur = function()
{
	this.hide();
}
AutoComplete.prototype.onTextChange = function()
{
	this.AutoComplete.onchange();
}
AutoComplete.prototype.onchange = function()
{
	this.txt = this.oText.value;
	if (this.txt.length < 3){
		this.sugg = new Object();
	}
	if (this.txt.length < 3) // || (this.failedText && this.txt.indexOf(this.failedText) >= 0) )// if trying a failed string?
		return true;
	if ( !this.loading && this.txt != this.str ){
		this.loading = true;
		this.str = this.txt;
		switch(this.fnType){
			case 'sa':
				EzSearch.Ajaxes.sa(this.txt, this.processResult, this);
				break;
			case 'spf':
				EzSearch.Ajaxes.spf(this.txt, this.params[0], this.processResult, this);
				break;
			case 'spl':
				EzSearch.Ajaxes.spl(this.txt, this.params[0], this.processResult, this);
				break;
		}
	}
	if ( this.sugg.length )
		this.offset = Math.min(this.sugg.length, this.offset);
	if ( this.sugg.length >= 1 )// || (this.sugg.length == 1 && this.sugg[0].indexOf(this.oText.value.substr(0, 10)) < 0) )
	{
		while ( this.oDiv.hasChildNodes() ) 
			this.oDiv.removeChild(this.oDiv.firstChild);
		this.itemCount = this.sugg.length;

		var elementsCount = Math.min(this.nMaxSize, this.itemCount);
 		for ( var i = 0; i < elementsCount; ++i )
		{
			var oDiv = document.createElement('div');
			this.oDiv.appendChild(oDiv);
			var oHref = document.createElement('a')
			oHref.href='javascript:void(0);';
			var itms = this.sugg[i].split('|');
            
// (lyubobg, 2007-02-25) String format has been changed from TRUE,AIRPORT_DATA to AIRPORT_DATA,TRUE... 
//in order to apply
// alpabetically sorting of the airport codes names, TRUE,FALSE indicates if the airport is multi
//For more information look at the Ajax method is declared in Lessno/App_Code/Ajaxes.cs
//public static string[] sa(string key) //SuggestAirports
            if (this.fnType=="sa") {
                var tempVar=itms[0];
                itms[0]=itms[1]
                itms[1]=tempVar;
            }

			if (itms[0] == "True")// Multi airport
				oHref.style.fontWeight='bold';
//			if (ie)
//				oHref.innerHTML=itms[0].replace(this.txt, '<strong>'+this.txt+'</strong>');
//			else

				oHref.innerHTML=itms[1];
			var hdnID = document.createElement('input');
			hdnID.type = 'hidden';
			hdnID.value=itms[2];
			oDiv.appendChild(oHref);
			oDiv.appendChild(hdnID);
			if (this.offset == i || (i == elementsCount-1 && this.offset >= elementsCount)){
				oDiv.style.background='#dddddd';
				if (this.offset >= elementsCount)
					this.offset = i;	
			}
			oDiv.onmousedown = AutoComplete.prototype.onDivMouseDown;
			oDiv.onmouseover = AutoComplete.prototype.onDivMouseOver;
			oDiv.onmouseout = AutoComplete.prototype.onDivMouseOut;
			oDiv.AutoComplete = this; 
		}
		this.show();
	}
	else // hide the popup-div
	{
		this.hide();
	}
}
AutoComplete.prototype.processResult = function (res){
	if (!res.error){
		var ctx = this[1];
		ctx.sugg = res.value;
		if (!ctx.sugg.length)
			ctx.failedText = ctx.txt;
		ctx.loading = false;
		ctx.oText.onkeyup();
	}
}
AutoComplete.prototype.OnKeyDown = function(oEvent)
{
	if (typeof oEvent == 'undefined' ) 
		oEvent = window.event;
	var iKeyCode = oEvent.keyCode;
	if (iKeyCode == 38) // Up arrow
	{
		(this.AutoComplete.offset-1)>=0 && --this.AutoComplete.offset;
	}
	if (iKeyCode == 40) // Down arrow
	{
		(this.AutoComplete.offset+1)<this.AutoComplete.itemCount && ++this.AutoComplete.offset;
	}
	return true;
}
AutoComplete.prototype.OnKeyPress = function(oEvent)
{
	//check for the proper location of the event object
	if (typeof oEvent == 'undefined' ) 
		oEvent = window.event;
	var iKeyCode = oEvent.keyCode;
	if (iKeyCode == 13){
		var children;
		var div = this.AutoComplete.oDiv;
		if( typeof div.children == 'undefined' ) {
			// Mozilla
			children = div.childNodes;
		}
		else {
			// IE 
			children = div.children;
		}
		if (children[this.AutoComplete.offset])
		{
			this.AutoComplete.onFinished(children[this.AutoComplete.offset]);
//			this.AutoComplete.oText.value = children[this.AutoComplete.offset].firstChild.innerHTML;
//			this.AutoComplete.selectedID = children[this.AutoComplete.offset].lastChild.value;
		}
		if (this.AutoComplete.shim)
			this.AutoComplete.shim.style.visibility = "hidden";
		
		this.AutoComplete.hide();
		return false;
	}
	return true;
}
AutoComplete.prototype.onDivMouseDown = function()
{
	// set the text-box value to the word
	this.AutoComplete.onFinished(this);
}
AutoComplete.prototype.onDivMouseOver = function()
{
	// assumes the existence of a CSS style called AutoCompleteHighlight
	this.className = "AutoCompleteHighlight";
}
AutoComplete.prototype.onDivMouseOut = function()
{
	// assumes the existence of a CSS style called AutoCompleteBackground
	this.className = "AutoCompleteBackground";
} 
AutoComplete.prototype.onFinished = function(element)
{
	// set the text-box value to the word
	this.oText.value = element.firstChild.innerHTML;
	this.selectedID = element.lastChild.value;
	if (this.callback)
		this.callback(this.selectedID, this.params[0], this.params[1], this.params[2]);
}
/******************************/
function showHide(objID){
	var el;
	if ( (el = document.getElementById(objID)) ){
		el.style.display=el.style.display=='block'?'none':'block';
	}
	return false;
}
/******************************/
/* Number formatting */
/******************************/
function Num(val){
	this.value = val;
}
Num.prototype.normalize=function(){
	this.value=Math.round(this.value * 100.00001)/100;
}
Num.prototype.fix=function(v){
	return Math.round(v * 100.00001)/100;
}
Num.prototype.getRightSide=function(){
	var r = (this.value*100) - parseInt(this.value)*100;
	r = this.fix(r);
	r = r+'';
	if (r.length == 1)
		r = '0'+r;
	if (r.length > 2)
		r = r.substr(0, 2);
	return r;
}
Num.prototype.getLeftSide=function(){
   var ths = parseInt(this.value/1000);
	var rmn = parseInt(this.value - (ths*1000));
	var l;
	if (ths == 0)
		return rmn;
	if (rmn < 10)
		l = ths+',00'+rmn;
	else if (rmn < 100)
			l = ths+',0'+rmn;
		else 
			l = ths+','+rmn;
	return l;
}
Num.prototype.toString=function(){
	this.normalize();
	var left = this.getLeftSide();
	var right = this.getRightSide();
	return left+'.'+right;
}
//(lyubobg, 2007-03-02) Set the date in the earliest textbox when the drop down menu with the months is changed or text is typed in the days field
var ObjOut_element, ObjRet_element, ObjFlexibleRet_element, ObjFlexibleDep_element, LengthOfStay_element, ez_depDate_dayOfWeek_Div_element, ez_retDate_dayOfWeek_Div_element, ez_flexibleRetDate_dayOfWeek_Div_element, ez_flexibleDepDate_dayOfWeek_Div_element;
function calculate_length_of_stay(){
    DaysOfWeek = new Array("Sunday", "Monday","Tuesday", "Wednesday", "Thursday","Friday", "Saturday")

    var out_date_array=ObjOut_element.value.split("/");
    out_date_array[0]--;

    var ret_date_array=ObjRet_element.value.split("/");        
    ret_date_array[0]--;

    var flexible_ret_date_array=ObjFlexibleRet_element.value.split("/");        
    flexible_ret_date_array[0]--;

    var flexible_dep_date_array=ObjFlexibleDep_element.value.split("/");        
    flexible_dep_date_array[0]--;

    var one_day=1000*60*60*24
    var OutDate=new Date(out_date_array[2],out_date_array[0],out_date_array[1]);
    var RetDate=new Date(ret_date_array[2],ret_date_array[0],ret_date_array[1]);
    var FlexibleRetDate=new Date(flexible_ret_date_array[2],flexible_ret_date_array[0],flexible_ret_date_array[1]);
    var FlexibleDepDate=new Date(flexible_dep_date_array[2],flexible_dep_date_array[0],flexible_dep_date_array[1]);

    var LengthOfStay=Math.ceil((RetDate.getTime()-OutDate.getTime())/(one_day));

    if (LengthOfStay>0) {
        LengthOfStay_element.innerHTML="Length of stay <strong>("+LengthOfStay+" days)</strong>";
    }else {
        LengthOfStay_element.innerHTML="Length of stay <strong>(0 days)</strong>";
    }
    /***********************************/
    if (out_date_array[1]<=0)
        ez_depDate_dayOfWeek_Div_element.innerHTML="&nbsp;";
    else 
        ez_depDate_dayOfWeek_Div_element.innerHTML="<small>"+DaysOfWeek[OutDate.getDay()]+"</small>";
    /***********************************/
    if (ret_date_array[1]<=0)
        ez_retDate_dayOfWeek_Div_element.innerHTML="&nbsp;";
    else       
        ez_retDate_dayOfWeek_Div_element.innerHTML="<small>"+DaysOfWeek[RetDate.getDay()]+"</small>";
    /***********************************/
    if (flexible_ret_date_array[1]<=0) 
        ez_flexibleRetDate_dayOfWeek_Div_element.innerHTML="&nbsp;";
    else
        ez_flexibleRetDate_dayOfWeek_Div_element.innerHTML="<small>"+DaysOfWeek[FlexibleRetDate.getDay()]+"</small>";
    /***********************************/
    if (flexible_dep_date_array[1]<=0)
        ez_flexibleDepDate_dayOfWeek_Div_element.innerHTML="&nbsp;";      
    else   
        ez_flexibleDepDate_dayOfWeek_Div_element.innerHTML="<small>"+DaysOfWeek[FlexibleDepDate.getDay()]+"</small>";
    /***********************************/
    if (ret_date_array[1]<=0 || out_date_array[1]<=0) {
        LengthOfStay_element.innerHTML="Length of stay <strong>(0 days)</strong>";
    }
}
