// addEvent() v1.0
function addEvent(obj, evt, fnc, useCapture){
	if (!useCapture) useCapture=false;
	if (obj.addEventListener){
		obj.addEventListener(evt,fnc,useCapture);
		return true;
	} else if (obj.attachEvent) return obj.attachEvent("on"+evt,fnc);
}

// getElementsByClassName() v1.0
document.getElementsByClassName = function(clsName){
    var retVal = new Array();
    var elements = document.getElementsByTagName("*");
    for(var i = 0;i < elements.length;i++){
        if(elements[i].className.indexOf(" ") >= 0){
            var classes = elements[i].className.split(" ");
            for(var j = 0;j < classes.length;j++){
                if(classes[j] == clsName)
                    retVal.push(elements[i]);
            }
        }
        else if(elements[i].className == clsName)
            retVal.push(elements[i]);
    }
	return retVal;
}

function $(id) {
	return document.getElementById(id);
}

// Get computed style of element
function getStyle(elm, style){
    var strValue = "";
    if(document.defaultView && document.defaultView.getComputedStyle){
        strValue = document.defaultView.getComputedStyle(elm, "").getPropertyValue(style);
    }
    else if(elm.currentStyle){
        style = style.replace(/\-(\w)/g, function (strMatch, p1){
            return p1.toUpperCase();
        });
        strValue = elm.currentStyle[style];
    }
    return strValue;
}


/*	
	mmAddEventHandler() v1.0
	Author: Mammon Media (c) 2006
	Description: Add events to elements with specific class names
	takes an array of items and adds fn to all
	Usage: mmAddEventHandler("classname", "event", function)
	run in onload event
	Depends on: getElementsByClassName()
*/
function mmAddEventHandler(cls, ev, fn) {

	var elm = document.getElementsByClassName(cls);
	
	if(elm.length > 0) {
		for(var i = 0; i < elm.length; i++) {
			if(elm[i].addEventListener) {
				elm[i].addEventListener(ev, fn, false);
			} else if(elm[i].attachEvent) {
				elm[i].attachEvent("on"+ev, fn);
			}
		}
	}
}

// noFocusNoFlicker() v1.0
// Loose ugly borders on links in firefox
// Stop background flicker in IE
function noFocusNoFlicker() {

	// Remove background flicker in IE
	try {
	  document.execCommand('BackgroundImageCache', false, true);
	} catch(e) {}

	// Remove focus borders on links in FF
	var nl = document.getElementsByTagName("a"), i;
	for (i=0; i<nl.length; i++) {
		nl[i].setAttribute("onmousedown", "return false;");
	}
}

/* 
	mmZebraList() v2.0
	Author: Mammon Media (c) 2006
	Needs: Class name, tag to apply background to + 2 colors
	Updated: Now looks for class name and also
	it ignores TH-cells in tables.
	Requires: document.getElementsByClassName()
*/
function mmZebraList(cls, tag, col1, col2) {

	var elms = document.getElementsByClassName(cls);
	for(var i = 0; i < elms.length; i++) {
		
		var r = elms[i].getElementsByTagName(tag);
		
		for(var n = 0; n < r.length; n++) {
			if(r[n].childNodes[0].nodeName != "TH")
				(n%2==0) ? r[n].style.backgroundColor = col1 : r[n].style.backgroundColor = col2;
		}
	}
}

mmMenu = {
	
	subColor: "#aea125",

	Activate: function() {
		var filename = document.location.href;
		filename = filename.substring(filename.lastIndexOf("/")+1, filename.length).toLowerCase();
		
		if (!filename) filename = "default.asp";
		
		var id = filename.substring(0, filename.lastIndexOf(".")).toLowerCase();
		id = id.substring(0, (id.indexOf("_") > 0) ? id.indexOf("_") : id.length);
		
		var item = document.getElementById(id);
		
		if(item)
			item.className += " active";
	},

	ActivateSub: function(container, tag) {
		
		// Get container
		var container = document.getElementById(container);
		
		// check if container element exists
		if (container) {
			
			// Get all LI elements in container
			var linklist = container.getElementsByTagName(tag);
	
			
			// Get filename and remove everything before last "/" + set everything to lowercase
			var filename = document.location.href;
			filename = filename.substring(filename.lastIndexOf("/")+1, filename.length).toLowerCase();

			for (var i = 0; i<linklist.length; i++) {
				var linkobj = linklist[i];
				
				if(linkobj.href) {
					var linkname = linkobj.href.substring(linkobj.href.lastIndexOf("/")+1, linkobj.href.length).toLowerCase();
				
					// Set color to subColor if link href = current page name	
					if(linkname == filename) linkobj.style.color = this.subColor;
				}
			}
		}
	}
}

mmImagePopups = {
	
	createLinks: function(cls) {
		var linklist = document.getElementsByClassName(cls);
		
		for (var i = 0; i < linklist.length; i++) {
			
			linklist[i].onclick = function (e) {

				(e) ? elm = e.target : elm = window.event.srcElement;
				if(elm.tagName != "A") elm = elm.parentNode;
				
				mmImagePopups.popup(elm);
								
				return false;
			
			}
		}
		
	},
	
	popup: function(elm) {
		// alert(elm.href);
		
		var c = $("bigscreenshot");
		var img = document.createElement("img");
		img.src = elm.href;
		
		c.innerHTML = "<a href=\"javascript:void(0);\" onclick=\"mmShowHide.hide('bigscreenshot')\">Stäng fönstret</a><br /><br />";
		c.innerHTML += "<img src=\"" + elm.href + "\" alt=\"screenshot\" />";
		
		mmShowHide.show("bigscreenshot")
		
	}
	
}




function getExternalLinks() {

	var linkList = document.getElementsByClassName("externalLink");
	
	for (var i = 0; i<linkList.length; i++) {
		linkList[i].onclick = function (e) {

			(e) ? elm = e.target : elm = window.event.srcElement;
			if(elm.tagName != "A") elm = elm.parentNode;

			window.open(elm.href, "external");
			
			return false;
		
		}
	}
}

// mmShowHide 1.0
// Show, hide or toggle object
mmShowHide = {
	// show object
	show: function(id) {
		document.getElementById(id).style.display = "block";
	},
	
	hide: function(id) {
		document.getElementById(id).style.display = "none";
	},
	
	toggle: function(id) {
		elm = document.getElementById(id);
		elm.style.display = elm.style.display == "block" ? "none" : "block";
	}
}


function pageInit() {

	// Activate menu
	mmMenu.Activate();
	mmMenu.ActivateSub("rightColSub", "a");
	mmImagePopups.createLinks("thumb");

}

// Attach events
addEvent(window, "load", noFocusNoFlicker);
addEvent(window, "load", pageInit);
