//returns a string repeating a char
function str_repeat (subject, length) {
   var output = subject;
   for (var i = 1; i < length; i++) { output += subject; }
   return output;
}

//addin the str_repeat method to native string object
String.prototype.str_repeat = function (length) {
   return str_repeat(this, length);
}

//pads a string
function str_pad(input, pad_length, pad_string, pad_type) {
   if (pad_type != 'STR_PAD_LEFT' && pad_type != 'STR_PAD_RIGHT' && pad_type != 'STR_PAD_BOTH') { pad_type = 'STR_PAD_RIGHT'; }
   if (input.length < pad_length) {
      pad_length = pad_length - input.length;
	  switch(pad_type){
		  case 'STR_PAD_LEFT':	input = String(pad_string).str_repeat(pad_length) + input; break;
		  case 'STR_PAD_RIGHT':	input = input + String(pad_string).str_repeat(pad_length); break;
		  case 'STR_PAD_BOTH': 	input = String(pad_string).str_repeat(pad_length / 2) + input + String(pad_string).str_repeat(pad_length / 2); break;
	  }
   }
   return input;
}

String.prototype.str_pad = function (length, string, type) {
   return str_pad(this, length, string, type);
}

// email check.
function emailCheck (emailStr)
{
	var emailPat=/^(.+)@(.+)$/;
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var quotedUser="(\"[^\"]*\")";
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom=validChars + '+';
	var word="(" + atom + "|" + quotedUser + ")";
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");

	var matchArray=emailStr.match(emailPat)
	if (matchArray==null)
	{
		// alert("Email address seems incorrect (check @ and .'s)")
		return false;
	}
	var user=matchArray[1];
	var domain=matchArray[2];

	if (user.match(userPat)==null)
	{
		// alert("The username doesn't seem to be valid.")
		return false;
	}

	var IPArray=domain.match(ipDomainPat);
	if (IPArray!=null)
	{
		for (var i=1;i<=4;i++)
		{
			if (IPArray[i]>255)
			{
				// alert("Destination IP address is invalid!")
				return false;
    		}
   		}
   		return true;
	}

	var domainArray=domain.match(domainPat);
	if (domainArray==null)
	{
		// alert("The domain name doesn't seem to be valid.");
		return false;
	}

	var atomPat=new RegExp(atom,"g");
	var domArr=domain.match(atomPat);
	var len=domArr.length;
	if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3)
	{
   		// alert("The address must end in a three-letter domain, or two letter country.")
   		return false;
	}

	if (len<2)
	{
   		// var errStr="This address is missing a hostname!";
   		// alert(errStr);
   		return false;
	}

	return true;
}

//Check digit
function isDigit(str)
{
	var ltdArray = new Array("1","2","3","4","5","6","7","8","9","0");
	var ch;
	for(var i=0; i<str.length; i++ )
	{
		var ltdch = false;
		ch = str.substring(i,i+1);
		for(var j in ltdArray)
		{
			if(ch == ltdArray[j])
			{
				ltdch = true;
				break;
			}
			if(j == ltdArray.length)
			{
				break;
			}

		}
		if(!ltdch)
		{
			break;
		}
	}
	return(ltdch);
}

//Check numeric number
function isNum(str)
{
	var ltdArray = new Array("1","2","3","4","5","6","7","8","9","0",".","-");
	var ch;
	for(var i=0; i<str.length; i++ )
	{
		var ltdch = false;
		ch = str.substring(i,i+1);
		for(var j in ltdArray)
		{
			if(ch == ltdArray[j])
			{
				ltdch = true;
				break;
			}
			if(j == ltdArray.length)
			{
				break;
			}

		}
		if(!ltdch)
		{
			break;
		}
	}
	return(ltdch);
}

//check blank value
function alltrim(str)
{
	var ch;
	var rstr;
	var i = 0;
	while(true)
	{
		ch = str.substring(i,i+1);
		if(ch != " ")
			break;
		i++;
	}
	str = str.substring(i,str.length);
	i = str.length;
	while(true)
	{
		ch = str.substring(i,i-1);
		if(ch != " ")
			break;
		i--;
	}
	str = str.substring(0,i);
	return(str);
}

//Check special charecter
function chkspech(str)
{
	var speArray = new Array("~","!","\\","\"","|");
	var ch;
	var isSpeCh = false;
	for(var i=0;i<str.length;i++)
	{
		ch = str.substring(i,i+1);
		for(var j in speArray)
		{
			if(ch == speArray[j])
			{
				isSpeCh = true;
				break;
			}
		}
		if(isSpeCh)
			break;
	}
	return(isSpeCh);
}

//Check special charecter
function chkspechplus(str)
{
	var speArray = new Array("~","!","\\","\"","|","\'","´","`","'");
	var ch;
	var isSpeCh = false;
	for(var i=0;i<str.length;i++)
	{
		ch = str.substring(i,i+1);
		for(var j in speArray)
		{
			if(ch == speArray[j])
			{
				isSpeCh = true;
				break;
			}
		}
		if(isSpeCh)
			break;
	}
	return(isSpeCh);
}

//check digit and a to z charecter
function isAlphaNum(str)
{
	var speArray = new Array("~","`","!","@","#","$","%","^","&","*","(",")","+","=","[","{","]","}",":",";",",","<",">",".","/","?","|","\\","\"");
	var ch;
	var isSpeCh = false;
	for(var i=0;i<str.length;i++)
	{
		ch = str.substring(i,i+1);
		for(var j in speArray)
		{
			if(ch == speArray[j])
			{
				isSpeCh = true;
				break;
			}
		}
		if(isSpeCh)
			break;
	}
	return(!isSpeCh);
}

//check upload file size
function LimitAttach(file)
{
	extArray = new Array(".gif", ".jpg");
	while (file.indexOf("\\") != -1)
	file = file.slice(file.indexOf("\\") + 1);
	ext = file.slice(file.indexOf(".")).toLowerCase();
	myExt = ext.substring(ext.length-4);
	for (var i = 0; i < extArray.length; i++) {
		if (extArray[i] == myExt) {
			return true;
		}
	}
	return false;
}

//Date checking
function checkdate1(jopDay,jopMonth,jopYear)
{
	var leapyear,year,month,day;
	for( var i=0;i<5;i++)
	{
		if(jopYear[i].selected)
		{
			year = jopYear[i].text;
			break;
		}
	}

	for( var i=0;i<31;i++)
	{
		if(jopDay[i].selected)
		{
			day = jopDay[i].text;
			break;
		}
	}

	for( var i=0;i<12;i++)
	{
		if(jopMonth[i].selected)
		{
			month = jopMonth[i].text;
			break;
		}
	}

	if(year%4 == 0)
	{
		leapyear = true;
	}

	if(!leapyear && month=="February" && day>28)
	{
		return(false);
	}

	if(leapyear && month=="February" && day>29)
	{
		return(false);
	}

	if(month=="April" || month =="June" || month=="September" || month=="November")
	{
		if( day > 30)
		{
			return(false);
		}
	}
	return(true);
}

function checkdate2(jopDay,jopMon)
{
	var dt = true;
	var day, month;

	for( var i=0;i<31;i++)
	{
		if(jopDay[i].selected)
		{
			day = jopDay[i].text;
			break;
		}
	}

	for( var i=0;i<12;i++)
	{
		if(jopMon[i].selected)
		{
			month = jopMon[i].text;
			break;
		}
	}

	if(month=="February" && day>29)
	{
		dt = false;
	}

	if(month=="April" || month =="June" || month=="September" || month=="November")
	{
		if( day > 30)
		{
			dt = false;
		}
	}
	return(dt);
}

//checking fax
function isFax(str)
{
	var ltdArray = new Array("1","2","3","4","5","6","7","8","9","0"," ","-","(",")");
	var ch;
	for(var i=0; i<str.length; i++ )
	{
		var ltdch = false;
		ch = str.substring(i,i+1);
		for(var j in ltdArray)
		{
			if(ch == ltdArray[j])
			{
				ltdch = true;
				break;
			}
			if(j == ltdArray.length)
			{
				break;
			}

		}
		if(!ltdch)
		{
			break;
		}
	}
	return(ltdch);
}

function comparedate(day1, month1, year1, day2, month2, year2)
{
	var fday,fmonth,fyear,tday,tmonth,tyear;
	for(var i=0;i<4;i++)
	{
		if(year1[i].selected)
		{
			fyear = year1[i].value;
		}
		if(year2[i].selected)
		{
			tyear = year2[i].value;
		}
	}
	for( var i=0;i<31;i++)
	{
		if(day1[i].selected)
		{
			fday = day1[i].value;
		}
		if(day2[i].selected)
		{
			tday = day2[i].value;
		}
	}
	for( var i=0;i<12;i++)
	{
		if(month1[i].selected)
		{
			fmonth = month1[i].text;
		}
		if(month2[i].selected)
		{
			tmonth = month2[i].text;
		}
	}

	var fdatestr = fmonth+ " " + fday +", " + fyear;
	var tdatestr = tmonth+ " " + tday +", " + tyear;
	var fmili = Date.parse(fdatestr);
	var tmili = Date.parse(tdatestr);
	if( fmili >  tmili )
	{
		return (false);
	}
	return(true);
}

function TeleChkspech(str)
{
	var speArray = new Array("~","`","!","@","#","$","%","^","&","*","+","=","[","{","]","}",":",";","<",">","/","?","|","\\","\"");
	var ch;
	var isSpeCh = false;
	for(var i=0;i<str.length;i++)
	{
		ch = str.substring(i,i+1);
		for(var j in speArray)
		{
			if(ch == speArray[j])
			{
				isSpeCh = true;
				break;
			}
		}
		if(isSpeCh)
			break;
	}
	return(isSpeCh);
}

function  TeleIsNum(str)
{
	var ltdArray = new Array("1","2","3","4","5","6","7","8","9","0","-"," ",".",",","(",")");
	var ch;
	for(var i=0; i<str.length; i++ )
	{
		var ltdch = false;
		ch = str.substring(i,i+1);
		for(var j in ltdArray)
		{
			if(ch == ltdArray[j])
			{
				ltdch = true;
				break;
			}
			if(j == ltdArray.length)
			{
				break;
			}
		}
		if(!ltdch)
		{
			break;
		}
	}
	return(ltdch);
}



//Valid Date checking
function vdate(Day,Month,Year)
{
	var leapyear
	if((Day <= 0) || (Day >31)){
		return false;
	}

	if((Month <=0) || (Month >12)){
		return false;
	}

	if((Year <2006) || (Year >2030)){
		return false;
	}

	if(Year%4 == 0)
	{
		leapyear = true;
	}

	if(!leapyear && Month=="February" && Day>28)
	{
		return(false);
	}

	if(leapyear && Month=="February" && Day>29)
	{
		return(false);
	}

	if(Month=="April" || Month =="June" || Month=="September" || Month=="November")
	{
		if( Day > 30)
		{
			return(false);
		}
	}
	return(true);
}

function validateDate(fld) {
	var RegExPattern = /^(?=\d)(?:(?:(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})|(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))|(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2}))($|\ (?=\d)))?(((0?[1-9]|1[012])(:[0-5]\d){0,2}(\ [AP]M))|([01]\d|2[0-3])(:[0-5]\d){1,2})?$/;
	var errorMessage = 'Please enter valid date as month, day, and four digit year.\nYou may use a slash, hyphen or period to separate the values.\nThe date must be a real date. 08-31-2006 would not be accepted.\nMM/DD/YYYY.';
	if ((fld.match(RegExPattern)) && (fld!='')) {
		return true;
	} else {
		alert(errorMessage);
		return false;

	}
}

	function createXMLHttpRequest(){

    	var xmlHttp = null;

    	if(typeof XMLHttpRequest != "undefined"){

        	xmlHttp = new XMLHttpRequest();

    	}

    	else if(typeof window.ActiveXObject != "undefined"){
        	try {
            	xmlHttp = new ActiveXObject("Msxml2.XMLHTTP.4.0");
        	}
        	catch(e){
            	try {
                	xmlHttp = new ActiveXObject("MSXML2.XMLHTTP");
            	}
            	catch(e){
                		try {
                    		xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
                		}
                		catch(e){
                    		xmlHttp = null;
                		}
            		}
        		}
    		}
    		return xmlHttp;
		}


function showUnavailableHotels(id, idLabel, idArrow) {
	var hotels 	= document.getElementById(id);
	var label 	= document.getElementById(idLabel);
	var arrow 	= document.getElementById(idArrow);
	
	if (hotels.style.display == "block") {
			hotels.style.display = "";
			label.innerHTML = "Show";
			arrow.getAttributeNode("src").value = "images/RL_yellow_arrow.gif";
	} else {
			hotels.style.display = "block";
			label.innerHTML = "Hide";
			arrow.getAttributeNode("src").value = "images/RL_yellow_arrow_down.gif";
	}
}