// Part.js // Javascript Behaviour for the Part Control // Copyright (c) by Matthias Hertel, http://www.mathertel.de // This work is licensed under a BSD style license. See http://www.mathertel.de/License.aspx // ----- // 09.03.2006 created by Matthias Hertel // 16.09.2006 context on event-methods is now set to the bound object. // 23.09.2006 using images instead of text for the window frame buttons // 05.05.2007 HideContent, ShowContent added, some simplifications. // 18.12.2007 Simplifications and documentation. // 14.02.2016 shadow simplified to CSS3 shadow. var PartBehaviour = { /// <summary>Implementation of a JavaScript Behavior /// for a composite html control with a title and content area.</summary> state: "anystate", /// <summary>hello</summary> onclick: function (evt) { /// <summary>Handle the onclick event for the elements in the title area.</summary> evt = evt || window.event; var t = evt.target || evt.srcElement; if (t.className == "VEFull") this.ShowContent(); else if (t.className == "VEMini") this.HideContent(); else if (t.className == "VEClose") this.parentNode.removeChild(this); }, onresize: function (evt) { /// <summary>Handle the onresize event. This event occurs when a window is resized and the part /// has no fixed width.</summary> this.resize(); }, // --- public methods --- init: function () { /// <summary>Initialze the part by showing the content and adjusting the size of the shadow.</summary> this.ShowContent(); this.resize(); }, // init ToggleContent: function () { /// <summary>Toggle the visibility of the content.</summary> var objs; objs = jcl.getElementsByClassName(this, "VEContent"); if ((objs != null) && (objs[0] != null)) { if (objs[0].style.display == "none") this.ShowContent(); else this.HideContent(); } // if this.resize(); }, HideContent: function () { /// <summary>Hide the content and adjust the visibility of the optional titlebar buttons.</summary> var objs; objs = jcl.getElementsByClassName(this, "VEContent"); if ((objs != null) && (objs[0] != null)) objs[0].style.display = "none"; objs = jcl.getElementsByClassName(this, "VEFull"); if ((objs != null) && (objs[0] != null)) objs[0].style.display = ""; objs = jcl.getElementsByClassName(this, "VEMini"); if ((objs != null) && (objs[0] != null)) objs[0].style.display = "none"; this.resize(); }, ShowContent: function () { /// <summary>Show the content and adjust the visibility of the optional titlebar buttons.</summary> var objs; objs = jcl.getElementsByClassName(this, "VEContent"); if ((objs != null) && (objs[0] != null)) objs[0].style.display = ""; objs = jcl.getElementsByClassName(this, "VEFull"); if ((objs != null) && (objs[0] != null)) objs[0].style.display = "none"; objs = jcl.getElementsByClassName(this, "VEMini"); if ((objs != null) && (objs[0] != null)) objs[0].style.display = ""; this.resize(); }, resize: function () { /// <summary>Resize the shadow of the part.</summary> var o; var h = 0; var w = 0; o = jcl.getElementsByClassName(this, "VEMover"); if (o.length > 0) { h += o[0].offsetHeight; w = Math.max(w, o[0].offsetWidth); } o = jcl.getElementsByClassName(this, "VETitle"); if (o.length > 0) { h += o[0].offsetHeight; w = Math.max(w, o[0].offsetWidth); } o = jcl.getElementsByClassName(this, "VEContent"); if (o.length > 0) { h += o[0].offsetHeight; w = Math.max(w, o[0].offsetWidth); } } // resize // --- private methods --- }; // PartBehaviour
This page is part of the http://www.mathertel.de/ web site.
For updates and discussions see http://ajaxaspects.blogspot.com/.