

/***************************************
This file is included in all database editing screens.
It contains generic functions for submitting 
forms for inserting, updating, and deleting.
It also takes care of some data validation.

Functions:
	cancel()
		Redirects page without saving information.
	save()
		Chooses what type of form to save/submit.
	insert()
		Sets form actiontype to INSERT and calls validate().
	update()
		Sets form actiontype to UPDATE and calls validate().
	validate()
		Loops through required fields to verify that values
		have been entered and submits form.
	remove()
		Sets form actiontype to DELETE and submits form.
	clearForm()
		Loops through each form field and clears all values.
	isNumber()
		Validates that the passed value is numeric.
	isWholeNumber()
		Validates that the passed value is an integer.
	browseFile()
		Opens window for browsing and choosing files
	viewFile()
		Opens window for viewing file
	clearField()
		Clears a field on the form

***************************************/

	
	//redirects page without saving
	function cancel(strRedirect){
		if(strRedirect != ""){
			document.location.href = strRedirect;
		}
	}//end cancel()
	
	//chooses which type of form to save/submit
	function save(strAction){
		if(strAction == "INSERT"){
			insert();
		}
		else if(strAction == "UPDATE"){
			update();
		}
		else{
			validate();
		}
	}//end save()
	
	
	//submits form for inserting
	function insert(){
		form.ActionType.value = "INSERT";
		validate();
	}//end insert()
	
	
	//submits form for updating
	function update(){
		form.ActionType.value = "UPDATE";
		validate();
	}//end update()
	
	
	//validates form fields
	function validate(){
		//make sure all required fields have values
		for(i = 0; i < requiredFields.length; i++){
			if(requiredFields[i].type.substring(0,6)=="select"){
				if(requiredFields[i].options.selectedIndex < 0){
					alert("Please fill in all required fields.");
					requiredFields[i].focus();
					return false;
				}
				else if(requiredFields[i].options[requiredFields[i].options.selectedIndex].value.length <= 0){
					alert("Please fill in all required fields.");
					requiredFields[i].focus();
					return false;
				}
			}
			else if(requiredFields[i].value.length <= 0){
				alert("Please fill in all required fields.");
				requiredFields[i].select();
				return false;
			}
		}
		//make sure all number fields are numbers only
		for(i = 0; i < numberFields.length; i++){
			if(!isNumber(numberFields[i].value)){
				if(numberFields[i].title.length > 0){
					alert(numberFields[i].title + " must be a numeric value.");
				}
				else{
					alert("Value must be numeric.");
				}
				numberFields[i].select();
				return false;
			}
		}
		//validate all whole number fields
		for(i = 0; i < wholeNumFields.length; i++){
			if(!isWholeNumber(wholeNumFields[i].value)){
				if(wholeNumFields[i].title.length > 0){
					alert(wholeNumFields[i].title + " must be a whole number.");
				}
				else{
					alert("Value must be a whole number.");
				}
				wholeNumFields[i].select();
				return false;
			}
		}
		form.submit();
		return true;
	}//end validate()
	
	
	//remove() deletes this item
	function remove(){
		if(window.confirm("Are you sure you would like to delete?")){
			form.ActionType.value = "DELETE";
			form.submit();
		}
	}//end remove()
	
	
	//clearForm() uses the variable "form" (initialized above)
	//	to generically loop through each element in the form
	//	and clear all values (except for buttons)
	function clearForm(){
	
		//loop through each element in the form
		for(i = 0; i < form.elements.length; i++){
		
			//if the form item is a button, don't clear the value
			if(form.elements[i].type != "button"){
				
				//if the element is a checkbox, uncheck it
				if(form.elements[i].type == "checkbox"){
					form.elements[i].checked = false;
				}
				//if the element is any other type, clear the value
				else{
					form.elements[i].value= "";
				}//end if()
				
			}//end if()
			
		}//end for()
	}
	//end clearForm()
	
	
	//check to see if incoming value is numeric
	function isNumber(inputVal){
		oneDecimal = false;
		inputStr = inputVal.toString()
		for (var i=0; i<inputStr.length; i++){
			var oneChar = inputStr.charAt(i);
			if(oneChar == "." && oneDecimal==false){
				oneDecimal = true;
				continue;
			}
			if((oneChar < "0" || oneChar > "9") && oneChar != ","){
				return false;
			}
		}
		return true;
	}//end isNumber()
	
	
	//check to see if incoming value is a whole number
	function isWholeNumber(inputVal){
		inputStr = inputVal.toString()
		for (var i=0; i<inputStr.length; i++){
			var oneChar = inputStr.charAt(i);
			if((oneChar < "0" || oneChar > "9") && oneChar != ","){
				return false;
			}
		}
		return true;
	}//end isWholeNumber()
	
	//open window for browsing
	function browseFile(strBrowsePath){
		window.open(strBrowsePath,"BROWSEFILE");
	}//end browseFile()
	
	//open window with file in it
	function viewFile(strFilePath){
		window.open(strFilePath,"VIEWFILE");
	}//end viewFile()
	
	//clear form field
	function clearField(objField){
		objField.value = "";
	}//end clearField()
