// JavaScript Document

// ******************* general function *****************************

//alert(Applogs.logs); to view log
var AppLogs = {
	logs: '',
	Add: function(l) {
		this.logs += '['+new Date().toString()+'] '+l+'\n';
	}
};
//AppLogs.Add('teststs');
//alert(AppLogs.logs);

function appendURLparam(name, value) { //for single var to post
	form = new Element('form', {
		'name': 'form',
		'method': 'post',
		'action': window.location.href
	});
//	data = new Element('input', {
//		'type': 'hidden',
//		'name': name,
//		'value': value
//	});
	$(form).update('<input type="hidden" name="'+name+'" value="'+value+'" />');
	document.getElementsByTagName('body')[0].appendChild(form);
	form.submit();
}

function appendURLparamwithURL(name, value, url) { //for single var to post
	form = new Element('form', {
		'name': 'form',
		'method': 'post',
		'action': url
	});
//	data = new Element('input', {
//		'type': 'hidden',
//		'name': name,
//		'value': value
//	});
	$(form).update('<input type="hidden" name="'+name+'" value="'+value+'" />');
	document.getElementsByTagName('body')[0].appendChild(form);
	form.submit();
}

function appendURLparams(vars) { // for multi var 
	params = new Object();
	$$('form#saved_vars').each(function(f) {
		Object.extend(params, f.serialize(true));					 
	});
	Object.extend(params, vars);
	form = new Element('form', {
		'name': 'form',
		'method': 'post',
		'action': window.location.href.toString()
	});
	for (var key in params) {
		if ($H(params).get(key)!=null || !($H(params).get(key).blank())) {
			$(form).insert({'bottom':'<input type="hidden" name="'+key+'" value="'+$H(params).get(key)+'" />'});
		}
	}
	document.getElementsByTagName('body')[0].appendChild(form);
	form.submit();
}

function appendURLparamsClean(vars) { // for multi var 
	params = new Object();
	Object.extend(params, vars);
	form = new Element('form', {
		'name': 'form',
		'method': 'post',
		'action': window.location.href.toString()
	});
	for (var key in params) {
		if ($H(params).get(key)!=null || !($H(params).get(key).blank())) {
			$(form).insert({'bottom':'<input type="hidden" name="'+key+'" value="'+$H(params).get(key)+'" />'});
		}
	}
	document.getElementsByTagName('body')[0].appendChild(form);
	form.submit();
}

function appendURLparamswithURL(vars, url) { // for multi var 
	params = new Object();
	$$('form#saved_vars').each(function(f) {
		Object.extend(params, f.serialize(true));					 
	});
	Object.extend(params, vars);
	form = new Element('form', {
		'name': 'form',
		'method': 'post',
		'action': url
	});
	for (var key in params) {
		if ($H(params).get(key)!=null || !($H(params).get(key).blank())) {
			$(form).insert({'bottom':'<input type="hidden" name="'+key+'" value="'+$H(params).get(key)+'" />'});
		}
	}
	document.getElementsByTagName('body')[0].appendChild(form);
	form.submit();
}

function appendURLparamswithURLClean(vars, url) { // for multi var 
	params = new Object();
	form = new Element('form', {
		'name': 'form',
		'method': 'post',
		'action': url
	});
	Object.extend(params, vars);
	for (var key in params) {
		if ($H(params).get(key)!=null || !($H(params).get(key).blank())) {
			$(form).insert({'bottom':'<input type="hidden" name="'+key+'" value="'+$H(params).get(key)+'" />'});
		}
	}
	document.getElementsByTagName('body')[0].appendChild(form);
	form.submit();
}

function uncheckInput(name, type){
	var radioArr = document.getElementsByTagName("input");
	$A(radioArr).each(function(e){
		if (e.name==name && e.type==type && e.checked) {
			//new Effect.ScrollTo($(e));
			e.checked = false;
			//alert(e.checked);
			//e.scrollTo();
		}
	});
	//document.getElementsByTagName("input").each(function(e){ alert(e.type); });
	//for (i = 0; i != radioArr.length; i++) {
	//	radioArr[i].style.visibility = "visible";
	//}
}

function updateCurrency(target) {
	if (!Object.isElement(target)) {
		var rate = null;
		var symbol = null;
		var currency_title = null;
		$('currency').childElements().each(function(e) {
			if ($(e).readAttribute('value')==$('currency').getValue()) {
				//var rate = parseFloat($(e).readAttribute('rate'));
				rate = parseFloat($(e).readAttribute('rate'));
				symbol = $(e).readAttribute('symbol');
				currency_title = $(e).readAttribute('title');
				//AppLogs.Add('current rate = '+rate);
			}
		});
		$$('.currency').each(function(element) {
			//AppLogs.Add($H(element));
			if ($(element).readAttribute('value')==null) {
				$(element).update('&nbsp;-&nbsp;');
			} else {
				if (parseInt($(element).readAttribute('value'))>0) {
					if ($(element).readAttribute('nosymbol')=='true') {
						element.update('&nbsp;'+Math.round($(element).readAttribute('value')*rate));
					} else {
						element.update(symbol+'&nbsp;'+Math.round($(element).readAttribute('value')*rate));
					}
				} else {
					$(element).update('&nbsp;-&nbsp;');
				}
			}
		});
		$$('.currency_symbol').each(function(element) {
			if ($(element).readAttribute('show_currency_title')=='true') {
						$(element).update(currency_title);
			} else {
				$(element).update($F('currency'));
			}
		});	
	} else {
		var rate = null;
		var symbol = null;
		var currency_title = null;
		$('currency').childElements().each(function(e) {
			if ($(e).readAttribute('value')==$('currency').getValue()) {
				//var rate = parseFloat($(e).readAttribute('rate'));
				rate = parseFloat($(e).readAttribute('rate'));
				symbol = $(e).readAttribute('symbol');
				currency_title = $(e).readAttribute('title');
				//AppLogs.Add('current rate = '+rate);
			}
		});
		$(target).getElementsBySelector('.currency').each(function(element) {
			//AppLogs.Add($H(element));
			if ($(element).readAttribute('value')==null) {
				$(element).update('&nbsp;-&nbsp;');
			} else {
				if (parseInt($(element).readAttribute('value'))>0) {
					if ($(element).readAttribute('nosymbol')=='true') {
						element.update('&nbsp;'+Math.round($(element).readAttribute('value')*rate));
					} else {
						element.update(symbol+'&nbsp;'+Math.round($(element).readAttribute('value')*rate));
					}
				} else {
					$(element).update('&nbsp;-&nbsp;');
				}
			}
		});
		$(target).getElementsBySelector('.currency_symbol').each(function(element) {
			if ($(element).readAttribute('show_currency_title')=='true') {
						$(element).update(currency_title);
			} else {
				$(element).update($F('currency'));
			}
		});	
	}
}

//******************************dreamwaver functions start*************************
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}
//***************************dreamwaver functions end******************************


//***************************destination ajax function start*********************
function genCountryByRegionCode(code) {
	if (!code.blank()) {
	new Ajax.Request('/_destination.php',
						{	method: "get", 
							parameters:{
								ajax:true, 
								action:'genCountryByRegionCode', 
								code:code
							},
							onSuccess: function(transport, json) {
								if (Object.isElement('area_code'))
									for ( var i=$('area_code').length-1; i>0; i-- ) $('area_code').remove(i);
								if (Object.isElement('city_code'))
									for ( var i=$('city_code').length-1; i>0; i-- ) $('city_code').remove(i);
								if (Object.isElement('country_code'))
									for ( var i=$('country_code').length-1; i>0; i-- ) $('country_code').remove(i);
								
								$('country_code').options.length = json.length;
								for ( i=0; i<json.length; i++ ) {
									$('country_code').options[i+1] = new Option(json[i].name,json[i].code);
									//if (json[i].id==selected_id) $('city').options[i+1].selected=true;
								}
								//$('country_code').focus();
							},
							onFailure: function() {
								alert('fail');	
							}
						}
				  );
	}
}

function genCityByCountryCode(code) {
	if (!code.blank()) {
		new Ajax.Request('/_destination.php',
						{	method: "get", 
							parameters:{
								ajax:true, 
								action:'genCityByCountryCode', 
								code:code
							},
							onSuccess: function(transport, json) {
								//alert('test '+code);
								//alert('test');
								if (Object.isElement('area_code'))
									for ( var i=$('area_code').length-1; i>0; i-- ) $('area_code').remove(i);
								
								if (Object.isElement('city_code'))
									for ( var i=$('city_code').length-1; i>0; i-- ) $('city_code').remove(i);
								
								//alert('test '+code);
								
								$('city_code').options.length = json.length;
								for ( i=0; i<json.length; i++ ) {
									$('city_code').options[i+1] = new Option(json[i].name,json[i].code);
									//if (json[i].id==selected_id) $('city').options[i+1].selected=true;
								}
								//$('city_code').focus();
								//alert('test '+code);
								AppLogs.Add('genCityByCountryCode onSuccess');
							},
							onFailure: function() {
								AppLogs.Add('genCityByCountryCode failed!');
								AppLogs.Add(Object.inspect(transport));
								//alert('fail');	
							},
							onException: function(response) {
								 eval('json = '+response.getHeader('X-JSON'));
								AppLogs.Add('ajax onException = '+response.getHeader('X-JSON'));
								//AppLogs.Add('json.length'+json[0].name);
							}
						}
		); 
	} else {
		AppLogs.Add('genCityByCountryCode code blank!');	
	}
}

function genAreaByCityCode(code) {
	if (!code.blank()) {
	new Ajax.Request('/_destination.php',
						{	method: "get", 
							parameters:{
								ajax:true, 
								action:'genAreaByCityCode', 
								code:code
							},
							onSuccess: function(transport, json) {
								if (Object.isElement('area_code'))
									for ( var i=$('area_code').length-1; i>0; i-- ) $('area_code').remove(i);
								
								$('area_code').options.length = json.length;
								for ( i=0; i<json.length; i++ ) {
									$('area_code').options[i+1] = new Option(json[i].name,json[i].code);
									//if (json[i].id==selected_id) $('city').options[i+1].selected=true;
								}
								//$('area_code').focus();
							},
							onFailure: function() {
								alert('fail');	
							}
						}
				  );
	}
}

function extenalData() {
	
}
//***********************ajax function end***********************

//******************* clock function start **********************
function leadingZero(num) {
	return (num < 10) ? "0" + num : num.toString();
}

function UpdateClock() {
   if(clockID) {
      clearTimeout(clockID);
      clockID  = 0;
   }

   var tDate = new Date();
//
//   document.theClock.theTime.value = "" 
//                                   + tDate.getHours() + ":" 
//                                   + tDate.getMinutes() + ":" 
//                                   + tDate.getSeconds();
   
      $('clock2').innerHTML = tDate.getHours() + ":"  + leadingZero(tDate.getMinutes());
   
   clockID = setTimeout("UpdateClock()", 1000);
}

function StartClock() {
   clockID = setTimeout("UpdateClock()", 500);
}

function KillClock() {
   if(clockID) {
      clearTimeout(clockID);
      clockID  = 0;
   }
}
//************************clock function end*******************

/****************************************************************************************
                 Script to read and write cookies from JavaScript
                     Written by Mark Wilton-Jones, 31/12/2001
*****************************************************************************************

Please see http://www.howtocreate.co.uk/jslibs/ for details and a demo of this script
Please see http://www.howtocreate.co.uk/jslibs/termsOfUse.html for terms of use

This script allows you to store and retrieve cookies easily using JavaScript. Cookies
are variables that can be stored on a user's computer and be picked up by any other web
pages in the correct domain. Cookies are set to expire after a certain length of time.

Be warned that many users will not permit cookies on their computers. Do not make your
web sites rely on them. This script provides a return value that says if they accepted
or rejected a cookie.

To use:
_________________________________________________________________________

Inbetween the <head> tags, put:

	<script src="PATH TO SCRIPT/cookie.js" type="text/javascript" language="javascript"></script>

To store a cookie, use:

	var cookieAccepted = setCookie( cookieName, cookieValue[, lifeTime[, path[, domain[, isSecure]]]] )

		cookieName is the name of the cookie (as a string) and can contain any characters.

		cookieValue is the value that the cookie stores (as a string) and can contain any characters.

		lifeTime is the amount of time in seconds that you want the cookie to last for (after which
		the user's computer will delete it). The default is until the browser is closed.

		path gives the path or directories that the cookie should be accessible from. The default is
		the current path. Alter this using ../ (up one directory) / starting at the base directory
		and subdirectoryName/ to start from the currentDirectory/subdirectoryName/

		domain gives the domain that the cookie is accessible from. This must have at least one . in it
		and in many browsers it must have at least two. The default is the current domain.

		isSecure can be true or false and says whether or not the cookie is only accessible on sites
		with a secure (https) connection.

If the user rejected the cookie, cookieAccepted will be false. In Opera, if cookies are on prompt,
the failure responce is received immediately, even if the user then accepts the cookie.

To retrieve a cookie, use:

	var myCookie = retrieveCookie( cookieNameAsAString );

To modify a cookie, simply set it again with the new settings;

To delete a cookie, use:

	var cookieDeletePermitted = setCookie( cookieNameAsAString, '', 'delete' );

	or set lifeTime to a less than 0 value.

If the user rejected the attempt to delete the cookie, cookieDeletePermitted will be false.
_______________________________________________________________________________________*/

function retrieveCookie( cookieName ) {
	/* retrieved in the format
	cookieName4=value; cookieName3=value; cookieName2=value; cookieName1=value
	only cookies for this domain and path will be retrieved */
	var cookieJar = document.cookie.split( "; " );
	for( var x = 0; x < cookieJar.length; x++ ) {
		var oneCookie = cookieJar[x].split( "=" );
		if( oneCookie[0] == escape( cookieName ) ) { return oneCookie[1] ? unescape( oneCookie[1] ) : ''; }
	}
	return null;
}

function setCookie( cookieName, cookieValue, lifeTime, path, domain, isSecure ) {
	if( !cookieName ) { return false; }
	if( lifeTime == "delete" ) { lifeTime = -10; } //this is in the past. Expires immediately.
	/* This next line sets the cookie but does not overwrite other cookies.
	syntax: cookieName=cookieValue[;expires=dataAsString[;path=pathAsString[;domain=domainAsString[;secure]]]]
	Because of the way that document.cookie behaves, writing this here is equivalent to writing
	document.cookie = whatIAmWritingNow + "; " + document.cookie; */
	document.cookie = escape( cookieName ) + "=" + escape( cookieValue ) +
		( lifeTime ? ";expires=" + ( new Date( ( new Date() ).getTime() + ( 1000 * lifeTime ) ) ).toGMTString() : "" ) +
		( path ? ";path=" + path : "") + ( domain ? ";domain=" + domain : "") + 
		( isSecure ? ";secure" : "");
	//check if the cookie has been set/deleted as required
	if( lifeTime < 0 ) { if( typeof( retrieveCookie( cookieName ) ) == "string" ) { return false; } return true; }
	if( typeof( retrieveCookie( cookieName ) ) == "string" ) { return true; } return false;
}
//**************** end cookie function ************************

//***********************onload init
var clockID  = 0;

Object.extend(Event, {
		wheel:function (event){
			var delta = 0;
			if (!event) event = window.event;
			if (event.wheelDelta) {
				delta = event.wheelDelta/120; 
				if (window.opera) delta = -delta;
			} else if (event.detail) { delta = -event.detail/3;	}
			return Math.round(delta); //Safari Round
		}
});

//_header.php login bar
var NavBar = {
	ShowLoginListener:null,
	HideLoginListener:null,
	KeepLoginListener:null,
	LoginFieldStatus: 'closed',//closed, closing, opening, opened
	LoginFieldTimerID: null,
	ShowLoginField: function(event) {
		if (this.LoginFieldStatus=='closed') {
			this.LoginFieldStatus = 'opening';
			Event.stopObserving($('login_button_div'), 'mouseover', NavBar.ShowLoginListener);
			NavBar.ShowLoginListener = null;
			//AppLogs.Add(this.LoginFieldStatus);
			var f = function() {
				//NavBar.HideLoginListener = NavBar.HideLoginField.bindAsEventListener(NavBar);
				//Event.observe($('nav_bar_left'), 'mouseout', NavBar.HideLoginListener, true);
				NavBar.LoginFieldStatus = 'opened';
				NavBar.LoginFieldTimerID = null;
				//AppLogs.Add(NavBar.LoginFieldStatus);

				NavBar.KeepLoginListener = NavBar.KeepLoginField.bindAsEventListener(NavBar);
				Event.observe($('nav_bar_left'), 'mouseover', NavBar.KeepLoginListener, false);
				
				Event.observe($('login_button_a'), 'click', login, false);
				Event.observe($('email'), 'keypress', function(key) {
					if (key.keyCode==13) {
						login();	
					}
				}, false);
				Event.observe($('password'), 'keypress', function(key) {
					if (key.keyCode==13) {
						login();	
					}
				}, false);
			};
			Effect.BlindDown.defer($('login_form_div'),{scaleX:true});
			f.defer();
			//AppLogs.Add(this.LoginFieldStatus);
		}
	},
	HideLoginField: function(event) {
		//alert('test');
		if (this.LoginFieldStatus=='opened' && this.LoginFieldTimerID==null) {
			NavBar.LoginFieldStatus = 'closing';
			this.LoginFieldTimerID = window.setTimeout(function() {
				
				Event.stopObserving($('nav_bar_left'), 'mouseout', NavBar.HideLoginListener);
				NavBar.HideLoginListener = null;
				Effect.BlindUp.defer($('login_form_div'),{scaleX:true});
				var f = function() {
					Event.stopObserving($('nav_bar_left'), 'mouseover', NavBar.KeepLoginListener);
					
					NavBar.ShowLoginListener = NavBar.ShowLoginField.bindAsEventListener(NavBar);
					Event.observe($('login_button_div'), 'mouseover', NavBar.ShowLoginListener, false);
					NavBar.LoginFieldStatus = 'closed';
					Event.stopObserving($('login_button_a'), 'click', login);
				};
				f.defer();
			}, 5000);
		}
	},
	KeepLoginField: function(event) {
		if (this.LoginFieldStatus=='closing' && this.LoginFieldTimerID!=null) {
			window.clearTimeout(NavBar.LoginFieldTimerID);
			this.LoginFieldTimerID = null;
			this.LoginFieldStatus = 'opened';
			//NavBar.HideLoginListener = NavBar.HideLoginField.bindAsEventListener(NavBar);
			//Event.observe($('nav_bar_left'), 'mouseout', NavBar.HideLoginListener, false);
		}
	}
};

function login() {
	new Ajax.Request('_login.php', {
		method: 'post',
		parameters: {
			email: $F('email'),
			password: $F('password')
		},
		onSuccess: function(transport, json) {
			if (json==null) {
				var msg = $('welcome_msg').innerHTML;
				$('welcome_msg').update('<strong id="welcome_msg_text" style="color:#ff0000">'+$('welcome_msg').readAttribute('fail_msg')+'</strong>');
				Effect.Pulsate($('welcome_msg_text'),{ pulses: 5, duration: 3.0 });
				window.setTimeout(function() {
					$('welcome_msg').update(msg);
				},10000);
			} else {
				$('welcome_msg').update('<strong>'+json.name+', welcome to Hotel in Hong Kong</strong>');
				Effect.SlideUp('login_button',{scaleX:true});
				$('login_button').remove();
				Effect.Squish('login_form_div');
				Effect.SlideUp('signup_button',{scaleX:true});
				Effect.SlideUp('forgetpassword_button',{scaleX:true});
				Effect.BlindDown('logout_button',{scaleX:true});
				Effect.BlindDown('profile_button',{scaleX:true});
				Effect.BlindDown('viewbooking_button',{scaleX:true});
				if (window.location.href.toString().include('register')) {
					window.location = 'http://'+window.location.host.toString();	
				}
			}
		}		 
	});
	return false;
}

function makeCalendarField(target) {
	switch (retrieveCookie('lang')) {
		case 'cs':
			var lang = 'zh'
			break
		case 'ct':
			var lang = 'zh-tw'
			break
		case 'jp':
			var lang = 'ja'
			break
		case 'kr':
			var lang = 'ko'
			break
		default:
			var lang = 'en'
			break
	}
	if (target==null || target == undefined) {
		$$('input.calendarField').each(function(element) {
			if ($(element).Controls == undefined) $(element).Controls = {};
			if (Object.isFunction(element.onblur)) element.onchange = element.onblur;
			//if (element.onblur) Event.observe(element,'change',element.onblur);
			//if (Object.isObject($(element).Controls.Datepicker)) throw $break;
			$(element).Controls.Datepicker = new Control.DatePicker(element, { locale: lang+'_iso8601' });
		});
	} else {
		$(target).getElementsBySelector('input.calendarField').each(function(element) {
			if ($(element).Controls == undefined) $(element).Controls = {};
			if (Object.isFunction(element.onblur)) element.onchange = element.onblur;
			//if (element.onblur) Event.observe(element,'change',element.onblur);
			//if (Object.isObject($(element).Controls.Datepicker)) throw $break;
			$(element).Controls.Datepicker = new Control.DatePicker(element, { locale: lang+'_iso8601' });
		});
	}
	
	$$('.calendarFields').each(function(elm) {
		//console.log($(elm).identify());
		//AppLogs.Add(Element.identify(elm));
		
		var input_date_from = $(elm).getElementsBySelector('input.calendarField[id="date_from"]').first();
		var input_date_to = $(elm).getElementsBySelector('input.calendarField[id="date_to"]').first();
		
		if (Object.isElement(input_date_from) && Object.isElement(input_date_to)) {
			$(input_date_from).onchange = function() {
				if ($F(this).match(/[0-9]*-[0-9]*-[0-9]*/)==$F(this)) {
					checkin_date = new DateFormat.parse(this.value);
					checkoutDate = new Date(checkin_date.getFullYear(),checkin_date.getMonth(),checkin_date.getDate()+1);
					$(input_date_to).value = DateFormat.format(checkoutDate, input_date_from.Controls.Datepicker.options.currentFormat);
				}
			};
		}
		
		var serviced_date_from = Element.getElementsBySelector(elm,'input.calendarField[id="search_serviced_date_from"]').first();
		var serviced_date_to = Element.getElementsBySelector(elm,'input.calendarField[id="search_serviced_date_to"]').first();
		
		if (Object.isElement(serviced_date_from) && Object.isElement(serviced_date_to)) {
			serviced_date_from.onchange = function() {
				if ($F(this).match(/[0-9]*-[0-9]*-[0-9]*/)==$F(this)) {
					checkin_date = new DateFormat.parse(this.value);
					checkoutDate = new Date(checkin_date.getFullYear(),checkin_date.getMonth(),checkin_date.getDate()+30);
					$(serviced_date_to).value = DateFormat.format(checkoutDate, serviced_date_to.Controls.Datepicker.options.currentFormat);
				}
			};
		}

	});
	
//	$$('.calendarFields').each(function(elm) {
//		var input_date_from = $(elm).getElementsBySelector('input.calendarField[name="date_from"]').first();
//		var input_date_to = $(elm).getElementsBySelector('input.calendarField[name="date_to"]').first();
//		//AppLogs.Add(input_date_to.name);
//		Event.observe(input_date_from, 'change', function(evt) {
//			//console.log("e");
//			if(this.Controls.Datepicker.valueDate){
//				checkoutDate = new Date(this.Controls.Datepicker.valueDate.getFullYear(),this.Controls.Datepicker.valueDate.getMonth(),this.Controls.Datepicker.valueDate.getDate()+1);
//			
//			
//				if($(input_date_from).present() && $F(input_date_from).match(/[0-9]*-[0-9]*-[0-9]*/)==$F(input_date_from)){
//					start_ts = Date.parse($F(input_date_from).gsub(/-/,'/'));
//					var date = new Date();
//					date.setTime(start_ts);;
//					
//					input_date_from.value=("#{year}-#{month}-#{day}").interpolate({ year:date.getFullYear(),
//																				   month:Number(date.getMonth()+1).toPaddedString(2),
//																				   day:Number(date.getDate()).toPaddedString(2)
//																				  });
//				}
//				$(input_date_to).value = DateFormat.format(checkoutDate, input_date_from.Controls.Datepicker.options.currentFormat);
//			}
//		});
//		
//		$(input_date_from).onchange = function() {
//			if(this.Controls.Datepicker.valueDate && $F(this).match(/[0-9]*-[0-9]*-[0-9]*/)==$F(this)){
//				checkoutDate = new Date(input_date_from.Controls.Datepicker.valueDate.getFullYear(),input_date_from.Controls.Datepicker.valueDate.getMonth(),input_date_from.Controls.Datepicker.valueDate.getDate()+1);
//				
//			//AppLogs.Add('date change = '+checkoutDate);
//			
//				if (!$(input_date_to).present()){
//					$(input_date_to).value = DateFormat.format(checkoutDate, input_date_from.Controls.Datepicker.options.currentFormat);
//				}
//			}
//			//input_date_to.Controls.Datepicker.currentDate = checkoutDate;
//		};
//	});
}

Event.observe(document, 'dom:loaded', function() {

	StartClock();
	if (Object.isElement($('login_button_div'))) {
		NavBar.ShowLoginListener = NavBar.ShowLoginField.bindAsEventListener(NavBar);
		Event.observe($('login_button_div'), 'mouseover', NavBar.ShowLoginListener, false);
	}
	//make link onclick return false
	$$('a[href="#"]').each(function(e) {
		if ($(e).readAttribute('onclick')==null) {
			$(e).writeAttribute('onclick','return false;');
		}
	});
	makeCalendarField.defer();
	//make date field calendar event

	MM_preloadImages('images/img_header04_o.jpg','images/img_header05_o.jpg','images/img_header06_o.jpg','images/menu_hotel_o.jpg','images/menu_flight_o.jpg','images/menu_package_o.jpg','images/menu_transportation_o.jpg','images/menu_ticket_o.jpg','images/menu_tour_o.jpg','images/menu_visa_o.jpg','images/menu_apartment_o.jpg','images/menu_insurance_o.jpg','images/btn_more_o.jpg','images/loading01.gif');
	
	setCookie($('lang').name,$('lang').value,60*60*24*365); //_header.php set lang cookie for 1 year

	//apply currency selector change event
	Event.observe($('currency'), 'change', updateCurrency);
	//make default currency
	updateCurrency();
	$('saved_vars').writeAttribute('action', window.location.href.toString());
	
	$$('input.numberField').each(function(e) {
		Event.observe(e, 'keydown', function(key) {
			if (!((key.keyCode>=96 && key.keyCode<=105) || (key.keyCode>=48 && key.keyCode<=57)) && (key.keyCode>0 && key.keyCode!=8 && key.keyCode!=46 && key.keyCode!=35 && key.keyCode!=36 && key.keyCode!=9) || key.shiftKey) {
					key.preventDefault();
			}
		});
	});
	
	$$('img.mouseover_button').each(function(img) {
		$(img).writeAttribute('default_src',$(img).src);
		Event.observe($(img), 'mouseover', function() {
			$(this).src = $(this).lowsrc;
		});
		Event.observe($(img), 'mouseout', function() {
			$(this).src = $(this).readAttribute('default_src');
		});
	});
	$$('input.validate-time').each(function(elm) {
		$(elm).writeAttribute('value','15:30');
		$(elm).writeAttribute('alt','e.g. 15:30');
		$(elm).writeAttribute('title','e.g. 15:30');
		$(elm).setStyle({
			'color':'#999999'
		});
		Event.observe(elm, 'focus', function() {
			if(!this.used){
				this.value='';
				this.used=true;
			}
			this.style.color='#000';
		});
		Event.observe(elm, 'click', function() {
			if(!this.used){
				this.value='';
				this.used=true;
			}
			this.style.color='#000';
		});
	});
});
Event.observe(window, 'unload', function() {
	KillClock();
});

function search_valid_and_submit(form){
	var form = $(form);
	
	form.getElementsBySelector('div.search_box_content').each(function(e) {
		if (!$(e).visible()) {
			$(e).remove();	
		}
	});
	//check hotel date inputs
	
	if($A(["hotel","serviced"]).include($F("search_type"))) {
		AppLogs.Add($$('div.search_box_'+$F("search_type")).first());
		var _search_box_date = $$('div.search_box_'+$F("search_type")).first().getElementsBySelector('table.calendarFields').first();
		var _search_box_date_from = _search_box_date.getElementsBySelector('input[name="date_from"]').first();
		var _search_box_date_to = _search_box_date.getElementsBySelector('input[name="date_to"]').first();
		//var _search_box_date = $$('div.search_box_'+$F("search_type")).first().getElementsBySelector('input[name="date_from"]','input[name="date_to"]');
		//var _search_box_date_from = _search_box_date[0];
		//var _search_box_date_to = _search_box_date[1];
		
		//var _search_box_date_to = $$('div.search_box_'+$F("search_type")).first().getElementsBySelector('input[name="date_to"]').first();
		
		if($(_search_box_date_from).visible() && $(_search_box_date_to).visible()){
			$$(".date_error").invoke("removeClassName","date_error");
			
			if(!$(_search_box_date_from).present() || !$(_search_box_date_to).present()){
				[_search_box_date_from,_search_box_date_to].invoke("addClassName","date_error");
				//alert(form.readAttribute("quick_search:error_msg_required"));
				return false;
			}
			if($(_search_box_date_from).getValue().match(/[0-9]*-[0-9]*-[0-9]*/)!=$(_search_box_date_from).getValue() || $(_search_box_date_to).getValue().match(/[0-9]*-[0-9]*-[0-9]*/)!=$(_search_box_date_to).getValue()){
				[_search_box_date_from,_search_box_date_to].invoke("addClassName","date_error");
				//alert(form.readAttribute("quick_search:error_msg_invalid_format"));
				return false;
			}
			
			//resolve the date
			start_ts = Date.parse($(_search_box_date_from).getValue().gsub(/-/,'/'));
			end_ts = Date.parse($(_search_box_date_to).getValue().gsub(/-/,'/'));
			var date = new Date();
			date.setTime(start_ts);
			_search_box_date_from.writeAttribute('value','');
			_search_box_date_from.writeAttribute('value',date.getFullYear()+'-'+Number(date.getMonth()+1).toPaddedString(2)+'-'+Number(date.getDate()).toPaddedString(2));
//			_search_box_date_from.value=("#{year}-#{month}-#{day}").interpolate({ year:date.getFullYear(),
//																		   month:Number(date.getMonth()+1).toPaddedString
//		(2),
//																		   day:Number(date.getDate()).toPaddedString
//		(2)
//																		  });
			date.setTime(end_ts);
			_search_box_date_to.writeAttribute('value','');
			_search_box_date_to.writeAttribute('value',date.getFullYear()+'-'+Number(date.getMonth()+1).toPaddedString(2)+'-'+Number(date.getDate()).toPaddedString(2));
//			_search_box_date_to.value=("#{year}-#{month}-#{day}").interpolate({ year:date.getFullYear(),
//																		 month:Number(date.getMonth()+1).toPaddedString
//		(2),
//																		 day:Number(date.getDate()).toPaddedString
//		(2)
//																		  });
			if((start_ts+86400000)>end_ts){
				[_search_box_date_from,_search_box_date_to].invoke("addClassName","date_error");
				alert(form.readAttribute("quick_search:error_msg_date_range"));
				return false;
			}
		}
	}
	
	var vars_to_post = form.serialize(true);
	
	appendURLparamswithURLClean(Object.extend(vars_to_post,{
		'type':$F("search_type")
	 }),$(form).readAttribute('action'));
	
	//form.submit();
}

