/**
 *  Most of the scripts below were found at
 *  www.alistapart.com and related sites.  They are used
 *  here because they are web standards compliant.  These
 *  scripts are all free to reuse and are not licensed as
 *  part of the software core.
 *
 *  All onload() events go at the bottom of this file.
 */

/**
 *  Function DisableSubmit() used to disable submit buttons
 *  after then have been depressed.  This is implemented to
 *  stop multiple click submissions of forms.
 */

var submitted = false;
var oldStyle = "";

function DisableSubmit(formname) {

     if(submitted == true) { return; }
     document.forms[formname].submit();
     document.forms[formname].SUBMIT.value = 'Please Wait...';
     document.forms[formname].SUBMIT.disabled = true;
     submitted = true;

}

/**
 *  Function externalLinks() used to provide a standards
 *  compliant way of producing a pop-up link to another
 *  page.
 */

function externalLinks() {

     if (!document.getElementsByTagName) return;
     var anchors = document.getElementsByTagName("a");
     for (var i=0; i<anchors.length; i++) {
     var anchor = anchors[i];
     if (anchor.getAttribute("href") &&
     anchor.getAttribute("rel") == "external")
     anchor.target = "_blank";
     }

}

/**
 *  Function to add multiple onload() events to a page. 
 *  Authored by Scott Andrew.  Visit www.scottandrew.com
 *  for info.
 */

function addWindowEvent(elm, evType, fn, useCapture) {

     if (elm.addEventListener) {
     elm.addEventListener(evType, fn, useCapture);
     return true;
     } else if (elm.attachEvent) {
     var r = elm.attachEvent('on' + evType, fn);
     return r;
     } else {
     elm['on' + evType] = fn;
     }

}

/**
 *	Whatever:hover - V1.42.060206 - hover & active
 *	------------------------------------------------------------
 *	(c) 2005 - Peter Nederlof
 *	Peterned - http://www.xs4all.nl/~peterned/
 *	License  - http://creativecommons.org/licenses/LGPL/2.1/
 *
 *	Whatever:hover is free software; you can redistribute it and/or
 *	modify it under the terms of the GNU Lesser General Public
 *	License as published by the Free Software Foundation; either
 *	version 2.1 of the License, or (at your option) any later version.
 *
 *	Whatever:hover is distributed in the hope that it will be useful,
 *	but WITHOUT ANY WARRANTY; without even the implied warranty of
 *	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 *	Lesser General Public License for more details.
 *
 *	Credits and thanks to:
 *	Arnoud Berendsen, Martin Reurings, Robert Hanson
 *
 *	howto: body { behavior:url("csshover.htc"); }
 *	------------------------------------------------------------
 */

var csshoverReg = /(^|\s)(([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active)/i,

currentSheet, doc = window.document, hoverEvents = [], activators = {
onhover:{on:'onmouseover', off:'onmouseout'},
onactive:{on:'onmousedown', off:'onmouseup'}
}

function parseStylesheets() {

     if(!/MSIE (5|6)/.test(navigator.userAgent)) return;
     window.attachEvent('onunload', unhookHoverEvents);
     var sheets = doc.styleSheets, l = sheets.length;
     for(var i=0; i<l; i++) 
     parseStylesheet(sheets[i]);

}

function parseStylesheet(sheet) {

     if(sheet.imports) {
     try {
     var imports = sheet.imports, l = imports.length;
     for(var i=0; i<l; i++) parseStylesheet(sheet.imports[i]);
     } catch(securityException){}
     }
     try {
     var rules = (currentSheet = sheet).rules, l = rules.length;
     for(var j=0; j<l; j++) parseCSSRule(rules[j]);
     } catch(securityException){}

}

function parseCSSRule(rule) {

     var select = rule.selectorText, style = rule.style.cssText;
     if(!csshoverReg.test(select) || !style) return;
     var pseudo = select.replace(/[^:]+:([a-z-]+).*/i, 'on$1');
     var newSelect = select.replace(/(\.([a-z0-9_-]+):[a-z]+)|(:[a-z]+)/gi, '.$2' + pseudo);
     var className = (/\.([a-z0-9_-]*on(hover|active))/i).exec(newSelect)[1];
     var affected = select.replace(/:(hover|active).*$/, '');
     var elements = getElementsBySelect(affected);
     if(elements.length == 0) return;
     currentSheet.addRule(newSelect, style);
     for(var i=0; i<elements.length; i++)
     new HoverElement(elements[i], className, activators[pseudo]);

}

function HoverElement(node, className, events) {

     if(!node.hovers) node.hovers = {};
     if(node.hovers[className]) return;
     node.hovers[className] = true;
     hookHoverEvent(node, events.on, function() { node.className += ' ' + className; });
     hookHoverEvent(node, events.off, function() { node.className = node.className.replace(new RegExp('\\s+'+className, 'g'),''); });

}

function hookHoverEvent(node, type, handler) {

     node.attachEvent(type, handler);
     hoverEvents[hoverEvents.length] = { 
     node:node, type:type, handler:handler 
     };

}

function unhookHoverEvents() {

     for(var e,i=0; i<hoverEvents.length; i++) {
     e = hoverEvents[i]; 
     e.node.detachEvent(e.type, e.handler);
     }
}

function getElementsBySelect(rule) {

     var parts, nodes = [doc];
     parts = rule.split(' ');
     for(var i=0; i<parts.length; i++) {
     nodes = getSelectedNodes(parts[i], nodes);
     }
     return nodes;

}

function getSelectedNodes(select, elements) {

     var result, node, nodes = [];
     var identify = (/\#([a-z0-9_-]+)/i).exec(select);
     if(identify) {
     var element = doc.getElementById(identify[1]);
     return element? [element]:nodes;
     }
     var classname = (/\.([a-z0-9_-]+)/i).exec(select);
     var tagName = select.replace(/(\.|\#|\:)[a-z0-9_-]+/i, '');
     var classReg = classname? new RegExp('\\b' + classname[1] + '\\b'):false;
     for(var i=0; i<elements.length; i++) {
     result = tagName? elements[i].all.tags(tagName):elements[i].all; 
     for(var j=0; j<result.length; j++) {
     node = result[j];
     if(classReg && !classReg.test(node.className)) continue;
     nodes[nodes.length] = node;
     }
     }	
     return nodes;

}

/**
 *  Function to show or hide an id within an XHTML page.
 */

function idShowHide(obj) {

     var el = document.getElementById(obj);
     if ( el.style.display != "none" ) {
     el.style.display = 'none';
     } else {
     el.style.display = 'block';
     }

}

/**
 *  WYSIWYG Editors.
 */

function wysiwygLoad(id) {

     var pid = id + '--wysiwyglink';
     var el  = document.getElementById(pid);

     if ( el.style.display != "none" ) {
     el.style.display = 'none';
     $(id).mooEditable({buttons: 'bold,italic,underline,strikethrough,|,insertunorderedlist,insertorderedlist,indent,outdent,|,undo,redo,|,toggleview'});
     }

}

var getElementsByClassName = function (className, tag, elm){
	if (document.getElementsByClassName) {
		getElementsByClassName = function (className, tag, elm) {
			elm = elm || document;
			var elements = elm.getElementsByClassName(className),
				nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
				returnElements = [],
				current;
			for(var i=0, il=elements.length; i<il; i+=1){
				current = elements[i];
				if(!nodeName || nodeName.test(current.nodeName)) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	else if (document.evaluate) {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = "",
				xhtmlNamespace = "http://www.w3.org/1999/xhtml",
				namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
				returnElements = [],
				elements,
				node;
			for(var j=0, jl=classes.length; j<jl; j+=1){
				classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
			}
			try	{
				elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
			}
			catch (e) {
				elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
			}
			while ((node = elements.iterateNext())) {
				returnElements.push(node);
			}
			return returnElements;
		};
	}
	else {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = [],
				elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
				current,
				returnElements = [],
				match;
			for(var k=0, kl=classes.length; k<kl; k+=1){
				classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
			}
			for(var l=0, ll=elements.length; l<ll; l+=1){
				current = elements[l];
				match = false;
				for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
					match = classesToCheck[m].test(current.className);
					if (!match) {
						break;
					}
				}
				if (match) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	return getElementsByClassName(className, tag, elm);
};

function switchOverlay() {
	var iStyle = document.getElementById("style").options[document.getElementById("style").selectedIndex].value;
	
	var newOverlaySrc = "";
	if(document.getElementById("ecom--prodaddtocart--custom--prodall") != null) {
		var customCheck = document.getElementById("ecom--prodaddtocart--custom--prodall").value;
	} else {
		var customCheck = "NOT-CUSTOM";	
	}
	
	if(oldStyle != iStyle) {
		switchColours(iStyle);
	}

	var iColour = document.getElementById("tshirt_c").options[document.getElementById("tshirt_c").selectedIndex].value;
	
	switch(iStyle) {
		case "mens_plain_tees":
			newOverlaySrc = "/skins/Default/media/prod_overlays/mensplaintees_" + iColour + "_m.jpg";
			if(customCheck != "custom") {
				document.getElementById("price_disp").innerHTML = "&pound;9.95";
			}
			document.getElementById("overlay").style.paddingTop = "0px";
			break;
		case "mens_ranger_tees":
			newOverlaySrc = "/skins/Default/media/prod_overlays/mensrangertees_" + iColour + "_m.jpg";
			if(customCheck != "custom") {
				document.getElementById("price_disp").innerHTML = "&pound;10.95";
			}
			document.getElementById("overlay").style.paddingTop = "0px";
			break;
		case "mens_baseball_tees":
			newOverlaySrc = "/skins/Default/media/prod_overlays/mensbaseballtees_" + iColour + "_m.jpg";
			if(customCheck != "custom") {
				document.getElementById("price_disp").innerHTML = "&pound;10.95";
			}
			document.getElementById("overlay").style.paddingTop = "0px";
			break;
		case "mens_hoodies":
			newOverlaySrc = "/skins/Default/media/prod_overlays/menshoodies_" + iColour + "_m.jpg";
			if(customCheck != "custom") {
				document.getElementById("price_disp").innerHTML = "&pound;19.95";
			}
			document.getElementById("overlay").style.paddingTop = "50px";
			break;
		case "ladies_fit_tees":
			newOverlaySrc = "/skins/Default/media/prod_overlays/ladiesfittees_" + iColour + "_m.jpg";
			if(customCheck != "custom") {
				document.getElementById("price_disp").innerHTML = "&pound;9.95";
			}
			document.getElementById("overlay").style.paddingTop = "15px";
			break;
	}
	
	document.getElementById("shirt").innerHTML = "<img id=\"main_prod_img\" src=\"" + newOverlaySrc + "\" alt=\"\" />";
	
	switchSizes(iStyle);
	
	splitName = document.getElementById("main_prod_img").src.split("/");
	imgSrc = splitName[splitName.length - 1];
	
	iColour = document.getElementById("tshirt_c").options[document.getElementById("tshirt_c").selectedIndex].value;
	
	if(iColour == "black" || iColour == "royal" || iColour == "chocolate" || iColour == "navy" || iColour == "black-white" || iColour == "navy-white" || iColour == "olive" || iColour == "royal-white" || iColour == "red") {
		document.getElementById("overlay").innerHTML = "<p><img id=\"main_prod_img\" src=\"media/ecom/prodlg_white/" + imgSrc + "\" alt=\"\" /></p>";
	} else {
		document.getElementById("overlay").innerHTML = "<p><img id=\"main_prod_img\" src=\"media/ecom/prodlg/" + imgSrc + "\" alt=\"\" /></p>";	
	}
	
	if(iStyle == "mens_hoodies") {
		document.getElementById("main_prod_img").width = "120";
	}
	
	oldStyle = iStyle;
}

function switchSizes(style) {
	var tempSizeName = document.getElementById("size").name;
	
	if(style == "ladies_fit_tees") {
		
		document.getElementById("size_div").innerHTML = '<select name="' + tempSizeName + '" id="size"><option value=""></option><option value="Size_XS">XS - Extra Small</option><option value="size_S">S - Small</option><option value="size_M">M - Medium</option><option value="size_L">L - Large</option><option value="size_XL">XL - Extra Large</option></select>';	
	} else {
		document.getElementById("size_div").innerHTML = '<select name="' + tempSizeName + '" id="size"><option value=""></option><option value="size_S">S - Small</option><option value="size_M">M - Medium</option><option value="size_L">L - Large</option><option value="size_XL">XL - Extra Large</option><option value="size_XXL">XXL - Extra Extra Large</option></select>';		
	}
}

function capitaliseFirstLetter(string) {
    return string.charAt(0).toUpperCase() + string.slice(1);
}


function switchColours(type) {
	if(document.getElementById("design_colour").value != "") {
		disallowedColours = document.getElementById("design_colour").value.split(",");
	} else {
		disallowedColours = new Array("H", "T");	
	}
	
	var isAllowed = true;
	colourSelectCode = "";
	
	switch(type) {
		case "mens_plain_tees":
			var colourSelectArray = new Array("royal", "white", "khaki", "black", "yellow", "orange", "red", "steel", "chocolate", "olive", "navy", "sky-blue", "heather-grey");
			
			for(x = 0; x < colourSelectArray.length; x++) {
				for(y = 0; y < disallowedColours.length; y++) {
					if(disallowedColours[y] == colourSelectArray[x]) {
						isAllowed = false;
					}
				}
				if(isAllowed == true) {
					colourSelectCode = colourSelectCode + "<option value=\"" + colourSelectArray[x] + "\">" + capitaliseFirstLetter(colourSelectArray[x]).replace("-", " ") + "</option>";	
				}
				isAllowed = true;
			}
			
			var tempSelectName = document.getElementById("tshirt_c").name;
			
			document.getElementById("colour_div").innerHTML = "<select name=\"" + tempSelectName + "\" id=\"tshirt_c\" onchange=\"javascript:switchOverlay()\"" +colourSelectCode + "</select>";
			
			document.getElementById("shirt").innerHTML = "<img src=\"/skins/Default/media/prod_overlays/mensplaintees_white_m.jpg\" alt=\"Changing The Clocks\" />";
			break;
		case "mens_ranger_tees":
			var colourSelectArray = new Array("khaki-graphite", "black-white", "navy-white", "royal-white", "white-black", "white-red", "red-white");
			
			for(x = 0; x < colourSelectArray.length; x++) {
				for(y = 0; y < disallowedColours.length; y++) {
					if(disallowedColours[y] == colourSelectArray[x]) {
						isAllowed = false;
					}
				}
				if(isAllowed == true) {
					colourSelectCode = colourSelectCode + "<option value=\"" + colourSelectArray[x] + "\">" + capitaliseFirstLetter(colourSelectArray[x]).replace("-", " / ") + "</option>";	
				}
				isAllowed = true;
			}
			
			var tempSelectName = document.getElementById("tshirt_c").name;
			
			document.getElementById("colour_div").innerHTML = "<select name=\"" + tempSelectName + "\" id=\"tshirt_c\" onchange=\"javascript:switchOverlay()\"" +colourSelectCode + "</select>";
			
			document.getElementById("shirt").innerHTML = "<img src=\"/skins/Default/media/prod_overlays/mensrangertees_white-black_m.jpg\" alt=\"Changing The Clocks\" />";
			break;
		case "mens_baseball_tees":
			var colourSelectArray = new Array("steel-blue", "orange-graphite", "white-royal", "white-black", "white-red", "yellow-green");
			
			for(x = 0; x < colourSelectArray.length; x++) {
				for(y = 0; y < disallowedColours.length; y++) {
					if(disallowedColours[y] == colourSelectArray[x]) {
						isAllowed = false;
					}
				}
				if(isAllowed == true) {
					colourSelectCode = colourSelectCode + "<option value=\"" + colourSelectArray[x] + "\">" + capitaliseFirstLetter(colourSelectArray[x]).replace("-", " / ") + "</option>";	
				}
				isAllowed = true;
			}
			
			var tempSelectName = document.getElementById("tshirt_c").name;
			
			document.getElementById("colour_div").innerHTML = "<select name=\"" + tempSelectName + "\" id=\"tshirt_c\" onchange=\"javascript:switchOverlay()\"" +colourSelectCode + "</select>";
			document.getElementById("shirt").innerHTML = "<img src=\"/skins/Default/media/prod_overlays/mensbaseballtees_white-black_m.jpg\" alt=\"Changing The Clocks\" />";
			break;
		case "mens_hoodies":
			var colourSelectArray = new Array("zinc-graphite", "white-black");
			
			for(x = 0; x < colourSelectArray.length; x++) {
				for(y = 0; y < disallowedColours.length; y++) {
					if(disallowedColours[y] == colourSelectArray[x]) {
						isAllowed = false;
					}
				}
				if(isAllowed == true) {
					colourSelectCode = colourSelectCode + "<option value=\"" + colourSelectArray[x] + "\">" + capitaliseFirstLetter(colourSelectArray[x]).replace("-", " / ") + "</option>";	
				}
				isAllowed = true;
			}
			
			var tempSelectName = document.getElementById("tshirt_c").name;
			
			document.getElementById("colour_div").innerHTML = "<select name=\"" + tempSelectName + "\" id=\"tshirt_c\" onchange=\"javascript:switchOverlay()\"" +colourSelectCode + "</select>";
			document.getElementById("shirt").innerHTML = "<img src=\"/skins/Default/media/prod_overlays/menshoodies_white-black_m.jpg\" alt=\"Changing The Clocks\" />";
			break;
		case "ladies_fit_tees":
			var colourSelectArray = new Array("sky blue", "brick red", "fuscha", "gold", "light pink", "black", "white");
			
			for(x = 0; x < colourSelectArray.length; x++) {
				if(disallowedColours.length >= 1) {
					for(y = 0; y < disallowedColours.length; y++) {
						if(disallowedColours[y] == colourSelectArray[x]) {
							isAllowed = false;
						}
					}
				}
				
				if(isAllowed == true) {
					colourSelectCode = colourSelectCode + "<option value=\"" + colourSelectArray[x].replace(" ", "-") + "\">" + capitaliseFirstLetter(colourSelectArray[x]) + "</option>";	
				}
				isAllowed = true;
			}
			
			var tempSelectName = document.getElementById("tshirt_c").name;
			
			document.getElementById("colour_div").innerHTML = "<select name=\"" + tempSelectName + "\" id=\"tshirt_c\" onchange=\"javascript:switchOverlay()\"" +colourSelectCode + "</select>";
			document.getElementById("shirt").innerHTML = "<img src=\"/skins/Default/media/prod_overlays/ladiesfittees_fuscha_m.jpg\" alt=\"Changing The Clocks\" />";
			break;
	}
}

/**
 *  LOAD EVENT
 */

addWindowEvent(window,'load',externalLinks,false);

/**
 *  LOAD EVENT
 */

var IE6   = false /*@cc_on || @_jscript_version < 5.7 @*/;

if ((IE6) && (window.MochaUI === undefined)) {addWindowEvent(window,'load',parseStylesheets,false);}

/**
 *  End.
 */
