

////////////////////////////// cookies

// tests for cookies enabled
var cookieEnabled = false;
if (typeof document.cookie == "string") {
	if (document.cookie.length == 0) {
		setCookie("rockctest", "CA14543957437589758584754789574985784758");
		var rockctestRead = getCookie("rockctest");
		if (rockctestRead == "CA14543957437589758584754789574985784758") {
			cookieEnabled = true;
		}
		else {
			cookieEnabled = false;
		}
	}
	else {
		setCookie("rockctestRead", "CA14543957437589758584754789574985784758");
		cookieEnabled = true;
	}
}




function getCookieVal(offset) {
	var endstr = document.cookie.indexOf(";", offset);
	if (endstr == -1) {
		endstr = document.cookie.length;
	}
	return unescape(document.cookie.substring(offset, endstr));
}




function getCookie(name) {
	var arg = name + "=";
	var alen = arg.length;
	var clen = document.cookie.length;
	var i = 0;
	while (i < clen) {
		var j = i + alen;
		if (document.cookie.substring(i, j) == arg) {
			return getCookieVal(j);
		}
		i = document.cookie.indexOf(" ", i) + 1;
		if (i == 0) break;
	}
	return "";
}



function setCookie(name, value) {
	var exp = new Date(); // to fix bug with Safari
	exp.setTime(exp.getTime() + 86400000); // longer : 995000000
	var expires = true;
	var path = false;
	var domain = false;
	var secure = false;

	document.cookie = name + "=" + escape (value) +
		((expires) ? "; expires=" + exp.toGMTString() : "") +
		((path) ? "; path=" + path : "") +
		((domain) ? "; domain=" + domain : "") +
		((secure) ? "; secure" : "");
}


function deleteCookie(name,path,domain) {
	if (getCookie(name)) {
		document.cookie = name + "=" +
			((path) ? "; path=" + path : "") +
			((domain) ? "; domain=" + domain : "") +
			"; expires=Thu, 01-Jan-70 00:00:01 GMT";

	}
}


function cookiesNotOnMessage() {
	alert("You need to have cookies enabled to use our shopping system");
}




//////////////////// other functions




function isNumeric(elem){
	var numericExpression = /^[0-9\.]+$/;
	if (elem == "") {
		return true;
	}
	else if(elem.match(numericExpression)){
		return true;
	}else{
		return false;
	}
}




function switchBreaksEtcBack(sometext) {
	var str = new String(sometext);
	str = str.replace(/SMBREAK/g, "<br />")
	str = str.replace(/SMBOPEN/g, "<b>")
	str = str.replace(/SMBCLOSE/g, "</b>")
	str = str.replace(/SMEMOPEN/g, "<em>")
	str = str.replace(/SMEMCLOSE/g, "</em>")
	str = str.replace(/plusSign/g, "+")
	str = str.replace(/equalsSign/g, "=")
	str = str.replace(/amperSand/g, "&amp;")
	str = str.replace(/newLineSi/g, "<br />") /// ?????????????????????
	str = str.replace(/ACCENT001/g, "é")
	str = str.replace(/poundSign/g, "&pound;")
	str = str.replace(/halfSign/g, "&#189;")
	str = str.replace(/quoteSi/g, "\"")
	str = str.replace(/ODDCHAR/g, "?")
	return str;
}


function knockOffSomeDecPlaces(expr, decplaces) {	
	var negativeIn = "no";
	if ( expr < 0 ) {
		negativeIn = "yes";
		expr *= -1;
	}
	var str = "" + Math.round (eval(expr) * Math.pow(10,decplaces));
	while (str.length <= decplaces) { str = "0" + str; }
	var decpoint = str.length - decplaces
	var beforeSwitchBack = str.substring(0,decpoint) + "." + str.substring(decpoint,str.length);
	if (negativeIn == "yes" && beforeSwitchBack != 0) {
		beforeSwitchBack *= -1;
	}
	return beforeSwitchBack;
}	



function convertToLowerCaseAndRemoveSpaces(theText) {
	var str = new String(theText);
	str = str.toLowerCase();
	str = str.replace(/ /g, "-")
	return str;
}








function replaceSpChars(str) {
	var re = /=/gi
	str = str.replace(re,"equalsSign")
	re = /&/gi
	str = str.replace(re,"amperSand")
	re = /\+/gi
	str = str.replace(re,"plusSign")
	re = /\n/gi
	str = str.replace(re,"newLineSi")
	return str;
}





function switchVideoForIpadPhone() {
	if (navigator.userAgent && ( navigator.userAgent.indexOf("iPad") > -1 || navigator.userAgent.indexOf("iPhone") > -1 )) {
		var htmlToUse = '<img id="toppic" src="images/topofpage/ipadphone.jpg" alt="" />';
		document.getElementById("video").innerHTML = htmlToUse;
	}
}




function checkEmail() {
	var myRegExp = / /gi
	str = new String(document.forms[0].myemail.value)
	str = str.replace(myRegExp,"")
	var myRegExp2 = /\./;
	var myRegExp3 = /\@/;
	var myRegExp4 = /\,/;
	var myRegExp5 = /www\./;

	if ( str.search(myRegExp4) != -1 ) {
		alert("Your email address appears to be wrong - you seem to have typed a comma instead of a full stop. Please correct it and click 'Submit Form' again.");
		return "bad";
	}
	else if ( str.search(myRegExp2) == -1 || str.search(myRegExp3) == -1) {
		alert("Your email address appears to be wrong. Please correct it and click 'Submit Form' again.");
		return "bad";
	}
	else if ( str.search(myRegExp5) != -1 ) {
		alert("Your email address appears to be wrong - it should not contain www. Please correct it and click 'Submit Form' again.");
		return "bad";
	}
	else {
		return "good";
	}
}
















//////////////// shopping basket stuff



function wishlistSingleYarn(tF) {
	alert("Sorry - this facility is not live yet");

}


function buySingleYarn(tF) {
	if (cookieEnabled == false) {
		cookiesNotOnMessage();
	}
	else {
		var continueOn = "yes";
		if (tF.quantityreqd.value == "") {
			continueOn = "no"; alert("Please enter a quantity eg. 1");
		}
		else if (isNaN(parseInt(tF.quantityreqd.value))) {
			continueOn = "no"; alert("Please enter quantity using numbers eg. 1");
		}
		if (continueOn == "yes") {
			var noReqd = parseInt(tF.quantityreqd.value);
			addAnItem('yarn', tF.yarnref.value, noReqd);
			document.getElementById("successaddedyarn").style.visibility =  "visible";
			setTimeout("hideSuccessYarns()", 1200);
			recalcBasketDiv();
		}
	}
}

function hideSuccessYarns() {
	document.getElementById("successaddedyarn").style.visibility =  "hidden";
}




function buySingleBookMag(tF) {
	if (cookieEnabled == false) {
		cookiesNotOnMessage();
	}
	else {
		var continueOn = "yes";
		if (tF.quantityreqd.value == "") {
			continueOn = "no"; alert("Please enter a quantity eg. 1");
		}
		else if (isNaN(parseInt(tF.quantityreqd.value))) {
			continueOn = "no"; alert("Please enter quantity using numbers eg. 1");
		}
		if (continueOn == "yes") {
			var noReqd = parseInt(tF.quantityreqd.value);
			if (tF.catref.value != "") {
				addAnItem('catalogue', tF.catref.value, noReqd);
			}
			else if (tF.bookref.value != "") {
				addAnItem('book', tF.bookref.value, noReqd);
			}
			else if (tF.magref.value != "") {
				addAnItem('magazine', tF.magref.value, noReqd);
			}
			document.getElementById("successaddedyarn").style.visibility =  "visible";
			setTimeout("hideSuccessYarns()", 1200);
			recalcBasketDiv();
		}
	}
}


function hideSuccessPatternYarn() {
	if (document.styleSheets[0].rules) { // IE & safari
		document.styleSheets[0].rules[10].style.visibility =  'hidden';
	}
	else { // MOZILLA
		document.styleSheets[0].cssRules[10].style.visibility =  'hidden';
	}
}

function addToBasketMulti(tF, patternRef, catIdNo) {
	if (cookieEnabled == false) {
		cookiesNotOnMessage();
	}
	else {
		var fieldName = "";
		var fieldName2 = "";
		var supplyPatternToo = "no";
		fieldName = 'pNo_' + patternRef + '_suppPattern'; 
		for (i=0;i<tF.elements[fieldName].length;i++){
			if (tF.elements[fieldName][i].checked==true) {
				supplyPatternToo = tF.elements[fieldName][i].value;
			}
		}
		if (supplyPatternToo == "yes") {
			addAnItem('catalogue', catIdNo, 1)
		}
		for (var i = 0; i < 15; i++) { // for yarns
			var yarnrefNo = i+1;			
			fieldName = patternRef + '_yarn' + yarnrefNo + 'ref'; 
			if (tF.elements[fieldName].value != "") {
				fieldName2  = 'pNo_' + patternRef + '_yarn' + i + 'quantity';
		
				if (parseInt(tF.elements[fieldName2].value) > 0) {
					addAnItem('yarn',tF.elements[fieldName].value,parseInt(tF.elements[fieldName2].value))
				}
			}		
		}
		// another syntax sample
		//	sizeArrayIndexToShow = document.forms[0].elements[fieldName].selectedIndex;

		if (document.styleSheets[0].rules) { // IE & safari
			document.styleSheets[0].rules[10].style.visibility =  'visible';
		}
		else { // MOZILLA
			document.styleSheets[0].cssRules[10].style.visibility =  'visible';
		}
		setTimeout("hideSuccessPatternYarn()", 1200);
		recalcBasketDiv();
	}
}




function addAnItem(typeOfItem, itemRef, quantReqd) { // eg. 'catalogue', catIdNo, 1) // catalogue, yarn, bookmag




	// need to do: nb if a catalogue check not already ordered



	var productDetails = "";
	productDetails = typeOfItem + "__" + itemRef + "__" + quantReqd;
	addItemToBasketArray(productDetails);
	 
}





function addItemToBasketArray(itemDetails) {
	var basketArray = getCookie("cyBasketItems");
	var eitmStr = "EITM";
	if (basketArray == "") { //no items yet
		eitmStr = ""; // don't want on first item
	}
	basketArrayStr = new String(basketArray);
	basketArrayStr += eitmStr;
	basketArrayStr += itemDetails;
	setCookie("cyBasketItems", basketArrayStr);
}





function recalcBasketDiv() { 
	var arrayOfItems = new Array();
	var newHTML2 = "";
	var basketArrayRaw = getCookie("cyBasketItems");


	if (basketArrayRaw == "") { //no items yet
	}
	else { // there are items
		var str = new String(basketArrayRaw);
		var re = /EITM/;
		if ( str.indexOf("EITM") == -1) {
			arrayOfItems[0] = str;
		}
		else {
			arrayOfItems = str.split(re);
		}		
		var basketTotal = 0;
		var itemsInBasketSoFar = 0;

		for (var i = 0; i < arrayOfItems.length; i++) {
			var str = new String(arrayOfItems[i])
			var re = /__/
			var arrayOfItemFields = str.split(re)
			basketTotal += getTotalForItem(arrayOfItemFields[0], arrayOfItemFields[1], arrayOfItemFields[2]);
			itemsInBasketSoFar += parseInt(arrayOfItemFields[2]);
		}
	
		basketTotal = knockOffSomeDecPlaces(basketTotal, 2);
		var basketHTML = "";
		basketHTML += '<a class="baskettotal" href="checkout_basket.html">';
		basketHTML += itemsInBasketSoFar;
		if (itemsInBasketSoFar == 1) {
			basketHTML += ' item';
		}
		else {
			basketHTML += ' items';
		}
		basketHTML += '&nbsp;&pound;' + basketTotal + '</a>';
		document.getElementById("topbasketitems").innerHTML = basketHTML;
		document.getElementById("rightbasketitems").innerHTML = basketHTML;
	}
}








function getTotalForItem(typeOfItem, itemRef, quantReqd) { // eg. 'catalogue', catIdNo, 1) // catalogue, yarn
	if (typeOfItem == "catalogue") {
		for (var i = 0; i < arC.length; i++) {
			if (arC[i][0] == itemRef) {
				var tempT = parseFloat(arC[i][3]) * quantReqd;
					return tempT;
			}
		}
	}
	else if (typeOfItem == "yarn") {
		for (var i = 0; i < arY.length; i++) {
			if (arY[i][1] == itemRef) {
				var tempT = parseFloat(arY[i][2]) * quantReqd;
					return tempT;
			}
		}
	}
	else if (typeOfItem == "book") {
		for (var i = 0; i < arB.length; i++) {
			if (arB[i][0] == itemRef) {
				var tempT = parseFloat(arB[i][3]) * quantReqd;
					return tempT;
			}
		}
	}
	else if (typeOfItem == "magazine") {
		for (var i = 0; i < arM.length; i++) {
			if (arM[i][0] == itemRef) {
				var tempT = parseFloat(arM[i][3]) * quantReqd;
					return tempT;
			}
		}
	}
	else {
		return 0;
	}
}



















