// 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;
}

// 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;
}

/* Use to build long strings
*  usage:
*  sb = new stringBuilder();
*  sb.append("somestring");
*  sb.append(" somestring2");
*  sb.toString();
* 
* @params {join} string Optional join char (whitespace, comma etc)
*/
function stringBuilder(join) {
	
	this._strings = new Array;
	this._join = (typeof join == "undefined") ? "" : join;
	
	stringBuilder.prototype.append = function(str) {
		this._strings.push(str);
	};
	
	stringBuilder.prototype.toString = function() {
		return this._strings.join(this._join);
	};
	
};

/*
* cross-platform get event target
* 
* @params {e} event
* @return object Event target
*/
function getTarget(e) {
	return (window.event) ? window.event.srcElement : e.target;
};

function _mmPageInit() {

	// Remove background flicker in IE
	try {
	  document.execCommand('BackgroundImageCache', false, true);
	} catch(e) {}

	mmImagePopups.createLinks("thumb");
	
};


mmImagePopups = {
	
	createLinks: function(cls) {
		var linklist = document.getElementsByClassName(cls);

		for (var i = 0; i < linklist.length; i++) {

			linklist[i].onclick = function (e) {

				elm = getTarget(e);
				if(elm.tagName != "A") elm = elm.parentNode;
				mmImagePopups.popup(elm);
				return false;

			}
		}
	},

	popup: function(elm) {
		var c = document.getElementById("bigimg");
		c.src = elm.href;
	}
};



// 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";
	}
}

/*
* @param id string Name of image to display (- .jpg);
*/
function openPanoramaPopup(id) {

	var win = window.open("/360.aspx?id=" + id, "panorama", "scrollbars=0,minimizable=0,width=520,height=300,resizable=0")

	if(win == null)
		alert("Du har en programvara som blockerar popup-fönster installerad");
	else
		win.focus();
	
}

// Attach events
addEvent(window, "load", _mmPageInit);
