/*==============================================================================
use JS syntax (e.g. for select box)

	if(!validateSelect(obj,message)) return false;

FUNCTIONS AVAILABLE:
validateSelect(form object as object, error message as String)	[select box]
validateText(form object as object, error message as String)	[textbox,textarea]
validateYesNo(form object as object, error message as String) 	[radio buttons]
validateMultiChoice(obj,message,numOther,otherObj,otherMessage)	[checkboxes]
checkMail(obj,message)											[checks e-mail address]
checkPostcode(obj,message)										[checks UK postcode]
validatePasswords(len,obj1,obj2,message)						[compares two passwords]

autoFill(frmObj)	[Auto Fills frmObj from IE profile]

setCookie(name, value, expire)
getCookie(Name)

*/

/*==============================================================================
VALIDATE SELECT BOX
--------------------------------------------------------------------------------
Author: aaron@acme.co.uk
Date:	4/1/2001
Rev:	
Inputs:	
		object: Reference to select box element
		string: error message to display
		
Returns: false if selection value=""
================================================================================
*/
function validateSelect(obj,message){
	if (obj.options[obj.selectedIndex].value=="") {
		alert(message)
		obj.focus()
		return false
	} else {
		return true
	}
}

/*==============================================================================
VALIDATE TEXT BOX
--------------------------------------------------------------------------------
Author: aaron@acme.co.uk
Date:	4/1/2001
Rev:	
Inputs:	
		object: Reference to text box element
		string: error message to display
		
Returns: false if text box value=""
================================================================================
*/
function validateText(obj,message) {
	if (obj.value=="") {
		alert(message)
		obj.focus()
		return false
	} else {
		return true
	}
}

/*==============================================================================
VALIDATE YES/NO
--------------------------------------------------------------------------------
Author: aaron@acme.co.uk
Date:	10/1/2001
Rev:	
Inputs:	
		object: Reference to yes/no options
		string: error message to display
		
Returns: false if options value=""
================================================================================
*/
function validateYesNo(obj,message) {
	flag=false
	for(i=0;i<obj.length;i++){
		if(obj[i].checked) flag=true;
	}
	if (!flag) {
		alert(message)
		obj[0].focus()
		return false
	} else {
		return true
	}
}

/*==============================================================================
VALIDATE MULTICHOICE CHECKBOXES
--------------------------------------------------------------------------------
Author: aaron@acme.co.uk
Date:	7/1/2001
Rev:	
Inputs:	
		object: Reference to checkbox array
		string: error message to display if no objects selected
		number:	element number for "other" field (-1 if no "other" field")
		object: Reference to "other" field
		string: error message to display if "other" field empty
		
Returns: false if no checkboxes selected or "other" field empty
================================================================================
*/
function validateMultiChoice(obj,message,numOther,otherObj,otherMessage) {
	flag=false
	for(i=0;i<obj.length;i++){
		if(obj[i].checked) flag=true;
	}
	if(!flag){
		alert(message)
		obj[0].focus()
		return false
	}else if(numOther>-1){
		if((obj[numOther].checked)&&(otherObj.value=="")) {
			alert(otherMessage)
			otherObj.focus()
			return false
		}
		return true
	}else{
		return true
	}
}

/*==============================================================================
CHECKBOX LABELS
================================================================================
*/

function tick(obj) {
	obj.checked=!obj.checked

}
function tickMove(obj,dest) {
	tick(obj)
	checkMove(obj,dest) 
}
function checkMove(obj,dest) {
	if(obj.checked) dest.focus()
}

/*==============================================================================
COOKIES
--------------------------------------------------------------------------------
Author: A2D
Date:	1/1/98
Rev:
================================================================================
*/
var today = new Date();
var expires = new Date();
expires.setTime(today.getTime() + 31536000000);

function setCookie(name, value, expire) {document.cookie = name + "=" + escape(value) + ((expire == null) ? "" : ("; expires=" + expire.toGMTString()));}

function getCookie(Name) {
	var search = Name + "=";
	if (document.cookie.length > 0) {
		offset = document.cookie.indexOf(search);
		if (offset != -1) {
			offset += search.length;
			end = document.cookie.indexOf(";", offset);
			if (end == -1) {end = document.cookie.length;}
			return unescape(document.cookie.substring(offset, end))
		}
	}
}

/*==============================================================================
VALIDATE E-MAIL ADDRESS
--------------------------------------------------------------------------
Author: A2D
Date:	1/1/98
Rev:	
Inputs:	
		object: reference to input field
		string: error message to display
		
Return:	e-mail
================================================================================
*/
function checkMail(obj,message){
	mail=obj.value
	at=mail.indexOf("@",1)
	dot=0
	chr=""
	if (at>0) dot=mail.indexOf(".",at+2)
	if (dot>0) chr=mail.substring(dot+1,mail.length)
	if (mail==""||at<1||dot==-1||chr=="") {
		alert(message)
		obj.focus()
		return false
	} else {
		return true
	}
}

/*==============================================================================
VALIDATE UK POSTCODE
--------------------------------------------------------------------------
Author: A2D
Date:	1/1/98
Rev:	
Inputs:	
		object: reference to input field
		string: error message to display
		
Return:	true/false
================================================================================
*/
function checkPostcode(obj,message) {
	PC=obj.value
	OK=true
	VC="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
	VN="0123456789"
	PL=PC.length
	PN=0
	// Last Character
	if (VC.indexOf(PC.substring(PL-1,PL)) == -1) {	
		OK=false
		PN=PL
	}
	// Last-1 Character
	if (VC.indexOf(PC.substring(PL-2,PL-1)) == -1) {	
		OK=false
		PN=PL-1
	}
	// Last-2 Number 0-9
	if (VN.indexOf(PC.substring(PL-3,PL-2)) == -1) {	
		OK=false
		PN=PL-2
	}
	// Last-3 Space
	if (PC.substring(PL-4,PL-3) != " ") {	
		OK=false
		PN=PL-3
	}
	//Process first half
	PCS=PC.substring(0,PL-4)
	//1
	if (PCS.length>1){
		if (VC.indexOf(PCS.substring(0,1)) == -1) {
			OK=false
		}
	}
	else { //length must be>1
		OK=false
	}
	//2
	if (PCS.length>2){
		if ((VC.indexOf(PCS.substring(1,2)) == -1)&&(VN.indexOf(PCS.substring(1,2)) == -1)) {
			OK=false
		}
	}
	else if (PCS.length==2){ //if length=2 must be digit
		if (VN.indexOf(PCS.substring(1,2)) == -1) {
			OK=false
		}
	}
	//3
	if (PCS.length>3){ //if length=4 must be digit
		if (VN.indexOf(PCS.substring(2,3)) == -1) {
			OK=false
		}
	}
	else if (PCS.length==3){
		if ((VC.indexOf(PCS.substring(2,3)) == -1)&&(VN.indexOf(PCS.substring(2,3)) == -1)) {
			OK=false
		}	
		else if ((VC.indexOf(PCS.substring(1,2))>0)&&(VC.indexOf(PCS.substring(2,3))>0)) { //if length=3 and 2=chr, must be digit
			OK=false
		}
	}
	//4
	if (PCS.length==4){
		if ((VC.indexOf(PCS.substring(3,4)) == -1)&&(VN.indexOf(PCS.substring(3,4)) == -1)) {
			OK=false
		}	
		else if (VN.indexOf(PCS.substring(1,2))>0) {
				OK=false
		}
	}
	else if(PCS.length>4){	//length>4
		OK=false
	}
	if(OK){
		return true
	} else {
		alert(message)
		obj.focus()
	}
}


/*========================================================================
VALIDATE PASSWORDS
--------------------------------------------------------------------------
Author: A2D
Date:	11/6/2002
Rev:	
Inputs:	len 	(integer)	Min length for password
		obj1 	(obj)		Password Box 1
		obj2 	(obj)		Password Box 2
		message (string)	Message to display when obj1<>obj2
							or length too small
Return:	
==========================================================================
*/
function validatePasswords(len,obj1,obj2,message){
	if((obj1.value!=obj2.value)||(obj1.value.length<len)){
		alert(message);
		obj2.value="";
		obj1.value="";
		obj1.focus();
		obj1.select();
		return false;
	} else {
    return true;
  }
}

/*========================================================================
AUTO FILL FORM FROM IE PROFILE
--------------------------------------------------------------------------
Author: A2D
Date:	1/1/98
Rev:	2001
Inputs:	frmObj - Form Object
Return:	
==========================================================================
*/
function autoFill(frmObj){
	if (HM_IE) {
		var B;P=navigator.userProfile;P.clearRequest();
		//Get vCard Objects
		B=P.addReadRequest('Vcard.FirstName');
		B=P.addReadRequest('Vcard.LastName');
		B=P.addReadRequest('Vcard.JobTitle');
		B=P.addReadRequest('Vcard.Company');
		B=P.addReadRequest('Vcard.Business.StreetAddress');
		B=P.addReadRequest('Vcard.Business.City');
		B=P.addReadRequest('Vcard.Business.State');
		B=P.addReadRequest('Vcard.Business.Zipcode');
		B=P.addReadRequest('Vcard.Business.Country');
		B=P.addReadRequest('Vcard.Business.Phone');
		B=P.addReadRequest('Vcard.Business.Fax');
		B=P.addReadRequest('Vcard.Business.URL');
		B=P.addReadRequest('Vcard.Cellular');
		B=P.addReadRequest('Vcard.Email');
		B=P.addReadRequest('Vcard.Gender');
		//Set Request Type
		B=P.doReadRequest(6,"ATE",'.');
		//Process Form Fields
		if (frmObj.title) {
			strGender=P.getAttribute('Vcard.Gender')
			if (strGender=="M") {
				frmObj.title.selectedIndex=1
			} else if (strGender=="F") {
				frmObj.title.selectedIndex=3
			} else {
				frmObj.title.focus()
			}
		}
		if(frmObj.forename)	frmObj.forename.value=P.getAttribute('Vcard.FirstName');
		if(frmObj.lastname)	frmObj.lastname.value=P.getAttribute('Vcard.LastName');
		if(frmObj.position)	frmObj.position.value=P.getAttribute('Vcard.JobTitle');
		if(frmObj.company)	frmObj.company.value=P.getAttribute('Vcard.Company');
		if(frmObj.address1) {
			strAddress=P.getAttribute('Vcard.Business.StreetAddress');
			i=strAddress.indexOf("\n",0);
			if(i<0){
				frmObj.address1.value=strAddress;
			} else {
				frmObj.address1.value=strAddress.substring(0,i);
				j=tadd.indexOf("\n",i+1);
				if(j<0){
					if(frmObj.address2) frmObj.address2.value=strAddress.substring(i+1);
				}else{
					frmObj.address2.value=strAddress.substring(i,j);
				}
			}
		} 
		if (frmObj.address) frmObj.address.value=P.getAttribute('Vcard.Business.StreetAddress');
		if (frmObj.city) 	frmObj.city.value=P.getAttribute('Vcard.Business.City');
		if (frmObj.state) 	frmObj.state.value=P.getAttribute('Vcard.Business.State');
		if (frmObj.zip) 	frmObj.zip.value=P.getAttribute('Vcard.Business.Zipcode');
		if (frmObj.country) frmObj.country.value=P.getAttribute('Vcard.Business.Country').toUpperCase();
		if (frmObj.phone) 	frmObj.phone.value=P.getAttribute('Vcard.Business.Phone');
		if (frmObj.fax) 	frmObj.fax.value=P.getAttribute('Vcard.Business.Fax');
		if (frmObj.mobile)	frmObj.mobile.value=P.getAttribute('Vcard.Cellular');
		if (frmObj.url) {
			strURL=P.getAttribute('Vcard.Business.url');
			if(strURL.indexOf("http://",0)==0) strURL=strURL.substring(7);
			frmObj.url.value=strURL
		}
		if (frmObj.email)	frmObj.email.value=P.getAttribute('Vcard.Email');
	} else {
		alert("Feature not supported by browser:\n"+navigator.userAgent)
	}
}

