var browser_IE;
var browser_NS4;
var browser_W3C;
var platForm;
var isMac;
var defaultNumOfAdults=1;
var defaultNumOfRooms=1;
var defaultNumOfKids=0;
//for callendar
var DATE_FORMAT = "MM/dd/yyyy"
var DEFAULT_CHECKIN_OFF_NUM = 21;
var DEFAULT_DURATION = 3;

browser_IE  = (document.all && navigator.appName == 'Microsoft Internet Explorer') ? true : false;
browser_NS4 = (document.layers) ? true : false;
browser_W3C = (!document.all && document.getElementById) ? true : false;

platForm=navigator.platform;
isMac=platForm.indexOf("Mac");




// Trims a string
function trim(str) {
  return str.replace(/^\s+/g, '').replace(/\s+$/g, '');
}

// translate date format from yyyy-mm-dd to Date
/*function splitDate(inputdate,separator) {
  arrayOfStrings = inputdate.split(separator);
  outputdate= new Date(arrayOfStrings[0],arrayOfStrings[1],arrayOfStrings[2]);
  return outputdate;
}*/

function showWeek(fieldName, weekID)
{
	var days=new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");
	var weekDay ="";
	if(document.getElementById(weekID))
	{
		temp = fieldName+".value"
		if( getDateFromFormat(eval(temp),DATE_FORMAT) !=0)
		{
			var theDate = new Date (getDateFromFormat(eval(temp),DATE_FORMAT))
			weekDay = days[theDate.getDay()]
		}

		document.getElementById(weekID).innerHTML= weekDay;
	}
}

function validateSearchForm(theForm)
{
    var today = formatDate(new Date(),DATE_FORMAT)
    
	var checkInDate = theForm.doa_mm.value + "/" +theForm.doa_dd.value + "/" + theForm.doa_yy.value;
    var checkOutDate =theForm.dod_mm.value + "/" +theForm.dod_dd.value + "/" + theForm.dod_yy.value;
    
	//var checkInDate = trim(theForm.CheckInDate.value);
    //var checkOutDate = trim(theForm.CheckOutDate.value);
    

	if(trim(theForm.CityName.value)=="")
	{
		alert("Please enter the city name");
		return false;
	}

	if(checkInDate != "")
	{

		if( isDate(checkInDate,DATE_FORMAT) == false)
		{
			alert("Please enter valid check-in date ")
            theForm.CheckInDate.value = "";
			return false;
		}
		if (checkOutDate=="")
		{
			alert("Please enter check-out date");
			return false;
		}
	}
	if(checkOutDate != "")
	{
		if( isDate(checkOutDate,DATE_FORMAT) == false)
		{
			theForm.CheckOutDate.value = "";
            alert("Please enter valid check-out date ")
			return false;
		}
		if (trim(checkInDate)=="")
		{
			alert("Please enter check-In date");
			return false;
		}
	}
   
	if(checkInDate != "" || checkOutDate != "")
	{
		theForm.CheckAvailability.value="Y"
        if( 0!=(compareDates(today,DATE_FORMAT,checkInDate  ,DATE_FORMAT)))
        {
            alert("Check-in date you have chosen has already passed")
            theForm.CheckInDate.value = "";
            return false;
        }
        if( 0==(compareDates(checkOutDate,DATE_FORMAT,checkInDate,DATE_FORMAT)))
        {
            alert("Please choose a check-out date which is after your check-in date")
            theForm.CheckOutDate.value = "";
            return false;
        }

	}
	else{
		theForm.CheckAvailability.value="N"
	}

	/*if(!theForm.checkAvai.checked)
	{
	
		theForm.CheckAvailability.value="N"
	}*/

    if(theForm.NumOfRooms)
    {
        var rooms;
        if(theForm.NumOfRooms.type=="select-one")
        {
            rooms = theForm.NumOfRooms.options[theForm.NumOfRooms.selectedIndex].value

        }
        else if(theForm.NumOfRooms.type=="hidden")
        {
            rooms=theForm.NumOfRooms.value
        }
        SetCookie ("NumOfRooms",rooms)
    }
    if(theForm.NumOfAdults)
    {
        if(theForm.NumOfAdults.type=="select-one")
        {
            adults=theForm.NumOfAdults.options[theForm.NumOfAdults.selectedIndex].value
        }
        else if(theForm.NumOfAdults.type=="hidden")
        {
            adults=theForm.NumOfAdults.value
        }
        
        SetCookie ("NumOfAdults", adults)
    }
    
    if(theForm.NumOfKids)
    {
        var kids;
        if(theForm.NumOfKids.type=="select-one")
        {
            kids = theForm.NumOfKids.options[theForm.NumOfKids.selectedIndex].value

        }
        else if(theForm.NumOfKids.type=="hidden")
        {
            kids=theForm.NumOfKids.value
        }
        SetCookie ("NumOfKids",kids)
    }
	theForm.CheckInDate.value = checkInDate;
	theForm.CheckOutDate.value = checkOutDate;
    SetCookie ("CheckInDate",checkInDate)
    SetCookie ("CheckOutDate",checkOutDate)
	SetCookie ("CityName", trim(theForm.CityName.value))
	theForm.CityName.value =trim(theForm.CityName.value);
	return true;
}

function populateFormElement(element, theValue, theDefaultValue)
{
    if (theValue==null)
    {
        theValue=theDefaultValue
    }
    elementType= element.type;
    if (element.type=="select-one")
    {
        len = element.length
        for (i=0;i<len ;i++ )
         {
             if(element.options[i].value == theValue)
             {
                element.options[i].selected = true;
             }
         }
    }
    if(element.type=="hidden")
    {
        element.value=theValue
    }
}


function validateAvailForm(theForm)
{
	var today = formatDate(new Date(),DATE_FORMAT)
	var checkInDate = theForm.doa_mm.value + "/" +theForm.doa_dd.value + "/" + theForm.doa_yy.value;
    var checkOutDate =theForm.dod_mm.value + "/" +theForm.dod_dd.value + "/" + theForm.dod_yy.value;
    if(checkInDate != "")
	{
		if( isDate(checkInDate,DATE_FORMAT) == false)
		{
			alert("Please enter valid check-in date ")
			return false;
		}
		if (checkOutDate=="")
		{
			alert("Please enter check-out date");
			return false;
		}
	}
	else
	{
		alert("Please enter the check-in date")
		return false;
	}

	if(checkOutDate != "")
	{
		if( isDate(checkOutDate,DATE_FORMAT) == false)
		{
			alert("Please enter valid check-out date ")
			return false;
		}
		if (checkInDate=="")
		{
			alert("Please enter check-In date");
			return false;
		}
	}
	else
	{
		alert("Please enter the check-out date");
		return false;
	}
	
	if(checkInDate != "" || checkOutDate != "")
	{
        if( 0!=(compareDates(today,DATE_FORMAT,checkInDate  ,DATE_FORMAT)))
        {
            alert("Check-in date you have chosen has already passed")
            theForm.CheckInDate.value = "";
            return false;
        }
        if( 0==(compareDates(checkOutDate,DATE_FORMAT,checkInDate  ,DATE_FORMAT)))
        {
            alert("Please choose a check-out date which is after your check-in date")
            theForm.CheckOutDate.value = "";
            return false;
        }

	}
    if(theForm.NumOfRooms)
    {
        var rooms;
        if(theForm.NumOfRooms.type=="select-one")
        {
            rooms = theForm.NumOfRooms.options[theForm.NumOfRooms.selectedIndex].value

        }
        else if(theForm.NumOfRooms.type=="hidden")
        {

            rooms=theForm.NumOfRooms.value

        }
        SetCookie ("NumOfRooms",rooms)

    }

    if(theForm.NumOfAdults)
    {
        if(theForm.NumOfAdults.type=="select-one")
        {
            adults=theForm.NumOfAdults.options[theForm.NumOfAdults.selectedIndex].value
        }
        else if(theForm.NumOfAdults.type=="hidden")
        {
            adults=theForm.NumOfAdults.value
        }
        
        SetCookie ("NumOfAdults", adults)
    }
    if(theForm.NumOfKids)
    {
        var kids;
        if(theForm.NumOfKids.type=="select-one")
        {
            kids = theForm.NumOfKids.options[theForm.NumOfKids.selectedIndex].value
        }
        else if(theForm.NumOfKids.type=="hidden")
        {
           kids=theForm.NumOfKids.value
        }
        SetCookie ("NumOfKids",kids)
    }
	theForm.CheckInDate.value = checkInDate;
	theForm.CheckOutDate.value = checkOutDate
    SetCookie ("CheckInDate",checkInDate)
    SetCookie ("CheckOutDate",checkOutDate)
	return true;
}

function onError(form_object, input_object, object_value, error_message)
{
	alert(error_message);
	return false;	
}

function requiredField(obj, obj_type)
{
	if (obj_type == "TEXT" || obj_type == "PASSWORD")
	{
        
		if (trim(obj.value).length == 0) 
	  		return false;
		else 
	  		return true;
	}
	else if (obj_type == "SELECT")
	{
		for (i=0; i < obj.length; i++)
		{
			if (obj.options[i].selected)
				return true;
		}
	   	return false;	
	}
	else if (obj_type == "SINGLE_VALUE_RADIO" || obj_type == "SINGLE_VALUE_CHECKBOX")
	{
		if (obj.checked)
			return true;
		else
	   		return false;	
	}
	else if (obj_type == "RADIO" || obj_type == "CHECKBOX")
	{
		for (i=0; i < obj.length; i++)
		{
			if (obj[i].checked)
				return true;
		}
	   	return false;	
	}
}


/*function numberrange(object_value, min_value, max_value)
{
	if (min_value != null)
	{
		if (object_value < min_value)
			return false;
	}

	if (max_value != null)
	{
		if (object_value > max_value)
			return false;
	}

	return true;
}*/


/*function checknumber(object_value)
{
	if (object_value.length == 0)
		return true;

	var start_format = " .+-0123456789";
	var number_format = " .0123456789";
	var check_char;
	var decimal = false;
	var trailing_blank = false;
	var digits = false;

	check_char = start_format.indexOf(object_value.charAt(0));

	if (check_char == 1)
		decimal = true;
	else if (check_char < 1)
		return false;

	for (var i = 1; i < object_value.length; i++)
	{
		check_char = number_format.indexOf(object_value.charAt(i));
		if (check_char < 0)
			return false;
		else if (check_char == 1)
		{
			if (decimal)
				return false;
			else
				decimal = true;
		}
		else if (check_char == 0)
		{
			if (decimal || digits)	
				trailing_blank = true;
		}
		else if (trailing_blank)
			return false;
		else
			digits = true;
	}	

	return true
}*/


/*function checkrange(object_value, min_value, max_value)
{
	if (object_value.length == 0)
		return true;

	if (!checknumber(object_value))
		return false;
	else
		return (numberrange((eval(object_value)), min_value, max_value));

	return true;
}*/

function checkStrLength(object_value, max_value)
{
	len = object_value.length
	
	if(len >= max_value)
		return false
	else
		return true

}

function checkregex(object_value, regex)
{
	return regex.test(object_value);
}

function getRadioButtonValue(theElement)
{ 
    var j = theElement.length;


    for(var i=0; i<j; i++)
    {
           if(theElement[i].checked)
        {
            theValue = theElement[i].value;
            return theValue;
        }
    }
    if (!theElement.length)
    {
	theValue=theElement.value
	return theValue;
    }
    return null;

}

function clearRadioButtons(theElement)
{
    var j = theElement.length;
    for(var i=0; i<j; i++)
    {
         theElement[i].checked = false
        
    }
    if (!theElement.length)
     {
		theElement.checked=false;
     }
}

function populateSearchFields(theForm)
{
	var now = new Date();
	var preCheckIn = formatDate( new Date(now.getTime() + DEFAULT_CHECKIN_OFF_NUM*24*60*60*1000), DATE_FORMAT)
	var preCheckOut = formatDate( new Date(now.getTime() + (DEFAULT_CHECKIN_OFF_NUM + DEFAULT_DURATION)*24*60*60*1000), DATE_FORMAT)
	var checkIn;
	var checkOut;
    if(GetCookie("CheckInDate") != null)
    {
		checkIn = GetCookie("CheckInDate");
    }
	else
	{
		checkIn = preCheckIn
	}
    if(GetCookie("CheckOutDate") != null)
    {
		checkOut= GetCookie("CheckOutDate")
    }
	else
	{
		checkOut = preCheckOut
	}

	checkInArray = new Array();
	checkOutArray= new Array();
	checkInArray = checkIn.split("/");
	checkOutArray = checkOut.split("/");
	populateFormElement(theForm.doa_mm, checkInArray[0])
	populateFormElement(theForm.doa_dd, checkInArray[1])
	populateFormElement(theForm.doa_yy, checkInArray[2])
	populateFormElement(theForm.dod_mm, checkOutArray[0])
	populateFormElement(theForm.dod_dd, checkOutArray[1])
	populateFormElement(theForm.dod_yy, checkOutArray[2])
	
	theForm.CheckInDate.value=checkIn;
	theForm.CheckOutDate.value=checkOut;


	if (theForm.CityName && GetCookie("CityName")!=null )
	{
		theForm.CityName.value= GetCookie("CityName")
	}
    if(theForm.NumOfAdults) 
    {
       populateFormElement(theForm.NumOfAdults, GetCookie("NumOfAdults"), defaultNumOfAdults)
    }
    if (theForm.NumOfRooms)
    {
        populateFormElement(theForm.NumOfRooms, GetCookie("NumOfRooms"), defaultNumOfRooms)
    }
    if (theForm.NumOfKids)
    {
        populateFormElement(theForm.NumOfKids, GetCookie("NumOfKids"), defaultNumOfKids)
    }
}
function updateCheckIn(theFormStr, inDayID, outDayID)
{
	theForm = eval(theFormStr);
	var checkInDateStr = theForm.doa_mm.value + "/" +theForm.doa_dd.value + "/" + theForm.doa_yy.value;
	var theCheckInDate = new Date (getDateFromFormat(checkInDateStr,DATE_FORMAT))
	var checkOutDateStr = formatDate( new Date(theCheckInDate.getTime() + DEFAULT_DURATION*24*60*60*1000), DATE_FORMAT)
    var checkOutArray = checkOutDateStr.split("/")
	populateFormElement(theForm.dod_mm, checkOutArray[0])
	populateFormElement(theForm.dod_dd, checkOutArray[1])
	populateFormElement(theForm.dod_yy, checkOutArray[2])
	theForm.CheckInDate.value = checkInDateStr
	theForm.CheckOutDate.value = checkOutDateStr
	showWeek((theFormStr + ".CheckInDate"), inDayID)
	showWeek((theFormStr + ".CheckOutDate"), outDayID)
}

function updateCheckOut(theFormStr, outDayID)
{
	theForm = eval(theFormStr);
	var checkOutDateStr = theForm.dod_mm.value + "/" +theForm.dod_dd.value + "/" + theForm.dod_yy.value;
	theForm.CheckOutDate.value = checkOutDateStr
	showWeek((theFormStr + ".CheckOutDate"), outDayID)
}
function getCookieVal (offset) {
  var endstr = document.cookie.indexOf (";", offset);
  if (endstr == -1)
    endstr = document.cookie.length;
  return unescape(document.cookie.substring(offset, endstr));
}

function GetCookie (name) {
  var arg = name + "=";
  var alen = arg.length;
  var clen = document.cookie.length;
  var i = 0;
  while (i < clen) {
    var j = i + alen;
    if (document.cookie.substring(i, j) == arg)
      return getCookieVal (j);
    i = document.cookie.indexOf(" ", i) + 1;
    if (i == 0) break; 
  }
  return null;
}

function SetCookie (name,value,expires,path,domain,secure) {
  document.cookie = name + "=" + escape (value) +
    ((expires) ? "; expires=" + expires.toGMTString() : "") +
    //((path) ? "; path=" + path : "") +
     "; path=/" +
    ((domain) ? "; domain=" + domain : "") +
    ((secure) ? "; secure" : "");
}


function DeleteCookie (name,path,domain) {
  if (GetCookie(name)) {
    document.cookie = name + "=" +
      ((path) ? "; path=" + path : "") +
      ((domain) ? "; domain=" + domain : "") +
      "; expires=Thu, 01-Jan-70 00:00:01 GMT";
  }
}

function bookmark(url, description)
{
    netscape="Netscape User's hit CTRL+D to add a bookmark to this site."
    if (browser_IE)
    {
      window.external.AddFavorite(url, description);
    }
    else if (browser_NS4)
    {
        alert(netscape);
    }
}

function validateEmail(str) {

		var at="@"
		var dot="."
		var lat=str.indexOf(at)
		var lstr=str.length
		var ldot=str.indexOf(dot)
		if (str.indexOf(at)==-1){ return false }

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr)	{  return false	}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){ return false }

		 if (str.indexOf(at,(lat+1))!=-1){ return false }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){ return false }

		 if (str.indexOf(dot,(lat+2))==-1){ return false }
		
		 if (str.indexOf(" ")!=-1){ return false }

 		 return true					
	}

//this function used by the home page, should be removed later
function populateDatesFields(theForm)
{
    if(GetCookie("CheckInDate") != null)
    {
    theForm.CheckInDate.value = GetCookie("CheckInDate")
    }
    if(GetCookie("CheckOutDate") != null)
    {
    theForm.CheckOutDate.value = GetCookie("CheckOutDate")
    }
}

function doSimpleSearch(theForm)
{
    if(trim(theForm.city.value)=="")
	{
		alert("Please enter the city name");
		return false;
	}
     window.location="http://reservations.freehotelguide.com/nexres/search/power_results.cgi?src=10004996&city="+trim(theForm.city.value);

    return false;
}

function makeYearList(num){
var today = new Date()
var year = today.getFullYear()
   for(i=0;i<num;i++){
       document.write("<option value='" + (year + i) +"'>"+ (year + i) + "</option>");
   }
} 


// Trims a string
function trim(str) {
  return str.replace(/^\s+/g, '').replace(/\s+$/g, '');
}


function getTop(element) {
	var theElement = element;
	var newTop = 0;
	while(theElement.offsetParent) {
		newTop  += theElement.offsetTop;
		theElement = theElement.offsetParent;
	}
	return newTop;
}

function getBottom(element) {
	var theElement = element;
	
	return(getTop(theElement) + theElement.clientHeight);
}

function getLeft(element) {
	var theElement = element;
	var newLeft = 0;
	while(theElement.offsetParent) {
		newLeft  += theElement.offsetLeft;
		theElement = theElement.offsetParent;
	}
	return newLeft;
}

function getRight(element) {
	var theElement = element;
	
	return(getLeft(theElement) + theElement.clientWidth);
}

function highlightButton(theImg, useInline) {
	if(useInline) {
		theImg.style.backgroundImage = theImg.style.backgroundImage.replace(".gif", "_over.gif");
	}
	else if(theImg.tagName.toUpperCase() == 'DIV') {
		theImg.className = theImg.className.replace("Normal", "Highlighted");
	}
	else {
		theImg.src = theImg.src.replace(".gif", "_over.gif");
	}
}

function lowlightButton(theImg, useInline) {
	if(useInline) {
		theImg.style.backgroundImage = theImg.style.backgroundImage.replace("_over.gif", ".gif");
	}
	else if(theImg.tagName.toUpperCase() == 'DIV') {
		theImg.className = theImg.className.replace("Highlighted", "Normal");
	}
	else {
		theImg.src = theImg.src.replace("_over.gif", ".gif");
	}
}

function showLayer(lay) {
	if (browser_IE) {		
		document.all[lay].style.visibility = "visible";
		document.all[lay].style.display = "block";
	} 
	if (browser_NS4) {
		document.layers[lay].visibility = "show";
	}
	if (browser_W3C) {
		document.getElementById([lay]).style.visibility = "visible";
		document.getElementById([lay]).style.display = "block";			
	}
}

function hideLayer(lay) {
	if (browser_IE) {			
		document.all[lay].style.visibility = "hidden";
		document.all[lay].style.display = "none";
	}
	if (browser_NS4) {
		document.layers[lay].visibility = "hide";
	}
	if (browser_W3C) {
		document.getElementById([lay]).style.visibility = "hidden";
		document.getElementById([lay]).style.display = "none";			
	}
}

function openPop(url) {
   window.open(url,'ratings', 'width=550,height=600,titlebar=yes, scrollbars=yes');
  // window.open(url)
}

function getVar(varName) {
	var query = window.location.search.substring(1);
	var vars = query.split("&");
	
	for (var i=0;i<vars.length;i++) {
		var pair = vars[i].split("=");
		
		if(pair[0] == varName) {
			if(pair[1]) {
				return URLdecode(pair[1]);
			}
			else {
				return "";
			}
		}
	}
	return '';
}

function URLencode(sStr) {
    if(sStr) {
    	return escape(sStr).replace(/\+/g, '%2C').replace(/\"/g,'%22').replace(/\'/g, '%27');
    }
    else {
	return '';
    }
}

function URLdecode(sStr) {
    if(sStr) {
    	return unescape(sStr.replace(/\+/g, ' '));
    }
    else {
	return '';
    }
}

function getCookie (name) {
	  var arg = name + "=";
	  var alen = arg.length;
	  var clen = document.cookie.length;
	  var i = 0;
	  while (i < clen) {
	    var j = i + alen;
	    if (document.cookie.substring(i, j) == arg)
	      return getCookieVal (j);
	    i = document.cookie.indexOf(" ", i) + 1;
	    if (i == 0) break; 
	  }
	  return null;
}

function getCookieVal (offset) {
	  var endstr = document.cookie.indexOf (";", offset);
	  if (endstr == -1)
	    endstr = document.cookie.length;
	  return unescape(document.cookie.substring(offset, endstr));
	}

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" : "");
}

function randomString(string_length) {
	var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
	var randomstring = '';
	for (var i=0; i<string_length; i++) {
		var rnum = Math.floor(Math.random() * chars.length);
		randomstring += chars.substring(rnum,rnum+1);
	}
	return(randomstring);
}

function XBrowserAddHandler(target,eventName,handlerName) {
	if ( target.addEventListener )
		target.addEventListener(eventName, handlerName, false);
	else if ( target.attachEvent )
		target.attachEvent("on" + eventName, handlerName);
	else
		target["on" + eventName] = handlerName;
}