// JavaScript Document
function showAge(){
var theday=new Date(2009,4,26);
	with (document) {
		var by = 1900 + Number(getElementById("yy").value);
		var bm = Number(getElementById("mm").value);
		var bd = Number(getElementById("dd").value);
		var bday = new Date(by,bm,bd);
		var newage=0; var dif=bday;
		getElementById("dob").value = bd + '/' + bm + '/' + by;
		while(dif<=theday){
			var dif = new Date(by+newage,bm,bd);
			newage++;
			}
		newage +=-2;			
		getElementById("age").value = newage;
		}
	}
function checkform(of)
	{
	// Test if DOM is available and there is an element called required
		if(!document.getElementById || !document.createTextNode){return;}
		if(!document.getElementById('required')){return;}

	// Define error messages and split the required fields
		var errorID='errormsg';
		var errorClass='error'
		var errorMsg='Please enter or correct the fields marked ';
		var errorImg='img/alert1.gif';
		var errorAlt='Error';
		var errorTitle='This field has an error!';
		var reqfields=document.getElementById('required').value.split(',');
		var emailvalue = '';
		var pwordvalue = '';
		var gendervalue = '';
		// Cleanup old mess
		// if there is an old errormessage field, delete it
		if(document.getElementById(errorID))
		{
			var em=document.getElementById(errorID);
			em.parentNode.removeChild(em);
		}
		// remove old images and classes from the required fields
		for(var i=0;i<reqfields.length;i++)
		{
			var f=document.getElementById(reqfields[i]);
			if(!f){continue;}
			if(f.previousSibling && /img/i.test(f.previousSibling.nodeName))
			{
				f.parentNode.removeChild(f.previousSibling);
			}
			f.className='';
		}
	// loop over required fields
		for(var i=0;i<reqfields.length;i++)
		{
	// check if required field is there
			var f=document.getElementById(reqfields[i]);
			if(!f){continue;}
	// test if the required field has an error, 
	// according to its type
			switch(f.type.toLowerCase())
			{
				case 'text':
					if(f.value=='' && f.id!='email1'){cf_adderr(f)}							
	// email is a special field and needs checking
					if(f.id=='email1'){
						if (!cf_isEmailAddr(f.value)){cf_adderr(f)}
						emailvalue = f.value;
						}
					if(f.id=='email2' && f.value!=emailvalue){cf_adderr(f)}
					if(f.id=='eveningtel'){
						phonevalue = f.value;
					}
					if(f.id=='daytimetel' && ( (parseInt(f.value.substr(0,2) ) + parseInt(phonevalue.substr(0,2)) ) == 14)){cf_adderr(f)}
				break;
				case 'password':
					switch(f.id.toLowerCase())
					{
						case 'pword1':
						if(f.value==''){cf_adderr(f)}
						pwordvalue=f.value;
						break;
						case 'pword2':
						if(f.value==''){cf_adderr(f)}
						if(f.value!=pwordvalue){cf_adderr(f)}
						break;
					}
				break;
				case 'textarea':
					if(f.value==''){cf_adderr(f)}							
				break;
				case 'checkbox':
					if(!f.checked){cf_adderr(f)}							
				break;
				case 'radio':
		// this needs further thought
		if(f.value!=''){cf_adderr(f)}
					switch(f.id.toLowerCase())
					{
						case 'male':
						//if(f.value!=''){gendervalue=f.value}
						break;
						case 'female':
						//if(f.value!=''){gendervalue=f.value}
						if(gendervalue=='') {cf_adderr(f)}
						break;
					}
			//	myOption = -1;
		//		for (i=f.length-1; i > -1; i--) {
		//		if (f[i].checked) {
		//			myOption = i; i = -1;
		//			}
		//		}
		//		if (myOption == -1) {cf_adderr(f)}
				break;
				case 'select-one':
					if(f.selectedIndex==0){cf_adderr(f)}							
				break;
			}
		}
		
		return !document.getElementById(errorID);
			/* Tool methods */
		function cf_adderr(o)
		{
			// create image, add to and colourise the error fields
			var errorIndicator=document.createElement('img');
			errorIndicator.alt=errorAlt;
			errorIndicator.src=errorImg;
			errorIndicator.title=errorTitle;
			o.className=errorClass;
			o.parentNode.insertBefore(errorIndicator,o);
			// Check if there is no error message
			if(!document.getElementById(errorID))
			{
			// create errormessage and insert before submit button
				var em=document.createElement('div');
				em.id=errorID;
				var newp=document.createElement('p');
				newp.appendChild(document.createTextNode(errorMsg))
				// clone and insert the error image
				newp.appendChild(errorIndicator.cloneNode(true));
				em.appendChild(newp);
				// find the submit button 
				for(var i=0;i<of.getElementsByTagName('input').length;i++)
				{
					if(   (/button/i.test(of.getElementsByTagName('input')[i].type))
					   || (/submit/i.test(of.getElementsByTagName('input')[i].type)))
					{
						var sb=of.getElementsByTagName('input')[i];
						break;
					}
				}
				if(sb)
				{
					sb.parentNode.insertBefore(em,sb);
				}	
			} 
		}
		function cf_isEmailAddr(str) 
		{
		    return str.match(/^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/);
		}
		}

function valbutton(thisform) {
// place any other field validations that you require here
// validate myradiobuttons
myOption = -1;
for (i=thisform.myradiobutton.length-1; i > -1; i--) {
if (thisform.myradiobutton[i].checked) {
myOption = i; i = -1;
}
}
if (myOption == -1) {
alert("Please select one");
return false;
}

alert("You selected button number " + myOption
+ " which has a value of "
+ thisform.myradiobutton[myOption].value);

// place any other field validations that you require here
thisform.submit(); // this line submits the form after validation
}
