/**
 * @author haw5855
 */
var addToCart = new function () {
	
	var  me = this;
	
	var buttonNode;
	
	me.init = function () {
		buttonNode = document.getElementById('addToCart-button');
		
		if (buttonNode) {
			EventHelpers.addEvent(buttonNode, 'click', clickEvent);
		}
	}
	
	function clickEvent(e) {
		var linkNode = EventHelpers.getEventTarget(e);
	}
}


var htmlFixer = new function () {
	
	var me = this;
	
	var fixedHTMLNodes = null;
	var variantsNode = null;
	var variantsHTML = null;
	var tableRowsHTML = null;
	
	
	function fixNodes() {
		for (var i=0; i<fixedHTMLNodes.length; i++) {
			var id = fixedHTMLNodes[i].id;
			
			var originalHTML = config.getValue('colourOnWheels.originalHTML.' + id);
			var searchAndReplaceObjs = config.getValue('colourOnWheels.searchAndReplaceObjs.' + id);
			
			var fixedHTML = originalHTML;
			for (var j in searchAndReplaceObjs) {
				var searchRe = new RegExp(searchAndReplaceObjs[j].searchRe, 'g')
				fixedHTML = fixedHTML.replace(searchRe, searchAndReplaceObjs[j].replaceStr);
				//alert(fixedHTML);
			}
			fixedHTML = HTMLtoXML(fixedHTML);
			DOMHelpers.setTableNodeInnerHTML (fixedHTMLNodes[i], fixedHTML);
			//fixedHTMLNodes[i].innerHTML = fixedHTML;
		}
		
		var inputNodes = cssQuery("input[type=text]");
		var multiColourRe = new RegExp("article\\[Colour[1-5]\\]");
		
		
		for (var i=0; i<inputNodes.length; i++) {
			var inputNode = inputNodes[i];
			var inputName = inputNode.name.toString();
			
			if (inputName == "article[Colour]" || inputName.match(multiColourRe)) {
				CSSHelpers.addClass(inputNode, 'ajaxDialogue-openLayer');
				inputNode.id = 'colourPickerDialogue-link';
				// We no longer break, because there could be more than one.
				// break; 
			}
			
			
		}
		ajaxDialogue.init(true)
		
		
		
		
	}

	function insertSheenSelector() {
		var inputs = document.getElementsByTagName('select');
		var sheenInputNode = null;

		for (var i=0; i<inputs.length; i++ ) {
			var input = inputs[i];

			if (input.name == 'article[Sheen]') {
				sheenInputNode = input;
			}
		}

		if (sheenInputNode) {
			var parentNode = sheenInputNode.parentNode;
			var html = parentNode.innerHTML;
			parentNode.innerHTML = html.replace
			  (/Sheen:/, config.getValue('colourOnWheels.templates.sheenGuide'));
		}
	}
	
	me.init = function () {
		
		if (EventHelpers.hasPageLoadHappened(arguments)) {
			return true;
		}
		/* insertSheenSelector();	 */
		fixedHTMLNodes = CSSHelpers.getElementsByClassName(document, 'colourOnWheels-fixedHTML');
		
		fixNodes();
	}
}

var loginScreen = new function () {
	var me = this;
	
	var sessionParamRe = /jsessionid=[a-f0-9]*\//
	var sessionRe = /[a-f0-9][^\/]/;
	var splitRe = /[=\/]/;
	var membersAreaNode;
	var addToCartNode;
	
	function getSessionID (url) {
		
		var r = null;
		//alert('sessvars says: ' + sessvars.sessionID);
		if (sessvars.sessionID) {
			r = sessvars.sessionID;
		} else {
			//alert(url)
			var tmp = sessionParamRe.exec(url);
			
			if (tmp) {
				tmp = tmp.toString();
			} else {
				tmp = "";
			}
			
				
            if (tmp && tmp.length > 0) {
				if (tmp.indexOf("=") != -1) {
					tmp = tmp.split(splitRe);
				}
				else {
					tmp = tmp.split("utn");
				}
				
				if (tmp.length > 1) {
					r = tmp[1];
				}
			} else {
				//alert('splitting url the safari way')
				tmp = url.split("utn");
				//alert(tmp.length)
				if (tmp.length > 1) {
					r = tmp[1].split('/')[0];
				}
				//alert(r);
			}
			
			
			
		}
		if (!r) {
			r = null;
		}
		return r;
	}
	
	function putSessionInURL (url, sessionID) {
		var r = url.replace(sessionParamRe, 'jsession=' + sessionID + '/');
		return r;
		  
	}
	
	me.init = function () {
		sessvars.$.prefs.crossDomain = true;
		var url = location.href;
		var sessionID = getSessionID(url);
		membersAreaNode = document.getElementById('membersArea');
		
		
		var isWebKit = WebKitDetect.isWebKit();
		
		if (sessionID) {
			
			sessvars.sessionID = sessionID;
			
			var membersAreaContent;
			
			if (isWebKit) {
				membersAreaContent=config.getScriptedValue(
					'loginScreen.templates.statusSafari', 
					{
						sessDir:	"/sess/",
						sessionPrefix: sessionFix.prefix,
						jsessionid: sessionID
					}
				);	
			} else {
				membersAreaContent=config.getScriptedValue(
					'loginScreen.templates.status', 
					{
						sessDir:	"/sess/",
						sessionPrefix: sessionFix.prefix,
						jsessionid: sessionID
					}
				);
			}
			
			membersAreaNode.innerHTML=membersAreaContent;
			
			
			membersAreaNode.innerHTML=config.getScriptedValue(
				'loginScreen.templates.status', 
				{
					sessDir:	"/sess/",
					sessionPrefix: sessionFix.prefix,
					jsessionid: sessionID
				}
			);
		} else {
			
			if (isWebKit) {
				membersAreaContent = config.getScriptedValue('loginScreen.templates.statusSafari', {
					sessDir: "",
					sessionPrefix: "",
					jsessionid: ""
				});
			}
			else {
				membersAreaContent = config.getScriptedValue('loginScreen.templates.status', {
					sessDir: "",
					sessionPrefix: "",
					jsessionid: ""
				});
			}
			membersAreaNode.innerHTML =membersAreaContent;
		}
		
		
		
		var addToCartNode = document.getElementById('addToCart');
		if (addToCartNode) {
			var productTemplateConfig = new Config('productTemplateConfig')
			productTemplateConfig.init();
			addToCartNode.innerHTML = productTemplateConfig.getScriptedValue(
			
				'loginScreen.templates.button',
				{
					jsessionid: sessionID
				}
				);
		}
	}
	
	
}

EventHelpers.addPageLoadEvent('htmlFixer.init');
EventHelpers.addPageLoadEvent('loginScreen.init');
