diff options
Diffstat (limited to 'itjs/it.js')
-rw-r--r-- | itjs/it.js | 325 |
1 files changed, 0 insertions, 325 deletions
diff --git a/itjs/it.js b/itjs/it.js deleted file mode 100644 index a40350d..0000000 --- a/itjs/it.js +++ /dev/null @@ -1,325 +0,0 @@ -/** - * Clear contents of element 'jsdebug' - */ -function CED(txt) -{ - var element = document.getElementById('jsdebug'); - if (element) - element.innerHTML = txt ? txt : ""; -} - -/** - * Return string with dump of all arguments - */ -function D() -{ - var text = ""; - for (var i = 0; i < arguments.length; i++) - { - var variable = arguments[i]; - - if (typeof variable == "string") - variable = variable.replace(/&/g, '&').replace(new RegExp("<", "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"; - } - return text; -} - -/** - * Add debugging output to element 'jsdebug' - */ -function ED() -{ - var element; - - if (!(element = document.getElementById('jsdebug'))) - return; // var element = it_create_element(document.body, 'div', {id:'jsdebug', style:{position:'absolute', left:'100px', top:'10px', opacity:'0.8'}}) - - element.innerHTML += '<pre style="background-color:#FEE; margin:0">' + D.apply(this, arguments) + '<' + '/pre>'; -} - -/** - * Quote HTML special chars - * @return Text string with & " < > htmlentities-encoded - */ -function Q(value) -{ - return typeof value == "undefined" ? "" : value.toString().replace(/&/g, '&').replace(/\"/g, '"').replace(new RegExp("<", "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; -} - -function it_add_event(p) -{ - if (!p.object || !p.method) // not enough arguments - return; - if (!p.element) - p.element = document; - - if (!p.object._it_events) - p.object._it_events = []; - - var evt = p.event; - var key = p.event + '*' + p.method; - var p_closure = p; // Needed for Konqueror 3.4.2 as p is (wrongly) shadowed by global input element named p - if (!p.object._it_events[key]) - p.object._it_events[key] = function(e){ return p_closure.object[p_closure.method](e, p_closure); }; - - if (p.element.addEventListener) - p.element.addEventListener(evt, p.object._it_events[key], false); - else if (p.element.attachEvent) - p.element.attachEvent('on'+evt, p.object._it_events[key]); - else - { - p.element['on'+evt] = function(e) - { - var ret = true; - for (var k in p_closure.object._it_events) - if (p_closure.object._it_events[k] && k.indexOf(evt) == 0) - ret = p_closure.object._it_events[k](e); - return ret; - }; - } -} - -function it_remove_event(p) -{ - if (!p.element) - p.element = document; - - var key = p.event + '*' + p.method; - if (p.object && p.object._it_events && p.object._it_events[key]) { - if (p.element.removeEventListener) - p.element.removeEventListener(p.event, p.object._it_events[key], false); - else if (p.element.detachEvent) - p.element.detachEvent('on'+p.event, p.object._it_events[key]); - - p.object._it_events[key] = null; - } -} - -/** - * Prevent event propagation and bubbeling - */ -function it_event_void(evt) -{ - var e = evt ? evt : window.event; - if (e.preventDefault) - e.preventDefault(); - if (e.stopPropagation) - e.stopPropagation(); - - e.cancelBubble = true; - e.returnValue = false; - return false; -} - -/* Get object pixel position. Based on quirksmode.org's code */ -function it_get_obj_x(obj) -{ - if("getBoundingClientRect" in obj) - return obj.getBoundingClientRect().left + ((window.pageXOffset !== undefined) ? window.pageXOffset : (document.documentElement || document.body.parentNode || document.body).scrollLeft); - else - { - // legacy for Android 1.6 - 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) -{ - if("getBoundingClientRect" in obj) - return obj.getBoundingClientRect().top + ((window.pageYOffset !== undefined) ? window.pageYOffset : (document.documentElement || document.body.parentNode || document.body).scrollTop); - else - { - // legacy for Android 1.6 - var curtop = 0; - if (obj.offsetParent) - while (obj) - { - curtop += obj.offsetTop; - obj = obj.offsetParent; - } - else if (obj.y) - curtop += obj.y; - return curtop; - } -} - -/* Common accessor for dom elements */ -function it_find_obj(obj) -{ - if (document.getElementById) - return document.getElementById(obj); - else if (document.all) - return document.all[obj]; - else if (document.layers) - return document.layers[obj]; - return null; -} - -/* Get dom element by ID but always return a valid object */ -function it_element(label) -{ - var tmp = it_find_obj(label); - return tmp ? tmp : { style:{}, src:"", value:"", isundefined:true }; -} - -/* Get an iframe's content document in a compatible way */ -function it_get_iframe_document(iframe) -{ - return iframe.contentWindow ? iframe.contentWindow.document : iframe.contentDocument; -} - -/* Create a new dom element and append to doc */ -function it_create_element(doc, type, init) -{ - var e = document.createElement(type); - it_set(e, init); - doc.appendChild(e); - return e; -} - -/** - * Copy attributes from src to dst in a recursive manner. - * @param dst Destination object which gets attributes - * @param src Source object containing attributes - */ -function it_set(dst, src) -{ - if (dst) - { - for (var i in src) - { - if (typeof src[i] == 'object') - { - if (dst[i]) - it_set(dst[i], src[i]); - } - else - dst[i] = src[i]; - } - } -} - -/** - * Return the current timestamp - */ -function it_now() -{ - return new Date().getTime(); -} - -/** - * Encodes arbitrary string for use in an url - * @param str string to be encoded - */ -function it_url_encode(str) -{ - var result = window.encodeURIComponent ? encodeURIComponent(str) : escape(str).replace(/\+/g, "%2B"); - - return result.replace(/%20/gi, "+").replace(/%2C/gi, ",").replace(/%3B/gi, ";").replace(/%28/gi, "(").replace(/%29/gi, ")"); -} - -/** - * Unicode-safe equivalent of unescape() - * @param str string URL encoded string to be decoded - */ -function it_url_decode(str) -{ - str = str.replace(/\+/g, '%20'); - - // catch URI malformed errors - try { - if (window.decodeURIComponent) - return decodeURIComponent(str); - } - catch(e) {} - - return unescape(str); -} - -/** - * Patch PNG transparency for IE 5.5-6 on the given image - */ -function it_pngfix(img, w, h, mode) -{ - var old_IE = navigator.platform == "Win32" && String(navigator.userAgent).match(/MSIE ((5\.5)|6)/); - if (img.src && img.src.match(/\.png($|\?)/) && old_IE) { - img.style.width = (w || img.width) + 'px'; - img.style.height = (h || img.height) + 'px'; - img.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+img.src+"',sizingMethod='"+(mode ? mode : 'crop')+"')"; - img.src = '/images/0.gif'; - } - else if (img && old_IE) - img.style.filter = 'none'; -} - |