summaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
authorMax Kremmel <xing@synapse.plus.com>2006-01-10 21:16:47 +0000
committerMax Kremmel <xing@synapse.plus.com>2006-01-10 21:16:47 +0000
commit5b2df3c384719f5a8c3f6fa2fb33749857dcbfb7 (patch)
tree8a351deb2f16decbac1ba6bfcbe73d895cc414b7 /js
parente73f12657c5c5fcd05810cf0b1477bb69743b9a4 (diff)
downloadthemes-5b2df3c384719f5a8c3f6fa2fb33749857dcbfb7.tar.gz
themes-5b2df3c384719f5a8c3f6fa2fb33749857dcbfb7.tar.bz2
themes-5b2df3c384719f5a8c3f6fa2fb33749857dcbfb7.zip
merge recent changes into HEAD
Diffstat (limited to 'js')
-rw-r--r--js/ajax.js23
-rw-r--r--js/bitweaver.js386
-rw-r--r--js/debugger.js30
-rw-r--r--js/fat.js83
-rw-r--r--js/hoverfix.js30
-rw-r--r--js/multifile.js2
-rw-r--r--js/overlib.js322
-rw-r--r--js/pngfix.js26
-rw-r--r--js/prototype.js1017
-rw-r--r--js/prototype_1.4.js1773
-rw-r--r--js/sleight.js61
-rw-r--r--js/tabs/listener.js86
-rw-r--r--js/tabs/tabpane.js332
-rw-r--r--js/tabs/tabs.css1
-rw-r--r--js/tabs/tabs.js404
-rw-r--r--js/tabs/tabs_load.js32
-rw-r--r--js/x.gifbin49 -> 0 bytes
17 files changed, 0 insertions, 4608 deletions
diff --git a/js/ajax.js b/js/ajax.js
deleted file mode 100644
index a027c09..0000000
--- a/js/ajax.js
+++ /dev/null
@@ -1,23 +0,0 @@
-function ajax_updater(target, url, data) {
- var myAjax = new Ajax.Updater(
- {success: target},
- url,
- {parameters: data, onFailure: ajax_error}
- );
-}
-function ajax_error( request ) {
- alert( 'Sorry, there was a problem getting the requested data.' );
-}
-// in preparation of prototype 1.4
-function show_loader(id) {
- Ajax.Responders.register({
- onCreate: function() {
- if (Ajax.activeRequestCount > 0)
- Element.show(id);
- },
- onComplete: function() {
- if (Ajax.activeRequestCount == 0)
- Element.hide(id);
- }
- });
-}
diff --git a/js/bitweaver.js b/js/bitweaver.js
deleted file mode 100644
index 8f9342e..0000000
--- a/js/bitweaver.js
+++ /dev/null
@@ -1,386 +0,0 @@
-// $Header: /cvsroot/bitweaver/_bit_themes/js/Attic/bitweaver.js,v 1.4 2005/12/18 22:32:27 squareing Exp $
-var expires = new Date();
-var offset = -(expires.getTimezoneOffset() * 60);
-expires.setFullYear(expires.getFullYear() + 1);
-setCookie("tz_offset", offset);
-
-/*--- moved here from prototype - start ---*/
-function $() {
- var elements = new Array();
- for (var i = 0; i < arguments.length; i++) {
- var element = arguments[i];
- if (typeof element == 'string')
- element = document.getElementById(element);
- if (arguments.length == 1)
- return element;
- elements.push(element);
- }
- return elements;
-}
-/*----------- prototype - end -------------*/
-
-function toggle_dynamic_var($name) {
- name1 = 'dyn_'+$name+'_display';
- name2 = 'dyn_'+$name+'_edit';
- if($(name1).style.display == "none") {
- $(name2).style.display = "none";
- $(name1).style.display = "inline";
- } else {
- $(name1).style.display = "none";
- $(name2).style.display = "inline";
- }
-}
-
-function genPass(w1, w2, w3) {
- vo = "aeiouAEU";
- co = "bcdfgjklmnprstvwxzBCDFGHJKMNPQRSTVWXYZ0123456789_$%#";
- s = Math.round(Math.random());
- l = 8;
- p = '';
-
- for (i = 0; i < l; i++) {
- if (s) {
- letter = vo.charAt(Math.round(Math.random() * (vo.length - 1)));
- s = 0;
- } else {
- letter = co.charAt(Math.round(Math.random() * (co.length - 1)));
- s = 1;
- }
-
- p = p + letter;
- }
-
- $(w1).value = p;
- $(w2).value = p;
- $(w3).value = p;
-}
-
-function setSomeElement(fooel, foo1) {
- $(fooel).value = $(fooel).value + foo1;
-}
-
-// used by insertAt()
-function setSelectionRange(textarea, selectionStart, selectionEnd) {
- if (textarea.setSelectionRange) {
- textarea.focus();
- textarea.setSelectionRange(selectionStart, selectionEnd);
- } else if (textarea.createTextRange) {
- var range = textarea.createTextRange();
- textarea.collapse(true);
- textarea.moveEnd('character', selectionEnd);
- textarea.moveStart('character', selectionStart);
- textarea.select();
- }
-}
-
-// used by insertAt()
-function setCaretToPos (textarea, pos) {
- setSelectionRange(textarea, pos, pos);
-}
-
-// inserts replaceString in elementId - used for quicktags
-function insertAt(elementId, replaceString) {
- //inserts given text at selection or cursor position
- textarea = $(elementId);
- var toBeReplaced = /text|page|textarea_id/;//substrings in replaceString to be replaced by the selection if a selection was done
- if (textarea.setSelectionRange) {
- //Mozilla UserAgent Gecko-1.4
- var selectionStart = textarea.selectionStart;
- var selectionEnd = textarea.selectionEnd;
- if (selectionStart != selectionEnd) { // has there been a selection
- var newString = replaceString.replace(toBeReplaced, textarea.value.substring(selectionStart, selectionEnd));
- textarea.value = textarea.value.substring(0, selectionStart)
- + newString
- + textarea.value.substring(selectionEnd);
- setSelectionRange(textarea, selectionStart, selectionStart + newString.length);
- } else {// set caret
- textarea.value = textarea.value.substring(0, selectionStart)
- + replaceString
- + textarea.value.substring(selectionEnd);
- setCaretToPos(textarea, selectionStart + replaceString.length);
- }
- } else if (document.selection) {
- //UserAgent IE-6.0
- textarea.focus();
- var range = document.selection.createRange();
- if (range.parentElement() == textarea) {
- var isCollapsed = range.text == '';
- if (! isCollapsed) {
- range.text = replaceString.replace(toBeReplaced, range.text);
- range.moveStart('character', -range.text.length);
- range.select();
- } else {
- range.text = replaceString;
- }
- }
- }
- else { //UserAgent Gecko-1.0.1 (NN7.0)
- setSomeElement(elementId, replaceString)
- //alert("don't know yet how to handle insert" + document);
- }
-}
-
-/*--- show - hide - flip - toggle ---*/
-function show(foo,f) {
- $(foo).style.display = "block";
- if (f) { setCookie(foo, "o"); }
-}
-
-function hide(foo,f) {
- $(foo).style.display = "none";
- if (f) { setCookie(foo, "c"); }
-}
-
-function flip(foo) {
- if ($(foo).style.display == "none") {
- show(foo);
- } else {
- if ($(foo).style.display == "block") {
- hide(foo);
- } else {
- show(foo);
- }
- }
-}
-
-function toggle(foo) {
- if ($(foo).style.display == "none") {
- show(foo);
- setCookie(foo, "o");
- } else {
- if ($(foo).style.display == "block") {
- hide(foo,1);
- } else {
- show(foo,1);
- }
- }
-}
-
-function settogglestate(foo) {
- if (getCookie(foo) == "o") {
- show(foo);
- } else {
- hide(foo);
- }
-}
-
-function setfoldericonstate(foo) {
- pic = new Image();
- cookie_value = getCookie(foo);
- if (cookie_value == "o") {
- pic.src = bitIconDir + "expanded.gif";
- } else if (cookie_value == "c") {
- pic.src = bitIconDir + "collapsed.gif";
- } else {
- return;
- }
- $(foo+"img").src = pic.src;
-}
-
-function icntoggle(foo) {
- if ($(foo).style.display == "none") {
- show(foo);
- setCookie(foo, "o");
- } else {
- hide(foo);
- setCookie(foo, "c");
- }
- setfoldericonstate(foo);
-}
-
-function flipWithSign(foo) {
- if ($(foo).style.display == "none") {
- show(foo);
- collapseSign("flipper" + foo);
- setCookie(foo, "o");
- } else {
- hide(foo);
- expandSign("flipper" + foo);
- setCookie(foo, "c");
- }
-}
-
-function setFlipWithSign(foo) {
- if (getCookie(foo) == "o") {
- collapseSign("flipper" + foo);
- show(foo);
- } else {
- expandSign("flipper" + foo);
- hide(foo);
- }
-}
-
-function expandSign(foo) {
- $(foo).firstChild.nodeValue = "[+]";
-}
-
-function collapseSign(foo) {
- $(foo).firstChild.nodeValue = "[-]";
-}
-
-function toggleBlockDisplay(item) {
- if (document.layers) {
- current = (document.layers[item].display == 'none') ? 'block' : 'none';
- document.layers[item].display = current;
- } else if (document.all) {
- current = (document.all[item].style.display == 'none') ? 'block' : 'none';
- document.all[item].style.display = current;
- } else if (document.getElementById) {
- vista = ($(item).style.display == 'none') ? 'block' : 'none';
- $(item).style.display = vista;
- }
-}
-
-function setBlockDisplay(item,vizFlag) {
- current = (vizFlag) ? 'block' : 'none';
- if (document.layers) {
- document.layers[item].display = current;
- } else if (document.all) {
- document.all[item].style.display = current;
- } else if (document.getElementById) {
- $(item).style.display = current;
- }
-}
-/*--- show - hide - flip - toggle ---*/
-
-// name - name of the cookie
-// value - value of the cookie
-// [expires] - expiration date of the cookie (defaults to end of current session)
-// [path] - path for which the cookie is valid (defaults to path of calling document)
-// [domain] - domain for which the cookie is valid (defaults to domain of calling document)
-// [secure] - Boolean value indicating if the cookie transmission requires a secure transmission
-// * an argument defaults when it is assigned null as a placeholder
-// * a null placeholder is not required for trailing omitted arguments
-function setCookie(name, value, expire, path, domain, secure) {
- var cookie_path = (path) ? path : bitCookiePath;
- var cookie_domain = escape((domain) ? domain : bitCookieDomain);
- var cookie_expire = (expire) ? expire.toGMTString() : expires.toGMTString();
- var curCookie = name + "=" + escape(value)
- + "; path=" + cookie_path
- + "; domain=" + cookie_domain
- + "; expires=" + cookie_expire
- + ((secure) ? "; secure" : "");
-//alert(curCookie);
- document.cookie = curCookie;
-}
-
-// name - name of the desired cookie
-// * return string containing value of specified cookie or null if cookie does not exist
-function getCookie(name) {
- var dc = document.cookie;
- var prefix = name + "=";
- var begin = dc.indexOf("; " + prefix);
-
- if (begin == -1) {
- begin = dc.indexOf(prefix);
- if (begin != 0)
- return null;
- } else begin += 2;
-
- var end = document.cookie.indexOf(";", begin);
-
- if (end == -1)
- end = dc.length;
-
- return unescape(dc.substring(begin + prefix.length, end));
-}
-
-// name - name of the cookie
-// [path] - path of the cookie (must be same as path used to create cookie)
-// [domain] - domain of the cookie (must be same as domain used to create cookie)
-// * path and domain default if assigned null or omitted if no explicit argument proceeds
-function deleteCookie(name, path, domain) {
- var cookie_path = (path) ? path : bitCookiePath;
- var cookie_domain = escape((domain) ? domain : bitCookieDomain);
- if (getCookie(name)) {
- document.cookie = name + "="
- + "; path=" + cookie_path + "; domain=" + cookie_domain + "; expires=Thu, 01-Jan-70 00:00:01 GMT";
- }
-}
-
-// Check / Uncheck all Checkboxes
-// checkboxes need to have the same name elements_name
-// e.g. <input type="checkbox" name="my_ename[]">, will arrive as Array in php.
-function switchCheckboxes(the_form, elements_name, switcher_name) {
- var elements = $(the_form).elements[elements_name];
- var elements_cnt = ( typeof (elements.length) != 'undefined') ? elements.length : 0;
-
- if (elements_cnt) {
- for (var i = 0; i < elements_cnt; i++) {
- elements[i].checked = document.forms[the_form].elements[switcher_name].checked;
- }
- } else {
- elements.checked = document.forms[the_form].elements[switcher_name].checked;
- }
- return true;
-}
-
-
-// function added for use in navigation dropdown
-// example :
-// <select name="anything" onchange="go(this);">
-// <option value="http://bitweaver.org">bitweaver.org</option>
-// </select>
-function go(o) {
- if (o.options[o.selectedIndex].value != "") {
- location = o.options[o.selectedIndex].value;
- o.options[o.selectedIndex] = 1;
- }
- return false;
-}
-
-/** \brief: modif a textarea dimension
- * \elementId = textarea idea
- * \height = nb pixels to add to the height (the number can be negative)
- * \width = nb pixels to add to the width
- * \formid = form id (needs to have 2 input rows and cols
- **/
-function textareasize(elementId, height, width, formId) {
- textarea = $(elementId);
- form = $(formId);
- if (textarea && height != 0 && textarea.rows + height > 5) {
- textarea.rows += height;
- if (form.rows)
- form.rows.value = textarea.rows;
- }
- if (textarea && width != 0 && textarea.cols + width > 10) {
- textarea.cols += width;
- if (form.cols)
- form.cols.value = textarea.cols;
- }
-}
-
-// function: popUpWin
-// desc: span a new window which is XHTML 1.0 Strict compliant and in accordance with WCAG
-// params: url: the url for the new window
-// type: standard or fullscreen
-// strWidth: width of the window
-// strHeight: height of the spawned window
-// usage: <a href="<URL>" title="{tr}Opens link in new window{/tr}" onkeypress="popUpWin(this.href,'standard',600,400);" onclick="popUpWin(this.href,'standard',600,400);return false;">{tr}FooBar{/tr}</a>
-var newWindow = null;
-function closeWin(){
- if (newWindow != null){
- if(!newWindow.closed)
- newWindow.close();
- }
-}
-
-function popUpWin(url, type, strWidth, strHeight) {
- closeWin();
- if (type == "fullScreen"){
- strWidth = screen.availWidth - 10;
- strHeight = screen.availHeight - 160;
- }
- var tools="";
- if (type == "standard" || type == "fullScreen") tools = "resizable,toolbar=no,location=no,scrollbars=yes,menubar=no,width="+strWidth+",height="+strHeight+",top=0,left=0";
- if (type == "console") tools = "resizable,toolbar=no,location=no,scrollbars=yes,width="+strWidth+",height="+strHeight+",left=0,top=0";
- newWindow = window.open(url, 'newWin', tools);
- newWindow.focus();
-}
-
-/*----------- functions that might not be in use anymore -----------*/
-function setUserModuleFromCombo(id) {
- $('usermoduledata').value = $('usermoduledata').value
- + $(id).options[$(id).selectedIndex].value;
-//$('usermoduledata').value='das';
-}
diff --git a/js/debugger.js b/js/debugger.js
deleted file mode 100644
index 30c8194..0000000
--- a/js/debugger.js
+++ /dev/null
@@ -1,30 +0,0 @@
-// this will dump the contents of an object into the page
-function dump( theObj ) {
- var tx="<table width='600'>";
- var props = new Array();
- for( var i in theObj ) { props.push(i); }
- props.sort();
- for( var i=0; i<props.length; i++ ) {
- var style = 'background:#fff;';
- j = i % 2;
- if( j == 0 ) { style = 'background:#ccc;'; }
- tx+= "<tr style='"+style+";'><td style='padding:5px;'>"+props[i]+"</td><td>"+theObj[props[i]]+"</td></tr>";
- }
- tx+="</table>"
- document.write( tx );
-}
-// from http://rails.techno-weenie.net/tip/2005/12/20/debugging_your_rjs_calls
-// this debugger works only with prototype 1.4, which is currently in beta
-// when you enable the debugger, prototype 1.4 is automatically enabled...
-Ajax.Responders.register({
- // log the beginning of the requests
- onCreate: function( request, transport ) {
- new Insertion.Bottom( 'jsdebug',
- '<p><strong>[' + new Date().toString() + '] accessing ' + request.url + '</strong></p>')
- },
- // log the completion of the requests
- onComplete: function( request, transport ) {
- new Insertion.Bottom( 'jsdebug',
- '<p><strong>http status: ' + transport.status + '</strong></p>' + '&lt;pre>' + transport.responseText.escapeHTML() + '&lt;/pre>')
- }
-});
diff --git a/js/fat.js b/js/fat.js
deleted file mode 100644
index 7c6347f..0000000
--- a/js/fat.js
+++ /dev/null
@@ -1,83 +0,0 @@
-// @name The Fade Anything Technique
-// @namespace http://www.axentric.com/aside/fat/
-// @version 1.0-RC1
-// @author Adam Michela
-
-var Fat = {
- make_hex : function (r,g,b) {
- r = r.toString(16); if (r.length == 1) r = '0' + r;
- g = g.toString(16); if (g.length == 1) g = '0' + g;
- b = b.toString(16); if (b.length == 1) b = '0' + b;
- return "#" + r + g + b;
- },
- fade_all : function () {
- var a = document.getElementsByTagName("*");
- for (var i = 0; i < a.length; i++)
- {
- var o = a[i];
- var r = /fade-?(\w{3,6})?/.exec(o.className);
- if (r)
- {
- if (!r[1]) r[1] = "";
- if (o.id) Fat.fade_element(o.id,null,null,"#"+r[1]);
- }
- }
- },
- fade_element : function (id, fps, duration, from, to) {
- if (!fps) fps = 30;
- if (!duration) duration = 3000;
- if (!from || from=="#") from = "#FFFF33";
- if (!to) to = this.get_bgcolor(id);
-
- var frames = Math.round(fps * (duration / 1000));
- var interval = duration / frames;
- var delay = interval;
- var frame = 0;
-
- if (from.length < 7) from += from.substr(1,3);
- if (to.length < 7) to += to.substr(1,3);
-
- var rf = parseInt(from.substr(1,2),16);
- var gf = parseInt(from.substr(3,2),16);
- var bf = parseInt(from.substr(5,2),16);
- var rt = parseInt(to.substr(1,2),16);
- var gt = parseInt(to.substr(3,2),16);
- var bt = parseInt(to.substr(5,2),16);
-
- var r,g,b,h;
- while (frame < frames) {
- r = Math.floor(rf * ((frames-frame)/frames) + rt * (frame/frames));
- g = Math.floor(gf * ((frames-frame)/frames) + gt * (frame/frames));
- b = Math.floor(bf * ((frames-frame)/frames) + bt * (frame/frames));
- h = this.make_hex(r,g,b);
-
- setTimeout("Fat.set_bgcolor('"+id+"','"+h+"')", delay);
-
- frame++;
- delay = interval * frame;
- }
- setTimeout("Fat.set_bgcolor('"+id+"','"+to+"')", delay);
- },
- set_bgcolor : function (id, c) {
- var o = document.getElementById(id);
- o.style.backgroundColor = c;
- },
- get_bgcolor : function (id) {
- var o = document.getElementById(id);
- while(o) {
- var c;
- if (window.getComputedStyle) c = window.getComputedStyle(o,null).getPropertyValue("background-color");
- if (o.currentStyle) c = o.currentStyle.backgroundColor;
- if ((c != "" && c != "transparent") || o.tagName == "BODY") { break; }
- o = o.parentNode;
- }
- if (c == undefined || c == "" || c == "transparent") c = "#FFFFFF";
- var rgb = c.match(/rgb\s*\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)/);
- if (rgb) c = this.make_hex(parseInt(rgb[1]),parseInt(rgb[2]),parseInt(rgb[3]));
- return c;
- }
-}
-
-window.onload = function () {
- Fat.fade_all();
-}
diff --git a/js/hoverfix.js b/js/hoverfix.js
deleted file mode 100644
index d8af8fe..0000000
--- a/js/hoverfix.js
+++ /dev/null
@@ -1,30 +0,0 @@
-/** JavaScript for MSIE **/
-function verifyIds(idList) {
- var ret = new Array();
- for(var i=0;i<idList.length;i++){
- var id = document.getElementById(idList[i]);
- if(id && (id.className == 'menu ver' || id.className == 'menu hor' || idList[i] == 'nav')) {ret.push(idList[i]);}
- }
- return ret;
-}
-ieHover = function() {
- ieIDs = verifyIds(nexusMenus);
- for (k=0;k<ieIDs.length;k++) {
- var ieULs = document.getElementById(ieIDs[k]).getElementsByTagName('ul');
- /** IE script to cover <select> elements with <iframe>s **/
- for (j=0; j<ieULs.length; j++) {
- ieULs[j].innerHTML = ('<iframe src="about:blank" scrolling="no" frameborder="0"></iframe>' + ieULs[j].innerHTML);
- var ieMat = ieULs[j].firstChild;
- ieMat.style.width=ieULs[j].offsetWidth+"px";
- ieMat.style.height=ieULs[j].offsetHeight+"px";
- ieULs[j].style.zIndex="1000000";
- }
- /** IE script to change class on mouseover **/
- var ieLIs = document.getElementById(ieIDs[k]).getElementsByTagName('li');
- for (var i=0; i<ieLIs.length; i++) if (ieLIs[i]) {
- ieLIs[i].onmouseover=function() {this.className+=" ieHover";}
- ieLIs[i].onmouseout=function() {this.className=this.className.replace(' ieHover', '');}
- }
- }
-}
-if (window.attachEvent) window.attachEvent('onload', ieHover);
diff --git a/js/multifile.js b/js/multifile.js
deleted file mode 100644
index cd6521c..0000000
--- a/js/multifile.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Multiple file selector by Stickman -- http://www.the-stickman.com
-function MultiSelector( list_target, max ){this.list_target = list_target;this.count = 0;this.id = 0;if( max ){this.max = max;} else {this.max = -1;};this.addElement = function( element ){if( element.tagName == 'INPUT' && element.type == 'file' ){element.name = 'file_' + this.id++;element.multi_selector = this;element.onchange = function(){var new_element = document.createElement( 'input' );new_element.type = 'file';this.parentNode.insertBefore( new_element, this );this.multi_selector.addElement( new_element );this.multi_selector.addListRow( this );this.style.position = 'absolute';this.style.left = '-1000px';};if( this.max != -1 && this.count >= this.max ){element.disabled = true;};this.count++;this.current_element = element;} else {alert( 'Error: not a file input element' );};};this.addListRow = function( element ){var new_row = document.createElement( 'div' );var new_row_button = document.createElement( 'input' );new_row_button.type = 'button';new_row_button.value = 'Remove';new_row.element = element;new_row_button.onclick= function(){this.parentNode.element.parentNode.removeChild( this.parentNode.element );this.parentNode.parentNode.removeChild( this.parentNode );this.parentNode.element.multi_selector.count--;this.parentNode.element.multi_selector.current_element.disabled = false;return false;};new_row.innerHTML = '<span>'+element.value+'</span>';new_row.appendChild( new_row_button );this.list_target.appendChild( new_row );};};
diff --git a/js/overlib.js b/js/overlib.js
deleted file mode 100644
index 704d123..0000000
--- a/js/overlib.js
+++ /dev/null
@@ -1,322 +0,0 @@
-//\/////
-//\ overLIB 4.21 - You may not remove or change this notice.
-//\ Copyright Erik Bosrup 1998-2004. All rights reserved.
-//\
-//\ Contributors are listed on the homepage.
-//\ This file might be old, always check for the latest version at:
-//\ http://www.bosrup.com/web/overlib/
-//\
-//\ Please read the license agreement (available through the link above)
-//\ before using overLIB. Direct any licensing questions to erik@bosrup.com.
-//\
-//\ Do not sell this as your own work or remove this copyright notice.
-//\ For full details on copying or changing this script please read the
-//\ license agreement at the link above. Please give credit on sites that
-//\ use overLIB and submit changes of the script so other people can use
-//\ them as well.
-//\/////
-//\ THIS IS A VERY MODIFIED VERSION. DO NOT EDIT OR PUBLISH. GET THE ORIGINAL!
-var olLoaded=0,pmStart=10000000,pmUpper=10001000,pmCount=pmStart+1,pmt='',pms=new Array(),olInfo=new Info('4.21',1),FREPLACE=0,FBEFORE=1,FAFTER=2,FALTERNATE=3,FCHAIN=4,olHideForm=0,olHautoFlag=0,olVautoFlag=0,hookPts=new Array(),postParse=new Array(),cmdLine=new Array(),runTime=new Array();
-registerCommands('donothing,inarray,caparray,sticky,background,noclose,caption,left,right,center,offsetx,offsety,fgcolor,bgcolor,textcolor,capcolor,closecolor,width,border,cellpad,status,autostatus,autostatuscap,height,closetext,snapx,snapy,fixx,fixy,relx,rely,fgbackground,bgbackground,padx,pady,fullhtml,above,below,capicon,textfont,captionfont,closefont,textsize,captionsize,closesize,timeout,function,delay,hauto,vauto,closeclick,wrap,followmouse,mouseoff,closetitle,cssoff,compatmode,cssclass,fgclass,bgclass,textfontclass,captionfontclass,closefontclass');
-if(typeof ol_fgcolor=='undefined')var ol_fgcolor="#CCCCFF";if(typeof ol_bgcolor=='undefined')var ol_bgcolor="#333399";if(typeof ol_textcolor=='undefined')var ol_textcolor="#000000";if(typeof ol_capcolor=='undefined')var ol_capcolor="#FFFFFF";if(typeof ol_closecolor=='undefined')var ol_closecolor="#9999FF";if(typeof ol_textfont=='undefined')var ol_textfont="Verdana,Arial,Helvetica";if(typeof ol_captionfont=='undefined')var ol_captionfont="Verdana,Arial,Helvetica";if(typeof ol_closefont=='undefined')var ol_closefont="Verdana,Arial,Helvetica";if(typeof ol_textsize=='undefined')var ol_textsize="1";if(typeof ol_captionsize=='undefined')var ol_captionsize="1";if(typeof ol_closesize=='undefined')var ol_closesize="1";if(typeof ol_width=='undefined')var ol_width="200";if(typeof ol_border=='undefined')var ol_border="1";if(typeof ol_cellpad=='undefined')var ol_cellpad=2;if(typeof ol_offsetx=='undefined')var ol_offsetx=10;if(typeof ol_offsety=='undefined')var ol_offsety=10;if(typeof ol_text=='undefined')var ol_text="Default Text";if(typeof ol_cap=='undefined')var ol_cap="";if(typeof ol_sticky=='undefined')var ol_sticky=0;if(typeof ol_background=='undefined')var ol_background="";if(typeof ol_close=='undefined')var ol_close="Close";if(typeof ol_hpos=='undefined')var ol_hpos=RIGHT;if(typeof ol_status=='undefined')var ol_status="";if(typeof ol_autostatus=='undefined')var ol_autostatus=0;if(typeof ol_height=='undefined')var ol_height=-1;if(typeof ol_snapx=='undefined')var ol_snapx=0;if(typeof ol_snapy=='undefined')var ol_snapy=0;if(typeof ol_fixx=='undefined')var ol_fixx=-1;if(typeof ol_fixy=='undefined')var ol_fixy=-1;if(typeof ol_relx=='undefined')var ol_relx=null;if(typeof ol_rely=='undefined')var ol_rely=null;if(typeof ol_fgbackground=='undefined')var ol_fgbackground="";if(typeof ol_bgbackground=='undefined')var ol_bgbackground="";if(typeof ol_padxl=='undefined')var ol_padxl=1;if(typeof ol_padxr=='undefined')var ol_padxr=1;if(typeof ol_padyt=='undefined')var ol_padyt=1;if(typeof ol_padyb=='undefined')var ol_padyb=1;if(typeof ol_fullhtml=='undefined')var ol_fullhtml=0;if(typeof ol_vpos=='undefined')var ol_vpos=BELOW;if(typeof ol_aboveheight=='undefined')var ol_aboveheight=0;if(typeof ol_capicon=='undefined')var ol_capicon="";if(typeof ol_frame=='undefined')var ol_frame=self;if(typeof ol_timeout=='undefined')var ol_timeout=0;if(typeof ol_function=='undefined')var ol_function=null;if(typeof ol_delay=='undefined')var ol_delay=0;if(typeof ol_hauto=='undefined')var ol_hauto=0;if(typeof ol_vauto=='undefined')var ol_vauto=0;if(typeof ol_closeclick=='undefined')var ol_closeclick=0;if(typeof ol_wrap=='undefined')var ol_wrap=0;if(typeof ol_followmouse=='undefined')var ol_followmouse=1;if(typeof ol_mouseoff=='undefined')var ol_mouseoff=0;if(typeof ol_closetitle=='undefined')var ol_closetitle='Close';if(typeof ol_compatmode=='undefined')var ol_compatmode=0;if(typeof ol_css=='undefined')var ol_css=CSSOFF;if(typeof ol_fgclass=='undefined')var ol_fgclass="";if(typeof ol_bgclass=='undefined')var ol_bgclass="";if(typeof ol_textfontclass=='undefined')var ol_textfontclass="";if(typeof ol_captionfontclass=='undefined')var ol_captionfontclass="";if(typeof ol_closefontclass=='undefined')var ol_closefontclass="";
-if(typeof ol_texts=='undefined')var ol_texts=new Array("Text 0","Text 1");if(typeof ol_caps=='undefined')var ol_caps=new Array("Caption 0","Caption 1");
-var o3_text="",o3_cap="",o3_sticky=0,o3_background="",o3_close="Close",o3_hpos=RIGHT,o3_offsetx=2,o3_offsety=2,o3_fgcolor="",o3_bgcolor="",o3_textcolor="",o3_capcolor="",o3_closecolor="",o3_width=100,o3_border=1,o3_cellpad=2,o3_status="",o3_autostatus=0,o3_height=-1,o3_snapx=0,o3_snapy=0,o3_fixx=-1,o3_fixy=-1,o3_relx=null,o3_rely=null,o3_fgbackground="",o3_bgbackground="",o3_padxl=0,o3_padxr=0,o3_padyt=0,o3_padyb=0,o3_fullhtml=0,o3_vpos=BELOW,o3_aboveheight=0,o3_capicon="",o3_textfont="Verdana,Arial,Helvetica",o3_captionfont="Verdana,Arial,Helvetica",o3_closefont="Verdana,Arial,Helvetica",o3_textsize="1",o3_captionsize="1",o3_closesize="1",o3_frame=self,o3_timeout=0,o3_timerid=0,o3_allowmove=0,o3_function=null,o3_delay=0,o3_delayid=0,o3_hauto=0,o3_vauto=0,o3_closeclick=0,o3_wrap=0,o3_followmouse=1,o3_mouseoff=0,o3_closetitle='',o3_compatmode=0,o3_css=CSSOFF,o3_fgclass="",o3_bgclass="",o3_textfontclass="",o3_captionfontclass="",o3_closefontclass="";
-var o3_x=0,o3_y=0,o3_showingsticky=0,o3_removecounter=0;
-var over=null,fnRef,hoveringSwitch=false,olHideDelay;
-var isMac=(navigator.userAgent.indexOf("Mac")!=-1),olOp=(navigator.userAgent.toLowerCase().indexOf('opera')>-1&&document.createTextNode),olNs4=(navigator.appName=='Netscape'&&parseInt(navigator.appVersion)==4),olNs6=(document.getElementById)?true:false,olKq=(olNs6&&/konqueror/i.test(navigator.userAgent)),olIe4=(document.all)?true:false,olIe5=false,olIe55=false,docRoot='document.body';
-if(olNs4){var oW=window.innerWidth;var oH=window.innerHeight;window.onresize=function(){if(oW!=window.innerWidth||oH!=window.innerHeight)location.reload();}}
-if(olIe4){var agent=navigator.userAgent;if(/MSIE/.test(agent)){var versNum=parseFloat(agent.match(/MSIE[ ](\d\.\d+)\.*/i)[1]);if(versNum>=5){olIe5=true;olIe55=(versNum>=5.5&&!olOp)?true:false;if(olNs6)olNs6=false;}}
-if(olNs6)olIe4=false;}
-if(document.compatMode&&document.compatMode=='CSS1Compat'){docRoot=((olIe4&&!olOp)?'document.documentElement':docRoot);}
-if(window.addEventListener)window.addEventListener("load",OLonLoad_handler,false);else if(window.attachEvent)window.attachEvent("onload",OLonLoad_handler);
-var capExtent;
-function overlib(){if(!olLoaded||isExclusive(overlib.arguments))return true;if(olCheckMouseCapture)olMouseCapture();if(over){over=(typeof over.id!='string')?o3_frame.document.all['overDiv']:over;cClick();}
-olHideDelay=0;o3_text=ol_text;o3_cap=ol_cap;o3_sticky=ol_sticky;o3_background=ol_background;o3_close=ol_close;o3_hpos=ol_hpos;o3_offsetx=ol_offsetx;o3_offsety=ol_offsety;o3_fgcolor=ol_fgcolor;o3_bgcolor=ol_bgcolor;o3_textcolor=ol_textcolor;o3_capcolor=ol_capcolor;o3_closecolor=ol_closecolor;o3_width=ol_width;o3_border=ol_border;o3_cellpad=ol_cellpad;o3_status=ol_status;o3_autostatus=ol_autostatus;o3_height=ol_height;o3_snapx=ol_snapx;o3_snapy=ol_snapy;o3_fixx=ol_fixx;o3_fixy=ol_fixy;o3_relx=ol_relx;o3_rely=ol_rely;o3_fgbackground=ol_fgbackground;o3_bgbackground=ol_bgbackground;o3_padxl=ol_padxl;o3_padxr=ol_padxr;o3_padyt=ol_padyt;o3_padyb=ol_padyb;o3_fullhtml=ol_fullhtml;o3_vpos=ol_vpos;o3_aboveheight=ol_aboveheight;o3_capicon=ol_capicon;o3_textfont=ol_textfont;o3_captionfont=ol_captionfont;o3_closefont=ol_closefont;o3_textsize=ol_textsize;o3_captionsize=ol_captionsize;o3_closesize=ol_closesize;o3_timeout=ol_timeout;o3_function=ol_function;o3_delay=ol_delay;o3_hauto=ol_hauto;o3_vauto=ol_vauto;o3_closeclick=ol_closeclick;o3_wrap=ol_wrap;o3_followmouse=ol_followmouse;o3_mouseoff=ol_mouseoff;o3_closetitle=ol_closetitle;o3_css=ol_css;o3_compatmode=ol_compatmode;o3_fgclass=ol_fgclass;o3_bgclass=ol_bgclass;o3_textfontclass=ol_textfontclass;o3_captionfontclass=ol_captionfontclass;o3_closefontclass=ol_closefontclass;
-setRunTimeVariables();
-fnRef='';
-o3_frame=ol_frame;
-if(!(over=createDivContainer()))return false;
-parseTokens('o3_',overlib.arguments);if(!postParseChecks())return false;
-if(o3_delay==0){return runHook("olMain",FREPLACE);}else{o3_delayid=setTimeout("runHook('olMain',FREPLACE)",o3_delay);return false;}}
-function nd(time){if(olLoaded&&!isExclusive()){hideDelay(time);
-if(o3_removecounter>=1){o3_showingsticky=0 };
-if(o3_showingsticky==0){o3_allowmove=0;if(over!=null&&o3_timerid==0)runHook("hideObject",FREPLACE,over);}else{o3_removecounter++;}}
-return true;}
-function cClick(){if(olLoaded){runHook("hideObject",FREPLACE,over);o3_showingsticky=0;}
-return false;}
-function overlib_pagedefaults(){parseTokens('ol_',overlib_pagedefaults.arguments);}
-function olMain(){var layerhtml,styleType;runHook("olMain",FBEFORE);
-if(o3_background!=""||o3_fullhtml){
-layerhtml=runHook('ol_content_background',FALTERNATE,o3_css,o3_text,o3_background,o3_fullhtml);}else{
-styleType=(pms[o3_css-1-pmStart]=="cssoff"||pms[o3_css-1-pmStart]=="cssclass");
-if(o3_fgbackground!="")o3_fgbackground="background=\""+o3_fgbackground+"\"";if(o3_bgbackground!="")o3_bgbackground=(styleType?"background=\""+o3_bgbackground+"\"":o3_bgbackground);
-if(o3_fgcolor!="")o3_fgcolor=(styleType?"bgcolor=\""+o3_fgcolor+"\"":o3_fgcolor);if(o3_bgcolor!="")o3_bgcolor=(styleType?"bgcolor=\""+o3_bgcolor+"\"":o3_bgcolor);
-if(o3_height>0)o3_height=(styleType?"height=\""+o3_height+"\"":o3_height);else o3_height="";
-if(o3_cap==""){
-layerhtml=runHook('ol_content_simple',FALTERNATE,o3_css,o3_text);}else{
-if(o3_sticky){
-layerhtml=runHook('ol_content_caption',FALTERNATE,o3_css,o3_text,o3_cap,o3_close);}else{
-layerhtml=runHook('ol_content_caption',FALTERNATE,o3_css,o3_text,o3_cap,"");}}}
-if(o3_sticky){if(o3_timerid>0){clearTimeout(o3_timerid);o3_timerid=0;}
-o3_showingsticky=1;o3_removecounter=0;}
-if(!runHook("createPopup",FREPLACE,layerhtml))return false;
-if(o3_autostatus>0){o3_status=o3_text;if(o3_autostatus>1)o3_status=o3_cap;}
-o3_allowmove=0;
-if(o3_timeout>0){if(o3_timerid>0)clearTimeout(o3_timerid);o3_timerid=setTimeout("cClick()",o3_timeout);}
-runHook("disp",FREPLACE,o3_status);runHook("olMain",FAFTER);
-return(olOp&&event&&event.type=='mouseover'&&!o3_status)?'':(o3_status!='');}
-function ol_content_simple(text){var cpIsMultiple=/,/.test(o3_cellpad);var txt='<table width="'+o3_width+'" border="0" cellpadding="'+o3_border+'" cellspacing="0" '+(o3_bgclass?'class="'+o3_bgclass+'"':o3_bgcolor+' '+o3_height)+'><tr><td><table width="100%" border="0" '+((olNs4||!cpIsMultiple)?'cellpadding="'+o3_cellpad+'" ':'')+'cellspacing="0" '+(o3_fgclass?'class="'+o3_fgclass+'"':o3_fgcolor+' '+o3_fgbackground+' '+o3_height)+'><tr><td valign="TOP"'+(o3_textfontclass?' class="'+o3_textfontclass+'">':((!olNs4&&cpIsMultiple)?' style="'+setCellPadStr(o3_cellpad)+'">':'>'))+(o3_textfontclass?'':wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass?'':wrapStr(1,o3_textsize))+'</td></tr></table></td></tr></table>';
-set_background("");return txt;}
-function ol_content_caption(text,title,close){var nameId,txt,cpIsMultiple=/,/.test(o3_cellpad);var closing,closeevent;
-closing="";closeevent="onmouseover";if(o3_closeclick==1)closeevent=(o3_closetitle?"title='"+o3_closetitle+"'":"")+" onclick";if(o3_capicon!=""){nameId=' hspace=\"5\"'+' align=\"middle\" alt=\"\"';if(typeof o3_dragimg!='undefined'&&o3_dragimg)nameId=' hspace=\"5\"'+' name=\"'+o3_dragimg+'\" id=\"'+o3_dragimg+'\" align=\"middle\" alt=\"Drag Enabled\" title=\"Drag Enabled\"';o3_capicon='<img src=\"'+o3_capicon+'\"'+nameId+' />';}
-if(close!="")
-closing='<td '+(!o3_compatmode&&o3_closefontclass?'class="'+o3_closefontclass:'align="RIGHT')+'"><a href="javascript:return '+fnRef+'cClick();"'+((o3_compatmode&&o3_closefontclass)?' class="'+o3_closefontclass+'" ':' ')+closeevent+'="return '+fnRef+'cClick();">'+(o3_closefontclass?'':wrapStr(0,o3_closesize,'close'))+close+(o3_closefontclass?'':wrapStr(1,o3_closesize,'close'))+'</a></td>';txt='<table width="'+o3_width+'" border="0" cellpadding="'+o3_border+'" cellspacing="0" '+(o3_bgclass?'class="'+o3_bgclass+'"':o3_bgcolor+' '+o3_bgbackground+' '+o3_height)+'><tr><td><table width="100%" border="0" cellpadding="2" cellspacing="0"><tr><td'+(o3_captionfontclass?' class="'+o3_captionfontclass+'">':'>')+(o3_captionfontclass?'':'<b>'+wrapStr(0,o3_captionsize,'caption'))+o3_capicon+title+(o3_captionfontclass?'':wrapStr(1,o3_captionsize)+'</b>')+'</td>'+closing+'</tr></table><table width="100%" border="0" '+((olNs4||!cpIsMultiple)?'cellpadding="'+o3_cellpad+'" ':'')+'cellspacing="0" '+(o3_fgclass?'class="'+o3_fgclass+'"':o3_fgcolor+' '+o3_fgbackground+' '+o3_height)+'><tr><td valign="TOP"'+(o3_textfontclass?' class="'+o3_textfontclass+'">' :((!olNs4&&cpIsMultiple)?' style="'+setCellPadStr(o3_cellpad)+'">':'>'))+(o3_textfontclass?'':wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass?'':wrapStr(1,o3_textsize))+'</td></tr></table></td></tr></table>';
-set_background("");return txt;}
-function ol_content_background(text,picture,hasfullhtml){if(hasfullhtml){txt=text;}else{txt='<table width="'+o3_width+'" border="0" cellpadding="0" cellspacing="0" height="'+o3_height+'"><tr><td colspan="3" height="'+o3_padyt+'"></td></tr><tr><td width="'+o3_padxl+'"></td><td valign="TOP" width="'+(o3_width-o3_padxl-o3_padxr)+(o3_textfontclass?'" class="'+o3_textfontclass:'')+'">'+(o3_textfontclass?'':wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass?'':wrapStr(1,o3_textsize))+'</td><td width="'+o3_padxr+'"></td></tr><tr><td colspan="3" height="'+o3_padyb+'"></td></tr></table>';}
-set_background(picture);return txt;}
-function set_background(pic){if(pic==""){if(olNs4){over.background.src=null;}else if(over.style){over.style.backgroundImage="none";}
-}else{if(olNs4){over.background.src=pic;}else if(over.style){over.style.width=o3_width+'px';over.style.backgroundImage="url("+pic+")";}}}
-var olShowId=-1;
-function disp(statustext){runHook("disp",FBEFORE);
-if(o3_allowmove==0){runHook("placeLayer",FREPLACE);(olNs6&&olShowId<0)?olShowId=setTimeout("runHook('showObject',FREPLACE,over)",1):runHook("showObject",FREPLACE,over);o3_allowmove=(o3_sticky||o3_followmouse==0)?0:1;}
-runHook("disp",FAFTER);
-if(statustext!="")self.status=statustext;}
-function createPopup(lyrContent){runHook("createPopup",FBEFORE);
-if(o3_wrap){var wd,ww,theObj=(olNs4?over:over.style);theObj.top=theObj.left=((olIe4&&!olOp)?0:-10000)+(!olNs4?'px':0);layerWrite(lyrContent);wd=(olNs4?over.clip.width:over.offsetWidth);if(wd>(ww=windowWidth())){lyrContent=lyrContent.replace(/\&nbsp;/g,' ');o3_width=ww;o3_wrap=0;}}
-layerWrite(lyrContent);
-if(o3_wrap)o3_width=(olNs4?over.clip.width:over.offsetWidth);
-runHook("createPopup",FAFTER,lyrContent);
-return true;}
-function placeLayer(){var placeX,placeY,widthFix=0;
-if(o3_frame.innerWidth)widthFix=18;iwidth=windowWidth();
-winoffset=(olIe4)?eval('o3_frame.'+docRoot+'.scrollLeft'):o3_frame.pageXOffset;
-placeX=runHook('horizontalPlacement',FCHAIN,iwidth,winoffset,widthFix);
-if(o3_frame.innerHeight){iheight=o3_frame.innerHeight;}else if(eval('o3_frame.'+docRoot)&&eval("typeof o3_frame."+docRoot+".clientHeight=='number'")&&eval('o3_frame.'+docRoot+'.clientHeight')){iheight=eval('o3_frame.'+docRoot+'.clientHeight');}
-scrolloffset=(olIe4)?eval('o3_frame.'+docRoot+'.scrollTop'):o3_frame.pageYOffset;placeY=runHook('verticalPlacement',FCHAIN,iheight,scrolloffset);
-repositionTo(over,placeX,placeY);}
-function olMouseMove(e){var e=(e)?e:event;
-if(e.pageX){o3_x=e.pageX;o3_y=e.pageY;}else if(e.clientX){o3_x=eval('e.clientX+o3_frame.'+docRoot+'.scrollLeft');o3_y=eval('e.clientY+o3_frame.'+docRoot+'.scrollTop');}
-if(o3_allowmove==1)runHook("placeLayer",FREPLACE);
-if(hoveringSwitch&&!olNs4&&runHook("cursorOff",FREPLACE)){(olHideDelay?hideDelay(olHideDelay):cClick());hoveringSwitch=!hoveringSwitch;}}
-function no_overlib(){return ver3fix;}
-function olMouseCapture(){capExtent=document;var fN,str='',l,k,f,wMv,sS,mseHandler=olMouseMove;var re=/function[ ]*(\w*)\(/;
-wMv=(!olIe4&&window.onmousemove);if(document.onmousemove||wMv){if(wMv)capExtent=window;f=capExtent.onmousemove.toString();fN=f.match(re);if(fN==null){str=f+'(e);';}else if(fN[1]=='anonymous'||fN[1]=='olMouseMove'||(wMv&&fN[1]=='onmousemove')){if(!olOp&&wMv){l=f.indexOf('{')+1;k=f.lastIndexOf('}');sS=f.substring(l,k);if((l=sS.indexOf('('))!=-1){sS=sS.substring(0,l).replace(/^\s+/,'').replace(/\s+$/,'');if(eval("typeof "+sS+"=='undefined'"))window.onmousemove=null;else str=sS+'(e);';}}
-if(!str){olCheckMouseCapture=false;return;}
-}else{if(fN[1])str=fN[1]+'(e);';else{l=f.indexOf('{')+1;k=f.lastIndexOf('}');str=f.substring(l,k)+'\n';}}
-str+='olMouseMove(e);';mseHandler=new Function('e',str);}
-capExtent.onmousemove=mseHandler;if(olNs4)capExtent.captureEvents(Event.MOUSEMOVE);}
-function parseTokens(pf,ar){
-var v,i,mode=-1,par=(pf!='ol_'),fnMark=(par&&!ar.length?1:0);
-for(i=0;i<ar.length;i++){if(mode<0){
-if(typeof ar[i]=='number'&&ar[i]>pmStart&&ar[i]<pmUpper){fnMark=(par?1:0);i--;}else{switch(pf){case 'ol_':
-ol_text=ar[i].toString();break;default:
-o3_text=ar[i].toString();}}
-mode=0;}else{
-if(ar[i]>=pmCount||ar[i]==DONOTHING){continue;}
-if(ar[i]==INARRAY){fnMark=0;eval(pf+'text=ol_texts['+ar[++i]+'].toString()');continue;}
-if(ar[i]==CAPARRAY){eval(pf+'cap=ol_caps['+ar[++i]+'].toString()');continue;}
-if(ar[i]==STICKY){if(pf!='ol_')eval(pf+'sticky=1');continue;}
-if(ar[i]==BACKGROUND){eval(pf+'background="'+ar[++i]+'"');continue;}
-if(ar[i]==NOCLOSE){if(pf!='ol_')opt_NOCLOSE();continue;}
-if(ar[i]==CAPTION){eval(pf+"cap='"+escSglQuote(ar[++i])+"'");continue;}
-if(ar[i]==CENTER||ar[i]==LEFT||ar[i]==RIGHT){eval(pf+'hpos='+ar[i]);if(pf!='ol_')olHautoFlag=1;continue;}
-if(ar[i]==OFFSETX){eval(pf+'offsetx='+ar[++i]);continue;}
-if(ar[i]==OFFSETY){eval(pf+'offsety='+ar[++i]);continue;}
-if(ar[i]==FGCOLOR){eval(pf+'fgcolor="'+ar[++i]+'"');continue;}
-if(ar[i]==BGCOLOR){eval(pf+'bgcolor="'+ar[++i]+'"');continue;}
-if(ar[i]==TEXTCOLOR){eval(pf+'textcolor="'+ar[++i]+'"');continue;}
-if(ar[i]==CAPCOLOR){eval(pf+'capcolor="'+ar[++i]+'"');continue;}
-if(ar[i]==CLOSECOLOR){eval(pf+'closecolor="'+ar[++i]+'"');continue;}
-if(ar[i]==WIDTH){eval(pf+'width='+ar[++i]);continue;}
-if(ar[i]==BORDER){eval(pf+'border='+ar[++i]);continue;}
-if(ar[i]==CELLPAD){i=opt_MULTIPLEARGS(++i,ar,(pf+'cellpad'));continue;}
-if(ar[i]==STATUS){eval(pf+"status='"+escSglQuote(ar[++i])+"'");continue;}
-if(ar[i]==AUTOSTATUS){eval(pf+'autostatus=('+pf+'autostatus==1)?0:1');continue;}
-if(ar[i]==AUTOSTATUSCAP){eval(pf+'autostatus=('+pf+'autostatus==2)?0:2');continue;}
-if(ar[i]==HEIGHT){eval(pf+'height='+pf+'aboveheight='+ar[++i]);continue;}
-if(ar[i]==CLOSETEXT){eval(pf+"close='"+escSglQuote(ar[++i])+"'");continue;}
-if(ar[i]==SNAPX){eval(pf+'snapx='+ar[++i]);continue;}
-if(ar[i]==SNAPY){eval(pf+'snapy='+ar[++i]);continue;}
-if(ar[i]==FIXX){eval(pf+'fixx='+ar[++i]);continue;}
-if(ar[i]==FIXY){eval(pf+'fixy='+ar[++i]);continue;}
-if(ar[i]==RELX){eval(pf+'relx='+ar[++i]);continue;}
-if(ar[i]==RELY){eval(pf+'rely='+ar[++i]);continue;}
-if(ar[i]==FGBACKGROUND){eval(pf+'fgbackground="'+ar[++i]+'"');continue;}
-if(ar[i]==BGBACKGROUND){eval(pf+'bgbackground="'+ar[++i]+'"');continue;}
-if(ar[i]==PADX){eval(pf+'padxl='+ar[++i]);eval(pf+'padxr='+ar[++i]);continue;}
-if(ar[i]==PADY){eval(pf+'padyt='+ar[++i]);eval(pf+'padyb='+ar[++i]);continue;}
-if(ar[i]==FULLHTML){if(pf!='ol_')eval(pf+'fullhtml=1');continue;}
-if(ar[i]==BELOW||ar[i]==ABOVE){eval(pf+'vpos='+ar[i]);if(pf!='ol_')olVautoFlag=1;continue;}
-if(ar[i]==CAPICON){eval(pf+'capicon="'+ar[++i]+'"');continue;}
-if(ar[i]==TEXTFONT){eval(pf+"textfont='"+escSglQuote(ar[++i])+"'");continue;}
-if(ar[i]==CAPTIONFONT){eval(pf+"captionfont='"+escSglQuote(ar[++i])+"'");continue;}
-if(ar[i]==CLOSEFONT){eval(pf+"closefont='"+escSglQuote(ar[++i])+"'");continue;}
-if(ar[i]==TEXTSIZE){eval(pf+'textsize="'+ar[++i]+'"');continue;}
-if(ar[i]==CAPTIONSIZE){eval(pf+'captionsize="'+ar[++i]+'"');continue;}
-if(ar[i]==CLOSESIZE){eval(pf+'closesize="'+ar[++i]+'"');continue;}
-if(ar[i]==TIMEOUT){eval(pf+'timeout='+ar[++i]);continue;}
-if(ar[i]==FUNCTION){if(pf=='ol_'){if(typeof ar[i+1]!='number'){v=ar[++i];ol_function=(typeof v=='function'?v:null);}}else{fnMark=0;v=null;if(typeof ar[i+1]!='number')v=ar[++i]; opt_FUNCTION(v);} continue;}
-if(ar[i]==DELAY){eval(pf+'delay='+ar[++i]);continue;}
-if(ar[i]==HAUTO){eval(pf+'hauto=('+pf+'hauto==0)?1:0');continue;}
-if(ar[i]==VAUTO){eval(pf+'vauto=('+pf+'vauto==0)?1:0');continue;}
-if(ar[i]==CLOSECLICK){eval(pf+'closeclick=('+pf+'closeclick==0)?1:0');continue;}
-if(ar[i]==WRAP){eval(pf+'wrap=('+pf+'wrap==0)?1:0');continue;}
-if(ar[i]==FOLLOWMOUSE){eval(pf+'followmouse=('+pf+'followmouse==1)?0:1');continue;}
-if(ar[i]==MOUSEOFF){eval(pf+'mouseoff=('+pf+'mouseoff==0)?1:0');v=ar[i+1];if(pf!='ol_'&&eval(pf+'mouseoff')&&typeof v=='number'&&(v<pmStart||v>pmUpper))olHideDelay=ar[++i];continue;}
-if(ar[i]==CLOSETITLE){eval(pf+"closetitle='"+escSglQuote(ar[++i])+"'");continue;}
-if(ar[i]==CSSOFF||ar[i]==CSSCLASS){eval(pf+'css='+ar[i]);continue;}
-if(ar[i]==COMPATMODE){eval(pf+'compatmode=('+pf+'compatmode==0)?1:0');continue;}
-if(ar[i]==FGCLASS){eval(pf+'fgclass="'+ar[++i]+'"');continue;}
-if(ar[i]==BGCLASS){eval(pf+'bgclass="'+ar[++i]+'"');continue;}
-if(ar[i]==TEXTFONTCLASS){eval(pf+'textfontclass="'+ar[++i]+'"');continue;}
-if(ar[i]==CAPTIONFONTCLASS){eval(pf+'captionfontclass="'+ar[++i]+'"');continue;}
-if(ar[i]==CLOSEFONTCLASS){eval(pf+'closefontclass="'+ar[++i]+'"');continue;}
-i=parseCmdLine(pf,i,ar);}}
-if(fnMark&&o3_function)o3_text=o3_function();
-if((pf=='o3_')&&o3_wrap){o3_width=0;
-var tReg=/<.*\n*>/ig;if(!tReg.test(o3_text))o3_text=o3_text.replace(/[ ]+/g,'&nbsp;');if(!tReg.test(o3_cap))o3_cap=o3_cap.replace(/[ ]+/g,'&nbsp;');}
-if((pf=='o3_')&&o3_sticky){if(!o3_close&&(o3_frame!=ol_frame))o3_close=ol_close;if(o3_mouseoff&&(o3_frame==ol_frame))opt_NOCLOSE(' ');}}
-function layerWrite(txt){txt+="\n";if(olNs4){var lyr=o3_frame.document.layers['overDiv'].document
-lyr.write(txt)
-lyr.close()
-}else if(typeof over.innerHTML!='undefined'){if(olIe5&&isMac)over.innerHTML='';over.innerHTML=txt;}else{range=o3_frame.document.createRange();range.setStartAfter(over);domfrag=range.createContextualFragment(txt);
-while(over.hasChildNodes()){over.removeChild(over.lastChild);}
-over.appendChild(domfrag);}}
-function showObject(obj){runHook("showObject",FBEFORE);
-var theObj=(olNs4?obj:obj.style);theObj.visibility='visible';
-runHook("showObject",FAFTER);}
-function hideObject(obj){runHook("hideObject",FBEFORE);
-var theObj=(olNs4?obj:obj.style);if(olNs6&&olShowId>0){clearTimeout(olShowId);olShowId=0;}
-theObj.visibility='hidden';theObj.top=theObj.left=((olIe4&&!olOp)?0:-10000)+(!olNs4?'px':0);
-if(o3_timerid>0)clearTimeout(o3_timerid);if(o3_delayid>0)clearTimeout(o3_delayid);
-o3_timerid=0;o3_delayid=0;self.status="";
-if(obj.onmouseout||obj.onmouseover){if(olNs4)obj.releaseEvents(Event.MOUSEOUT||Event.MOUSEOVER);obj.onmouseout=obj.onmouseover=null;}
-runHook("hideObject",FAFTER);}
-function repositionTo(obj,xL,yL){var theObj=(olNs4?obj:obj.style);theObj.left=xL+(!olNs4?'px':0);theObj.top=yL+(!olNs4?'px':0);}
-function cursorOff(){var left=parseInt(over.style.left);var top=parseInt(over.style.top);var right=left+(over.offsetWidth>=parseInt(o3_width)?over.offsetWidth:parseInt(o3_width));var bottom=top+(over.offsetHeight>=o3_aboveheight?over.offsetHeight:o3_aboveheight);
-if(o3_x<left||o3_x>right||o3_y<top||o3_y>bottom)return true;
-return false;}
-function opt_FUNCTION(callme){o3_text=(callme?(typeof callme=='string'?(/.+\(.*\)/.test(callme)?eval(callme):callme):callme()):(o3_function?o3_function():'No Function'));
-return 0;}
-function opt_NOCLOSE(unused){if(!unused)o3_close="";
-if(olNs4){over.captureEvents(Event.MOUSEOUT||Event.MOUSEOVER);over.onmouseover=function(){if(o3_timerid>0){clearTimeout(o3_timerid);o3_timerid=0;} }
-over.onmouseout=function(e){if(olHideDelay)hideDelay(olHideDelay);else cClick(e);}
-}else{over.onmouseover=function(){hoveringSwitch=true;if(o3_timerid>0){clearTimeout(o3_timerid);o3_timerid=0;} }}
-return 0;}
-function opt_MULTIPLEARGS(i,args,parameter){var k=i,re,pV,str='';
-for(k=i;k<args.length;k++){if(typeof args[k]=='number'&&args[k]>pmStart)break;str+=args[k]+',';}
-if(str)str=str.substring(0,--str.length);
-k--;pV=(olNs4&&/cellpad/i.test(parameter))?str.split(',')[0]:str;eval(parameter+'="'+pV+'"');
-return k;}
-function nbspCleanup(){if(o3_wrap){o3_text=o3_text.replace(/\&nbsp;/g,' ');o3_cap=o3_cap.replace(/\&nbsp;/g,' ');}}
-function escSglQuote(str){return str.toString().replace(/'/g,"\\'");}
-function OLonLoad_handler(e){var re=/\w+\(.*\)[;\s]+/g,olre=/overlib\(|nd\(|cClick\(/,fn,l,i;
-if(!olLoaded)olLoaded=1;
-if(window.removeEventListener&&e.eventPhase==3)window.removeEventListener("load",OLonLoad_handler,false);else if(window.detachEvent){window.detachEvent("onload",OLonLoad_handler);var fN=document.body.getAttribute('onload');if(fN){fN=fN.toString().match(re);if(fN&&fN.length){for(i=0;i<fN.length;i++){if(/anonymous/.test(fN[i]))continue;while((l=fN[i].search(/\)[;\s]+/))!=-1){fn=fN[i].substring(0,l+1);fN[i]=fN[i].substring(l+2);if(olre.test(fn))eval(fn);}}}}}}
-function wrapStr(endWrap,fontSizeStr,whichString){var fontStr,fontColor,isClose=((whichString=='close')?1:0),hasDims=/[%\-a-z]+$/.test(fontSizeStr);fontSizeStr=(olNs4)?(!hasDims?fontSizeStr:'1'):fontSizeStr;if(endWrap)return(hasDims&&!olNs4)?(isClose?'</span>':'</div>'):'</font>';else{fontStr='o3_'+whichString+'font';fontColor='o3_'+((whichString=='caption')? 'cap':whichString)+'color';return(hasDims&&!olNs4)?(isClose?'<span style="font-family: '+quoteMultiNameFonts(eval(fontStr))+';color: '+eval(fontColor)+';font-size: '+fontSizeStr+';">':'<div style="font-family: '+quoteMultiNameFonts(eval(fontStr))+';color: '+eval(fontColor)+';font-size: '+fontSizeStr+';">'):'<font face="'+eval(fontStr)+'" color="'+eval(fontColor)+'" size="'+(parseInt(fontSizeStr)>7?'7':fontSizeStr)+'">';}}
-function quoteMultiNameFonts(theFont){var v,pM=theFont.split(',');for(var i=0;i<pM.length;i++){v=pM[i];v=v.replace(/^\s+/,'').replace(/\s+$/,'');if(/\s/.test(v)&&!/['"]/.test(v)){v="\'"+v+"\'";pM[i]=v;}}
-return pM.join();}
-function isExclusive(args){return false;}
-function setCellPadStr(parameter){var Str='',j=0,ary=new Array(),top,bottom,left,right;
-Str+='padding: ';ary=parameter.replace(/\s+/g,'').split(',');
-switch(ary.length){case 2:
-top=bottom=ary[j];left=right=ary[++j];break;case 3:
-top=ary[j];left=right=ary[++j];bottom=ary[++j];break;case 4:
-top=ary[j];right=ary[++j];bottom=ary[++j];left=ary[++j];break;}
-Str+=((ary.length==1)?ary[0]+'px;':top+'px '+right+'px '+bottom+'px '+left+'px;');
-return Str;}
-function hideDelay(time){if(time&&!o3_delay){if(o3_timerid>0)clearTimeout(o3_timerid);
-o3_timerid=setTimeout("cClick()",(o3_timeout=time));}}
-function horizontalPlacement(browserWidth,horizontalScrollAmount,widthFix){var placeX,iwidth=browserWidth,winoffset=horizontalScrollAmount;var parsedWidth=parseInt(o3_width);
-if(o3_fixx>-1||o3_relx!=null){
-placeX=(o3_relx!=null?( o3_relx<0?winoffset+o3_relx+iwidth-parsedWidth-widthFix:winoffset+o3_relx):o3_fixx);}else{
-if(o3_hauto==1){if((o3_x-winoffset)>(iwidth/2)){o3_hpos=LEFT;}else{o3_hpos=RIGHT;}}
-if(o3_hpos==CENTER){placeX=o3_x+o3_offsetx-(parsedWidth/2);
-if(placeX<winoffset)placeX=winoffset;}
-if(o3_hpos==RIGHT){placeX=o3_x+o3_offsetx;
-if((placeX+parsedWidth)>(winoffset+iwidth-widthFix)){placeX=iwidth+winoffset-parsedWidth-widthFix;if(placeX<0)placeX=0;}}
-if(o3_hpos==LEFT){placeX=o3_x-o3_offsetx-parsedWidth;if(placeX<winoffset)placeX=winoffset;}
-if(o3_snapx>1){var snapping=placeX % o3_snapx;
-if(o3_hpos==LEFT){placeX=placeX-(o3_snapx+snapping);}else{
-placeX=placeX+(o3_snapx-snapping);}
-if(placeX<winoffset)placeX=winoffset;}}
-return placeX;}
-function verticalPlacement(browserHeight,verticalScrollAmount){var placeY,iheight=browserHeight,scrolloffset=verticalScrollAmount;var parsedHeight=(o3_aboveheight?parseInt(o3_aboveheight):(olNs4?over.clip.height:over.offsetHeight));
-if(o3_fixy>-1||o3_rely!=null){
-placeY=(o3_rely!=null?(o3_rely<0?scrolloffset+o3_rely+iheight-parsedHeight:scrolloffset+o3_rely):o3_fixy);}else{
-if(o3_vauto==1){if((o3_y-scrolloffset)>(iheight/2)&&o3_vpos==BELOW&&(o3_y+parsedHeight+o3_offsety-(scrolloffset+iheight)>0)){o3_vpos=ABOVE;}else if(o3_vpos==ABOVE&&(o3_y-(parsedHeight+o3_offsety)-scrolloffset<0)){o3_vpos=BELOW;}}
-if(o3_vpos==ABOVE){if(o3_aboveheight==0)o3_aboveheight=parsedHeight;
-placeY=o3_y-(o3_aboveheight+o3_offsety);if(placeY<scrolloffset)placeY=scrolloffset;}else{
-placeY=o3_y+o3_offsety;}
-if(o3_snapy>1){var snapping=placeY % o3_snapy;
-if(o3_aboveheight>0&&o3_vpos==ABOVE){placeY=placeY-(o3_snapy+snapping);}else{placeY=placeY+(o3_snapy-snapping);}
-if(placeY<scrolloffset)placeY=scrolloffset;}}
-return placeY;}
-function checkPositionFlags(){if(olHautoFlag)olHautoFlag=o3_hauto=0;if(olVautoFlag)olVautoFlag=o3_vauto=0;return true;}
-function windowWidth(){var w;if(o3_frame.innerWidth)w=o3_frame.innerWidth;else if(eval('o3_frame.'+docRoot)&&eval("typeof o3_frame."+docRoot+".clientWidth=='number'")&&eval('o3_frame.'+docRoot+'.clientWidth'))
-w=eval('o3_frame.'+docRoot+'.clientWidth');return w;}
-function createDivContainer(id,frm,zValue){id=(id||'overDiv'),frm=(frm||o3_frame),zValue=(zValue||1000);var objRef,divContainer=layerReference(id);
-if(divContainer==null){if(olNs4){divContainer=frm.document.layers[id]=new Layer(window.innerWidth,frm);objRef=divContainer;}else{var body=(olIe4?frm.document.all.tags('BODY')[0]:frm.document.getElementsByTagName("BODY")[0]);if(olIe4&&!document.getElementById){body.insertAdjacentHTML("beforeEnd",'<div id="'+id+'"></div>');divContainer=layerReference(id);}else{divContainer=frm.document.createElement("DIV");divContainer.id=id;body.appendChild(divContainer);}
-objRef=divContainer.style;}
-objRef.position='absolute';objRef.visibility='hidden';objRef.zIndex=zValue;if(olIe4&&!olOp)objRef.left=objRef.top='0px';else objRef.left=objRef.top=-10000+(!olNs4?'px':0);}
-return divContainer;}
-function layerReference(id){return(olNs4?o3_frame.document.layers[id]:(document.all?o3_frame.document.all[id]:o3_frame.document.getElementById(id)));}
-function isFunction(fnRef){var rtn=true;
-if(typeof fnRef=='object'){for(var i=0;i<fnRef.length;i++){if(typeof fnRef[i]=='function')continue;rtn=false;break;}
-}else if(typeof fnRef!='function'){rtn=false;}
-return rtn;}
-function argToString(array,strtInd,argName){var jS=strtInd,aS='',ar=array;argName=(argName?argName:'ar');
-if(ar.length>jS){for(var k=jS;k<ar.length;k++)aS+=argName+'['+k+'], ';aS=aS.substring(0,aS.length-2);}
-return aS;}
-function reOrder(hookPt,fnRef,order){var newPt=new Array(),match,i,j;
-if(!order||typeof order=='undefined'||typeof order=='number')return hookPt;
-if(typeof order=='function'){if(typeof fnRef=='object'){newPt=newPt.concat(fnRef);}else{newPt[newPt.length++]=fnRef;}
-for(i=0;i<hookPt.length;i++){match=false;if(typeof fnRef=='function'&&hookPt[i]==fnRef){continue;}else{for(j=0;j<fnRef.length;j++)if(hookPt[i]==fnRef[j]){match=true;break;}}
-if(!match)newPt[newPt.length++]=hookPt[i];}
-newPt[newPt.length++]=order;
-}else if(typeof order=='object'){if(typeof fnRef=='object'){newPt=newPt.concat(fnRef);}else{newPt[newPt.length++]=fnRef;}
-for(j=0;j<hookPt.length;j++){match=false;if(typeof fnRef=='function'&&hookPt[j]==fnRef){continue;}else{for(i=0;i<fnRef.length;i++)if(hookPt[j]==fnRef[i]){match=true;break;}}
-if(!match)newPt[newPt.length++]=hookPt[j];}
-for(i=0;i<newPt.length;i++)hookPt[i]=newPt[i];newPt.length=0;
-for(j=0;j<hookPt.length;j++){match=false;for(i=0;i<order.length;i++){if(hookPt[j]==order[i]){match=true;break;}}
-if(!match)newPt[newPt.length++]=hookPt[j];}
-newPt=newPt.concat(order);}
-hookPt=newPt;
-return hookPt;}
-function setRunTimeVariables(){if(typeof runTime!='undefined'&&runTime.length){for(var k=0;k<runTime.length;k++){runTime[k]();}}}
-function parseCmdLine(pf,i,args){if(typeof cmdLine!='undefined'&&cmdLine.length){for(var k=0;k<cmdLine.length;k++){var j=cmdLine[k](pf,i,args);if(j >-1){i=j;break;}}}
-return i;}
-function postParseChecks(pf,args){if(typeof postParse!='undefined'&&postParse.length){for(var k=0;k<postParse.length;k++){if(postParse[k](pf,args))continue;return false;}}
-return true;}
-function registerCommands(cmdStr){if(typeof cmdStr!='string')return;
-var pM=cmdStr.split(',');pms=pms.concat(pM);
-for(var i=0;i< pM.length;i++){eval(pM[i].toUpperCase()+'='+pmCount++);}}
-function registerNoParameterCommands(cmdStr){if(!cmdStr&&typeof cmdStr!='string')return;pmt=(!pmt)?cmdStr:pmt+','+cmdStr;}
-function registerHook(fnHookTo,fnRef,hookType,optPm){var hookPt,last=typeof optPm;
-if(fnHookTo=='plgIn'||fnHookTo=='postParse')return;if(typeof hookPts[fnHookTo]=='undefined')hookPts[fnHookTo]=new FunctionReference();
-hookPt=hookPts[fnHookTo];
-if(hookType!=null){if(hookType==FREPLACE){hookPt.ovload=fnRef;if(fnHookTo.indexOf('ol_content_')>-1)hookPt.alt[pms[CSSOFF-1-pmStart]]=fnRef;
-}else if(hookType==FBEFORE||hookType==FAFTER){var hookPt=(hookType==1?hookPt.before:hookPt.after);
-if(typeof fnRef=='object'){hookPt=hookPt.concat(fnRef);}else{hookPt[hookPt.length++]=fnRef;}
-if(optPm)hookPt=reOrder(hookPt,fnRef,optPm);
-}else if(hookType==FALTERNATE){if(last=='number')hookPt.alt[pms[optPm-1-pmStart]]=fnRef;}else if(hookType==FCHAIN){hookPt=hookPt.chain;if(typeof fnRef=='object')hookPt=hookPt.concat(fnRef);else hookPt[hookPt.length++]=fnRef;}
-return;}}
-function registerRunTimeFunction(fn){if(isFunction(fn)){if(typeof fn=='object'){runTime=runTime.concat(fn);}else{runTime[runTime.length++]=fn;}}}
-function registerCmdLineFunction(fn){if(isFunction(fn)){if(typeof fn=='object'){cmdLine=cmdLine.concat(fn);}else{cmdLine[cmdLine.length++]=fn;}}}
-function registerPostParseFunction(fn){if(isFunction(fn)){if(typeof fn=='object'){postParse=postParse.concat(fn);}else{postParse[postParse.length++]=fn;}}}
-function runHook(fnHookTo,hookType){var l=hookPts[fnHookTo],k,rtnVal=null,optPm,arS,ar=runHook.arguments;
-if(hookType==FREPLACE){arS=argToString(ar,2);
-if(typeof l=='undefined'||!(l=l.ovload))rtnVal=eval(fnHookTo+'('+arS+')');else rtnVal=eval('l('+arS+')');
-}else if(hookType==FBEFORE||hookType==FAFTER){if(typeof l!='undefined'){l=(hookType==1?l.before:l.after);
-if(l.length){arS=argToString(ar,2);for(var k=0;k<l.length;k++)eval('l[k]('+arS+')');}}
-}else if(hookType==FALTERNATE){optPm=ar[2];arS=argToString(ar,3);
-if(typeof l=='undefined'||(l=l.alt[pms[optPm-1-pmStart]])=='undefined'){rtnVal=eval(fnHookTo+'('+arS+')');}else{rtnVal=eval('l('+arS+')');}
-}else if(hookType==FCHAIN){arS=argToString(ar,2);l=l.chain;
-for(k=l.length;k>0;k--)if((rtnVal=eval('l[k-1]('+arS+')'))!=void(0))break;}
-return rtnVal;}
-function FunctionReference(){this.ovload=null;this.before=new Array();this.after=new Array();this.alt=new Array();this.chain=new Array();}
-function Info(version,prerelease){this.version=version;this.prerelease=prerelease;
-this.simpleversion=Math.round(this.version*100);this.major=parseInt(this.simpleversion/100);this.minor=parseInt(this.simpleversion/10)-this.major * 10;this.revision=parseInt(this.simpleversion)-this.major * 100-this.minor * 10;this.meets=meets;}
-function meets(reqdVersion){return(!reqdVersion)?false:this.simpleversion>=Math.round(100*parseFloat(reqdVersion));}
-registerHook("ol_content_simple",ol_content_simple,FALTERNATE,CSSOFF);registerHook("ol_content_caption",ol_content_caption,FALTERNATE,CSSOFF);registerHook("ol_content_background",ol_content_background,FALTERNATE,CSSOFF);registerHook("ol_content_simple",ol_content_simple,FALTERNATE,CSSCLASS);registerHook("ol_content_caption",ol_content_caption,FALTERNATE,CSSCLASS);registerHook("ol_content_background",ol_content_background,FALTERNATE,CSSCLASS);registerPostParseFunction(checkPositionFlags);registerHook("hideObject",nbspCleanup,FAFTER);registerHook("horizontalPlacement",horizontalPlacement,FCHAIN);registerHook("verticalPlacement",verticalPlacement,FCHAIN);if(olNs4||(olIe5&&isMac)||olKq)olLoaded=1;registerNoParameterCommands('sticky,autostatus,autostatuscap,fullhtml,hauto,vauto,closeclick,wrap,followmouse,mouseoff,compatmode');
-var olCheckMouseCapture=true;if((olNs4||olNs6||olIe4)){olMouseCapture();}else{overlib=no_overlib;nd=no_overlib;ver3fix=true;}
diff --git a/js/pngfix.js b/js/pngfix.js
deleted file mode 100644
index d8dc346..0000000
--- a/js/pngfix.js
+++ /dev/null
@@ -1,26 +0,0 @@
-
-// Correctly handle PNG transparency in Win IE 5.5 or higher.
-// http://homepage.ntlworld.com/bobosola. Updated 02-March-2004
-
-function correctPNG() {
- for(var i=0; i<document.images.length; i++) {
- var img = document.images[i]
- var imgName = img.src.toUpperCase()
- if (imgName.substring(imgName.length-3, imgName.length) == "PNG") {
- var imgID = (img.id) ? "id='" + img.id + "' " : ""
- var imgClass = (img.className) ? "class='" + img.className + "' " : ""
- var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
- var imgStyle = "display:inline-block;" + img.style.cssText
- if (img.align == "left") imgStyle = "float:left;" + imgStyle
- if (img.align == "right") imgStyle = "float:right;" + imgStyle
- if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle
- var strNewHTML = "<span " + imgID + imgClass + imgTitle
- + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
- + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
- + "(src=\'" + img.src + "\', sizingMethod='image');\"></span>"
- img.outerHTML = strNewHTML
- i = i-1
- }
- }
-}
-window.attachEvent("onload", correctPNG);
diff --git a/js/prototype.js b/js/prototype.js
deleted file mode 100644
index c340893..0000000
--- a/js/prototype.js
+++ /dev/null
@@ -1,1017 +0,0 @@
-/* Prototype JavaScript framework, version 1.3.1
- * (c) 2005 Sam Stephenson <sam@conio.net>
- * THIS FILE IS AUTOMATICALLY GENERATED. When sending patches, please diff
- * against the source tree, available from the Prototype darcs repository.
- * Prototype is freely distributable under the terms of an MIT-style license.
- * For details, see the Prototype web site: http://prototype.conio.net/
-/*--------------------------------------------------------------------------*/
-
-var Prototype = {
- Version: '1.3.1',
- emptyFunction: function() {}
-}
-
-var Class = {
- create: function() {
- return function() {
- this.initialize.apply(this, arguments);
- }
- }
-}
-
-var Abstract = new Object();
-
-Object.extend = function(destination, source) {
- for (property in source) {
- destination[property] = source[property];
- }
- return destination;
-}
-
-Object.prototype.extend = function(object) {
- return Object.extend.apply(this, [this, object]);
-}
-
-Function.prototype.bind = function(object) {
- var __method = this;
- return function() {
- __method.apply(object, arguments);
- }
-}
-
-Function.prototype.bindAsEventListener = function(object) {
- var __method = this;
- return function(event) {
- __method.call(object, event || window.event);
- }
-}
-
-Number.prototype.toColorPart = function() {
- var digits = this.toString(16);
- if (this < 16) return '0' + digits;
- return digits;
-}
-
-var Try = {
- these: function() {
- var returnValue;
-
- for (var i = 0; i < arguments.length; i++) {
- var lambda = arguments[i];
- try {
- returnValue = lambda();
- break;
- } catch (e) {}
- }
-
- return returnValue;
- }
-}
-
-/*--------------------------------------------------------------------------*/
-
-var PeriodicalExecuter = Class.create();
-PeriodicalExecuter.prototype = {
- initialize: function(callback, frequency) {
- this.callback = callback;
- this.frequency = frequency;
- this.currentlyExecuting = false;
-
- this.registerCallback();
- },
-
- registerCallback: function() {
- setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
- },
-
- onTimerEvent: function() {
- if (!this.currentlyExecuting) {
- try {
- this.currentlyExecuting = true;
- this.callback();
- } finally {
- this.currentlyExecuting = false;
- }
- }
- }
-}
-
-/*--------------------------------------------------------------------------*/
-
-if (!Array.prototype.push) {
- Array.prototype.push = function() {
- var startLength = this.length;
- for (var i = 0; i < arguments.length; i++)
- this[startLength + i] = arguments[i];
- return this.length;
- }
-}
-
-if (!Function.prototype.apply) {
- // Based on code from http://www.youngpup.net/
- Function.prototype.apply = function(object, parameters) {
- var parameterStrings = new Array();
- if (!object) object = window;
- if (!parameters) parameters = new Array();
-
- for (var i = 0; i < parameters.length; i++)
- parameterStrings[i] = 'parameters[' + i + ']';
-
- object.__apply__ = this;
- var result = eval('object.__apply__(' +
- parameterStrings.join(', ') + ')');
- object.__apply__ = null;
-
- return result;
- }
-}
-
-String.prototype.extend({
- stripTags: function() {
- return this.replace(/<\/?[^>]+>/gi, '');
- },
-
- escapeHTML: function() {
- var div = document.createElement('div');
- var text = document.createTextNode(this);
- div.appendChild(text);
- return div.innerHTML;
- },
-
- unescapeHTML: function() {
- var div = document.createElement('div');
- div.innerHTML = this.stripTags();
- return div.childNodes[0].nodeValue;
- }
-});
-
-var Ajax = {
- getTransport: function() {
- return Try.these(
- function() {return new ActiveXObject('Msxml2.XMLHTTP')},
- function() {return new ActiveXObject('Microsoft.XMLHTTP')},
- function() {return new XMLHttpRequest()}
- ) || false;
- }
-}
-
-Ajax.Base = function() {};
-Ajax.Base.prototype = {
- setOptions: function(options) {
- this.options = {
- method: 'post',
- asynchronous: true,
- parameters: ''
- }.extend(options || {});
- },
-
- responseIsSuccess: function() {
- return this.transport.status == undefined
- || this.transport.status == 0
- || (this.transport.status >= 200 && this.transport.status < 300);
- },
-
- responseIsFailure: function() {
- return !this.responseIsSuccess();
- }
-}
-
-Ajax.Request = Class.create();
-Ajax.Request.Events =
- ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];
-
-Ajax.Request.prototype = (new Ajax.Base()).extend({
- initialize: function(url, options) {
- this.transport = Ajax.getTransport();
- this.setOptions(options);
- this.request(url);
- },
-
- request: function(url) {
- var parameters = this.options.parameters || '';
- if (parameters.length > 0) parameters += '&_=';
-
- try {
- if (this.options.method == 'get')
- url += '?' + parameters;
-
- this.transport.open(this.options.method, url,
- this.options.asynchronous);
-
- if (this.options.asynchronous) {
- this.transport.onreadystatechange = this.onStateChange.bind(this);
- setTimeout((function() {this.respondToReadyState(1)}).bind(this), 10);
- }
-
- this.setRequestHeaders();
-
- var body = this.options.postBody ? this.options.postBody : parameters;
- this.transport.send(this.options.method == 'post' ? body : null);
-
- } catch (e) {
- }
- },
-
- setRequestHeaders: function() {
- var requestHeaders =
- ['X-Requested-With', 'XMLHttpRequest',
- 'X-Prototype-Version', Prototype.Version];
-
- if (this.options.method == 'post') {
- requestHeaders.push('Content-type',
- 'application/x-www-form-urlencoded');
-
- /* Force "Connection: close" for Mozilla browsers to work around
- * a bug where XMLHttpReqeuest sends an incorrect Content-length
- * header. See Mozilla Bugzilla #246651.
- */
- if (this.transport.overrideMimeType)
- requestHeaders.push('Connection', 'close');
- }
-
- if (this.options.requestHeaders)
- requestHeaders.push.apply(requestHeaders, this.options.requestHeaders);
-
- for (var i = 0; i < requestHeaders.length; i += 2)
- this.transport.setRequestHeader(requestHeaders[i], requestHeaders[i+1]);
- },
-
- onStateChange: function() {
- var readyState = this.transport.readyState;
- if (readyState != 1)
- this.respondToReadyState(this.transport.readyState);
- },
-
- respondToReadyState: function(readyState) {
- var event = Ajax.Request.Events[readyState];
-
- if (event == 'Complete')
- (this.options['on' + this.transport.status]
- || this.options['on' + (this.responseIsSuccess() ? 'Success' : 'Failure')]
- || Prototype.emptyFunction)(this.transport);
-
- (this.options['on' + event] || Prototype.emptyFunction)(this.transport);
-
- /* Avoid memory leak in MSIE: clean up the oncomplete event handler */
- if (event == 'Complete')
- this.transport.onreadystatechange = Prototype.emptyFunction;
- }
-});
-
-Ajax.Updater = Class.create();
-Ajax.Updater.ScriptFragment = '(?:<script.*?>)((\n|.)*?)(?:<\/script>)';
-
-Ajax.Updater.prototype.extend(Ajax.Request.prototype).extend({
- initialize: function(container, url, options) {
- this.containers = {
- success: container.success ? $(container.success) : $(container),
- failure: container.failure ? $(container.failure) :
- (container.success ? null : $(container))
- }
-
- this.transport = Ajax.getTransport();
- this.setOptions(options);
-
- var onComplete = this.options.onComplete || Prototype.emptyFunction;
- this.options.onComplete = (function() {
- this.updateContent();
- onComplete(this.transport);
- }).bind(this);
-
- this.request(url);
- },
-
- updateContent: function() {
- var receiver = this.responseIsSuccess() ?
- this.containers.success : this.containers.failure;
-
- var match = new RegExp(Ajax.Updater.ScriptFragment, 'img');
- var response = this.transport.responseText.replace(match, '');
- var scripts = this.transport.responseText.match(match);
-
- if (receiver) {
- if (this.options.insertion) {
- new this.options.insertion(receiver, response);
- } else {
- receiver.innerHTML = response;
- }
- }
-
- if (this.responseIsSuccess()) {
- if (this.onComplete)
- setTimeout((function() {this.onComplete(
- this.transport)}).bind(this), 10);
- }
-
- if (this.options.evalScripts && scripts) {
- match = new RegExp(Ajax.Updater.ScriptFragment, 'im');
- setTimeout((function() {
- for (var i = 0; i < scripts.length; i++)
- eval(scripts[i].match(match)[1]);
- }).bind(this), 10);
- }
- }
-});
-
-Ajax.PeriodicalUpdater = Class.create();
-Ajax.PeriodicalUpdater.prototype = (new Ajax.Base()).extend({
- initialize: function(container, url, options) {
- this.setOptions(options);
- this.onComplete = this.options.onComplete;
-
- this.frequency = (this.options.frequency || 2);
- this.decay = 1;
-
- this.updater = {};
- this.container = container;
- this.url = url;
-
- this.start();
- },
-
- start: function() {
- this.options.onComplete = this.updateComplete.bind(this);
- this.onTimerEvent();
- },
-
- stop: function() {
- this.updater.onComplete = undefined;
- clearTimeout(this.timer);
- (this.onComplete || Ajax.emptyFunction).apply(this, arguments);
- },
-
- updateComplete: function(request) {
- if (this.options.decay) {
- this.decay = (request.responseText == this.lastText ?
- this.decay * this.options.decay : 1);
-
- this.lastText = request.responseText;
- }
- this.timer = setTimeout(this.onTimerEvent.bind(this),
- this.decay * this.frequency * 1000);
- },
-
- onTimerEvent: function() {
- this.updater = new Ajax.Updater(this.container, this.url, this.options);
- }
-});
-
-document.getElementsByClassName = function(className) {
- var children = document.getElementsByTagName('*') || document.all;
- var elements = new Array();
-
- for (var i = 0; i < children.length; i++) {
- var child = children[i];
- var classNames = child.className.split(' ');
- for (var j = 0; j < classNames.length; j++) {
- if (classNames[j] == className) {
- elements.push(child);
- break;
- }
- }
- }
-
- return elements;
-}
-
-/*--------------------------------------------------------------------------*/
-
-if (!window.Element) {
- var Element = new Object();
-}
-
-Object.extend(Element, {
- toggle: function() {
- for (var i = 0; i < arguments.length; i++) {
- var element = $(arguments[i]);
- element.style.display =
- (element.style.display == 'none' ? '' : 'none');
- }
- },
-
- hide: function() {
- for (var i = 0; i < arguments.length; i++) {
- var element = $(arguments[i]);
- element.style.display = 'none';
- }
- },
-
- show: function() {
- for (var i = 0; i < arguments.length; i++) {
- var element = $(arguments[i]);
- element.style.display = '';
- }
- },
-
- remove: function(element) {
- element = $(element);
- element.parentNode.removeChild(element);
- },
-
- getHeight: function(element) {
- element = $(element);
- return element.offsetHeight;
- },
-
- hasClassName: function(element, className) {
- element = $(element);
- if (!element)
- return;
- var a = element.className.split(' ');
- for (var i = 0; i < a.length; i++) {
- if (a[i] == className)
- return true;
- }
- return false;
- },
-
- addClassName: function(element, className) {
- element = $(element);
- Element.removeClassName(element, className);
- element.className += ' ' + className;
- },
-
- removeClassName: function(element, className) {
- element = $(element);
- if (!element)
- return;
- var newClassName = '';
- var a = element.className.split(' ');
- for (var i = 0; i < a.length; i++) {
- if (a[i] != className) {
- if (i > 0)
- newClassName += ' ';
- newClassName += a[i];
- }
- }
- element.className = newClassName;
- },
-
- // removes whitespace-only text node children
- cleanWhitespace: function(element) {
- var element = $(element);
- for (var i = 0; i < element.childNodes.length; i++) {
- var node = element.childNodes[i];
- if (node.nodeType == 3 && !/\S/.test(node.nodeValue))
- Element.remove(node);
- }
- }
-});
-
-var Toggle = new Object();
-Toggle.display = Element.toggle;
-
-/*--------------------------------------------------------------------------*/
-
-Abstract.Insertion = function(adjacency) {
- this.adjacency = adjacency;
-}
-
-Abstract.Insertion.prototype = {
- initialize: function(element, content) {
- this.element = $(element);
- this.content = content;
-
- if (this.adjacency && this.element.insertAdjacentHTML) {
- this.element.insertAdjacentHTML(this.adjacency, this.content);
- } else {
- this.range = this.element.ownerDocument.createRange();
- if (this.initializeRange) this.initializeRange();
- this.fragment = this.range.createContextualFragment(this.content);
- this.insertContent();
- }
- }
-}
-
-var Insertion = new Object();
-
-Insertion.Before = Class.create();
-Insertion.Before.prototype = (new Abstract.Insertion('beforeBegin')).extend({
- initializeRange: function() {
- this.range.setStartBefore(this.element);
- },
-
- insertContent: function() {
- this.element.parentNode.insertBefore(this.fragment, this.element);
- }
-});
-
-Insertion.Top = Class.create();
-Insertion.Top.prototype = (new Abstract.Insertion('afterBegin')).extend({
- initializeRange: function() {
- this.range.selectNodeContents(this.element);
- this.range.collapse(true);
- },
-
- insertContent: function() {
- this.element.insertBefore(this.fragment, this.element.firstChild);
- }
-});
-
-Insertion.Bottom = Class.create();
-Insertion.Bottom.prototype = (new Abstract.Insertion('beforeEnd')).extend({
- initializeRange: function() {
- this.range.selectNodeContents(this.element);
- this.range.collapse(this.element);
- },
-
- insertContent: function() {
- this.element.appendChild(this.fragment);
- }
-});
-
-Insertion.After = Class.create();
-Insertion.After.prototype = (new Abstract.Insertion('afterEnd')).extend({
- initializeRange: function() {
- this.range.setStartAfter(this.element);
- },
-
- insertContent: function() {
- this.element.parentNode.insertBefore(this.fragment,
- this.element.nextSibling);
- }
-});
-
-var Field = {
- clear: function() {
- for (var i = 0; i < arguments.length; i++)
- $(arguments[i]).value = '';
- },
-
- focus: function(element) {
- $(element).focus();
- },
-
- present: function() {
- for (var i = 0; i < arguments.length; i++)
- if ($(arguments[i]).value == '') return false;
- return true;
- },
-
- select: function(element) {
- $(element).select();
- },
-
- activate: function(element) {
- $(element).focus();
- $(element).select();
- }
-}
-
-/*--------------------------------------------------------------------------*/
-
-var Form = {
- serialize: function(form) {
- var elements = Form.getElements($(form));
- var queryComponents = new Array();
-
- for (var i = 0; i < elements.length; i++) {
- var queryComponent = Form.Element.serialize(elements[i]);
- if (queryComponent)
- queryComponents.push(queryComponent);
- }
-
- return queryComponents.join('&');
- },
-
- getElements: function(form) {
- var form = $(form);
- var elements = new Array();
-
- for (tagName in Form.Element.Serializers) {
- var tagElements = form.getElementsByTagName(tagName);
- for (var j = 0; j < tagElements.length; j++)
- elements.push(tagElements[j]);
- }
- return elements;
- },
-
- getInputs: function(form, typeName, name) {
- var form = $(form);
- var inputs = form.getElementsByTagName('input');
-
- if (!typeName && !name)
- return inputs;
-
- var matchingInputs = new Array();
- for (var i = 0; i < inputs.length; i++) {
- var input = inputs[i];
- if ((typeName && input.type != typeName) ||
- (name && input.name != name))
- continue;
- matchingInputs.push(input);
- }
-
- return matchingInputs;
- },
-
- disable: function(form) {
- var elements = Form.getElements(form);
- for (var i = 0; i < elements.length; i++) {
- var element = elements[i];
- element.blur();
- element.disabled = 'true';
- }
- },
-
- enable: function(form) {
- var elements = Form.getElements(form);
- for (var i = 0; i < elements.length; i++) {
- var element = elements[i];
- element.disabled = '';
- }
- },
-
- focusFirstElement: function(form) {
- var form = $(form);
- var elements = Form.getElements(form);
- for (var i = 0; i < elements.length; i++) {
- var element = elements[i];
- if (element.type != 'hidden' && !element.disabled) {
- Field.activate(element);
- break;
- }
- }
- },
-
- reset: function(form) {
- $(form).reset();
- }
-}
-
-Form.Element = {
- serialize: function(element) {
- var element = $(element);
- var method = element.tagName.toLowerCase();
- var parameter = Form.Element.Serializers[method](element);
-
- if (parameter)
- return encodeURIComponent(parameter[0]) + '=' +
- encodeURIComponent(parameter[1]);
- },
-
- getValue: function(element) {
- var element = $(element);
- var method = element.tagName.toLowerCase();
- var parameter = Form.Element.Serializers[method](element);
-
- if (parameter)
- return parameter[1];
- }
-}
-
-Form.Element.Serializers = {
- input: function(element) {
- switch (element.type.toLowerCase()) {
- case 'submit':
- case 'hidden':
- case 'password':
- case 'text':
- return Form.Element.Serializers.textarea(element);
- case 'checkbox':
- case 'radio':
- return Form.Element.Serializers.inputSelector(element);
- }
- return false;
- },
-
- inputSelector: function(element) {
- if (element.checked)
- return [element.name, element.value];
- },
-
- textarea: function(element) {
- return [element.name, element.value];
- },
-
- select: function(element) {
- var value = '';
- if (element.type == 'select-one') {
- var index = element.selectedIndex;
- if (index >= 0)
- value = element.options[index].value || element.options[index].text;
- } else {
- value = new Array();
- for (var i = 0; i < element.length; i++) {
- var opt = element.options[i];
- if (opt.selected)
- value.push(opt.value || opt.text);
- }
- }
- return [element.name, value];
- }
-}
-
-/*--------------------------------------------------------------------------*/
-
-var $F = Form.Element.getValue;
-
-/*--------------------------------------------------------------------------*/
-
-Abstract.TimedObserver = function() {}
-Abstract.TimedObserver.prototype = {
- initialize: function(element, frequency, callback) {
- this.frequency = frequency;
- this.element = $(element);
- this.callback = callback;
-
- this.lastValue = this.getValue();
- this.registerCallback();
- },
-
- registerCallback: function() {
- setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
- },
-
- onTimerEvent: function() {
- var value = this.getValue();
- if (this.lastValue != value) {
- this.callback(this.element, value);
- this.lastValue = value;
- }
- }
-}
-
-Form.Element.Observer = Class.create();
-Form.Element.Observer.prototype = (new Abstract.TimedObserver()).extend({
- getValue: function() {
- return Form.Element.getValue(this.element);
- }
-});
-
-Form.Observer = Class.create();
-Form.Observer.prototype = (new Abstract.TimedObserver()).extend({
- getValue: function() {
- return Form.serialize(this.element);
- }
-});
-
-/*--------------------------------------------------------------------------*/
-
-Abstract.EventObserver = function() {}
-Abstract.EventObserver.prototype = {
- initialize: function(element, callback) {
- this.element = $(element);
- this.callback = callback;
-
- this.lastValue = this.getValue();
- if (this.element.tagName.toLowerCase() == 'form')
- this.registerFormCallbacks();
- else
- this.registerCallback(this.element);
- },
-
- onElementEvent: function() {
- var value = this.getValue();
- if (this.lastValue != value) {
- this.callback(this.element, value);
- this.lastValue = value;
- }
- },
-
- registerFormCallbacks: function() {
- var elements = Form.getElements(this.element);
- for (var i = 0; i < elements.length; i++)
- this.registerCallback(elements[i]);
- },
-
- registerCallback: function(element) {
- if (element.type) {
- switch (element.type.toLowerCase()) {
- case 'checkbox':
- case 'radio':
- element.target = this;
- element.prev_onclick = element.onclick || Prototype.emptyFunction;
- element.onclick = function() {
- this.prev_onclick();
- this.target.onElementEvent();
- }
- break;
- case 'password':
- case 'text':
- case 'textarea':
- case 'select-one':
- case 'select-multiple':
- element.target = this;
- element.prev_onchange = element.onchange || Prototype.emptyFunction;
- element.onchange = function() {
- this.prev_onchange();
- this.target.onElementEvent();
- }
- break;
- }
- }
- }
-}
-
-Form.Element.EventObserver = Class.create();
-Form.Element.EventObserver.prototype = (new Abstract.EventObserver()).extend({
- getValue: function() {
- return Form.Element.getValue(this.element);
- }
-});
-
-Form.EventObserver = Class.create();
-Form.EventObserver.prototype = (new Abstract.EventObserver()).extend({
- getValue: function() {
- return Form.serialize(this.element);
- }
-});
-
-
-if (!window.Event) {
- var Event = new Object();
-}
-
-Object.extend(Event, {
- KEY_BACKSPACE: 8,
- KEY_TAB: 9,
- KEY_RETURN: 13,
- KEY_ESC: 27,
- KEY_LEFT: 37,
- KEY_UP: 38,
- KEY_RIGHT: 39,
- KEY_DOWN: 40,
- KEY_DELETE: 46,
-
- element: function(event) {
- return event.target || event.srcElement;
- },
-
- isLeftClick: function(event) {
- return (((event.which) && (event.which == 1)) ||
- ((event.button) && (event.button == 1)));
- },
-
- pointerX: function(event) {
- return event.pageX || (event.clientX +
- (document.documentElement.scrollLeft || document.body.scrollLeft));
- },
-
- pointerY: function(event) {
- return event.pageY || (event.clientY +
- (document.documentElement.scrollTop || document.body.scrollTop));
- },
-
- stop: function(event) {
- if (event.preventDefault) {
- event.preventDefault();
- event.stopPropagation();
- } else {
- event.returnValue = false;
- }
- },
-
- // find the first node with the given tagName, starting from the
- // node the event was triggered on; traverses the DOM upwards
- findElement: function(event, tagName) {
- var element = Event.element(event);
- while (element.parentNode && (!element.tagName ||
- (element.tagName.toUpperCase() != tagName.toUpperCase())))
- element = element.parentNode;
- return element;
- },
-
- observers: false,
-
- _observeAndCache: function(element, name, observer, useCapture) {
- if (!this.observers) this.observers = [];
- if (element.addEventListener) {
- this.observers.push([element, name, observer, useCapture]);
- element.addEventListener(name, observer, useCapture);
- } else if (element.attachEvent) {
- this.observers.push([element, name, observer, useCapture]);
- element.attachEvent('on' + name, observer);
- }
- },
-
- unloadCache: function() {
- if (!Event.observers) return;
- for (var i = 0; i < Event.observers.length; i++) {
- Event.stopObserving.apply(this, Event.observers[i]);
- Event.observers[i][0] = null;
- }
- Event.observers = false;
- },
-
- observe: function(element, name, observer, useCapture) {
- var element = $(element);
- useCapture = useCapture || false;
-
- if (name == 'keypress' &&
- ((navigator.appVersion.indexOf('AppleWebKit') > 0)
- || element.attachEvent))
- name = 'keydown';
-
- this._observeAndCache(element, name, observer, useCapture);
- },
-
- stopObserving: function(element, name, observer, useCapture) {
- var element = $(element);
- useCapture = useCapture || false;
-
- if (name == 'keypress' &&
- ((navigator.appVersion.indexOf('AppleWebKit') > 0)
- || element.detachEvent))
- name = 'keydown';
-
- if (element.removeEventListener) {
- element.removeEventListener(name, observer, useCapture);
- } else if (element.detachEvent) {
- element.detachEvent('on' + name, observer);
- }
- }
-});
-
-/* prevent memory leaks in IE */
-Event.observe(window, 'unload', Event.unloadCache, false);
-
-var Position = {
-
- // set to true if needed, warning: firefox performance problems
- // NOT neeeded for page scrolling, only if draggable contained in
- // scrollable elements
- includeScrollOffsets: false,
-
- // must be called before calling withinIncludingScrolloffset, every time the
- // page is scrolled
- prepare: function() {
- this.deltaX = window.pageXOffset
- || document.documentElement.scrollLeft
- || document.body.scrollLeft
- || 0;
- this.deltaY = window.pageYOffset
- || document.documentElement.scrollTop
- || document.body.scrollTop
- || 0;
- },
-
- realOffset: function(element) {
- var valueT = 0, valueL = 0;
- do {
- valueT += element.scrollTop || 0;
- valueL += element.scrollLeft || 0;
- element = element.parentNode;
- } while (element);
- return [valueL, valueT];
- },
-
- cumulativeOffset: function(element) {
- var valueT = 0, valueL = 0;
- do {
- valueT += element.offsetTop || 0;
- valueL += element.offsetLeft || 0;
- element = element.offsetParent;
- } while (element);
- return [valueL, valueT];
- },
-
- // caches x/y coordinate pair to use with overlap
- within: function(element, x, y) {
- if (this.includeScrollOffsets)
- return this.withinIncludingScrolloffsets(element, x, y);
- this.xcomp = x;
- this.ycomp = y;
- this.offset = this.cumulativeOffset(element);
-
- return (y >= this.offset[1] &&
- y < this.offset[1] + element.offsetHeight &&
- x >= this.offset[0] &&
- x < this.offset[0] + element.offsetWidth);
- },
-
- withinIncludingScrolloffsets: function(element, x, y) {
- var offsetcache = this.realOffset(element);
-
- this.xcomp = x + offsetcache[0] - this.deltaX;
- this.ycomp = y + offsetcache[1] - this.deltaY;
- this.offset = this.cumulativeOffset(element);
-
- return (this.ycomp >= this.offset[1] &&
- this.ycomp < this.offset[1] + element.offsetHeight &&
- this.xcomp >= this.offset[0] &&
- this.xcomp < this.offset[0] + element.offsetWidth);
- },
-
- // within must be called directly before
- overlap: function(mode, element) {
- if (!mode) return 0;
- if (mode == 'vertical')
- return ((this.offset[1] + element.offsetHeight) - this.ycomp) /
- element.offsetHeight;
- if (mode == 'horizontal')
- return ((this.offset[0] + element.offsetWidth) - this.xcomp) /
- element.offsetWidth;
- },
-
- clone: function(source, target) {
- source = $(source);
- target = $(target);
- target.style.position = 'absolute';
- var offsets = this.cumulativeOffset(source);
- target.style.top = offsets[1] + 'px';
- target.style.left = offsets[0] + 'px';
- target.style.width = source.offsetWidth + 'px';
- target.style.height = source.offsetHeight + 'px';
- }
-}
diff --git a/js/prototype_1.4.js b/js/prototype_1.4.js
deleted file mode 100644
index 4e5ebf8..0000000
--- a/js/prototype_1.4.js
+++ /dev/null
@@ -1,1773 +0,0 @@
-var Prototype = {
- Version: '1.4.0',
- ScriptFragment: '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)',
-
- emptyFunction: function() {},
- K: function(x) {return x}
-}
-
-var Class = {
- create: function() {
- return function() {
- this.initialize.apply(this, arguments);
- }
- }
-}
-
-var Abstract = new Object();
-
-Object.extend = function(destination, source) {
- for (property in source) {
- destination[property] = source[property];
- }
- return destination;
-}
-
-Object.inspect = function(object) {
- try {
- if (object == undefined) return 'undefined';
- if (object == null) return 'null';
- return object.inspect ? object.inspect() : object.toString();
- } catch (e) {
- if (e instanceof RangeError) return '...';
- throw e;
- }
-}
-
-Function.prototype.bind = function() {
- var __method = this, args = $A(arguments), object = args.shift();
- return function() {
- return __method.apply(object, args.concat($A(arguments)));
- }
-}
-
-Function.prototype.bindAsEventListener = function(object) {
- var __method = this;
- return function(event) {
- return __method.call(object, event || window.event);
- }
-}
-
-Object.extend(Number.prototype, {
- toColorPart: function() {
- var digits = this.toString(16);
- if (this < 16) return '0' + digits;
- return digits;
- },
-
- succ: function() {
- return this + 1;
- },
-
- times: function(iterator) {
- $R(0, this, true).each(iterator);
- return this;
- }
-});
-
-var Try = {
- these: function() {
- var returnValue;
-
- for (var i = 0; i < arguments.length; i++) {
- var lambda = arguments[i];
- try {
- returnValue = lambda();
- break;
- } catch (e) {}
- }
-
- return returnValue;
- }
-}
-
-/*--------------------------------------------------------------------------*/
-
-var PeriodicalExecuter = Class.create();
-PeriodicalExecuter.prototype = {
- initialize: function(callback, frequency) {
- this.callback = callback;
- this.frequency = frequency;
- this.currentlyExecuting = false;
-
- this.registerCallback();
- },
-
- registerCallback: function() {
- setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
- },
-
- onTimerEvent: function() {
- if (!this.currentlyExecuting) {
- try {
- this.currentlyExecuting = true;
- this.callback();
- } finally {
- this.currentlyExecuting = false;
- }
- }
- }
-}
-
-/*--------------------------------------------------------------------------*/
-
-function $() {
- var elements = new Array();
-
- for (var i = 0; i < arguments.length; i++) {
- var element = arguments[i];
- if (typeof element == 'string')
- element = document.getElementById(element);
-
- if (arguments.length == 1)
- return element;
-
- elements.push(element);
- }
-
- return elements;
-}
-Object.extend(String.prototype, {
- stripTags: function() {
- return this.replace(/<\/?[^>]+>/gi, '');
- },
-
- stripScripts: function() {
- return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '');
- },
-
- extractScripts: function() {
- var matchAll = new RegExp(Prototype.ScriptFragment, 'img');
- var matchOne = new RegExp(Prototype.ScriptFragment, 'im');
- return (this.match(matchAll) || []).map(function(scriptTag) {
- return (scriptTag.match(matchOne) || ['', ''])[1];
- });
- },
-
- evalScripts: function() {
- return this.extractScripts().map(eval);
- },
-
- escapeHTML: function() {
- var div = document.createElement('div');
- var text = document.createTextNode(this);
- div.appendChild(text);
- return div.innerHTML;
- },
-
- unescapeHTML: function() {
- var div = document.createElement('div');
- div.innerHTML = this.stripTags();
- return div.childNodes[0] ? div.childNodes[0].nodeValue : '';
- },
-
- toQueryParams: function() {
- var pairs = this.match(/^\??(.*)$/)[1].split('&');
- return pairs.inject({}, function(params, pairString) {
- var pair = pairString.split('=');
- params[pair[0]] = pair[1];
- return params;
- });
- },
-
- toArray: function() {
- return this.split('');
- },
-
- camelize: function() {
- var oStringList = this.split('-');
- if (oStringList.length == 1) return oStringList[0];
-
- var camelizedString = this.indexOf('-') == 0
- ? oStringList[0].charAt(0).toUpperCase() + oStringList[0].substring(1)
- : oStringList[0];
-
- for (var i = 1, len = oStringList.length; i < len; i++) {
- var s = oStringList[i];
- camelizedString += s.charAt(0).toUpperCase() + s.substring(1);
- }
-
- return camelizedString;
- },
-
- inspect: function() {
- return "'" + this.replace('\\', '\\\\').replace("'", '\\\'') + "'";
- }
-});
-
-String.prototype.parseQuery = String.prototype.toQueryParams;
-
-var $break = new Object();
-var $continue = new Object();
-
-var Enumerable = {
- each: function(iterator) {
- var index = 0;
- try {
- this._each(function(value) {
- try {
- iterator(value, index++);
- } catch (e) {
- if (e != $continue) throw e;
- }
- });
- } catch (e) {
- if (e != $break) throw e;
- }
- },
-
- all: function(iterator) {
- var result = true;
- this.each(function(value, index) {
- result = result && !!(iterator || Prototype.K)(value, index);
- if (!result) throw $break;
- });
- return result;
- },
-
- any: function(iterator) {
- var result = true;
- this.each(function(value, index) {
- if (result = !!(iterator || Prototype.K)(value, index))
- throw $break;
- });
- return result;
- },
-
- collect: function(iterator) {
- var results = [];
- this.each(function(value, index) {
- results.push(iterator(value, index));
- });
- return results;
- },
-
- detect: function (iterator) {
- var result;
- this.each(function(value, index) {
- if (iterator(value, index)) {
- result = value;
- throw $break;
- }
- });
- return result;
- },
-
- findAll: function(iterator) {
- var results = [];
- this.each(function(value, index) {
- if (iterator(value, index))
- results.push(value);
- });
- return results;
- },
-
- grep: function(pattern, iterator) {
- var results = [];
- this.each(function(value, index) {
- var stringValue = value.toString();
- if (stringValue.match(pattern))
- results.push((iterator || Prototype.K)(value, index));
- })
- return results;
- },
-
- include: function(object) {
- var found = false;
- this.each(function(value) {
- if (value == object) {
- found = true;
- throw $break;
- }
- });
- return found;
- },
-
- inject: function(memo, iterator) {
- this.each(function(value, index) {
- memo = iterator(memo, value, index);
- });
- return memo;
- },
-
- invoke: function(method) {
- var args = $A(arguments).slice(1);
- return this.collect(function(value) {
- return value[method].apply(value, args);
- });
- },
-
- max: function(iterator) {
- var result;
- this.each(function(value, index) {
- value = (iterator || Prototype.K)(value, index);
- if (value >= (result || value))
- result = value;
- });
- return result;
- },
-
- min: function(iterator) {
- var result;
- this.each(function(value, index) {
- value = (iterator || Prototype.K)(value, index);
- if (value <= (result || value))
- result = value;
- });
- return result;
- },
-
- partition: function(iterator) {
- var trues = [], falses = [];
- this.each(function(value, index) {
- ((iterator || Prototype.K)(value, index) ?
- trues : falses).push(value);
- });
- return [trues, falses];
- },
-
- pluck: function(property) {
- var results = [];
- this.each(function(value, index) {
- results.push(value[property]);
- });
- return results;
- },
-
- reject: function(iterator) {
- var results = [];
- this.each(function(value, index) {
- if (!iterator(value, index))
- results.push(value);
- });
- return results;
- },
-
- sortBy: function(iterator) {
- return this.collect(function(value, index) {
- return {value: value, criteria: iterator(value, index)};
- }).sort(function(left, right) {
- var a = left.criteria, b = right.criteria;
- return a < b ? -1 : a > b ? 1 : 0;
- }).pluck('value');
- },
-
- toArray: function() {
- return this.collect(Prototype.K);
- },
-
- zip: function() {
- var iterator = Prototype.K, args = $A(arguments);
- if (typeof args.last() == 'function')
- iterator = args.pop();
-
- var collections = [this].concat(args).map($A);
- return this.map(function(value, index) {
- iterator(value = collections.pluck(index));
- return value;
- });
- },
-
- inspect: function() {
- return '#<Enumerable:' + this.toArray().inspect() + '>';
- }
-}
-
-Object.extend(Enumerable, {
- map: Enumerable.collect,
- find: Enumerable.detect,
- select: Enumerable.findAll,
- member: Enumerable.include,
- entries: Enumerable.toArray
-});
-var $A = Array.from = function(iterable) {
- if (!iterable) return [];
- if (iterable.toArray) {
- return iterable.toArray();
- } else {
- var results = [];
- for (var i = 0; i < iterable.length; i++)
- results.push(iterable[i]);
- return results;
- }
-}
-
-Object.extend(Array.prototype, Enumerable);
-
-Array.prototype._reverse = Array.prototype.reverse;
-
-Object.extend(Array.prototype, {
- _each: function(iterator) {
- for (var i = 0; i < this.length; i++)
- iterator(this[i]);
- },
-
- clear: function() {
- this.length = 0;
- return this;
- },
-
- first: function() {
- return this[0];
- },
-
- last: function() {
- return this[this.length - 1];
- },
-
- compact: function() {
- return this.select(function(value) {
- return value != undefined || value != null;
- });
- },
-
- flatten: function() {
- return this.inject([], function(array, value) {
- return array.concat(value.constructor == Array ?
- value.flatten() : [value]);
- });
- },
-
- without: function() {
- var values = $A(arguments);
- return this.select(function(value) {
- return !values.include(value);
- });
- },
-
- indexOf: function(object) {
- for (var i = 0; i < this.length; i++)
- if (this[i] == object) return i;
- return -1;
- },
-
- reverse: function(inline) {
- return (inline !== false ? this : this.toArray())._reverse();
- },
-
- shift: function() {
- var result = this[0];
- for (var i = 0; i < this.length - 1; i++)
- this[i] = this[i + 1];
- this.length--;
- return result;
- },
-
- inspect: function() {
- return '[' + this.map(Object.inspect).join(', ') + ']';
- }
-});
-var Hash = {
- _each: function(iterator) {
- for (key in this) {
- var value = this[key];
- if (typeof value == 'function') continue;
-
- var pair = [key, value];
- pair.key = key;
- pair.value = value;
- iterator(pair);
- }
- },
-
- keys: function() {
- return this.pluck('key');
- },
-
- values: function() {
- return this.pluck('value');
- },
-
- merge: function(hash) {
- return $H(hash).inject($H(this), function(mergedHash, pair) {
- mergedHash[pair.key] = pair.value;
- return mergedHash;
- });
- },
-
- toQueryString: function() {
- return this.map(function(pair) {
- return pair.map(encodeURIComponent).join('=');
- }).join('&');
- },
-
- inspect: function() {
- return '#<Hash:{' + this.map(function(pair) {
- return pair.map(Object.inspect).join(': ');
- }).join(', ') + '}>';
- }
-}
-
-function $H(object) {
- var hash = Object.extend({}, object || {});
- Object.extend(hash, Enumerable);
- Object.extend(hash, Hash);
- return hash;
-}
-ObjectRange = Class.create();
-Object.extend(ObjectRange.prototype, Enumerable);
-Object.extend(ObjectRange.prototype, {
- initialize: function(start, end, exclusive) {
- this.start = start;
- this.end = end;
- this.exclusive = exclusive;
- },
-
- _each: function(iterator) {
- var value = this.start;
- do {
- iterator(value);
- value = value.succ();
- } while (this.include(value));
- },
-
- include: function(value) {
- if (value < this.start)
- return false;
- if (this.exclusive)
- return value < this.end;
- return value <= this.end;
- }
-});
-
-var $R = function(start, end, exclusive) {
- return new ObjectRange(start, end, exclusive);
-}
-
-var Ajax = {
- getTransport: function() {
- return Try.these(
- function() {return new ActiveXObject('Msxml2.XMLHTTP')},
- function() {return new ActiveXObject('Microsoft.XMLHTTP')},
- function() {return new XMLHttpRequest()}
- ) || false;
- },
-
- activeRequestCount: 0
-}
-
-Ajax.Responders = {
- responders: [],
-
- _each: function(iterator) {
- this.responders._each(iterator);
- },
-
- register: function(responderToAdd) {
- if (!this.include(responderToAdd))
- this.responders.push(responderToAdd);
- },
-
- unregister: function(responderToRemove) {
- this.responders = this.responders.without(responderToRemove);
- },
-
- dispatch: function(callback, request, transport, json) {
- this.each(function(responder) {
- if (responder[callback] && typeof responder[callback] == 'function') {
- try {
- responder[callback].apply(responder, [request, transport, json]);
- } catch (e) {}
- }
- });
- }
-};
-
-Object.extend(Ajax.Responders, Enumerable);
-
-Ajax.Responders.register({
- onCreate: function() {
- Ajax.activeRequestCount++;
- },
-
- onComplete: function() {
- Ajax.activeRequestCount--;
- }
-});
-
-Ajax.Base = function() {};
-Ajax.Base.prototype = {
- setOptions: function(options) {
- this.options = {
- method: 'post',
- asynchronous: true,
- parameters: ''
- }
- Object.extend(this.options, options || {});
- },
-
- responseIsSuccess: function() {
- return this.transport.status == undefined
- || this.transport.status == 0
- || (this.transport.status >= 200 && this.transport.status < 300);
- },
-
- responseIsFailure: function() {
- return !this.responseIsSuccess();
- }
-}
-
-Ajax.Request = Class.create();
-Ajax.Request.Events =
- ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];
-
-Ajax.Request.prototype = Object.extend(new Ajax.Base(), {
- initialize: function(url, options) {
- this.transport = Ajax.getTransport();
- this.setOptions(options);
- this.request(url);
- },
-
- request: function(url) {
- var parameters = this.options.parameters || '';
- if (parameters.length > 0) parameters += '&_=';
-
- try {
- this.url = url;
- if (this.options.method == 'get' && parameters.length > 0)
- this.url += (this.url.match(/\?/) ? '&' : '?') + parameters;
-
- Ajax.Responders.dispatch('onCreate', this, this.transport);
-
- this.transport.open(this.options.method, this.url,
- this.options.asynchronous);
-
- if (this.options.asynchronous) {
- this.transport.onreadystatechange = this.onStateChange.bind(this);
- setTimeout((function() {this.respondToReadyState(1)}).bind(this), 10);
- }
-
- this.setRequestHeaders();
-
- var body = this.options.postBody ? this.options.postBody : parameters;
- this.transport.send(this.options.method == 'post' ? body : null);
-
- } catch (e) {
- this.dispatchException(e);
- }
- },
-
- setRequestHeaders: function() {
- var requestHeaders =
- ['X-Requested-With', 'XMLHttpRequest',
- 'X-Prototype-Version', Prototype.Version];
-
- if (this.options.method == 'post') {
- requestHeaders.push('Content-type',
- 'application/x-www-form-urlencoded');
-
- /* Force "Connection: close" for Mozilla browsers to work around
- * a bug where XMLHttpReqeuest sends an incorrect Content-length
- * header. See Mozilla Bugzilla #246651.
- */
- if (this.transport.overrideMimeType)
- requestHeaders.push('Connection', 'close');
- }
-
- if (this.options.requestHeaders)
- requestHeaders.push.apply(requestHeaders, this.options.requestHeaders);
-
- for (var i = 0; i < requestHeaders.length; i += 2)
- this.transport.setRequestHeader(requestHeaders[i], requestHeaders[i+1]);
- },
-
- onStateChange: function() {
- var readyState = this.transport.readyState;
- if (readyState != 1)
- this.respondToReadyState(this.transport.readyState);
- },
-
- header: function(name) {
- try {
- return this.transport.getResponseHeader(name);
- } catch (e) {}
- },
-
- evalJSON: function() {
- try {
- return eval(this.header('X-JSON'));
- } catch (e) {}
- },
-
- evalResponse: function() {
- try {
- return eval(this.transport.responseText);
- } catch (e) {
- this.dispatchException(e);
- }
- },
-
- respondToReadyState: function(readyState) {
- var event = Ajax.Request.Events[readyState];
- var transport = this.transport, json = this.evalJSON();
-
- if (event == 'Complete') {
- try {
- (this.options['on' + this.transport.status]
- || this.options['on' + (this.responseIsSuccess() ? 'Success' : 'Failure')]
- || Prototype.emptyFunction)(transport, json);
- } catch (e) {
- this.dispatchException(e);
- }
-
- if ((this.header('Content-type') || '').match(/^text\/javascript/i))
- this.evalResponse();
- }
-
- try {
- (this.options['on' + event] || Prototype.emptyFunction)(transport, json);
- Ajax.Responders.dispatch('on' + event, this, transport, json);
- } catch (e) {
- this.dispatchException(e);
- }
-
- /* Avoid memory leak in MSIE: clean up the oncomplete event handler */
- if (event == 'Complete')
- this.transport.onreadystatechange = Prototype.emptyFunction;
- },
-
- dispatchException: function(exception) {
- (this.options.onException || Prototype.emptyFunction)(this, exception);
- Ajax.Responders.dispatch('onException', this, exception);
- }
-});
-
-Ajax.Updater = Class.create();
-
-Object.extend(Object.extend(Ajax.Updater.prototype, Ajax.Request.prototype), {
- initialize: function(container, url, options) {
- this.containers = {
- success: container.success ? $(container.success) : $(container),
- failure: container.failure ? $(container.failure) :
- (container.success ? null : $(container))
- }
-
- this.transport = Ajax.getTransport();
- this.setOptions(options);
-
- var onComplete = this.options.onComplete || Prototype.emptyFunction;
- this.options.onComplete = (function(transport, object) {
- this.updateContent();
- onComplete(transport, object);
- }).bind(this);
-
- this.request(url);
- },
-
- updateContent: function() {
- var receiver = this.responseIsSuccess() ?
- this.containers.success : this.containers.failure;
- var response = this.transport.responseText;
-
- if (!this.options.evalScripts)
- response = response.stripScripts();
-
- if (receiver) {
- if (this.options.insertion) {
- new this.options.insertion(receiver, response);
- } else {
- Element.update(receiver, response);
- }
- }
-
- if (this.responseIsSuccess()) {
- if (this.onComplete)
- setTimeout(this.onComplete.bind(this), 10);
- }
- }
-});
-
-Ajax.PeriodicalUpdater = Class.create();
-Ajax.PeriodicalUpdater.prototype = Object.extend(new Ajax.Base(), {
- initialize: function(container, url, options) {
- this.setOptions(options);
- this.onComplete = this.options.onComplete;
-
- this.frequency = (this.options.frequency || 2);
- this.decay = (this.options.decay || 1);
-
- this.updater = {};
- this.container = container;
- this.url = url;
-
- this.start();
- },
-
- start: function() {
- this.options.onComplete = this.updateComplete.bind(this);
- this.onTimerEvent();
- },
-
- stop: function() {
- this.updater.onComplete = undefined;
- clearTimeout(this.timer);
- (this.onComplete || Prototype.emptyFunction).apply(this, arguments);
- },
-
- updateComplete: function(request) {
- if (this.options.decay) {
- this.decay = (request.responseText == this.lastText ?
- this.decay * this.options.decay : 1);
-
- this.lastText = request.responseText;
- }
- this.timer = setTimeout(this.onTimerEvent.bind(this),
- this.decay * this.frequency * 1000);
- },
-
- onTimerEvent: function() {
- this.updater = new Ajax.Updater(this.container, this.url, this.options);
- }
-});
-document.getElementsByClassName = function(className, parentElement) {
- var children = ($(parentElement) || document.body).getElementsByTagName('*');
- return $A(children).inject([], function(elements, child) {
- if (child.className.match(new RegExp("(^|\\s)" + className + "(\\s|$)")))
- elements.push(child);
- return elements;
- });
-}
-
-/*--------------------------------------------------------------------------*/
-
-if (!window.Element) {
- var Element = new Object();
-}
-
-Object.extend(Element, {
- visible: function(element) {
- return $(element).style.display != 'none';
- },
-
- toggle: function() {
- for (var i = 0; i < arguments.length; i++) {
- var element = $(arguments[i]);
- Element[Element.visible(element) ? 'hide' : 'show'](element);
- }
- },
-
- hide: function() {
- for (var i = 0; i < arguments.length; i++) {
- var element = $(arguments[i]);
- element.style.display = 'none';
- }
- },
-
- show: function() {
- for (var i = 0; i < arguments.length; i++) {
- var element = $(arguments[i]);
- element.style.display = '';
- }
- },
-
- remove: function(element) {
- element = $(element);
- element.parentNode.removeChild(element);
- },
-
- update: function(element, html) {
- $(element).innerHTML = html.stripScripts();
- setTimeout(function() {html.evalScripts()}, 10);
- },
-
- getHeight: function(element) {
- element = $(element);
- return element.offsetHeight;
- },
-
- classNames: function(element) {
- return new Element.ClassNames(element);
- },
-
- hasClassName: function(element, className) {
- if (!(element = $(element))) return;
- return Element.classNames(element).include(className);
- },
-
- addClassName: function(element, className) {
- if (!(element = $(element))) return;
- return Element.classNames(element).add(className);
- },
-
- removeClassName: function(element, className) {
- if (!(element = $(element))) return;
- return Element.classNames(element).remove(className);
- },
-
- // removes whitespace-only text node children
- cleanWhitespace: function(element) {
- element = $(element);
- for (var i = 0; i < element.childNodes.length; i++) {
- var node = element.childNodes[i];
- if (node.nodeType == 3 && !/\S/.test(node.nodeValue))
- Element.remove(node);
- }
- },
-
- empty: function(element) {
- return $(element).innerHTML.match(/^\s*$/);
- },
-
- scrollTo: function(element) {
- element = $(element);
- var x = element.x ? element.x : element.offsetLeft,
- y = element.y ? element.y : element.offsetTop;
- window.scrollTo(x, y);
- },
-
- getStyle: function(element, style) {
- element = $(element);
- var value = element.style[style.camelize()];
- if (!value) {
- if (document.defaultView && document.defaultView.getComputedStyle) {
- var css = document.defaultView.getComputedStyle(element, null);
- value = css ? css.getPropertyValue(style) : null;
- } else if (element.currentStyle) {
- value = element.currentStyle[style.camelize()];
- }
- }
-
- if (window.opera && ['left', 'top', 'right', 'bottom'].include(style))
- if (Element.getStyle(element, 'position') == 'static') value = 'auto';
-
- return value == 'auto' ? null : value;
- },
-
- setStyle: function(element, style) {
- element = $(element);
- for (name in style)
- element.style[name.camelize()] = style[name];
- },
-
- getDimensions: function(element) {
- element = $(element);
- if (Element.getStyle(element, 'display') != 'none')
- return {width: element.offsetWidth, height: element.offsetHeight};
-
- // All *Width and *Height properties give 0 on elements with display none,
- // so enable the element temporarily
- var els = element.style;
- var originalVisibility = els.visibility;
- var originalPosition = els.position;
- els.visibility = 'hidden';
- els.position = 'absolute';
- els.display = '';
- var originalWidth = element.clientWidth;
- var originalHeight = element.clientHeight;
- els.display = 'none';
- els.position = originalPosition;
- els.visibility = originalVisibility;
- return {width: originalWidth, height: originalHeight};
- },
-
- makePositioned: function(element) {
- element = $(element);
- var pos = Element.getStyle(element, 'position');
- if (pos == 'static' || !pos) {
- element._madePositioned = true;
- element.style.position = 'relative';
- // Opera returns the offset relative to the positioning context, when an
- // element is position relative but top and left have not been defined
- if (window.opera) {
- element.style.top = 0;
- element.style.left = 0;
- }
- }
- },
-
- undoPositioned: function(element) {
- element = $(element);
- if (element._madePositioned) {
- element._madePositioned = undefined;
- element.style.position =
- element.style.top =
- element.style.left =
- element.style.bottom =
- element.style.right = '';
- }
- },
-
- makeClipping: function(element) {
- element = $(element);
- if (element._overflow) return;
- element._overflow = element.style.overflow;
- if ((Element.getStyle(element, 'overflow') || 'visible') != 'hidden')
- element.style.overflow = 'hidden';
- },
-
- undoClipping: function(element) {
- element = $(element);
- if (element._overflow) return;
- element.style.overflow = element._overflow;
- element._overflow = undefined;
- }
-});
-
-var Toggle = new Object();
-Toggle.display = Element.toggle;
-
-/*--------------------------------------------------------------------------*/
-
-Abstract.Insertion = function(adjacency) {
- this.adjacency = adjacency;
-}
-
-Abstract.Insertion.prototype = {
- initialize: function(element, content) {
- this.element = $(element);
- this.content = content.stripScripts();
-
- if (this.adjacency && this.element.insertAdjacentHTML) {
- try {
- this.element.insertAdjacentHTML(this.adjacency, this.content);
- } catch (e) {
- if (this.element.tagName.toLowerCase() == 'tbody') {
- this.insertContent(this.contentFromAnonymousTable());
- } else {
- throw e;
- }
- }
- } else {
- this.range = this.element.ownerDocument.createRange();
- if (this.initializeRange) this.initializeRange();
- this.insertContent([this.range.createContextualFragment(this.content)]);
- }
-
- setTimeout(function() {content.evalScripts()}, 10);
- },
-
- contentFromAnonymousTable: function() {
- var div = document.createElement('div');
- div.innerHTML = '<table><tbody>' + this.content + '</tbody></table>';
- return $A(div.childNodes[0].childNodes[0].childNodes);
- }
-}
-
-var Insertion = new Object();
-
-Insertion.Before = Class.create();
-Insertion.Before.prototype = Object.extend(new Abstract.Insertion('beforeBegin'), {
- initializeRange: function() {
- this.range.setStartBefore(this.element);
- },
-
- insertContent: function(fragments) {
- fragments.each((function(fragment) {
- this.element.parentNode.insertBefore(fragment, this.element);
- }).bind(this));
- }
-});
-
-Insertion.Top = Class.create();
-Insertion.Top.prototype = Object.extend(new Abstract.Insertion('afterBegin'), {
- initializeRange: function() {
- this.range.selectNodeContents(this.element);
- this.range.collapse(true);
- },
-
- insertContent: function(fragments) {
- fragments.reverse(false).each((function(fragment) {
- this.element.insertBefore(fragment, this.element.firstChild);
- }).bind(this));
- }
-});
-
-Insertion.Bottom = Class.create();
-Insertion.Bottom.prototype = Object.extend(new Abstract.Insertion('beforeEnd'), {
- initializeRange: function() {
- this.range.selectNodeContents(this.element);
- this.range.collapse(this.element);
- },
-
- insertContent: function(fragments) {
- fragments.each((function(fragment) {
- this.element.appendChild(fragment);
- }).bind(this));
- }
-});
-
-Insertion.After = Class.create();
-Insertion.After.prototype = Object.extend(new Abstract.Insertion('afterEnd'), {
- initializeRange: function() {
- this.range.setStartAfter(this.element);
- },
-
- insertContent: function(fragments) {
- fragments.each((function(fragment) {
- this.element.parentNode.insertBefore(fragment,
- this.element.nextSibling);
- }).bind(this));
- }
-});
-
-/*--------------------------------------------------------------------------*/
-
-Element.ClassNames = Class.create();
-Element.ClassNames.prototype = {
- initialize: function(element) {
- this.element = $(element);
- },
-
- _each: function(iterator) {
- this.element.className.split(/\s+/).select(function(name) {
- return name.length > 0;
- })._each(iterator);
- },
-
- set: function(className) {
- this.element.className = className;
- },
-
- add: function(classNameToAdd) {
- if (this.include(classNameToAdd)) return;
- this.set(this.toArray().concat(classNameToAdd).join(' '));
- },
-
- remove: function(classNameToRemove) {
- if (!this.include(classNameToRemove)) return;
- this.set(this.select(function(className) {
- return className != classNameToRemove;
- }).join(' '));
- },
-
- toString: function() {
- return this.toArray().join(' ');
- }
-}
-
-Object.extend(Element.ClassNames.prototype, Enumerable);
-var Field = {
- clear: function() {
- for (var i = 0; i < arguments.length; i++)
- $(arguments[i]).value = '';
- },
-
- focus: function(element) {
- $(element).focus();
- },
-
- present: function() {
- for (var i = 0; i < arguments.length; i++)
- if ($(arguments[i]).value == '') return false;
- return true;
- },
-
- select: function(element) {
- $(element).select();
- },
-
- activate: function(element) {
- element = $(element);
- element.focus();
- if (element.select)
- element.select();
- }
-}
-
-/*--------------------------------------------------------------------------*/
-
-var Form = {
- serialize: function(form) {
- var elements = Form.getElements($(form));
- var queryComponents = new Array();
-
- for (var i = 0; i < elements.length; i++) {
- var queryComponent = Form.Element.serialize(elements[i]);
- if (queryComponent)
- queryComponents.push(queryComponent);
- }
-
- return queryComponents.join('&');
- },
-
- getElements: function(form) {
- form = $(form);
- var elements = new Array();
-
- for (tagName in Form.Element.Serializers) {
- var tagElements = form.getElementsByTagName(tagName);
- for (var j = 0; j < tagElements.length; j++)
- elements.push(tagElements[j]);
- }
- return elements;
- },
-
- getInputs: function(form, typeName, name) {
- form = $(form);
- var inputs = form.getElementsByTagName('input');
-
- if (!typeName && !name)
- return inputs;
-
- var matchingInputs = new Array();
- for (var i = 0; i < inputs.length; i++) {
- var input = inputs[i];
- if ((typeName && input.type != typeName) ||
- (name && input.name != name))
- continue;
- matchingInputs.push(input);
- }
-
- return matchingInputs;
- },
-
- disable: function(form) {
- var elements = Form.getElements(form);
- for (var i = 0; i < elements.length; i++) {
- var element = elements[i];
- element.blur();
- element.disabled = 'true';
- }
- },
-
- enable: function(form) {
- var elements = Form.getElements(form);
- for (var i = 0; i < elements.length; i++) {
- var element = elements[i];
- element.disabled = '';
- }
- },
-
- findFirstElement: function(form) {
- return Form.getElements(form).find(function(element) {
- return element.type != 'hidden' && !element.disabled &&
- ['input', 'select', 'textarea'].include(element.tagName.toLowerCase());
- });
- },
-
- focusFirstElement: function(form) {
- Field.activate(Form.findFirstElement(form));
- },
-
- reset: function(form) {
- $(form).reset();
- }
-}
-
-Form.Element = {
- serialize: function(element) {
- element = $(element);
- var method = element.tagName.toLowerCase();
- var parameter = Form.Element.Serializers[method](element);
-
- if (parameter) {
- var key = encodeURIComponent(parameter[0]);
- if (key.length == 0) return;
-
- if (parameter[1].constructor != Array)
- parameter[1] = [parameter[1]];
-
- return parameter[1].map(function(value) {
- return key + '=' + encodeURIComponent(value);
- }).join('&');
- }
- },
-
- getValue: function(element) {
- element = $(element);
- var method = element.tagName.toLowerCase();
- var parameter = Form.Element.Serializers[method](element);
-
- if (parameter)
- return parameter[1];
- }
-}
-
-Form.Element.Serializers = {
- input: function(element) {
- switch (element.type.toLowerCase()) {
- case 'submit':
- case 'hidden':
- case 'password':
- case 'text':
- return Form.Element.Serializers.textarea(element);
- case 'checkbox':
- case 'radio':
- return Form.Element.Serializers.inputSelector(element);
- }
- return false;
- },
-
- inputSelector: function(element) {
- if (element.checked)
- return [element.name, element.value];
- },
-
- textarea: function(element) {
- return [element.name, element.value];
- },
-
- select: function(element) {
- return Form.Element.Serializers[element.type == 'select-one' ?
- 'selectOne' : 'selectMany'](element);
- },
-
- selectOne: function(element) {
- var value = '', opt, index = element.selectedIndex;
- if (index >= 0) {
- opt = element.options[index];
- value = opt.value;
- if (!value && !('value' in opt))
- value = opt.text;
- }
- return [element.name, value];
- },
-
- selectMany: function(element) {
- var value = new Array();
- for (var i = 0; i < element.length; i++) {
- var opt = element.options[i];
- if (opt.selected) {
- var optValue = opt.value;
- if (!optValue && !('value' in opt))
- optValue = opt.text;
- value.push(optValue);
- }
- }
- return [element.name, value];
- }
-}
-
-/*--------------------------------------------------------------------------*/
-
-var $F = Form.Element.getValue;
-
-/*--------------------------------------------------------------------------*/
-
-Abstract.TimedObserver = function() {}
-Abstract.TimedObserver.prototype = {
- initialize: function(element, frequency, callback) {
- this.frequency = frequency;
- this.element = $(element);
- this.callback = callback;
-
- this.lastValue = this.getValue();
- this.registerCallback();
- },
-
- registerCallback: function() {
- setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
- },
-
- onTimerEvent: function() {
- var value = this.getValue();
- if (this.lastValue != value) {
- this.callback(this.element, value);
- this.lastValue = value;
- }
- }
-}
-
-Form.Element.Observer = Class.create();
-Form.Element.Observer.prototype = Object.extend(new Abstract.TimedObserver(), {
- getValue: function() {
- return Form.Element.getValue(this.element);
- }
-});
-
-Form.Observer = Class.create();
-Form.Observer.prototype = Object.extend(new Abstract.TimedObserver(), {
- getValue: function() {
- return Form.serialize(this.element);
- }
-});
-
-/*--------------------------------------------------------------------------*/
-
-Abstract.EventObserver = function() {}
-Abstract.EventObserver.prototype = {
- initialize: function(element, callback) {
- this.element = $(element);
- this.callback = callback;
-
- this.lastValue = this.getValue();
- if (this.element.tagName.toLowerCase() == 'form')
- this.registerFormCallbacks();
- else
- this.registerCallback(this.element);
- },
-
- onElementEvent: function() {
- var value = this.getValue();
- if (this.lastValue != value) {
- this.callback(this.element, value);
- this.lastValue = value;
- }
- },
-
- registerFormCallbacks: function() {
- var elements = Form.getElements(this.element);
- for (var i = 0; i < elements.length; i++)
- this.registerCallback(elements[i]);
- },
-
- registerCallback: function(element) {
- if (element.type) {
- switch (element.type.toLowerCase()) {
- case 'checkbox':
- case 'radio':
- Event.observe(element, 'click', this.onElementEvent.bind(this));
- break;
- case 'password':
- case 'text':
- case 'textarea':
- case 'select-one':
- case 'select-multiple':
- Event.observe(element, 'change', this.onElementEvent.bind(this));
- break;
- }
- }
- }
-}
-
-Form.Element.EventObserver = Class.create();
-Form.Element.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), {
- getValue: function() {
- return Form.Element.getValue(this.element);
- }
-});
-
-Form.EventObserver = Class.create();
-Form.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), {
- getValue: function() {
- return Form.serialize(this.element);
- }
-});
-if (!window.Event) {
- var Event = new Object();
-}
-
-Object.extend(Event, {
- KEY_BACKSPACE: 8,
- KEY_TAB: 9,
- KEY_RETURN: 13,
- KEY_ESC: 27,
- KEY_LEFT: 37,
- KEY_UP: 38,
- KEY_RIGHT: 39,
- KEY_DOWN: 40,
- KEY_DELETE: 46,
-
- element: function(event) {
- return event.target || event.srcElement;
- },
-
- isLeftClick: function(event) {
- return (((event.which) && (event.which == 1)) ||
- ((event.button) && (event.button == 1)));
- },
-
- pointerX: function(event) {
- return event.pageX || (event.clientX +
- (document.documentElement.scrollLeft || document.body.scrollLeft));
- },
-
- pointerY: function(event) {
- return event.pageY || (event.clientY +
- (document.documentElement.scrollTop || document.body.scrollTop));
- },
-
- stop: function(event) {
- if (event.preventDefault) {
- event.preventDefault();
- event.stopPropagation();
- } else {
- event.returnValue = false;
- event.cancelBubble = true;
- }
- },
-
- // find the first node with the given tagName, starting from the
- // node the event was triggered on; traverses the DOM upwards
- findElement: function(event, tagName) {
- var element = Event.element(event);
- while (element.parentNode && (!element.tagName ||
- (element.tagName.toUpperCase() != tagName.toUpperCase())))
- element = element.parentNode;
- return element;
- },
-
- observers: false,
-
- _observeAndCache: function(element, name, observer, useCapture) {
- if (!this.observers) this.observers = [];
- if (element.addEventListener) {
- this.observers.push([element, name, observer, useCapture]);
- element.addEventListener(name, observer, useCapture);
- } else if (element.attachEvent) {
- this.observers.push([element, name, observer, useCapture]);
- element.attachEvent('on' + name, observer);
- }
- },
-
- unloadCache: function() {
- if (!Event.observers) return;
- for (var i = 0; i < Event.observers.length; i++) {
- Event.stopObserving.apply(this, Event.observers[i]);
- Event.observers[i][0] = null;
- }
- Event.observers = false;
- },
-
- observe: function(element, name, observer, useCapture) {
- var element = $(element);
- useCapture = useCapture || false;
-
- if (name == 'keypress' &&
- (navigator.appVersion.match(/Konqueror|Safari|KHTML/)
- || element.attachEvent))
- name = 'keydown';
-
- this._observeAndCache(element, name, observer, useCapture);
- },
-
- stopObserving: function(element, name, observer, useCapture) {
- var element = $(element);
- useCapture = useCapture || false;
-
- if (name == 'keypress' &&
- (navigator.appVersion.match(/Konqueror|Safari|KHTML/)
- || element.detachEvent))
- name = 'keydown';
-
- if (element.removeEventListener) {
- element.removeEventListener(name, observer, useCapture);
- } else if (element.detachEvent) {
- element.detachEvent('on' + name, observer);
- }
- }
-});
-
-/* prevent memory leaks in IE */
-Event.observe(window, 'unload', Event.unloadCache, false);
-var Position = {
- // set to true if needed, warning: firefox performance problems
- // NOT neeeded for page scrolling, only if draggable contained in
- // scrollable elements
- includeScrollOffsets: false,
-
- // must be called before calling withinIncludingScrolloffset, every time the
- // page is scrolled
- prepare: function() {
- this.deltaX = window.pageXOffset
- || document.documentElement.scrollLeft
- || document.body.scrollLeft
- || 0;
- this.deltaY = window.pageYOffset
- || document.documentElement.scrollTop
- || document.body.scrollTop
- || 0;
- },
-
- realOffset: function(element) {
- var valueT = 0, valueL = 0;
- do {
- valueT += element.scrollTop || 0;
- valueL += element.scrollLeft || 0;
- element = element.parentNode;
- } while (element);
- return [valueL, valueT];
- },
-
- cumulativeOffset: function(element) {
- var valueT = 0, valueL = 0;
- do {
- valueT += element.offsetTop || 0;
- valueL += element.offsetLeft || 0;
- element = element.offsetParent;
- } while (element);
- return [valueL, valueT];
- },
-
- positionedOffset: function(element) {
- var valueT = 0, valueL = 0;
- do {
- valueT += element.offsetTop || 0;
- valueL += element.offsetLeft || 0;
- element = element.offsetParent;
- if (element) {
- p = Element.getStyle(element, 'position');
- if (p == 'relative' || p == 'absolute') break;
- }
- } while (element);
- return [valueL, valueT];
- },
-
- offsetParent: function(element) {
- if (element.offsetParent) return element.offsetParent;
- if (element == document.body) return element;
-
- while ((element = element.parentNode) && element != document.body)
- if (Element.getStyle(element, 'position') != 'static')
- return element;
-
- return document.body;
- },
-
- // caches x/y coordinate pair to use with overlap
- within: function(element, x, y) {
- if (this.includeScrollOffsets)
- return this.withinIncludingScrolloffsets(element, x, y);
- this.xcomp = x;
- this.ycomp = y;
- this.offset = this.cumulativeOffset(element);
-
- return (y >= this.offset[1] &&
- y < this.offset[1] + element.offsetHeight &&
- x >= this.offset[0] &&
- x < this.offset[0] + element.offsetWidth);
- },
-
- withinIncludingScrolloffsets: function(element, x, y) {
- var offsetcache = this.realOffset(element);
-
- this.xcomp = x + offsetcache[0] - this.deltaX;
- this.ycomp = y + offsetcache[1] - this.deltaY;
- this.offset = this.cumulativeOffset(element);
-
- return (this.ycomp >= this.offset[1] &&
- this.ycomp < this.offset[1] + element.offsetHeight &&
- this.xcomp >= this.offset[0] &&
- this.xcomp < this.offset[0] + element.offsetWidth);
- },
-
- // within must be called directly before
- overlap: function(mode, element) {
- if (!mode) return 0;
- if (mode == 'vertical')
- return ((this.offset[1] + element.offsetHeight) - this.ycomp) /
- element.offsetHeight;
- if (mode == 'horizontal')
- return ((this.offset[0] + element.offsetWidth) - this.xcomp) /
- element.offsetWidth;
- },
-
- clone: function(source, target) {
- source = $(source);
- target = $(target);
- target.style.position = 'absolute';
- var offsets = this.cumulativeOffset(source);
- target.style.top = offsets[1] + 'px';
- target.style.left = offsets[0] + 'px';
- target.style.width = source.offsetWidth + 'px';
- target.style.height = source.offsetHeight + 'px';
- },
-
- page: function(forElement) {
- var valueT = 0, valueL = 0;
-
- var element = forElement;
- do {
- valueT += element.offsetTop || 0;
- valueL += element.offsetLeft || 0;
-
- // Safari fix
- if (element.offsetParent==document.body)
- if (Element.getStyle(element,'position')=='absolute') break;
-
- } while (element = element.offsetParent);
-
- element = forElement;
- do {
- valueT -= element.scrollTop || 0;
- valueL -= element.scrollLeft || 0;
- } while (element = element.parentNode);
-
- return [valueL, valueT];
- },
-
- clone: function(source, target) {
- var options = Object.extend({
- setLeft: true,
- setTop: true,
- setWidth: true,
- setHeight: true,
- offsetTop: 0,
- offsetLeft: 0
- }, arguments[2] || {})
-
- // find page position of source
- source = $(source);
- var p = Position.page(source);
-
- // find coordinate system to use
- target = $(target);
- var delta = [0, 0];
- var parent = null;
- // delta [0,0] will do fine with position: fixed elements,
- // position:absolute needs offsetParent deltas
- if (Element.getStyle(target,'position') == 'absolute') {
- parent = Position.offsetParent(target);
- delta = Position.page(parent);
- }
-
- // correct by body offsets (fixes Safari)
- if (parent == document.body) {
- delta[0] -= document.body.offsetLeft;
- delta[1] -= document.body.offsetTop;
- }
-
- // set position
- if(options.setLeft) target.style.left = (p[0] - delta[0] + options.offsetLeft) + 'px';
- if(options.setTop) target.style.top = (p[1] - delta[1] + options.offsetTop) + 'px';
- if(options.setWidth) target.style.width = source.offsetWidth + 'px';
- if(options.setHeight) target.style.height = source.offsetHeight + 'px';
- },
-
- absolutize: function(element) {
- element = $(element);
- if (element.style.position == 'absolute') return;
- Position.prepare();
-
- var offsets = Position.positionedOffset(element);
- var top = offsets[1];
- var left = offsets[0];
- var width = element.clientWidth;
- var height = element.clientHeight;
-
- element._originalLeft = left - parseFloat(element.style.left || 0);
- element._originalTop = top - parseFloat(element.style.top || 0);
- element._originalWidth = element.style.width;
- element._originalHeight = element.style.height;
-
- element.style.position = 'absolute';
- element.style.top = top + 'px';;
- element.style.left = left + 'px';;
- element.style.width = width + 'px';;
- element.style.height = height + 'px';;
- },
-
- relativize: function(element) {
- element = $(element);
- if (element.style.position == 'relative') return;
- Position.prepare();
-
- element.style.position = 'relative';
- var top = parseFloat(element.style.top || 0) - (element._originalTop || 0);
- var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0);
-
- element.style.top = top + 'px';
- element.style.left = left + 'px';
- element.style.height = element._originalHeight;
- element.style.width = element._originalWidth;
- }
-}
-
-// Safari returns margins on body which is incorrect if the child is absolutely
-// positioned. For performance reasons, redefine Position.cumulativeOffset for
-// KHTML/WebKit only.
-if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) {
- Position.cumulativeOffset = function(element) {
- var valueT = 0, valueL = 0;
- do {
- valueT += element.offsetTop || 0;
- valueL += element.offsetLeft || 0;
- if (element.offsetParent == document.body)
- if (Element.getStyle(element, 'position') == 'absolute') break;
-
- element = element.offsetParent;
- } while (element);
-
- return [valueL, valueT];
- }
-}
diff --git a/js/sleight.js b/js/sleight.js
deleted file mode 100644
index 1afe867..0000000
--- a/js/sleight.js
+++ /dev/null
@@ -1,61 +0,0 @@
-// script taken from http://youngpup.net/snippets/sleight.xml
-if (navigator.platform == "Win32" && navigator.appName == "Microsoft Internet Explorer" && window.attachEvent) {
- document.writeln('<style type="text/css">img, input.image { visibility:hidden; } </style>');
- window.attachEvent("onload", fnLoadPngs);
-}
-
-function fnLoadPngs() {
- var rslt = navigator.appVersion.match(/MSIE (\d+\.\d+)/, '');
- var itsAllGood = (rslt != null && Number(rslt[1]) >= 5.5);
-
- for (var i = document.images.length - 1, img = null; (img = document.images[i]); i--) {
- if (itsAllGood && img.src.match(/\.png$/i) != null) {
- fnFixPng(img);
- img.attachEvent("onpropertychange", fnPropertyChanged);
- }
- img.style.visibility = "visible";
- }
-
- var nl = document.getElementsByTagName("INPUT");
- for (var i = nl.length - 1, e = null; (e = nl[i]); i--) {
- if (e.className && e.className.match(/\bimage\b/i) != null) {
- if (e.src.match(/\.png$/i) != null) {
- fnFixPng(e);
- e.attachEvent("onpropertychange", fnPropertyChanged);
- }
- e.style.visibility = "visible";
- }
- }
-}
-
-function fnPropertyChanged() {
- if (window.event.propertyName == "src") {
- var el = window.event.srcElement;
- if (!el.src.match(/x\.gif$/i)) {
- el.filters.item(0).src = el.src;
- el.src = bitRootUrl+"themes/js/x.gif";
- }
- }
-}
-
-function dbg(o) {
- var s = "";
- var i = 0;
- for (var p in o) {
- s += p + ": " + o[p] + "\n";
- if (++i % 10 == 0) {
- alert(s);
- s = "";
- }
- }
- alert(s);
-}
-
-function fnFixPng(img) {
- var src = img.src;
- img.style.width = img.width + "px";
- img.style.height = img.height + "px";
- img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizingMethod='scale')"
- //img.src = "x.gif";
- img.src = bitRootUrl+"themes/js/x.gif";
-}
diff --git a/js/tabs/listener.js b/js/tabs/listener.js
deleted file mode 100644
index 5105285..0000000
--- a/js/tabs/listener.js
+++ /dev/null
@@ -1,86 +0,0 @@
-/* =================================================================================================
- * Listener - by Aaron Boodman
- * 5/23/2002; Queens, NY.
- * http://www.youngpup.net/projects/dhtml/listener/
- */
-function Listener(fp, scope, removing) {
- this.fp = fp;
- this.scope = scope;
- this.removeing = removing;
-}
-
-Listener.add = function(oSource, sEvent, fpDest, oScope, bRunOnce) {
- if (!oSource[sEvent] || oSource[sEvent] == null || !oSource[sEvent]._listeners) {
- oSource[sEvent] = function() { Listener.fire(oSource, sEvent, arguments) };
- oSource[sEvent]._listeners = new Array();
- }
-
- var idx = this.findForEvent(oSource[sEvent], fpDest, oScope);
- if (idx == -1) idx = oSource[sEvent]._listeners.length;
-
- oSource[sEvent]._listeners[idx] = new Listener(fpDest, oScope, bRunOnce);
-}
-
-Listener.remove = function(oSource, sEvent, fpDest, oScope) {
- var idx = this.findForEvent(oSource[sEvent], fpDest, oScope);
- if (idx != -1) {
- var iLast = oSource[sEvent]._listeners.length - 1;
- oSource[sEvent]._listeners[idx] = oSource[sEvent]._listeners[iLast];
- oSource[sEvent]._listeners.length--;
- }
-}
-
-Listener.findForEvent = function(fpEvent, fpDest, oScope) {
- if (fpEvent._listeners) {
- for (var i = 0; i < fpEvent._listeners.length; i++) {
- if (fpEvent._listeners[i].scope == oScope && fpEvent._listeners[i].fp == fpDest) {
- return i;
- }
- }
- }
- return -1;
-}
-
-Listener.fire = function(oSourceObj, sEvent, args) {
-
- if(oSourceObj&&oSourceObj[sEvent]&&oSourceObj[sEvent]._listeners) { // TRS
-
- var lstnr, fp;
- var last = oSourceObj[sEvent]._listeners.length - 1;
-
- // must loop in reverse, because we might be removing elements as we go.
-
- for (var i = last; i >= 0; i--) {
- lstnr = oSourceObj[sEvent]._listeners[i];
- fp = lstnr.fp;
-
- fp.apply(lstnr.scope, args);
-
- if (lstnr.remove) Listener.remove(oSourceObj, sEvent, lstnr.fp, lstnr.scope);
- }
- }
-
- return(-1)
-}
-
-// impliment function apply for browsers which don't support it natively
-if (!Function.prototype.apply) {
- Function.prototype.apply = function(oScope, args) {
- var sarg = [];
- var rtrn, call;
-
- if (!oScope) oScope = window;
- if (!args) args = [];
-
- for (var i = 0; i < args.length; i++) {
- sarg[i] = "args["+i+"]";
- }
-
- call = "oScope.__applyTemp__(" + sarg.join(",") + ");";
-
- oScope.__applyTemp__ = this;
- rtrn = eval(call);
- delete oScope.__applyTemp__;
- return rtrn;
- }
-} \ No newline at end of file
diff --git a/js/tabs/tabpane.js b/js/tabs/tabpane.js
deleted file mode 100644
index 76966fc..0000000
--- a/js/tabs/tabpane.js
+++ /dev/null
@@ -1,332 +0,0 @@
-/*--------------------------------------------------------------------------\
-| Tab Pane 1.02 |
-|---------------------------------------------------------------------------|
-| Created by Erik Arvidsson |
-| (http://webfx.eae.net/contact.html#erik) |
-| For WebFX (http://webfx.eae.net/) |
-|---------------------------------------------------------------------------|
-| Copyright (c) 1998 - 2003 Erik Arvidsson |
-\--------------------------------------------------------------------------*/
-
-// This function is used to define if the browser supports the needed
-// features
-function hasSupport() {
-
- if (typeof hasSupport.support != "undefined")
- return hasSupport.support;
-
- var ie55 = /msie 5\.[56789]/i.test( navigator.userAgent );
-
- hasSupport.support = ( typeof document.implementation != "undefined" &&
- document.implementation.hasFeature( "html", "1.0" ) || ie55 )
-
- // IE55 has a serious DOM1 bug... Patch it!
- if ( ie55 ) {
- document._getElementsByTagName = document.getElementsByTagName;
- document.getElementsByTagName = function ( sTagName ) {
- if ( sTagName == "*" )
- return document.all;
- else
- return document._getElementsByTagName( sTagName );
- };
- }
-
- return hasSupport.support;
-}
-
-
-// The constructor for tab panes
-// el : HTMLElement The html element used to represent the tab pane
-// bUseCookie : Boolean Optional. Default is true. Used to determine whether to us
-// persistance using cookies or not
-
-function WebFXTabPane( el, bUseCookie ) {
- if ( !hasSupport() || el == null ) return;
-
- this.element = el;
- this.element.tabPane = this;
- this.pages = [];
- this.selectedIndex = null;
-
- // <--- quick hack to set persistence only on pages where referrer == location
- var ref = document.referrer.split( "?" );
- var loc = document.location.href.split( "?" );
- if( loc[0] != ref[0] ) {
- WebFXTabPane.setCookie( "webfxtab_" + this.element.id, 0 );
- }
- // end quick hack - xing --->
-
- this.useCookie = bUseCookie != null ? bUseCookie : true;
-
- // add class name tag to class name
- this.element.className = this.classNameTag + " " + this.element.className;
-
- // add tab row
- this.tabRow = document.createElement( "div" );
- this.tabRow.className = "tabcontainer";
- el.insertBefore( this.tabRow, el.firstChild );
-
- var tabIndex = 0;
- if ( this.useCookie ) {
- tabIndex = Number( WebFXTabPane.getCookie( "webfxtab_" + this.element.id ) );
- if ( isNaN( tabIndex ) )
- tabIndex = 0;
- }
- this.selectedIndex = tabIndex;
-
- // loop through child nodes and add them
- var cs = el.childNodes;
- var n;
- for (var i = 0; i < cs.length; i++) {
- if (cs[i].nodeType == 1 && cs[i].className == "tabpage") {
- this.addTabPage( cs[i] );
- }
- }
-}
-
-WebFXTabPane.prototype.classNameTag = "tabsystem";
-
-WebFXTabPane.prototype.setSelectedIndex = function ( n ) {
- if (this.selectedIndex != n) {
- if (this.selectedIndex != null && this.pages[ this.selectedIndex ] != null )
- this.pages[ this.selectedIndex ].hide();
- this.selectedIndex = n;
- this.pages[ this.selectedIndex ].show();
-
- if ( this.useCookie )
- WebFXTabPane.setCookie( "webfxtab_" + this.element.id, n, 1 ); // session cookie
- }
-};
-
-WebFXTabPane.prototype.getSelectedIndex = function () {
- return this.selectedIndex;
-};
-
-WebFXTabPane.prototype.addTabPage = function ( oElement ) {
- if ( !hasSupport() ) return;
-
- if ( oElement.tabPage == this ) // already added
- return oElement.tabPage;
-
- var n = this.pages.length;
- var tp = this.pages[n] = new WebFXTabPage( oElement, this, n );
- tp.tabPane = this;
-
- // move the tab out of the box
- this.tabRow.appendChild( tp.tab );
-
- if ( n == this.selectedIndex )
- tp.show();
- else
- tp.hide();
-
- return tp;
-};
-
-WebFXTabPane.prototype.dispose = function () {
- this.element.tabPane = null;
- this.element = null;
- this.tabRow = null;
-
- for (var i = 0; i < this.pages.length; i++) {
- this.pages[i].dispose();
- this.pages[i] = null;
- }
- this.pages = null;
-};
-
-
-
-// Cookie handling
-WebFXTabPane.setCookie = function ( sName, sValue, nDays ) {
- var expires = "";
- if ( nDays ) {
- var d = new Date();
- d.setTime( d.getTime() + nDays * 24 * 60 * 60 * 1000 );
- expires = "; expires=" + d.toGMTString();
- }
-
- document.cookie = sName + "=" + sValue + expires + "; path="+bitCookiePath;
-};
-
-WebFXTabPane.getCookie = function (sName) {
- var re = new RegExp( "(\;|^)[^;]*(" + sName + ")\=([^;]*)(;|$)" );
- var res = re.exec( document.cookie );
- return res != null ? res[3] : null;
-};
-
-WebFXTabPane.removeCookie = function ( name ) {
- setCookie( name, "", -1 );
-};
-
-
-// The constructor for tab pages. This one should not be used.
-// Use WebFXTabPage.addTabPage instead
-// el : HTMLElement The html element used to represent the tab pane
-// tabPane : WebFXTabPane The parent tab pane
-// nindex : Number The index of the page in the parent pane page array
-
-function WebFXTabPage( el, tabPane, nIndex ) {
- if ( !hasSupport() || el == null ) return;
-
- this.element = el;
- this.element.tabPage = this;
- this.index = nIndex;
-
- var cs = el.childNodes;
- for (var i = 0; i < cs.length; i++) {
- if (cs[i].nodeType == 1 && cs[i].className == "tab") {
- this.tab = cs[i];
- break;
- }
- }
-
- // insert a tag around content to support keyboard navigation
-
-
- var a = document.createElement( "A" );
- this.aElement = a;
- a.href = "#";
- a.onclick = function () { return false; };
- while ( this.tab.hasChildNodes() )
- a.appendChild( this.tab.firstChild );
- this.tab.appendChild( a );
-
-
- // hook up events, using DOM0
- var oThis = this;
- this.tab.onclick = function () { oThis.select(); };
- this.tab.onmouseover = function () { WebFXTabPage.tabOver( oThis ); };
- this.tab.onmouseout = function () { WebFXTabPage.tabOut( oThis ); };
-}
-
-WebFXTabPage.prototype.show = function () {
- var el = this.tab;
- var s = el.className + " tab-active";
- s = s.replace(/ +/g, " ");
- el.className = s;
-
- this.element.style.display = "block";
-};
-
-WebFXTabPage.prototype.hide = function () {
- var el = this.tab;
- var s = el.className;
- s = s.replace(/ tab\-active/g, "");
- el.className = s;
-
- this.element.style.display = "none";
-};
-
-WebFXTabPage.prototype.select = function () {
- this.tabPane.setSelectedIndex( this.index );
-};
-
-WebFXTabPage.prototype.dispose = function () {
- this.aElement.onclick = null;
- this.aElement = null;
- this.element.tabPage = null;
- this.tab.onclick = null;
- this.tab.onmouseover = null;
- this.tab.onmouseout = null;
- this.tab = null;
- this.tabPane = null;
- this.element = null;
-};
-
-WebFXTabPage.tabOver = function ( tabpage ) {
- var el = tabpage.tab;
- var s = el.className + " tab-hover";
- s = s.replace(/ +/g, " ");
- el.className = s;
-};
-
-WebFXTabPage.tabOut = function ( tabpage ) {
- var el = tabpage.tab;
- var s = el.className;
- s = s.replace(/ tab\-hover/g, "");
- el.className = s;
-};
-
-
-// This function initializes all uninitialized tab panes and tab pages
-function setupAllTabs() {
- if ( !hasSupport() ) return;
-
- var all = document.getElementsByTagName( "*" );
- var l = all.length;
- var tabPaneRe = /tabpane/;
- var tabPageRe = /tabpage/;
- var cn, el;
- var parentTabPane;
-
- for ( var i = 0; i < l; i++ ) {
- el = all[i]
- cn = el.className;
-
- // no className
- if ( cn == "" ) continue;
-
- // uninitiated tab pane
- if ( tabPaneRe.test( cn ) && !el.tabPane )
- new WebFXTabPane( el );
-
- // unitiated tab page wit a valid tab pane parent
- else if ( tabPageRe.test( cn ) && !el.tabPage &&
- tabPaneRe.test( el.parentNode.className ) ) {
- el.parentNode.tabPane.addTabPage( el );
- }
- }
-}
-
-function disposeAllTabs() {
- if ( !hasSupport() ) return;
-
- var all = document.getElementsByTagName( "*" );
- var l = all.length;
- var tabPaneRe = /tabpane/;
- var cn, el;
- var tabPanes = [];
-
- for ( var i = 0; i < l; i++ ) {
- el = all[i]
- cn = el.className;
-
- // no className
- if ( cn == "" ) continue;
-
- // tab pane
- if ( tabPaneRe.test( cn ) && el.tabPane )
- tabPanes[tabPanes.length] = el.tabPane;
- }
-
- for (var i = tabPanes.length - 1; i >= 0; i--) {
- tabPanes[i].dispose();
- tabPanes[i] = null;
- }
-}
-
-
-// initialization hook up
-
-// DOM2
-if ( typeof window.addEventListener != "undefined" )
- window.addEventListener( "load", setupAllTabs, false );
-
-// IE
-else if ( typeof window.attachEvent != "undefined" ) {
- window.attachEvent( "onload", setupAllTabs );
- window.attachEvent( "onunload", disposeAllTabs );
-}
-
-else {
- if ( window.onload != null ) {
- var oldOnload = window.onload;
- window.onload = function ( e ) {
- oldOnload( e );
- setupAllTabs();
- };
- }
- else
- window.onload = setupAllTabs;
-}
diff --git a/js/tabs/tabs.css b/js/tabs/tabs.css
deleted file mode 100644
index 4ec3438..0000000
--- a/js/tabs/tabs.css
+++ /dev/null
@@ -1 +0,0 @@
-/* dummy css file to prevent rendering errors */ \ No newline at end of file
diff --git a/js/tabs/tabs.js b/js/tabs/tabs.js
deleted file mode 100644
index a9fcab4..0000000
--- a/js/tabs/tabs.js
+++ /dev/null
@@ -1,404 +0,0 @@
-//==================================================
-//=
-//= xhtml degrabable tabs origionally for tsh (thestandardhack.com)
-//= by tim scarfe, developer-x.com / tim@developer-x.com
-//= started - 14:00 22/12/2001 / updated - 2:39 PM 6/21/2002
-//= time spent - 30 hours
-//=
-//= The purpose of this script is the "emphasize" the heading structure of a document if the UA supports enough standards.
-//= Headings will be turned into tabs and nested according to underlying HTML structure.
-//=
-//= Many thanks to Aaron Boodman (www.youngpup.net), who presented this challenge to me last year.
-//= This was one of the early examples of DHTML being built as an optional layer of behaviour on top of structured HTML.
-//=
-//= Copyright:
-//=
-//= You may use this for anything on anything and change it as you will. Leave this and everything alove this intact.
-//= You may remove the updates info and bugs below if you want to save space. Please show me your implementations of this,
-//= as that is what interests me the most. It should be so easy to hook this up to an XML-RPC system and goodness knows what else!
-//==================================================
-//= Non-Global Code Starts
-//==================================================
-tabSystem.makeGlobalProps=function( e ) {
- // These are the generic "Catch-All" properties for tabsystems. You may also create custom tab sets.
- tabSystem.classTrigger="tabsystem";
- tabSystem.tabPageClass="tabpage";
- tabSystem.activeTabClass="tab-active";
- tabSystem.hoverTabClass="tab-hover";
- tabSystem.normalTabClass="tab";
- tabSystem.startIndex=0;
- tabSystem.removeHeadings=true;
- tabSystem.styleSheetUri=bitRootUrl+"themes/tabs/tabs.css";
- tabSystem.tabContainerClass="tabcontainer";
- tabSystem.tabSelectedKeyword="tdefault";
- tabSystem.invertOrder=0;
- tabSystem.firstHeadingClass="firstHeading";
- tabSystem.firstHeadingKeepTrigger="keepheading";
- // GLOBAL ONLY (Custom Event Listeners)
- tabSystem.style_changeEvent="onstylechange";
- tabSystem.buildEvent="onbuild";
- tabSystem.unbuildEvent="onunbuild";
- tabSystem.tab_mouseoverEvent="onmouseover";
- tabSystem.tab_mouseoutEvent="onmouseout";
- tabSystem.tab_clickEvent="onclick";
- tabSystem.onloadEvent="onload";
- tabSystem.Dependancies=( document
- && document.getElementById
- && document.getElementsByTagName
- && document.createElement
- && document.getElementsByClassName // this is an extension component
- && window )?1:0;
- // global sig/slot event handling
- tabSystem.addEventHandler=function _glo_tabSystem_addEventHandler_( evt, fn, obj, once ) { Listener.add( ((obj)?obj:tabSystem), evt, fn, this, once ) };
- tabSystem.removeEventHandler=function _glo_tabSystem_removeEventHandler_( evt, fn, obj ) { Listener.remove( ((obj)?obj:tabSystem), evt, fn, this ) };
- tabSystem.fireEventHandler=function _glo_tabSystem_fireEventHandler_( evt, obj, args ) { if( ((obj)?obj:this)[evt] )((obj)?obj:tabSystem)[evt](args) };
-}
-tabSystem.takeOutOfMemory=function _tabSystem_takeOutOfMemory_( e ) {
- for(var x=0;x<tabSystem.instances.length;x++) {
- tabSystem.instances[x].takeOutOfMemory( );
- }
-}
-tabSystem.construct=function tabSystem_construct_( e ) { // render generic "catch-all" tabsets
- var ts=document.getElementsByClassName(
- document, tabSystem.classTrigger
- )
-
- for(var x=0;x<ts[ tabSystem.classTrigger ].length;x++) {
- var el=ts[ tabSystem.classTrigger ][ x ];
- tabSystem.instances.push( new tabSystem( el, true ) );
- }
- tabSystem.fireEventHandler( tabSystem.onloadEvent );
-}
-tabSystem.genericStyleSheet=function tabSystem_genericStyleSheet_( e ) { // "catch-all" tabset style sheets
- if(!tabSystem.styleSheet) {
- var head=document.getElementsByTagName("head").item( 0 );
- var s=document.createElement("link");
- s.rel="stylesheet";
- s.type="text/css";
- s.media="screen";
- head.appendChild( s );
- tabSystem.styleSheet=s;
- }
- tabSystem.styleSheet.href=((e)?e:tabSystem.styleSheetUri);
-}
-tabSystem.getTabsetByDivision=function _tabSystem_getTabsetByDivision_( el ) {
- for(var x=0;x<tabSystem.instances.length;x++) {
- if(tabSystem.instances[x].el==el) return( tabSystem.instances[x] )
- }
-}
-//==================================================
-//= Tab Object Constructor
-//==================================================
-tabSystem.tab=function _tabSystem_tab_( member ) {
- this.ts=member;
- this.index=null;
- this.tabPage=null;
- this.hClone=null;
- this.event={};
- this.heading=null;
- // tab level sig/slot event handling
- this.addEventHandler=function _tab_addEventHandler_( evt, fn, obj, once ) { Listener.add( ((obj)?obj:this), evt, fn, this, once ) };
- this.removeEventHandler=function _tab_removeEventHandler_( evt, fn, obj ) { Listener.remove( ((obj)?obj:this), evt, fn, this ) };
- this.fireEventHandler=function _tab_fireEventHandler_( evt, obj, args ) { if( ((obj)?obj:this)[evt] )((obj)?obj:this)[evt](args) };
- this.notReady="Like the Grolsh, we only let you drink it... when it's ready. This tab is not (ready that is)."
- this.readyStateCheck=function _tabSystem_tab_readyStateCheck_( e ) {
- return (this.hClone&&this.tabPage&&this.ts) ?1:0;
- }
- this.addTabPage=function _tabSystem_tab_addTabPage_( e ) { this.tabPage=e; }
- this.createListItem=function _tabSystem_tab_createListItem_( e ) {
- if(this.hClone) {
- this.li=document.createElement("li");
- this.li.appendChild( this.hClone );
- } //else throw new Error(this.notReady);
- }
-
- this.addHeading=function _tabSystem_tab_addHeading_( dom_node ) {
- this.hClone=dom_node;
- if(this.hClone.style.display=="none") this.hClone.style.display="block";
- }
- this.styletab=function _tabSystem_tab_styletab_( e ) {
- if( this.readyStateCheck( ) ) {
- this.hClone.style.cursor=document.all?"hand":"pointer";
- this.hClone.className=this.ts.normalTabClass+" "+this.ts.backupClassName||this.ts.className;
- } //else throw new Error( this.notReady );
- }
- this.removeEvents=function _tabSystem_tab_removeEvents_( tab ) {
- if( this.readyStateCheck( ) ) {
- this.removeEventHandler( "onmouseout", this.event._mou_, this.hClone );
- this.removeEventHandler( "onclick", this.event._click_, this.hClone );
- this.removeEventHandler( "onmouseover", this.event._mov_, this.hClone );
-
- } //else throw new Error(this.notReady);
- }
- this.addEvents=function _tabSystem_addevents_( tab ) {
- if( this.readyStateCheck( ) ) {
- this.backupClassName=this.hClone.className;
- var index=this.index, obj=this.ts;
- this.event._mov_=function ( e ) {
- obj.tabs[ index ].hClone.className+=" "+obj.hoverTabClass;
- obj.fireEventHandler( tabSystem.tab_mouseoverEvent, obj.tabs[ index ] );
- }
- this.event._mou_=function ( e ) {
- obj.tabs[ index ].hClone.className=obj.tabs[ index ].backupClassName;
- obj.fireEventHandler( tabSystem.tab_mouseoutEvent, obj.tabs[ index ] );
- }
- this.event._click_=function( e ) {
- obj.switchtab( index );
- obj.fireEventHandler( tabSystem.tab_clickEvent, obj.tabs[ index ] );
- }
- this.addEventHandler( "onmouseout", this.event._mou_, this.hClone );
- this.addEventHandler( "onclick", this.event._click_, this.hClone);
- this.addEventHandler( "onmouseover", this.event._mov_, this.hClone );
- }
- //else throw new Error(this.notReady);
- }
- this.remove=function _tabSystem_removePage_( ) {
- if( this.readyStateCheck( ) ) {
- this.tabPage.parentNode.removeChild( this.tabPage );
- this.ts.rebuild( );
- }// else throw new Error(this.notReady);
- }
-}
-//==================================================
-//= TabSystem Object Constructor
-//==================================================
-function tabSystem( el, genericCapture ) {
- if(!genericCapture)tabSystem.instances.push(this);
- this.classTrigger=tabSystem.classTrigger;
- this.tabPageClass=tabSystem.tabPageClass;
- this.activeTabClass=tabSystem.activeTabClass;
- this.tabContainerClass=tabSystem.tabContainerClass;
- this.hoverTabClass=tabSystem.hoverTabClass;
- this.normalTabClass=tabSystem.normalTabClass;
- this.startIndex=tabSystem.startIndex;
- this.genericCapture=genericCapture;
- this.removeHeadings=tabSystem.removeHeadings;
- this.styleSheetUri=tabSystem.styleSheetUri;
- this.tabSelectedKeyword=tabSystem.tabSelectedKeyword;
- this.invertOrder=tabSystem.invertOrder;
- this.firstHeadingClass=tabSystem.firstHeadingClass;
- this.firstHeadingKeepTrigger=tabSystem.firstHeadingKeepTrigger;
- this.el=el;
- this.tabs=[];
- this.id=this.el.getAttribute("id");
- this.getTabIndexByTab=function _tabSystem_getTabIndexByTab_( e ) {
- for(var x=0;x<this.tabs.length;x++)if (this.tabs[x]==e) return(x)
- }
- // instance sig/slot event handling
- this.addEventHandler=function _tabSystem_addEventHandler_( evt, fn, obj, once ) { Listener.add( ((obj)?obj:this), evt, fn, this, once ) };
- this.removeEventHandler=function _tabSystem_removeEventHandler_( evt, fn, obj ) { Listener.remove( ((obj)?obj:this), evt, fn, this ) };
- this.fireEventHandler=function _tabSystem_fireEventHandler_( evt, obj, args ) { if( ((obj)?obj:this)[evt] )((obj)?obj:this)[evt](args) };
- this.rebuild=function _tabSystem_rebuild_( e ) {
- // this basically just collapses and re-constructs the tab system
- // doing this would obviously pick up on any new tabs that have been added.
- // need to add a more efficient way of doing this at some point (hence this tier level)
- var si=this.selected.index;
- this.deconstruct( );
- this.build( );
- this.switchtab(si);
- }
- // add a tab dynamically
- this.addTab=function _tabSystem_addTab_( div, insertBefore ) {
- // please supply a division dom node with a first child of a heading element;
- // i'm not going to wipe your arse for you, if you fuck it up, it's your problem :)
- div.className=this.tabPageClass;
- this.el.insertBefore( div, (insertBefore)?insertBefore:this.tabs[0].tabPage );
- this.rebuild();
- }
- // ie6 memory
- this.takeOutOfMemory=function _tabSystem_takeOutOfMemory_( e ) { // ie6..s
- for(x in this) {try{this[x]=null}catch(ex){;;;}}
- }
- this.addStyleSheet=function _tabSystem_addStyleSheet_( stURI ) {
-
- if(!this.genericCapture) { // if called on a generic level, bubbles up to global level
- if(!this.styleSheet) {
- var head=document.getElementsByTagName("head").item( 0 );
- this.styleSheet=document.createElement("link");
- this.styleSheet.rel="stylesheet";
- this.styleSheet.type="text/css";
- this.styleSheet.media="screen";
- this.styleSheet.href=stURI;
- head.appendChild( this.styleSheet );
- }
- else {
- this.styleSheet.disabled=0;
- this.styleSheet.href=stURI;
- }
- }
- else tabSystem.genericStyleSheet( stURI );
- this.fireEventHandler( tabSystem.style_changeEvent );
- }
- this.backup=function _tabSystem_backup_( e ) {
- // this will backup any nested tab sets too, you have been warned
- this.bDocFrag=this.el.cloneNode( 1 );
- }
- this.deconstruct=function _tabSystem_restore_( e ) {
- if(this.rendered==0) throw new Error("This tab set is not built.");
- // hide the tab container
- this.tabContainer.style.display="none";
- // we have a very nasty sitation here: nested tabsets will still take style down from parents
- // because ie only recognises the "any decendants of.." css space thingy. not direct children; ">".
- // the way to get around it is to have another class name for the tab pages on the nested tabset, but
- // this wont be caught by generics. What a pain the arse!
- for(var x=0;x<this.tabs.length;x++) {
- // we make all tab page divisions visible
- this.tabs[x].tabPage.style.display="block";
- // if first headings had been hidden, we make them viewable ;)
- if( this.removeHeadings ) this.tabs[x].heading.style.display="block";
- }
- // we do misc stuff and fire events off etc
- this.rendered=0;
- this.fireEventHandler( tabSystem.unbuildEvent );
- var s=this.styleSheet||tabSystem.styleSheet;
- if(s)s.disabled=1;
- }
-
- this.build=function _tabSystem_build_( e ) { // division the structure..
- if(this.rendered==1) throw new Error("This tab set is already built.");
- // memory cleanup
- if(this.tabs.lengh>0) for(var x=0;x<this.tabs.length;x++) {
- for(x in this.tabs[x]) if(this.tabs[x]!=this) this.tabs[x]=null;
- }
- // reset tabs copllection
- this.tabs=[];
- //this.backup( );
- this.addStyleSheet( this.styleSheetUri );
- if( !this.hasBeenBuiltOnce &&
- this.el.className.search(
- new RegExp( this.firstHeadingKeepTrigger ) )!=-1) this.removeHeadings=0;
- // insert a division at the beginnning of the main div to hold tabs.
- this.tabContainer=document.createElement("div");
- this.el.insertBefore( this.tabContainer, this.el.firstChild );
- this.tabContainer.style.display="block";
- this.tabContainer.className=this.tabContainerClass;
- // create a structured list in the container for the tabs to sit in, (good for no css support).
- this.ul=document.createElement( "ul" );
- this.tabContainer.appendChild( this.ul );
- // itterate through the tab-pages in the tab division..
- var d=this.el.getElementsByTagName("div");var z=0;
-
- for(var x=0;x<d.length;x++) {
-
- if(d[x].className.search(this.tabPageClass)!=-1 && d[x].parentNode==this.el) {
- var t=new tabSystem.tab( this );
- t.index=z;
- // check to see if user has requested a default selection on tab
- if( !this.hasBeenBuiltOnce
- && d[x].className .search( this.tabSelectedKeyword ) != -1 )
- this.startIndex=z;
- // first we take out the first child of the tab page
- // we clone the node for later use.
- var h=d.item( x ).firstChild.style?d.item( x ).firstChild:d.item( x ).childNodes.item( 1 );
- if( this.removeHeadings ) {
- // now we take out the heading from the tab-page.
- h.style.display="none";
- } else h.style.display="block";
- // add heading/page to tab
- t.addTabPage( d[x] );
- t.addHeading( h.cloneNode( 1 ) );
- // style the heading
- h.className=this.firstHeadingClass +=" "+h.className;
-
- // re-style the old heading
- t.styletab( );
-
- // insert the tab into the structured list in the container.
-
- t.createListItem( );
- // by default tabs will look the wrong way around
- if( this.invertOrder && this.ul.firstChild ) this.ul.insertBefore( t.li, this.ul.firstChild );
- else this.ul.appendChild( t.li );
-
- // reference to the origional heading
- t.heading=h;
- // add events to the tab
- t.addEvents( );
- // add tab to main obj array;
- this.tabs[ z ]=t;
- z++ // this is the counter to keep track of tabs.
- }
- }
- // all tabs rendered, now switch to the default first index
- this.switchtab( this.startIndex, 1 );
- this.rendered=1;
- this.hasBeenBuiltOnce=1;
- this.fireEventHandler( tabSystem.buildEvent );
- }
- this.switchTabToId=function _tabSystem_switchtab_( id ) { // maybe test this? ;)
- for(var x=0;x<this.tabs.length;x++) {
- if( this.tabs[x].hClone.id && this.tabs[x].hClone.id==id ) {
- this.switchtab( this.tabs[x].index );
- }
- }
- }
- this.switchtab=function _tabSystem_switchtab_( e, firstTime ) { // switches on tab INDEX not tab
- if(!this.tabs[e]) throw new Error("tab does not exist..");
- var t=this.tabs[e]; // NOT hClone!
- if( this.selected ) {
- this.selected.styletab( );
- this.selected.addEvents( );
-
- this.selected.tabPage.style.display="none";
- }
- if( firstTime ) { // hide all tab-pages first time
- for(var x=0;x<this.tabs.length;x++) {
- this.tabs[x].tabPage.style.display="none";
- }
- }
- t.hClone.className +=" "+ this.activeTabClass;
- t.removeEvents( );
- t.tabPage.style.display="block";
- this.selected=null; this.selected=t;
- }
- if ( this.genericCapture ) this.build( );
- this.addEventHandler( "onunload", this.takeOutOfMemory, 0, 1 );
-}
-//==================================================
-//= Patch in a couple of things we need
-//==================================================
-if(document.all || document.getElementsByTagName) {
- document.getElementsByClassName=function (el) {
- var searchObj, nodeList;
- // initialize
- searchObj=n=new Object();
- for (var i=1; i < arguments.length; i++) {
- searchObj[arguments[i]]=new Array();
- }
- nodeList=el.all || el.getElementsByTagName("*");
- // loop over all descendant elements (c)
- for (var i=0, c=null, cn; (el.all ? c=nodeList(i) : c=nodeList.item(i)); i++) {
- if (c.nodeType == 1) {
- cn=c.className.split(" ");
- for (j=0; j < cn.length; j++) {
- // if the current cn element is defined in searchObj,
- // then it must be one we're searching for. add it.
- if (searchObj[cn[j]]) {
- searchObj[cn[j]][searchObj[cn[j]].length]=c;
- }
- }
- }
- }
- return ( searchObj );
- }
-}
-if(!Array.prototype.push) {
- Array.prototype.push= function( e ) {
- var i;
- for(i=0; j=arguments[i]; i++) this[this.length]=j;
- return ( this.length );
- }
-}
-if(!window.Error) { // some browsers dont have this, and i dont want to throw strings in ie5..
- function Error( message ) {
- this.message=message;
- this.name=new String;
- }
-}
-//==================================================
-//= Global Code Starts
-//==================================================
-tabSystem.instances=[ ];
-tabSystem.makeGlobalProps( );
-if( window && tabSystem.Dependancies && Listener) Listener.add( window, "onload", tabSystem.construct, tabSystem, 1 )
- else window.status="Standards-Check failed for tab system";
diff --git a/js/tabs/tabs_load.js b/js/tabs/tabs_load.js
deleted file mode 100644
index ba2abba..0000000
--- a/js/tabs/tabs_load.js
+++ /dev/null
@@ -1,32 +0,0 @@
-if( tabSystem && tabSystem.addEventHandler && window && window.unescape ) {
- tabSystem.prototype.switchTabByHeadingText = function ( HeadingString ) {
- // beware that if two tabs share same name, first will get favour
- String.prototype.removeHTML=function( e ) { // nested funcs are good
- return this.replace(/(<.+>)/g,"");
- }
-
- var HeadingString=window.unescape(HeadingString); // remove %x
-
- for(var x=0;x<this.tabs.length;x++) {
- // loop through all tabs
- if( this.tabs[x].hClone.innerHTML.removeHTML()==HeadingString) {
-
- // got one
- this.switchtab( x );
- return; // stick with first match
- }
- }
- }
- tabSystem.addEventHandler( "onload", function( e ) {
- if( window && window.location ) {
- function getIdentifyerFromURL( e ) { // get the #id
- var m=window.location.href.match(/#(.+)$/);
- if( m && m.length && m.length>0 ) return m[1];
- }
-
- var id=getIdentifyerFromURL();
- // switch the *first* instance to this text (you can modify this)
- if( this.instances[0] ) this.instances[0].switchTabByHeadingText( id );
- }
- }, tabSystem );
-}
diff --git a/js/x.gif b/js/x.gif
deleted file mode 100644
index c5b2954..0000000
--- a/js/x.gif
+++ /dev/null
Binary files differ