
function onKeyDown()
 {;
/* 	if ( ((event.altKey) && ((event.keyCode == 37)||(event.keyCode == 39))) ||
		 ((event.keyCode == 8) && (event.srcElement.type != "text" && event.srcElement.type != "textarea" && event.srcElement.type != "password")) || 
    	 ((event.ctrlKey) && ((event.keyCode == 78) || (event.keyCode == 82)) ) ||
    	 (event.keyCode == 116)||
		 (event.keyCode == 91)||(event.keyCode == 92)||(event.keyCode == 93)||
		 (event.keyCode == 112)||(event.keyCode == 114)||(event.keyCode == 115)||
		 (event.keyCode == 122)||((event.shiftKey)&&(event.keyCode==121))) 
    	 {
    		alert("Please Avoid Shortcut Keys");
        	event.keyCode = 0;
			event.returnValue = false;
			//event.cancelBubble=true;
        	//return false;
         }*/
  }

// NO RIGHT CLICK - Starts here

	/*var oLastBtn=0;
	bIsMenu = false;
	if (window.Event) 
	document.captureEvents(Event.MOUSEUP); 
	function nocontextmenu()
	{ 
		event.cancelBubble = true 
		event.returnValue = false; 
		return false; 
	} 
	function norightclick(e) 
	{ 
		if (window.Event) 
		{ 
			if (e.which !=1) 
			return false; 
		} 
		else 
		{
			if (event.button !=1) 
			{ 
				event.cancelBubble = true 
				event.returnValue = false; 
				return false; 
			} 
		}	
	} 
	document.oncontextmenu = nocontextmenu; 
	document.onmousedown = norightclick;*/
// NO RIGHT CLICK - Ends here 	
//added on 13 august 2005 
function truncatedecimal(digilength,valfield){
	var fieldvalue=valfield.value			
	if (fieldvalue.indexOf(".")>0){
		var decimalval=fieldvalue.substring(fieldvalue.indexOf(".")+1,fieldvalue.length)							
		if (decimalval.length>digilength){								
			valfield.value=fieldvalue.substring(0,fieldvalue.indexOf(".")+3)
			return true;						
		}		
	}else{
		return true
	}	
}

function checknumerics(valfield,valevent){
	var key;		
	if(window.event) {	// for IE, e.keyCode or window.event.keyCode can be used
		key = valevent.keyCode; 
	}else if(e.which) {  // netscape
		key = valevent.which; 
	}else {				// no event, so pass through
		return true;
	}		
	if ((key<47||key>58)&&(key<96||key>105)&&(key!=46&&key!=8&&key!=13)){		
		return false
	}
	if (key==8||key==13){					//46 for dot, 13 for enter, 8 bck spc.
		return true									
	}			
	var fieldvalue=valfield.value				
	if (fieldvalue.indexOf(".")>=0&&key==46) {				
		return false;
	}
		
	
}


function validate(valtype,valfield)
{
	var xx="^(\\s)*$";
	var re=new RegExp(xx,"gi");
	var input=trim(valfield);
	if(re.test(input)||(input==null))
	{
		return false;
	}
	else
	{
		var xx="";
		switch(valtype)
		{
		// Validation for Auto Generation Codes - Starts Here
		
			case "Year":
							xx="^[0-9]+[0-9]+[0-9]+[0-9]$";
							break;
			case "Exp":
							xx="^[0-9]*[0-9]$";
							break;				
							
			case "custcode":
							xx="^CU[0-9]{6}$";
							break;
			case "suppcode":
							xx="^SU[0-9]{6}$";
							break;
			case "empcode":
							xx="^EM[0-9]{6}$";
							break;
			case "sqno":
							xx="^SQ[0-9]{8}$";
							break;
			case "scno":
							xx="^SC[0-9]{8}$";
							break;
			case "dono":
							xx="^DO[0-9]{8}$";
							break;
			case "iono":
							xx="^IO[0-9]{8}$";
							break;
			case "pono":
							xx="^PO[0-9]{8}$";
							break;
		// Validation for Auto Generation Codes - Ends Here
			
		// Validation for Alphabets - Starts Here
		
			case "alphabet":  
							xx="^[a-z]+$";
							break;
							
			case "alphabetws": // With Space
							xx="^[a-z ]+$";
							break;
							
			case "alphanumwithdot":
							xx="^[ ]*[a-z]+[a-z0-9.,\\- ]*[ ]*$";
							break;
							
			case "spec":
							xx="^[ ]*[a-z]+[a-z0-9.&,\\- ]*[ ]*$";
							break;
											
			case "alphanum":
							xx="^[a-z0-9]+$";
							break;
			
			case "alphanumws":
							xx="^[a-z0-9 ]+$";
							break;	
							
			case "nume":
							xx="^[0-9]*$";
							break;
							

		// Validation for Alphabets - Ends Here
		// Validation for Integer Numbers - Starts Here						
			case "intno":	// for Quantity size = 4 or size = 5 e.g 9,999 or 99,999 
							//(Restrict the size 4 or 5 by giving maxlength attribute in input tag)			
							// common for all integer number validataion - no specific length satisfy upto 20 digits
							xx="^[0-9]{1,20}$";
							break;
		// Validation for Integer Numbers - Ends Here
			
		// Validation for Float Numbers - Starts Here
			case "floatgst":  // for GST size = 4,2 e.g 99.99
							xx="^[0-9]{0,2}(\\.[0-9]{0,2})?$";
							break;				
			case "floatprice": // for Unit Price size = 10,4 e.g 999,999.9999
							xx="^[0-9]{0,6}(\\.[0-9]{0,4})?$";
							break;				
			case "floatexchange":  // for Exchange Rate size = 15,10 e.g 99,999.9999999999
							xx="^[0-9]{0,5}(\\.[0-9]{0,10})?$";
							break;				
			case "floatamt": // for Invoice Amount size = 16,2 e.g 999,999,999,999.99
							xx="^[0-9]{0,12}(\\.[0-9]{0,2})?$";
							break;								
			case "floatamount": // for Invoice Amount size = 16,4 e.g 999,999,999,999.9999
							xx="^[0-9]{0,12}(\\.[0-9]{0,4})?$";
							break;				
			case "floatprofit":  // for Profit size = 21,4 e.g 99,999,999,999,999,999.9999
							xx="^[0-9]{0,17}(\\.[0-9]{0,4})?$";
							break;				
			case "floattarewt":  // for Tare Weight size = 8,3 e.g 99,999.999
							xx="^[0-9]{0,5}(\\.[0-9]{0,3})?$";
							break;				
			case "floattotalwt":  // for Total Weight size = 12,3 e.g 999,999,999.999
							xx="^[0-9]{0,9}(\\.[0-9]{0,3})?$";
							break;
			case "floatunitwt":  // for Unit Weight size = 6,3 e.g 999.999
							xx="^[0-9]{0,3}(\\.[0-9]{0,3})?$";
							break;				
		// Validation for Float Numbers - Ends Here
			
		// Validation for Rest of the Above - Starts Here	
			case "city":
							xx="^[a-z\\- ]+$";
							break;
							
			case "pincode":
							xx="^[0-9a-z\\-]+$";
							break;
			case "partno":
							// Comma(,), Hypen (-) and Single Quotes (') are not allowed in part number
							// rest of the characters are allowed
							xx="[,\\-\\']"
							break;
			case "doio":
							// Comma(,) are not allowed in purchase do and purchase io
							// rest of the characters are allowed
							xx="[,\\-]"
							break;  
			case "brand":
							// Comma(,) are not allowed in brand
							// rest of the characters are allowed
							xx="[,\\-]"
							break; 
			case "mailid":
							// Validatation for E-Mail ID's 
							xx="^[a-z0-9][\\w\\.\\-\\_]*[a-z0-9]@[a-z0-9][\\w\\.\\-_]*[a-z0-9]\\.[a-z][a-z\\.]*[a-z]$"
							break;
			case "phone":
							xx="^[0-9]{5,8}([ ]*,[ ]*[0-9]{5,8})*$"
							break;

		// Validation for Rest of the Above - Ends Here								

		// Waste Validations - Starts Here							
/*			case "phone":
							xx="^[ ]*[0-9]{1,6}-([0-9]{0,8}-)?[0-9]{5,12}([ ]*,[ ]*[0-9]{5,7})*[ ]*$"
							break;
			case "fax":
							xx="^[ ]*[0-9]{1,6}-([0-9]{0,8}-)?[0-9]{5,12}([ ]*,[ ]*[0-9]{5,7})*[ ]*$"
							break;
			case "discount":
							xx="^[ ]*[0-9]{1,2}(\\.[0-9]{0,1}0?)?[ ]*$";
							break;
			case "compname":
							//xx="^[ ]*[a-z]+[0-9a-z.,&\\-\\(\\)\\/\\\\ ]*$"
							xx="^[ ]*[a-z]+[0-9a-z.,&\\-\\(\\)\\/\\\\ ]*$"
							break;
			case "location":
							xx="^[ ]*[a-z]+[a-z0-9.,\\- ]*[ ]*$";
							break;
			case "floatno":
							xx="^[ ]*[0-9]{0,12}(\\.[0-9]{0,2})?[ ]*$";
							break;
			case "price":
							xx="^[ ]*[0-9]{0,6}(\\.[0-9]{0,4})?[ ]*$";
							break;
			case "cnvrate":
							xx="^[ ]*[0-9]{0,5}(\\.[0-9]{0,10})?[ ]*$";
							break;
			case "intno":
							xx="^[ ]*[0-9]{1,4}[ ]*$";
							break;
			case "num":
							xx="^[ ]*[0-9]{2,5}[ ]*$";
							break;						  
			case "phone1":
							xx="^[ ]*[0-9]{5,12}[ ]*$";
							break;
			
			case "price":		
							xx="";
							break;
			case "alphabet":
							xx="^[a-z ]+$";
							break;
			case "address":
							xx="'";
							break;						
			case "phonenew":
							xx="^[0-9]{5,7}([ ]*,[ ]*[0-9]{5,7})*$"
							break;
			case "mobile":
							xx="^[ ]*[0-9]{0,20}[ ]*$"
							break;								*/
		// Waste Validations - Ends Here
			default:
							return false;
		}
	 
		var re=new RegExp(xx,"gi");
		var input=trim(valfield);
		if(re.test(input))
		{
			if(valtype=="partno" || valtype=="brand" || valtype=="doio")
				return false;
			else
				return true;
		}
		else
		{
			if(valtype=="partno" || valtype=="brand" || valtype=="doio")
				return true;
			else
				return false;
		}
	}
}
function isempty(inputstr) 
{
	var xx="^(\\s)*$";
	var re=new RegExp(xx,"gi");
	var input=inputstr;
	
	if(re.test(input))
		return true;
	else
		return false;
}


function trim(val)
{
    var xx="^[ ]*";
    var re=new RegExp(xx,"gi");
	val = val.replace(re,"");
    var xx="[ ]*$";
    var re=new RegExp(xx,"gi");
	val = val.replace(re,"");
	return val;
}

function quotes(val)
{
    var xx="'";
    var re=new RegExp(xx,"gi");
	val = val.replace(re,"''");
	return val;
}

function roundnum(textval)
{
	n=4;
	fn=0.0001;
	zn="0000";
	textval=textval+"";
	ind=textval.indexOf(".");
	if (ind>=0)
	{
		textval=textval+zn;
		rps=textval.charAt(ind+n+1);
		v1=textval.substr(0,ind+n+1);
		if (rps>=5)
			textval=(parseFloat(v1)+fn)+"";
		if (ind==0)
			textval="0"+(textval+zn).substr(0,ind+n+1);
		else
			textval=(textval+zn).substr(0,ind+n+1);
	}	
	else
		textval=textval+"."+zn;
	return textval;	
}


//--- date validation ----------------------------------

// Declaring valid date character, minimum year and maximum year
var dtCh= "/";
var minYear=1900;
var maxYear=2100;

function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this
}

function isDate(dtStr){
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strDay=dtStr.substring(0,pos1)
	var strMonth=dtStr.substring(pos1+1,pos2)
	var strYear=dtStr.substring(pos2+1)
	strYr=strYear
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	month=parseInt(strMonth)
	day=parseInt(strDay)
	year=parseInt(strYr)
	if (pos1==-1 || pos2==-1){
		alert("The date format should be : dd/mm/yyyy")
		return false
	}
	if (strMonth.length<1 || month<1 || month>12){
		alert("Please enter a valid month")
		return false
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		alert("Please enter a valid day")
		return false
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear)
		return false
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		alert("Please enter a valid date")
		return false
	}
return true
}

//--- date validation ends here 


function trim2(inputString) {
   // Removes leading and trailing spaces from the passed string. Also removes
   // consecutive spaces and replaces it with one space. If something besides
   // a string is passed in (null, custom object, etc.) then return the input.
   if (typeof inputString != "string") { return inputString; }
   var retValue = inputString;
   var ch = retValue.substring(0, 1);
   while (ch == " ") { // Check for spaces at the beginning of the string
      retValue = retValue.substring(1, retValue.length);
      ch = retValue.substring(0, 1);
   }
   ch = retValue.substring(retValue.length-1, retValue.length);
   while (ch == " ") { // Check for spaces at the end of the string
      retValue = retValue.substring(0, retValue.length-1);
      ch = retValue.substring(retValue.length-1, retValue.length);
   }
   while (retValue.indexOf("  ") != -1) { // Note that there are two spaces in the string - look for multiple spaces within the string
      retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ")+1, retValue.length); // Again, there are two spaces in each of the strings
   }
   return retValue; // Return the trimmed string back to the user
} // Ends the "trim" function



//------- general funtion to check group of check box atleast one check box is selected
//------- pctrl - refers to a form control object // perrmsg - show errmsg if none selected
function fnCheckBox(pctrl,perrmsg){
	var outboo=false

	if (typeof(pctrl)=="object") {
			
		if (pctrl.length>1){
			for (var i=0; i<pctrl.length; i++){
				if (pctrl[i].checked) outboo=true 
			}
		}else{
			if (pctrl.checked) outboo=true 
		}

		if ( trim2(perrmsg)!="" && outboo==false) alert(perrmsg) 
	}

	return outboo;
}


//----------- code for maxchar count in textarea/textbox -------------------
	var cntcharIE = (document.all) ? 1 : 0;
	var cntcharDOM = 0; 
	if (parseInt(navigator.appVersion) >=5) {cntcharDOM=1};
				
	function countChars(cBoxName, cTxtName, maxKeys) {
	   //var str = new String(getTxt(cBoxName));
	   var str = new String(cBoxName.value);                 //--- instead of function:getTxt()
			   
	   var len = str.length;
	   var showstr = "<b>" + len + "</b> characters entered of <b>" + maxKeys + "</b> Limit.";
			   
		
		
	   if (len > maxKeys) showstr += "<br> <font color='red'><b>Number of Characters exceeds the Maximum limit</b></font>";
	   //txtShow( cTxtName, showstr );

	   // Detect Browser --- instead of function:txtshow
			   
	   showstr = "<font color='#333333'>[ " + showstr + " ]</font>"
	   if (cntcharDOM) {
	      var viewer = document.getElementById(cTxtName);
	      viewer.innerHTML=showstr;
	   }
	   else if(cntcharIE) {
	      document.all[cTxtName].innerHTML=showstr;
	   }			   
			   
	}
	
	
//----------- end countChars -------------------	


	function IsFloat(val){
		var value,count;
		//value = val.value;
		value = val;
		count=0;
		if(!(value.length == 0)){ 
			for(var j = 0; j < value.length; j++){
				chn = value.charAt(j);
				if (chn==".") 
				count++;
				if (!((chn >= 0) && (chn <= 9) || (chn == "."))){
					alert("Please enter numeric or Float values only");
					return false; 
				}
				if (count>1) {
					alert("Invalid Float values ");
					return false; 
				}
			}
		}
		return true;
	}