// +------------------------------------------------------------+
// |                  GAC Shared JavaScript Functions           |
// +------------------------------------------------------------+
// |  The file contains a number of common and shared JavaScript|
// |  functions used across the site to perform common actions  |
// |  such as field validation etc.                             |
// +------------------------------------------------------------+
// + Written by Peter Hansen - Feb. 2005                        |
// + Change Log:                                                | 
// + 26/02/2005 - Initial Version                               | 
// +------------------------------------------------------------+


//////////////////////////////////////////////////////
// validate field for not being empty if a radio button is a certain value
// Parm:1. Object reference for text form field element 
// Parm 2: HTML id for for error message field 
// Parm 3: Object reference to radio control
// Parm 4: radio control value
//////////////////////////////////////////////////////
function valid_notEmptyWhenRadio(Obj_string,MsgID,Obj_radio,Radio_value) {
// Test1: Is field filled in
	var ErrMsg = document.getElementById(MsgID); 
   var str = Obj_string.value;
	for (var i=0; i < Obj_radio.length;i++) {
//		alert("radio button value is " + Obj_radio[i].value + Obj_radio[i].checked + " checking for value:" + Radio_value);
		if (Obj_radio[i].checked) {
		   if (Obj_radio[i].value == Radio_value) {
            if (str == "") {
               ErrMsg.innerHTML = "Please fill in this required field";
               ErrMsg.style.color = "Red";
               Obj_string.focus();
	            Obj_string.select();
               return false;
	         }
	         else { 
               ErrMsg.innerHTML = "";
			      return true;
	         }
			}
			else { 
               ErrMsg.innerHTML = "";
			      return true;
	      }
		}
	}	
   return true			
}

//////////////////////////////////////////////////////
// validate field for not being empty
// Parm:1.  Object reference for text form element 
// Parm 2: HTML id for for error message field 
//////////////////////////////////////////////////////
function valid_notEmpty(Obj_string,MsgID) {
// Test1: Is field filled in
	var ErrMsg = document.getElementById(MsgID); 
   var str = Obj_string.value;
   if (str == "") {
       ErrMsg.innerHTML = "Please fill in this required field";
       ErrMsg.style.color = "Red";
       Obj_string.focus();
	    Obj_string.select();
       return false;
	 }
	 else { 
       ErrMsg.innerHTML = "";
	 }	 
   return true
}

//////////////////////////////////////////////////////
// validate_number field
// Parm:1.  Object reference for text form element 
// Parm 2: HTML id for for error message field 
// Parm 3: Valid lower number
// Parm 4: Valid higher number
//////////////////////////////////////////////////////

function valid_number(Obj_number,MsgID,start,end) {

	var ErrMsg = document.getElementById(MsgID); 
   var str = Obj_number.value;
	var oneChar = 0;
	var founderror = false;
// make sure value hasn't cast to a number data type
   str = str.toString();

// Test1: Is field filled in
   if (str == "") {
		founderror = true;
	}
// Test2: Is field numbericfilled in
   if (!(founderror)) {
      for (var i = 0; i < str.length; i++) {
          oneChar = str.charAt(i).charCodeAt(0);
        // characters outside of 0 through 9 not OK
		  if (oneChar < 48 || oneChar > 57) {
		        founderror = true;
		  }		  
      }
	}
// Test3: Are we in required range
   if (!(founderror)) {
      if (str >= start && str <= end) 
		   founderror = false;
	   else 
		   founderror = true;  
	}
// Did we find an error
    if (founderror) {
       ErrMsg.innerHTML = "Enter number between " + start + " and " + end + " !";
       ErrMsg.style.color = "Red";
       Obj_number.focus();
	    Obj_number.select();
       return false;
	 }
ErrMsg.innerHTML = "";
return true;
}
//////////////////////////////////////////////////////
// validate List selection  field
// Parm:1. Object reference for list form element 
// Parm 2: Object reference for error message field 
// Parm 3  required selection (true | false) 
//////////////////////////////////////////////////////
function valid_ListSelection(Obj_list,MsgID,required) {
		var ErrMsg = document.getElementById(MsgID); 
// Is field filled in
if (required) {
   if (Obj_list.selectedIndex == 0) {
		 ErrMsg.innerHTML = "You must select an item from the list";
	    ErrMsg.style.color = "Red";
		 Obj_list.focus();
		 return false;
	}
	else {    
	     ErrMsg.innerHTML = "";
		  return true; 
   }	
}
else {    
	     ErrMsg.innerHTML = "";
		  return true; 
}	
}
//////////////////////////////////////////////////////
// validate_date  field
// Parm:1. Object reference for email form element 
// Parm 2: Object reference for error message field 
// Parm 3  required field (true | false) 
//////////////////////////////////////////////////////
function valid_date(Obj_date,MsgID,required) {

	var ErrMsg = document.getElementById(MsgID); 
// Is field filled in
if (required) {
   if (Obj_date.value == "") {
		 ErrMsg.innerHTML = "Enter required Date field (dd/mm/yyyy)";
	    ErrMsg.style.color = "Red";
		 Obj_date.focus();
		 Obj_date.select();
		 return false;
	}
}
else {    
     if (Obj_date.value == "") {
	     ErrMsg.innerHTML = "";
		  return true; 
	  }	  
}	
// Create the date-format regular expression
//                     dd                       /          mm     /  yyyy
//var date_format = /^(0?[1-9]|[12][0-9]|3[01])\/(0?[1-9]|1[0-2])\/((18|19|20)\d{2})$/
var date_format = /^\d{2}\/\d{2}\/\d{4}$/
   
// Now verify email address entered by user
   if (date_format.test(Obj_date.value)) {
       ErrMsg.innerHTML = "";
   }
   else {
       ErrMsg.innerHTML = "Invalid Date format (dd/mm/yyyy)";
       ErrMsg.style.color = "Red"; 
	    Obj_date.focus();
		 Obj_date.select();
   }
	return true;
}
//////////////////////////////////////////////////////
// validate_email address field
// Parm:1.  Object reference for email form element 
// Parm 2: Object reference for error message field 
//////////////////////////////////////////////////////
function valid_email(Obj_email,MsgID) {

	var ErrMsg = document.getElementById(MsgID); 
// Is field filled in
   if (Obj_email.value == "") {
		 ErrMsg.innerHTML = "Enter email address";
	    ErrMsg.style.color = "Red";
		 Obj_email.focus();
		 Obj_email.select();
		 return false;
	}
// Create the email-format regular expression
	var email_format = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/
   
// Now verify email address entered by user
   if(email_format.test(Obj_email.value)) {
       ErrMsg.innerHTML = "";
   }
   else {
       ErrMsg.innerHTML = "Invalid Email format";
       ErrMsg.style.color = "Red"; 
	    Obj_email.focus();
		 Obj_email.select();
   }
	return true;
}

//////////////////////////////////////////////////////
// validate postcode field
// Parm:1.  Object reference for postcode form element 
// Parm 2: Object reference for error message field 
//////////////////////////////////////////////////////
function valid_postcode(Obj_postcode,MsgID) {

	var ErrMsg = document.getElementById(MsgID); 
// Is field filled in
   if (Obj_postcode.value == "") {
		 ErrMsg.innerHTML = "Enter Postcode";
	    ErrMsg.style.color = "Red";
		 Obj_postcode.focus();
		 Obj_postcode.select();
		 return false;
	}
// Create the postcode-format regular expression
   var postcode_format = /^[A-Z]{1,2}[0-9][0-9A-Z]? [0-9][ABD-HJLNP-UW-Z]{2}$/ 
// Now verify postcode entered by user
   if(postcode_format.test(Obj_postcode.value.toUpperCase())) {
       ErrMsg.innerHTML = "";
   }
   else {
       ErrMsg.innerHTML = "Invalid Postcode format";
       ErrMsg.style.color = "Red"; 
		 Obj_postcode.focus();
		 Obj_postcode.select();
   }
	return true;
}
