// JavaScript Document

// Only allow numerinput and keyboard navigation codes
function fncNumbersOnly(e) {

	var key = window.event ? e.keyCode : e.which;
	
	if (key==null || key<27 || key==63272) {
		return(true)
	} else {
		var keychar = String.fromCharCode(key);
		reg = /\d/;
		return reg.test(keychar);
	}

}

// Remove leading zeros before parsing to an integer
function fncSuperParseInt(val) {

	if (val!=0) {
   		while (val.charAt(0) == '0') val = val.substring(1, val.length);
   	}
   return parseInt(val);
   
//End of function
}


//Show normal help
function jsfShowNormalHelp() {
	
	var objHelpContainer  = document.getElementById('helpContainer');
	var objHelpGeneral  = document.getElementById('helpGeneral');	
	var objHelpViewer  = document.getElementById('helpViewer');
	var objHelpText  = document.getElementById('helpText');
	
	//Put back any prior help text
	nodelist = objHelpText.childNodes;
	for(i = 0; i < nodelist.length; i++) {
		if (nodelist[i].id!="") {
			objHelpContainer.appendChild(nodelist[i]);
		} 
	}
				
	//Hide viewer div and show general help text
	objHelpViewer.style.display= "none"
	objHelpGeneral.style.display= "block"
	
	return(false)
}

//Show hidden Help
function jsfShowHelp(objLink,strLabel) {
		
	strID = objLink.id;
	strName = "hlp_" + strID.substr(4);
		
	if (strName!="") {
		
		var objHelp  = document.getElementById(strName);
		
		if (objHelp) {
					
			var objLabel = objLink.parentNode
		
			var objHelpContainer  = document.getElementById('helpContainer');
			var objHelpGeneral  = document.getElementById('helpGeneral');	
			var objHelpViewer  = document.getElementById('helpViewer');		
			var objHelpText  = document.getElementById('helpText');
			var objHelpLabel  = document.getElementById('helpLabel');
			
			if (! objHelpContainer) return
			
			//Hide viewer div and show general help text
			objHelpViewer.style.display= "none"
			objHelpGeneral.style.display= "block"
			
			//Show or hide help text as required		
			if (objHelp.parentNode==objHelpContainer ) {	
			
				//Put back any prior help text
				nodelist = objHelpText.childNodes;
				for(i = 0; i < nodelist.length; i++) {
					if (nodelist[i].id!="") {
						objHelpContainer.appendChild(nodelist[i]);
					} 
				}
							
				//Move help text from hidden help container to visible help div
				objHelpLabel.firstChild.nodeValue = strLabel	
				objHelpText.appendChild(objHelp)
				objHelpGeneral.style.display= "none"
				objHelpViewer.style.display = "block"
				
			} else {
				
				//Send the help text back to the hidden container
				objHelpContainer.appendChild(objHelp);
				
			}
		
		}
	
	}
	
	return(false);
	
//End of function
}

function findPos(obj) {
	var curleft = curtop = 0;
	
	if (obj.offsetParent) {
		
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
			
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}

	}
	return [curleft,curtop];
}

//Process a submit request - form must be properly named.
function fncCheckedSubmit($form) {
	if (document.forms[$form]) {
		if (fncCheckForm(document.forms[$form])) {
			if (document.forms[$form].elements["Action"]) {
				document.forms[$form].elements["Action"].value = "Submit";
				fncSubmit($form);
			}
		}
	} 
}

//Process a submit request - form must be properly named.
function fncIfOK($form,$action) {
	if (document.forms[$form]) {
		if (fncCheckForm(document.forms[$form])) {
			if (document.forms[$form].elements["Action"]) {
				document.forms[$form].elements["Action"].value = $action;
				fncSubmit($form);
			}
		}
	} 
}

//Process a submit request - form must be properly named.
function fncSaveandStay($form,$action) {
	if (document.forms[$form]) {
		if (document.forms[$form].elements["Action"]) {
			document.forms[$form].elements["Action"].value = $action;
			fncSubmit($form);
		}
	} 
}

//Process a submit request - form must be properly named.
function fncIfOK2($form,$action) {
	if (document.forms[$form]) {
		if (fncCheckForm2(document.forms[$form])) {
			if (document.forms[$form].elements["Action"]) {
				document.forms[$form].elements["Action"].value = $action;
				fncSubmit($form);
			}
		}
	} 
}


//Process a save request - same as Submit but without CheckForm.
function fncSave($form) {
	if (document.forms[$form]) {
			if (document.forms[$form].elements["Action"]) {
				document.forms[$form].elements["Action"].value = "Submit";
				fncSubmit($form);
			}
	} 
}

//Process an action request - same as IfOK but without CheckForm.
function fncRunAction($form,$action) {
	if (document.forms[$form]) {
			if (document.forms[$form].elements["Action"]) {
				document.forms[$form].elements["Action"].value = $action;
				fncSubmit($form);
			}
	} 
}


//Process a deletion request - form must be properly named.
function fncDelete($form) {
	if (confirm("Are you sure you want to delete this record?")) {
		if (document.forms[$form]) {
			if (document.forms[$form].elements["Action"]) {
				document.forms[$form].elements["Action"].value = "Delete";
				fncSubmit($form);
			}
		}
	}
}

//Process a submit request - referer must be set on the form
function fncSubmit($form) {
	document.forms[$form].submit();
	$ele = document.getElementById("divContent");
	if ($ele) $ele.style.display="none";
	$ele = document.getElementById("divWait");
	if ($ele) $ele.style.display="block";
}

function fncOKAction ($obj) {
	if (confirm("Are you sure you want to do this: "+ $obj.title)) {   
        document.forms["f1"].elements["Action"].value = $obj.value
		fncSubmit("f1");
	}
}

function fncAction ($obj) {
	document.forms["f1"].elements["Action"].value =  $obj.value;
	fncSubmit("f1");
}

//Process a cancellation request - referer must be set on the form
function fncCancel($form) {
	if (document.forms[$form].elements["referer"]) {
		document.location.href = document.forms[$form].elements["referer"].value;
	}
}




//Process a cancellation request - goes back to Application Home Page
function fncGoto($loc) {
	document.location.href = "../"+$loc;
}

//Check if a objects value is ""
function fncCheckNotBlank($form,$objName,$msgText,$error) {

		//Does the named input object exist?
		if ($form.elements[$objName]) {
			
			//Get a handle on the object
			var $obj = $form.elements[$objName];
			
			//If the field is blank the throw a validation error
			if ($obj.value=="") {
				$obj.style.backgroundColor="#FF9900";
				if ($error=="") {
					$obj.focus();
				}
				return ($error + $msg + "\n");
			} else {
				//There was no error reset background colour
				$obj.style.backgroundColor="white";
				return ($error);
			}
		} else {
			//Input object does not exist so throw an error message
			return ($error + "Unable to validate named field !\n");
		}

//End of function
}

//Check if a objects value is ""
function fncCheckNotBlank1($form,$objName,$msgText,$error) {

		//Does the named input object exist?
		if ($form.elements[$objName]) {
			
			//Get a handle on the object
			var $obj = $form.elements[$objName];
			
			//If the field is blank the throw a validation error
			if ($obj.value=="") {
				if ($error=="") {
					$obj.focus();
				}
				return ($error + $msg + "\n");
			} else {
				return ($error);
			}
		} else {
			//Input object does not exist so throw an error message
			return ($error + "Unable to validate named field !\n");
		}

//End of function
}

//Check if a objects value is ""
function fncCheckPercent($form,$objName,$msgText,$error) {

		//Does the named input object exist?
		if ($form.elements[$objName]) {
			
			//Get a handle on the object
			var $obj = $form.elements[$objName];
			
			//If the field vale is not in the range of 0 to 100 then ...
			if (parseInt($obj.value)<0 || parseInt($obj.value)>100) {
				$obj.style.backgroundColor="#FF9900";
				if ($error=="") {
					$obj.focus();
				}
				return ($error + $msg + "\n");
			} else {
				//There was no error reset background colour
				$obj.style.backgroundColor="white";
				return ($error);
			}
		} else {
			//Input object does not exist so throw an error message
			return ($error + "Unable to validate named field !\n");
		}

//End of function
}

//Extract a radio button value
function fncGetRadioValue($obj) {
	for (i=0;i<$obj.length;i++) {
        if ($obj[i].checked==true) {
            return ($obj[i].value)
        }
   	}
	return ""
//End of function
}

// Convert a date string into a date object
function fncIsDate($obj) {

	ve =  $obj.value
	
	ddmmyy = ve.split("/")
	d = 1*ddmmyy[0];
	m = (1*ddmmyy[1])-1;
	y = 1*ddmmyy[2];
	
	if (ddmmyy.length != 3) return(false) // Date must have 3 parts
	
	strYear = new String(ddmmyy[2])
	if (strYear.length != 4) return(false) // Year must be 4 long
	
	// Original date parts must match intrepreted values.
	dateInput = new Date(y,m,d) 
	if (dateInput.getDate()!=d || dateInput.getMonth()!=m || dateInput.getFullYear()!=y) {
		return(false);
	} else {
		return(dateInput);
	}
	
//End of function
}

// Check format of a date string
function fncCheckDateFormat($form,$objName,$msgText,$error) {

	if (!($form.elements[$objName])) {
		//Input object does not exist so throw an error message
		return ($error + "Unable to validate named field !\n");
	}

	var $obj = $form.elements[$objName];

	if (!(fncIsDate($obj))) {
					
			$obj.style.backgroundColor="#FF9900";
			if ($error=="") {
				$obj.focus();
			}
			return ($error + $msg + "\n");
		
	} else {
		
		//There was no error reset background colour
		$obj.style.backgroundColor="white";
		return ($error);
	}	

//End of function
}

//Update and submite the dataViewForm
function fncApplyFilter($obj) {
	
	$n = $obj.name;
	$v = $obj.options[$obj.selectedIndex].value;
	
	window.document.forms["dataViewForm"].elements["filterColumn"].value=$n;
	window.document.forms["dataViewForm"].elements["filterValue"].value=$v;
	window.document.forms["dataViewForm"].submit()
}

//Update and submite the dataViewForm
function fncApplyFilter2($obj,$col) {
	
	alert($col);
	
	$n = $col
	$v = $obj.value;
	
	window.document.forms["dataViewForm"].elements["filterColumn"].value=$n;
	window.document.forms["dataViewForm"].elements["filterValue"].value=$v;
	window.document.forms["dataViewForm"].submit()
}


//Update and submite the dataViewForm
function fncApplySort($obj) {
	
	$c = $obj.name;
	window.document.forms["dataViewForm"].elements["sortColumn"].value=$c;
	window.document.forms["dataViewForm"].submit()
}

			
			

