diff --git a/UI/WebServerResources/HTMLElement.js b/UI/WebServerResources/HTMLElement.js index b59666edd..6168bfb9e 100644 --- a/UI/WebServerResources/HTMLElement.js +++ b/UI/WebServerResources/HTMLElement.js @@ -1,3 +1,51 @@ +if (navigator.vendor == "Apple Computer, Inc." || navigator.vendor == "KDE") { // WebCore/KHTML + /* + Crossbrowser HTMLElement Prototyping + Copyright (C) 2005 Jason Davis, http://www.browserland.org + Additional thanks to Brothercake, http://www.brothercake.com + + This code is licensed under the LGPL: + http://www.gnu.org/licenses/lgpl.html + */ + + (function(c) { + for (var i in c) + window["HTML" + i + "Element"] = document.createElement(c[ i ]).constructor; + })({ + Html: "html", Head: "head", Link: "link", Title: "title", Meta: "meta", + Base: "base", IsIndex: "isindex", Style: "style", Body: "body", Form: "form", + Select: "select", OptGroup: "optgroup", Option: "option", Input: "input", + TextArea: "textarea", Button: "button", Label: "label", FieldSet: "fieldset", + Legend: "legend", UList: "ul", OList: "ol", DList: "dl", Directory: "dir", + Menu: "menu", LI: "li", Div: "div", Paragraph: "p", Heading: "h1", Quote: "q", + Pre: "pre", BR: "br", BaseFont: "basefont", Font: "font", HR: "hr", Mod: "ins", + Anchor: "a", Image: "img", Object: "object", Param: "param", Applet: "applet", + Map: "map", Area: "area", Script: "script", Table: "table", TableCaption: "caption", + TableCol: "col", TableSection: "tbody", TableRow: "tr", TableCell: "td", + FrameSet: "frameset", Frame: "frame", IFrame: "iframe" + }); + + function HTMLElement() {} + //HTMLElement.prototype = HTMLHtmlElement.__proto__.__proto__; + var HTMLDocument = document.constructor; + var HTMLCollection = document.links.constructor; + var HTMLOptionsCollection = document.createElement("select").options.constructor; + var Text = document.createTextNode("").constructor; + //var Node = Text; + + // More efficient for Safari 2 + function Document() {} + function Event() {} + function HTMLCollection() {} + function HTMLElement() {} + function Node() {} + Document.prototype = window["[[DOMDocument]]"]; + Event.prototype = window["[[DOMEvent]]"]; + HTMLCollection.prototype = window["[[HTMLCollection.prototype]]"]; + HTMLElement.prototype = window["[[DOMElement.prototype]]"]; + Node.prototype = window["[[DOMNode.prototype]]"]; +} + /* custom extensions to the DOM api */ HTMLElement.prototype.addInterface = function(objectInterface) { Object.extend(this, objectInterface); diff --git a/UI/WebServerResources/HTMLInputElement.js b/UI/WebServerResources/HTMLInputElement.js index b5e48e2fc..a3a1528a4 100644 --- a/UI/WebServerResources/HTMLInputElement.js +++ b/UI/WebServerResources/HTMLInputElement.js @@ -1,7 +1,7 @@ HTMLInputElement.prototype._replicate = function() { if (this.replica) { this.replica.value = this.value; - var onReplicaChangeEvent = document.createEvent("Event"); + var onReplicaChangeEvent = document.createEvent("UIEvents"); onReplicaChangeEvent.initEvent("change", true, true); this.replica.dispatchEvent(onReplicaChangeEvent); } @@ -56,7 +56,7 @@ HTMLInputElement.prototype.valueAsShortDateString = function() { HTMLSelectElement.prototype._replicate = function() { if (this.replica) { this.replica.value = this.value; - var onReplicaChangeEvent = document.createEvent("Event"); + var onReplicaChangeEvent = document.createEvent("UIEvents"); onReplicaChangeEvent.initEvent("change", true, true); this.replica.dispatchEvent(onReplicaChangeEvent); } diff --git a/UI/WebServerResources/SOGoDragHandles.js b/UI/WebServerResources/SOGoDragHandles.js index aee95098f..f1501bca4 100644 --- a/UI/WebServerResources/SOGoDragHandles.js +++ b/UI/WebServerResources/SOGoDragHandles.js @@ -13,6 +13,7 @@ var SOGoDragHandlesInterface = { lowerBlock: null, bind: function () { this.addEventListener("mousedown", this.startHandleDragging, false); + this.onmousedown = function() { return false } }, _determineType: function () { if (this.leftBlock && this.rightBlock) @@ -23,7 +24,14 @@ var SOGoDragHandlesInterface = { startHandleDragging: function (event) { if (!this.dhType) this._determineType(); - if (event.button == 0) { + var targ; + if (!event) + var event = window.event; + if (event.target) + targ = event.target + else if (event.srcElement) + targ = event.srcElement + if (targ.nodeType == 1) { if (this.dhType == 'horizontal') { this.origX = this.offsetLeft; this.origLeft = this.leftBlock.offsetWidth; @@ -38,8 +46,13 @@ var SOGoDragHandlesInterface = { document.body.style.cursor = "n-resize"; } document._currentDragHandle = this; - document.addEventListener("mouseup", this.documentStopHandleDragging, true); - document.addEventListener("mousemove", this.documentMove, true); + if (document.addEventListener) { + document.addEventListener("mouseup", this.documentStopHandleDragging, true); + document.addEventListener("mousemove", this.documentMove, true); + } else if (window.addEventListener) { + window.addEventListener("mouseup", this.documentStopHandleDragging, true); + window.addEventListener("mousemove", this.documentMove, true); + } this.move(event); event.cancelBubble = true; } @@ -52,6 +65,7 @@ var SOGoDragHandlesInterface = { }, documentMove: function (event) { var handle = document._currentDragHandle; + if (!handle) return false; return handle.move(event); }, stopHandleDragging: function (event) { @@ -60,17 +74,22 @@ var SOGoDragHandlesInterface = { if (this.dhType == 'horizontal') { var deltaX = Math.floor(event.clientX - this.origX - (this.offsetWidth / 2)); - this.rightBlock.style.left = (this.origRight + deltaX) + 'px;'; - this.leftBlock.style.width = (this.origLeft + deltaX) + 'px;'; + this.rightBlock.style.left = (this.origRight + deltaX) + 'px'; + this.leftBlock.style.width = (this.origLeft + deltaX) + 'px'; } else if (this.dhType == 'vertical') { var deltaY = Math.floor(event.clientY - this.origY - (this.offsetHeight / 2)); - this.lowerBlock.style.top = (this.origLower + deltaY - delta) + 'px;'; - this.upperBlock.style.height = (this.origUpper + deltaY - delta) + 'px;'; + this.lowerBlock.style.top = (this.origLower + deltaY - delta) + 'px'; + this.upperBlock.style.height = (this.origUpper + deltaY - delta) + 'px'; } - document.removeEventListener("mouseup", this.documentStopHandleDragging, true); - document.removeEventListener("mousemove", this.documentMove, true); + if (window.addEventListener) { + window.removeEventListener("mouseup", this.documentStopHandleDragging, true); + window.removeEventListener("mousemove", this.documentMove, true); + } else if (document.addEventListener) { + document.removeEventListener("mouseup", this.documentStopHandleDragging, true); + document.removeEventListener("mousemove", this.documentMove, true); + } document.body.setAttribute('style', ''); this.move(event); @@ -87,7 +106,7 @@ var SOGoDragHandlesInterface = { var hX = event.clientX; if (hX > -1) { var newLeft = Math.floor(hX - (width / 2)); - this.style.left = newLeft + 'px;'; + this.style.left = newLeft + 'px'; event.cancelBubble = true; return false; @@ -97,7 +116,7 @@ var SOGoDragHandlesInterface = { var hY = event.clientY; if (hY > -1) { var newTop = Math.floor(hY - (height / 2)) - delta; - this.style.top = newTop + 'px;'; + this.style.top = newTop + 'px'; event.cancelBubble = true; return false; @@ -113,9 +132,9 @@ var SOGoDragHandlesInterface = { if (this.offsetLeft > lLeft) { var leftdelta = this.rightBlock.offsetLeft - this.offsetLeft; - this.style.left = lLeft + 'px;'; + this.style.left = lLeft + 'px'; this.leftBlock.style.width = '0px'; - this.rightBlock.style.left = (lLeft + leftdelta) + 'px;'; + this.rightBlock.style.left = (lLeft + leftdelta) + 'px'; } } else if (this.dhType == 'vertical') { var uTop = this.upperBlock.offsetTop; @@ -123,9 +142,9 @@ var SOGoDragHandlesInterface = { if (this.offsetTop > uTop) { var topdelta = this.lowerBlock.offsetTop - this.offsetTop; - this.style.top = uTop + 'px;'; + this.style.top = uTop + 'px'; this.upperBlock.style.width = '0px'; - this.lowerBlock.style.top = (uTop + topdelta) + 'px;'; + this.lowerBlock.style.top = (uTop + topdelta) + 'px'; } } } diff --git a/UI/WebServerResources/generic.css b/UI/WebServerResources/generic.css index 1ee7ce91f..420c63577 100644 --- a/UI/WebServerResources/generic.css +++ b/UI/WebServerResources/generic.css @@ -239,13 +239,11 @@ A.toolbarButton SPAN.toolbarButton, SPAN.disabledToolbarButton { cursor: default; - display: block; + display: inline; float: left; - height: 80%; text-align: center; -moz-box-align: center; -moz-box-pack: center; - margin: 0px; border-left: 1px solid transparent; border-top: 1px solid transparent; border-right: 1px solid transparent; @@ -278,8 +276,7 @@ SPAN.toolbarButton:active margin: auto; } .toolbarButton .buttonLabel -{ width: 100%; - margin: auto; } +{ margin: auto; } /* popups */ .menu diff --git a/UI/WebServerResources/generic.js b/UI/WebServerResources/generic.js index 8efe056e9..df12e456f 100644 --- a/UI/WebServerResources/generic.js +++ b/UI/WebServerResources/generic.js @@ -411,7 +411,7 @@ function onRowClick(event) { var parentNode = node.parentNode; if (parentNode instanceof HTMLTableSectionElement) parentNode = parentNode.parentNode; - var onSelectionChangeEvent = document.createEvent("Event"); + var onSelectionChangeEvent = document.createEvent("UIEvents"); onSelectionChangeEvent.initEvent("selectionchange", true, true); parentNode.dispatchEvent(onSelectionChangeEvent); } @@ -509,7 +509,7 @@ function hideMenu(event, menuNode) { menuNode.parentMenu = null; } - var onhideEvent = document.createEvent("Event"); + var onhideEvent = document.createEvent("UIEvents"); onhideEvent.initEvent("hideMenu", false, true); menuNode.dispatchEvent(onhideEvent); } @@ -893,18 +893,18 @@ function initTabs() { for (var i = 0; i < nodes.length; i++) { if (nodes[i] instanceof HTMLLIElement) { if (!firstTab) { - firstTab = nodes[i]; + firstTab = i; } nodes[i].addEventListener("mousedown", onTabMouseDown, true); nodes[i].addEventListener("click", onTabClick, true); } } - firstTab.addClassName("first"); - firstTab.addClassName("active"); - container.activeTab = firstTab; + nodes[firstTab].addClassName("first"); + nodes[firstTab].addClassName("active"); + container.activeTab = nodes[firstTab]; - var target = $(firstTab.getAttribute("target")); + var target = $(nodes[firstTab].getAttribute("target")); target.addClassName("active"); } } @@ -1065,22 +1065,20 @@ function indexColor(number) { return color; } -var onLoadHandler = { - handleEvent: function (event) { - queryParameters = parseQueryParameters('' + window.location); - if (!document.body.hasClassName("popup")) { - initLogConsole(); - initializeMenus(); - initCriteria(); - } - initTabs(); - configureDragHandles(); - configureSortableTableHeaders(); - configureLinkBanner(); - var progressImage = $("progressIndicator"); - if (progressImage) - progressImage.parentNode.removeChild(progressImage); +var onLoadHandler = function (event) { + queryParameters = parseQueryParameters('' + window.location); + if (!document.body.hasClassName("popup")) { + initLogConsole(); + initializeMenus(); + initCriteria(); } + initTabs(); + configureDragHandles(); + configureSortableTableHeaders(); + configureLinkBanner(); + var progressImage = $("progressIndicator"); + if (progressImage) + progressImage.parentNode.removeChild(progressImage); } function configureSortableTableHeaders() { @@ -1114,7 +1112,11 @@ function configureLinkBanner() { } } -window.addEventListener("load", onLoadHandler, false); +if (window.addEventListener) { + window.addEventListener('load', onLoadHandler, false); +} else if (document.addEventListener) { + document.addEventListener('load', onLoadHandler, false); +} /* stubs */ function configureDragHandles() {