gIsImagePreloadDone = false; // becomes true after loading of navigation

/*
	dom checker
*/
dom = (document.getElementById)? true : false;
ie4 = (document.all)? true : false;
ns6= (dom && !ie4)? true : false;
ns4 = (document.layers)? true:false;

function toggleDisplay(obj1Name, obj2Name) {
	/*
		function to show and hide the signin and signout ids 
		made for the GCCI login bar
	*/
	
	// get the object
	objSignin = getObject(obj1Name);
	objSignout = getObject(obj2Name);
	
	if (objSignout.style.display == 'none') {
		// show the singout
		objSignout.style.display = 'block';
		objSignin.style.display = 'none';
	} else {
		// show the singin
		objSignout.style.display = 'none';
		objSignin.style.display = 'block';
	}
}

function toggleForm(objName, varStatus) {
	/*
		function to show and hide the form elements 
		made for the review and reserve and join pages
	*/
	
	// get the object
	objSection = getObject(objName);
	
	if (varStatus == 'show') {
		// show the section
		objSection.style.display = 'block';
	} else {
		// hide the section
		objSection.style.display = 'none';
		
	}
}

function makeRand(maxNum) {
	/*
		creates a random number between 1 -> maxNum
	*/
	rnd = Math.round((maxNum * Math.random()));
	rnd = (rnd == 0)? makeRand(maxNum) : rnd;
	return rnd;
}

function changeNavBg(id, bkImage, base) {
	/*
		function to change the background for the navigation. 
		Takes the td id for that navigation item and the name 
		of the background image and replaces them depending
		on the state that they need to change to or out of.
	*/
	
	// get the 3 images to be changed out
	newImagel = "url(" + base + "images/nav/" + bkImage + "-l.gif)";
	newImage = "url(" + base + "images/nav/" + bkImage + ".gif)";
	newImager = "url(" + base + "images/nav/" + bkImage + "-r.gif)";
	
	// get the object
	tdObjl = getObject(id + "l");
	tdObj = getObject(id);
	tdObjr = getObject(id + "r");
	
	// change out the different ids to the new images
	if (tdObj) {
		tdObjl.style.backgroundImage = newImagel;
		tdObj.style.backgroundImage = newImage;
		tdObjr.style.backgroundImage = newImager;
	} else {
		return;
	}
}

function getObject(oID) {
	/*
		function that returns the element based on the browser
		capitalities - ns4 will return null if the obj doesn't exist
	*/
	if (dom) {
		obj = document.getElementById(oID);
	} else if (ie4) {
		obj = document.all(oID);
	} else if (ns4) {
		obj = document.layers(oID);
		if (!obj)
			return null;
	}
	return obj;
}


function promoChanger() {
	/*
		this function changes out the images for 
		the promos so that there are two more
		in the changing area - will loop around 
		and around
	*/
	promoImgName1 = this.promoAreaExt + "Img1";
	promoImgName2 = this.promoAreaExt + "Img2";
	
	obj1 = document.images[promoImgName1];
	obj2 = document.images[promoImgName2];
	
	imgArrayLength = this.imageName.length - 1;
	
	nextPromoPlace = ((this.currentPromoPlace + 1) > imgArrayLength)? 0 : this.currentPromoPlace + 1;
	nextPlusPromoPlace = ((nextPromoPlace + 1) > imgArrayLength)? 0 : nextPromoPlace + 1;
		
	this.currentPromoPlace = nextPlusPromoPlace;
	
	obj1.src = '../images/promo/' + this.imageName[nextPromoPlace]
	obj2.src = '../images/promo/' + this.imageName[nextPlusPromoPlace]
}

function ldLinks() {
	/*
		function to load the images into an array when the 
		loadLinks part of the object is called
	*/
	args=ldLinks.arguments;
	for (var i=0;i<args.length;i++) {
		argsSplt = args[i].split("|")
		this.linkName[i] = argsSplt[0]
		this.linkTarget[i] = ((argsSplt[1] != "") && (argsSplt[1] != null))? argsSplt[1] : "";
	}
}

function ldImages() {
	/*
		function to load the images into an array when the 
		loadImages part of the object is called
	*/
	args=ldImages.arguments;
	for (var i=0;i<args.length;i++) {
		this.imageName[i] = args[i]
	}
}

function linkOut(lID) {
	/*
		function that controls what the user will link out to when
		a promotion is clicked
	*/
	imgArrayLength = this.imageName.length - 1;
	if (lID == 1) {
		place = this.currentPromoPlace;
	} else if (lID == 2) {
		place = ((this.currentPromoPlace + 1) > imgArrayLength)? 0 : this.currentPromoPlace + 1;
	}
	if (this.linkTarget[place] != "") {
		alert(this.linkName[place])
		window.open(this.linkName[place], this.linkTarget[place]);
	} else {
		document.location.href = this.linkName[place];
	}
}

function promoImageChange(AreaExt) {
	/*
		object to handle the promo images movements
		
		it changes out the two images within the based on the
		promoAreaExt variable as long as that extension has the Img1 and Img2
		attached to the end of the image. eg. ptnrImg1
	*/
	this.currentPromoPlace = 0;
	this.imageName = Array();
	this.linkName = Array();
	this.linkTarget = Array();
	this.loadImages = ldImages;
	this.loadLinks = ldLinks;
	this.promoAreaExt = AreaExt;
	this.promoNext = promoChanger;
	this.promoLink = linkOut;
}

partners = new promoImageChange('ptnr');
partners.loadImages("promo-holding-partner.jpg","promo-holding-partner-1.jpg","promo-holding-partner-2.jpg","promo-holding-partner-3.jpg","promo-holding-partner-4.jpg");
partners.loadLinks("http://www.digitaria.com", "http://www.google.com", "http://www.yahoo.com","http://www.google.co.nz");

offers = new promoImageChange('offr');
offers.loadImages("promo-holding-partner.jpg","promo-holding-partner-1.jpg","promo-holding-partner-2.jpg","promo-holding-partner-3.jpg","promo-holding-partner-4.jpg");
offers.loadLinks("http://www.digitaria.com|blank", "http://www.google.com", "http://www.yahoo.com|blank","");

function preload(imgObj,imgSrc) {
	/*
		function to preload images
	*/
	if (document.images) {
		eval(imgObj+' = new Image()');
		eval(imgObj+'.src = "'+imgSrc+'"');
	}
}

function changeImage(imgName,imgObj,layer) {
	/*
		function to do rollovers of images
	*/
	if (gIsImagePreloadDone == true) {
		if (document.images) {
			if (document.layers) {
				if (layer!=null){
					eval('document.layers.'+layer+'.document.images["'+imgName+'"].src = '+imgObj+'.src');
				} else {
					document.images[imgName].src = eval(imgObj+".src");
				}
			} else {
				document.images[imgName].src = eval(imgObj+".src");
			}
		}
	}
}

function call_jumpMenu(selObj,restore){ //v3.0
  if(selObj.options[selObj.selectedIndex].value != " ")
  {
	  target='parent';
	  eval("parent.location='"+selObj.options[selObj.selectedIndex].value+"'");
	  if (restore) selObj.selectedIndex=0;
  }else{
  return false;
  }
}
//RESERVATION FORM FUNCTIONS
function setResvFormAction(hotelId){
	var f = document.room_reservations;
	var myFormAction = f.action;

	myFormAction = updateQueryStringElement(myFormAction, "pHotelId", hotelId);

	f.hdshowHotelRooms.value = "1";
	f.action = myFormAction;
	f.submit();
}

function updateQueryStringElement(myQueryString, elementName, elementValue)
{
	var pairs = myQueryString.split("&");
	var newQueryString = ""
	var paramFound = false;

	for (var i = 0; i < pairs.length; i++)
	{
		var pos = pairs[i].indexOf('=');
		if (pos== -1) continue;
		var argName = pairs[i].substring(0,pos);
		var value = pairs[i].substring(pos+1);

		if (argName==elementName)
		{
			value = elementValue;
			paramFound = true;
		}
		if (i == 0)
			newQueryString = argName + "=" + value
		else
			newQueryString = newQueryString + "&" + argName + "=" + value;
	}
	// if we didn't find the param in the string, let's add it
	if (! paramFound)
		newQueryString = newQueryString + "&" + elementName + "=" + elementValue;

	return newQueryString;
}

function chkDate(txtBoxName, txtBox)
{
	var today = new Date(2006, 11, 7, 20, 56, 26);
	var tomorrow = new Date();;
	var nextDate = today.getDate() + 1;
	var val = txtBox.value;
	var defaultDate = today;

	tomorrow.setDate(nextDate);
	if (txtBoxName == "Check-Out")
		defaultDate = tomorrow;

	if (val == "")
	{
		alert("The " & txtBoxName + " Date cannot be left blank.");
		txtBox.value = (today.getMonth() + 1) + "/" + today.getDate() + "/" + today.getFullYear();
	}
	else
	{
		var newValue = Date.parse(val);
		var realDate = new Date(val);
		var realYear = realDate.getFullYear();

	//	set the value of today (w/ only mm/dd/yyyy) i.e. not incl time so we can parse it later and compare them
		var todaysDate = (today.getMonth() + 1) + "/" + today.getDate() + "/" + today.getFullYear();

	 //if use 2 digit years, need to convert to post 2k
		if (realYear < 2000)
			realYear = realYear + 100;

		realDate = (realDate.getMonth() + 1) + "/" + realDate.getDate() + "/" + realYear;
		newValue = Date.parse(realDate)

		// check to see if we're dealing with a date or numbers
		if( isNaN(newValue))
		{
			alert(val + " is not a valid Date.\nPlease enter a valid date.");
		}
		else
		{
			// next need to check wh/ this is a valid date
			if (val != realDate)
			{
				val = realDate
				txtBox.value = val
			}
			// need to check to see whether it is after today
			if (newValue < Date.parse(todaysDate))
			{
				var alertVal =	"You are not allowed to book any days earlier than " + todaysDate + " (0 days in the future).\nIt has been changed."
				alert(val + " is before today's date.\nIt has been changed.");
			}
			else
			{
				return;
			}
	    }
		txtBox.value = (defaultDate.getMonth() + 1) + "/" + defaultDate.getDate() +"/" + defaultDate.getFullYear();
	}
	if (txtBoxName == "Check-In") updateOut(txtBox.value)

	if (txtBox.type != "hidden")
	{
	    txtBox.focus();
	}
	else
	{
		// need to update individual drop downs
		updateDropDowns (txtBoxName, txtBox);
	}
    return false;
}

