

function termsPopup(page) {
	
	window.open(page,'name','height=500,width=350,scrollbars=yes');
	
	return false;
	
}

function checkTerms() {
	var theForm = document.confirmForm;
	var check = document.getElementById('agree');
	var child_name = document.getElementById('child_name');
	if (check.checked==true && child_name.value != '') {
		swapBtn('requestBtn');
		theForm.submit();
	} else {
		if(check.checked == false) {
		alert('You must agree to the Terms & Conditions before booking your party.');	
		} else if(child_name.value == '') {
		alert('Please enter the child\'s or organisation\'s name to proceed.');	
		}
	}
	return false;
}

function getUserInfo(field) {
	var url = 'ajax/json.php?nocache='+Math.random();
	var x = createXMLHttp();
	var div = document.getElementById('userInfo');
	x.onreadystatechange= function() {
		if (x.readyState==4 && x.status==200) {
			var o = eval('('+x.responseText+')');
			var res = eval('o.'+field);
			if (res != 'undefined') {
				div.innerHTML = res;
			} else {
				div.innerHTML = 'Field does not exist.';
			}
		}
	}
	x.open("GET", url);
	x.send(null);
}

// 
function gotoStep(s) {
	var steps;
	
	steps[1] = 'party'; 
	steps[2] = 'themes'; 
	steps[3] = 'availability'; 
	steps[4] = 'booktime'; 
	steps[5] = 'booktime/confirm'; 
	
	window.location=steps[s];
}

// DISPLAYS A DIALOG BOX WITH THE PARTY INFORMATION (A)
function showParty(package) {
	var w = document.getElementById('popupWindow');
	var url = 'ajax/ajax.php?action=showparty&package='+package+'&nocache='+Math.random();
	var xmlHttp = createXMLHttp();
	xmlHttp.onreadystatechange = function() {
		if (xmlHttp.readyState==4 && xmlHttp.status==200) {
			w.innerHTML=xmlHttp.responseText;
			w.style.display='block';
		}
	}
	xmlHttp.open("GET",url);
	xmlHttp.send(null);
}

// TOGGLES THE VISIBILITY OF AN ELEMENT
function checkExisting(eltId) {
	var f = document.existingForm;
	var inp = f.getElementsByTagName('input');
	var r = new Array();
	var x = 0;
	for (var i=0; i<inp.length; i++) {
		if (inp[i].type=='radio') {
			r[x] = inp[i];
			x++;
		}
	}
	var u = document.getElementById('userp');
	for (var n=0; n<r.length; n++) {
		if (r[n].id=='existing' && r[n].checked) {
			u.style.display='block';
		} else if (r[n].id=='existing' && !r[n].checked) {
			u.style.display='none';	
		}
	}
}

// CONFIRMS A REQUESTED PARTY (A)
function confirmParty(partyId) {
	var id = partyId;
	var url = 'ajax/ajax.php?action=confirmparty&id='+id+'&nocache='+Math.random();
	var xmlHttp = createXMLHttp();
	xmlHttp.open("GET",url);
	xmlHttp.send(null);
	window.location.reload();
}

// DECLINES A REQUESTED PARTY (A)
function declineParty(partyId) {
	var id = partyId;
	var url = 'ajax/ajax.php?action=declineparty&id='+id+'&nocache='+Math.random();	
	var xmlHttp = createXMLHttp();
	xmlHttp.open("GET",url);
	xmlHttp.send(null);
	window.location.reload();
}

// CLOSES THE MESSAGE WINDOW
function closeMsg() {
	var holder = document.getElementById('msgHolder');	
	holder.style.display='none';
	window.location.reload();
}

// DELETES A MESSAGE (A)
function deleteMsg(msgId) {
	var cont = confirm('Are you sure you want to delete this message?');
	if (!cont) { return false; }
	var xmlHttp = createXMLHttp();
	var url = 'ajax/ajax.php?action=del&id='+msgId+'&nocache='+Math.random();
	xmlHttp.open("GET",url);
	xmlHttp.send(null);
	window.location.reload();
}

// DISPLAYS THE MESSAGE WINDOW (A)
function showMsg(msgId) {
	var id = msgId;
	var xmlHttp = createXMLHttp();
	var holder = document.getElementById('msgHolder');
	var url = 'ajax/getmsg.php?id='+id+'&nocache='+Math.random();
	xmlHttp.onreadystatechange=function() {
		if (xmlHttp.readyState==4 && xmlHttp.status==200) {
			if (xmlHttp.responseText) {
				holder.innerHTML = xmlHttp.responseText;
				holder.style.display='block';
			}
		} else if (xmlHttp.status!=200) {
			holder.innerHTML = '<p class="errorMsg">Error '+xmlHttp.status+': '+xmlHttp.statusText+'.</p>';	
			holder.style.display='block';
		}
	}
	xmlHttp.open("GET", url);
	xmlHttp.send(null);
}

// REMOVES A FAULT RECORD FROM THE DB (A)
function removeFault(faultId) {
	var cont = confirm('Are you sure you want to remove this record?');
	if (!cont) { return false; }
	var id = faultId;
	var xmlHttp = createXMLHttp();
	var url = 'ajax/ajax.php?faultid='+id+'&nocache='+Math.random();
	xmlHttp.onreadystatechange=function() {
		if (xmlHttp.readyState==4 && xmlHttp.status==200) {
			if (xmlHttp.responseText) {
				window.location.reload();
			} else {
				alert('Unable to remove record. Please try later.');
			}
		} else if (xmlHttp.status!=200) {
			alert('Error '+xmlHttp.status+': '+xmlHttp.statusText+'.');	
		}
	}
	xmlHttp.open("GET", url);
	xmlHttp.send(null);
}

// UPDATES THE SELECTED PACKAGE FOR ADMIN USERS
function updatePackage(value, url) {
	setSession('package',value);
	if (value=='Gold') {
		window.location=url+'themes';
	} else {
		window.location=url+'availability';
	}
}

// SELECTS A THEME
function selectTheme(theme,id) {
	var div = document.getElementById('selectedTheme');
	var cont = document.getElementById('themeImages');
	var imgs = cont.getElementsByTagName('img');
	for (var i=0; i<imgs.length; i++) {
		imgs[i].className='';
	}
	document.getElementById(id).className='selected';
	setSession('theme',theme);
	window.location='availability';
	div.innerHTML=theme;
}

// GETS DETAILS OF A FAULT RECORD (A)
function showFaultDetails(faultId, topPx) {
	var div = document.getElementById('detailsDiv');
	var id = faultId;
	var xmlHttp = createXMLHttp();
	var url = 'ajax/getfault.php?faultid='+id+'&nocache='+Math.random();
	xmlHttp.onreadystatechange = function() {
		if (xmlHttp.readyState==4 && xmlHttp.status==200) {
			div.innerHTML = xmlHttp.responseText;
			div.style.display='block';
			div.style.top=parseInt(topPx)+'px';
			div.style.left='380px';
		} else if (xmlHttp.status!=200) {
			div.innerHTML = '<p class="errorMsg">Error '+xmlHttp.status+': '+xmlHttp.statusText+'.</p>';	
		}
	}
	xmlHttp.open('GET',url);
	xmlHttp.send(null);
}

// GETS DETAILS OF A TIME SLOT (A)
function showDetailsDiv(userId, party_id, topPx) {
	var div = document.getElementById('detailsDiv');
	var user = userId;
	var xmlHttp = createXMLHttp();
	var url = 'ajax/getdetails.php?user='+user+'&party='+party_id+'&nocache='+Math.random();
	xmlHttp.onreadystatechange = function() {
		if (xmlHttp.readyState==4 && xmlHttp.status==200) {
			div.innerHTML = xmlHttp.responseText;
			div.style.display='block';
			div.style.top=parseInt(topPx)+'px';
		} else if (xmlHttp.status!=200) {
			div.innerHTML = '<p class="errorMsg">Error '+xmlHttp.status+': '+xmlHttp.statusText+'.</p>';	
		}
	}
	xmlHttp.open('GET',url);
	xmlHttp.send(null);
}

// HIDES AN ELEMENT, OBVIOUSLY.
function hideElement(eltId) {
	var div = document.getElementById(eltId);
	div.style.display='none';
}

// COLLECTS DETAILS OF THE PARTY
function updateSession(totalPrice) {
	
	var package = document.getElementById('package').innerHTML;
	
	var food = (package != 'Bronze') ? document.getElementById('food_choice').value : 'None';
	
	var num = document.getElementById('num_children').value;
	var comments = document.getElementById('comments').value;
	var addons = [];
	
	var name = document.getElementById('child_name').value;
	var age = document.getElementById('child_age').value;
	var gender = document.getElementById('gender').value;
	var childInfo = name+','+age+','+gender;
	
	var theForm = document.getElementById('confirmForm');
	var formInputs = theForm.getElementsByTagName('input');
	var n=0;
	for (var i=0; i<formInputs.length; i++) {
		if (formInputs[i].type=="checkbox" && formInputs[i].checked==true) {
			addons[n] = formInputs[i].value;
			n++;
		}
	}
	addons = addons.join(',');
	
	var data = "update=session&num_children="+num+"&addons="+addons+"&food="+food+"&child="+childInfo+"&comments="+comments+"&total="+totalPrice;
	
	sendPostData('ajax/ajax.php', data);

}

// SENDS 'data' TO 'path' USING POST AND CALLS 'callback' ON STATE CHANGE - 'path' MUST BE ON THE SAME DOMAIN
function sendPostData(path, data, callback) {
	var xmlHttp = createXMLHttp();
	xmlHttp.onreadystatechange=function() {
		if (xmlHttp.readyState==4) {
			//alert(xmlHttp.responseText);	
		}
	}
	xmlHttp.open("POST", path);
	xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlHttp.setRequestHeader("Content-length", data.length);
	xmlHttp.setRequestHeader("Connection", "close");
	xmlHttp.send(data);
}

// CALCULATES TOTAL COST OF PARTY
function calcCost() {
	
	var prices = {
					'Helium Filled Metallic Latex Balloon' : 0.75,
					'Helium Filled Latex Balloon' : 0.5,
					'Foil 18inch Helium Balloon' : 3,
					'Helium Filled 1m Latex Balloon' : 5.5,
					'Large Foil Helium Balloon' : 5.5,
					'Large Supershape Helium Balloon' : 7,
					'Cake Shaped as a number' : 15,
					'9inch Themed' : 35,
					'3D Themed Cake' : 40,
					'Musical Candles' : 1.75,
					'Number Shaped 0-9' : 0.6,
					'Happy Birthday Letters' : 2.25,
					'4 Spiral Candles' : 1,
					'Birthday Candles with Holders' : 0.8,
					'Candle Holders' : 0.55,
					'Sandwich Platter' : 15,
					'Savoury Platter' : 15,
					'Sweet Platter' : 15
					};
	
	var total = 0;
	var theForm = document.getElementById('confirmForm');
	var numKids = parseInt(document.getElementById('num_children').value);
	var ppcDiv = document.getElementById('costperchild');
	var ppc = ppcDiv.innerHTML;
	ppc = ppc.substring(1);
	var rhDiv = document.getElementById('roomhire');
	var rh = rhDiv.innerHTML;
	rh = rh.substring(1);
	
	total = (numKids * ppc) + parseFloat(rh);
	total = parseFloat(total);
	var cost = null;
	formInputs = theForm.getElementsByTagName('input');
	
	for (var i=0; i < formInputs.length; i++) {
		if (formInputs[i].name.indexOf('addons') > -1) {
			var label = formInputs[i].name.substr(7, formInputs[i].name.length - 8);
			label = label.replace(/_/ig, ' ');
			total += prices[label] * formInputs[i].value;
		}
	}
	
	var hidden = document.getElementById('total');
	var display = document.getElementById('totalcost');
	display.innerHTML = '&pound;' + total.toFixed(2);
	hidden.value = total.toFixed(2);
	
	updateSession(total.toFixed(2));
	
}

// HIGHLIGHTS SELECTED DAY ON THE CALENDAR
function highlightDay(id) {
	var cells = document.getElementsByTagName('td');
	for (var i = 0; i < cells.length; i++) {
		if (cells[i].style.border = '1px dashed #fff') {
			cells[i].style.border = 'none';
		}
	}
	var cell = document.getElementById(id);
	cell.style.border = '1px dashed #fff';
}

// CHECKS AVAILABILITY OF A DAY (A)
function checkAvailability(timestamp) {
	var div = document.getElementById('availDisplay');
	div.innerHTML = '<p style="text-align:center;"><img src="images/loading.gif" alt="Loading, please wait..." class="loaderIcon" /></p>';
	div.style.display = 'block';
	var xmlHttp = createXMLHttp();
	var url = "ajax/gettimes.php?time="+timestamp+"&nocache="+Math.random();
	xmlHttp.onreadystatechange = function() {
		if (xmlHttp.readyState==4 && xmlHttp.status==200) {
			div.innerHTML = xmlHttp.responseText;
		} else if (xmlHttp.status!=200) {
			div.innerHTML = '<p class="errorMsg">Error '+xmlHttp.status+': '+xmlHttp.statusText+'.</p>';	
		}
	}
	xmlHttp.open('GET',url);
	xmlHttp.send(null);
}

// ADDS THE NEWSLETTER EMAIL ADDRESS TO THE DB (A)
function addEmail() {
	var xmlHttp = createXMLHttp();
	var input = document.getElementById('mailingemail').value;
	var message = document.getElementById('newsletterMsg');
	message.innerHTML = '<p style="text-align:center;"><img src="images/loading.gif" alt="Loading, please wait..." class="loaderIcon" /></p>';
	var url = "ajax/ajax.php?action=addEmail&value="+escape(input)+"&nocache="+Math.random();
	xmlHttp.onreadystatechange = function() {
		if (xmlHttp.readyState==4 && xmlHttp.status==200) {
			message.innerHTML = xmlHttp.responseText;
		} else if (xmlHttp.status!=200) {
			alert('HTTP Error '+xmlHttp.status+': '+xmlHttp.statusText);
		}
	}
	xmlHttp.open('GET',url);
	xmlHttp.send(null);
}

// FILLS THE EMAIL FIELD IF EMPTY WHEN BLURRED
function fillEmail(id) {
	var input = document.getElementById(id);
	if (input.value=='') {
		input.value = 'email address';
	}
}

// CLEARS THE EMAIL FIELD WHEN FOCUSSED ON IF AN EMAIL HASNT BEEN ENTERED
function clearEmail(id) {
	var input = document.getElementById(id);
	if (input.value=='email address') {
		input.value = '';
	}
}

// SETS A SESSION VARIABLE (A)
function setSession(cookieName,cookieValue) {
	var xmlHttp = createXMLHttp();
	xmlHttp.open('GET',"ajax/ajax.php?name="+cookieName+"&value="+cookieValue+"&nocache="+Math.random());
    xmlHttp.send(null);	
}

// SHOWS A LOADING ICON TO INFORM THE USER THAT DATA IS BEING PROCESSED
function swapBtn(id) {
	var p = document.getElementById(id);
	p.className = 'center';
	p.innerHTML = '<img src="images/loading.gif" alt="Loading, please wait..." class="loaderIcon" />';
}

// CHANGE MONTHS ON THE CALENDAR (A)
function changeMonth(timestamp) {
	var xmlHttp = createXMLHttp();
	var div = document.getElementById('calendarHolder');
	var url = "ajax/calendar.php?time="+timestamp+"&nocache="+Math.random();
	xmlHttp.onreadystatechange = function() {
		if (xmlHttp.readyState==4 && xmlHttp.status==200) {
			div.innerHTML = xmlHttp.responseText;
		} else if (xmlHttp.status!=200) {
			div.innerHTML = '<p class="errorMsg">Error '+xmlHttp.status+': '+xmlHttp.statusText+'.</p>';	
		}	
	}
	xmlHttp.open('GET',url);
    xmlHttp.send(null);	
}

// Create XMLHttpRequest object
function createXMLHttp() {
	var xmlHttp;
  	try {
    	// Firefox, Opera, Safari
    	xmlHttp=new XMLHttpRequest();
    } catch (e) {
    	// Internet Explorer
    	try {
      		xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
      	} catch (e) {
      		try {
        		xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
        	} catch (e) {
        		alert("Sorry, your web browser does not support this feature.");
        		return false;
        	}
      	}
    }
	return xmlHttp;
}


// +---END DH FUNCTIONS------------------------------------------------------------------+ \\







//ALLOWS EXTERNAL LINKS TO BE OPENED IN A NEW WINDOW WITHOUT THE USE OF TARGET ATTRIBUTE
//LOOPS THROUGH LINKS ON PAGE FINDS EXTERNAL LINKS AND ADDS TARGET//
function externalLinks() {
	//SETS DOMAIN OF SITE
	var domainName=document.domain;
	
	//FIND ALL LINKS ON THE CURRENT PAGE
	var externalLinks=document.getElementsByTagName("a");
	//LOOP THROUGH LINKS ARRAY
	for(var i=0; i<externalLinks.length; i++) {
		//GETS CONTENT OF 'HREF' ATTRIBUTE ON CLICKED LINK
		var attribute=externalLinks[i].getAttribute("href");
		
		//GET VALUE http IN 'HREF' **FOR MOZILLA&&
		var contains_http=attribute.indexOf("http");
		
		//GET VALUE domainName **FOR IE**
		var contains_domain=attribute.indexOf(domainName);
		
		//DOES CONTAIN AN 'http' OR DOES NOT CONTAIN domainName
		if(contains_http>-1 && contains_domain==-1) {
			//SET NEW ATTRIBUTE ON LINK
			externalLinks[i].setAttribute("target", "_blank");
		}
		
	}
	
}

//FORM VALIDATION
//LOOPS THROUGH THE ELEMENTS IN A SUBMITTED FORM, CHECKS IF THEY ARE MARKED AS MANDATORY (class='mand') AND HIGHTLIGHTS LABELS

/**REQUIRED
//EACH REQUIRED FIELD NEEDS CLASS OF mand
**/

/**OPTIONAL
//AN ERROR PARAGRAPH AT THE TOP OF THE PAGE ID=error
//A LINK OR INPUT FIELD IN error TO FOCUS ON
**/

//HIGHLIGHT LABEL IF ELEMENT IS BLANK OR NORMALISE IF COMPLETED
function highlightLabel(form, id, color, weight) {
	var forAttribute="";
	//FIND LABELS ON FORM
	var labels=form.getElementsByTagName("label");
	for(var z=0; z<labels.length; z++) {
		//GET FOR ATTRIBUTE
		//forAttribute=labels[z].getAttribute('for')?labels[z].getAttribute('for'):labels[z].getAttribute('htmlFor');
		if(navigator.appName=="Microsoft Internet Explorer") {
			forAttribute=labels[z].getAttribute('htmlFor');
		}else{
			forAttribute=labels[z].getAttribute('for');
		}
		
		//MATCH FOR WITH ELEMENT ID
		if(forAttribute==id) {
			//APPLY STYLES AS APPROPRIATE
			labels[z].style.color='#'+color;
			labels[z].style.fontWeight=weight;
		}
	}
}


//VALIDATES INPUT FIELDS
function checkInputs(form, fail) {
	//GET INPUTS
	var inputs=form.getElementsByTagName("input");
	for(var x=0; x<inputs.length; x++) {
		//DEFINE ELEMENT ID
		var elementId=inputs[x].getAttribute("id");
		//IS FIELD MANDATORY AND NOT COMPLETED
		if(inputs[x].className.indexOf("mand")>-1 && inputs[x].value=="") {
			//CHANGE LABEL
			highlightLabel(form, elementId, 'ffe400', 'normal');
			//INCREMENT FAIL VAL
			fail++;
		//THIS COVERS CHECKBOXES
		}else if((inputs[x].className.indexOf("mand")>-1 && inputs[x].className.indexOf("checkbox")>-1) && inputs[x].checked==false) {
			//CHANGE LABEL
			highlightLabel(form, elementId, 'ffe400', 'normal');
			//INCREMENT FAIL VAL
			fail++;
		}else if((inputs[x].className.indexOf("mand")>-1 && inputs[x].className.indexOf("checkbox")>-1) && inputs[x].checked==true) {
			//CHANGE LABEL
			highlightLabel(form, elementId, 'fff', 'normal');
		}else if(inputs[x].className.indexOf("mand")>-1 && inputs[x].value!="") {
			//CHANGE LABEL
			highlightLabel(form, elementId, 'fff', 'normal');
		}
		
	}
	//SEND FAIL BACK TO FUNCTION
	return fail;
}

//VALIDATES TEXTAREAS FIELDS
function checkTextArea(form, fail) {
	//GET TEXTAREAS
	var textareas=form.getElementsByTagName("textarea");
	for(var n=0; n<textareas.length; n++) {
		//DEFINE ELEMENT ID
		var elementId=textareas[n].getAttribute("id");
		//IS FIELD MANDATORY AND NOT COMPLETED
		if(textareas[n].className.indexOf("mand")>-1 && textareas[n].value=="") {
			//CHANGE LABEL
			highlightLabel(form, elementId, 'cb0000', 'bold');
			//INCREMENT FAIL VAL
			fail++;
		}else if(textareas[n].className.indexOf("mand")>-1 && textareas[n].value!="") {
			//CHANGE LABEL
			highlightLabel(form, elementId, 'fff', 'bold');
		}
		
	}
	//SEND FAIL BACK TO FUNCTION
	return fail;
}

//VALIDATES SELECTS FIELDS
function checkSelects(form, fail) {
	//GET SELECTS
	var selects=form.getElementsByTagName("select");
	for(var b=0; b<selects.length; b++) {
		//DEFINE ELEMENT ID
		var elementId=selects[b].getAttribute("id");
		//IS FIELD MANDATORY AND NOT COMPLETED
		if(selects[b].className.indexOf("mand")>-1 && (selects[b].value=="0" || selects[b].value=="")) {
			//CHANGE LABEL
			highlightLabel(form, elementId, 'cb0000', 'bold');
			//INCREMENT FAIL VAL
			fail++;
		}else if(selects[b].className.indexOf("mand")>-1 && (selects[b].value!="0" && selects[b].value!="")) {
			//CHANGE LABEL
			highlightLabel(form, elementId, 'fff', 'bold');
		}
	}
	//SEND FAIL BACK TO FUNCTION
	return fail;
}

//FINDS THE SUBMITTED FORM
function formValidation() {
	var forms=document.getElementsByTagName("form");
	//LOOP THROUGH FORMS
	for(var i=0; i<forms.length; i++) {
		//FORM HAS BEEN SUBMITTED
		forms[i].onsubmit=function() {
			//SET FAIL VAL
			var fail=0;
			//ASSIGN CURRENT FAIL VAL TO CHECKING FUNCTIONS
			fail += checkInputs(this, fail);
			fail += checkTextArea(this, fail);
			fail += checkSelects(this, fail);
			
			//CHECK PASSWORDS MATCH
			if(document.getElementById('pass') && document.getElementById('pass2')) {
				
				var password = document.getElementById('pass').value;
				var repassword = document.getElementById('pass2').value;
				
				var passwordFail = 0;
				
				if(password.value != repassword.value) {
					alert('dfgdfg');
					passwordFail++;
					
				}
				
				
			} 
			
			//RETURN RESULT OF CHECKING
			if(fail>0) {
				
				if(document.getElementById('error')) {
					var errorText = document.getElementById('error');
					errorText.style.display='block';
					//NEED TO PUT A LINK OR INPUT IN THE ERROR PARA TO GET FOCUS - OPTIONAL
					if(document.getElementById('error_input')) {
						var errorInput = document.getElementById('error_input');
						errorInput.focus();
					}
				}else{
					alert('Please make sure you have completed all fields marked *\n\n');
				}
				
				return false;
				
			}else{
				
				//CHECK IF PASSWORDS MATCH
				if(passwordFail>0) {
					if(document.getElementById('passwordError')) {
					
						var passwordError = document.getElementById('passwordError');
						passwordError.style.display='block';
						var errorInput = document.getElementById('error_password');
						errorInput.focus();
					
					}else{
						alert('Please make sure your passwords match\n\n');
					}
					
					return false;
					
				}else{
				
					return true;
				
				}
			}
		}
	}
}

function checkForm(form) {
			//SET FAIL VAL
			var fail=0;
			//ASSIGN CURRENT FAIL VAL TO CHECKING FUNCTIONS
			fail += checkInputs(form, fail);
			fail += checkTextArea(form, fail);
			fail += checkSelects(form, fail);
			
			//CHECK PASSWORDS MATCH
			if(document.getElementById('password_1') && document.getElementById('password_2')) {
				
				var password = document.getElementById('password_1');
				var repassword = document.getElementById('password_2');
				
				var passwordFail = 0;
				
				if(password.value != repassword.value) {
					
					passwordFail++;
					
				}
				
				
			}
			
			//RETURN RESULT OF CHECKING
			if(fail>0) {
				
				if(document.getElementById('error')) {
					var errorText = document.getElementById('error');
					errorText.style.display='block';
					//NEED TO PUT A LINK OR INPUT IN THE ERROR PARA TO GET FOCUS - OPTIONAL
					if(document.getElementById('error_input')) {
						var errorInput = document.getElementById('error_input');
						errorInput.focus();
					}
				}else{
					alert('Please make sure you have completed all fields marked *\n\n');
				}
				
				return false;
				
			}else{
				
				//CHECK IF PASSWORDS MATCH
				if(passwordFail>0) {
					if(document.getElementById('passwordError')) {
					
						var passwordError = document.getElementById('passwordError');
						passwordError.style.display='block';
						var errorInput = document.getElementById('error_password');
						errorInput.focus();
					
					}else{
						alert('Please make sure your passwords match\n\n');
					}
					
					return false;
					
				}else{
				
					return true;
				
				}
			}
}

function dump(arr,level) {
	var dumped_text = "";
	if (!level) {
		level = 0;
	}
	//The padding given at the beginning of the line.
	var level_padding = "";
	for (var j=0;j<level+1;j++) {
		level_padding += "    ";
	}
	if(typeof(arr) == 'object') { //Array/Hashes/Objects
		for(var item in arr) {
			var value = arr[item];
	 		if(typeof(value) == 'object') { //If it is an array,
				dumped_text += level_padding + "'" + item + "' ...\n";
				dumped_text += dump(value,level+1);
			} else {
	   			dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
	  		}
	 	}
	} else { //Stings/Chars/Numbers etc.
		dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
	}
	return dumped_text;
} 

// AUTO-COMPLETE CHECKOUT DELIVERY ADDRESS
function deliveryAddress() {
	/* Display checkbox to click for same delivery address, with accompanying note */
	if (document.getElementById('same_del')) {
		document.getElementById('same_del').innerHTML='<input type="checkbox" class="checkbox" name="same_address" id="same_address" value="1" /><label for="same_address">Please click here if your delivery address is the same as your billing address.</label>';
		/* Grab initial values for delivery address */
		var initial_del_address1=document.getElementById('del_address1').value;
		var initial_del_address2=document.getElementById('del_address2').value;
		var initial_del_town=document.getElementById('del_town').value;
		var initial_del_county=document.getElementById('del_county').value;
		var initial_del_postcode=document.getElementById('del_postcode').value;
		/* Have function to complete address when checkbox checked */
		document.getElementById('same_address').onclick=function() {
			/* Checked! - Do your thang! */
			if (document.getElementById('same_address').checked==true) {
				document.getElementById('del_address1').value=document.getElementById('address1').value;
				document.getElementById('del_address2').value=document.getElementById('address2').value;
				document.getElementById('del_town').value=document.getElementById('town').value;
				document.getElementById('del_county').value=document.getElementById('county').value;
				document.getElementById('del_postcode').value=document.getElementById('postcode').value;
			}
			/* Not checked - reset to initial values */
			else {
				document.getElementById('del_address1').value=initial_del_address1;
				document.getElementById('del_address2').value=initial_del_address2;
				document.getElementById('del_town').value=initial_del_town;
				document.getElementById('del_county').value=initial_del_county;
				document.getElementById('del_postcode').value=initial_del_postcode;
			}
		}
	}
}

//EXECUTES ONLOAD FUNCTIONS
function init() {
	//externalLinks();
	deliveryAddress();
	formValidation();
	var url = new String(window.location);
	if (url.indexOf("booktime") > -1) {
		calcCost();
	}
}
//LOADS IN MULTIPLE FUNCTIONS ONLOAD
window.onload=init;