/********************************************************
*	(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_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() {
		var fileNames = ["pdf", "PDF", "doc", "DOC", "docx", "DOCX", "xls", "XLS", "xlsx", "XLSX", "ppt", "PPT", "pptx", "PPTX"];

		for (var i = 0; i < fileNames.length; i++) {
			var fileLinks = $("a[href$=." + fileNames[i] + "]");

			fileLinks.each(function() {
				$(this).attr("target", "_blank");
			});
		}

		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";
					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";
			}
		}
	}

	this.InitializeHover = function() {
		var changelanguage = document.getElementById("changelanguagecontainer");
		if (changelanguage != null) {
			changelanguage.onmouseenter = this.MenuOnMouseOver;
			changelanguage.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.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);


