diff options
| author | Max Kremmel <xing@synapse.plus.com> | 2006-01-10 21:16:47 +0000 |
|---|---|---|
| committer | Max Kremmel <xing@synapse.plus.com> | 2006-01-10 21:16:47 +0000 |
| commit | 5b2df3c384719f5a8c3f6fa2fb33749857dcbfb7 (patch) | |
| tree | 8a351deb2f16decbac1ba6bfcbe73d895cc414b7 /js | |
| parent | e73f12657c5c5fcd05810cf0b1477bb69743b9a4 (diff) | |
| download | themes-5b2df3c384719f5a8c3f6fa2fb33749857dcbfb7.tar.gz themes-5b2df3c384719f5a8c3f6fa2fb33749857dcbfb7.tar.bz2 themes-5b2df3c384719f5a8c3f6fa2fb33749857dcbfb7.zip | |
merge recent changes into HEAD
Diffstat (limited to 'js')
| -rw-r--r-- | js/ajax.js | 23 | ||||
| -rw-r--r-- | js/bitweaver.js | 386 | ||||
| -rw-r--r-- | js/debugger.js | 30 | ||||
| -rw-r--r-- | js/fat.js | 83 | ||||
| -rw-r--r-- | js/hoverfix.js | 30 | ||||
| -rw-r--r-- | js/multifile.js | 2 | ||||
| -rw-r--r-- | js/overlib.js | 322 | ||||
| -rw-r--r-- | js/pngfix.js | 26 | ||||
| -rw-r--r-- | js/prototype.js | 1017 | ||||
| -rw-r--r-- | js/prototype_1.4.js | 1773 | ||||
| -rw-r--r-- | js/sleight.js | 61 | ||||
| -rw-r--r-- | js/tabs/listener.js | 86 | ||||
| -rw-r--r-- | js/tabs/tabpane.js | 332 | ||||
| -rw-r--r-- | js/tabs/tabs.css | 1 | ||||
| -rw-r--r-- | js/tabs/tabs.js | 404 | ||||
| -rw-r--r-- | js/tabs/tabs_load.js | 32 | ||||
| -rw-r--r-- | js/x.gif | bin | 49 -> 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>' + '<pre>' + transport.responseText.escapeHTML() + '</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(/\ /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,' ');if(!tReg.test(o3_cap))o3_cap=o3_cap.replace(/[ ]+/g,' ');}
-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(/\ /g,' ');o3_cap=o3_cap.replace(/\ /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 Binary files differdeleted file mode 100644 index c5b2954..0000000 --- a/js/x.gif +++ /dev/null |
