MAX_FLOAT = new Number("99999999.99");
MAX_INT = new Number("2147483647");

function floatKeyPress(){
	if (window.event.keyCode<44||window.event.keyCode>57){
		window.event.returnValue=false;
		return;
	}else if(window.event.keyCode==44||window.event.keyCode==46){
		//comma or dot is ok but we don't need to do a max value check so return
		if(window.event.srcElement.value.indexOf(".")>-1){
			//Only allow one decimal point
			window.event.returnValue=false;
		}else{
			window.event.returnValue=true;
		}
		return
	}
}

function floatOnBlur(){
	sTmp = window.event.srcElement.value;
	sNumber= "";
	for(i=0;i<sTmp.length;i++){
		if(sTmp.substring(i,i+1)!=","){
			sNumber+=sTmp.substring(i,i+1);
		}
	}
	oNumber = new Number(sNumber);
	if(oNumber>MAX_FLOAT){
		window.event.srcElement.value=MAX_FLOAT;
	}
}

function intKeyPress(){
	if (window.event.keyCode<48||window.event.keyCode>57){
		window.event.returnValue=false;
		return;
	}
}

function checkIntValue(oElement, maxValue){
	sTmp = oElement.value;
	sNumber= "";
	for(i=0;i<sTmp.length;i++){
		if(sTmp.substring(i,i+1)!=","){
			sNumber+=sTmp.substring(i,i+1);
		}
	}
	oNumber = new Number(sNumber);
	if(oNumber>maxValue){
		oElement.value=maxValue;
		return false;
	} else {
		return true;
	}
}

function intOnBlur(){
	checkIntValue(window.event.srcElement, MAX_INT);
}

function isLeapYear(intYear) {
	if (intYear % 100 == 0) {
		if (intYear % 400 == 0){
			return true;
		}
	} else {
		if ((intYear % 4) == 0) {
			return true;
		}
	}
	return false;
}

// This validation expects there to be three edit boxes 
// of the form vInputNameDD, vInputNameMM, vInputNameYY
function isValidDate(vForm, vInputName){	
	if (vForm.elements[vInputName + "MM"]){
		sMonth = vForm.elements[vInputName + "MM"].value;
		
		//Need to do this as parseInt treats a leading zero as octal
		if(sMonth.length==2&&sMonth.substring(0,1)=="0"){
			var intMonth = parseInt(sMonth.substring(1,2));
		}else{
			var intMonth = parseInt(sMonth);
		}
		if (isNaN(intMonth)){
			return false;
		} else {
			if (intMonth<1||intMonth>12){
				return false;
			}
		}
	}
	if (vForm.elements[vInputName + "DD"]){
		sDay = vForm.elements[vInputName + "DD"].value;
		//Need to do this as parseInt treats a leading zero as octal
		if(sDay.length==2&&sDay.substring(0,1)=="0"){
			var intDay= parseInt(sDay.substring(1,2));
		}else{
			var intDay= parseInt(sDay);
		}
		if (isNaN(intDay)){
			return false;
		}			
	}
	if (vForm.elements[vInputName + "YY"]){
		var intYear = parseInt(vForm.elements[vInputName + "YY"].value);
		if (isNaN(intYear)){
			return false;
		}			
	}	
	
	if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intDay > 31 || intDay < 1)) {
		return false;
	}
	if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intDay > 30 || intDay < 1)) {	
		return false;
	}
	if (intMonth == 2) {
		if (intDay < 1) {
			return false;
		}
		if (isLeapYear(intYear) == true) {
			if (intDay > 29) {
				return false;
			}
		} else {
			if (intDay > 28) {
				return false;
			}
		}
	}
	return true;	
}

function checkRequiredFields(v_objForm) {
	with (v_objForm) {
		for (i=0;i<elements.length;i++){
			strName=elements[i].name;
			if (elements["req_" + strName]&&elements[i].value==""){
				// If a second argument was passed use that as the alert message
				// if not then use the default english
				if (arguments.length>1){
					alert(arguments[1]);
				} else {
					alert("Please complete all required fields.");
				}
				elements[i].focus();
				return false;
			}
		}
	}
	return true;
}

function checkTabbedDlgRequiredFields(v_objForm) {
	with (v_objForm) {
		for (i=0;i<elements.length;i++){
			strName=elements[i].name;
			if (elements["req_" + strName]&&elements[i].value==""){				
				oEl=getTab(elements[i]);
				_showTable(oEl.id);
				if (arguments.length>1){
					alert(arguments[1]);
				} else {
					alert("Please complete all required fields.");
				}
				elements[strName].focus();
				return false;
			}
		}
	}
	return true;
}

function getTab(v_objElement){
	oEl=v_objElement;
	while (oEl.tagName!="TABLE"){
		oEl=oEl.parentElement;
	}
	return oEl;	
}

// Used by dialogs
function showTable() {
	if (event.srcElement.tagName=="A"){
		oAnchor=event.srcElement;
		if (typeof(oAnchor.getAttribute("table")!="undefined")){
			var strTableId = oAnchor.getAttribute("table");
			_showTable(strTableId);
		}
	}
}

function _showTable(v_strTableId){
	if (document.getElementById(v_strTableId)){
		if (document.getElementById("tabTitle")){
			document.getElementById("tabTitle").innerText = document.getElementById(v_strTableId).getAttribute("tabName");
		}
		document.getElementById(v_strTableId).runtimeStyle.display="block";
		oTables=document.getElementsByTagName("TABLE");
		for (i=0;i<oTables.length;i++){
			if (oTables[i].id!=v_strTableId){
				if (oTables[i].className=="tabs"){
					oTables[i].runtimeStyle.display="none";
				}
			}
		}
	}
}

function textAreaKeyPress(){
	objTextArea=event.srcElement;
	if (objTextArea.getAttribute("maxlength")){
		intMaxLen = parseInt(objTextArea.getAttribute("maxlength"));
		strLen = new String(objTextArea.value);
		if (strLen.length>=intMaxLen){
			event.returnValue = false;
			return false;
		}
	}
}

function textAreaPaste() {
	objTextArea=event.srcElement;
	if (objTextArea.getAttribute("maxlength")){
		intMaxLen = parseInt(objTextArea.getAttribute("maxlength"));
		strLen = new String(objTextArea.value);
		strPaste = window.clipboardData.getData("Text");
		if (strLen.length+strPaste.length>intMaxLen){
			event.returnValue = false;
			return false;			
		}
	}
}

function getNumber(strValue){
	re=/,/g;
	return strValue.replace(re,"");
}

function getLocalisedNumber(strValue){
	strValue = new String(strValue);
	decimal = strValue.lastIndexOf(".");
	commaCount = 0;
	strTmp="";
	if(decimal==-1){
		decimal=strValue.length;
	}else{
		strTmp=strValue.substring(decimal,strValue.length);
	}

	for(decimal=decimal;decimal>0;decimal--){
		if(commaCount==3){
			strTmp="," + strTmp;
			commaCount=0;
		}
		commaCount++;
		strTmp = strValue.substring(decimal-1,decimal) + strTmp;
	}
	
	if(strTmp.substring(0,1)==","){
		strTmp=strTmp.substring(1,strTmp.length);
	}
	return strTmp;
}

function onKeyPressCapsOnly(){
	if ((event.keyCode>=97)&&(event.keyCode<=122)){
		event.keyCode-=32;
	}
}