diff options
author | Christian Schneider | 2006-10-26 13:35:12 +0000 |
---|---|---|
committer | Christian Schneider | 2006-10-26 13:35:12 +0000 |
commit | a5a19fd672bc0b8113d620669b557f17dccd343a (patch) | |
tree | 876ba4fec8362ac2e9374f61b9b7f67fcd2b8e59 /itjs/it.js | |
download | itools-a5a19fd672bc0b8113d620669b557f17dccd343a.tar.gz itools-a5a19fd672bc0b8113d620669b557f17dccd343a.tar.bz2 itools-a5a19fd672bc0b8113d620669b557f17dccd343a.zip |
Moved itools to live branch
Diffstat (limited to 'itjs/it.js')
-rw-r--r-- | itjs/it.js | 165 |
1 files changed, 165 insertions, 0 deletions
diff --git a/itjs/it.js b/itjs/it.js new file mode 100644 index 0000000..1a792f3 --- /dev/null +++ b/itjs/it.js @@ -0,0 +1,165 @@ +// $Id$ + +/** + * Clear contents of element 'jsdebug' + */ +function CED(txt) +{ + var element = document.getElementById('jsdebug'); + + if (element) + element.innerHTML = txt ? txt : ""; +} + +/** + * Add debugging output to element 'jsdebug' + */ +function ED() +{ + var element = document.getElementById('jsdebug'); + + if (element) + { + var text = ""; + + for (var i = 0; i < arguments.length; i++) + { + var variable = arguments[i]; + + if (typeof variable == "string") + variable = variable.replace(/&/g, '&').replace(/</g, '<'); + + text += (typeof variable) + " " + variable; + + if (typeof variable == "object") + { + text += ":"; + + for (field in variable) + { + text += field + "="; + + try { text += typeof variable[field] == 'function' ? 'function' : variable[field]; } + catch (e) { text += "*" + e + "*"; } + + text += "\n"; + } + text += "\n"; + } + + text += "\n"; + } + + element.innerHTML += '<pre style="background-color:#FEE; margin:0">' + text + '</pre>'; + } +} + +/** + * Quote HTML special chars + * @return Text string with & " < > htmlentities-encoded + */ +function Q(value) +{ + return value.toString().replace(/&/g, '&').replace(/"/g, '"').replace(/</g, '<').replace(/>/g, '>'); +} + +/** + * String class: Replaces variables of the form {var} with values from given array + * @param values Associative array containing values to fill in (optional) + * @return Text string with variables replaced by their values + */ +String.prototype.T = function(values) +{ + var result = this; + + for (key in values) + result = result.replace(new RegExp("{" + key + "}", "g"), values[key]); + + return result; +} + +/** + * Insert an event handler on top of chain + * @param p.element Element to handle event for + * @param p.event Name of event:'focus', 'click', ... (without 'on') + * @param p.object Object that contains handler method + * @param p.method Method of p.object to call on p.event + */ +function it_event(p) +{ + var oldhandler = p.element["on" + p.event]; + + p.element["on" + p.event] = function(ev) + { + var pp = arguments.callee.p ? arguments.callee.p : p; + var oo = arguments.callee.oldhandler ? arguments.callee.oldhandler : oldhandler; + + var result = pp.object[pp.method](ev ? ev : window.event, pp); + + if (result && oo) + result = oo(ev); + + return result; + } + p.element["on" + p.event].p = p; + p.element["on" + p.event].oldhandler = oldhandler; +} + +/* Get object pixel position. Based on quirksmode.org's code */ +function it_get_obj_x(obj) +{ + var curleft = 0; + if (obj.offsetParent) + while (obj) + { + curleft += obj.offsetLeft; + obj = obj.offsetParent; + } + else if (obj.x) + curleft += obj.x; + return curleft; +} + +function it_get_obj_y(obj) +{ + var curtop = 0; + if (obj.offsetParent) + while (obj) + { + curtop += obj.offsetTop; + obj = obj.offsetParent; + } + else if (obj.y) + curtop += obj.y; + return curtop; +} + +/* Get an iframe's content document in a compatible way */ +function it_get_iframe_document(iframe) +{ + return iframe.contentWindow ? iframe.contentWindow.document : iframe.contentDocument; +} + +/** + * Clone src value and return dst. If dst is given then src attributes are + * copied into it, otherwise a new object is created. Also works with scalar + * values. Performs a deep copy of objects + * @param src Source object/value to clone + * @param dst Destination object to copy attributes from src to (optional) + * @return dst holding copy of src + */ +function it_clone(src, dst) +{ + if (typeof src == "object") + { + if (!dst) + dst = {}; + + for (var i in src) + dst[i] = it_clone(src[i]); + } + else + dst = src; + + return dst; +} |