/* This function is used to give a user friendly autocomplete functionality
	in a long list of combo box entries.
*/
function autoComplete (field, select, property, forcematch) 
{
	var found = false;
	for (var i = 0; i < select.options.length; i++) {
	if (select.options[i][property].toUpperCase().indexOf(field.value.toUpperCase()) == 0) {
		found=true; break;
		}
	}
	if (found) { select.selectedIndex = i; }
	else 
	{ 
	select.selectedIndex = -1; 
	}
	if (field.createTextRange) 
	{
		if (forcematch && !found) {
			field.value=field.value.substring(0,field.value.length-1); 
			return;
			}
		var cursorKeys ="8;46;37;38;39;40;33;34;35;36;45;";
		if (cursorKeys.indexOf(event.keyCode+";") == -1) {
			var r1 = field.createTextRange();
			var oldValue = r1.text;
			var newValue = found ? select.options[i][property] : oldValue;
			if (newValue != field.value) {
				field.value = newValue;
				var rNew = field.createTextRange();
				rNew.moveStart('character', oldValue.length) ;
				rNew.select();
				}
			}
		}
	}

// End of autocomplete


// Check length and show proper message
function checkLength(id, length, errmsg)
{
	if(document.getElementById(id).value.length > length)
	{
		document.getElementById(id).value = document.getElementById(id).value.substring(0,length);
		alert(errmsg);
	}
	else
	{
		return true;
	}
}
// End length checking functionality

// Date Validation Functions
function checkValidDate(id,sErrmsg,blnRequired)
{
	var reDate = /^((((0[13578])|(1[02]))[\/]?(([0-2][0-9])|(3[01])))|(((0[469])|(11))[\/]?(([0-2][0-9])|(30)))|(02[\/]?[0-2][0-9]))[\/]?\d{4}$/ ;
	if(blnRequired == true)
	{
		if(document.getElementById(id).value == "" )
		{
			alert(sErrmsg);
			document.getElementById(id).focus();
			return false;
		} // field should not be empty.
		else
		{ // field is not empty so validate it.
			if( reDate.test(document.getElementById(id).value) == false )
			{
				alert(sErrmsg) ;
				document.getElementById(id).value = "" ;
				document.getElementById(id).focus();
				return false;
			}
			else
			{
				return true;
			}
		}
	}
	else
	{	// field can be empty. so if it is empty then dont validate it.
		if(document.getElementById(id).value == "")
			{
				return true; // because it is empty and it can be empty so its ok. :)
			}
		else
		{	// field is not empty so validate it.
			if( reDate.test(document.getElementById(id).value) == false )
			{
				alert(sErrmsg) ;
				document.getElementById(id).value = "" ;
				document.getElementById(id).focus();
				return false;
			}
			else
			{
				return true;
			}
		}
	}
}
// End of date validation 


// Checking for Real Numbers with 2 decimal digits
function checkCurrency(id,errmsg)
{
	var regExpCurr = /^[0-9]\d{0,8}(\.\d{1,2})?$/ ;
	
	if(regExpCurr.test(document.getElementById(id).value) == false)
	{
		alert(errmsg);
		document.getElementById(id).value = "";
		document.getElementById(id).focus();
		return false;
	}
	else
	{
		return true;
	}
}
// Real Number verification ends


// Number datatype validation
function checkNumber(id,errmsg)
{
	var regExpCurr = /^[0-9]\d{0,12}$/ ;
	
	if(regExpCurr.test(document.getElementById(id).value) == false)
	{
		alert(errmsg);
		document.getElementById(id).value = "";
		document.getElementById(id).focus();
		return false;
	}
	else
	{
		return true;
	}
}
// Number datatype validation ends here

// Digits only validation
function checkDigits(id,errmsg)
{
	var regExpDigits = /^\d+$/ ;
	
	if(regExpDigits.test(document.getElementById(id).value) == false)
	{
		alert(errmsg);
		document.getElementById(id).value = "";
		document.getElementById(id).focus();
		return false;
	}
	else
	{
		return true;
	}
}
// Digits only validation ends here

// US base telephone Number validation
function checkTelNumber(id,errmsg)
{
	var regExpTel = /^[01]?[- .]?(\([2-9]\d{2}\)|[2-9]\d{2})[- .]?\d{3}[- .]?\d{4}$/ ;
	
	if(regExpTel.test(document.getElementById(id).value) == false)
	{
		alert(errmsg);
		document.getElementById(id).value = "";
		document.getElementById(id).focus();
		return false;
	}
	else
	{
		return true;
	}
}
// US base telephone Number validation ends here

// Email validation
function checkEmail(id,errmsg)
{
	var regExpEmail = /^([0-9a-zA-Z]+[-._+&amp;])*[0-9a-zA-Z]+@([-0-9a-zA-Z]+[.])+[a-zA-Z]{2,6}$/ ;
	
	if(regExpEmail.test(document.getElementById(id).value) == false)
	{
		alert(errmsg);
		document.getElementById(id).value = "";
		document.getElementById(id).focus();
		return false;
	}
	else
	{
		return true;
	}
}
// Email validation ends here


// Checking for Valid Text Entry
function checkText(id,errmsg)
{
	var regExpText = /[A-Za-z]/ ;
	
	if(regExpText.test(document.getElementById(id).value) == false)
	{
		alert(errmsg);
		document.getElementById(id).value = "";
		document.getElementById(id).focus();
		return false;
	}
	else
	{
		return true;
	}
}
// Text Entry verification ends

// Date Comparison validator starts...
function compareDateValidator(firstDate, secondDate, errmsg)
{
	var startdate, enddate;
	startdate = new Date(document.getElementById(firstDate).value);
	enddate = new Date(document.getElementById(secondDate).value);
	if( enddate < startdate )
	{
		alert(errmsg);
		return false;
	}
	else
	{
		return true;
	}
}
// End of Date Compare Validator


//Initialize Focus on page_load
function GetFocus(id)
{
	if(!document.getElementById(id).disabled)
		document.getElementById(id).focus();
}
//


//Used for ignore special character in the textbox *****************

function validate()
			{
							
							var arr  = new Array('~','`','!','@','#','$','%','^','&','*','(',')','_','-','+','=','#','[','{',']','}','|','/','?','>','.','<',',');
							
							var station = document.getElementById("txtStationName").value;
							
							for(var i=0; i<arr.length; i++)
							{
									if(station.indexOf(arr[i])!=-1)
									{
									alert("Please Enter Proper Station");
									document.getElementById("txtStationName").focus();
									return false;
									break;
									} 

							}

			}


function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

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;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

/*
adding trim functions here
*/
function trimAll(sString) 
{
	while (sString.substring(0,1) == ' ')
	{
		sString = sString.substring(1, sString.length);
	}
	while (sString.substring(sString.length-1, sString.length) == ' ')
	{
		sString = sString.substring(0,sString.length-1);
	}
	return sString;
}

/* left trim function */
function leftTrim(sString) 
{
	while (sString.substring(0,1) == ' ')
	{
		sString = sString.substring(1, sString.length);
	}
	return sString;
}

/* right trim function */
function rightTrim(sString) 
{
	while (sString.substring(sString.length-1, sString.length) == ' ')
	{
		sString = sString.substring(0,sString.length-1);
	}
	return sString;
}


function doClick(buttonName,e)
    {
//the purpose of this function is to allow the enter key to 
//point to the correct button to click.
        var key;

         if(window.event)
              key = window.event.keyCode;     //IE
         else
              key = e.which;     //firefox
    
        if (key == 13)
        {
            //Get the button the user wants to have clicked
            var btn = document.getElementById(buttonName);
            if (btn != null)
            { //If we find the button click it
                btn.click();
                event.keyCode = 0
            }
        }
   }