function checkContactDetails  () {
		
		var data = new Object ();
		data.name = document.getElementById ("name");
		data.address = document.getElementById ("address");
		data.company = document.getElementById ("company");
		data.town = document.getElementById ("town");
		data.postcode = document.getElementById ("postcode");
		data.phone = document.getElementById ("phone");
		data.email = document.getElementById ("email");
		data.email_confirmation = document.getElementById ("email_confirmation");
		

		if (data.name) {
			if (data.name.value.length == 0) {
				alert ("'Name' is required")
				data.name.focus ();
				return false;
			}
		}
		 if (data.address)	{
			if (data.address.value.length == 0) {
                        	alert ("'Address' is required")
                        	data.address.focus();
				return false;
			}
 	 	}
		 if (data.town) {
			if (data.town.value.length == 0) {
                        	alert ("'Town/City' is required")
                        	data.town.focus	();
				return false;
			}
 	 	}
		if (data.postcode)     {
			if (data.postcode.value.length == 0) {
                        	alert ("'Post Code' is required")
                        	data.postcode.focus ();
				return false;
			}
         }
		 if (data.phone)	{
			if (data.phone.value.length == 0) {
                        	alert ("'Daytime Telephone' is required")
                        	data.phone.focus();
				return false;
			}
 	 	}
		 if (data.email)	{
			if (data.email.value.length == 0) {
                        	alert ("'E-mail' is required")
                        	data.email.focus ();
				return false;
			}
 	 	}
		 if (data.email_confirmation)	{
			if (data.email_confirmation.value.length == 0) {							 
		        	alert ("'Re-confirm e-mail' is required")
                        	data.email_confirmation.focus ();
				return false;
			}
 	 	}
		
		if (!validateInteger (data.phone.value)) {
			alert ("'Daytime Telephone' must contain only numbers without spaces");
			data.phone.focus ();
			return false;
		}		
	
		if (!validateEmail (data.email.value)) {
			alert ("'E-mail' is not in the correct format");
			data.email.focus ();
			return false;
		}
		if (data.email.value != data.email_confirmation.value) {
			alert ("E-mail addresses do not match");
			data.email_confirmation.focus ();
			return false;
		}
		return true;

	}

	function checkTitleDetails () {
		
		var data = new Object ();
			data.title1 = document.getElementById ("title1");
			data.title2 = document.getElementById ("title2");
			data.title3 = document.getElementById ("title3");
			data.title4 = document.getElementById ("title4");
		
		var selectedIndex = -1;
		if (data.title1) {	
			selectedIndex = data.title1.selectedIndex;
			if (data.title1.options[selectedIndex].value==-1) {
				alert ("Four titles are required")
				data.title1.focus ();
				return false;
			}
		}
		if (data.title2) {	
			selectedIndex = data.title2.selectedIndex;
			if (data.title2.options[selectedIndex].value==-1) {
				alert ("Four titles are required")
				data.title2.focus ();
				return false;
			}
		}
		if (data.title3) {	
			selectedIndex = data.title3.selectedIndex;
			if (data.title3.options[selectedIndex].value==-1) {
				alert ("Four titles are required")
				data.title3.focus ();
				return false;
			}
		}
		if (data.title4) {	
			selectedIndex = data.title4.selectedIndex;
			if (data.title4.options[selectedIndex].value==-1) {
				alert ("Four titles are required")
				data.title4.focus ();
				return false;
			}
		}
		var titles = new Array ();
		var repeatedItem =-1;
		titles [0] = data.title1.options [data.title1.selectedIndex].value;
		titles [1] = data.title2.options [data.title2.selectedIndex].value;
		titles [2] = data.title3.options [data.title3.selectedIndex].value;
		titles [3] = data.title4.options [data.title4.selectedIndex].value;
		for (var i=0; i<titles.length; i++) {
			for (var k=i+1; k<titles.length; k++) {
				if ( (titles [i] !=1) && 
				     (titles [k] != 1)
				   ){
					if (titles [i]==titles[k]) {
						repeatedItem=k;
						break
					}
				}
			}
		}
		if (repeatedItem!=-1) {
			alert ('You need to choose four different titles');
			if (repeatedItem==1) {
				data.title2.focus ();
			}
			else if (repeatedItem==2) {
				data.title3.focus ();
			}
			else if (repeatedItem==3) {
				data.title4.focus ();
			}
			return false;
		}
		return true;
	}
	function checkButtons (number) {
		
		//center
		if (number==1) {
			var typeButton = document.getElementById ("applications");
			if (typeButton.value=="Reference No") {
				var ref = document.getElementById ("reference");
				if (ref) {
					send ("none","none","none",ref.value,typeButton.value);
					return true;
				}
			}
			return false;
		}
		else if (number==2) {
			var membership = document.getElementById ('membership_r');
			if (validateMembership (membership)==false) {
				return false;
			}
			var typeButton = document.getElementById ("renewals");
			if (typeButton) {
				send ("none",membership.value,"none","none",typeButton.value);
				return true;
			}
		}
		//right
		else if (number==3) {
			var membership = document.getElementById ('membership_p');
			//only if the textbox is being shown.
			if (membership.style.display=='') {
				if (validateMembership (membership)==false) {
					return false;
				}
			}
			var typeButton = document.getElementById ("prebooking");
			if (typeButton) {
				var promotionCode = document.getElementById ('promotion_code');
				if (promotionCode) {
					send (membership.value,"none",promotionCode.value,"none",typeButton.value);
					return true;
				}
			}
		}
		return false;
	}
	
	function validateMembership (membershipField) {
		if (membershipField) {
			if (membershipField.value.length == 0) {
				alert ("' Your Cpd Club membership' is required")
				membershipField.focus ();
				return false;
			}
			else if (!validateInteger (membershipField.value)) {
				alert ("'Membership' must contain only numbers");
				membershipField.focus ();
				return false;
			}		
			else if (membershipField.value.length < 5) {
				alert ("'Your Cpd Club membership' should be 5 digits long")
				membershipField.focus ();
				return false;
			}
			return true;
		}
		return false;
	}
	function validatePromotionCode (code) {
		if (code) {
			if (code.value.length == 0) {
				alert ("'A valid promotion code' is required")
				code.focus ();
				return false;
			}		
			else if (code.value.length < 5) {
				alert ("'The promotion code' must be 5 characters long")
				code.focus ();
				return false;
			}
			return true;
		}
		return false;
	}
	
	function disableElement (id) {
		var elto = document.getElementById (id);
		if (elto) {
			elto.value="";
			elto.disabled=true;
			return true;
		}
		return false;
	}

	function validateEmail(email) {
   		var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
   		return (reg.test (email));
	}
		
	function validateInteger( strValue ) {
  		var objRegExp  = /(^-?\d\d*$)/;

  		//check for integer characters
  		return objRegExp.test(strValue);
	}
	
	function send (mp,mr,pc,ref,type) {
		var parametros ="membership_p="+mp+"&membership_r="+mr+"&promotion_code="+pc+"&reference="+ref+"&type="+type;
		var myAjax = new Ajax.Request("ajax/mail_sending.php",
                {method: 'post',
                        parameters:parametros,
                        onSuccess:  function(resp) {
        					showLoading ();
        					if (ref!=='none') {
        						document.fApplications.submit ()
        						disableRestItems ('applications_button');
        					}
        					else if ((mp=='none') && (ref=='none')) {
        						document.fRenewals.submit ()
        						disableRestItems ('renewals_button')
        					}
        					else {
        						document.fPromotion.submit ();
        						disableRestItems ('prebooking_button')
        					}
        					return false;
                        },

                        onFailure : function(resp) {
                                alert("An error happened");

                        }

                }

        );
		
	}
	function checkPromotionCode () {
		var code = document.getElementById ('promotion_code')
		if (validatePromotionCode (code)==false) {
			return false;
		}
		if (code) {
			var parametros ="code="+code.value;
			var myAjax = new Ajax.Request("ajax/promotion_code.php",
					{method: 'post',
                        	parameters:parametros,
                        	onSuccess:  function(resp) {
								var data = resp.responseText.evalJSON();
								if (data.type!="error") {
									makePrebookingAvailable (data.type,data.button_id);
									showInfo (data.description);
								}
								else {
									alert ("Invalid promotion code. Please try again");
								}
                        	},

                        	onFailure : function(resp) {
                                alert("An error happened");

                        	}
					}
			);
		}
		
	}

	
	function showInfo (message) {
		var dElto = document.getElementById ("promo_info");
		/*if (price==65) {
			var pElto = document.getElementById ("course_fee");
			if (pElto) {
				pElto.innerHTML ="course fee &#163;" + price;
			}
		}
		else if (price==70) {
		        dElto.innerHTML ="";
			//var pElto = document.getElementById ("course_fee");
                        //if (pElto) {
                        //        pElto.innerHTML ="&#163;" + price + " renewal plus 1 free pack";
                        //}
			//dElto.innerHTML = pElto;
			dElto.innerHTML = "<p>&#163;" +price + " renewal plus 1 free pack</p>";

		}
		else {
			dElto.innerHTML="<p>Renewing with</p><p>complimentary</p><p>online access</p><p class='course_fee'>&#163;" + price + "</p>";
		}*/
		dElto.innerHTML = message;
		Effect.Appear ("promo_info", {duration:0.5});
	}
	
	function showLoading () {
		var dElto = document.getElementById ("loading_paypal");
		if (dElto) {
			Effect.Appear ("loading_paypal", {duration:0.5});
		}
	}
	function makePrebookingAvailable (type,value) {
		var promotionButton = document.getElementById ('promotion_button');
		if (promotionButton) {
			promotionButton.style.display='none';
		}
		
		var prebookingButton = document.getElementById ('prebooking_button');
		if (prebookingButton) {
			prebookingButton.style.display='';
		}
		var promotionCode = document.getElementById ('promotion_code');
		if (promotionCode) {
			promotionCode.disabled=true;
		}
		
		var button = document.getElementById ('hosted_promotion_button_id');
                	if (button) {
                                button.value= value;
                        }

		if (type=="renewals") {
			/*var button = document.getElementById ('hosted_promotion_button_id');
			if (button) {
				button.value= value;
			}*/
			var label = document.getElementById ('prebooking_label');
			if (label) {
				label.style.display='';
			}
			var membership = document.getElementById ('membership_p');
			if (membership) {
				membership.style.display='';
			}
		}
	}
	
	function disableRestItems (name) {
		if (name=="applications_button") {
			var bt1 = document.getElementById ('renewals_button');
			if (bt1) {
				bt1.disabled=true;
			}
			var bt2 = document.getElementById ('prebooking_button');
			if (bt2) {
				bt2.disabled=true;
			}
			var bt3 = document.getElementById ('promotion_button');
			if (bt3) {
				bt3.disabled=true;
			}
		}
		else if (name=="renewals_button") {
			var bt1 = document.getElementById ('applications_button');
			if (bt1) {
				bt1.disabled=true;
			}
			var bt2 = document.getElementById ('prebooking_button');
			if (bt2) {
				bt2.disabled=true;
			}
			var bt3 = document.getElementById ('promotion_button');
			if (bt3) {
				bt3.disabled=true;
			}
		}
		else {
			var bt1 = document.getElementById ('applications_button');
			if (bt1) {
				bt1.disabled=true;
			}
			var bt2 = document.getElementById ('renewals_button');
			if (bt2) {
				bt2.disabled=true;
			}
		}
	}
