//Health Check Scripts

function validateForm(form) {
	
	var valid;
	var message = "The following fields have not been compelted:\n\n\t";
	var messageNumeric = "The following fields must only contain numeric characters:\n\n\t";
	var contactNumber = document.getElementById('Contact Number');
	var databaseSize = document.getElementById('Size of Database');
	var emailAddress = document.getElementById('Email Address'); 
	
	for(var i = 0; i < form.elements.length; i++)
	{
		
		if(form.elements[i].type == 'text' || form.elements[i].type == 'file')
		{
		
		if(form.elements[i].value.length == 0) 
			{		
			form.elements[i].focus();
			valid = false;
			message+= form.elements[i].id+'\n\t';
			}
		 }
	 } 
	
	
	if(valid == false) {
		alert(message);
		return false;}

	
	if(IsNumeric(contactNumber.value) == false) {
		messageNumeric+= 'Contact Number\n\t';
		valid = false;
	} 
	
	/*
	if(IsNumeric(databaseSize.value) == false) {
		messageNumeric+= 'Size of Database\n\t';
		valid = false;
	}
	*/
	
	if(valid == false) {
		alert(messageNumeric);
		return false;}
		
		
	if(checkEmail(emailAddress) == false) {
		return false;
	}	
		
		
	return true;
	
	
}

function checkEmail(email)
{

	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (filter.test(email.value)) {
		return true;}
	else {
		alert('Please enter a valid email address:\n\n\t'); 
		return false;
		}
}


function IsNumeric(strString)
   //  check for valid numeric strings	
   {
   var strValidChars = "0123456789.- ";
   var strChar;
   var blnResult = true;



   //  test strString consists of valid characters listed above
   for (i = 0; i < strString.length && blnResult == true; i++)
      {
      strChar = strString.charAt(i);
      if (strValidChars.indexOf(strChar) == -1)
         {
         
         blnResult = false;
         }
      }
   
   return blnResult;
}



function directEntry() {
	alert('Please use the browse button');
	return false;
}



var extArray = new Array(".xls", ".txt", ".csv", ".xlsx");

function LimitAttach(form) {
	
    var allowSubmit = false;
    var file = form.value;
    
    if (!file) return;
    
    while (file.indexOf("\\") != -1)
    	file = file.slice(file.indexOf("\\") + 1);
    	var ext = file.slice(file.indexOf(".")).toLowerCase();
    	
    for (var i = 0; i < extArray.length; i++) {
    	if (extArray[i] == ext) { 
    		allowSubmit = true; 
    		break; 
    		}
    }
    
    
    if (allowSubmit) 
    return true;
    else
    alert("Please only upload files that end in types:  "
    + (extArray.join("  ")) + "\nPlease select a new "
    + "file to upload and submit again.");
    //form.value = "";
    oBuffer.ClearFileFields(form.form);
    return false;
   }
   
	//
	// FieldBuffer - Class for form-buffering, value-restoration and file-field resetting.
	//
	// Author: Christopher Bergren (Anjuna Moon)
	// Created: Stockholm Sweden, July 25th, 2005
	// License: Freeware (Please keep credits intact as a sign of good-will)
	//
	// METHODS:
	// BufferForm(FormObject)
	//		Buffers values from all input-elements except File and Button
	// RestoreForm(FormObject)
	//		Restores the buffered data to corresponding elements 
	// ClearFileFields(FormObject)
	//		Performs a Reset-operation that only affects File-elements
	//
	function FieldBuffer() {
		FieldBuffer.prototype.BufferForm=fnBufferForm;
		FieldBuffer.prototype.RestoreForm=fnRestoreForm;
		FieldBuffer.prototype.ClearFileFields=fnClearFileFields
		arrEls=new Array;		
		hshEls={};
		
		function fnBufferForm(oFrm) {
			
			oEls=oFrm.elements;
			for (i=0;i<oEls.length;i++) {
				arrEls[i]=new Element(oEls[i]);
			}
		}
		
		function fnRestoreForm(oFrm) {
			for (i=0;i<arrEls.length;i++) {
				oEl=arrEls[i];
				if (oEl.BufferThis)
					oEl.SetValue();
			}
		}
		
		function fnClearFileFields(oFrm) {
			this.BufferForm(oFrm);
			oFrm.reset();
			this.RestoreForm(oFrm);
		}
		
		function Element(oEl) {
			Element.prototype.SetValue=fnSetValue;
			this.Type=oEl.type;
			this.ObjRef=oEl;
			this.Required=false;
			this.CommonName='';
			switch(this.Type) {
				case 'select-one':
					this.Value=oEl.selectedIndex;
					this.BufferThis=true;
					break;
				case 'checkbox':
				case 'radio':
					this.Value=oEl.checked;
					this.BufferThis=true;
					break;
				case 'textarea':
				case 'text':
				case 'password':
				case 'hidden':
					this.Value=oEl.value;
					this.BufferThis=true;
					break;
				default:
					this.BufferThis=false;
			}
			function fnSetValue() {
				switch(this.Type) {
					case 'select-one':
						this.ObjRef.selectedIndex=this.Value;
						break;
					case 'checkbox':
					case 'radio':
						this.ObjRef.checked=this.Value;
						break;
					case 'textarea':
					case 'text':
					case 'password':
					case 'hidden':
						this.ObjRef.value=this.Value;
						break;
				}
			}
		}
	}      