function dhtmlXContainer(obj) { var that = this; this.obj = obj; this.dhxcont = null; this.st = document.createElement("DIV"); this.st.style.position = "absolute"; this.st.style.left = "-200px"; this.st.style.top = "0px"; this.st.style.width = "100px"; this.st.style.height = "1px"; this.st.style.visibility = "hidden"; this.st.style.overflow = "hidden"; document.body.insertBefore(this.st, document.body.childNodes[0]); this.obj._getSt = function() { // return this.st object, needed for content moving return that.st; } this.obj.dv = "def"; // default this.obj.av = this.obj.dv; // active for usage this.obj.cv = this.obj.av; // current opened this.obj.vs = {}; // all this.obj.vs[this.obj.av] = {}; this.obj.view = function(name) { if (!this.vs[name]) { this.vs[name] = {}; this.vs[name].dhxcont = this.vs[this.dv].dhxcont; var mainCont = document.createElement("DIV"); mainCont.style.position = "relative"; mainCont.style.left = "0px"; mainCont.style.width = "200px"; mainCont.style.height = "200px"; mainCont.style.overflow = "hidden"; that.st.appendChild(mainCont); this.vs[name].dhxcont.mainCont[name] = mainCont; } this.avt = this.av; this.av = name; return this; } this.obj.setActive = function() { if (!this.vs[this.av]) return; this.cv = this.av; // detach current content if (this.vs[this.avt].dhxcont == this.vs[this.avt].dhxcont.mainCont[this.avt].parentNode) { that.st.appendChild(this.vs[this.avt].dhxcont.mainCont[this.avt]); if (this.vs[this.avt].menu) that.st.appendChild(document.getElementById(this.vs[this.avt].menuId)); if (this.vs[this.avt].toolbar) that.st.appendChild(document.getElementById(this.vs[this.avt].toolbarId)); if (this.vs[this.avt].sb) that.st.appendChild(document.getElementById(this.vs[this.avt].sbId)); } // adjust content if (this._isCell) { //this.adjustContent(this.childNodes[0], (this._noHeader?0:this.skinParams[this.skin]["cpanel_height"])); } //this.vs[this.av].dhxcont.mainCont[this.av].style.width = this.vs[this.av].dhxcont.mainCont[this.avt].style.width; //this.vs[this.av].dhxcont.mainCont[this.av].style.height = this.vs[this.av].dhxcont.mainCont[this.avt].style.height; if (this.vs[this.av].dhxcont != this.vs[this.av].dhxcont.mainCont[this.av].parentNode) { this.vs[this.av].dhxcont.insertBefore(this.vs[this.av].dhxcont.mainCont[this.av],this.vs[this.av].dhxcont.childNodes[this.vs[this.av].dhxcont.childNodes.length-1]); if (this.vs[this.av].menu) this.vs[this.av].dhxcont.insertBefore(document.getElementById(this.vs[this.av].menuId), this.vs[this.av].dhxcont.childNodes[0]); if (this.vs[this.av].toolbar) this.vs[this.av].dhxcont.insertBefore(document.getElementById(this.vs[this.av].toolbarId), this.vs[this.av].dhxcont.childNodes[(this.vs[this.av].menu?1:0)]); if (this.vs[this.av].sb) this.vs[this.av].dhxcont.insertBefore(document.getElementById(this.vs[this.av].sbId), this.vs[this.av].dhxcont.childNodes[this.vs[this.av].dhxcont.childNodes.length-1]); } if (this._doOnResize) this._doOnResize(); this.avt = null; } this.obj._viewRestore = function() { var t = this.av; if (this.avt) { this.av = this.avt; this.avt = null; } return t; } this.setContent = function(data) { /* this.dhxcont = data; this.dhxcont.innerHTML = "
"+ ""; this.dhxcont.mainCont = this.dhxcont.childNodes[0]; this.obj.vs[this.obj.av].dhxcont = this.dhxcont; */ this.obj.vs[this.obj.av].dhxcont = data; this.obj._init(); } this.obj._init = function() { this.vs[this.av].dhxcont.innerHTML = "
"+ ""; this.vs[this.av].dhxcont.mainCont = {}; this.vs[this.av].dhxcont.mainCont[this.av] = this.vs[this.av].dhxcont.childNodes[0]; } this.obj._genStr = function(w) { var s = ""; var z = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; for (var q=0; q 0) objB.appendChild(objA.childNodes[0]); //this.vs[a] = null; } cont.view(this.av).setActive(); } this.obj.adjustContent = function(parentObj, offsetTop, marginTop, notCalcWidth, offsetBottom) { this.vs[this.av].dhxcont.style.left = (this._offsetLeft||0)+"px"; this.vs[this.av].dhxcont.style.top = (this._offsetTop||0)+offsetTop+"px"; // var cw = parentObj.clientWidth+(this._offsetWidth||0); if (notCalcWidth !== true) this.vs[this.av].dhxcont.style.width = Math.max(0, cw)+"px"; if (notCalcWidth !== true) if (this.vs[this.av].dhxcont.offsetWidth > cw) this.vs[this.av].dhxcont.style.width = Math.max(0, cw*2-this.vs[this.av].dhxcont.offsetWidth)+"px"; // var ch = parentObj.clientHeight+(this._offsetHeight||0); this.vs[this.av].dhxcont.style.height = Math.max(0, ch-offsetTop)+(marginTop!=null?marginTop:0)+"px"; if (this.vs[this.av].dhxcont.offsetHeight > ch - offsetTop) this.vs[this.av].dhxcont.style.height = Math.max(0, (ch-offsetTop)*2-this.vs[this.av].dhxcont.offsetHeight)+"px"; if (offsetBottom) if (!isNaN(offsetBottom)) this.vs[this.av].dhxcont.style.height = Math.max(0, parseInt(this.vs[this.av].dhxcont.style.height)-offsetBottom)+"px"; // main window content if (this.vs[this.av]._minDataSizeH != null) { // height for menu/toolbar/status bar should be included if (parseInt(this.vs[this.av].dhxcont.style.height) < this.vs[this.av]._minDataSizeH) this.vs[this.av].dhxcont.style.height = this.vs[this.av]._minDataSizeH+"px"; } if (this.vs[this.av]._minDataSizeW != null) { if (parseInt(this.vs[this.av].dhxcont.style.width) < this.vs[this.av]._minDataSizeW) this.vs[this.av].dhxcont.style.width = this.vs[this.av]._minDataSizeW+"px"; } if (notCalcWidth !== true) { this.vs[this.av].dhxcont.mainCont[this.av].style.width = this.vs[this.av].dhxcont.clientWidth+"px"; // allow border to this.dhxcont.mainCont if (this.vs[this.av].dhxcont.mainCont[this.av].offsetWidth > this.vs[this.av].dhxcont.clientWidth) this.vs[this.av].dhxcont.mainCont[this.av].style.width = Math.max(0, this.vs[this.av].dhxcont.clientWidth*2-this.vs[this.av].dhxcont.mainCont[this.av].offsetWidth)+"px"; } var menuOffset = (this.vs[this.av].menu!=null?(!this.vs[this.av].menuHidden?this.vs[this.av].menuHeight:0):0); var toolbarOffset = (this.vs[this.av].toolbar!=null?(!this.vs[this.av].toolbarHidden?this.vs[this.av].toolbarHeight:0):0); var statusOffset = (this.vs[this.av].sb!=null?(!this.vs[this.av].sbHidden?this.vs[this.av].sbHeight:0):0); // allow border to this.dhxcont.mainCont this.vs[this.av].dhxcont.mainCont[this.av].style.height = this.vs[this.av].dhxcont.clientHeight+"px"; if (this.vs[this.av].dhxcont.mainCont[this.av].offsetHeight > this.vs[this.av].dhxcont.clientHeight) this.vs[this.av].dhxcont.mainCont[this.av].style.height = Math.max(0, this.vs[this.av].dhxcont.clientHeight*2-this.vs[this.av].dhxcont.mainCont[this.av].offsetHeight)+"px"; this.vs[this.av].dhxcont.mainCont[this.av].style.height = Math.max(0, parseInt(this.vs[this.av].dhxcont.mainCont[this.av].style.height)-menuOffset-toolbarOffset-statusOffset)+"px"; } this.obj.coverBlocker = function() { return this.vs[this.av].dhxcont.childNodes[this.vs[this.av].dhxcont.childNodes.length-1]; } this.obj.showCoverBlocker = function() { this.coverBlocker().style.display = ""; } this.obj.hideCoverBlocker = function() { this.coverBlocker().style.display = "none"; } this.obj.updateNestedObjects = function() { if (this.vs[this.av].grid) { this.vs[this.av].grid.setSizes(); } if (this.vs[this.av].sched) { this.vs[this.av].sched.setSizes(); } if (this.vs[this.av].tabbar) { this.vs[this.av].tabbar.adjustOuterSize(); } if (this.vs[this.av].folders) { this.vs[this.av].folders.setSizes(); } if (this.vs[this.av].editor) { if (!_isIE) this.vs[this.av].editor._prepareContent(true); this.vs[this.av].editor.setSizes(); } //if (_isOpera) { var t = this; window.setTimeout(function(){t.editor.adjustSize();},10); } else { this.vs[this.av].editor.adjustSize(); } } if (this.vs[this.av].layout) { if (this.vs[this.av]._isAcc && this.vs[this.av].skin == "dhx_skyblue") { this.vs[this.av].layoutObj.style.width = parseInt(this.vs[this.av].dhxcont.mainCont[this.av].style.width)+2+"px"; this.vs[this.av].layoutObj.style.height = parseInt(this.vs[this.av].dhxcont.mainCont[this.av].style.height)+2+"px"; } else { this.vs[this.av].layoutObj.style.width = this.vs[this.av].dhxcont.mainCont[this.av].style.width; this.vs[this.av].layoutObj.style.height = this.vs[this.av].dhxcont.mainCont[this.av].style.height; } this.vs[this.av].layout.setSizes(); } if (this.vs[this.av].accordion != null) { if (this.vs[this.av].skin == "dhx_web") { this.vs[this.av].accordionObj.style.width = parseInt(this.vs[this.av].dhxcont.mainCont[this.av].style.width)+"px"; this.vs[this.av].accordionObj.style.height = parseInt(this.vs[this.av].dhxcont.mainCont[this.av].style.height)+"px"; } else { this.vs[this.av].accordionObj.style.width = parseInt(this.vs[this.av].dhxcont.mainCont[this.av].style.width)+2+"px"; this.vs[this.av].accordionObj.style.height = parseInt(this.vs[this.av].dhxcont.mainCont[this.av].style.height)+2+"px"; } this.vs[this.av].accordion.setSizes(); } // docked layout's cell if (this.vs[this.av].dockedCell) { this.vs[this.av].dockedCell.updateNestedObjects(); } /* if (win.accordion != null) { win.accordion.setSizes(); } if (win.layout != null) { win.layout.setSizes(win); } */ if (this.vs[this.av].form) this.vs[this.av].form.setSizes(); } /** * @desc: attaches a status bar to a window * @type: public */ this.obj.attachStatusBar = function() { if (this.vs[this.av].sb) return; var sbObj = document.createElement("DIV"); if (this._isCell) { sbObj.className = "dhxcont_sb_container_layoutcell"; } else { sbObj.className = "dhxcont_sb_container"; } sbObj.id = "sbobj_"+this._genStr(12); sbObj.innerHTML = "
"; if (this.cv == this.av) this.vs[this.av].dhxcont.insertBefore(sbObj, this.vs[this.av].dhxcont.childNodes[this.vs[this.av].dhxcont.childNodes.length-1]); else that.st.appendChild(sbObj); sbObj.setText = function(text) { this.childNodes[0].innerHTML = text; } sbObj.getText = function() { return this.childNodes[0].innerHTML; } sbObj.onselectstart = function(e) { e=e||event; e.returnValue=false; return false; } this.vs[this.av].sb = sbObj; this.vs[this.av].sbHeight = (this.skin=="dhx_web"?41:(this.skin=="dhx_skyblue"?23:sbObj.offsetHeight)); this.vs[this.av].sbId = sbObj.id; if (this._doOnAttachStatusBar) this._doOnAttachStatusBar("init"); this.adjust(); return this.vs[this._viewRestore()].sb; } /** * @desc: detaches a status bar from a window * @type: public */ this.obj.detachStatusBar = function() { if (!this.vs[this.av].sb) return; this.vs[this.av].sb.setText = null; this.vs[this.av].sb.getText = null; this.vs[this.av].sb.onselectstart = null; this.vs[this.av].sb.parentNode.removeChild(this.vs[this.av].sb); this.vs[this.av].sb = null; this.vs[this.av].sbHeight = null; this.vs[this.av].sbId = null; this._viewRestore(); if (this._doOnAttachStatusBar) this._doOnAttachStatusBar("unload"); } this.obj.getFrame = function(){ return this.getView()._frame; }; this.obj.getView = function(name){ return this.vs[name||this.av]; }; /** * @desc: attaches a dhtmlxMenu to a window * @type: public */ this.obj.attachMenu = function(skin) { if (this.vs[this.av].menu) return; var menuObj = document.createElement("DIV"); menuObj.style.position = "relative"; menuObj.style.overflow = "hidden"; menuObj.id = "dhxmenu_"+this._genStr(12); if (this.cv == this.av) this.vs[this.av].dhxcont.insertBefore(menuObj, this.vs[this.av].dhxcont.childNodes[0]); else that.st.appendChild(menuObj); this.vs[this.av].menu = new dhtmlXMenuObject(menuObj.id, (skin||this.skin)); this.vs[this.av].menuHeight = (this.skin=="dhx_web"?29:menuObj.offsetHeight); this.vs[this.av].menuId = menuObj.id; if (this._doOnAttachMenu) this._doOnAttachMenu("init"); this.adjust(); return this.vs[this._viewRestore()].menu; } /** * @desc: detaches a dhtmlxMenu from a window * @type: public */ this.obj.detachMenu = function() { if (!this.vs[this.av].menu) return; var menuObj = document.getElementById(this.vs[this.av].menuId); this.vs[this.av].menu.unload(); this.vs[this.av].menu = null; this.vs[this.av].menuId = null; this.vs[this.av].menuHeight = null; menuObj.parentNode.removeChild(menuObj); menuObj = null; this._viewRestore(); if (this._doOnAttachMenu) this._doOnAttachMenu("unload"); } /** * @desc: attaches a dhtmlxToolbar to a window * @type: public */ this.obj.attachToolbar = function(skin) { if (this.vs[this.av].toolbar) return; var toolbarObj = document.createElement("DIV"); toolbarObj.style.position = "relative"; toolbarObj.style.overflow = "hidden"; toolbarObj.id = "dhxtoolbar_"+this._genStr(12); if (this.cv == this.av) this.vs[this.av].dhxcont.insertBefore(toolbarObj, this.vs[this.av].dhxcont.childNodes[(this.vs[this.av].menu!=null?1:0)]); else that.st.appendChild(toolbarObj); this.vs[this.av].toolbar = new dhtmlXToolbarObject(toolbarObj.id, (skin||this.skin)); this.vs[this.av].toolbarHeight = (this.skin=="dhx_web"?41:toolbarObj.offsetHeight+(this._isLayout&&this.skin=="dhx_skyblue"?2:0)); this.vs[this.av].toolbarId = toolbarObj.id; if (this._doOnAttachToolbar) this._doOnAttachToolbar("init"); this.adjust(); return this.vs[this._viewRestore()].toolbar; } /** * @desc: detaches a dhtmlxToolbar from a window * @type: public */ this.obj.detachToolbar = function() { if (!this.vs[this.av].toolbar) return; var toolbarObj = document.getElementById(this.vs[this.av].toolbarId); this.vs[this.av].toolbar.unload(); this.vs[this.av].toolbar = null; this.vs[this.av].toolbarId = null; this.vs[this.av].toolbarHeight = null; toolbarObj.parentNode.removeChild(toolbarObj); toolbarObj = null; this._viewRestore(); if (this._doOnAttachToolbar) this._doOnAttachToolbar("unload"); } /** * @desc: attaches a dhtmlxGrid to a window * @type: public */ this.obj.attachGrid = function() { if (this._isWindow && this.skin == "dhx_skyblue") { this.vs[this.av].dhxcont.mainCont[this.av].style.border = "#a4bed4 1px solid"; this._redraw(); } var obj = document.createElement("DIV"); obj.id = "dhxGridObj_"+this._genStr(12); obj.style.width = "100%"; obj.style.height = "100%"; obj.cmp = "grid"; document.body.appendChild(obj); this.attachObject(obj.id, false, true); this.vs[this.av].grid = new dhtmlXGridObject(obj.id); this.vs[this.av].grid.setSkin(this.skin); if (this.skin != "dhx_web") { this.vs[this.av].grid.entBox.style.border = "0px solid white"; this.vs[this.av].grid._sizeFix=0; } this.vs[this.av].gridId = obj.id; this.vs[this.av].gridObj = obj; return this.vs[this._viewRestore()].grid; } /** * @desc: attaches a dhtmlxScheduler to a window * @type: public */ this.obj.attachScheduler = function(day,mode) { var obj = document.createElement("DIV"); obj.id = "dhxSchedObj_"+this._genStr(12); obj.innerHTML = '
 
 
'; document.body.appendChild(obj.firstChild); this.attachObject(obj.id, false, true); this.vs[this.av].sched = scheduler; this.vs[this.av].schedId = obj.id; scheduler.setSizes = scheduler.update_view; scheduler.destructor=function(){}; scheduler.init(obj.id,day,mode); return this.vs[this._viewRestore()].sched; } /** * @desc: attaches a dhtmlxTree to a window * @param: rootId - not mandatory, tree super root, see dhtmlxTree documentation for details * @type: public */ this.obj.attachTree = function(rootId) { if (this._isWindow && this.skin == "dhx_skyblue") { this.vs[this.av].dhxcont.mainCont[this.av].style.border = "#a4bed4 1px solid"; this._redraw(); } var obj = document.createElement("DIV"); obj.id = "dhxTreeObj_"+this._genStr(12); obj.style.width = "100%"; obj.style.height = "100%"; obj.cmp = "tree"; document.body.appendChild(obj); this.attachObject(obj.id, false, true); this.vs[this.av].tree = new dhtmlXTreeObject(obj.id, "100%", "100%", (rootId||0)); this.vs[this.av].tree.setSkin(this.skin); // this.tree.allTree.style.paddingTop = "2px"; this.vs[this.av].tree.allTree.childNodes[0].style.marginTop = "2px"; this.vs[this.av].tree.allTree.childNodes[0].style.marginBottom = "2px"; this.vs[this.av].treeId = obj.id; this.vs[this.av].treeObj = obj; return this.vs[this._viewRestore()].tree; } /** * @desc: attaches a dhtmlxTabbar to a window * @type: public */ this.obj.attachTabbar = function(mode) { if (this._isWindow && this.skin == "dhx_skyblue") { this.vs[this.av].dhxcont.style.border = "none"; this.setDimension(this.w, this.h); } var obj = document.createElement("DIV"); obj.id = "dhxTabbarObj_"+this._genStr(12); obj.style.width = "100%"; obj.style.height = "100%"; obj.style.overflow = "hidden"; obj.cmp = "tabbar"; document.body.appendChild(obj); this.attachObject(obj.id, false, true); // manage dockcell if exists if (this.className == "dhtmlxLayoutSinglePoly") this.hideHeader(); // this.vs[this.av].tabbar = new dhtmlXTabBar(obj.id, mode||"top", 20); if (!this._isWindow) this.vs[this.av].tabbar._s.expand = true; this.vs[this.av].tabbar.setSkin(this.skin); this.vs[this.av].tabbar.adjustOuterSize(); this.vs[this.av].tabbarId = obj.id; this.vs[this.av].tabbarObj = obj; return this.vs[this._viewRestore()].tabbar; } /** * @desc: attaches a dhtmlxFolders to a window * @type: public */ this.obj.attachFolders = function() { if (this._isWindow && this.skin == "dhx_skyblue") { this.vs[this.av].dhxcont.mainCont[this.av].style.border = "#a4bed4 1px solid"; this._redraw(); } var obj = document.createElement("DIV"); obj.id = "dhxFoldersObj_"+this._genStr(12); obj.style.width = "100%"; obj.style.height = "100%"; obj.style.overflow = "hidden"; obj.cmp = "folders"; document.body.appendChild(obj); this.attachObject(obj.id, false, true); this.vs[this.av].folders = new dhtmlxFolders(obj.id); this.vs[this.av].folders.setSizes(); this.vs[this.av].foldersId = obj.id; this.vs[this.av].foldersObj = obj; return this.vs[this._viewRestore()].folders; } /** * @desc: attaches a dhtmlxAccordion to a window * @type: public */ this.obj.attachAccordion = function() { if (this._isWindow && this.skin == "dhx_skyblue") { this.vs[this.av].dhxcont.mainCont[this.av].style.border = "#a4bed4 1px solid"; this._redraw(); } var obj = document.createElement("DIV"); obj.id = "dhxAccordionObj_"+this._genStr(12); if (this.skin == "dhx_web") { obj.style.left = "0px"; obj.style.top = "0px"; obj.style.width = parseInt(this.vs[this.av].dhxcont.mainCont[this.av].style.width)+"px"; obj.style.height = parseInt(this.vs[this.av].dhxcont.mainCont[this.av].style.height)+"px"; } else { obj.style.left = "-1px"; obj.style.top = "-1px"; obj.style.width = parseInt(this.vs[this.av].dhxcont.mainCont[this.av].style.width)+2+"px"; obj.style.height = parseInt(this.vs[this.av].dhxcont.mainCont[this.av].style.height)+2+"px"; } // obj.style.position = "relative"; obj.cmp = "accordion"; document.body.appendChild(obj); this.attachObject(obj.id, false, true); this.vs[this.av].accordion = new dhtmlXAccordion(obj.id, this.skin); this.vs[this.av].accordion.setSizes(); this.vs[this.av].accordionId = obj.id; this.vs[this.av].accordionObj = obj; return this.vs[this._viewRestore()].accordion; } /** * @desc: attaches a dhtmlxLayout to a window * @param: view - layout's pattern * @param: skin - layout's skin * @type: public */ this.obj.attachLayout = function(view, skin) { // attach layout to layout if (this._isCell && this.skin == "dhx_skyblue") { this.hideHeader(); this.vs[this.av].dhxcont.style.border = "0px solid white"; this.adjustContent(this.childNodes[0], 0); } if (this._isCell && this.skin == "dhx_web") { this.hideHeader(); } var obj = document.createElement("DIV"); obj.id = "dhxLayoutObj_"+this._genStr(12); obj.style.overflow = "hidden"; obj.style.position = "absolute"; obj.style.left = "0px"; obj.style.top = "0px"; obj.style.width = parseInt(this.vs[this.av].dhxcont.mainCont[this.av].style.width)+"px"; obj.style.height = parseInt(this.vs[this.av].dhxcont.mainCont[this.av].style.height)+"px"; if (this._isAcc && this.skin == "dhx_skyblue") { obj.style.left = "-1px"; obj.style.top = "-1px"; obj.style.width = parseInt(this.vs[this.av].dhxcont.mainCont[this.av].style.width)+2+"px"; obj.style.height = parseInt(this.vs[this.av].dhxcont.mainCont[this.av].style.height)+2+"px"; } // needed for layout's init obj.dhxContExists = true; obj.cmp = "layout"; document.body.appendChild(obj); this.attachObject(obj.id, false, true); this.vs[this.av].layout = new dhtmlXLayoutObject(obj, view, (skin||this.skin)); // window/layout events configuration if (this._isWindow) this.attachEvent("_onBeforeTryResize", this.vs[this.av].layout._defineWindowMinDimension); this.vs[this.av].layoutId = obj.id; this.vs[this.av].layoutObj = obj; // this.adjust(); return this.vs[this._viewRestore()].layout; } /** * @desc: attaches a dhtmlxEditor to a window * @param: skin - not mandatory, editor's skin * @type: public */ this.obj.attachEditor = function(skin) { if (this._isWindow && this.skin == "dhx_skyblue") { this.vs[this.av].dhxcont.mainCont[this.av].style.border = "#a4bed4 1px solid"; this._redraw(); } var obj = document.createElement("DIV"); obj.id = "dhxEditorObj_"+this._genStr(12); obj.style.position = "relative"; obj.style.display = "none"; obj.style.overflow = "hidden"; obj.style.width = "100%"; obj.style.height = "100%"; obj.cmp = "editor"; document.body.appendChild(obj); // this.attachObject(obj.id, false, true); // this.vs[this.av].editor = new dhtmlXEditor(obj.id, this.skin); this.vs[this.av].editorId = obj.id; this.vs[this.av].editorObj = obj; return this.vs[this._viewRestore()].editor; } this.obj.attachMap = function(opts) { var obj = document.createElement("DIV"); obj.id = "GMapsObj_"+this._genStr(12); obj.style.position = "relative"; obj.style.display = "none"; obj.style.overflow = "hidden"; obj.style.width = "100%"; obj.style.height = "100%"; obj.cmp = "gmaps"; document.body.appendChild(obj); this.attachObject(obj.id, false, true); if (!opts) opts = {center: new google.maps.LatLng(40.719837,-73.992348), zoom: 11, mapTypeId: google.maps.MapTypeId.ROADMAP}; this.vs[this.av].gmaps = new google.maps.Map(obj, opts); return this.vs[this.av].gmaps; } /** * @desc: attaches an object into a window * @param: obj - object or object id * @param: autoSize - set true to adjust a window to object's dimension * @type: public */ this.obj.attachObject = function(obj, autoSize, localCall) { if (typeof(obj) == "string") obj = document.getElementById(obj); if (autoSize) { obj.style.visibility = "hidden"; obj.style.display = ""; var objW = obj.offsetWidth; var objH = obj.offsetHeight; } this._attachContent("obj", obj); if (autoSize && this._isWindow) { obj.style.visibility = "visible"; this._adjustToContent(objW, objH); /* this._engineAdjustWindowToContent(this, objW, objH); */ } if (!localCall) this._viewRestore(); } /** * * */ this.obj.detachObject = function(remove, moveTo) { // detach dhtmlx components var p = null; var pObj = null; var t = ["tree","grid","layout","tabbar","accordion","folders"]; for (var q=0; q 0) pObj.removeChild(pObj.childNodes[0]); pObj.parentNode.removeChild(pObj); pObj = null; p = null; } else { document.body.appendChild(pObj); pObj.style.display = "none"; } this.vs[this.av][t[q]] = null; this.vs[this.av][t[q]+"Id"] = null; this.vs[this.av][t[q]+"Obj"] = null; } } if (p != null && pObj != null) return new Array(p, pObj); // detach any other content if (remove && this.vs[this.av]._frame) { this._detachURLEvents(); this.vs[this.av]._frame = null; } var objA = this.vs[this.av].dhxcont.mainCont[this.av]; while (objA.childNodes.length > 0) { if (remove == true) { // add frame events removing objA.removeChild(objA.childNodes[0]); } else { var obj = objA.childNodes[0]; if (moveTo != null) { if (typeof(moveTo) != "object") moveTo = document.getElementById(moveTo); moveTo.appendChild(obj); } else { document.body.appendChild(obj); } obj.style.display = "none"; } } } /** * @desc: appends an object into a window * @param: obj - object or object id * @type: public */ this.obj.appendObject = function(obj) { if (typeof(obj) == "string") { obj = document.getElementById(obj); } this._attachContent("obj", obj, true); } /** * @desc: attaches an html string as an object into a window * @param: str - html string * @type: public */ this.obj.attachHTMLString = function(str) { this._attachContent("str", str); var z=str.match(/]*>[^\f]*?<\/script>/g)||[]; for (var i=0; i]*>/g,"") if (window.execScript) window.execScript(s); else window.eval(s); } } /** * @desc: attaches an url into a window * @param: url * @param: ajax - loads an url with ajax * @type: public */ this.obj.attachURL = function(url, ajax) { this._attachContent((ajax==true?"urlajax":"url"), url, false); this._viewRestore(); } this.obj.adjust = function() { if (this.skin == "dhx_skyblue") { if (this.vs[this.av].menu) { if (this._isWindow || this._isLayout) { this.vs[this.av].menu._topLevelOffsetLeft = 0; document.getElementById(this.vs[this.av].menuId).style.height = "26px"; this.vs[this.av].menuHeight = document.getElementById(this.vs[this.av].menuId).offsetHeight; if (this._doOnAttachMenu) this._doOnAttachMenu("show"); } if (this._isCell) { document.getElementById(this.vs[this.av].menuId).className += " in_layoutcell"; // document.getElementById(this.menuId).style.height = "25px"; this.vs[this.av].menuHeight = 25; } if (this._isAcc) { document.getElementById(this.vs[this.av].menuId).className += " in_acccell"; // document.getElementById(this.menuId).style.height = "25px"; this.vs[this.av].menuHeight = 25; } if (this._doOnAttachMenu) this._doOnAttachMenu("adjust"); } if (this.vs[this.av].toolbar) { if (this._isWindow || this._isLayout) { document.getElementById(this.vs[this.av].toolbarId).style.height = "29px"; this.vs[this.av].toolbarHeight = document.getElementById(this.vs[this.av].toolbarId).offsetHeight; if (this._doOnAttachToolbar) this._doOnAttachToolbar("show"); } if (this._isCell) { document.getElementById(this.vs[this.av].toolbarId).className += " in_layoutcell"; } if (this._isAcc) { document.getElementById(this.vs[this.av].toolbarId).className += " in_acccell"; } } } if (this.skin == "dhx_web") { } } // attach content obj|url this.obj._attachContent = function(type, obj, append) { // clear old content if (append !== true) { if (this.vs[this.av]._frame) { this._detachURLEvents(); this.vs[this.av]._frame = null; } while (this.vs[this.av].dhxcont.mainCont[this.av].childNodes.length > 0) this.vs[this.av].dhxcont.mainCont[this.av].removeChild(this.vs[this.av].dhxcont.mainCont[this.av].childNodes[0]); } // attach if (type == "url") { if (this._isWindow && obj.cmp == null && this.skin == "dhx_skyblue") { this.vs[this.av].dhxcont.mainCont[this.av].style.border = "#a4bed4 1px solid"; this._redraw(); } var fr = document.createElement("IFRAME"); fr.frameBorder = 0; fr.border = 0; fr.style.width = "100%"; fr.style.height = "100%"; fr.setAttribute("src","javascript:false;"); this.vs[this.av].dhxcont.mainCont[this.av].appendChild(fr); fr.src = obj; // ?? this._frame = fr; this.vs[this.av]._frame = fr; this._attachURLEvents(); } else if (type == "urlajax") { if (this._isWindow && obj.cmp == null && this.skin == "dhx_skyblue") { this.vs[this.av].dhxcont.mainCont[this.av].style.border = "#a4bed4 1px solid"; this.vs[this.av].dhxcont.mainCont[this.av].style.backgroundColor = "#FFFFFF"; this._redraw(); } var t = this; var tav = String(this.av).valueOf(); var xmlParser = function(){ var tmp = t.av; t.av = tav; t.attachHTMLString(this.xmlDoc.responseText, this); t.av = tmp; //if (t._doOnAttachURL) t._doOnAttachURL(false); if (t._doOnFrameContentLoaded) t._doOnFrameContentLoaded(); this.destructor(); } var xmlLoader = new dtmlXMLLoaderObject(xmlParser, window); xmlLoader.dhxWindowObject = this; xmlLoader.loadXML(obj); } else if (type == "obj") { if (this._isWindow && obj.cmp == null && this.skin == "dhx_skyblue") { this.vs[this.av].dhxcont.mainCont[this.av].style.border = "#a4bed4 1px solid"; this.vs[this.av].dhxcont.mainCont[this.av].style.backgroundColor = "#FFFFFF"; this._redraw(); } this.vs[this.av].dhxcont._frame = null; this.vs[this.av].dhxcont.mainCont[this.av].appendChild(obj); // this._engineGetWindowContent(win).style.overflow = (append===true?"auto":"hidden"); // win._content.childNodes[2].appendChild(obj); this.vs[this.av].dhxcont.mainCont[this.av].style.overflow = (append===true?"auto":"hidden"); obj.style.display = ""; } else if (type == "str") { if (this._isWindow && obj.cmp == null && this.skin == "dhx_skyblue") { this.vs[this.av].dhxcont.mainCont[this.av].style.border = "#a4bed4 1px solid"; this.vs[this.av].dhxcont.mainCont[this.av].style.backgroundColor = "#FFFFFF"; this._redraw(); } this.vs[this.av].dhxcont._frame = null; this.vs[this.av].dhxcont.mainCont[this.av].innerHTML = obj; } } this.obj._attachURLEvents = function() { var t = this; var fr = this.vs[this.av]._frame; if (_isIE) { fr.onreadystatechange = function(a) { if (fr.readyState == "complete") { try {fr.contentWindow.document.body.onmousedown=function(){if(t._doOnFrameMouseDown)t._doOnFrameMouseDown();};}catch(e){}; try{if(t._doOnFrameContentLoaded)t._doOnFrameContentLoaded();}catch(e){}; } } } else { fr.onload = function() { try{fr.contentWindow.onmousedown=function(){if(t._doOnFrameMouseDown)t._doOnFrameMouseDown();};}catch(e){}; try{if(t._doOnFrameContentLoaded)t._doOnFrameContentLoaded();}catch(e){}; } } } this.obj._detachURLEvents = function() { if (_isIE) { try { this.vs[this.av]._frame.onreadystatechange = null; this.vs[this.av]._frame.contentWindow.document.body.onmousedown = null; this.vs[this.av]._frame.onload = null; } catch(e) {}; } else { try { this.vs[this.av]._frame.contentWindow.onmousedown = null; this.vs[this.av]._frame.onload = null; } catch(e) {}; } } this.obj.showMenu = function() { if (!(this.vs[this.av].menu && this.vs[this.av].menuId)) return; if (document.getElementById(this.vs[this.av].menuId).style.display != "none") return; this.vs[this.av].menuHidden = false; if (this._doOnAttachMenu) this._doOnAttachMenu("show"); document.getElementById(this.vs[this.av].menuId).style.display = ""; this._viewRestore(); } this.obj.hideMenu = function() { if (!(this.vs[this.av].menu && this.vs[this.av].menuId)) return; if (document.getElementById(this.vs[this.av].menuId).style.display == "none") return; document.getElementById(this.vs[this.av].menuId).style.display = "none"; this.vs[this.av].menuHidden = true; if (this._doOnAttachMenu) this._doOnAttachMenu("hide"); this._viewRestore(); } this.obj.showToolbar = function() { if (!(this.vs[this.av].toolbar && this.vs[this.av].toolbarId)) return; if (document.getElementById(this.vs[this.av].toolbarId).style.display != "none") return; this.vs[this.av].toolbarHidden = false; if (this._doOnAttachToolbar) this._doOnAttachToolbar("show"); document.getElementById(this.vs[this.av].toolbarId).style.display = ""; this._viewRestore(); } this.obj.hideToolbar = function() { if (!(this.vs[this.av].toolbar && this.vs[this.av].toolbarId)) return; if (document.getElementById(this.vs[this.av].toolbarId).style.display == "none") return; this.vs[this.av].toolbarHidden = true; document.getElementById(this.vs[this.av].toolbarId).style.display = "none"; if (this._doOnAttachToolbar) this._doOnAttachToolbar("hide"); this._viewRestore(); } this.obj.showStatusBar = function() { if (!(this.vs[this.av].sb && this.vs[this.av].sbId)) return; if (document.getElementById(this.vs[this.av].sbId).style.display != "none") return; this.vs[this.av].sbHidden = false; if (this._doOnAttachStatusBar) this._doOnAttachStatusBar("show"); document.getElementById(this.vs[this.av].sbId).style.display = ""; this._viewRestore(); } this.obj.hideStatusBar = function() { if (!(this.vs[this.av].sb && this.vs[this.av].sbId)) return; if (document.getElementById(this.vs[this.av].sbId).style.display == "none") return; this.vs[this.av].sbHidden = true; document.getElementById(this.vs[this.av].sbId).style.display = "none"; if (this._doOnAttachStatusBar) this._doOnAttachStatusBar("hide"); this._viewRestore(); } this.obj._dhxContDestruct = function() { // clear attached objects var av = this.av; for (var a in this.vs) { this.av = a; // menu, toolbar, status this.detachMenu(); this.detachToolbar(); this.detachStatusBar(); // remove any attached object or dhtmlx component this.detachObject(true); this.vs[a].dhxcont.mainCont[a].parentNode.removeChild(this.vs[a].dhxcont.mainCont[a]); this.vs[a].dhxcont.mainCont[a] = null; } this.vs[this.dv].dhxcont.mainCont = null; this.vs[this.dv].dhxcont.parentNode.removeChild(this.vs[this.dv].dhxcont); for (var a in this.vs) this.vs[a].dhxcont = null; this.vs = null; this.attachMenu = null; this.attachToolbar = null; this.attachStatusBar = null; this.detachMenu = null; this.detachToolbar = null; this.detachStatusBar = null; this.showMenu = null; this.showToolbar = null; this.showStatusBar = null; this.hideMenu = null; this.hideToolbar = null; this.hideStatusBar = null; this.attachGrid = null; this.attachScheduler = null; this.attachTree = null; this.attachTabbar = null; this.attachFolders = null; this.attachAccordion = null; this.attachLayout = null; this.attachEditor = null; this.attachObject = null; this.detachObject = null; this.appendObject = null; this.attachHTMLString = null; this.attachURL = null; this.view = null; this.show = null; this.adjust = null; this.setMinContentSize = null; this.moveContentTo = null; this.adjustContent = null; this.coverBlocker = null; this.showCoverBlocker = null; this.hideCoverBlocker = null; this.updateNestedObjects = null; this._attachContent = null; this._attachURLEvents = null; this._detachURLEvents = null; this._viewRestore = null; this._setPadding = null; this._init = null; this._genStr = null; this._dhxContDestruct = null; that.st.parentNode.removeChild(that.st); that.st = null; that.setContent = null; that.dhxcont = null; // no more used at all? that.obj = null; that = null; // remove attached components /* for (var a in this.vs) { if (this.vs[a].layout) this.vs[a].layout.unlaod(); if (this.vs[a].accordion) this.vs[a].accordion.unlaod(); if (this.vs[a].sched) this.vs[a].sched.destructor(); this.vs[a].layout = null; this.vs[a].accordion = null; this.vs[a].sched = null; } */ // extended functionality if (dhtmlx.detaches) for (var a in dhtmlx.detaches) dhtmlx.detaches[a](this); } // extended functionality if (dhtmlx.attaches) for (var a in dhtmlx.attaches) this.obj[a] = dhtmlx.attaches[a]; }