var debugOn = true;
/**
 * DHTML date validation script. Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/)
 */
// Declaring valid date character, minimum year and maximum year
var dtCh= "-";
var minYear=1900;
var maxYear=2100;

function getHeightX(obj)
{
	var obj_height = 0;
	obj_height = obj.offsetHeight;
	return obj_height;
}
function getWidthX(obj)
{
	var obj_width = 0;
	obj_width = obj.offsetWidth;
	return obj_width;
}

/**
 * http://www.somacon.com/p355.php
 */
String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}
String.prototype.ltrim = function() {
	return this.replace(/^\s+/,"");
}
String.prototype.rtrim = function() {
	return this.replace(/\s+$/,"");
}



/* findPos() http://www.quirksmode.org/js/findpos.html */
function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}


var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();

function isNumeric(s){
	var i;
	var dot = 0;
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9")) && c != ".") return false;
		if (c == '.') dot++;
    }
    // All characters are numbers.
	if(dot > 1) return false;
	
    return true;
}

function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function toInteger(s){
	if ((s.length > 0) && (isInteger(s)))
	{
		try
		{
			return parseInt(s);
		}catch(Exception){}
	}
	return 0;
}

function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this
}

function isDateQ(dtStr){
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strDay=dtStr.substring(0,pos1)
	var strMonth=dtStr.substring(pos1+1,pos2)
	var strYear=dtStr.substring(pos2+1)
	strYr=strYear
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	month=parseInt(strMonth)
	day=parseInt(strDay)
	year=parseInt(strYr)
	if (pos1==-1 || pos2==-1){
//		alert("The date format should be : dd-mm-yyyy")
		return false
	}
	if (strMonth.length<1 || month<1 || month>12){
//		alert("Please enter a valid month")
		return false
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
//		alert("Please enter a valid day")
		return false
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
//		alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear)
		return false
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
//		alert("Please enter a valid date")
		return false
	}
return true
}

function ValidateForm(){
	var dt=document.frmSample.txtDate
	if (isDate(dt.value)==false){
		dt.focus()
		return false
	}
    return true
 }

  function addZero(vNumber){ 
    return ((vNumber < 10) ? "0" : "") + vNumber 
  } 
        
  function toDate(vDateString)
  {
	return new Date(vDateString.substring(6, 10) , eval(vDateString.substring(3, 5)) - 1 , vDateString.substring(0, 2) );
  }
  function formatDate(vDate, vFormat){ 
    var vDay                      = addZero(vDate.getDate()); 
    var vMonth            = addZero(vDate.getMonth()+1); 
    var vYearLong         = addZero(vDate.getFullYear()); 
    var vYearShort        = addZero(vDate.getFullYear().toString().substring(3,4)); 
    var vYear             = (vFormat.indexOf("yyyy")>-1?vYearLong:vYearShort) 
    var vHour             = addZero(vDate.getHours()); 
    var vMinute           = addZero(vDate.getMinutes()); 
    var vSecond           = addZero(vDate.getSeconds()); 
    var vDateString       = vFormat.replace(/dd/g, vDay).replace(/MM/g, vMonth).replace(/y{1,4}/g, vYear) 
    vDateString           = vDateString.replace(/hh/g, vHour).replace(/mm/g, vMinute).replace(/ss/g, vSecond) 
    return vDateString 
  } 
  

//convert string (dd-mm-yyyy) to date
function parseDate(date_str)
{
	var date_format = new Date();
	//set to 1 first
	date_format.setDate(1);
	date_format.setMonth(1);
	date_format.setYear(1900);

	date_format.setYear((date_str.substr(6,4)).valueOf());
	date_format.setMonth((date_str.substr(3,2)-1).valueOf());
	date_format.setDate((date_str.substr(0,2)).valueOf());
	date_format.setHours(0);
	date_format.setMinutes(0);
	date_format.setSeconds(0);
	try
	{
		date_format.setMilliseconds(0);
	}catch(Exception){}
	
	return date_format;
}

/**
 * Convert d M Y to d-m-Y
 */
function convertDMYDateFormat(aa)
{
	if (aa.match(/^\d\d[ |\/-](Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[ |\/-]\d\d\d\d$/)) {
		var tmp_aa = aa;
		aa = tmp_aa.substring(0,2);
		
		var tmp_aa_month = tmp_aa.substring(3,6);
		
		switch(tmp_aa_month)
		{
			case "Jan":
				aa += "-01";
				break;
			case "Feb":
				aa += "-02";
				break;
			case "Mar":
				aa += "-03";
				break;
			case "Apr":
				aa += "-04";
				break;
			case "May":
				aa += "-05";
				break;
			case "Jun":
				aa += "-06";
				break;
			case "Jul":
				aa += "-07";
				break;
			case "Aug":
				aa += "-08";
				break;
			case "Sep":
				aa += "-09";
				break;
			case "Oct":
				aa += "-10";
				break;
			case "Nov":
				aa += "-11";
				break;
			case "Dec":
				aa += "-12";
				break;
		}
		aa += "-" + tmp_aa.substring(7);
	}
	return aa;
}

//convert date to string (dd-mm-yyyy)
function dateToString(date_format)
{
	return addZero(date_format.getDate()) + "-" + addZero(date_format.getMonth() + 1) + "-" + addZero(date_format.getFullYear());
}

function validate_period(from_date_str,to_date_str)
{
	var from_date_format = parseDate(from_date_str);

	var to_date_format = parseDate(to_date_str);
	
	if (from_date_format >= to_date_format)
	{
		return false;
	}
	else
	{
		return true;
	}
}
  
//update room night field if found
function calendarForNight(document_form)
{
	if (document_form.for_night && document_form.from_date && document_form.to_date)
	{
		var from_date_Date = new Date();
		var to_date_Date = new Date();
		
		//copy from_date_Date to to_date_Date
		to_date_Date.setDate(from_date_Date.getDate());
		to_date_Date.setMonth(from_date_Date.getMonth());
		to_date_Date.setFullYear(from_date_Date.getFullYear());
		to_date_Date.setHours(from_date_Date.getHours());
		to_date_Date.setMinutes(from_date_Date.getMinutes());
		to_date_Date.setSeconds(from_date_Date.getSeconds());
		to_date_Date.setMilliseconds(from_date_Date.getMilliseconds());
		
		//set from_date_Date and to_date_Date as field content
		from_date_Date.setFullYear(document_form.from_date.value.substr(6,4));
		
		
		//remove leading zero if found
		var from_date_month_str = document_form.from_date.value.substr(3,2);
		if (from_date_month_str.charAt(0) == "0")
			from_date_month_str = from_date_month_str.charAt(1);
		from_date_Date.setMonth(parseInt(from_date_month_str) - 1);
		
		var from_date_date_str = document_form.from_date.value.substr(0,2);
		if (from_date_date_str.charAt(0) == "0")
			from_date_date_str = from_date_date_str.charAt(1);
		from_date_Date.setDate(parseInt(from_date_date_str));
		
		to_date_Date.setFullYear(document_form.to_date.value.substr(6,4));
		
		//remove leading zero if found
		var to_date_month_str = document_form.to_date.value.substr(3,2);
		if (to_date_month_str.charAt(0) == "0")
			to_date_month_str = to_date_month_str.charAt(1);
		to_date_Date.setMonth(parseInt(to_date_month_str) - 1);
		
		var to_date_date_str = document_form.to_date.value.substr(0,2);
		if (to_date_date_str.charAt(0) == "0")
			to_date_date_str = to_date_date_str.charAt(1);
		to_date_Date.setDate(parseInt(to_date_date_str));
		
		if ((to_date_Date - from_date_Date) > 0)
		{
			//milliseconds to day
			document_form.for_night.value = Math.round((to_date_Date - from_date_Date)/1000/60/60/24);
		}
		else
		{
			document_form.for_night.value = "";
		}
	}
}

//http://www.quirksmode.org/js/mailcheck.html
function validEmail(email_str)
{
	var x = email_str;
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (filter.test(x)) return true;
	else return false;
}

//add an option to the given combo-box object
function addOption(box_field,option_text,option_value)
{
	tmp_option = document.createElement("option");
	tmp_option.text = option_text;
	if (option_value == null)
		tmp_option.value = tmp_option.text;
	else
		tmp_option.value = option_value;
	try
	{
		box_field.add(tmp_option,null);
	}
	catch(ex)
	{
		box_field.add(tmp_option); //for IE
	}
}

//Fill a hour combo-box field with 00 to 23
function fillTimeHourField(hour_field)
{
	for (i=0;i<24;i++)
	{
		addOption(hour_field, addZero(i));
	}
}

//Fill a minute combo-box field with 00 to 59
function fillTimeMinuteField(minute_field)
{
	for (i=0;i<60;i++)
	{
		addOption(minute_field, addZero(i));
	}
}

function setStyle(element_obj, style_str)
{
	if (element_obj.style)
	{
		if (element_obj.style.setAttribute) //for IE only
		{
			element_obj.style.setAttribute("cssText",style_str);
		}
	}
	element_obj.setAttribute("style",style_str);
}

function getStyle(obj)
{
	if (obj.style)
	{
		if (obj.style.setAttribute)
		{
			return obj.style.getAttribute("cssText");
		}
	}
	return obj.getAttribute("style");
}

function showDiv(divid) {
	setStyle(document.getElementById(divid), "display:block");
}

function hideDiv(divid) {
//	setStyle(document.getElementById(divid), "display:none");
	setStyle(document.getElementById(divid), "position:absolute;top:-10000px");
}

function showTableRow(divid) {
	setStyle(document.getElementById(divid), "display:table-row");
}

function hideTableRow(divid) {
	//setStyle(document.getElementById(divid), "display:none");
	setStyle(document.getElementById(divid), "position:absolute;top:-10000px");
}


  
//update next date field if found
function calendarNextDate(document_form)
{
	if (document_form.from_date && document_form.to_date)
	{
		var from_date_Date = new Date();
		var to_date_Date = new Date();
		
		//copy from_date_Date to to_date_Date
		to_date_Date.setDate(from_date_Date.getDate());
		to_date_Date.setMonth(from_date_Date.getMonth());
		to_date_Date.setFullYear(from_date_Date.getFullYear());
		to_date_Date.setHours(from_date_Date.getHours());
		to_date_Date.setMinutes(from_date_Date.getMinutes());
		to_date_Date.setSeconds(from_date_Date.getSeconds());
		to_date_Date.setMilliseconds(from_date_Date.getMilliseconds());
		
		//set from_date_Date and to_date_Date as field content
		from_date_Date.setFullYear(document_form.from_date.value.substr(6,4));
		
		
		//remove leading zero if found
		var from_date_month_str = document_form.from_date.value.substr(3,2);
		if (from_date_month_str.charAt(0) == "0")
			from_date_month_str = from_date_month_str.charAt(1);
		from_date_Date.setMonth(parseInt(from_date_month_str) - 1);
		
		var from_date_date_str = document_form.from_date.value.substr(0,2);
		if (from_date_date_str.charAt(0) == "0")
			from_date_date_str = from_date_date_str.charAt(1);
		from_date_Date.setDate(parseInt(from_date_date_str));
		
		//to_date_Date.setFullYear(document_form.to_date.value.substr(6,4));
		to_date_Date.setFullYear(document_form.from_date.value.substr(6,4));
		
		//remove leading zero if found
		var to_date_month_str = document_form.to_date.value.substr(3,2);
		if (to_date_month_str.charAt(0) == "0")
			to_date_month_str = to_date_month_str.charAt(1);
		//to_date_Date.setMonth(parseInt(to_date_month_str) - 1);
		to_date_Date.setMonth(parseInt(from_date_month_str) - 1);
		
		var to_date_date_str = document_form.to_date.value.substr(0,2);
		if (to_date_date_str.charAt(0) == "0")
			to_date_date_str = to_date_date_str.charAt(1);
		//to_date_Date.setDate(parseInt(to_date_date_str));
		to_date_Date.setDate(parseInt(from_date_date_str) + 1);
		
		document_form.to_date.value = addZero(to_date_Date.getDate()) + "-" + addZero(to_date_Date.getMonth() + 1) + "-" + to_date_Date.getFullYear();
		/*
		if ((to_date_Date - from_date_Date) > 0)
		{
			//milliseconds to day
			document_form.for_night.value = Math.round((to_date_Date - from_date_Date)/1000/60/60/24);
		}
		else
		{
			document_form.for_night.value = "";
		}
		*/
	}
}
/*
 * Shift the header of a locked table upward with the distance "diff"
 */
function setLockedTableHeader(table_id,header_id,diff)
{
	setStyle(document.getElementById(header_id), "top: expression(document.getElementById('"+ table_id + "').scrollTop-"+diff+")");
}

/*
 * Disable some fields
 */
function disableFields(id_array)
{
	for(var i=0; i<id_array.length; i++)
	{
		document.getElementById(id_array[i]).disabled = true;
	}
}

/*
 * Enable a field
 */
function enableField(field_id)
{
	
	document.getElementById(field_id).disabled = false;
}



function popUpWin(url,win_name,win_width,win_height,resizable,scrollbars)
{
    var pos_param = "";
    
    if (win_width != undefined)
    {
        if (win_width != null)
        {
	        var leftVal=(screen.width / 2) - win_width/2;
	        pos_param += "width="+win_width+",left="+leftVal+",";
        }
	}
	if (win_height != undefined)
	{
		if (win_height != null)
		{
	        var topVal = (screen.height / 2) - win_height/2;
	        pos_param += "height="+win_height+",top="+topVal+",";
	    }
    }

	var resize_param = "";
    if (scrollbars == undefined)
        scrollbars = false;
    if (scroll == undefined)
        resizable = false;
    if (resizable)
        resize_param = ",resizable=yes";
    else
        resize_param = ",resizable=no";
    if (scrollbars)
        resize_param += ",scrollbars=yes";
    else
        resize_param += ",scrollbars=no";
    return window.open(url,win_name, pos_param + "directories=no,fullscreen=no,location=no,menubar=no" + resize_param + ",status=no,titlebar=no,toolbar=no",false);
}
function getCSSClass(elem)
{
	if (elem.getAttribute("class") == null)
		elem.setAttribute("class",elem.getAttribute("className"));
	else
		elem.setAttribute("className",elem.getAttribute("class"));
	return elem.getAttribute("class");
}
function setCSSClass(elem,css_class)
{
	elem.setAttribute("className",css_class);
	elem.setAttribute("class",css_class);
}
function setImage(elem_id,image_src)
{
	try {
		elem = document.getElementById(elem_id);
		elem.src = image_src;
	}catch(Exception){
	}
}
function getE(elem_id)
{
	return $(elem_id);
}

function clearElemContent(elem_id)
{
	try
	{
		var elem = getE(elem_id);
		while (elem.childNodes.length > 0)
		{
			elem.removeChild(elem.childNodes[0]);
		}
	}catch(Exception){}
}

//select an option in combo-box based on the given value
function selectOption(select_elem, option_value)
{
	var num = select_elem.options.length;
	for(var i=0; i<num; i++)
	{
		if (select_elem.options[i].value == option_value)
		{
			select_elem.selectedIndex = i;
			return;
		}
	}
}

//http://www.quirksmode.org
function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

function getLastIndexFromCookieArray(name) {
	var name_index = 0;
	while(readCookie(name + "[" + name_index + "]") != null)
	{
		name_index++;
	}
	return name_index;
}

function debug(msg) {
	try {
		if (debugOn)
			getE('debug').innerHTML += msg + "<br>";
	}catch(Exception){}
}

function popupHotel(hotel_id,page,check_in_date,check_out_date,txtBedT1Num,txtBedT2Num,txtBedT3Num,txtBedT4Num) {
	var url = "hotelReview.php";
	if (page == "review")
		url = "hotelReview.php";
	else if (page == "gallery")
		url = "hotelGallery.php";
	else if (page == "full")
		url = "hotelFull.php";
	else if (page == "instant")
		url = "hotelInstant.php";
	
	url += "?hotel_id=" + hotel_id;
	if (check_in_date != undefined)
	{
		url += "&check_in_date=" + check_in_date;
	}
	if (check_out_date != undefined)
	{
		url += "&check_out_date=" + check_out_date;
	}
	
	if (txtBedT1Num != undefined)
	{
		url += "&txtBedT1Num=" + txtBedT1Num;
	}
	if (txtBedT2Num != undefined)
	{
		url += "&txtBedT2Num=" + txtBedT2Num;
	}
	if (txtBedT3Num != undefined)
	{
		url += "&txtBedT3Num=" + txtBedT3Num;
	}
	if (txtBedT4Num != undefined)
	{
		url += "&txtBedT4Num=" + txtBedT4Num;
	}
	
	var new_window = popUpWin(url,'popupHotel',810,700,false,true);
	new_window.focus();
}

function displayFlash(flash_src,flash_width,flash_height)
{
	var flash_script = "<OBJECT classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0\"";
	
	if (flash_width != undefined && flash_width != null)
		flash_script += " WIDTH=\"" + flash_width + "\"";
	if (flash_height != undefined && flash_height != null)
		flash_script += " HEIGHT=\"" + flash_height + "\"";
	
	flash_script += "><PARAM NAME=\"movie\" VALUE=\"" + flash_src + "\"> <PARAM NAME=quality VALUE=high><EMBED ";
	
	if (flash_width != undefined && flash_width != null)
		flash_script += " WIDTH=\"" + flash_width + "\"";
	if (flash_height != undefined && flash_height != null)
		flash_script += " HEIGHT=\"" + flash_height + "\"";
	
	flash_script += " src=\"" + flash_src + "\" quality=\"high\" TYPE=\"application/x-shockwave-flash\" PLUGINSPAGE=\"http://www.macromedia.com/go/getflashplayer\"></EMBED></OBJECT>";
	
	document.write(flash_script);
}

function clearNode(elem)
{
	var ns = elem.childNodes;
	if (ns.length == 1)
		elem.removeChild(ns[0]);
	else
	{
		for (var i=0; len=ns.length; ++i)
			elem.removeChild(ns[0]);
	}
}
function setText(elem,html)
{
	clearNode(elem);
	elem.appendChild(document.createTextNode(html));
}
