var dFilterStep
//browser detection
var strUserAgent = navigator.userAgent.toLowerCase();

var isIE = strUserAgent.indexOf("msie") > -1;
var isNS6 = strUserAgent.indexOf("netscape6") > -1;
var isNS4 = !isIE && !isNS6  && parseFloat(navigator.appVersion) < 5;

//regular expressions
var reValidChars = /\d/;

function dFilterStrip (dFilterTemp, dFilterMask)
{
    dFilterMask = replace(dFilterMask,'#','');
    for (dFilterStep = 0; dFilterStep < dFilterMask.length++; dFilterStep++)
		{
		    dFilterTemp = replace(dFilterTemp,dFilterMask.substring(dFilterStep,dFilterStep+1),'');
		}
		return dFilterTemp;
}

function dFilterMax (dFilterMask)
{
 		dFilterTemp = dFilterMask;
    for (dFilterStep = 0; dFilterStep < (dFilterMask.length+1); dFilterStep++)
		{
		 		if (dFilterMask.charAt(dFilterStep)!='#')
				{
		        dFilterTemp = replace(dFilterTemp,dFilterMask.charAt(dFilterStep),'');
				}
		}
		return dFilterTemp.length;
}

function dFilter (objFormField, textbox, dFilterMask, limitNum)
{

	var key, strKey;

	if (isIE) {
		key = objFormField.keyCode;
	} else {
		key = objFormField.which;
	}

	strKey = String.fromCharCode(key);

	dFilterNum = dFilterStrip(textbox.value, dFilterMask);

		if (key==9 || key==0)
		{
		    return true;
		}
		else if (key==8&&dFilterNum.length!=0)
		{
			dFilterNum = dFilterNum.substring(0,dFilterNum.length-1);
		}
		else if (key==8&&dFilterNum.length==0)
		{
			dFilterFinal = '';
		}


 	  	else if ( ((key>47&&key<58)||(key>95&&key<106)) && dFilterNum.length<dFilterMax(dFilterMask) )

		{
			if (key>95&&key<106)
			{
			/*	
				switch (key)
				{
					case 96 : dFilterNum=dFilterNum+0; break;
					case 97 : dFilterNum=dFilterNum+1; break;
					case 98 : dFilterNum=dFilterNum+2; break;
					case 99 : dFilterNum=dFilterNum+3; break;
					case 100 : dFilterNum=dFilterNum+4; break;
					case 101 : dFilterNum=dFilterNum+5; break;
					case 102 : dFilterNum=dFilterNum+6; break;
					case 103 : dFilterNum=dFilterNum+7; break;
					case 104 : dFilterNum=dFilterNum+8; break;
					case 105 : dFilterNum=dFilterNum+9; break;
					default : dFilterNum=dFilterNum+0;
				}
			*/
			}
			else
			{
				dFilterNum=dFilterNum+String.fromCharCode(key);

			}
		}

		var dFilterFinal='';
    		for (dFilterStep = 0; dFilterStep < dFilterMask.length; dFilterStep++)
		{
        	if (dFilterMask.charAt(dFilterStep)=='#')
		{
			if (dFilterNum.length!=0)
			{
				dFilterFinal = dFilterFinal + dFilterNum.charAt(0);
				dFilterNum = dFilterNum.substring(1,dFilterNum.length);
			}
			else
			{
				dFilterFinal = dFilterFinal + "";
			}
		}
		else if (dFilterMask.charAt(dFilterStep)!='#')
		{
			dFilterFinal = dFilterFinal + dFilterMask.charAt(dFilterStep); 			

		}
//		    dFilterTemp = replace(dFilterTemp,dFilterMask.substring(dFilterStep,dFilterStep+1),'');
		}


		textbox.value = dFilterFinal;

		// delete unwanted string
		if ((limitNum != '') && (limitNum == dFilterFinal))
		{	
			textbox.value = '';			
		}


    return false;
}

function replace(string,text,by) {
	// Replaces text with by in string
    var strLength = string.length, txtLength = text.length;

    if ((strLength == 0) || (txtLength == 0)) return string;

    var i = string.indexOf(text);
    if ((!i) && (text != string.substring(0,txtLength))) return string;
    if (i == -1) return string;

    var newstr = string.substring(0,i) + by;

    if (i+txtLength < strLength)
        newstr += replace(string.substring(i+txtLength,strLength),text,by);

    return newstr;
}


function formError(fieldName, strMessage){
	alert(strMessage);
	eval("frm." + fieldName + ".focus()");
	return false;
}

function validEmail(str) {
	// are regular expressions supported?
	var supported = 0;
	if (window.RegExp) {
		var tempStr = "a";
		var tempReg = new RegExp(tempStr);
		if (tempReg.test(tempStr)) supported = 1;
	}
	if (!supported)
		return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
	var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)|( )");
	var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,4}|[0-9]{1,4})(\\]?)$");
	return (!r1.test(str) && r2.test(str));
}

function formatNumber(numberToCheck){
	var strNumber = new String(numberToCheck);
	var r1 = new RegExp("[0-9]+");
	if(r1.test(strNumber)){
		return strNumber.match(r1);
	}else{
		return '';
	}
}

function trim(strText)
{
	// this will get rid of leading spaces + tabs
	while(strText.substring(0, 1) == ' ' || strText.charCodeAt(0) == 9)
	{
		strText = strText.substring(1, strText.length);
	}

	// this will get rid of trailing spaces + tabs
	while(strText.substring(strText.length - 1, strText.length) == ' ' || strText.charCodeAt(0) == 9)
	{
		strText = strText.substring(0, strText.length - 1);
	}

	return(strText);
}


// Name: check_isNum
// Purpose: validate numbers with min and max values
function check_isNum(THISOBJECT, minVal, maxVal){
	var checkOK = "0123456789";
	var checkStr = THISOBJECT;
	var allValid = true;
	var decPoints = 0;
	var allNum = "";
	var minValue = minVal;
	var maxValue = maxVal;

	if (checkStr != ""){
		for (i = 0;  i < checkStr.length;  i++){
			ch = checkStr.charAt(i);

			if (allValid == false){
				break;
			}

			for (j = 0;  j < checkOK.length;  j++){

				if (ch == checkOK.charAt(j)){
					break;
				}

				if (j == 9){
					allValid = false;
					break;
				}

			}
		}

		if (checkStr > maxValue || checkStr < minValue){
				allValid = false;
		}

	}
	else {
		allValid = false;
	}

	if (allValid == true){
		return true;
	}
	else{
		return false;
	}
}

function CheckNumeric(string) {
    if (!string) return false;
    var Chars = "0123456789";

    for (var i = 0; i < string.length; i++) {
       if (Chars.indexOf(string.charAt(i)) == -1)
          return false;
    }
    return true;
} 

