/* EB front end javascript */

function copyShippingAddress() {	
	
	var f = document.chk_frm;
			
	// if the same delivery tickbox has been checked
	if (f.use_billaddress.checked) {			
		f.sc_delfname.value					= f.sc_fname.value;
		f.sc_deladdress1.value			    = f.sc_address1.value;
		f.sc_deladdress2.value				= f.sc_address2.value;
		f.sc_deltown.value				    = f.sc_town.value;
		f.sc_delcounty.value				= f.sc_county.value;
		f.sc_delpostcode.value				= f.sc_postcode.value;
		f.sc_deltelephone.value				= f.sc_telephone.value;
		f.sc_delcountry.selectedIndex		= f.sc_country.selectedIndex;
		setListBox('sc_country','sc_delcountry');
		
		pp_calc();
		f.del_chk.value = 'y';
	}
	else {
		f.sc_delfname.value = '';				
		f.sc_deladdress1.value = '';
		f.sc_deladdress2.value = '';
		f.sc_deltown.value = '';
		f.sc_delcounty.value = '';
		f.sc_delpostcode.value = '';
		f.sc_deltelephone.value	= '';
		f.sc_delcountry.selectedIndex = 0;
		
		f.del_chk.value = 'n';
	}
}	

function setListBox(sourceList,targetList) {
			
	/* Set some variables and eval them so that they can be referenced as objects */
	var strSource = eval('document.chk_frm.' + sourceList)
	var strTarget = eval('document.chk_frm.' + targetList)									
	var tmpStr		= strSource[strSource.selectedIndex].text;
	
	/* Start looping round the options list, looking for the text that was selected */	
	for (i=0; i< strTarget.length; i++) {											
		/* If the text is equal to what was selected */
		if (tmpStr == strTarget[i].text){			
			/* select it */
			strTarget.selectedIndex = i;
			break;
		}
	}								
}


function FmtCurr( szCurr ) {
	
	szCurr = round(szCurr);
	szCurr = szCurr.toString();
	var nPnt = szCurr.indexOf(".");

	if ( nPnt == -1 ) {
		szCurr = szCurr + ".00"; 
	}
	else {	
		for ( var i = 1; i < 3; i++ ) {
			nPnt++ ;
			
			if ( nPnt > szCurr.length - 1) {
				szCurr = szCurr + "0"; 
			}
		}

		if (nPnt < szCurr.length - 1) {
			szCurr = szCurr.slice(0, nPnt+1); 
		}
	}
	return szCurr;		
}

function round(num, places) {

	places = (!places ? 2 : places);

	return Math.round(num*Math.pow(10,places))/Math.pow(10,places);

}

function calcprice() {
	var qty		= document.getElementById('qty').value;
	var price	= document.getElementById('unitprice').innerHTML;
	document.getElementById('totalprice').innerHTML = FmtCurr((qty * price));
	return true;
}

function addToBasket() {
	getelem('addform').submit();

}

function updateCarriage() {
	var sTmp;
	var sMultiplier;
	for (var i = 0;i < pps.length;i++)	{
		
		var deladdress = document.getElementById('del-chk');
		
		if(deladdress.value == 'y') {
			ctry = document.getElementById('sc-delcountry');
		}
		else{
			ctry = document.getElementById('sc-country');
		}
		
		if(ctry.options[ctry.selectedIndex].value != 'UK Mainland') {
			document.getElementById('post-amt-cell').innerHTML = 'Call!';
			document.getElementById('chkout-summary-grandtot').innerHTML = '&pound;' + Number(document.getElementById('frm-Total').value).toFixed(2);
			break;
		}
				
		if (pps[i][0] == document.getElementById('pp-type').value)	{
		
			sMultiplier = 1;
			sTmp = sMultiplier * pps[i][5];
			if (document.getElementById('frm-Saddle').value == 'y' && document.getElementById('pp-type').value == 18)	{
				sTmp = pps[1][5];
			}
			sTmp = sTmp.toFixed(2);
			//document.getElementById('frm-PPVal').value = sTmp;
			document.getElementById('post-amt-cell').innerHTML = '&pound;' + sTmp;
			//document.getElementById('frm-PreDiscountTotal').value = Number(document.getElementById('frm-PreDiscountTotal').value).toFixed(2);
			//document.getElementById('frm-GrandTotal').value = (Number(document.getElementById('frm-GrandTotal').value) + Number(sTmp)).toFixed(2);
			document.getElementById('chkout-summary-grandtot').innerHTML = '&pound;' + (Number(document.getElementById('frm-Total').value) + Number(sTmp)).toFixed(2);
		}
	}
}

function pp_calc() {
	
	// see if they're using the delivery address or billing address
	
	var deladdress = document.getElementById('del-chk');
	var ord_post = document.getElementById('post-amt-cell');
	var ord_total = document.getElementById('chkout-summary-grandtot');

	//if(deladdress.value == 'y') {
	ctry = document.getElementById('sc-delcountry');
	//}
	//else {
	//	ctry = document.getElementById('sc-country');
	//}
	
	ppType = document.getElementById('pp-type');
	
	if(ctry.options[ctry.selectedIndex].value == 'UK Mainland') {
		pp_amt = 4.95;
		ord_post.innerHTML = '&pound;' + Number(pp_amt).toFixed(2);
		ord_total.innerHTML = '&pound;' + Number(Number(document.chk_frm['frmTotal'].value) + pp_amt).toFixed(2); 
	}
	else {
		if (Number(pp_value(ctry.options[ctry.selectedIndex].value)) == -1) {
			ord_post.innerHTML = 'Call!';
			ord_total.innerHTML = '&pound;' + Number(document.chk_frm['frmTotal'].value).toFixed(2);
			alert('Your delivery address appears to be outside of mainland UK.\n\nThe P & P is calculated at UK mainland postage rates and you will be charged extra.\n\nYou will be emailed with the actual postage cost before your order is processed and you will be asked to confirm this.');	
		}
		else {
			pp_amt = Number(pp_value(ctry.options[ctry.selectedIndex].value)).toFixed(2);
			ord_post.innerHTML = '&pound;' + pp_amt + ' &nbsp;';
			pp_amt = Number(document.chk_frm['frmTotal'].value) + Number(pp_amt);
			ord_total.innerHTML = '&pound;' + Number(pp_amt).toFixed(2); 
		}
	}
}

function pp_value(iMatch) {
	var sTmp;
	var sMultiplier;
	
	for (var i = 0;i < pps.length;i++) {
		if (pps[i][0] == iMatch) {
			if (document.getElementById('frm-Saddle').value == 'y' && document.getElementById('pp-type').value == 18) {
				sTmp = pps[1][5];
			}
			else {
				sTmp = pps[i][5];
			}
			return (sTmp);
		}
	}
	return -1;
}
		
// Checkout functions

// postage

var pp_vars = {

	id:			0,
	match_value:1,
	type_id:	2,
	range_from:	3,
	range_to:	4,
	val_1:		5,
	val_2:		6
}

// Checkout object

function checkout(frm_id) {

	this.frm_id = frm_id;
	this.frm = '';
	this.checkout_type = '';
	this.bill_fields = new Array('sc_fname', 'sc_address1','sc_town','sc_postcode','sc_telephone','sc_email');
	this.bill_descs = new Array('full name', 'first address line', 'town', 'post code', 'telephone number', 'email address');
	this.del_fields = new Array('sc_delfname', 'sc_deladdress1','sc_deltown','sc_delpostcode');
	
	
	
	// initialise the ratil customer's form

	this.init_retail_form = function() {
		this.checkout_type = 'retail';
		this.frm = document.getElementById(this.frm_id);
	};

	// ************************************************************* COMMON functions

	this.check_form = function() {

		if(this.check_text_input()) {
			return true;
		} else{
			return false;
		}
	}

	// checks the text input - address and name values
	this.check_text_input = function() {

		var i;
		for(i = 0; i < this.bill_fields.length; i++) {
			if(trim(this.frm[this.bill_fields[i]].value) == '') {
				return showError(this.frm[this.bill_fields[i]], ('Your ' + this.bill_descs[i] + ' is missing'));
			}
		}

		// check country
		if(this.frm.sc_country.options[this.frm.sc_country.selectedIndex].value == 'x') {
			return showError(this.frm.sc_country, 'Please select a country');
		}
		
		for(i = 0; i < this.del_fields.length; i++) {
			if(trim(this.frm[this.del_fields[i]].value) == '') {
				return showError(this.frm[this.del_fields[i]], ('The ' + this.bill_descs[i] + ' on your delivery address is missing'));
			}
		}

		// check country
		if(this.frm.sc_delcountry.options[this.frm.sc_delcountry.selectedIndex].value == 'x') {
			return showError(this.frm.sc_delcountry, 'Please select a delivery country');
		}
	

		// specific check for a valid email address format
		if(!isEmailFormatCorrect(this.frm.sc_email.value)) {
			return showError(this.frm.sc_email, 'The email address you have entered is not in a valid format');
		}
		
		if(!document.chk_frm.tnc_check.checked){
			return showError(document.chk_frm.tnc_check, 'Please read our Terms & Conditions');
		}
		
		return true;
	};


 // Postage Functions *************************************************************************



	// display a message if delivery is outside the UK

	this.pp_calc = function() {

		var deladdress = document.getElementById('del-chk');
		var ord_post = document.getElementById('post-amt-cell');
		var ord_total = document.getElementById('chkout-summary-grandtot');

		ctry = document.getElementById('sc-delcountry');
		ppType = document.getElementById('pp-type');

		if(ctry.options[ctry.selectedIndex].value == 'UK Mainland') {

			//pp_amt = this.pp_value(ppType.options[ppType.selectedIndex].value);
			pp_amt = 4.95;
			ord_post.innerHTML = '&pound;' + Number(pp_amt).toFixed(2);
			ord_total.innerHTML = '&pound;' + Number(Number(this.frm['frmTotal'].value) + pp_amt).toFixed(2); 

		}

		else {

			if (Number(this.pp_value(ctry.options[ctry.selectedIndex].value)) == -1) {
				ord_post.innerHTML = 'Call!';
				ord_total.innerHTML = '&pound;' + Number(this.frm['frmTotal'].value).toFixed(2);
				alert('Your delivery address appears to be outside of mainland UK.\n\nThe P & P is calculated at UK mainland postage rates and you will be charged extra.\n\nYou will be emailed with the actual postage cost before your order is processed and you will be asked to confirm this.');	
			}
			else {
				pp_amt = Number(this.pp_value(ctry.options[ctry.selectedIndex].value)).toFixed(2);
				ord_post.innerHTML = '&pound;' + pp_amt + ' &nbsp;';
				pp_amt = Number(this.frm['frmTotal'].value) + Number(pp_amt);
				ord_total.innerHTML = '&pound;' + Number(pp_amt).toFixed(2); 
			}
		}
	};

	this.pp_value = function(iMatch)	{
		var sTmp;
		var sMultiplier;

		for (var i = 0;i < pps.length;i++)	{
			if (pps[i][0] == iMatch) {
				
				if (document.getElementById('frm-Saddle').value == 'y' && document.getElementById('pp-type').value == 18)	{
					sTmp = pps[1][5];
				}
				else {
					sTmp = pps[i][5];
				}
				
				return (sTmp);
			}
		}
		return -1;
	};
}

function trim(sVal) {

	while(sVal.charAt(sVal.length-1)==' ')
		sVal=sVal.substring(0,sVal.length-1);

	
	while(sVal.charAt(0)==' ')
		sVal=sVal.substr(1,sVal.length);

	return sVal;
}

// generic error message display

function showError(fld, msg) {
	fld.focus();
	alert(msg);
	return false;
}

// email checker

function isEmailFormatCorrect(strAddr) { 
	var ptn = /^[\w\d._%-]+@[\w\d._%-]+\.[\w\d._%-]{2,4}$/;
	return ptn.test(strAddr);
}

function large_popup() {
	
	var img = document.getElementById('main_img');
	
	// get the image file name
	var img_a = img.src.split("/");
	var img_name = img_a[(img_a.length-1)];
	
	var lrg_img = "lrg_" + img_name;
	
	var mywindow = window.open ("./lrg_img.php?img=" + lrg_img,"lrg_popup","scrollbars=1,width=600,height=700");
	mywindow.moveTo(4,4);

}

function change_mini(mini){
	
	var mini_img = document.getElementById('mini_' + mini);
	var big_img = document.getElementById('main_img');
	
	// get the mini image name
	var mini_img_a = mini_img.src.split("/");
	var mini_img_name = mini_img_a[(mini_img_a.length-1)];
	
	// remove the mini_ bit
	var big2b_name = mini_img_name.substring(5);
	
	// reset the main image src
	big_img.src = "prod_images/" + big2b_name;
	
}



function getelem(elem) { return document.getElementById(elem); }
function getDefaultText(id) { return getelem(('def-' + id)).innerHTML };
