/* 
 * Global flag - set to true in JSP if you want to display debugging info on page
 */
var codeDebug = false;

var locidRegEx = /[A-Z][A-Z0-9][0-9]{4}/;

function load(url, w, h) {
	width = w || 800;
	height = h || 600;
	var load = window.open(url,'','scrollbars=yes,menubar=no,height=' + height + ',width=' + width + ',resizable=yes,toolbar=no,location=no,status=no');
}

/*
 *	Validator for Destination Search box
 */
function validateKeywordSearch() {
	if(document.locationandhotelsearch.searchKey.value =="") {
		alert("please enter search criteria");
		return false;
	}
	document.locationandhotelsearch.hidAction.value ="0";
	document.locationandhotelsearch.region1.value ="";
	document.locationandhotelsearch.country1.value ="";
	document.locationandhotelsearch.action ="LocationAndHotelSearch.do";
	document.locationandhotelsearch.submit();
}

/*
 *	Validator for Ajax-enabled Search box on Destination pages
 */
function validateAjaxKeywordSearch(form,action) {
	action = action || "LocationAndHotelSearch.do";
	if(form.locationName.value =="") {
		alert("Please enter search criteria");
		return false;
	}
	if (form.locationID.value == "" ) {
		form.searchKey.value = form.locationName.value;
		form.action = action;
	}
	return true;
}

/*
 *	Image rollover functions
 */
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_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_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 noenter(e) {
	var key = (window.event) ? event.keyCode : e.which;
	return (key != 13);
}

function addWindowEvent(event,func) {
	addEvent(window, event, func);
}

function addLoadEvent(func) {
	addWindowEvent("load",func);
}

function addUnloadEvent(func) {
	addWindowEvent("unload",func);
}

function addEvent( obj, type, fn ) {
	if (obj.addEventListener) {
		obj.addEventListener( type, fn, false );
		EventCache.add(obj, type, fn);
	}
	else if (obj.attachEvent) {
		obj["e"+type+fn] = fn;
		obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
		obj.attachEvent( "on"+type, obj[type+fn] );
		EventCache.add(obj, type, fn);
	}
	else {
		obj["on"+type] = obj["e"+type+fn];
	}
}

/*	EventCache Version 1.0
	Copyright 2005 Mark Wubben

	Provides a way for automagically removing events from nodes and thus preventing memory leakage.
	See <http://novemberborn.net/javascript/event-cache> for more information.
	
	This software is licensed under the CC-GNU LGPL <http://creativecommons.org/licenses/LGPL/2.1/>
*/
var EventCache = function(){
	var listEvents = [];
	return {
		listEvents : listEvents,
		add : function(node, sEventName, fHandler){
			listEvents.push(arguments);
		},
		flush : function(){
			var i, item;
			for(i = listEvents.length - 1; i >= 0; i = i - 1){
				item = listEvents[i];
				if(item[0].removeEventListener){
					item[0].removeEventListener(item[1], item[2], item[3]);
				};
				if(item[1].substring(0, 2) != "on"){
					item[1] = "on" + item[1];
				};
				if(item[0].detachEvent){
					item[0].detachEvent(item[1], item[2]);
				};
				item[0][item[1]] = null;
			};
		}
	};
}();

addEvent(window,'unload',EventCache.flush);
