
var is_ie = !!document.all 

function register(func) 
{
    if (window.addEventListener) window.addEventListener("load", func, false);
    else if (window.attachEvent) window.attachEvent("onload", func);
}

function $() 
{
	var elements = new Array();

	for (var i = 0; i < arguments.length; i++) {
		var element = arguments[i];

		if (typeof element == 'string')
			element = document.getElementById(element)
				   || document.getElementsByName(element)[0]
//                 || document.getElementsByTagName(element)[0]
				   || undefined
			;

		if (arguments.length == 1) return element;
		elements.push(element);
	}
	return elements;
}


function sgxGetElementsByClass(classname) 
{
	var children = document.getElementsByTagName('*') || document.all;
	var elements = new Array();

	for (var i = 0; i < children.length; i++) {
		var child = children[i];
		var classNames = child.className.split(' ');
		for (var j = 0; j < classNames.length; j++) {
			if (classNames[j] == className) {
				elements.push(child);
				break;
			}
		}
	}

	return elements;
};

function sgxGetPos(obj) {
    if (!obj) return 0;
    
    var res = new Object();
    if (navigator.appName.indexOf("Microsoft")==-1) {
        if (navigator.vendor!=("Netscape6") && navigator.product!=("Gecko")) { //ns4
            res.x = obj.x;
            res.y = obj.y;
            res.w = 600;
            res.h = 60;
        }
        else { // ns6
            var x = 0, y = 0;
            res.w = obj.offsetWidth;
            res.h = obj.offsetHeight;
            while(obj.offsetParent) {
                x += obj.offsetLeft;
                y += obj.offsetTop;
                obj = obj.offsetParent;
            }
            res.x = x;
            res.y = y;
        }
    }
    else {
        res.w = obj.offsetWidth;
        res.h = obj.offsetHeight;
        var x = document.body.scrollLeft, y = document.body.scrollTop;
        while(obj.offsetParent) {
            x += obj.offsetLeft;
            y += obj.offsetTop;
            obj = obj.offsetParent;
        }
        res.x = x;
        res.y = y;
    }
    return res;
}

function sgxGetXMLReq() 
{
    var res = null;
    if (window.XMLHttpRequest) res = new XMLHttpRequest();
    else if (window.ActiveXObject) res = new ActiveXObject("Microsoft.XMLHTTP");
    return res;
}

function sgxReqSync(cmd) 
{
    var req = sgxGetXMLReq();
    req.open("GET", cmd, false);
    req.send(null);
    if (req.status != 200) {
        alert("Fehler beim Abrufen von Daten: " + req.statusText);
        return "";
    }
    return req.responseText;
}

function sgxReqAsync(cmd, func) 
{
    var req = sgxGetXMLReq();
    req.open("GET", cmd, false);
    req.send(function() {
		if (req.status != 200) {
			alert("Fehler beim Abrufen von Daten: " + req.statusText);
			return "";
		}
    });
}

function sgxHideObjects(hide) 
{
    var els = document.getElementsByTagName("object");
    if (hide) hide = "none";
    else hide = "block";
    for(var i in els) {
        if (els[i].style) els[i].style.display = hide;
    }
}


function sgxCalcWindowSize() 
{
	var obj=new Object();
	if (typeof (window.innerWidth) == 'number') {
		//Non-IE
		obj.w = window.innerWidth;
		obj.h = window.innerHeight;
	}
	else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight )) {
		//IE 6+ in 'standards compliant mode'
		obj.w = document.documentElement.clientWidth;
		obj.h = document.documentElement.clientHeight;
	}
	else if (document.body && ( document.body.clientWidth || document.body.clientHeight)) {
		//IE 4 compatible
		obj.w = document.body.clientWidth;
		obj.h = document.body.clientHeight;
	}
	return obj;
}

// tag: z.B. 'div'
function sgxWrapNode(node, tag, classname) 
{
    var wrapper = document.createElement(tag);
    wrapper.className = classname;
    var inner = node.parentNode.replaceChild(wrapper, node);
    wrapper.appendChild(inner);
}

// type: 1:elements, 2:attribute, 3:text etc.
function sgxIterateChilds(node, type, func) 
{
    if (!node) return false;

    if (node.hasChildNodes) {
		for (var i = 0; i < node.childNodes.length;i++) {
            sgxIterateChilds(node.childNodes[i], type, func);
		}
        if (node.nodeType == type) func(node);
    }
}

// element-id, diff to screen-size
function sgxAutoResize(element, dist) 
{
	var min_height;
	var el;

	function setHeight()
	{
		// if (document.attachEvent) dist--;
		var h = sgxCalcWindowSize().h - dist;
		if (h < min_height) h = min_height;
		el.style.height = h + "px";	
		return false
	}

	register(function() {
		el = $(element);
		min_height = el.offsetHeight
		// alert("auto_resize: " + min_height)
		window.onresize = setHeight
		setHeight()
	})
}


function sgxHiliteSearches() {
    var query = window.location.search;

    if (typeof decodeURI != 'undefined'){
        query = decodeURI(unescape(query))
    }
    else {
        return false
    }

    if (query) {
        var qfinder = new RegExp()
        qfinder.compile("search=([^&]*)", "gi")
        qq = qfinder.exec(query)

        if (qq && qq[1]){
            query = qq[1]

            if (!query) return false;
//            var queries = query.replace(/\+/g,' ').split(/\s+/);
            var queries = query.replace(/\+/g,' ').split(/&/);

            content = getContentArea();

            var word;
            var func = function(node) {
                var i = node.nodeValue.toLowerCase().indexOf(word.toLowerCase())
                if (i != -1) {
                    if (node.parentNode.className != "searchhl") {
                        par = node.parentNode;
                        contents = node.nodeValue;

                        hiword = document.createElement("span");
                        hiword.className = "searchhl";
                        hiword.appendChild(document.createTextNode(contents.substr(i, word.length)));

                        par.insertBefore(document.createTextNode(contents.substr(0, i)), node);
                        par.insertBefore(hiword, node);
                        par.insertBefore(document.createTextNode(contents.substr(i + word.length)), node);

                        par.removeChild(node);
                    }
                }
            }

            for (var q = 0; q < queries.length;q++) {
                word = queries[q];
                iterateChilds(content, 3, func);
            }
        }
    }
    return false;
}

function sgxToggleElement(id) {
	var el = $(id)
	if (el.style.display != 'none') el.style.display = 'none'
	else el.style.display = 'block'
}


register(sgxHiliteSearches)

function regInlineInfo(name, info_text) {
	var el = $(name)
	el.onfocus = function() {
		if (el.value == info_text) {
			// if (el.was_pw) el.type = "password"
			el.style.color = "black"
			el.value = ""
		}
	}
	el.onblur = function() {
		if (el.value == "") {
			/*if (!is_ie && el.type == "password") {
				el.type = "text"
				el.was_pw = true
			}*/
			el.value = info_text
			el.style.color = "#aaa"
		}
	}
	el.value = ""
	el.onblur()
}


