﻿if (typeof sr != "object") sr = new Object();

sr.userAgent = navigator.userAgent.toLowerCase();
sr.bSafari = (sr.userAgent.indexOf("safari") > -1);
sr.bOpera = (sr.userAgent.indexOf("opera") > -1);

sr.getH = function(elmLayer) {
	if (window.getComputedStyle) {
		var style=getComputedStyle(elmLayer, null);
		return parseInt(style.getPropertyValue('height'));
	}
	else if (elmLayer.style.pixelHeight)
		return elmLayer.style.pixelHeight;
	else if(elmLayer.offsetHeight)
		return elmLayer.offsetHeight;
}

sr.getW = function(elmLayer) {
	if (window.getComputedStyle) {
		var style=getComputedStyle(elmLayer, null);
		return parseInt(style.getPropertyValue('width'));
	}
	else if (elmLayer.style.pixelWidth)
		return elmLayer.style.pixelWidth;
	else if(elmLayer.offsetWidth)
		return elmLayer.offsetWidth;
}

sr.getDocumentHeight = function() {
	return (!sr.bSafari) ? document.documentElement.scrollHeight : document.body.offsetHeight;
}

sr.getDocumentWidth = function() {
	return (!sr.bSafari) ? document.documentElement.scrollWidth : document.body.offsetWidth;
}

sr.getClientHeight = function() {
	if (window.innerHeight)
		return window.innerHeight;
	else
		return document.documentElement.clientHeight;
}

sr.getClientWidth = function() {
	if (window.innerWidth)
		return window.innerWidth;
	else
		return (!sr.bSafari) ? document.documentElement.clientWidth : document.body.clientWidth;
}

sr.addEvent = function(obj, type, fn) {
	if (!document.getElementById)
		return;
	if (obj.addEventListener)
		obj.addEventListener(type, fn, false);
	else if (obj.attachEvent) {
		obj["e"+type+fn] = fn;
		obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
		obj.attachEvent("on"+type, obj[type+fn]);
	}
}

sr.getElementsByClassName = function(oElm, strTagName, strClassName){
    var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
        oElement = arrElements[i];      
        if(oRegExp.test(oElement.className)){
            arrReturnElements.push(oElement);
        }   
    }
    return (arrReturnElements)
}

sr.getDocumentScroll = function() {
	if (typeof window.pageXOffset != "undefined")
		return {x:window.pageXOffset, y:window.pageYOffset}
	else if (typeof window.scrollX != "undefined")
		return {x:window.scrollX, y:window.scrollY};
	else if (document.all) {
		if (document.compatMode && document.compatMode == "CSS1Compat")
			return {x:document.body.parentNode.scrollLeft, y:document.body.parentNode.scrollTop};
		else
			return {x:document.body.scrollLeft, y:document.body.scrollTop};
	}
	return {x:0, y:0};
}

sr.getScrollTop = function() {
	return sr.getDocumentScroll().y;
}

sr.getScrollLeft = function() {
	return sr.getDocumentScroll().x;
}

sr.centerElement = function(elmLayer) {
	elmLayer.style.visibility = "hidden";
	elmLayer.style.top = (sr.getClientHeight() / 2) + sr.getScrollTop() - (sr.getH(elmLayer) / 2) + "px";
	elmLayer.style.left = (sr.getClientWidth() / 2) + sr.getScrollLeft() - (sr.getW(elmLayer) / 2) + "px";
	elmLayer.style.visibility = "visible";
}

sr.createElement = function(strTagName, strId, objParent) {
	var objElement = document.createElement(strTagName);
	if (strId)
		objElement.id = strId;
	if (objParent)
		objParent.appendChild(objElement);
	return objElement;
}

sr.getXmlNodeValue = function(oXml, strNodeName) {
	var oNode = oXml.getElementsByTagName(strNodeName)[0];
	if (oNode == null || oNode.childNodes.length == 0) {
		return "";
	} else {
		var strOutput = "";
		for (var i = 0; i < oNode.childNodes.length; i++) {
			strOutput += oNode.childNodes[i].nodeValue;
		}
		return strOutput;
	}
}

sr.mouseCoordinates = { x: 0, y: 0};

sr.captureMouseCoordinates = function(e) {
	if (!e) var e = window.event;
	sr.mouseCoordinates.x = e.clientX;
	sr.mouseCoordinates.y = e.clientY;
}

if(!Array.prototype.push || [0].push(true)==true) {
	Array.prototype.push = function() {
		for(var i=0;i<arguments.length;i++){
			this[this.length]=arguments[i]
		};
		return this.length;
	}
}

sr.getQS = function(strWhich){
	var re = new RegExp( "[&\?]"+strWhich+"=([^&]*)&?", "i" );
	re.exec(window.location.href);
	return RegExp.$1;
}

/* Debug functions */

sr.traceCounter = 1;

sr.trace = function(strText) {
	var objTextarea = document.getElementById("tracearea");
	if (objTextarea == null) {
		objTextarea = sr.createElement("textarea", "tracearea", document.forms[0]);
		objTextarea.style.position = "absolute";
		objTextarea.style.top = 0;
		objTextarea.style.left = 0;
		objTextarea.style.height = 200 + "px";
		objTextarea.style.width = 400 + "px";
		objTextarea.style.zIndex = 100000;
		objTextarea.style.marginTop = 0;
		objTextarea.style.fontSize = 10 + "px";
	}
	objTextarea.value = sr.traceCounter + ". " + strText + "\n" + objTextarea.value;
	sr.traceCounter++;
}
