//given the value, str_trim trims down the string from all padded whitespaces...
function str_trim(str)
{	
	if(str.length > 0)
		while(str.charAt(0)==' ')
			str = str.substr(1);
		
	if(str.length > 0)
		while(str.charAt((str.length - 1))==' ')
			str = str.substring(0, str.length-1);
	
	return str;
}

function CheckRealNum(obj)
{
	regExpr=new RegExp(/^-?\d*(\.\d{1,2})?$/);
	
	if(str_trim(obj.value)=="" || !regExpr.test(obj.value))
		obj.value="0";		
}

function CheckRealNumX(obj)
{
	regExpr=new RegExp(/^-?\d*(\.\d{1,3})?$/);
	
	if(str_trim(obj.value)=="" || !regExpr.test(obj.value))
		obj.value="0";		
}

function checkNum()
{
	var carCode = event.keyCode;
	
	if ((carCode < 48) || (carCode > 57))
	{
		//alert(carCode);
		alert('Please enter only numeric values.');
		event.cancelBubble = true;
		event.returnValue = false;
	}
} 

function CheckNum(obj)
{
	regExpr = new RegExp(/^\d*$/);

	if(!regExpr.test(obj.value))
	{
		obj.value = 0;
		return false;
	}

	return true;
}

function validate_email(email_txt) 
{
	var emailReg = "^[\\w-_\.]*[\\w-_\.]\@([\\w].+)\.[\\w]$";
	var regex = new RegExp(emailReg);
	return regex.test(email_txt);
}

function IsImageFile(file_name)
{
	if(file_name!="")
	{
		index = file_name.lastIndexOf(".");
		ext = file_name.substr(index);
		
		if(ext!='.jpg'&&ext!='.gif'&&ext!='.jpeg'&&ext!='.png'&&ext!='.JPG'&&ext!='.PNG')
		{
//			alert("Please Enter only Image files");
			return 0;
		}
	}
	return 1;
}

function GoToPage(page)
{
	window.document.location.href=page;
}

function OpenPopup(file)
{
	win = window.open(file,'Popup','width=600,height=450,scrollbars=1');
	WindowXPosition(600,450,win);
}

function SetFocus(obj)
{
	obj.focus();
	obj.select();
}

function DeleteData(txt)
{
	var msg = "You Are About To Delete this " + txt + "! Continue?";

	if(confirm(msg))
		return true;
	else
		return false;
}

function DeleteDataAndGoToPage(txt, page)
{
	var msg = "You Are About To Delete This " + txt + "! Continue?";

	if(confirm(msg))
		window.document.location.href=page;
}

function WindowPosition(widthX,heightX)
{
	var width = (screen.width);
	var height = (screen.height - 25);
	var centerleft = 0;
	var centertop = 0;
	var centerleft = (width/2) - (widthX/2);
	var centertop = (height/2) - (heightX/2);
	var width=widthX;
	var height=heightX;
	window.moveTo(centerleft,centertop);
	window.resizeTo(width, height);
	window.focus();
}

function WindowXPosition(widthX,heightX,windowName)
{
	var width = (screen.width);
	var height = (screen.height - 25);
	var centerleft = 0;
	var centertop = 0;
	var centerleft = (width/2) - (widthX/2);
	var centertop = (height/2) - (heightX/2);
	var width=widthX;
	var height=heightX;
	windowName.moveTo(centerleft,centertop);
	windowName.resizeTo(width, height);
	windowName.focus();
}

function WindowXXPosition(widthX,heightX,windowName) //same as above, only it takes %age vals as params for width n height
{
	var width = (screen.width);
	var height = (screen.height - 25);
		
	var wt = (width * widthX) / 100;
	var ht = (height * heightX) / 100;

	var centerleft = (width/2) - (wt/2);
	var centertop = (height/2) - (ht/2);

	windowName.resizeTo(wt, ht);
	windowName.moveTo(centerleft,centertop);
	windowName.focus();
}

/*
function MemberValidate()
{
	var frm = document.frm_memberlogin;

	if(frm.txtlogin.value=="")
	{
		frm.txtlogin.focus();
		alert("Please Enter Member Login ID!")
		return false;
	}
	if(frm.txtpasswd.value=="")
	{
		frm.txtpasswd.focus();
		alert("Please Enter Member Password!")
		return false;
	}

	frm.txtpasswd.value = hex_md5(frm.txtpasswd.value); //md5 encr
	return true;
}	*/

function CommentValidate()
{
	var frm = document.frm_com;
	
	if(str_trim(frm.loggedin_flag.value) == -1)
	{
		if(str_trim(frm.txtname.value)=="")
		{
			alert("Please Enter Name.");
			frm.txtname.focus();
			return false;
		}
		if(str_trim(frm.txtemail.value)=="")
		{
			alert("Please Enter Email ID.");
			frm.txtemail.focus();
			return false;
		}
		if(checkEmail(frm.txtemail))
		{
			frm.txtemail.focus();
			return false;
		}

	}
	if(frm.txttitle.value=="")
	{
		frm.txttitle.focus();
		alert("Please Enter The Title.")
		return false;
	}
	if(frm.txtcmnt.value=="")
	{
		frm.txtcmnt.focus();
		alert("Please Enter Comment")
		return false;
	}
	return true;
}

function validate_date(day,month,year)
{
	// since jan equals one and not zero, hence thirteen elements in the array.  
	var no_of_days_in_month = new Array(0,31,28,31,30,31,30,31,31,30,31,30,31)
	
	if (month >= 1 && month <= 12 && day >=  1 && day <= 31 && year >= 0)
	{
		//Handling february, special case. 
		if (month == 2)
		{
			if ( (year%4==0 && year%100 != 0) || year%400 == 0 )
				no_of_days_in_month[month]=29
		}

		if (day >= 1 && day <= no_of_days_in_month[month])
			return true;
		else
			return false;
	}
	else
		return false;

}

function validateMonth(field, bypassUpdate) 
{
  var input = field.value
  if (isEmpty(input)) {
    alert("Be sure to enter a month value.")
    select(field)
    return false
  } else {
    input = parseInt(field.value, 10)
    if (isNaN(input)) {
      alert("Entries must be numbers only.")
      select(field)
      return false
    } else {
      if (!inRange(input,1,12)) {
         alert("Enter a month between 1 (January) and 12 (December).")
         select(field)
         return false
      }
    }
  }
  if (!bypassUpdate) {
      calcDate()
  }
  return true
}

function validateDate(field) {
  var input = field.value
  if (isEmpty(input)) {
    alert("Be sure to enter a date value.")
    select(field)
    return false
  } else {
    input = parseInt(field.value, 10)
    if (isNaN(input)) {
      alert("Entries must be numbers only.")
      select(field)
      return false
    } else {
      var monthField = document.frmob.mnth
      if (!validateMonth(monthField, true)) return false
      var monthVal = parseInt(monthField.value, 10)
      var monthMax = new Array(31,31,29,31,30,31,30,31,
                               31,30,31,30,31)
      var top = monthMax[monthVal]
	  
	  if(document.frmob.mnth.value==2 && document.frmob.date.value>=29)
	  {
	  	
	  	 if(!checkYear(document.frmob.yr.value))
		 {
		 alert("Enter a date between 1 and 28");
		 select(document.frmob.date)
		 return false;
		 }
		 else
		 {
		 	if(document.frmob.date.value>29)
			{
			 alert("Enter a date between 1 and 29");
			 select(document.frmob.date)
			 return false;
	  		}
			else
			return true;
	 	}
	  }
	  else
      if (!inRange(input,1,top)) {
        alert("Enter a date between 1 and " + top + ".")
        select(field)
        return false
      }
    }
  }
  calcDate()
  return true
}

function validateYear(field) {
  var input = field.value
  if (isEmpty(input)) {
    alert("Be sure to enter a year value.")
    select(field)
    return false
  } else {
    input = parseInt(field.value, 10)
    if (isNaN(input)) {
      alert("Entries must be numbers only.")
      select(field)
      return false
    } else {
      if (!inRange(input,1900,2007)) {
        alert("Enter a year between 1900 and 2007.")
        select(field)
        return false
      }
    }
  }
  calcDate()
  return true
}


function checkYear(year) { 
return (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) ? 1 : 0;
}

function calcDate()
 {
  var mm = document.frmob.month.value
  var dd = document.frmob.date.value
  var yy = document.frmob.year.value
  
  if(mm.length==1)
  mm="0"+mm
  
  if(dd.length==1)
  dd="0"+dd
  
  document.frmob.txtdob.value = yy + "-" + mm + "-" + dd
}
function checkForm(form) {
  if (validateMonth(form.month)) {
    if (validateDate(form.date)) {
      if (validateYear(form.year))
	   {
	  	return true
      }
    }
  }
  return false
}

function inRange(inputStr, lo, hi) 
{
  var num = parseInt(inputStr, 10);
  if (num < lo || num > hi) 
  {
    return 1;
  }
  return 0;
}

//===================================  VALID LOGIN NAMES	===========================
function checkLogName(x)
{
	var z;
	var s;

	z=new Array();
	s=x.value;

	for(j=0; j<s.length; j++)
	{ 
		z[j]=s.charAt(j);
		
		if(!(((z[j]>='a')&&(z[j]<='z')) || ((z[j]>='A')&&(z[j]<='Z')) || ((z[j]>='0')&&(z[j]<='9'))) )
		{
			x.value="";
			return 1;
		}	
	}
	return 0;
}

//===============================  VALID COMMUNICATION NUMBERS	=============================
function checkCommNumber(x)
{
	s=x.value;

	var z;
	z=new Array();
		
	for(j=0;j<s.length;j++)
	{
		z[j]=s.charAt(j);
		
		if(((z[j]>='0')&&(z[j]<='9'))||((z[j]=='-')))
		{
			continue;
		}
		else
		{
			x.focus();
			
			return 1;
		}
	}
	return 0;
}

//===============================  VALID Mobile NUMBERS	=============================
function checkMobNumber(x)
{
	s=x.value;

	var z;
	z=new Array();
		
	for(j=0;j<s.length;j++)
	{
		z[j]=s.charAt(j);
		
		if(((z[j]>='0')&&(z[j]<='9'))||((z[j]=='+')))
		{
			continue;
		}
		else
		{
			x.focus();
			
			return 1;
		}
	}
	return 0;
}

//===================================  VALID PASSWORDS	=============================
function checkPasswords(x, y)
{
	var p1=x;
	var p2=y;
 	if((p1.value!=p2.value))
	{
		alert("Passwords do not match. Please try again !!!")
		p1.value='';
		p2.value='';
		p1.focus();
		return 1;
	}
	return 0;
}

function TAloginform()
{
	var e=0;
	if(TAlogin.uname.value=="")
	{	
		msg.innerHTML="User Name Required"
		e=1;	
		return;
	}
	else {}
	
	if(TAlogin.passwd.value=="")
	{   
		msg.innerHTML="Password Required"
		e=1;
		return;
	}
	else {}
	
	if(e==0)
	{
		document.TAlogin.submit();
	}
}

function checkNumDec()
{
	var carCode = event.keyCode;
		
	if ( ((carCode >= 48) && (carCode <= 57)) || (carCode == 46) ) {}
	else
	{
		alert('Please enter only numeric values.');
		event.cancelBubble = true;
		event.returnValue = false;
		return;
	}
}

function CheckDates(date1,date2)
{
	fday=date1.substr(8,2);
	fyear=date1.substr(0,4);
	fmonth=date1.substr(5,2);
	tday=date2.substr(8,2);
	tyear=date2.substr(0,4);
	tmonth=date2.substr(5,2);
	
	fromdate=new Date(fyear,fmonth,fday);
	todate=new Date(tyear,tmonth,tday);
	
	fromdate=fromdate.getTime();
	todate=todate.getTime();	
	
	day1=fromdate/(60*60*24*1000);
	day2=todate/(60*60*24*1000);
	
	if((day2 < day1))
		return false;
	else 
		return true;
}

function VerifyDates(date1,date2,days)
{
	fday=date1.substr(8,2);
	fyear=date1.substr(0,4);
	fmonth=date1.substr(5,2);
	tday=date2.substr(8,2);
	tyear=date2.substr(0,4);
	tmonth=date2.substr(5,2);
	
	fromdate=new Date(fyear,fmonth,fday);
	todate=new Date(tyear,tmonth,tday);
	
	fromdate=fromdate.getTime();
	todate=todate.getTime();	
	
	day1=fromdate/(60*60*24*1000);
	day2=todate/(60*60*24*1000);
	NUMDAYSELECTED=day2-day1+1;
	
	if(NUMDAYSELECTED==days)
		return 0;
	else
	{
		alert("Please Check  the Number of Nights");
		return 1;	
	}
}

function Validate_Search()
{
	var frm = document.frm_srch;
	
	if(frm.txtchkin.value=="")
	{
		alert("Please Choose A Check In Date.");
		frm.f_trigger_a.focus();
		return false;
	}

	if(frm.txtchkout.value=="")
	{
		alert("Please Choose A Check Out Date.");
		frm.f_trigger_b.focus();
		return false;
	}

	return true;
}

function FrmQuery_Validate()
{
	var frm = document.frm_query;

	if(str_trim(frm.txtqname.value)=="")
	{
		alert("Please Enter Your Name.");
		frm.txtqname.focus();
		return false;
	}

	if(str_trim(frm.txtqtel.value)=="")
	{
		alert("Please Enter Your Contact No.");
		frm.txtqtel.focus();
		return false;
	}

	if(str_trim(frm.txtqemail.value)=="")
	{
		alert("Email ID is Compulsory.");
		frm.txtqemail.focus();
		return false;
	}
	else if(!validate_email(frm.txtqemail.value))
	{
		alert("Invalid Email ID");
		frm.txtqemail.focus();
		return false;
	}

	if(str_trim(frm.txtqquery.value)=="")
	{
		alert("Please Enter Your Query/ Comments");
		frm.txtqquery.focus();
		return false;
	}
	
	return true;
}

function FrmQueryCode_Validate()
{
	var frm = document.frm_query;

	if(str_trim(frm.txtqname.value)=="")
	{
		alert("Please Enter Your Name.");
		frm.txtqname.focus();
		return false;
	}

	if(str_trim(frm.txtqtel.value)=="")
	{
		alert("Please Enter Your Contact No.");
		frm.txtqtel.focus();
		return false;
	}

	if(str_trim(frm.txtqemail.value)=="")
	{
		alert("Email ID is Compulsory.");
		frm.txtqemail.focus();
		return false;
	}
	else if(!validate_email(frm.txtqemail.value))
	{
		alert("Invalid Email ID");
		frm.txtqemail.focus();
		return false;
	}

	if(str_trim(frm.txtqquery.value)=="")
	{
		alert("Please Enter Your Query/ Comments");
		frm.txtqquery.focus();
		return false;
	}
	
	// Verification Code
	if(str_trim(frm.txtverify.value)=="")
	{
		alert("Please Enter the Verification Code");
		frm.txtverify.focus();
		return false;
	}
	
	return true;
}

function hourglass() 
{
	var width = (screen.width) - 155;
	var height = (screen.height - 125);
	var centerleft = 0;
	var centertop = 0;
	var centerleft = (width/2) - (32/2);
	var centertop = (height/2) - (32/2);
	document.all.hiddenDIV.style.top=centertop;
	document.all.hiddenDIV.style.left=centerleft;
	document.all.hiddenDIV.style.visibility="visible";
	doHourglass();
}

function removehourglass()
{
	undoHourglass();
	document.getElementById("hiddenDIV").style.visibility="hidden"; 
}

function doHourglass()
{
	document.body.style.cursor = 'wait';
}

function undoHourglass()
{
	document.body.style.cursor = 'default';
}

function loadSearchPage(obj)
{	
	url = obj.value;
	
	if(url!='0')
	{
		location.href=url;
	}
	else
		return;
}

function ConvertFromYMDtoDMY(ymd_date)
{
	var dt_arr = ymd_date.split('-');
	var dmy_date = dt_arr[2] + "-" + dt_arr[1] + "-" + dt_arr[0];
	return dmy_date;
}

function ConvertFromDMYtoYMD(dmy_date)
{
	var dt_arr = dmy_date.split('-');
	var ymd_date = dt_arr[2] + "-" + dt_arr[1] + "-" + dt_arr[0];
	return ymd_date;
}

function ValidateSearchPanel(form_name, today_date)
{
	var frm = form_name;
	
	if(frm.txtchkin.value == "")
	{
		alert("Please Choose A Check In Date");
		frm.f_trigger_a.focus();
		return false;
	}

	///    DIFFERENCE CHECKING ....
	var days = 0;
	var difference = 0;
	var chkInDate = ConvertFromYMDtoDMY(frm.txtchkin.value);
	var arrchkInDate = chkInDate.split("-");
	chkInDate = new Date(arrchkInDate[1]+"/"+arrchkInDate[2]+"/"+arrchkInDate[0]);
	var chkOutDate = ConvertFromYMDtoDMY(frm.txtchkout.value);
	var arrchkOutDate = chkOutDate.split("-");
	chkOutDate = new Date(arrchkOutDate[1]+"/"+arrchkOutDate[2]+"/"+arrchkOutDate[0]);
	difference =  chkOutDate - chkInDate;
	days = difference/(1000*60*60*24);
   
   ///  LESS THAN TODAY CHECK
	var chkTodayDate = today_date;
	var arrchkTodayDate = chkTodayDate.split("-");
	chkTodayDate = new Date(arrchkTodayDate[1]+"/"+arrchkTodayDate[2]+"/"+arrchkTodayDate[0]);
	todaychkdifference =  chkInDate - chkTodayDate;
	todaychkdays = todaychkdifference/(1000*60*60*24);
   
	if(todaychkdays < 0)
	{
		alert("Check In Date Should Begin From Today Or Later");
		frm.f_trigger_a.focus();
		return false;
	}

    if(frm.txtchkout.value == "")
	{
		alert("Please Choose A Check Out Date");
		frm.f_trigger_b.focus();
		return false;
	}	
	
	if(days <= 0)
	{
		alert("Check Out Date Should Be Greater Than The Check In Date");
		return false;
	}
   
	if(days >= 7)
	{
		alert("Maximum Range Of Days Is 7 !!! Please Change Accordingly");
		frm.f_trigger_b.focus();
		return false;
	}

	for(var i=1; i <= frm.cmbnumrooms.value; i++)
	{
		x_adult = eval("frm.adult"+i);
		x_child = eval("frm.child"+i);
		num_ppl = parseInt(x_adult.value) + parseInt(x_child.value);

		if(num_ppl > 4)
		{
			alert("Maximum 4 Guests Allowed Per Room.");
			x_adult.focus();
			return false;
		}
	}

	return true;	
}

function Validate4PackageData(pkg_limit, chkin, chkout)
{
	var span_days = pkg_limit;
	var frm = document.frm_srch;
	var dat = document.frm_dat;

	var fromdt = ConvertFromDMYtoYMD(chkin);
	var tmp_fromdt = fromdt.split("-");
	var from_date = new Date(tmp_fromdt[1]+"/"+tmp_fromdt[2]+"/"+tmp_fromdt[0]);
	
	var todt = ConvertFromDMYtoYMD(chkout);
	var tmp_todt = todt.split("-");
	var to_date = new Date(tmp_todt[1]+"/"+tmp_todt[2]+"/"+tmp_todt[0]);

	msec = to_date - from_date;
	secs = (msec/1000);
	mins = (secs/60);
	hrs = (mins/60);
	days = (hrs/24);

	if(days < span_days)
		return false; // disable packages option n set to room rate disp
	else
		return true;
}

function GenerateRoomCtrls4SideSearchPanel(numrooms, MAX_ADULT, MAX_CHILD)
{
	str = "";
	
	str += "<table width='100%' border='0' cellspacing='0' cellpadding='0' align='center'>";

	for( i = 1 ; i <= numrooms ; i++ )
	{
		str += "<tr>";
		str += "<td class='searchtxt'><div align='center'><b>Room " + i + "</b></td>";
		str += "<td width='30%'><div align='center'>";

		str += "<select class=box name='adult"+i+"'>";
		
		for(numadults = 2 ; numadults <= MAX_ADULT; numadults++)
			str += "<option value='"+ numadults +"'>" +numadults+ "</option>";
		
		str += "</select>";
		
		str += "</td>";
		str += "<td width='30%'><div align='center'>";
		
		str += "<select class=box name='child"+i+"'><option value='0'>0</option>";
		for(numchild = 1 ; numchild <= MAX_CHILD; numchild++)
			str += "<option value='"+ numchild +"'>" +numchild+ "</option>";

		str += "</select>";		
		str += "</td>";
		str += "</tr>";
	}
	str += "</table>";

	return str;
}

function RestrictCharLength(obj, disp_ctrl)
{
	var maxlength=300;
	var txt = obj.value;
	var lbl = document.getElementById(disp_ctrl);
	var key = event.keyCode;

	if(txt.length == maxlength)
	{
		lbl.innerText="0";
	}
	else if(txt.length >= maxlength)
	{
		obj.value = txt.substr(0, 300);
		lbl.innerText="0";
	}
	else
	{
		lbl.innerText = maxlength - txt.length;
	}
}

function IsDateToCome(chk_date, today_date)
{
	var arrchk_date = chk_date.split("-");
	chk_date = new Date(arrchk_date[1]+"/"+arrchk_date[2]+"/"+arrchk_date[0]);

	var arrtoday_date = today_date.split("-");
	today_date = new Date(arrtoday_date[1]+"/"+arrtoday_date[2]+"/"+arrtoday_date[0]);

	todaychkdifference =  chk_date - today_date;
	todaychkdays = todaychkdifference/(1000*60*60*24);
   
	return (todaychkdays < 0)? false: true;
}

function DateDiff(date1, date2)
{
	fday=date1.substr(8,2);
	fyear=date1.substr(0,4);
	fmonth=date1.substr(5,2);
	tday=date2.substr(8,2);
	tyear=date2.substr(0,4);
	tmonth=date2.substr(5,2);
	
	fromdate=new Date(fyear,fmonth,fday);
	todate=new Date(tyear,tmonth,tday);
	
	fromdate=fromdate.getTime();
	todate=todate.getTime();	
	
	day1=fromdate/(60*60*24*1000);
	day2=todate/(60*60*24*1000);
	NUMDAYSELECTED = day2-day1;
	return NUMDAYSELECTED;
}

function RoundOff(number,n) // rounds up given no to 'n' number of places
{
	number = parseFloat(number);
	if(!isNaN(number))
	{
		power = Math.pow(10,n);
		number = Math.round(number*power)/ power;
		return number;
	}
	return 0;
}

function GetSelectedRadioValue(frm_obj, radio_name)
{
	var frm = frm_obj;
	if(!frm) return "";

	for(var i=0; i < frm.elements.length; i++)
		if( (frm.elements[i].type == 'radio') && (frm.elements[i].name == radio_name) && (frm.elements[i].checked))
			return frm.elements[i].value;
			
	return "";
}