/****************************

Generic Form Validation script
Created 10/12/00 JL
Last Modified 22/02/01

**********************************
Revisions:
10/03/01 - Fixed Radio Button hack

**********************************

To use, call validate([form name])
eg: onSubmit="return validate(this)"

returns false if any compulsory fail.

*********************************
Naming conventions - validate.js
*********************************



Expects: 
3 character prefixes for form fields, eg. txt, chk, rad
-4th & 5th characters are tested - if 'CY' it is assumed field is compulsory [validated]
-fields named txtCEmail* will be tested for '@' character
Images must be named i[fieldname] - 'src' will be swapped according to image array

Radio buttons / select fields tested in a similar way - if no radio button selected, group will fail (group name is used for radio buttons), select fields will fail if index is 0

Eg:

txtCYFirstName - Field is compulsory, script will test for empty string
itxtCYFirstName - associated image name / id - this will be swapped if field fails validation

txtOther - Field not compulsory, will be skipped by script.

*****************************/



var isIE
	//Preload images

	var aImages=new Array
	aImages[0]=new Image()
	aImages[1]=new Image()
	aImages[0].src="/images/transparent.gif"
	aImages[1].src="/images/redarrow.gif"
	var oElement



function sniff(){
//Lightweight browser sniffing

if(document.layers){
	isIE=false
	}
	else
	{
	isIE=true
	}


//-/Browser Sniffing
}


function fail(fieldName){
	document.images['i' + fieldName].src=aImages[1].src
}

function pass(fieldName){
	document.images['i' + fieldName].src=aImages[0].src
}

function validate_radio(group){
	var bIsValid=false
	for (n=0; n<group.length; n++){
		if (group[n].checked==true){
			bIsValid=true
		}
	}
	return bIsValid
}


function validate(form){
	var sFieldName
	var bIsValid=true
	var fEmail=8
	var fPassword = form.elements.length-3
	var fPasswordAgain = form.elements.length-2
	var fUserName = form.elements.length-4
	var sFieldDesc
	var iFirstFailed=-1

	sniff()

	//Exclude elements without validation



	for (var n=0;n<(form.elements.length);n++){
		oElement=form.elements[n]
		//alert (oElement.type) //test code
			if(oElement.type=='radio' && oElement.name.substring(3,5)=='CY'){
					if(!validate_radio(form.elements[oElement.name])){ 				
						fail(oElement.name)
						bIsValid=false
						if(iFirstFailed==-1){
								iFirstFailed=n
							}
					}
					else{
						pass(oElement.name)
					}

				}

			if (oElement.type == "text" && oElement.name.substring(3,5)=='CY' || oElement.type == "textarea" && oElement.name.substring(3,5)=='CY') //Is field compulsory? (CY in name)

					{
						if(oElement.value.length==0){
							if(iFirstFailed==-1){
								iFirstFailed=n
							}
						fail(oElement.name)
						bIsValid=false
					}
					else {
					pass(oElement.name)
					}
				}
			if(oElement.type == "select-one" && oElement.name.substring(3,5)=="CY"){
				
				if (oElement.selectedIndex==0){
					fail(oElement.name)
					bIsValid=false
				}
				else{
					pass(oElement.name)
				}
			}
		}
		
		if (!bIsValid){
			if(iFirstFailed!=-1){form.elements[iFirstFailed].focus()}
			alert('Please complete the indicated fields')
			return false
		}

		if(form.txtCYEmail.value.indexOf('@')==-1){
			fail('txtCYEmail')
			alert('Please enter a valid email address')
			form.txtCYEmail.focus()
			form.txtCYEmail.select()
			return false
		}

	
/*
	Password Validation code - not required for Reward Contact form

		for(n=fUserName;n<fPasswordAgain;n++){
			if(form.elements[n].value.length<4||form.elements[n].value.length>15){
				if (n==fUserName){
					sFieldDesc="Username"
					form.elements[fUserName].focus()
					form.elements[fUserName].select()
					document.images['img'+ fUserName].src=aImages[1].src
				}
				else if(n==fPassword){
					sFieldDesc="Password"
					form.elements[fPassword].focus()
					form.elements[fPassword].select()
					document.images['img' + fPassword].src=aImages[1].src
				}
				alert('Please enter a valid ' + sFieldDesc + ':\n\n' + sFieldDesc +'s should consist of letters and numbers,\nand should be between 4 and 15 characters long.')

				return false
				}
		}

		if(form.elements[fPassword].value!=form.elements[fPasswordAgain].value){
			alert('Your passwords do not match - please re-enter')
			form.elements[fPassword].value=""
			form.elements[fPasswordAgain].value=""
			document.images['img' + fPassword].src=aImages[1].src
			document.images['img' + fPasswordAgain].src=aImages[1].src
			form.elements[fPassword].focus()
			return false
		}


*/
	return true

}




