summaryrefslogtreecommitdiffstats
path: root/js/oz.js
diff options
context:
space:
mode:
authorondras <none@none>2012-02-19 12:21:41 +0100
committerondras <none@none>2012-02-19 12:21:41 +0100
commitb76a6369e6bbea57213dff45a1ef26259bc374d0 (patch)
treeaabcdd8a1e129c7e4280c842a25db8e20ed7e260 /js/oz.js
parentb15dbac005ea66b9247f84d60eaa31173dc6e07b (diff)
downloadwwwsqldesigner-b76a6369e6bbea57213dff45a1ef26259bc374d0.zip
wwwsqldesigner-b76a6369e6bbea57213dff45a1ef26259bc374d0.tar.gz
wwwsqldesigner-b76a6369e6bbea57213dff45a1ef26259bc374d0.tar.bz2
new oz.js
Diffstat (limited to 'js/oz.js')
-rw-r--r--js/oz.js59
1 files changed, 31 insertions, 28 deletions
diff --git a/js/oz.js b/js/oz.js
index 77029ec..41330e7 100644
--- a/js/oz.js
+++ b/js/oz.js
@@ -1,6 +1,7 @@
-/* (c) 2007 - now() Ondrej Zara, 1.6 */
+/* (c) 2007 - now() Ondrej Zara, 1.7 */
var OZ = {
$:function(x) { return typeof(x) == "string" ? document.getElementById(x) : x; },
+ select: function(x) { return document.querySelectorAll(x); },
opera:!!window.opera,
ie:!!document.attachEvent && !window.opera,
gecko:!!document.getAnonymousElementByAttribute,
@@ -13,35 +14,41 @@ var OZ = {
add:function(elm,event,cb) {
var id = OZ.Event._id++;
var element = OZ.$(elm);
- var fnc = cb;
- if (element) {
- if (element.addEventListener) {
- element.addEventListener(event,fnc,false);
- } else if (element.attachEvent) {
- fnc = function() { return cb.apply(elm,arguments); }
- element.attachEvent("on"+event,fnc);
+ var fnc = (element && element.attachEvent ? function() { return cb.apply(element,arguments); } : cb);
+ var rec = [element,event,fnc];
+ var parts = event.split(" ");
+ while (parts.length) {
+ var e = parts.pop();
+ if (element) {
+ if (element.addEventListener) {
+ element.addEventListener(e,fnc,false);
+ } else if (element.attachEvent) {
+ element.attachEvent("on"+e,fnc);
+ }
}
+ if (!(e in OZ.Event._byName)) { OZ.Event._byName[e] = {}; }
+ OZ.Event._byName[e][id] = rec;
}
- if (!(event in OZ.Event._byName)) { OZ.Event._byName[event] = {}; }
- var obj = OZ.Event._byName[event];
- obj[id] = [element,event,fnc];
- OZ.Event._byID[id] = obj;
+ OZ.Event._byID[id] = rec;
return id;
},
remove:function(id) {
- var obj = OZ.Event._byID[id];
- if (!obj) { return; }
- var e = obj[id];
- var elm = e[0];
- if (elm) {
- if (elm.removeEventListener) {
- elm.removeEventListener(e[1],e[2],false);
- } else if (elm.detachEvent) {
- elm.detachEvent("on"+e[1],e[2]);
+ var rec = OZ.Event._byID[id];
+ if (!rec) { return; }
+ var elm = rec[0];
+ var parts = rec[1].split(" ");
+ while (parts.length) {
+ var e = parts.pop();
+ if (elm) {
+ if (elm.removeEventListener) {
+ elm.removeEventListener(e,rec[2],false);
+ } else if (elm.detachEvent) {
+ elm.detachEvent("on"+e,rec[2]);
+ }
}
+ delete OZ.Event._byName[e][id];
}
delete OZ.Event._byID[id];
- delete obj[id];
},
stop:function(e) { e.stopPropagation ? e.stopPropagation() : e.cancelBubble = true; },
prevent:function(e) { e.preventDefault ? e.preventDefault() : e.returnValue = false; },
@@ -127,12 +134,8 @@ var OZ = {
var y = document.documentElement.scrollTop || document.body.scrollTop || 0;
return [x,y];
},
- win:function() {
- var node = (document.compatMode == "CSS1Compat" ? document.documentElement : document.body);
- if (OZ.opera && parseFloat(navigator.appVersion) < 9.5) { node = document.body; }
- var x = node.clientWidth;
- var y = node.clientHeight;
- return [x,y];
+ win:function(avail) {
+ return (avail ? [window.innerWidth,window.innerHeight] : [document.documentElement.clientWidth,document.documentElement.clientHeight]);
},
hasClass:function(node, className) {
var cn = OZ.$(node).className;