summaryrefslogtreecommitdiff
path: root/itjs/it.js
diff options
context:
space:
mode:
authorChristian Schneider2007-10-11 00:39:30 +0000
committerChristian Schneider2007-10-11 00:39:30 +0000
commit35fe33f7364329dacf415c950bff01b6de9ef88e (patch)
treeb0e6b018b50038ca20266723c53750268f508df5 /itjs/it.js
parent1f95711ff3e9697cd85a54545ab42e5fd3611317 (diff)
downloaditools-35fe33f7364329dacf415c950bff01b6de9ef88e.tar.gz
itools-35fe33f7364329dacf415c950bff01b6de9ef88e.tar.bz2
itools-35fe33f7364329dacf415c950bff01b6de9ef88e.zip
Populated release branch
Diffstat (limited to 'itjs/it.js')
-rw-r--r--itjs/it.js177
1 files changed, 177 insertions, 0 deletions
diff --git a/itjs/it.js b/itjs/it.js
new file mode 100644
index 0000000..a43ba3a
--- /dev/null
+++ b/itjs/it.js
@@ -0,0 +1,177 @@
+// $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, '&amp;').replace(/</g, '&lt;');
+
+ 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 typeof value == "undefined" ? "" : value.toString().replace(/&/g, '&amp;').replace(/"/g, '&quot;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
+}
+
+/**
+ * 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;
+}
+
+/**
+ * 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')
+ 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(/%28/gi, "(").replace(/%29/gi, ")");
+}