var LayoutConfiguration = {    categories : new Array(),    imagePath : "",    initialized : false,    loadingImage : null,    menu : null,    menuDiv : null,    menuIframe : null,    portlets : new Array(),    showTimer : 0,    init : function (xmlHttpReq) {        var addDiv = document.createElement("div");        var arrow1 = new Image();        var arrow2 = new Image();        arrow1.src = this.imagePath + "/arrows/01_down.gif";        arrow2.src = this.imagePath + "/arrows/01_right.gif";        var body = document.getElementsByTagName("body")[0];        if (this.loadingImage) {            body.removeChild(this.loadingImage);            this.loadingImage = null;        }        addDiv.style.textAlign = "left";        addDiv.style.zIndex = "9";        addDiv.style.position = "relative";        addDiv.innerHTML = xmlHttpReq.responseText;        body.insertBefore(addDiv, body.childNodes[0]);        this.menu = document.getElementById("portal_add_content");        if (this.menu != null) {            var list = this.menu.childNodes;            for (var i = 0; i < list.length; i++) {                if (list[i].className != null && list[i].className.match("portal-add-content")) {                    this.menuDiv = list[i];                }                if (list[i].nodeName != null && list[i].nodeName.toLowerCase().match("iframe")) {                    this.menuIframe = list[i];                }            }            var elems = this.menu.getElementsByTagName("div");            for (var i = 0; i < elems.length; i++) {                if (elems[i].className == "layout_configuration_portlet") {                    this.portlets.push(elems[i]);                }                else if (elems[i].className == "layout_configuration_category") {                    this.categories.push(elems[i]);                }            }            Drag.makeDraggable(this.menu);            this.initialized = true;            this.toggle();            // Double foucus for IE bug            if (is_ie) {                document.getElementById("layout_configuration_content").focus();            }        }    },    toggle : function (ppid, plid, mainPath, imagePath) {        var menu = document.getElementById("portal_add_content");        if (!this.initialized) {            this.imagePath = imagePath            this.loadingImage = document.createElement("div");            var image = document.createElement("img");            this.loadingImage.className = "portal-add-content";            this.loadingImage.style.position = "absolute";            this.loadingImage.style.top = document.getElementsByTagName("body")[0].scrollTop + "px";            this.loadingImage.style.left = "0";            this.loadingImage.style.zIndex = "9";            image.src = this.imagePath + "/progress_bar/loading_animation.gif";            this.loadingImage.appendChild(image);            document.getElementsByTagName("body")[0].appendChild(this.loadingImage);            loadPage(mainPath + "/portal/render_portlet", "p_p_id=" + ppid + "&p_l_id=" + plid, LayoutConfiguration.returnPortlet);        }        else {            if (this.menu.style.display == "none") {                yPos = document.getElementsByTagName("body")[0].scrollTop;                this.menu.style["top"] = yPos + "px";                this.menu.style.display = "block";                this.menu.style.zIndex = "9";                if (is_ie) {                    var html = document.getElementsByTagName("html")[0];                    if (html.getAttribute('dir') == "rtl") {                        this.menu.style.right = "0";                        document.body.style.overflowX = 'hidden';                    }                }                this.menu.style.top = "0";                this.resize();                document.getElementById("layout_configuration_content").focus();            }            else {                this.menu.style.display = "none";            }        }    },    resize : function () {        if (this.menuIframe != null) {            this.menuIframe.height = this.menuDiv.offsetHeight;            this.menuIframe.width = this.menuDiv.offsetWidth;        }        if (!is_ie) {            document.getElementById("layout_configuration_content").focus();        }    },    returnPortlet : function (xmlHttpReq) {        LayoutConfiguration.init(xmlHttpReq);    },    startShowTimer : function (word) {        if (this.showTimer) {            clearTimeout(this.showTimer);            this.showTimer = 0;        }        this.showTimer = setTimeout("LayoutConfiguration.showMatching(\"" + word + "\")", 250);    },    showMatching : function (word) {        var portlets = this.portlets;        var categories = this.categories;        if (word == "*") {            for (var i = 0; i < portlets.length; i++) {                portlets[i].style.display = "block";            }            for (var i = 0; i < categories.length; i++) {                categories[i].style.display = "block";                this.toggleCategory(categories[i].getElementsByTagName("table")[0], "block");            }        }        else if (word == "") {            for (var i = 0; i < categories.length; i++) {                categories[i].style.display = "block";                this.toggleCategory(categories[i].getElementsByTagName("table")[0], "none");            }            for (var i = 0; i < portlets.length; i++) {                portlets[i].style.display = "block";            }        }        else {            word = word.toLowerCase();            for (var i = 0; i < categories.length; i++) {                categories[i].style.display = "none";            }            for (var i = 0; i < portlets.length; i++) {                if (portlets[i].id.toLowerCase().match(word)) {                    portlets[i].style.display = "block";                    this.showCategories(categories, portlets[i].id);                }                else {                    portlets[i].style.display = "none";                }            }        }        this.resize();    },    showCategories : function (categories, name) {        var colon = name.lastIndexOf(":");        while (colon != -1) {            name = name.substr(0, colon);            for (var i = 0; i < categories.length; i++) {                if (name.match(categories[i].id)) {                    categories[i].style.display = "block";                    this.toggleCategory(categories[i].getElementsByTagName("table")[0], "block");                }            }            colon = name.lastIndexOf(":");        }    },    toggleCategory : function (obj, display) {        var parent = obj;        while (parent.nodeName.toLowerCase() != "table") {            parent = parent.parentNode;        }        var data = parent.rows[1].cells[0];        var pane = getElementByClassName(data, "layout_configuration_category_pane");        var image = obj.getElementsByTagName("img")[0];        if (display) {            pane.style.display = display;            if (display.toLowerCase().match("block")) {                image.src = this.imagePath + "/arrows/01_down.gif";            }            else {                image.src = this.imagePath + "/arrows/01_right.gif";            }        }        else {            if (toggleByObject(pane, true)) {                image.src = this.imagePath + "/arrows/01_down.gif";            }            else {                image.src = this.imagePath + "/arrows/01_right.gif";            }        }    },    finished : function() {        //alert('in finiahed...');        document.getElementById('portal_add_content').style.display = 'none';        if (is_ie) {            var html = document.getElementsByTagName("html")[0];            // alert('in finished before if....');            if (html.getAttribute('dir') == "rtl") {                //   		   alert('in finished in if clause....');                window.location.reload(true);            }        }    }};