var mapapi = 'cbkort'; // cbkort eller openlayers

var profile = '';
var sessionid;
var idparam = '';
var idvalue = 'x';
var extent = '';
var clickevent = false;
var layers = [];
var mapWidth = '100';
var mapHeight = '100';
var slider2;

var d=document; // shorter reference
var nn4 = d.layers; // netscape 4?
var nua = navigator.userAgent;
var op=nua.indexOf('Opera')!=-1;
var nn6=((nua.indexOf('Netscape6/')!=-1)||(nua.indexOf('Netscape/7')!=-1))||(nua.indexOf('Gecko')!=-1);
var ie=(!nn4)&&(!op)&&(!nn6);

function doload()
{
    slider2=new accordion.slider("slider2");
    slider2.init("slider2",10,"open");

    if (extent == '') {
        extent = defaultextent;
        idvalue = '0';
    }
    addMap();
}

function addMap(){
    if (mapapi == 'cbkort') {
        var l = '';
        for (var i=0;i<layers.length;i++) {
            if(layers[i].visible) {
                l += layers[i].layername+' ';
            }
        }
        
        var url = '/cbkort?profile='+profile +
                '&sessionid='+sessionid +
                '&layers='+l +
                '&imgext='+extent +
                '&'+idparam+'='+idvalue +
                '&mapwidth='+mapWidth +
                '&mapheight='+mapHeight +
                '&map_size='+mapWidth+' '+mapHeight +
                '&imgxy='+(mapWidth/2)+' '+(mapHeight/2);
    
        var fset = document.getElementById('map');
        var f = document.createElement("iframe");
        f.id = 'mapframe';
        f.name = 'mapframe';
        f.scrolling = 'no';
        f.frameBorder = '0';
        f.src = 'loading.html';
        f.style.width='100%';
        f.style.height='100%';
        f.style.border='0px none';
        f.style.display='block';
        fset.appendChild(f);
        setTimeout("document.getElementById('mapframe').src = '"+url+"';",100);
    }
    else if (mapapi == 'openlayers') {
        init();
        document.getElementById('toolcontainer').style.display = 'none';
    }
}

function mapzoom(zoomdir)
{
    if (mapapi == 'cbkort') {
        try {
            window.frames.mapframe.arrowpanner_zoom(zoomdir);
        } catch (e) {}
    }
    else if (mapapi == 'openlayers') {
        if (zoomdir > 0) {
            mapComp.zoomIn();
        } else {
            mapComp.zoomOut();
        }
    }
}
function mapmove(movedir)
{
    if (mapapi == 'cbkort') {
        try {
            window.frames.mapframe.arrowpanner_move(movedir);
        } catch (e) {}
    }
    else if (mapapi == 'openlayers') {
        mapComp.pan(movedir);
    }
}

function mapClick(x,y)
{
    if(clickevent) {
        // Søg i rammerne
        var url =  "/cbkort?page=select-ramme";
        url+=  "&profilequery=info";
        url+=  "&profile="+profile;
        url+=  "&wkt=POINT(" + x + " " + y + ")";
        url+=  "&sessionid="+sessionid;
        try {
            var result = cbhttp_getRequestJSON(url);
            var pres = result.pcomposite[0].pcomposite[0].pcomposite[0].pcomposite;
            var antalrammer = parseInt(pres[0].col[3].Text);
            
            var antalbyomdannelse = 0;
            if (pres.length > 1) {
                antalbyomdannelse = parseInt(pres[1].col[3].Text);
            }
            
            if (!pres[0].rowlist)
                return;
            if(pres[0].rowlist.length > 0) {
                var rowl = pres[0].rowlist[0]; // kun den første ramme
                var pcolid;
                var defaultoverskrift;
                var overskrift;
                var tekst = '';
                var bydel;
                var subteksttable = '';
                var subtekst = '';
                var subheader = '';
                var karre = '';
                
                if (!rowl.row)
                    return;
                
                for (var i=0;i<rowl.row.length;i++)
                {
                    if(rowl.row[i].col) {
                        var co = rowl.row[i].col; // co er et array
                        var l = co[0].Text;
                        var v = co[1].Text;
                        var f = co[2].Text;
                        
                        if (f=='org-pcolid') {
                            pcolid = v;
                        } else {
                            if (l=='bydel') {
                                bydel = v;
                            } else if (l=='karre') {
                                karre = v;
                            } else if (l=='tekst') {
                                tekst = v;
                            } else if (l=='subheader') {
                                subheader = v;
                            } else if (l=='subtekst') {
                                subtekst = v;
                            } else if (l=='subteksttable') {
                                subteksttable = v;
                            } else if (l=='overskrift') {
                                overskrift = v;
                            } else if (l=='value') {
                                defaultoverskrift = v;
                            }
                        }
                    }
                }
                if(idvalue != 0) {
                    if(idvalue != bydel)
                        return;
                }
                    
                if (subteksttable) {
                    if (subteksttable.length > 0) {
                        var sub_array = subteksttable.split(',');
                        if (sub_array.length > 0) {
                            subteksttable = '<table class="subtable">';
                            for (var i=0;i<sub_array.length;i=i+2) {
                                subteksttable += '  <tr><td>'+sub_array[i]+'</td><td align="center">'+sub_array[i+1]+'</td></tr>';
                            }
                            subteksttable += '</table>';
                        }
                    }
                }
                else { subteksttable = '';}
                
                var e = document.getElementById('scrollbox_resulttext');
                var html = '';
                
                html +=    '<div id="resulttextsection-1">';
                if (overskrift+'' != 'undefined') {
                    html +=    '    <div class="textheader">' + (overskrift+'' != 'undefined' ? overskrift : defaultoverskrift) + '</div>' +
                               '    <div class="textcontent">' +(tekst+'' != 'undefined' ? tekst : '') + '</div>';
                }
                html +=    '</div>';
                html +=    '<div id="resulttextsection-2">' +
                           '    <div class="textheader">' + subheader + ' ('+defaultoverskrift.replace(/\*/,'')+')</div>' +
                           '    <div class="textcontent" style="padding-top:3px;">' +subteksttable + '</div>' +
                           '</div>' +
                           '<div id="resulttextsection-3">' +
                           '    <div class="textheader">ANVENDELSE</div>' +
                           '    <div class="textcontent">' +subtekst + '</div>' +
                           '</div>' +
                           '<div id="resulttextsection-4"><i>Karrenummer: ' + karre + '</i></div>' +
                           '';
                
                e.innerHTML = html;
/*
                var html = '<div id="resulttextsection-1">' +
                           '    <div id="resultheader" class="textheader">' ++ '</div>' +
                           '    <div id="resultcontent" class="textcontent">' ++ '</div>' +
                           '</div>';
*/
                slideContent('resulttextsection-1');


                
                var es = document.getElementById('starttext');
                var er = document.getElementById('resulttext');
                
                es.style.display = 'none';
                er.style.display = 'block';
                
                if (mapapi == 'cbkort') {
                    try {
                        window.frames.mapframe.mark_showInMap(pcolid);
                    } catch (e) {}
                }
            }
        } catch (e) { }
    }
}
function showStartText()
{
    window.frames.mapframe.spatialquery_removedynlayer();
    
    var es = document.getElementById('starttext');
    var er = document.getElementById('resulttext');
    
    es.style.display = 'block';
    er.style.display = 'none';
}

overviewimage_visible = false;
function overviewimageClick()
{
    var img = document.getElementById('overviewimage');
    var div = document.getElementById('overviewimagediv');
    if (overviewimage_visible) {
        img.className = 'overviewimage';
        img.useMap = '';
        img.onclick = overviewimageClick;
        div.className = 'overviewimagediv';
    } else {
        img.className = 'overviewimage_large';
        img.useMap = '#m_kbhkomm';
        img.onclick = (ie ? null : goToBydel);
        div.className = 'overviewimagediv_large';
    }
    overviewimage_visible = !overviewimage_visible;
}
function goToBydel(bydel)
{
    var url = null;
    switch(bydel)
    {
        case 1:
            url = 'http://www.kk.dk/?sc_itemid=DCB74CB0-3DB2-4FB2-A99E-30C5477CB2DB';
        break;
        case 2:
            url = 'http://www.kk.dk/?sc_itemid=1284A13C-AA6C-4998-8E54-4CD1013DBE12';
        break;
        case 3:
            url = 'http://www.kk.dk/?sc_itemid=9512EBDF-D994-458D-9820-006826DEA7E7';
        break;
        case 4:
            url = 'http://www.kk.dk/?sc_itemid=71C44583-235B-463C-95BC-729428B441ED';
        break;
        case 5:
            url = 'http://www.kk.dk/?sc_itemid=021C9E0A-5820-4A2B-9663-B682F9A6D305';
        break;
        case 6:
            url = 'http://www.kk.dk/?sc_itemid=A678757A-4392-4FA9-8777-F2CA31B7CEDA';
        break;
        case 7:
            url = 'http://www.kk.dk/?sc_itemid=F6035B59-3762-45CA-93FB-A6554C92D609';
        break;
        case 8:
            url = 'http://www.kk.dk/?sc_itemid=8C065B44-C7D3-44BA-A434-0C24412CBABE';
        break;
        case 9:
            url = 'http://www.kk.dk/?sc_itemid=19BC9D35-6368-47E1-9ADE-187CC2E23028';
        break;
        case 10:
            url = 'http://www.kk.dk/?sc_itemid=B07AABC6-BF5B-49DC-A6CB-ABA924892F40';
        break;
    }
    if (url) {
        parent.location.href = url;
    }
    //window.location.href = url;
    overviewimageClick();
}

function setLayer(e)
{
    var show = e.checked;
    var name = e.value;
    if (mapapi == 'cbkort') {
        try {
            if(show) {
                window.frames.mapframe.addLayer(name);
            } else {
                window.frames.mapframe.removeLayer(name);
            }
        } catch (e) {}
    }
    else if (mapapi == 'openlayers') {
        if(show) {
            mapComp.showLayer(name);
        } else {
            mapComp.hideLayer(name);
        }
    }
}

var activeTool = 'haand_ikon';
function setTool(e)
{
    if (e.id != activeTool && window.frames.mapframe.options_setTool) {
        document.getElementById(activeTool).src = 'kbh/'+activeTool+'.gif';
        activeTool = e.id;
        document.getElementById(activeTool).src = 'kbh/aktiv_'+activeTool+'.gif';
        window.frames.mapframe.options_setTool(activeTool);
    }
}

var slidesection = 1;
function prevSection()
{
    var div = 'textsection-'+(slidesection-1);
    var e = document.getElementById(div);
    if (e) {
        slideContent(div);
        slidesection--;
    }
}
function nextSection(smooth)
{
    var div = 'textsection-'+(slidesection+1);
    var e = document.getElementById(div);
    if (e) {
        slideContent(div);
        slidesection++;
    }
}
var slideResultsection = 1;
function prevResultSection(smooth)
{
    var div = 'resulttextsection-'+(slideResultsection-1);
    var e = document.getElementById(div);
    if (e) {
        slideContent(div);
        slideResultsection--;
    }
}
function nextResultSection(smooth)
{
    var div = 'resulttextsection-'+(slideResultsection+1);
    var e = document.getElementById(div);
    if (e) {
        if (smooth) {
            scrollContent('resulttext_scroll',1)
        } else {
            slideContent(div);
            slideResultsection++;
        }
    }
}



function createXMLHttpRequestObject ()
{
    var xmlhttpreq = false;
    try
    {
        if(window.XMLHttpRequest)
        {
           xmlhttpreq = new XMLHttpRequest(); 
        }
        else if(window.ActiveXObject)
        {
            try 
            {  xmlhttpreq = new ActiveXObject("Msxml2.XMLHTTP.3.0"); 
            }
            catch(e)
            {  xmlhttpreq = new ActiveXObject("Microsoft.XMLHTTP"); 
            }
        }
    }
    catch (e)
    {
       throw new Error (cbInfo.getString("standard.error.could_not_create_object", "XMLHTTP"));    
    }

    return xmlhttpreq;    
}
//returns the dom - if responseHandler pressent, then run async
function cbhttp_getRequestJSON(url,get,responseHandler)
{
    var xmlhttpreq = createXMLHttpRequestObject();
    var async = false;
    if(responseHandler)
    {
        async = true;
        xmlHttpObj.onreadystatechange=function() 
        {
            if (xmlHttpObj.readyState == 0)         { /* uninitialized */ }
            else if (xmlHttpObj.readyState == 1)    { /* loading */}            
            else if (xmlHttpObj.readyState == 2)    { /* loaded */ }
            else if (xmlHttpObj.readyState == 3)    { /* interactive */ }       
            else if (xmlHttpObj.readyState == 4)      /* complete */
            {
                responseHandler(XMLObjectifier.xmlToJSON(xmlhttpreq.responseXML));
            }
        }
    }
    try
    {
        if(get)
        {
            xmlhttpreq.open('GET', url, false);
            xmlhttpreq.send(null);
        }
        else
        {
            var baseurl = url.split('?');
            xmlhttpreq.open('POST', baseurl[0], false);
            xmlhttpreq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
            xmlhttpreq.send(baseurl[1]);
        }
        if(!async)
            return XMLObjectifier.xmlToJSON(xmlhttpreq.responseXML);
    }
    catch (e)
    {
        alert(e);
        return null;
    }
}
/*
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/
var XMLObjectifier = (function() {
    var _clone = function(obj){
        if(!!obj && typeof(obj)==="object"){
            function F(){}
            F.prototype = obj;
            return new F();
        }       
    };
    //Is Numeric check
    var isNumeric = function(s) {
        var testStr = "";
        if(!!s && typeof(s) === "string") { testStr = s; }
        var pattern = /^((-)?([0-9]*)((\.{0,1})([0-9]+))?$)/;
        return pattern.test(testStr);
    };
    var _self = {
    xmlToJSON: function(xdoc) {
        try {
            if(!xdoc){ return null; }
            var tmpObj = {};
                tmpObj.typeOf = "JSXBObject";
            var xroot = (xdoc.nodeType == 9)?xdoc.documentElement:xdoc;
                tmpObj.RootName = xroot.nodeName || "";
            if(xdoc.nodeType == 3 || xdoc.nodeType == 4) {
                return xdoc.nodeValue;
            }
            //Trim function
            function trim(s) {
                return s.replace(/^\s+|\s+$/gm,'');
            }                       
            //Alters attribute and collection names to comply with JS
            function formatName(name) {
                var regEx = /-/g;
                var tName = String(name).replace(regEx,"_");
                return tName;
            }
            //Set Attributes of an object
            function setAttributes(obj, node) {
                if(node.attributes.length > 0) {
                    var a = node.attributes.length-1;
                    var attName;
                    obj._attributes = [];
                    do { //Order is irrelevant (speed-up)
                        attName = String(formatName(node.attributes[a].name));
                        obj._attributes.push(attName);              
                        obj[attName] = trim(node.attributes[a].value);
                    } while(a--);
                }
            }
            
            //Node Prototype
            var _node = (function() {
                    var _self = {
                        activate: function() {
                            var nodes = [];
                            if(!!nodes) {
                                    nodes.getNodesByAttribute = function(attr, obj) {
                                        if(!!nodes && nodes.length > 0) {
                                            var out = [];
                                            var cNode;
                                            var maxLen = nodes.length -1;
                                            try {
                                                do {
                                                    cNode = nodes[maxLen];
                                                    if(cNode[attr] === obj) {
                                                        out.push(cNode);
                                                    }
                                                } while(maxLen--);
                                                out.reverse();
                                                return out;
                                            } catch(e) {return null;}
                                            return null;
                                        }
                                    };
                                    nodes.getNodeByAttribute = function(attr, obj) {
                                        if(!!nodes && nodes.length > 0) {
                                            var cNode;
                                            var maxLen = nodes.length -1;
                                            try {
                                                do {
                                                    cNode = nodes[maxLen];
                                                    if(cNode[attr] === obj) {
                                                        return cNode;
                                                    }
                                                } while(maxLen--);
                                            } catch(e) {return null;}
                                            return null;
                                        }
                                    };
                                    nodes.getNodesByValue = function(obj) {
                                        if(!!nodes && nodes.length > 0) {
                                            var out = [];
                                            var cNode;
                                            var maxLen = nodes.length -1;
                                            try {
                                                do {
                                                    cNode = nodes[maxLen];
                                                    if(!!cNode.Text && cNode.Text === obj) {
                                                        out.push(cNode);
                                                    }
                                                } while(maxLen--);
                                                return out;
                                            } catch(e) {return null;}
                                            return null;
                                        }
                                    };
                                    nodes.contains = function(attr, obj) {
                                        if(!!nodes && nodes.length > 0) {
                                            var maxLen = nodes.length -1;
                                            try {
                                                do {
                                                    if(nodes[maxLen][attr] === obj) {
                                                        return true;
                                                    }
                                                } while(maxLen--);
                                            } catch(e) {return false;}
                                            return false;
                                        }
                                    };
                                    nodes.indexOf = function(attr, obj) {
                                        var pos = -1;
                                        if(!!nodes && nodes.length > 0) {
                                            var maxLen = nodes.length -1;
                                            try {
                                                do {
                                                    if(nodes[maxLen][attr] === obj) {
                                                        pos = maxLen;
                                                    }
                                                } while(maxLen--);
                                            } catch(e) {return -1;}
                                            return pos;
                                        }
                                    };
                                    nodes.SortByAttribute = function(col, dir) {
                                        if(!!nodes && nodes.length > 0) {               
                                            function getValue(pair, idx) {
                                                var out = pair[idx];
                                                out = (bam.validation.isNumeric(out))?parseFloat(out):out;
                                                return out;
                                            }
                                            function sortFn(a, b) {
                                                var tA, tB;
                                                tA = getValue(a, col);
                                                tB = getValue(b, col);
                                                var res = (tA<tB)?-1:(tB<tA)?1:0;
                                                if(!!dir) {
                                                    res = (dir.toUpperCase() === "DESC")?(0 - res):res;
                                                }
                                                return res;
                                            }
                                            nodes.sort(sortFn);
                                        }
                                    };
                                    nodes.SortByValue = function(dir) {
                                        if(!!nodes && nodes.length > 0) {
                                            function getValue(pair) {
                                                var out = pair.Text;
                                                out = (bam.validation.isNumeric(out))?parseFloat(out):out;
                                                return out;
                                            }
                                            function sortFn(a, b) {
                                                var tA, tB;
                                                tA = getValue(a);
                                                tB = getValue(b);
                                                var res = (tA<tB)?-1:(tB<tA)?1:0;
                                                if(!!dir) {
                                                    res = (dir.toUpperCase() === "DESC")?(0 - res):res;
                                                }
                                                return res;
                                            }
                                            nodes.sort(sortFn);
                                        }
                                    };
                                    nodes.SortByNode = function(node, dir) {
                                        if(!!nodes && nodes.length > 0) {
                                            function getValue(pair, node) {
                                                var out = pair[node][0].Text;
                                                out = (bam.validation.isNumeric(out))?parseFloat(out):out;
                                                return out;
                                            }
                                            function sortFn(a, b) {                                     
                                                var tA, tB;
                                                tA = getValue(a, node);
                                                tB = getValue(b, node);
                                                var res = (tA<tB)?-1:(tB<tA)?1:0;
                                                if(!!dir) {
                                                    res = (dir.toUpperCase() === "DESC")?(0 - res):res;
                                                }
                                                return res;
                                            }
                                            nodes.sort(sortFn);
                                        }
                                  };
                            }
                            return nodes;
                        }
                    };
                    return _self;
            })();
            //Makes a new node of type _node;
            var makeNode = function() {
                var _fn = _clone(_node);                    
                return _fn.activate();
            }
            //Set collections
            function setHelpers(grpObj) {
                //Selects a node withing array where attribute = value
                grpObj.getNodeByAttribute = function(attr, obj) {
                    if(this.length > 0) {
                        var cNode;
                        var maxLen = this.length -1;
                        try {
                            do {
                                cNode = this[maxLen];
                                if(cNode[attr] == obj) {
                                    return cNode;
                                }
                            } while(maxLen--);
                        } catch(e) {return false;}
                        return false;
                    }
                };
                
                grpObj.contains = function(attr, obj) {
                    if(this.length > 0) {
                        var maxLen = this.length -1;
                        try {
                            do {
                                if(this[maxLen][attr] == obj) {
                                    return true;
                                }
                            } while(maxLen--);
                        } catch(e) {return false;}
                        return false;
                    }
                };
                
                grpObj.indexOf = function(attr, obj) {
                    var pos = -1;
                    if(this.length > 0) {
                        var maxLen = this.length -1;
                        try {
                            do {
                                if(this[maxLen][attr] == obj) {
                                    pos = maxLen;
                                }
                            } while(maxLen--);
                        } catch(e) {return -1;}
                        return pos;
                    }
                };
                
                grpObj.SortByAttribute = function(col, dir) {
                    if(this.length) {               
                        function getValue(pair, idx) {
                            var out = pair[idx];
                            out = (isNumeric(out))?parseFloat(out):out;
                            return out;
                        }
                        function sortFn(a, b) {
                            var res = 0;
                            var tA, tB;                     
                            tA = getValue(a, col);
                            tB = getValue(b, col);
                            if(tA < tB) { res = -1; } else if(tB < tA) { res = 1; }
                            if(dir) {
                                res = (dir.toUpperCase() == "DESC")?(0 - res):res;
                            }
                            return res;
                        }
                        this.sort(sortFn);
                    }
                };
                
                grpObj.SortByValue = function(dir) {
                    if(this.length) {
                        function getValue(pair) {
                            var out = pair.Text;
                            out = (isNumeric(out))?parseFloat(out):out;
                            return out;
                        }
                        function sortFn(a, b) {
                            var res = 0;
                            var tA, tB;
                            tA = getValue(a);
                            tB = getValue(b);
                            if(tA < tB) { res = -1; } else if(tB < tA) { res = 1; }
                            if(dir) {
                                res = (dir.toUpperCase() == "DESC")?(0 - res):res;
                            }
                            return res;
                        }
                        this.sort(sortFn);
                    }
                };
                
                grpObj.SortByNode = function(node, dir) {
                    if(this.length) {
                        function getValue(pair, node) {
                            var out = pair[node][0].Text;
                            out = (isNumeric(out))?parseFloat(out):out;
                            return out;
                        }
                        function sortFn(a, b) {
                            var res = 0;
                            var tA, tB;
                            tA = getValue(a, node);
                            tB = getValue(b, node);
                            if(tA < tB) { res = -1; } else if(tB < tA) { res = 1; }
                            if(dir) {
                                res = (dir.toUpperCase() == "DESC")?(0 - res):res;
                            }
                            return res;
                        }
                        this.sort(sortFn);
                    }
                };
            }
            //Recursive JSON Assembler
            //Set Object Nodes
            function setObjects(obj, node) {
                var elemName;   //Element name
                var cnode;  //Current Node
                var tObj;   //New subnode
                var cName = "";
                if(!node) { return null; }              
                //Set node attributes if any
                if(node.attributes.length > 0){setAttributes(obj, node);}               
                obj.Text = "";
                if(node.hasChildNodes()) {
                    var nodeCount = node.childNodes.length - 1; 
                    var n = 0;
                    do { //Order is irrelevant (speed-up)
                        cnode = node.childNodes[n];
                        switch(cnode.nodeType) {
                            case 1: //Node
                            //Process child nodes
                            obj._children = [];
                            //SOAP XML FIX to remove namespaces (i.e. soapenv:)
                            elemName = (cnode.localName)?cnode.localName:cnode.baseName;
                            elemName = formatName(elemName);
                            if(cName != elemName) { obj._children.push(elemName); }
                                //Create sub elemns array
                                if(!obj[elemName]) {
                                    obj[elemName] = []; //Create Collection
                                }
                                tObj = {};
                                obj[elemName].push(tObj);
                                if(cnode.attributes.length > 0) {
                                    setAttributes(tObj, cnode);
                                }
                                //Set Helper functions (contains, indexOf, sort, etc);
                                if(!obj[elemName].contains) {
                                    setHelpers(obj[elemName]);
                                }   
                            cName = elemName;
                            if(cnode.hasChildNodes()) {
                                setObjects(tObj, cnode); //Recursive Call
                            }
                            break;
                            case 3: //Text Value
                            obj.Text += trim(cnode.nodeValue);
                            break;
                            case 4: //CDATA
                            obj.Text += (cnode.text)?trim(cnode.text):trim(cnode.nodeValue);
                            break;
                        }
                    } while(n++ < nodeCount);
                }
            }           
            //RUN
            setObjects(tmpObj, xroot);
            //Clean-up memmory
            xdoc = null;
            xroot = null;
            return tmpObj;  
        } catch(e) {
                return null;    
        }   
    },

    //Converts Text to XML DOM
    textToXML: function(strXML) {
        var xmlDoc = null;
        try {
            xmlDoc = (document.all)?new ActiveXObject("Microsoft.XMLDOM"):new DOMParser();
            xmlDoc.async = false;
        } catch(e) {throw new Error("XML Parser could not be instantiated");}
        var out;
        try {
            if(document.all) {
                out = (xmlDoc.loadXML(strXML))?xmlDoc:false;
            } else {        
                out = xmlDoc.parseFromString(strXML, "text/xml");
            }
        } catch(e) { throw new Error("Error parsing XML string"); }
        return out;
    }
    };
    return _self;
})();














//MapComponent
var mapComp; 
function init()
{
    var extentArray = extent.split(' ');
    var options = {
        layers: layers,
        servicename: 'rammer',
        format: 'image/jpeg',
        projection: 'EPSG:25832',
        units: 'm',
        scalebarOutUnits: 'km',
        scalebarInUnits: 'm',
        extent: {x1:extentArray[0],y1:extentArray[1],x2:extentArray[2],y2:extentArray[3]},     //{x1:711400,y1:6167500,x2:717750,y2:6175200},
        maxextent: {x1:420000,y1:6000000,x2:900000,y2:6400000},
        mapextent: null
    };
    
    
    mapComp = new MapComponent ();
    mapComp.init('map',options);
    if (clickevent) {
        mapComp.setClickEvent(mapClick);
    }
    
    
    
    var e = document.getElementsByClassName('olControlScaleLineTop');
    if(e.length) {
        e[0].className = 'scalebar';
    }
    
    e = document.getElementById('OpenLayers.Control.PanZoom_9');
    if(e) {
        e.style.display = 'none';
    }
    
    e = document.getElementById('arrowpanner');
    if(e) {
        e.style.zIndex = '99';
    }
}









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;
}
