/********************************************************
*	(C)2006-2007 Creuna AB KeySubmit.js
*		
*	This script set external pages to be targeted in
*   a new window and also fixes a lot of compatibility
*   issues with the CSS standard for Internet Explorer
*	  
*********************************************************/

var PageInitializer = new function(){ 

	var m_ActiveClass		= " ie-active";
	var m_ActiveRegEx		= new RegExp(m_ActiveClass + "\\b");
	var m_PrevActiveClass	= " prev-ie-active";
	var m_PrevActiveRegEx	= new RegExp(m_PrevActiveClass + "\\b");
	var m_TargetClass		= " ie-target";
	var m_TargetRegEx		= new RegExp(m_TargetClass + "\\b");
	var m_TargetedClass		= " ie-targeted";
	var m_TargetedRegEx		= new RegExp(m_TargetedClass + "\\b");
	var m_MenuHoverClass	= " ie-hover";
	var m_MenuHoverRegEx	= new RegExp(m_MenuHoverClass + "\\b");
	var m_UrlHash			= "";
	var m_IFrame			= null;
	var m_PortletEditView	= null;

	this.OnLoad = function(){
		PageInitializer.InitializeExternalLinks();
		if(PageInitializer.IsIE()){
			PageInitializer.InitializeInputs();
			PageInitializer.InitializeButtons();
			if(PageInitializer.PreIE7()){
				PageInitializer.InitializeHover();
			}
			document.onpropertychange = PageInitializer.OnTargetChanged;
		}
		PageInitializer.InitializeTables();
	}
	
	this.InPortletEditView = function(){
		if(m_PortletEditView == null){
			m_PortletEditView = (document.location.href.indexOf("PortletEditView=true") >= 0);
		}
		return m_PortletEditView;
	}

	this.InitializeExternalLinks = function(){

		if (!document.getElementsByTagName)
			return;

		var anchors = document.getElementsByTagName("a");

		for (var i=0; i<anchors.length; i++) {
			var anchor = anchors[i];
			var href = anchor.getAttribute("href");
			if(href != null){
				if(this.IsIE()){
					this.AddMailtoClass(anchor, href);
					var spanElement = document.createElement("span");
					spanElement.className = "anchor-end";
					//spanElement.innerHtml = "<!-- Anchor End -->";
					anchor.appendChild(spanElement);
				}
				var rel = anchor.getAttribute("rel");
				var email		= this.IsEmailLink(href);
				var file		= this.IsFileLink(href, rel);
				var external	= this.IsExternalLink(href, rel);
				if(!email && (external || file)){
					if(anchor.target != null){
						anchor.target = "_blank";
						if(this.IsIE()){
							if(file){
								anchor.className += " file";
								this.AddExtensionClass(anchor, href);
							}else{
								anchor.className += " external";
							}
						}
					}
				}
			}
		}
	}

	this.IsExternalLink = function(href, rel){
		if(document.location.pathname != null){
			var host = document.location.href.substring(0, document.location.href.indexOf(document.location.pathname));
			if(href.indexOf(host) == 0){
				return false;
			}
		}
		var s = href.substring(0, 1);
		return (rel == "external" || (s != "/" && s != "#"));
	}

	this.IsFileLink = function(href, rel){
		var extension = "";
		var dotIndex = href.lastIndexOf(".");
		var questionIndex = href.indexOf("?");
		if(dotIndex > 0 && questionIndex < 0){
			extension = href.slice(dotIndex + 1);
			var slashIndex = extension.indexOf("/");
			if(slashIndex > 0){
				extension = "";
			}
			var hashIndex = extension.indexOf("#");
			if(hashIndex > 0){
				extension = extension.substring(0, hashIndex);
			}
		}		
		return (rel == "file" || (extension != "" && extension != "htm" && extension != "html" && extension != "aspx" && extension != "asp" && extension != "jsp" && extension != "php"));
	}
	
	this.IsEmailLink = function(href){
		return href.indexOf("mailto:") == 0;
	}
	
	this.ShowHideClosedGroupSettings = function(state){
		var cgsDiv = document.getElementById("closedGroupSettings");
		if(cgsDiv != null){
			if(state == "closed")
				cgsDiv.style.display = "block";
			else
				cgsDiv.style.display = "none";
		}
	}
	
	this.InitializeTables = function(){

		if (!document.getElementsByTagName)
			return;

		var tables = document.getElementsByTagName("table");

		var EVEN = false;
		var ODD = true;

		for (var i = 0; i < tables.length; i++) {
			var table = tables[i];
			
			if (table.cellPadding == null || table.cellPadding == ""){
				table.cellPadding = "0";
			}
			if (table.cellSpacing == null || table.cellSpacing == ""){
				table.cellSpacing = "0";
			}
			
			if (table.className.indexOf("sortable") == -1) {
				var tbody = table.getElementsByTagName("tbody")[0];
				var currentState = EVEN;
				
				var rows = table.getElementsByTagName("tr");
				
				for (var j=0; j<rows.length; j++) {
					var tr = rows[j];
					var isHeadingRow = tr.getElementsByTagName("th").length > 0;
					
					if (isHeadingRow) {
						currentState = EVEN;
					} else {
						if (currentState == EVEN) {
							tr.className += " even";
						} else {
							tr.className += " odd";
						}
						currentState = !currentState;
					}
				}
			}
		}
	}
	
	/**************************************
	IE Repairing Scripts START
	**************************************/

	this.OnTargetChanged = function(){
		if(document.location.hash != m_UrlHash){
			if(m_UrlHash != ""){
				var oldTarget = document.getElementById(m_UrlHash.slice(1));
				if(oldTarget != null){
					oldTarget.className = oldTarget.className.replace(m_TargetRegEx, "");
					if(oldTarget.nextSibling != null){
						oldTarget.nextSibling.className = oldTarget.nextSibling.className.replace(m_TargetedRegEx, "");
					}
				}
			}
			m_UrlHash = document.location.hash;
			if(m_UrlHash != ""){
				var newTarget = document.getElementById(m_UrlHash.slice(1));
				if(newTarget != null){
					newTarget.className += m_TargetClass;
					if(newTarget.nextSibling != null){
						newTarget.nextSibling.className += m_TargetedClass;
					}

				}
			}
		}
	}
	
	this.AddMailtoClass = function(anchor, href){
		if(this.IsEmailLink(href))
			anchor.className += " mailto";
	}
	
	this.AddExtensionClass = function(anchor, href){
		var index = href.lastIndexOf(".");
		if(index > 0){
			anchor.className += " ext-" + href.slice(index + 1);
		}
	}
	
	this.InitializeInputs = function() {
		var inputs = document.getElementsByTagName("input");
		for (var i = 0; i < inputs.length; i++){
			var input = inputs[i];
			input.className += " input-" + input.getAttribute("type");
		}
	}

	this.InitializeButtons = function() {
		var buttons = document.getElementsByTagName("button");
		for (var i = 0; i < buttons.length; i++){
			var button = buttons[i];
			button.onmousedown = this.ButtonActivated;
			button.onmouseenter = this.ButtonDeactivated;
			button.onmouseleave = this.ButtonDeactivated;
			if(button.disabled){
				button.className += " disabled";
			}
			if (/\bprev\b/.exec(button.className)) {
				button.onmousedown = this.PrevButtonActivated;
				button.onmouseenter = this.PrevButtonDeactivated;
				button.onmouseleave = this.PrevButtonDeactivated;
			}
		}
	}

	this.InitializeHover = function() {
		var changelanguage = document.getElementById("changelanguagecontainer");
		if(changelanguage != null){
			changelanguage.onmouseenter = this.MenuOnMouseOver;
			changelanguage.onmouseleave = this.MenuOnMouseOut;
		}
		var accounts = document.getElementById("accounts");
		if(accounts != null){
			accounts.onmouseenter = this.MenuOnMouseOver;
			accounts.onmouseleave = this.MenuOnMouseOut;
		}
		var loggedInInfo = document.getElementById("logged-in-info");
		if(loggedInInfo != null){
			var buttons = loggedInInfo.getElementsByTagName("button");
			if (buttons.length > 0){
				buttons[0].onmouseenter = this.MenuOnMouseOver;
				buttons[0].onmouseleave = this.MenuOnMouseOut;
			}
		}
		var productFaq = document.getElementById("faqitem");
		if(productFaq != null){
			var dataterms = productFaq.getElementsByTagName("dt");
			for (var i = 0; i < dataterms.length; i++){
				dataterms[i].onmouseenter = this.MenuOnMouseOver;
				dataterms[i].onmouseleave = this.MenuOnMouseOut;
			}
		}
	}
	
	this.ButtonActivated = function(){
		this.className += m_ActiveClass;
	}

	this.ButtonDeactivated = function(){
		this.className = this.className.replace(m_ActiveRegEx, "");
	}
	
	this.PrevButtonActivated = function(){
		this.className += " prev-ie-active";
	}
	
	this.PrevButtonDeactivated = function(){
		this.className = this.className.replace(m_PrevActiveRegEx, "");
	}

	this.MenuOnMouseOver = function(){
		this.className += m_MenuHoverClass;
	}

	this.MenuOnMouseOut = function(){
		this.className = this.className.replace(m_MenuHoverRegEx, "");
	}

	this.IsIE = function(){
		var agt = navigator.userAgent.toLowerCase();
		return ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
	}
	
	this.PreIE7 = function(){
		var agt = navigator.userAgent.toLowerCase();
		return (((agt.indexOf("msie 5") != -1) || (agt.indexOf("msie 6") != -1)) && (agt.indexOf("opera") == -1));
	}

	/**************************************
	IE Repairing Scripts END
	**************************************/
	
}
if(document.addEventListener)
	document.addEventListener("load", PageInitializer.OnLoad, false);
if(window.addEventListener)
	window.addEventListener("load", PageInitializer.OnLoad, false);
else if(window.attachEvent)
	window.attachEvent("onload", PageInitializer.OnLoad);

