var TWOWHOLE_TWODECIMAL_RE = /^\d{0,2}(\.\d{0,2})?$/;
var FOURWHOLE_TWODECIMAL_RE = /^\d{0,4}(\.\d{0,2})?$/;


function jsCheckNumericOnly(e, oObject){
	var strText = null;
	
	if( window.event )
	{
		if( window.event && window.event.keyCode == 13 ){
			return true;
		}
	}
	else
	{
		if( e.which == 13 )
		{
			return true;
		}
	}
	
	
	if( window.event )
	{
		if((window.event != null) && (window.event.type != null) && (window.event.type == "keypress")){
			strText = String.fromCharCode(window.event.keyCode);
		}else if((window.event != null) && (window.event.type != null) && (window.event.type == "paste")){		
			strText = window.clipboardData.getData("Text");
	   	}else{
			if(typeof oObject == 'object'){
	   			if( (oObject != null) && (oObject.value != null)){
	   				strText = oObject.value;
	   			}
			}else if(typeof oObject == 'string'){
				strText = oObject;
			}
		}
	}
	else
	{	
		if( e.ctrlKey && (e.which == e.DOM_VK_V || e.which == 118) && e.type != "keyup" ) //work around for paste
		{
			strText = getDataFromClipboardInFirefox(); //get the data from the clipboard
		}
		else //keypress
		{			
			key = e.which;
			
			strText = String.fromCharCode( key );

			if( ( e.keyCode >= 35 && e.keyCode <= 46 ) || (e.keyCode >= 8 && e.keyCode <= 17 )   )
			{				
				return true;
			}
		}		
	}
	
	if(typeof strText == 'string'){
		if(strText != null){
			var strNumericCharacters = "0123456789";
			for(index = 0; index < strText.length; index++){
				if(strNumericCharacters.indexOf(strText.charAt(index))==-1){
					return false;
				}
			}
			return true;		
		}else{
			return true;
		}
	}else{
		return false;
	}
}

function onlyDecimals(e) {
	var key;
	if( window.event ) //IE
	{ 
		key = window.event.keyCode;
	}
	else
	{
		key = e.which;
					
		if( ( e.keyCode >= 35 && e.keyCode <= 46 ) || (e.keyCode >= 8 && e.keyCode <= 17 )   )
		{				
			return true;
		}			
	}
		
	if ((key >= 48 && key <= 57) || (key == 46 ) || key == 13){ 
		return true; 
	} else{
		return false;
	}
 }
 
function onlyNumbers(e) { 

	var key;
	if( window.event ) //IE
	{ 
		key = window.event.keyCode;
	}
	else
	{
		key = e.which;
					
		if( ( e.keyCode >= 35 && e.keyCode <= 46 ) || (e.keyCode >= 8 && e.keyCode <= 17 )   )
		{				
			return true;
		}
	}


	if ( (key >= 48 && key <= 57 ) || (key == 13) ) { 
		return true; 
	} else{
		return false;
	}
 }
 
 // maximum 2 whole numbers, maximum 2 decimal numbers
 function checkDecimalFormat(e, field, maxWholeNum) {
 	var key;
 	if( window.event )//IE
 	{
 		key = window.event.keyCode;
 	}
 	else
 	{
 		key = e.which;
 		 	
		if( ( e.keyCode >= 35 && e.keyCode <= 46 ) || (e.keyCode >= 8 && e.keyCode <= 17 )   )
		{				
			return true;
		}
 	}
 	
	if ((key >= 48 && key <= 57) || (key == 46 ) || key == 13){
		var fieldVal = field.value + String.fromCharCode(key);
		
		if (maxWholeNum == 2) {
			if (fieldVal.match(TWOWHOLE_TWODECIMAL_RE)) {
				return true; 
			} else { 
		  		return false; 
			}
		} else {
			if (fieldVal.match(FOURWHOLE_TWODECIMAL_RE)) {
				return true; 
			} else { 
		  		return false; 
			}		
		}	
	} else {
		return false;
	}
 } 
 
function roundOffTwoDecimals(value) {
	return Math.round(value*100)/100;
}


/*	
	discussions regarding copying and pasting from clipboard using javascript that is supported by firefox/netscape 
 	http://www.experts-exchange.com/Web/Web_Languages/JavaScript/Q_20233392.html
	http://www.krikkit.net/howto_javascript_copy_clipboard.html
*/
function getDataFromClipboardInFirefox() {
	
	  if (window.clipboardData) {	// IE
		    
	    return(window.clipboardData.getData('Text'));
	
	  } 
	  else if (window.netscape) {	// Non-IE Browsers
	  
	  	//signed.applets.codebase_principal_support should be set to true on browser 	  	
		//user_pref("signed.applets.codebase_principal_support", true);    
	    netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
		   
	    var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
	    if (!clip) return;

	    var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
	    if (!trans) return;

	    trans.addDataFlavor('text/unicode');

	    clip.getData(trans,clip.kGlobalClipboard);
		    
	    var str = new Object();
	    var len = new Object();

	    try { 
	    	trans.getTransferData('text/unicode',str,len); 
	    }
	    catch(error) { 
	    	return; 
	    }

	
	    if (str) {
	      
	      if (Components.interfaces.nsISupportsWString) str=str.value.QueryInterface(Components.interfaces.nsISupportsWString);	      
	      else if (Components.interfaces.nsISupportsString) str=str.value.QueryInterface(Components.interfaces.nsISupportsString);
	      else str = null;
	    }
	    if (str) return(str.data.substring(0,len.value / 2));	
	  }	
	  return;
} 