// $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(/'; } } /** * Quote HTML special chars * @return Text string with & " < > htmlentities-encoded */ function Q(value) { return value.toString().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; }