var INT 		= /^-{0,1}\d+$/
var POS_INT 	= /^\d*$/;
var NEG_INT 	= /^-\d+$/;
var NONZERO_INT 	= /^[1-9]+\d*$/;
var NUMBER 		= /^-{0,1}\d*\.{0,1}\d+$/;
var POS_NUMBER 	= /^\d*\.{0,1}\d+$/;
var NEG_NUMBER 	= /^-\d*\.{0,1}\d+$/;
var ALPHA		= /^[A-Z]+$/i;
var ALPHPASPACE	= /^[A-Z ]+$/i;
var ALPHANUM	= /^[A-Z0-9]+$/i;
var ALPHANUMSPACE = /^[A-Z0-9 ]+$/i;
var EMAIL		= /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i;
var NAME		= /^[A-Z .'-]+$/i;

String.prototype.isType = function(regex) {
	if (this.match(regex)) {
		return true;
	}
	else {
		return false;
	}
}

// extend String object to provide function to trim whitespace
String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}

// extend String object to provide function to trim whitespace
// and convert inner whitespace sequences to single spaces
String.prototype.trimAndCompact = function() {
	return this.replace(/^\s+|\s+$/g,"").replace(/\s+/g, ' ');
}

function trim(s) {
  if (s.value>0)
  {
  while (s.substring(0,1) == ' ') {
    s = s.substring(1,s.length);
  }
  while (s.substring(s.length-1,s.length) == ' ') {
    s = s.substring(0,s.length-1);
  }
  }
  return s;
}

function isValidEmail(str) {

   return (str.indexOf(".") > 0) && (str.indexOf("@") > 0);
 

}


<!--
// javascript utility functions - mainly for help with form processing ....

// returns form errors as held in (string) array
function frmErrors(errArray) {
	if (errArray.length == 0) { return true; }
	var str = "Please provide the following information:";
	for (i in errArray) { str += "\n - " + errArray[i]; }
	alert(str);
	return false;
}

// trims the text input field and returns the trimmed value
function trimInput(elem) {
	var str = elem.value.trim();
	elem.value = str;
	return str;
}


// returns the value of the radio button group identified be elem
function getRadioValue(radio_elem) {
	for (i=0; i < radio_elem.length; i++) {
		if (radio_elem[i].checked) { return radio_elem[i].value; }
      }
	return null;
}

// return the value of the selected option
function getSelectValue(select_elem) {
	var idx = select_elem.selectedIndex;
	return (idx<0) ? null : select_elem[idx].value;
}

// extend String object to provide regular expression matching against defined patterns:
var INT 		= /^-{0,1}\d+$/
var POS_INT 	= /^\d*$/;
var NEG_INT 	= /^-\d+$/;
var NONZERO_INT 	= /^[1-9]+\d*$/;
var NUMBER 		= /^-{0,1}\d*\.{0,1}\d+$/;
var POS_NUMBER 	= /^\d*\.{0,1}\d+$/;
var NEG_NUMBER 	= /^-\d*\.{0,1}\d+$/;
var ALPHA		= /^[A-Z]+$/i;
var ALPHPASPACE	= /^[A-Z ]+$/i;
var ALPHANUM	= /^[A-Z0-9]+$/i;
var ALPHANUMSPACE = /^[A-Z0-9 ]+$/i;
var EMAIL		= /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i;
var NAME		= /^[A-Z .'-]+$/i;

var FNAME_EXT     = /^[A-Z_]+[A-Z_-]+\.[A-Z]{3,4}$/i;
var FNAME_NO_EXT  = /^[A-Z_]+[A-Z0-9_-]+$/i;

var PRICE 		= /^\d+(\.\d{2})?$/;

String.prototype.isType = function(regex) {
	if (this.match(regex)) {
		return true;
	}
	else {
		return false;
	}
}

// extend String object to provide function to trim whitespace
String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}

// extend String object to provide function to trim whitespace
// and convert inner whitespace sequences to single spaces
String.prototype.trimAndCompact = function() {
	return this.replace(/^\s+|\s+$/g,"").replace(/\s+/g, ' ');
}

// extend String object to provide function to check if string ends with either:
// str_or_arr value (as String) or one of str_or_arr values (as array)
// ignorecase - optional parameter defaults to false
String.prototype.endsWith = function(str_or_arr, ignorecase) {
	var str = (isArray(str_or_arr) && str_or_arr.length > 0) 
	        ? "("+ str_or_arr.join("|") + ")" 
		  : String(str_or_arr);
	var pattern = (ignorecase === undefined || ignorecase != true) 
	            ? new RegExp(str+ "$") 
			: new RegExp(str+ "$", "i");
	return pattern.test(this);
	
}

// extend String object to provide function to check if string starts with either:
// str_or_arr value (as String) or one of str_or_arr values (as array)
// ignorecase - optional parameter defaults to false
String.prototype.startsWith = function(str_or_arr, ignorecase) {
	var str = (isArray(str_or_arr) && str_or_arr.length > 0) 
	        ? "("+ str_or_arr.join("|") + ")" 
		  : String(str_or_arr);
	var pattern = (ignorecase === undefined || ignorecase != true) 
	            ? new RegExp("^" + str) 
			: new RegExp("^" + str, "i");
	return pattern.test(this);
}

// determine if variable is string
function isString(s) {
	if (typeof s == 'string') { return true; }
	if (typeof s == 'object') {  
		var match = s.constructor.toString().match(/string/i); 
		return (match != null);
	}
	return false;
}

// determine if variable is array
function isArray(a) {
	if (typeof a == 'object') {  
		var match = a.constructor.toString().match(/array/i); 
		return (match != null);
	}
	return false;
}

function process_pt()
{
   myerror=0;
   myerrormsg="";
   myerrormsg='Please provide:\n';
   if (document.frm.f_title[0].selected)
   {
	  myerror=1;
	  myerrormsg=myerrormsg+' -Title\n';
   }
   if (trim(document.frm.f_firstname.value==''))
   {
	  myerror=1;
	  myerrormsg=myerrormsg+' -First Name\n';
	  
   }
      if (trim(document.frm.f_lastname.value==''))
   {
	  myerror=1;
	  myerrormsg=myerrormsg+' -Last Name\n';
	  
   }
   if (trim(document.frm.f_position.value==''))
   {
	  myerror=1;
	  myerrormsg=myerrormsg+' -Position\n';
	  
   }
   if (trim(document.frm.f_company.value==''))
   {
	  myerror=1;
	  myerrormsg=myerrormsg+' -Company\n';
	  
   }
   if (trim(document.frm.f_address1.value==''))
   {
	  myerror=1;
	  myerrormsg=myerrormsg+' -Address1\n';
	  
   }
   if (trim(document.frm.f_town.value==''))
   {
	  myerror=1;
	  myerrormsg=myerrormsg+' -Town/City\n';
	  
   }
   if (trim(document.frm.f_postcode.value==''))
   {
	  myerror=1;
	  myerrormsg=myerrormsg+' -Postcode\n';
	  
   }
   if (trim(document.frm.f_telephone.value==''))
   {
	  myerror=1;
	  myerrormsg=myerrormsg+' -Telephone\n';
	  
   }
   if (trim(document.frm.f_email.value==''))
   {
	  myerror=1;
	  myerrormsg=myerrormsg+' -Email\n';
	  
   }
   else
   {
	   if (isValidEmail(document.frm.f_email.value)==false)   
	  {
		 myerror=1;
	     myerrormsg=myerrormsg+' -Email Address (A Valid one)\n';
		  
	  }
   }
   if (document.frm.f_howdid[0].selected)
   {
	  myerror=1;
	  myerrormsg=myerrormsg+' -How did you hear about us\n';
   }
   if ((document.frm.f_howdid[6].selected)  && (trim(document.frm.f_howdid_other.value=='')) )
   {
	  myerror=1;
	  myerrormsg=myerrormsg+' -How did you hear about us - please enter the other source where you heard of us\n';
	  
   }
   if (myerror==1)
   {
      alert(myerrormsg);
      return false;
   }
   else
   {
      return true;
   }	
   
}
function process_whitepapers()
{
   myerror=0;
   myerrormsg="";
   myerrormsg='Please provide:\n';
   if (trim(document.frm.f_firstname.value==''))
   {
	  myerror=1;
	  myerrormsg=myerrormsg+' -First Name\n';
	  
   }


   if (trim(document.frm.f_email.value==''))
   {
	  myerror=1;
	  myerrormsg=myerrormsg+' -Email\n';
	  
   }
   else
   {
	   if (isValidEmail(document.frm.f_email.value)==false)   
	  {
		 myerror=1;
	     myerrormsg=myerrormsg+' -Email Address (A Valid one)\n';
		  
	  }
   }

   if (myerror==1)
   {
      alert(myerrormsg);
      return false;
   }
   else
   {
      return true;
   }	
   
}

function process_g1()
{
   myerror=0;
   myerrormsg="";
   myerrormsg='Please provide:\n';
   if (document.frm.f_title[0].selected)
   {
	  myerror=1;
	  myerrormsg=myerrormsg+' -Title\n';
   }
   if (trim(document.frm.f_firstname.value==''))
   {
	  myerror=1;
	  myerrormsg=myerrormsg+' -First Name\n';
	  
   }
      if (trim(document.frm.f_lastname.value==''))
   {
	  myerror=1;
	  myerrormsg=myerrormsg+' -Last Name\n';
	  
   }
   if (trim(document.frm.f_position.value==''))
   {
	  myerror=1;
	  myerrormsg=myerrormsg+' -Position\n';
	  
   }
   if (trim(document.frm.f_company.value==''))
   {
	  myerror=1;
	  myerrormsg=myerrormsg+' -Company\n';
	  
   }
   if (trim(document.frm.f_address1.value==''))
   {
	  myerror=1;
	  myerrormsg=myerrormsg+' -Address1\n';
	  
   }
   if (trim(document.frm.f_town.value==''))
   {
	  myerror=1;
	  myerrormsg=myerrormsg+' -Town/City\n';
	  
   }
   if (trim(document.frm.f_postcode.value==''))
   {
	  myerror=1;
	  myerrormsg=myerrormsg+' -Postcode\n';
	  
   }
   if (trim(document.frm.f_telephone.value==''))
   {
	  myerror=1;
	  myerrormsg=myerrormsg+' -Telephone\n';
	  
   }
   if (trim(document.frm.f_email.value==''))
   {
	  myerror=1;
	  myerrormsg=myerrormsg+' -Email\n';
	  
   }
   else
   {
	   if (isValidEmail(document.frm.f_email.value)==false)   
	  {
		 myerror=1;
	     myerrormsg=myerrormsg+' -Email Address (A Valid one)\n';
		  
	  }
   }

   if (myerror==1)
   {
      alert(myerrormsg);
      return false;
   }
   else
   {
      return true;
   }	
   
}

function process_search()
{
   myerror=0;
   myerrormsg="";
   myerrormsg='Please provide:\n';
   if (trim(document.frmsearch.searchterm.value)=='')
   {
	  myerror=1;
	  myerrormsg=myerrormsg+' -Search Term\n';
	  
   }
      
   if (myerror==1)
   {
      alert(myerrormsg);
      return false;
   }
   else
   {
      return true;
   }	
   
}

function shownews()
{
   document.getElementById('homeside').style.display='none';
   document.getElementById('homenews').style.display='block';
}
function hidenews()
{
   document.getElementById('homeside').style.display='block';
   document.getElementById('homenews').style.display='none';
}
function process_enquiry()

{

   myerror=0;

   myerrormsg="";

   myerrormsg='Please provide the following information\n';

   

   if (trim(document.frmenquiry.f_firstname.value==''))

   {

      myerrormsg=myerrormsg+' -First Name\n';

	  myerror=1;

   }

   if (trim(document.frmenquiry.f_lastname.value==''))

   {

      myerrormsg=myerrormsg+' -Last Name\n';

	  myerror=1;

   }
   if (trim(document.frmenquiry.f_company.value==''))

   {

      myerrormsg=myerrormsg+' -Organisation\n';

	  myerror=1;

   }
   if (trim(document.frmenquiry.f_country.value==''))

   {

      myerrormsg=myerrormsg+' -Country\n';

	  myerror=1;

   }
   
   

   if (trim(document.frmenquiry.f_telephone.value==''))

   {

      myerrormsg=myerrormsg+' -Telephone\n';

	  myerror=1;

   }

   if (trim(document.frmenquiry.f_email.value==''))

   {

      myerrormsg=myerrormsg+' -Email\n';

	  myerror=1;

   }

   else

   {

      if (isValidEmail(document.frmenquiry.f_email.value)==false)

	  {

	     myerrormsg=myerrormsg+' -Email (A Valid Address)\n';

	     myerror=1;

	  

	  }

   }

   if (trim(document.frmenquiry.security_code.value==''))

   {

      myerrormsg=myerrormsg+' -CAPTCHA Security Code\n';

	  myerror=1;

   }

   

 

   if (myerror==1)

   {

      alert(myerrormsg);

      return false;

   }

   else

   {

      return true;

   }

}


function process_subscribe()

{
   myerror=0;
   myerrormsg="";
   myerrormsg='Please provide the following information\n';
   if (trim(document.frmsubscribe.f_firstname.value)=='')
   {
      myerrormsg=myerrormsg+' -First Name\n';
	  myerror=1;
   }
   if (trim(document.frmsubscribe.f_lastname.value)=='')
   {
      myerrormsg=myerrormsg+' -Last Name\n';
	  myerror=1;
   }
   if (trim(document.frmsubscribe.f_email.value==''))
   {
      myerrormsg=myerrormsg+' -Email\n';
	  myerror=1;
   }
   else
   {
      if (isValidEmail(document.frmsubscribe.f_email.value)==false)
	  {
	     myerrormsg=myerrormsg+' -Email (A Valid Address)\n';
	     myerror=1;
	  }
   }
   if (trim(document.frmsubscribe.security_code.value==''))
   {
      myerrormsg=myerrormsg+' -CAPTCHA Security Code\n';
	  myerror=1;
   }
   if (myerror==1)
   {
      alert(myerrormsg);
      return false;
   }
   else
   {
      return true;
   }
}
function process_request()

{
   myerror=0;
   myerrormsg="";
   myerrormsg='Please provide the following information\n';
   if (trim(document.frmrequest.f_firstname.value)=='')
   {
      myerrormsg=myerrormsg+' -First Name\n';
	  myerror=1;
   }
   if (trim(document.frmrequest.f_lastname.value)=='')
   {
      myerrormsg=myerrormsg+' -Last Name\n';
	  myerror=1;
   }
   if (trim(document.frmrequest.f_company.value)=='')
   {
      myerrormsg=myerrormsg+' -Your Organisation\n';
	  myerror=1;
   }
   if (trim(document.frmrequest.f_country.value)=='')
   {
      myerrormsg=myerrormsg+' -Country\n';
	  myerror=1;
   }
   if (trim(document.frmrequest.f_telephone.value)=='')
   {
      myerrormsg=myerrormsg+' -Telephone\n';
	  myerror=1;
   }

   if (trim(document.frmrequest.f_email.value)=='')
   {
      myerrormsg=myerrormsg+' -Email\n';
	  myerror=1;
   }
   else
   {
      if (isValidEmail(document.frmrequest.f_email.value)==false)
	  {
	     myerrormsg=myerrormsg+' -Email (A Valid Address)\n';
	     myerror=1;
	  }
   }
   
   if ((document.frmrequest.f_method2.checked)==true)
   {
	   if (trim(document.frmrequest.f_address.value==''))
       {
         myerrormsg=myerrormsg+' -Address (you have asked for a copy by post)\n';
	     myerror=1;
       }
	   if (trim(document.frmrequest.f_state.value==''))
       {
         myerrormsg=myerrormsg+' -County/State (you have asked for a copy by post)\n';
	     myerror=1;
       }
	   if (trim(document.frmrequest.f_postcode.value==''))
       {
         myerrormsg=myerrormsg+' -Post/Zip Code (you have asked for a copy by post)\n';
	     myerror=1;
       }
	   if (trim(document.frmrequest.f_country.value==''))
       {
         myerrormsg=myerrormsg+' -Country (you have asked for a copy by post)\n';
	     myerror=1;
       }
   }
   if (trim(document.frmrequest.security_code.value==''))
   {
      myerrormsg=myerrormsg+' -CAPTCHA Security Code\n';
	  myerror=1;
   }
   if (myerror==1)
   {
      alert(myerrormsg);
      return false;
   }
   else
   {
      return true;
   }
}
