/* 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

function AllowNumeric()
{	
	if((event.keyCode > 47 && event.keyCode < 58))
	{
		event.returnValue= true;
	}
	else
	{
		event.returnValue= false;
	}	
}	

/// Allow Decimal
function AllowDecimal()
{	
	if((event.keyCode > 45 && event.keyCode < 58))
	{
		event.returnValue= true;
	}
	else
	{
		event.returnValue= false;
	}	
}	


// 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);
			}
}
// 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,4}$/ ;
	
	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

// 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();
}

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 checkTheKey()
{
  //alert(event.keyCode);
  if (  
  ((event.keyCode >= 65 && event.keyCode <= 122) || (event.keyCode >= 48 && event.keyCode <= 57)) 
      && event.keyCode != 94 && event.keyCode != 95 
      && event.keyCode != 96 && event.keyCode != 91 
      && event.keyCode != 92 && event.keyCode != 93
  
      || event.keyCode == 32 
      || event.keyCode == 13 
      ||(event.keyCode >= 44 && event.keyCode <= 47))
  {
  
    return true;
  }
    event.keyCode = 0;
  
}
function charAlert(textField,length) {
	if(textField.value.length > length){ 
	    textField.value = textField.value.substring(0,length);
        alert("No more text can be entered");
	}
}
