//
// DOMContentLoaded event handler. Works for browsers that don't support the DOMContentLoaded event.
//
// Modification Log:
// Date 	Initial Description
// 26 May 2008	TKO	Created by Tanny O'Haley

/*global addEvent, escape, unescape */



var domReadyEvent = {
	name: "domReadyEvent",
	// Array of DOMContentLoaded event handlers.
	events: {},
	domReadyID: 1,
	bDone: false,
	DOMContentLoadedCustom: null,

	// Function that adds DOMContentLoaded listeners to the array.
	add: function(handler) {
		// Assign each event handler a unique ID. If the handler has an ID, it
		// has already been added to the events object or been run.
		if (!handler.$$domReadyID) {
			handler.$$domReadyID = this.domReadyID++;

			// If the DOMContentLoaded event has happened, run the function.
			if(this.bDone){
				handler();
			}

			// store the event handler in the hash table
			this.events[handler.$$domReadyID] = handler;
		}
	},

	remove: function(handler) {
		// Delete the event handler from the hash table
		if (handler.$$domReadyID) {
			delete this.events[handler.$$domReadyID];
		}
	},

	// Function to process the DOMContentLoaded events array.
	run: function() {
		// quit if this function has already been called
		if (this.bDone) {
			return;
		}

		// Flag this function so we don't do the same thing twice
		this.bDone = true;

		// iterates through array of registered functions 
		for (var i in this.events) {
			this.events[i]();
		}
	},

	schedule: function() {
		// Quit if the init function has already been called
		if (this.bDone) {
			return;
		}
	
		// First, check for Safari or KHTML.
		if(/KHTML|WebKit/i.test(navigator.userAgent)) {
			if(/loaded|complete/.test(document.readyState)) {
				this.run();
			} else {
				// Not ready yet, wait a little more.
				setTimeout(this.name + ".schedule()", 100);
			}
		} else if(document.getElementById("__ie_onload")) {
			// Second, check for IE.
			return true;
		}

		// Check for custom developer provided function.
		if(typeof this.DOMContentLoadedCustom === "function") {
			//if DOM methods are supported, and the body element exists
			//(using a double-check including document.body, for the benefit of older moz builds [eg ns7.1] 
			//in which getElementsByTagName('body')[0] is undefined, unless this script is in the body section)
			if(typeof document.getElementsByTagName !== 'undefined' && (document.getElementsByTagName('body')[0] !== null || document.body !== null)) {
				// Call custom function.
				if(this.DOMContentLoadedCustom()) {
					this.run();
				} else {
					// Not ready yet, wait a little more.
					setTimeout(this.name + ".schedule()", 250);
				}
			}
		}

		return true;
	},

	init: function() {
		// If addEventListener supports the DOMContentLoaded event.
		if(document.addEventListener) {
			document.addEventListener("DOMContentLoaded", function() { domReadyEvent.run(); }, false);
		}

		// Schedule to run the init function.
		setTimeout("domReadyEvent.schedule()", 100);

		function run() {
			domReadyEvent.run();
		}
		
		// Just in case window.onload happens first, add it to onload using an available method.
		if(typeof addEvent !== "undefined") {
			addEvent(window, "load", run);
		} else if(document.addEventListener) {
			document.addEventListener("load", run, false);
		} else if(typeof window.onload === "function") {
			var oldonload = window.onload;
			window.onload = function() {
				domReadyEvent.run();
				oldonload();
			};
		} else {
			window.onload = run;
		}

	}
};

var domReady = function(handler) { domReadyEvent.add(handler); };
domReadyEvent.init();

// written by Dean Edwards, 2005
// with input from Tino Zijdel, Matthias Miller, Diego Perini
// http://dean.edwards.name/weblog/2005/10/add-event/
// 2007-07-10 TKO - Removed check for body in schedule because of problems with Firefox 2.0

/*global domReady */

function addEvent(element, type, handler) {
	// Modification by Tanny O'Haley, http://tanny.ica.com to add the
	// DOMContentLoaded for all browsers.
	if ((type === "DOMContentLoaded" || type === "domload")) {
		if(typeof domReady === "function") {
			domReady(handler);
			return;
		} else {
			type = "load";
		}
	}
	
	if (element.addEventListener) {
		element.addEventListener(type, handler, false);
	} else {
		// assign each event handler a unique ID
		if (!handler.$$guid) {
			handler.$$guid = addEvent.guid++;
		}
		// create a hash table of event types for the element
		if (!element.events) {
			element.events = {};
		}
		// create a hash table of event handlers for each element/event pair
		var handlers = element.events[type];
		if (!handlers) {
			handlers = element.events[type] = {};
			// store the existing event handler (if there is one)
			if (element["on" + type]) {
				handlers[0] = element["on" + type];
			}
		}
		// store the event handler in the hash table
		handlers[handler.$$guid] = handler;
		// assign a global event handler to do all the work
		element["on" + type] = handleEvent;
	}
}
// a counter used to create unique IDs
addEvent.guid = 1;

function removeEvent(element, type, handler) {
	if (element.removeEventListener) {
		element.removeEventListener(type, handler, false);
	} else {
		// delete the event handler from the hash table
		if (element.events && element.events[type]) {
			delete element.events[type][handler.$$guid];
		}
	}
}

function handleEvent(event) {
	var returnValue = true;
	// grab the event object (IE uses a global event object)
	event = event || fixEvent(((this.ownerDocument || this.document || this).parentWindow || window).event);
	// get a reference to the hash table of event handlers
	var handlers = this.events[event.type];
	// execute each event handler
	for (var i in handlers) {
		this.$$handleEvent = handlers[i];
		if (this.$$handleEvent(event) === false) {
			returnValue = false;
		}
	}
	return returnValue;
}

function fixEvent(event) {
	// add W3C standard event methods
	event.preventDefault = fixEvent.preventDefault;
	event.stopPropagation = fixEvent.stopPropagation;
	return event;
}
fixEvent.preventDefault = function() {
	this.returnValue = false;
};
fixEvent.stopPropagation = function() {
	this.cancelBubble = true;
};

// End Dean Edwards addEvent.

// Tino Zijdel - crisp@xs4all.nl This little snippet fixes the problem that the onload attribute on 
// the body-element will overwrite previous attached events on the window object for the onload event.
if (!window.addEventListener) {
	document.onreadystatechange = function(){
		if (window.onload && window.onload !== handleEvent) {
			addEvent(window, 'load', window.onload);
			window.onload = handleEvent;
		}
	};
}










































domReady(function(){



	if (ActivateHiddenSteps){
	
		var HiddenUrlsSplit = HiddenUrls.split(';');
	
		for(iHU = 0; iHU < HiddenUrlsSplit.length; iHU++){
			if (window.location.href.indexOf(HiddenUrlsSplit[iHU]) != -1 && HiddenUrlsSplit[iHU] != ''){
	
				var HiddenIDsSplit = HiddenIDs.split(';');
			
				for(iHID = 0; iHID < HiddenIDsSplit.length; iHID++){
					if (HiddenIDsSplit[iHID] != ''){
					document.getElementById(HiddenIDsSplit[iHID]).style.visibility="hidden";
					document.getElementById(HiddenIDsSplit[iHID]).innerHTML="";
					}
				}
	
			}
		}
	
	}

	
	if (ActivateNewsletterText && window.location.href.indexOf(NewsletterAcceptUrl) != -1){
		
		var NewsletterID = document.getElementById("NewsletterCustomScript");
		var NewsletterIDtd = NewsletterID.getElementsByTagName("td")
		NewsletterIDtd[0].style.display = "none";
		NewsletterIDtd[1].style.display = "none";
		NewsletterIDtd[2].style.display = "none";
		NewsletterIDtd[0].innerHTML = NewsletterIDtd[0].innerHTML.replace(/\[\[[^\]]*\]\]/gi,unescape(gup("email")));
		NewsletterIDtd[1].innerHTML = NewsletterIDtd[1].innerHTML.replace(/\[\[[^\]]*\]\]/gi,unescape(gup("email")));
		NewsletterIDtd[2].innerHTML = NewsletterIDtd[2].innerHTML.replace(/\[\[[^\]]*\]\]/gi,unescape(gup("email")));
		if (window.location.href.indexOf('action=subscribe') != -1){NewsletterIDtd[0].style.display="";}
		if (window.location.href.indexOf('action=unsubscribe') != -1){NewsletterIDtd[1].style.display="";}
		if (window.location.href.indexOf('action=error') != -1){NewsletterIDtd[2].style.display="";}
		
	}
	
	
	
	if (HideProdMenuTag){
		var ProdMenuContent = document.getElementById("ProductmenuContainer_DIV");
		var ProdMenuContentI = ProdMenuContent.getElementsByTagName("i");
		var iPMC=0;
		for (iPMC=0;iPMC<=ProdMenuContentI.length-1;iPMC++){
			ProdMenuContentI[iPMC].innerHTML = "";
		}
	}
	
	
	if (ActivateSplitText){

		CN_SFAMD(SplitterName, SplitterFromIF, SplitterToID);
	}
	
	
	function getCookie(c_name){
	if (document.cookie.length>0){
	  c_start=document.cookie.indexOf(c_name + "=");
	  if (c_start!=-1){
		c_start=c_start + c_name.length+1;
		c_end=document.cookie.indexOf(";",c_start);
		if (c_end==-1) c_end=document.cookie.length;
		return unescape(document.cookie.substring(c_start,c_end));
	  }}
	  return "";
	}
	
	function setCookie(c_name,value,expiredays){
		var exdate=new Date();
		exdate.setDate(exdate.getDate()+expiredays);
		document.cookie=c_name+ "=" +escape(value)+
		((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
	}
	

	
	
	if (ActivateTip){

	}
	
	
	if (ActivateFormValidator && window.location.href.indexOf(ValidatorAcceptUrl) != -1){
		
		
		if(document.attachEvent) window.attachEvent('onload',cn_validator_init);
		else window.addEventListener('load',cn_validator_init,false);

		
	}
	
});

		function TipProdLink() {
			window.location.href = "/shop/tip.html?productid="+ ProductNumber +"&VariantIdSelected=0";
		}
		function gup( name ){  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");  var regexS = "[\\?&]"+name+"=([^&#]*)";  var regex = new RegExp( regexS );  var results = regex.exec( window.location.href );  if( results == null )    return "";  else    return results[1];}
		
		function addOnLoad(AH_MID,c,htmlString){window.onload=function(){CN_InitSearchForAndMoveDescription(AH_MID,c,htmlString);};}
		function CN_SFAMD(AH_MID,c,htmlString){addOnLoad(AH_MID,c,htmlString);};
		function CN_InitSearchForAndMoveDescription(AH_MID,c,htmlString){try{var html=document.getElementById(c).innerHTML;if(html.toLowerCase().indexOf(AH_MID.toLowerCase())!=-1){var substr=html.toLowerCase().indexOf(AH_MID.toLowerCase());document.getElementById(c).innerHTML=html.substring(0,substr);document.getElementById(htmlString).innerHTML=html.substring(substr+AH_MID.length);}}catch(e){}finally{};};
		
		function cn_validator_init(){
			var forms=document.getElementsByTagName('form');
			var i=forms.length; var j=i; var form=null;
		
			if(i>0)do{
				var tmp=forms[j-i];
				if(tmp&&tmp.action&&tmp.action.toLowerCase()=="http://scripts.dandomain.dk/formmail.asp"){
					var form=tmp;
					break;
				}
			}while(i--);
			forms=null;
		
			if(!form) return false;
		
			var inputs=form.getElementsByTagName('input');
			var i=inputs.length; var j=i;
		
			if(i>0)do{
				if(inputs[j-i].name.toLowerCase()=="dfieldrequire"){
					var input=inputs[j-i];
					break;
				}
			}while(--i);
			inputs=null;
		
			form.validate_inputs=input.value;
		
			if(document.attachEvent) form.attachEvent('onsubmit',cn_validator_submit);
			else form.addEventListener('submit',cn_validator_submit,false);
		}

		function cn_validator_submit(e){
			var e=e||window.event;
			var src=e.srcElement||e.target;
		
			var required=src.validate_inputs.split(',');
		
			var inputs=src.getElementsByTagName('input');
			var i=inputs.length; var j=i; var error='';
		
			if(i>0)do{
				var tmp=inputs[j-i];
				if(cn_validator_check(required,tmp.name)&&!tmp.value){
					error+='\n- '+tmp.name;
				}
			}while(--i);
		
			if(error){
				alert('Du mangler at udfylde f\u00F8lgende felter:<br>'+error);
		
				if(e.preventDefault) e.preventDefault();
				if(e.stopPropagation) e.stopPropagation();
				if(e.stop) e.stop();
				if(document.all&&e.keyCode) try{e.keyCode=0;}catch(e){}
				e.cancelBubble=true;
				e.returnValue=false;
			}
		}
		
		function cn_validator_check(arr,key){
			var i=arr.length; var j=i; key=key.toLowerCase();
			if(i>0)do{
				if(arr[j-i].toLowerCase()==key) return true;
			}while(--i);
		
			return false;
		}


		function ToggleProdVat() {
			if (ActivateToggle && document.getElementById("ShopMainLayOutTable").innerHTML.indexOf('ToggleProdVat()') != -1){
				if (getCookie("ProdToggle") == ''){setCookie("ProdToggle",0,1);}
				SubStringIndikator = "custom=1&";
				window.location.href = location.href.substring(0,location.href.indexOf("?"+ SubStringIndikator)) +"?"+ SubStringIndikator +"togglevat=1&VariantIdSelected=0";
			}
		}
		if (window.location.href.indexOf("togglevat=1") != -1){if (getCookie("ProdToggle") == 0){setCookie("ProdToggle",1,1);}else{setCookie("ProdToggle",0,1);}}
		try{if (getCookie("ProdToggle") != '' && getCookie("ProdToggle") == 1){document.getElementById("ProdToggle").innerHTML = ChangeToggleTo;}else{document.getElementById("ProdToggle").innerHTML = ChangeToggleFrom;}}catch(err){}

