// JavaScript Document

// EDIT THESE VALUES IF REQUIRED
var alertText = 'Are you sure you wish to perform this action' + "\n"; //DEFAULT TEXT DISPLAYED ON CONFIRM BUTTONS/LINKS WHEN NO ALT/TITLE
var newWindowLink = false; //OPEN EXTERNAL LINKS BY DEFAULT IN A NEW WINDOW (TRUE/FALSE)?


var woms = new Array(); //CREATE ARRAY OF FUNCTIONS TO LAUNCH ONLOAD

//ONLOAD MANAGER
function womOn(){
  window.onload = womGo;
}

function womGo(){
  for(var i = 0;i < woms.length;i++)
    eval(woms[i]);
}

function womAdd(func){
  woms[woms.length] = func;
}

function CreateBookmarkLink() {

	title = document.title;
	url = window.location.href;
	
	if (window.sidebar) { 
		window.sidebar.addPanel(title, url,"");
	} else if(window.external) {
		window.external.AddFavorite( url, title); 
	} else if(window.opera && window.print) {
		return true;
	}
	
}

function objToggle(obj) { 

	var obj = document.getElementById(obj);

	if(obj.style.display == "block") { 
		obj.style.display = "none";
	} else { 
		obj.style.display = "block";
	}

}

function expandMenu(listName) {
	var control=document.getElementById(listName);
	var listElements=control.getElementsByTagName("li");
	
	for(var i=0; i<listElements.length; i++) {
		//EXPAND MENU
		listElements[i].onmouseover=function() {
				var uls=this.getElementsByTagName("ul");
				for(var n=0; n<uls.length; n++) {
					if(n==0) {
						uls[n].style.display="block";
					}
					
				}
			}
		//CLOSE MENU	
		listElements[i].onmouseout=function() {
			var uls=this.getElementsByTagName("ul");
				for(var n=0; n<uls.length; n++) {
					if(n==0) {
						uls[n].style.display="none";
					}
					
				}
		}
	}
}







//GLOBALS
/*
*
* LEAVE THESES ALONE
*
*/
//FOR CONFIRM FUNCTION
var validateForm  = 'validate'; //CLASS NAME FOR FORM THAT REQUIRES VALIDATION
var errorClass    = 'error'; //CLASS NAME FOR LABELS TO SHOW ERRORS
var formMessage   = 'Please complete all fields marked *'; //TEXT TO APPEAR WHEN FORM FAILS VALIDATION

var confirmed = false;
var elementClass = '';
var titleText = '';

//HIGHLIGHT LABEL IF ELEMENT IS BLANK OR NORMALISE IF COMPLETED
function highlightLabel(form, id, newClass) {
	
	var forAttribute="";
	
	var labels=form.getElementsByTagName("label"); //FIND LABELS ON FORM
	
	for(var z=0; z<labels.length; z++) {
		
		//GET FOR ATTRIBUTE
		if(navigator.appName=="Microsoft Internet Explorer") { //IE
			
			forAttribute=labels[z].getAttribute('htmlFor');
			
		}else{ //OTHER BROWSERS
			
			forAttribute=labels[z].getAttribute('for');
			
		}
		
		if(forAttribute==id) { //MATCH FOR WITH ELEMENT ID
			
			labels[z].className=newClass; //APPLY STYLES AS APPROPRIATE
			
		}
		
	}
	
}


//VALIDATES INPUT FIELDS
function checkInputs(form, fail) {
	
	var inputs   = form.getElementsByTagName("input"); //GET INPUTS
	
	for(var x=0; x<inputs.length; x++) {
		
		var thisFail = 0;
		
		var elementId   = inputs[x].getAttribute("id"); //DEFINE ELEMENT ID
		var elementType = inputs[x].getAttribute("type"); //DEFINE ELEMENT TYPE
		var elementName = inputs[x].getAttribute("name"); //DEFINE NAME ELEMENT
		
		if(inputs[x].className.indexOf('req') > -1) {
			
			switch(elementType) { //CHECK THE TYPE OF INPUT
			
				case 'text':
				if(inputs[x].value == '') {
					
					thisFail++; //INCREMENT FAIL VALS
					fail++;
					
				}
				case 'password':
				if(inputs[x].value == '') {
					
					thisFail++; //INCREMENT FAIL VALS
					fail++;
					
				}
				break;
				case 'checkbox':
				if(inputs[x].checked == false) {
				
					thisFail++; //INCREMENT FAIL VALS
					fail++;
				
				}
				break;
				default:
			
			}
			
		}
		
		if(thisFail > 0) { 
		
			highlightLabel(form, elementId, 'error'); //ERROR
		
		}else{
		
			highlightLabel(form, elementId, ''); //CLEAR
			
		}
		
	}
	
	//SEND FAIL BACK TO FUNCTION
	return fail;
	
}

function validateEmail(varname) {
	
	var valid = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/; //PATTERN TO MATCH
	var emailAddress = document.getElementById(varname);
	
	if(valid.test(emailAddress.value)) return true; //TEST FIELD
	
	return false;
	
}

function lookForEmail(form) {

	var emailVars = Array('email', 'email_address', 'Email', 'Email_Address', 'emailaddress', 'EmailAddress'); //POSSIBLE NAMES FOR EMAIL FIELD
			
	for(var n=0; n<emailVars.length; n++) { //LOOP THROUGH ARRAY
		
		if(document.getElementById(emailVars[n]) && document.getElementById(emailVars[n]).value!='') { //CHECK FOR FIELD AND NEED TO VALIDATE
			
			if(document.getElementById(emailVars[n]).getAttribute('type')!='checkbox') { //MAKE SURE ITS NOT A CHECKBOX
			
				var isEmail = validateEmail(emailVars[n]); //VALIDATE EMAIL FIELD
				
				if(isEmail == false) {
					
					highlightLabel(form, emailVars[n], 'error'); //ERROR
					alert('Please enter a valid email address');
					
					return false;
					
				}else{
				
					highlightLabel(form, emailVars[n], ''); //CLEAR
				
				}
			
			}
			
		}
		
	}
	
	return true;

}

function matchPass(form) {

	var success = false;
	
	if(!document.getElementById('password_1')) return false;
	
	var pass1 = document.getElementById('password_1');
	var pass2 = document.getElementById('password_2');
	
	if(pass1.value == pass2.value) {
	
		success = true;
	
	} else {
	
		alert('Please make sure your passwords match.');
	
	}
	
	return success;

}

//VALIDATES TEXTAREAS FIELDS
function checkTextArea(form, fail) {
	
	var thisFail  = 0;
	var textareas = form.getElementsByTagName('textarea'); //GET TEXTAREAS
	
	for(var n=0; n<textareas.length; n++) {
		
		var elementId=textareas[n].getAttribute('id'); //DEFINE ELEMENT ID
		
		if(textareas[n].className.indexOf('req') > -1 && textareas[n].value == '') { //IS FIELD MANDATORY AND NOT COMPLETED
			
			highlightLabel(form, elementId, 'error'); //ERROR
			thisFail++; //INCREMENT FAIL VAL
			fail++;
			
		}
		
		if(thisFail > 0) { 
		
			highlightLabel(form, elementId, 'error'); //ERROR
		
		}else{
		
			highlightLabel(form, elementId, ''); //CLEAR
			
		}
		
	}
	
	//SEND FAIL BACK TO FUNCTION
	return fail;
	
}

//VALIDATES SELECTS FIELDS
function checkSelects(form, fail) {
	
	var selects  = form.getElementsByTagName('select'); //GET SELECTS
	var thisFail = 0;
	
	for(var b=0; b<selects.length; b++) {
		
		var elementId=selects[b].getAttribute('id'); //DEFINE ELEMENT ID
		
		if(selects[b].className.indexOf('req') > -1 && (selects[b].value == '0' || selects[b].value == '')) { //IS FIELD MANDATORY AND NOT COMPLETED
			
			fail++; //INCREMENT FAIL VAL
			thisFail++;
			
		}
		
	}
	
	if(thisFail > 0) { 
		
		highlightLabel(form, elementId, 'error'); //ERROR
	
	}else{
	
		highlightLabel(form, elementId, ''); //CLEAR
		
	}
	
	return fail; //SEND FAIL BACK TO FUNCTION
}

function formValidator() {

	if(!document.getElementsByTagName('form')) return false;
	
	var forms = document.getElementsByTagName('form');
	
	for(var i=0; i<forms.length; i++) {
		
		if(forms[i].className.indexOf(validateForm) > -1) { //CHECK IF FORM NEEDS TO BE VALIDATED
		
			forms[i].onsubmit = function() { //FORM SUBMITTED
			
				var fail = 0; //SET FAIL STATUS
				
				//ASSIGN CURRENT FAIL VAL TO CHECKING FUNCTIONS
				fail += checkInputs(this, fail);
				fail += checkTextArea(this, fail);
				fail += checkSelects(this, fail);
				
				if(fail > 0) {
				
					alert(formMessage);
					return false;
					
				}
				
				var isEmail = lookForEmail(this);
				
				if(isEmail == false) {
				
					return false;
				
				}
				
				
				return true;
			
			}
		
		}
		
	}

}


//Quantity up and down

function qtydown(form, qtyBox) {
	
	if(qtyBox=='qty') {
		form.qty.value--;
		if(form.qty.value<=0) { form.qty.value=1; }
	}else{
		form.sampleQty.value--;
		if(form.sampleQty.value<=0) { form.sampleQty.value=1; }
	}

}

	
function qtyup(form, qtyBox) {
	
	if(qtyBox=='qty') {
		form.qty.value++;
	}else{
		form.sampleQty.value++;
	}
	
	
}


function initialiseColourSelection() {
	
	// GET PARENT DIV
	var div = document.getElementById('colours')
	// GET CHILD NODES OF ABOVE DIV
	var divs = div.getElementsByTagName("input");
	
	// LOOP THROUGH CHILD NODES AND APPLY WHITE BORDER TO ALL
	for(i=0; i<divs.length; i++) {
		
		var thisDiv = divs[i].getAttribute("id");
		document.getElementById(thisDiv).style.display='none';
		
	}
	
}



function colourSelected(text) {
	
	if(text) {
		document.getElementById("colourName").innerHTML = text;
	}else{
		document.getElementById("colourName").innerHTML = "";
	}
	
}


function selectColour(pid) {
	
	// GET PARENT DIV
	var div = document.getElementById('colours')
	// GET CHILD NODES OF ABOVE DIV
	var divs = div.getElementsByTagName("img");
	
	// LOOP THROUGH CHILD NODES AND APPLY WHITE BORDER TO ALL
	for(i=0; i<divs.length; i++) {
		
		var thisDiv = divs[i].getAttribute("id");
		document.getElementById(thisDiv).style.borderColor = "#FFFFFF";
		
	}
	
	
	ips=document.getElementsByTagName('input');
	
	for (i=0;i<ips.length;i++){
		if (ips[i].type=='radio'&&ips[i].value==pid){
			ips[i].checked=true;
		}
	}
	
	// SET SELECTED THUMBNAIL BORDER COLOUR TO RED
	document.getElementById(pid).style.borderColor = "#aa1324";
	
	// UPDATE THE HIDDEN FIELD 
	
	return false;
	
}



function copyAddress(){
	
	if(document.getElementById("sameAddress").checked==true) {
		
		document.getElementById("title").selectedIndex=document.getElementById("bill_title").selectedIndex;
		document.getElementById("firstname").value=document.getElementById("bill_firstname").value;
		document.getElementById("surname").value=document.getElementById("bill_surname").value;
		document.getElementById("address1").value=document.getElementById("bill_address1").value;
		document.getElementById("address2").value=document.getElementById("bill_address2").value;
		document.getElementById("address3").value=document.getElementById("bill_address3").value;
		document.getElementById("town").value=document.getElementById("bill_town").value;
		document.getElementById("county").value=document.getElementById("bill_county").value;
		document.getElementById("postcode").value=document.getElementById("bill_postcode").value;
		
	}else{
		
		document.getElementById("title").selectedIndex=0;
		document.getElementById("firstname").value="";
		document.getElementById("surname").value="";
		document.getElementById("address1").value="";
		document.getElementById("address2").value="";
		document.getElementById("address3").value="";
		document.getElementById("town").value="";
		document.getElementById("county").value="";
		document.getElementById("postcode").value="";
		
	}
	
}
