function Browser() {

  var ua, s, i;

  this.isIE    = false;  // Internet Explorer
  this.isOP    = false;  // Opera
  this.isNS    = false;  // Netscape
  this.version = null;

  ua = navigator.userAgent;

  s = "Opera";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isOP = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  s = "Netscape6/";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  // Treat any other "Gecko" browser as Netscape 6.1.

  s = "Gecko";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = 6.1;
    return;
  }

  s = "MSIE";
  if ((i = ua.indexOf(s))) {
    this.isIE = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }
}

var browser = new Browser();
var W3CDOM = (document.createElement && document.getElementsByTagName);

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;
}

// get value of query string param
function getQueryParamValue(param) {
	var q = document.location.search || document.location.href.split("#")[1];
	if (q) {
		var detectIndex = q.indexOf(param+"=");
		var endIndex = (q.indexOf("&", detectIndex)>-1) ? q.indexOf("&", detectIndex) : q.length;
		if (q.length>1 && detectIndex>-1) {
			return q.substring(q.indexOf("=", detectIndex)+1, endIndex);
		} else {
			return "";
		}
	}
}

/* add Array.push if needed */
if (Array.prototype.push == null) {
	Array.prototype.push = function(item) {
		this[this.length] = item;
		return this.length;
	};
}

function inputPhone(number)
{
	var pattern = "0123456789- ().";
	
	if (len != 0)
	{
		var index = 0;
		var len = number.value.length;
		
		while ((index < len) && (len != 0))
			if (pattern.indexOf(number.value.charAt(index)) == -1)
			{
				if (index == len-1)
					number.value = number.value.substring(0, len-1);
				else if (index == 0)
					 	number.value = number.value.substring(1, len);
					 else number.value = number.value.substring(0, index)+number.value.substring(index+1, len);
				index = 0;
				len = number.value.length;
			}
			else index++;
	}
}

function inputTime(number)
{
	var pattern = "0123456789: .";
	
	if (len != 0)
	{
		var index = 0;
		var len = number.value.length;
		
		while ((index < len) && (len != 0))
			if (pattern.indexOf(number.value.charAt(index)) == -1)
			{
				if (index == len-1)
					number.value = number.value.substring(0, len-1);
				else if (index == 0)
					 	number.value = number.value.substring(1, len);
					 else number.value = number.value.substring(0, index)+number.value.substring(index+1, len);
				index = 0;
				len = number.value.length;
			}
			else index++;
	}
}

function inputNumber(number)
{
	var pattern = "0123456789";
	
	if (len != 0)
	{
		var index = 0;
		var len = number.value.length;
		
		while ((index < len) && (len != 0))
			if (pattern.indexOf(number.value.charAt(index)) == -1)
			{
				if (index == len-1)
					number.value = number.value.substring(0, len-1);
				else if (index == 0)
					 	number.value = number.value.substring(1, len);
					 else number.value = number.value.substring(0, index)+number.value.substring(index+1, len);
				index = 0;
				len = number.value.length;
			}
			else index++;
	}
}
function isEmail(email)
{
	if (email == "")
		return false;
	if (email.indexOf(" ") > 0)	
		return false;
	if (email.indexOf("@") == -1)	
		return false;
	if (email.indexOf(".") == -1)	
		return false;
	if (email.indexOf("..") != -1)	
		return false;
	if (email.indexOf("@") != email.lastIndexOf("@"))		
		return false;
		
	var len = email.length;
	
	if (email.lastIndexOf(".") == len-1)
		return false;
	
	var str = "0123456789abcdefghikjlmnopqrstuvwxyz-@._";
	
	for (var index = 0; index < len; index++)
		if (str.indexOf(email.charAt(index)) == -1)
			return false;
			
	var indexDot = 	email.indexOf(".");
	var indexAcsign = email.indexOf("@");
	
	if ((indexDot == indexAcsign-1) || (indexDot-1 == indexAcsign))
		return false;
					
	return true;
}
function isPhone(s) {
	if (s.search(/^[ .0-9]{3,}$/) != -1)
		return true ;
	return false ;
}

function isDate(s) {
	if (s.search(/^([0]?[1-9]|[1|2][0-9]|[3][0|1])[.\/-]([0]?[1-9]|[1][0-2])[.\/-]([0-9]{4}|[0-9]{2})$/) != -1)
		return true ;
	return false ;
}

function isBlank(str) {
	if(trim(str) == "" ) 
		return true ;
	return false ;
}

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

function IsNumeric(s) {
	return !isNaN(s);
}

function getElementsByBaseTagClass(base, tag, className) {
	var classPat = new RegExp('\\b'+className+'\\b');
	var nodes = base.getElementsByTagName(tag);
	var matching = [];
	for (var i = 0; i<nodes.length; i++) {
		if (classPat.test(nodes[i].className)) {
			matching.push(nodes[i]);
		}
	}
	return matching;
}

function showHideLayer(id, a) {
	var lyrObj = MM_findObj(id);
	if (lyrObj ==  null) {
		return;
	}
	lyrObj.style.display = (a == "show") ? "block" : "none";
}

function showContent(index) {
	/*show_hide button*/
	if (!document.buttonShowed) {
		document.buttonShowed = "facilities_btn_1";
	}
	showHideLayer(document.buttonShowed, "show");
	showHideLayer("facilities_btn_"+index, "hide");
	document.buttonShowed = "facilities_btn_"+index;
	
	/*show_hide content*/
	if (!document.contentShowed) {
		document.contentShowed = "facilities_1";
	}
	showHideLayer(document.contentShowed, "hide");
	showHideLayer("facilities_"+index, "show");
	document.contentShowed = "facilities_"+index;
}

function PopImg (id, ObjArr) {	
var topPos=screen.height/5;
var leftPos=screen.width/5;
	ObjArr[id].style.top=topPos+"px";
	ObjArr[id].style.left=leftPos+"px";

	if (ObjArr.length == 1){
        ObjArr=ObjArr[0];
		if (ObjArr.style.display=="") {
			ObjArr.style.display="block";
		} else if (ObjArr.style.display=="none") {
			ObjArr.style.display="block";
		} else if (ObjArr.style.display=="block") {
			ObjArr.style.display="none";
		}
	}	
	else {
		for (i=0; i<ObjArr.length; i++){
			if (i != id) ObjArr[i].style.display = "none";
			ObjArr[id].style.display="block";
		}
	}
}

// Enlarge Photo

function showVideoLayer()
{
	var frmObj = document.getElementById("popupImg");
	frmObj.style.top = getPageY()+50+"px";
	frmObj.style.visibility = "visible";
}

function hideVideoLayer()
{
	var frmObj = document.getElementById("popupImg");
	frmObj.style.visibility = "hidden";
}

function getPageY(){
	if(window.scrollY) return window.scrollY; // Mozilla
	if(window.pageYOffset) return window.pageYOffset; // Opera, NN4
	if(document.documentElement && document.documentElement.scrollTop){ // IE
		return document.documentElement.scrollTop;
	} else if(document.body && document.body.scrollTop){
		return document.body.scrollTop;
	}
	return 0;
}

/* reservation form validation */

function validateReservForm(frmObj)
{
	var fo = frmObj;
	var d=new Date();
	mDay=d.getDate();
	mMon=d.getMonth()+1;
	mYear=d.getFullYear();
	mToday=mMon + "/"+ mDay + "/"+ mYear;

	if (isBlank(fo.surname.value)) {
		showError(fo,"Please enter your surname.","error",fo.surname);
 		return;
	}
	else if (isBlank(fo.firstname.value)) {
		showError(fo,"Please enter your first name.","error",fo.firstname);
		return;
	}
	else if (isBlank(fo.homeadd.value)) {
		showError(fo,"Please enter your home address.","error",fo.homeadd);
		return;
	}
	else if (isBlank(fo.contactno.value)) {
		showError(fo,"Please enter your contact no.","error",fo.contactno);
 		return;
	}
	else if (!IsNumeric(fo.contactno.value)) {
		showError(fo,"Please enter your valid contact no.","error",fo.contactno);
		return;
	}
	else if (isBlank(fo.contactemail.value)) {
		showError(fo,"Please enter your email.","error",fo.contactemail);
 		return;
	}
	else if (!isEmail(fo.contactemail.value)) {
		showError(fo,"Please enter your valid email.","error",fo.contactemail);
 		return;
	}
	else if (isBlank(fo.arrival.value)) {
		showError(fo,"Please enter your arrival date.","error",fo.arrival);
 		return;
	}
	else if (Date.parse(fo.arrival.value)<Date.parse(mToday)) {
		showError(fo,"Arrival date is before today.","error",fo.arrival);
 		return;
	}
	else if (isBlank(fo.departure.value)) {
		showError(fo,"Please enter your departure date.","error",fo.departure);
 		return;
	}
	else if (Date.parse(fo.departure.value)<Date.parse(mToday)) {
		showError(fo,"Arrival date is before today.","error",fo.departure);
 		return;
	}	
	else if (Date.parse(fo.departure.value)<=Date.parse(fo.arrival.value)) {
		showError(fo,"Departure date invalid. Please choose a greater day.","error",fo.departure);
 		return;
	}	
	else if (fo.roomname.value == "0") {
		showError(fo,"Please select your room type.","error",fo.roomname);
 		return;
	}
	fo.submit();
	//return true;
}

function showError(formobj,err_str,err_div,input) {
	var x = getPageOffsetLeft(input);
	var y = getPageOffsetTop(input);
	var objCon = MM_findObj(err_div+"Content");
	var divObj = MM_findObj(err_div);
	if (objCon != null) {
		objCon.innerHTML="<p>"+err_str+"</p>";
	}
	if (divObj != null) {
		divObj.style.left = (x+4)+"px";
		divObj.style.top = y+20+"px";
		divObj.style.visibility = "visible";
	}
	
	if (browser.isIE) {
		var iframeObj = MM_findObj(err_div+"Iframe");
		if (iframeObj != null && divObj!=null) {
			iframeObj.style.width = divObj.offsetWidth+"px";
			iframeObj.style.height = divObj.offsetHeight+"px";
			iframeObj.style.left = divObj.style.left;
			iframeObj.style.top = divObj.style.top;
			iframeObj.style.visibility = "visible";
		}
	}
	input.focus();
	input.style.backgroundColor="#ebebeb";
	return false;
}

function closeError(err_div) {
	var divObj=MM_findObj(err_div);
	if (divObj!=null) {
		divObj.style.visibility="hidden";
	}
	if (browser.isIE) {
		var iframeObj = MM_findObj(err_div+"Iframe");
		if (iframeObj!=null) {
			iframeObj.style.visibility="hidden";
		}
	}
}

/* end reservation form validation */

function validateEmail(frmObj){
	var fo = frmObj;

	if (isBlank(fo.email.value)) {
		showError(fo,"Please enter your email.","error",fo.email);
 		return false;
	}
	else if (!isEmail(fo.email.value)) {
		showError(fo,"Please enter your valid email.","error",fo.email);
 		return false;
	}
	fo.submit();
	return true;
}

function showViewFullSize(imgPath)
{
	var frmObj = document.getElementById("viewFullSize");
	frmObj.style.visibility = "visible";
	frmObj.style.display = "block";
	frmObj.style.top = getPageY()+100+"px";
	var divImg = document.getElementById("fullsize");
	divImg.innerHTML = "<img src='"+imgPath+"' border='0' alt='' />";
}

function hideViewFullSize()
{
	var frmObj = document.getElementById("viewFullSize");
	frmObj.style.visibility = "hidden";
	frmObj.style.display = "none";
}

function getPageY(){
	if(window.scrollY) return window.scrollY; // Mozilla
	if(window.pageYOffset) return window.pageYOffset; // Opera, NN4
	if(document.documentElement && document.documentElement.scrollTop){ // IE
		return document.documentElement.scrollTop;
	} else if(document.body && document.body.scrollTop){
		return document.body.scrollTop;
	}
	return 0;
}

function selectIndex(selectObj){
	var winURL = location.href;
	var elementArr = winURL.split('?');
	var elementArr = elementArr[1].split('&');
	// 
	var roomArr= elementArr[0].split('=');
	//
	selectObj[roomArr[1]].selected = true;	
}

