// Test if the browser is DOM capable
if (document.getElementById && document.getElementsByTagName)
{
	addLoadEvent(entreAdHover);
	addLoadEvent(entreAdBlockShow);
//	addLoadEvent(entreShopLink); (Osha00 20100125 11:00)
	addLoadEvent(toggleMobileTabs);
	addLoadEvent(filterSelectItems);
	addLoadEvent(filterCheckUncheckAllMakes);
	addLoadEvent(filterCheckUncheckMake);
	addLoadEvent(filterCheckUncheckAllProperties);
	addLoadEvent(filterCheckUncheckProperty);
	addLoadEvent(showPopularPhones);
	addLoadEvent(filterItems);
	addLoadEvent(showFilterItemZoom2);
	addLoadEvent(closeZoomBox);
}

// Loads functions on body.onload
function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			if (oldonload) {
				oldonload();
			}
			func();
		}
	}
}


// FUNCTIONS ENTRE
// ---------------------------------------------------------------------------

function entreAdHover() {
	if (document.getElementById("entre") || document.getElementById("mobilt")) {
		var offers = getElementsByClassName("offer-box", "li");
		var offer; var illustrations; var illustration; var buttons; var button; var buttonlinks; var buttonlink; var campaignCode; var campaignClass;
		var thisOffer; var thisOfferLink;
		
		var offerW = 0;
		var offerH = 0;
		
		for (i = 0; i < offers.length; i++) {
			offer = offers[i];
			offer.onmouseover = function() {
				this.style.cursor = "pointer";
				this.className = this.className + " current";
			}
			offer.onmouseout = function() {
				this.className = this.className.split(" current")[0];
			}
			/*offer.onclick = function() {
					thisOffer = getElementsByClass("button-order" , this, "p");
					thisOfferLink = thisOffer[0].getElementsByTagName("a");
					clickElement(thisOfferLink[0]);
			}*/
			
			// Use Prototype to check if the bg-image already has a <a> wrapper, otherwise we have to fix that the whoe area is clickable. Added 2008-12-15 by Holger Berg, fix for webmetrics.
			var thisOfferLinks = offer.getElementsByTagName("a");
			var sLink;
			if (offerW < 1) {
				offerW = $(offer).getWidth();
				offerH = $(offer).getHeight();
			}
			if (thisOfferLinks.length == 1) {
				sLink = thisOfferLinks[0].href;
				$(offer).insert( {bottom:'<div style="position:absolute; left:0px; top:0px; "><a href="' + sLink + '"><img src="/blank.gif" style="border:none" width="' + offerW + '" height="' + offerH + '" /></a></div>'} );
			}
		}
	}
}

function entreAdBlockShow() {
	if (document.getElementById("entre")) {
		var blocks; var block;
		blocks = getElementsByClassName("more", "ul");
		for (i=0; i<blocks.length;i++) {
			block = blocks[i];
			block.style.display = "inline";
		}
	}
}

function entreShopLink() {
	if (document.getElementById("entre-to-shop")) {
//		document.getElementById("entre-to-shop").onmouseover = function() {
//			this.style.cursor = "pointer";
//		}
		document.getElementById("entre-to-shop").onclick = function() {
			var links = document.getElementById("entre-to-shop").getElementsByTagName("a");
//			location.href = links[0].href;
		}
	}
}

// FUNCTIONS MOBILT
// ---------------------------------------------------------------------------

function filterSelectItems() {
    if (document.getElementById('phone-selector')) {
        var selectForm = document.getElementById('phone-selector');
        selectForm.onsubmit = 
            function() {
                filterItems("click");
//                location.href="#mobile-phones-filter-items";
                return false;
            }
    }
}

function checkQueryString(qsProperty) {
    qs = window.location.search.substring(1);
    qs = qs.split("&");
    for (i=0; i<qs.length; i++) {
        qsProperties = qs[i].split("=");
        if (qsProperties[0] == qsProperty) {
            return qsProperties[1];
        }
    }
}

function filterItems(init) {
    if (document.getElementById('phone-selector')) {
        var selectForm = document.getElementById('phone-selector');
        var makes = "apple nokia samsung sony ericsson";
        var foundPhones = false;
        
        // If there is a querystring value for cf-option in URL; check that option in the form
        if (init != "click") {        
            if (checkQueryString("make") != null) {
                var checkallCheckbox = document.getElementById('checkallMakes');
                var checkedOption = checkQueryString("make").toLowerCase().substring(0,4);
                for (i = 0; i < selectForm.elements.length; i++) {
                    if (selectForm.elements[i].className == "make") {
                        if (selectForm.elements[i].value.toLowerCase().indexOf(checkedOption) > -1){
                            selectForm.elements[i].checked = true;
                            checkallCheckbox.checked = false;
                        }                        
                    }
                }
            }
        }
				if(document.getElementById('mobile-phones-filter-items')) {
					var phones = getElementsByClass("phone", document.getElementById('mobile-phones-filter-items'), "li");					
					var phone; var showMake; var showProperty; var propertyOn; var make; var properties; var propertyValue; var anyProperty;
					var selectedPlan; var plans; var checkedProperties;
					//check plans
					for (m = 0; m < selectForm.elements.length; m++) {
						if (selectForm.elements[m].type == "radio" && selectForm.elements[m].checked == true) {
							selectedPlan = selectForm.elements[m].value;
						}
					}
					for (var i = 0; i < phones.length; i++) {
						phone = phones[i];
						showMake = false;
						showProperty = false;
						propertyOn = false;
						anyProperty = false;
						checkedProperties = false;
//						make = getElementsByClassName("make", "p", document.getElementById(phone.id));
						make = getElementsByClass("make", document.getElementById(phone.id), "span");
						for (m = 0; m < selectForm.elements.length; m++) {
							if (selectForm.elements[m].type == "checkbox" && selectForm.elements[m].checked == true && selectForm.elements[m].name != "make" && selectForm.elements[m].name != "allmakes" && selectForm.elements[m].name != "allproperties") {
								anyProperty = true;
							}						
						}
						
						// Show plan
						plans = getElementsByClass("plans", document.getElementById(phone.id), "dl");
						plan = plans[0];
						plans = plan.getElementsByTagName("dd");
						var planExists;
						planExists = false;
						
						for (n = 0; n < plans.length; n++) {								
							if (plans[n].className == selectedPlan) {
								plans[n].style.display = "block";
								planExists = true;
							} else {
								plans[n].style.display = "none";
							}
						}

						//Show correct links, for fast telefoni that has different links for different plans
						var arButtonLinks = $(phone.id).select("p.readmore a", "p.order a");
						for (var l = 0; l < arButtonLinks.length; l++) {
							if (!arButtonLinks[l].className || arButtonLinks[l].className == "")
								continue;
							if (arButtonLinks[l].className == selectedPlan) {
								arButtonLinks[l].style.display = "block";
							}
							else {
								arButtonLinks[l].style.display = "none";
							}
						}
						
						if (planExists == true) {
							for (m = 0; m < selectForm.elements.length; m++) {
								// check make
								if (selectForm.elements[m].type == "checkbox" && selectForm.elements[m].checked == true && selectForm.elements[m].className == "make" && make[0].innerHTML == selectForm.elements[m].value) {
								showMake = true;
								} else { 
									if ( selectForm.elements[m].type == "checkbox" && selectForm.elements[m].checked == true && selectForm.elements[m].className == "make" && makes.indexOf(make[0].innerHTML.toLowerCase()) == -1 && selectForm.elements[m].value == "Other") {
										showMake = true;
									} else {
										if (selectForm.elements[m].type == "checkbox" && selectForm.elements[m].checked == true && selectForm.elements[m].name == "allmakes") {
											showMake = true;
										}
									}
								}
								//check properties	 
								if (anyProperty == true) {
									if (selectForm.elements[m].type == "checkbox" && selectForm.elements[m].checked == true && selectForm.elements[m].name != "make" && selectForm.elements[m].name != "allmakes" && selectForm.elements[m].name != "allproperties") {
										var propertyStart;
										propertyStart = getElementsByClass("properties", document.getElementById(phone.id), "dl");
										properties = getElementsByClass(selectForm.elements[m].name, propertyStart[0], "dd");
										propertyValue = properties[0].innerHTML;
										if (propertyValue.indexOf(' ') > 0) {
											propertyValue = propertyValue.split(" ")[0];
										}
										if (propertyValue.toLowerCase() == "ja") {
											if ((checkedProperties == false && propertyOn == false) || (checkedProperties == true && propertyOn == true)) {
												checkedProperties = true;
												showProperty = true;
												propertyOn = true;
											} 
										} else {
											checkedProperties = true;
											showProperty = false;
											propertyOn = false;
										}
									}
								} else {
									showProperty = true;
								}  
							}
						}
						if (showMake == true && showProperty == true) {
							phone.style.display = "inline";
							foundPhones = true;
						
						} else {
							phone.style.display = "none";							
						}		  
					}
				}
				var noResults = document.getElementById("mobile-phones-filter-noresults");
				if (foundPhones == false) {
					noResults.style.display = "block";
				} else {
					noResults.style.display = "none";
				}					
				return false;
	}
}


function filterCheckUncheckAllMakes() {
	if (document.getElementById('phone-selector') && document.getElementById('make') && document.getElementById('checkallMakes')) {
		var selectForm = document.getElementById('phone-selector');
		var makeFieldset = document.getElementById('make');
		var checkallCheckbox = document.getElementById('checkallMakes');
		checkallCheckbox.onclick =   
			function() {
				for (m = 0; m < selectForm.elements.length; m++) {
				if (selectForm.elements[m].name == "make") {
					if (checkallCheckbox.checked == true) {
						selectForm.elements[m].checked = false;
					} else {
//						selectForm.elements[m].checked = true;
					}	
				}
			}			
		}
	}
}


function filterCheckUncheckMake() {
	if (document.getElementById('phone-selector') && document.getElementById('make') && document.getElementById('checkallMakes')) {
		var selectForm = document.getElementById('phone-selector');
		for (m = 0; m < selectForm.elements.length; m++) {
			if (selectForm.elements[m].name == "make") {
				formElement = selectForm.elements[m]
				formElement.onclick = 
				function () {
					if (document.getElementById('checkallMakes').checked == true) {
						document.getElementById('checkallMakes').checked = false;
					}
				}
			}
		}
	}
}


function filterCheckUncheckAllProperties() {
	if (document.getElementById('phone-selector') && document.getElementById('property') && document.getElementById('checkallProperties')) {
		var selectForm = document.getElementById('phone-selector');
		var makeFieldset = document.getElementById('property');
		var checkallCheckbox = document.getElementById('checkallProperties');
		checkallCheckbox.onclick =  
			function() {
				var elementName;
				var propertyExists;
				for (x = 0; x < selectForm.elements.length; x++) {
					if (selectForm.elements[x].type == "checkbox") {
					elementName = selectForm.elements[x].name; 
					propertyExists = elementName.indexOf('property');
					if (propertyExists > -1) {
						if (checkallCheckbox.checked == true) {
							selectForm.elements[x].checked = true;
						} else {
							selectForm.elements[x].checked = false;
						}	
					}
				}
			}			
		}
	}
}


function filterCheckUncheckProperty() {
	if (document.getElementById('phone-selector') && document.getElementById('make') && document.getElementById('checkallProperties')) {
		var selectForm = document.getElementById('phone-selector');
		for (m = 0; m < selectForm.elements.length; m++) {
			if (selectForm.elements[m].type == "checkbox") {
				elementName = selectForm.elements[m].name; 
				propertyExists = elementName.indexOf('property');
				if (propertyExists > -1) {
					formElement = selectForm.elements[m];
					formElement.onclick = 
					function () {
						if (document.getElementById('checkallProperties').checked == true) {
							document.getElementById('checkallProperties').checked = false;
						}
					} 
				}
			}
		}
	}
}

function showPopularPhones() {
	if (document.getElementById("phone-selector")) {
		//check plans
		var links; var linked;
		links = getElementsByClass("mobile-phones-popular", document.getElementById("phone-selector"), "a");
		linked = links[0];
		linked.onclick = function () {
			var noResults = document.getElementById("mobile-phones-filter-noresults");
			noResults.style.display = "none";
			var selectForm = document.getElementById('phone-selector');
			for (m = 0; m < selectForm.elements.length; m++) {
				if (selectForm.elements[m].type == "radio" && selectForm.elements[m].checked == true) {
					selectedPlan = selectForm.elements[m].value;
				}
			}
			var phones = getElementsByClass("phone", document.getElementById('mobile-phones-filter-items'), "li");
			var planExists;
			for (var i = 0; i < phones.length; i++) {
				phone = phones[i];
				if (phone.className.indexOf("popular") > 0) {
					plans = getElementsByClass("plans", phone, "dl");
					plan = plans[0];
					plans = plan.getElementsByTagName("dd");
					planExists = false;
					for (n = 0; n < plans.length; n++) {								
						if (plans[n].className == selectedPlan) {
							plans[n].style.display = "block";
							planExists = true;
						} else {
							plans[n].style.display = "none";
						}
					}
					if (planExists == true) {
						phone.style.display = "inline";					
					} else {
						phone.style.display = "none";
					}
				} else {
					phone.style.display = "none";
				}				
			}			
			return false;
		}
	}
}

 function toggleMobileTabs() {
	if (document.getElementById("mobile-nav-tabs")) {
		var tabLinks; var tab;
		tabLinks = document.getElementById("mobile-nav-tabs").getElementsByTagName("a");
		for (i=0; i < tabLinks.length; i++) {
			tabLinks[i].onclick = function() {
				var tabLinks = document.getElementById("mobile-nav-tabs").getElementsByTagName("a");
				for (i=0; i < tabLinks.length; i++) {
					tab = tabLinks[i].parentNode;
					if (tab.className.indexOf(" current") > 0) { tab.className = tab.className.split(" current")[0]; }
					if (tab.className.indexOf(" normal") < 1) { tab.className = tab.className + " normal"; }
					document.getElementById(tab.className.split(" ")[0]).style.display = "none";
				}
				tab = this.parentNode;
				if (tab.className.indexOf(" normal") > 0) { tab.className = tab.className.split(" normal")[0]; }
				tab.className = tab.className + " current";
				if (tab.className.indexOf("mobile-plans") > -1) {
					var iframe = document.getElementById("mobile-plans-iframe");
					iframe.src = "/files/abonnemang_091023.html?8"; 
				}
                    if (tab.className.indexOf("mobile-link") > -1) {
				//location.href = tab.href;	
				location.href = this.href;
						
				}
				document.getElementById(tab.className.split(" ")[0]).style.display = "block";
				return false;
			}
		}
	}
}


function showFilterItemZoom2() {
	if (document.getElementById("mobile-phones-filter-items")) {
		var phoneItems; var phoneItem; var zoomItems; var zoomItemLinks; var zoomItem; var zoomBoxes; var zoomBox; var phone; 
		var htmlEmt; var htmlEmts; var newEmt;
		phoneItems = getElementsByClass("phone", document.getElementById("mobile-phones-filter-items"), "li");
		for (var i = 0; i < phoneItems.length; i++) {
			phoneItems[i].onmouseover = function() {
				var zoomBox = document.getElementById("zoom-box");
				if (zoomBox.innerHTML == "") {
				this.className = this.className + " current";
				}
			}
			phoneItems[i].onmouseout = function() {
				var zoomBox = document.getElementById("zoom-box");
				if (zoomBox.innerHTML == "") {
					this.className = this.className.split(" current")[0];
				}
			}
		}
		zoomItems = getElementsByClass("zoom-item", document.getElementById("mobile-phones-filter-items"), "li");
		zoomItemLinks = getElementsByClass("zoom-item-link", document.getElementById("mobile-phones-filter-items"), "a");
		for (var i = 0; i < zoomItemLinks.length; i++) {
			zoomItemLinks[i].onclick = function() {
				zoomBox = document.getElementById("zoom-box");
				if (zoomBox.innerHTML == "") {
					assignPosition(zoomBox);
					zoomBox.style.display = "block";
					zoomBox.className = "zoom-box";
					phone = this.parentNode;
					do
					{
					    phone = phone.parentNode;
					} while (phone.className.indexOf("phone") < 0)
					zoomBox.appendChild(addHTMLtoElement(phone.getElementsByTagName("h3"), "h3", ""));
					newEmt = document.createElement("img");
					newEmt.setAttribute("src", this.href);
					newEmt.setAttribute("alt", "");
					zoomBox.appendChild(newEmt);
					zoomBox.appendChild(addHTMLtoElement(getElementsByClass("usp", phone, "ul"), "ul", "usp"));
					zoomBox.appendChild(addHTMLtoElement(getElementsByClass("no-subscription", phone, "dd"), "p", "price"));
				}
				return false;
			}
		}
	}
}

function closeZoomBox() {
	var headings;
	if (document.getElementById("zoom-box")) {
		document.getElementById("zoom-box").onmouseover = function() {
			this.style.cursor = "pointer";
		}
		document.getElementById("zoom-box").onclick = function() {
			this.innerHTML = "";
			this.style.display = "none";
			var phones = getElementsByClass("phone", document.getElementById("mobile-phones-filter-items"), "li");
			for (i = 0; i < phones.length; i++) {
				if (phones[i].className.indexOf(" current") > 0) { phones[i].className = phones[i].className.split(" current")[0]; }
			}
		}
	}
}

var cX = 0; var cY = 0; var rX = 0; var rY = 0;
function UpdateCursorPosition(e){ cX = e.pageX; cY = e.pageY;}
function UpdateCursorPositionDocAll(e){ cX = event.clientX; cY = event.clientY;}

if(document.all) { document.onmousemove = UpdateCursorPositionDocAll; }
else { document.onmousemove = UpdateCursorPosition; }

function assignPosition(d) {
	if(self.pageYOffset) {
		rX = self.pageXOffset; rY = self.pageYOffset;
	} else if(document.documentElement && document.documentElement.scrollTop) {
		rX = document.documentElement.scrollLeft; rY = document.documentElement.scrollTop;
	} else if(document.body) {
		rX = document.body.scrollLeft; rY = document.body.scrollTop;
	}
	if(document.all) {
		cX += rX; cY += rY;
	}
	d.style.left = (cX-110) + "px";
	d.style.top = (cY-270) + "px";
}

function addHTMLtoElement(htmlElement, createElement, setClass) {
	var htmlEmts; var htmlEmt; var newEmt;
	htmlEmts = htmlElement; htmlEmt = htmlEmts[0];
	newEmt = document.createElement(createElement);
	if (setClass.length != null) {
		newEmt.setAttribute("class", setClass);
	}
	if (htmlEmt != null) {
		newEmt.innerHTML = htmlEmt.innerHTML;
	} else {
		newEmt.setAttribute("style", "display: none;");
	}
	return newEmt;
}


// DOM EXTENSIONS
// ---------------------------------------------------------------------------

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 getElementsByClass(searchClass,node,tag) {
        var classElements = new Array();
        if ( node == null )
                node = document;
        if ( tag == null )
                tag = '*';
        var els = node.getElementsByTagName(tag);
        var elsLen = els.length;
        var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
        for (i = 0, j = 0; i < elsLen; i++) {
                if ( pattern.test(els[i].className) ) {
                        classElements[j] = els[i];
                        j++;
                }
        }
        return classElements;
}

