/**
 * @author sasonikolov
 */ 
    function ajaxen(obj) {
        var text = obj.url;            
        if (obj.str)
            text += "&" + obj.str;
        loggen('<a href="'+text+'" target="_blank">'+text+'</a>');
        RSAjax(obj);
    }
    function trim(text) {
        if (!text)
            return "";
        return text.replace(/^\s+|\s+$/g, '');
    }
    function floatval(text, maxwert, minwert) {
        var zahl = parseFloat(text);
        if (isNaN(zahl))
            zahl = 0.0;
        if (typeof(maxwert) != "undefined" && maxwert < zahl)
            zahl = maxwert;
        if (typeof(minwert) != "undefined" && minwert > zahl)
            zahl = minwert;
        return zahl;
    }
    function intval(text, maxwert, minwert) {
        var zahl = parseInt(text, 10);
        if (isNaN(zahl))
            zahl = 0;
        if (typeof(maxwert) != "undefined" && maxwert < zahl)
            zahl = maxwert;
        if (typeof(minwert) != "undefined" && minwert > zahl)
            zahl = minwert;
        return zahl;
    }
    function number_format(zahl) {
        return floatval(zahl).toFixed(2);
    }
	function function_exists(funktionsname) {
		if(typeof window[funktionsname] == 'function')
			return true; 
		return false;
	}
    function isset(variable) {
        if (typeof(variable) == "undefined")
            return false;
        return true;
    }
    function getXMLWertText(wert)
    {
        var text = "";       
        if (wert == null)
            return text;
        if (wert.childNodes[0])    
            text = wert.childNodes[0].nodeValue;
        return text;
    }
    function getXMLWertInt(wert)
    {
        var text = 0;
        if (wert == null)
            return text;
        if (wert.childNodes[0])
            text = intval(wert.childNodes[0].nodeValue);
        return text;
    }
    function getXMLWertToTimestamp(wert) {
        var varwert = trim(getXMLWertText(wert));
        if (varwert == "")
            return 0;
        var teile = varwert.split(".");
        if (teile.length < 3)
            return 0;
        var datum = new Date(intval(teile[2]), intval(teile[1])-1, intval(teile[0])); // de format 23.10.2009
        return datum.getTime();
    }
    function loggen(text, notreverse) {
        if (!system['debug'])
            return false;
        document.getElementById("statusmeldung").style.display = "block";
        var datum = new Date();
        if (isset(notreverse)) {
            document.getElementById("statusmeldung").innerHTML += "<div>"+ datum.toTimeString()+": " + text + "</div>";
        } else {
            document.getElementById("statusmeldung").innerHTML = "<div>"+ datum.toTimeString()+": " + text + document.getElementById("statusmeldung").innerHTML; 
        }
    }
    function getXML2Obj(xmlnode) {
        var knoten = new Object();
        if (!xmlnode)
            return null;
        knoten.Value = '';
        if (xmlnode.attributes && xmlnode.attributes.length > 0) { 
            knoten.Attribute = new Object();
            for (var i=0;i<xmlnode.attributes.length;i++) {
                knoten.Attribute[xmlnode.attributes[i].name] = xmlnode.attributes[i].value;
            } 
        }
        if (xmlnode.hasChildNodes()) {
            knoten.Kinder = new Object();
            for (var a=0;a<xmlnode.childNodes.length;a++) {
                var eintrag = xmlnode.childNodes[a]; 
                if (eintrag.nodeName.toLowerCase() == "#text" || eintrag.nodeName.toLowerCase() == "#cdata-section") {
                    knoten.Value += eintrag.nodeValue;
                } else {
                    if (!knoten.Kinder[eintrag.nodeName])
                        knoten.Kinder[eintrag.nodeName] = new Array();
                    knoten.Kinder[eintrag.nodeName].push(getXML2Obj(eintrag));
                }                
            }        
        }
        return knoten;
    }
    function checkResponse(text, leise) {
        if (text.substr(0, 7) == "ERROR: ") {
            if (leise) {} else {
                alert(text);
            }            
            return false;
        }
        return true;
    }
    function ermittelErrorCode(text) {
        text = trim(text);
        var errorCode = "";
        var erg = text.match(/#([0-9|a-z|A-Z]+)/);
        if (erg) {
            errorCode = trim(erg[1]);
        }
        return errorCode;
    }
    function InfoBoxZeigen(inhalt, fktwert, noschliessen) {
        var fkt = "InfoBoxSchliessen()";
        if (fktwert)
            fkt = fktwert;    
        var text = '<div style="text-align:right;"><a href="#" onclick="' + fkt + ';return false;" style="padding-right:5px;font-weight:bold;text-decoration:none;color:#00204e;">[X]</a></div>';
        text += inhalt;
        var elem;
        if (!document.getElementById("infobox")) {            
            elem = document.createElement("div");
            elem.id = "infobox";
            document.getElementsByTagName("body")[0].appendChild(elem);
        } else {
            elem = document.getElementById("infobox");
        }           
        elem.style.width = "500px";
        elem.style.height = "";
        elem.style.position = "absolute";
        elem.style.zIndex = 101;
        elem.style.border = "6px solid #00204e";
        elem.style.backgroundColor = "white";
        elem.style.top = "100px";
        elem.style.left = "50px";
        elem.style.overflow = "visible";
        elem.style.padding = "4px";
        elem.innerHTML = text;
        var clientBreite = document.body.clientWidth;
        var links = (clientBreite - parseInt(elem.style.width)) / 2;
        if (links > 0) {
            elem.style.left = links + "px";
        } else {
            elem.style.left = "50px";
        }
        elem.style.position = 'absolute';
        var toppos = 0;
        if (typeof(document.documentElement.scrollTop) != "undefined") {
            if (typeof(window.pageYOffset) && window.pageYOffset > 0 && window.pageYOffset > document.documentElement.scrollTop) {
                toppos = window.pageYOffset;
            } else {
                if (typeof(document.body.scrollTop) != "undefined" && document.body.scrollTop > document.documentElement.scrollTop) {
                    toppos = document.body.scrollTop;
                } else {
                    toppos = document.documentElement.scrollTop;
                }                
            }       
        } else {
            toppos = window.pageYOffset;
        }
        toppos += 50;    
        elem.style.top = toppos+"px";     
        BlenderZeigen(fktwert, noschliessen);
        elem.style.display = "block";
        if (intval(elem.offsetHeight) > document.body.clientHeight) {
            elem.style.overflow = "scroll";
            elem.style.height = (document.body.clientHeight - 100) +"px";
        }
    }
    function InfoBoxSchliessen()
    {
        BlenderSchliessen(); 
        if (document.getElementById("infobox")) {
            document.getElementById('infobox').style.display='none';
            document.getElementById('infobox').style.position='absolute';
        }
    }
    function BlenderZeigen(fktwert,noschliessen) 
    {
        var elem;
        if (!document.getElementById("blender")) {
            var elem = document.createElement("div");
            elem.id = "blender";
            document.getElementsByTagName("body")[0].appendChild(elem);
        } else {
            elem = document.getElementById("blender");
        }                
        elem.style.backgroundImage = "url(bilder/blender.gif)";
        elem.style.position = "absolute";
        elem.style.top = "0px";
        elem.style.left = "0px";
        elem.style.height = "100%";
        elem.style.width = "100%";
        elem.style.display = "block";
        elem.style.zIndex = 100;  
        if (noschliessen) {
            elem.onclick = null;
        } else {
            elem.onclick = InfoBoxSchliessen;
        }                
    }
    function BlenderSchliessen()
    {
        if (document.getElementById("blender"))
            document.getElementById("blender").style.display = "none";
    }
    function WarteSymbolSchliessen() {
        if (document.getElementById("wartesymbolbox"))
            document.getElementById("wartesymbolbox").style.display = "none";
    }
    function WarteSymbolEinblenden(textbelegung) {
        var text = '';
        if (isset(textbelegung)) {
            text = '... '+textbelegung+' ...';
        } else {
            text = '... bitte warten ...';
        }
        var elem;
        if (!document.getElementById("wartesymbolbox")) {            
            elem = document.createElement("div");
            elem.id = "wartesymbolbox";
            document.getElementsByTagName("body")[0].appendChild(elem);
        } else {
            elem = document.getElementById("wartesymbolbox");
        }           
        elem.style.width = "150px";
        elem.style.height = "60px";
        elem.style.position = "absolute";
        elem.style.zIndex = 110;
        elem.style.border = "6px solid #00204e";
        elem.style.backgroundColor = "#CCFFFF";
        elem.style.top = "100px";
        elem.style.left = "150px";
        elem.style.overflow = "visible";
        elem.style.padding = "4px";
        elem.style.fontWeight = "bold";
        elem.style.textAlign = "center";
        elem.innerHTML = text;
        var clientBreite = document.body.clientWidth;
        var links = (clientBreite - parseInt(elem.style.width)) / 2;
        if (links > 0) {
            elem.style.left = links + "px";
        } else {
            elem.style.left = "150px";
        }
        elem.style.position = 'absolute';
        var toppos = 0;
        if (typeof(document.documentElement.scrollTop) != "undefined") {
            if (typeof(window.pageYOffset) && window.pageYOffset > 0 && window.pageYOffset > document.documentElement.scrollTop) {
                toppos = window.pageYOffset;
            } else {
                toppos = document.documentElement.scrollTop;
            }       
        } else {
            toppos = window.pageYOffset;
        }
        toppos += 100;    
        elem.style.top = toppos+"px";     
        elem.style.display = "block";
    }
    function JSLaden(dateiname) {
        var d = new Date();
        var url = dateiname+".js?t="+d.getMilliseconds();
        ajaxen({
			asynchron: false,
            url: url,
            onError: function () {alert('Not Found: '+url);},
            onSuccess: function(h) {
                var code = "";
                code += h.responseText;
                if (window.execScript) {
                    window.execScript(code);
                } else {
                    var textnode = document.createTextNode(code);  
              		var snode = document.createElement('script');  
              		snode.setAttribute('type','text/javascript');
              		snode.appendChild(textnode);
              		document.getElementsByTagName('head')[0].appendChild(snode);
                }
            }
        });
    }
	function TemplateLaden(templatename) {
		if (!isset(system['templatepfad']))
			system['templatepfad'] = "";
        var d = new Date();
        var url = system['templatepfad'] + encodeURIComponent(templatename) + ".html?t"+d.getMilliseconds();
		var ttext = "";
        ajaxen({
			asynchron: false,
            url: url,
            onError: function () {alert('Not Found: '+url);},
            onSuccess: function(h) {
				var template = h.responseText;
				url = system['templatepfad'] + 'lang/' + encodeURIComponent(system['sprache']) + '/' + encodeURIComponent(templatename) + ".html?t"+d.getMilliseconds();
				ajaxen({
					asynchron: false,
					url: url,
					onError: function() {ttext = template;},
					onSuccess: function(h) {
						var text = template;
						var zeilen = h.responseText.split("\n");
						for (var i=0;i<zeilen.length;i++) {
							var sp = trim(zeilen[i].substr(0, zeilen[i].indexOf(':')));
							if (sp == "")
								continue;
							var spw = trim(zeilen[i].substr(zeilen[i].indexOf(':')+1));
			                var rg = new RegExp('#'+sp+'#', "g");
                			text = text.replace(rg, spw);
						}
						ttext = text;
					}
				});
            }
        });
		return ttext;
	}
    function inArray(array, wert) {
        for (var a=0;a<array.length;a++) {
            if (array[a] == wert)
                return true;
        }
        return false;
    }
