Index: openacs-4/packages/ajaxhelper/ajaxhelper.info =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajaxhelper/ajaxhelper.info,v diff -u -r1.5 -r1.6 --- openacs-4/packages/ajaxhelper/ajaxhelper.info 20 Aug 2006 14:39:20 -0000 1.5 +++ openacs-4/packages/ajaxhelper/ajaxhelper.info 21 Oct 2006 06:14:52 -0000 1.6 @@ -8,13 +8,13 @@ t ajax - + Hamilton Chua - Provides helper procs to generate javascript used for Ajax and generating cinematic effects. Includes Scriptaculous (1.6.2) Javascript Libraries and the Yahoo UI Libraries (0.11.2). + Provides helper procs to generate javascript used for Ajax and generating cinematic effects. Includes Scriptaculous (1.6.4) Javascript Libraries and the Yahoo UI Libraries (0.11.4). As of 0.7d, all javascript libraries have been moved to ajaxhelper/www/resources to take advantage of caching. Solution Grove 0 - + Index: openacs-4/packages/ajaxhelper/tcl/ajax-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajaxhelper/tcl/ajax-procs.tcl,v diff -u -r1.4 -r1.5 --- openacs-4/packages/ajaxhelper/tcl/ajax-procs.tcl 20 Aug 2006 14:39:20 -0000 1.4 +++ openacs-4/packages/ajaxhelper/tcl/ajax-procs.tcl 21 Oct 2006 06:14:53 -0000 1.5 @@ -37,7 +37,7 @@ @error } { - return [apm_package_url_from_id [ah::get_package_id]] + return "/resources/ajaxhelper/" } ad_proc -private ah::isnot_js_var { @@ -200,7 +200,33 @@ return $script } +ad_proc -public ah::ajaxperiodical { + -url:required + -container:required + {-frequency "5"} + {-asynchronous "true"} + {-pars ""} + {-options ""} +} { + Returns javascript that calls the prototype javascript library's ajax periodic updater object. + This object makes "polling" possible. Polling is a way by which a website can regularly update itself. + The ajax script is executed periodically in a set interval. + It has the same properties as ajax update, the only difference is that it is executed after x number of seconds. + Parameters and options are case sensitive, refer to scriptaculous documentation + http://wiki.script.aculo.us/scriptaculous/show/Ajax.PeriodicalUpdater +} { + set preoptions "asynchronous:${asynchronous},frequency:${frequency},method:'post'" + if { [exists_and_not_null pars] } { + append preoptions ",parameters:$pars" + } + if { [exists_and_not_null options] } { append preoptions ",$options" } + set script "new Ajax.PeriodicalUpdater('$container','$url',{$preoptions}); " + + return $script + +} + ad_proc -public ah::ajaxrequest { -url:required {-asynchronous "true"} @@ -669,4 +695,76 @@ } return $script +} + +ad_proc -public ah::generate_autosuggest_array { + {-array_list {}} + {-sql_query {}} +} { + Generates a javascript array for inclusion in a page header. + This array will be used as values for the autosuggestbox. + Array is a two-dimensional array with first elements the word + for autosuggesting and the second is for the description + + @author Deds Castillo (deds@i-manila.com.ph) + @creation-date 2006-06-21 + + @param array_list a list of lists which will be constructed + as the javascript array. this takes priority + over sql_query parameter. + @param sql_query sql query to pass to db_list_of_lists to generate + the array +} { + if {[llength $array_list]} { + set suggestion_list $array_list + } elseif {![string equal $sql_query {}]} { + set suggestion_list [db_list_of_lists get_array_list $sql_query] + } else { + # just do something for failover + set suggestion_list {} + } + + set suggestions_stub {} + + append suggestions_stub " +function AUTOSuggestions() { + this.auto = \[ + " + +set suggestion_formatted_list {} +foreach suggestion $suggestion_list { + lappend suggestion_formatted_list "\[\"[lindex $suggestion 0]\",\"[lindex $suggestion 1]\"\]" +} + +append suggestions_stub [join $suggestion_formatted_list ","] + +append suggestions_stub " + \]; +} +" +append suggestions_stub { + AUTOSuggestions.prototype.requestSuggestions = function (oAutoSuggestControl /*:AutoSuggestControl*/, + bTypeAhead /*:boolean*/) { + var aSuggestions = []; + var aDescriptions = []; + var sTextboxValue = oAutoSuggestControl.textbox.value.toLowerCase(); + + if (sTextboxValue.length > 0){ + + //search for matching states + for (var i=0; i < this.auto.length; i++) { + if (this.auto[i][0].toLowerCase().indexOf(sTextboxValue) == 0) { + aSuggestions.push(this.auto[i][0]); + aDescriptions.push(this.auto[i][1]); + } + } + } + + //provide suggestions to the control + oAutoSuggestControl.autosuggest(aSuggestions, aDescriptions, bTypeAhead); + }; +} + +return $suggestions_stub + } \ No newline at end of file Index: openacs-4/packages/ajaxhelper/tcl/ajax-yahoo-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajaxhelper/tcl/ajax-yahoo-procs.tcl,v diff -u -r1.2 -r1.3 --- openacs-4/packages/ajaxhelper/tcl/ajax-yahoo-procs.tcl 20 Aug 2006 14:39:20 -0000 1.2 +++ openacs-4/packages/ajaxhelper/tcl/ajax-yahoo-procs.tcl 21 Oct 2006 06:14:53 -0000 1.3 @@ -35,7 +35,7 @@ set ah_base_url [ah::get_url] set script "" set js_file_list [split $js ","] - + foreach x $js_file_list { switch $x { "animation" { @@ -70,6 +70,7 @@ ad_proc -public ah::yui::js_sources { {-source "default"} + {-min:boolean} } { Generates the < script > syntax needed on the head @@ -100,34 +101,43 @@ set ah_base_url [ah::get_url] set script "" set js_file_list [split $source ","] + if { $min_p } { + set min "-min" + } else { + set min "" + } + foreach x $js_file_list { switch $x { "animation" { - append script " \n" + append script " \n" } "event" { - append script " \n" + append script " \n" } "treeview" { - append script " \n" + append script " \n" } "calendar" { - append script " \n" + append script " \n" } "dragdrop" { - append script " \n" + append script " \n" } "slider" { - append script " \n" + append script " \n" } "container" { - append script " \n" - append script " \n" + append script " \n" + append script " \n" } + "menu" { + append script " \n" + } default { - append script " \n" - append script " \n" + append script " \n" + append script " \n" } } } @@ -138,15 +148,22 @@ ad_proc -public ah::yui::addlistener { -element:required -event:required + {-scope "''"} {-callback ""} {-element_is_var:boolean} + {-override:boolean} } { Creates javascript for Yahoo's Event Listener. } { if { !$element_is_var_p } { set element [ah::isnot_js_var $element] } - return "YAHOO.util.Event.addListener($element,\"$event\",${callback});\n" + if { $override_p } { + set override "true" + } else { + set override "false" + } + return "YAHOO.util.Event.addListener($element,\"$event\",${callback},${scope},${override});\n" } ad_proc -public ah::yui::tooltip { Index: openacs-4/packages/ajaxhelper/www/doc/index.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajaxhelper/www/doc/index.html,v diff -u -r1.3 -r1.4 --- openacs-4/packages/ajaxhelper/www/doc/index.html 20 Apr 2006 12:31:27 -0000 1.3 +++ openacs-4/packages/ajaxhelper/www/doc/index.html 21 Oct 2006 06:14:53 -0000 1.4 @@ -7,18 +7,20 @@

Ajax Helper

Hamilton G. Chua (ham@solutiongrove.com)
-January 2006
-v0.1d
+October 2006
+v0.7d

Components :
-Prototype v1.4.0 (http://prototype.conio.net/)
-Scriptaculous v1.5.1 (http://script.aculo.us/)
+Prototype v1.5.0_rc1 (http://prototype.conio.net/)
+Scriptaculous v1.6.4 (http://script.aculo.us/)
Rico v1.1.0 (http://www.openrico.org)
Overlibmws (http://www.macridesweb.com/oltest/)
Extracted Rounder Functions from Rico
(http://encytemedia.com/blog/articles/2005/12/01/rico-rounded-corners-without-all-of-rico)

+Yahoo User Interface Library v0.11.4(http://developer.yahoo.com) +
Introduction :

The Ajax Helper package provides TCL API to generate the Fisheye: Tag 1.2 refers to a dead (removed) revision in file `openacs-4/packages/ajaxhelper/www/overlibmws/BabelFish.js'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.2 refers to a dead (removed) revision in file `openacs-4/packages/ajaxhelper/www/overlibmws/calendarmws.js'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.2 refers to a dead (removed) revision in file `openacs-4/packages/ajaxhelper/www/overlibmws/calendarmws_lang.js'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.3 refers to a dead (removed) revision in file `openacs-4/packages/ajaxhelper/www/overlibmws/iframecontentmws.js'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.2 refers to a dead (removed) revision in file `openacs-4/packages/ajaxhelper/www/overlibmws/license.html'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.2 refers to a dead (removed) revision in file `openacs-4/packages/ajaxhelper/www/overlibmws/objectcontentmws.js'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.2 refers to a dead (removed) revision in file `openacs-4/packages/ajaxhelper/www/overlibmws/overlibCompat.js'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.2 refers to a dead (removed) revision in file `openacs-4/packages/ajaxhelper/www/overlibmws/overlibConfig.txt'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.2 refers to a dead (removed) revision in file `openacs-4/packages/ajaxhelper/www/overlibmws/overlibmws.js'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.2 refers to a dead (removed) revision in file `openacs-4/packages/ajaxhelper/www/overlibmws/overlibmws_bubble.js'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.2 refers to a dead (removed) revision in file `openacs-4/packages/ajaxhelper/www/overlibmws/overlibmws_crossframe.js'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.2 refers to a dead (removed) revision in file `openacs-4/packages/ajaxhelper/www/overlibmws/overlibmws_debug.js'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.2 refers to a dead (removed) revision in file `openacs-4/packages/ajaxhelper/www/overlibmws/overlibmws_draggable.js'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.2 refers to a dead (removed) revision in file `openacs-4/packages/ajaxhelper/www/overlibmws/overlibmws_exclusive.js'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.2 refers to a dead (removed) revision in file `openacs-4/packages/ajaxhelper/www/overlibmws/overlibmws_filter.js'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.2 refers to a dead (removed) revision in file `openacs-4/packages/ajaxhelper/www/overlibmws/overlibmws_function.js'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.2 refers to a dead (removed) revision in file `openacs-4/packages/ajaxhelper/www/overlibmws/overlibmws_hide.js'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.2 refers to a dead (removed) revision in file `openacs-4/packages/ajaxhelper/www/overlibmws/overlibmws_iframe.js'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.2 refers to a dead (removed) revision in file `openacs-4/packages/ajaxhelper/www/overlibmws/overlibmws_overtwo.js'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.2 refers to a dead (removed) revision in file `openacs-4/packages/ajaxhelper/www/overlibmws/overlibmws_print.js'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.2 refers to a dead (removed) revision in file `openacs-4/packages/ajaxhelper/www/overlibmws/overlibmws_regCore.js'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.2 refers to a dead (removed) revision in file `openacs-4/packages/ajaxhelper/www/overlibmws/overlibmws_scroll.js'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.2 refers to a dead (removed) revision in file `openacs-4/packages/ajaxhelper/www/overlibmws/overlibmws_shadow.js'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.2 refers to a dead (removed) revision in file `openacs-4/packages/ajaxhelper/www/overlibmws/sprintf.js'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.4 refers to a dead (removed) revision in file `openacs-4/packages/ajaxhelper/www/prototype/prototype.js'. Fisheye: No comparison available. Pass `N' to diff? Index: openacs-4/packages/ajaxhelper/www/resources/autosuggest/autosuggest.css =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajaxhelper/www/resources/autosuggest/autosuggest.css,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajaxhelper/www/resources/autosuggest/autosuggest.css 21 Oct 2006 06:14:54 -0000 1.1 @@ -0,0 +1,40 @@ +div.suggestions { + -moz-box-sizing: border-box; + box-sizing: border-box; + border: 1px solid black; + position: absolute; + background-color: white; +} + +div.suggestions div { + cursor: default; + padding: 0px 3px; + width: 350px; + overflow: hidden; +} + +div.suggestions div span.sname { + float: left; + font-size: 13px; + margin-left: 4px; + border: 0px; +} + +div.suggestions div span.sdesc { + float: right; + font-size: 10px; + margin-left: 3px; + padding-top: 2px; + color: #008000; + border: 0px; +} + +div.suggestions div.current { + background-color: #3366cc; + color: white; +} + +div.suggestions div.current span { + background-color: #3366cc; + color: white; +} \ No newline at end of file Index: openacs-4/packages/ajaxhelper/www/resources/autosuggest/autosuggest.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajaxhelper/www/resources/autosuggest/autosuggest.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajaxhelper/www/resources/autosuggest/autosuggest.js 21 Oct 2006 06:14:54 -0000 1.1 @@ -0,0 +1,353 @@ +function loadAutoSuggest() { + var oTextbox = new AutoSuggestControl(document.getElementById("autosuggest_box"), new AUTOSuggestions()); +} + + +/** + * An autosuggest textbox control. + * @class + * @scope public + */ +function AutoSuggestControl(oTextbox /*:HTMLInputElement*/, + oProvider /*:SuggestionProvider*/) { + + /** + * The currently selected suggestions. + * @scope private + */ + this.cur /*:int*/ = -1; + + /** + * The dropdown list layer. + * @scope private + */ + this.layer = null; + + /** + * Suggestion provider for the autosuggest feature. + * @scope private. + */ + this.provider /*:SuggestionProvider*/ = oProvider; + + /** + * The textbox to capture. + * @scope private + */ + this.textbox /*:HTMLInputElement*/ = oTextbox; + + //initialize the control + this.init(); + +} + +/** + * Autosuggests one or more suggestions for what the user has typed. + * If no suggestions are passed in, then no autosuggest occurs. + * @scope private + * @param aSuggestions An array of suggestion strings. + * @param bTypeAhead If the control should provide a type ahead suggestion. + */ +AutoSuggestControl.prototype.autosuggest = function (aSuggestions /*:Array*/, + aDescriptions /*:Array*/, + bTypeAhead /*:boolean*/) { + //make sure there's at least one suggestion + if (aSuggestions.length > 0) { + if (bTypeAhead) { + this.typeAhead(aSuggestions[0]); + } + this.showSuggestions(aSuggestions, aDescriptions); + } else { + this.hideSuggestions(); + } +}; + +/** + * Creates the dropdown layer to display multiple suggestions. + * @scope private + */ +AutoSuggestControl.prototype.createDropDown = function () { + + var oThis = this; + + //create the layer and assign styles + this.layer = document.createElement("div"); + this.layer.className = "suggestions"; + this.layer.style.visibility = "hidden"; +// this.layer.style.width = this.textbox.offsetWidth; + + //when the user clicks on the a suggestion, get the text (innerHTML) + //and place it into a textbox + this.layer.onmousedown = + this.layer.onmouseup = + this.layer.onmouseover = function (oEvent) { + oEvent = oEvent || window.event; + oTarget = oEvent.target || oEvent.srcElement; + + if (oEvent.type == "mousedown") { + first = oTarget.firstChild; + oThis.textbox.value = first.firstChild.nodeValue; + oThis.hideSuggestions(); + } else if (oEvent.type == "mouseover") { + oThis.highlightSuggestion(oTarget); + } else { + oThis.textbox.focus(); + } + }; + + document.body.appendChild(this.layer); +}; + +/** + * Gets the left coordinate of the textbox. + * @scope private + * @return The left coordinate of the textbox in pixels. + */ +AutoSuggestControl.prototype.getLeft = function () /*:int*/ { + + var oNode = this.textbox; + var iLeft = 0; + + while(oNode.tagName != "BODY" && oNode.tagName != "HTML") { + iLeft += oNode.offsetLeft; + oNode = oNode.offsetParent; + } + + return iLeft; +}; + +/** + * Gets the top coordinate of the textbox. + * @scope private + * @return The top coordinate of the textbox in pixels. + */ +AutoSuggestControl.prototype.getTop = function () /*:int*/ { + + var oNode = this.textbox; + var iTop = 0; + + while(oNode.tagName != "BODY" && oNode.tagName != "HTML") { + iTop += oNode.offsetTop; + oNode = oNode.offsetParent; + } + + return iTop; +}; + +/** + * Handles three keydown events. + * @scope private + * @param oEvent The event object for the keydown event. + */ +AutoSuggestControl.prototype.handleKeyDown = function (oEvent /*:Event*/) { + + switch(oEvent.keyCode) { + case 38: //up arrow + this.previousSuggestion(); + break; + case 40: //down arrow + this.nextSuggestion(); + break; + case 13: //enter + this.hideSuggestions(); + break; + } + +}; + +/** + * Handles keyup events. + * @scope private + * @param oEvent The event object for the keyup event. + */ +AutoSuggestControl.prototype.handleKeyUp = function (oEvent /*:Event*/) { + + var iKeyCode = oEvent.keyCode; + + //for backspace (8) and delete (46), shows suggestions without typeahead + if (iKeyCode == 8 || iKeyCode == 46) { + this.provider.requestSuggestions(this, false); + + //make sure not to interfere with non-character keys + } else if (iKeyCode < 32 || (iKeyCode >= 33 && iKeyCode < 46) || (iKeyCode >= 112 && iKeyCode <= 123)) { + //ignore + } else { + //request suggestions from the suggestion provider with typeahead + this.provider.requestSuggestions(this, true); + } +}; + +/** + * Hides the suggestion dropdown. + * @scope private + */ +AutoSuggestControl.prototype.hideSuggestions = function () { + this.layer.style.visibility = "hidden"; +}; + +/** + * Highlights the given node in the suggestions dropdown. + * @scope private + * @param oSuggestionNode The node representing a suggestion in the dropdown. + */ +AutoSuggestControl.prototype.highlightSuggestion = function (oSuggestionNode) { + + for (var i=0; i < this.layer.childNodes.length; i++) { + var oNode = this.layer.childNodes[i]; + if (oNode == oSuggestionNode) { + oNode.className = "current" + } else if (oNode.className == "current") { + oNode.className = ""; + } + } +}; + +/** + * Initializes the textbox with event handlers for + * auto suggest functionality. + * @scope private + */ +AutoSuggestControl.prototype.init = function () { + + //save a reference to this object + var oThis = this; + + //assign the onkeyup event handler + this.textbox.onkeyup = function (oEvent) { + + //check for the proper location of the event object + if (!oEvent) { + oEvent = window.event; + } + + //call the handleKeyUp() method with the event object + oThis.handleKeyUp(oEvent); + }; + + //assign onkeydown event handler + this.textbox.onkeydown = function (oEvent) { + + //check for the proper location of the event object + if (!oEvent) { + oEvent = window.event; + } + + //call the handleKeyDown() method with the event object + oThis.handleKeyDown(oEvent); + }; + + //assign onblur event handler (hides suggestions) + this.textbox.onblur = function () { + oThis.hideSuggestions(); + }; + + //create the suggestions dropdown + this.createDropDown(); +}; + +/** + * Highlights the next suggestion in the dropdown and + * places the suggestion into the textbox. + * @scope private + */ +AutoSuggestControl.prototype.nextSuggestion = function () { + var cSuggestionNodes = this.layer.childNodes; + + if (cSuggestionNodes.length > 0 && this.cur < cSuggestionNodes.length-1) { + var oNode = cSuggestionNodes[++this.cur]; + this.highlightSuggestion(oNode); + first = oNode.firstChild; + this.textbox.value = first.firstChild.nodeValue; + } +}; + +/** + * Highlights the previous suggestion in the dropdown and + * places the suggestion into the textbox. + * @scope private + */ +AutoSuggestControl.prototype.previousSuggestion = function () { + var cSuggestionNodes = this.layer.childNodes; + + if (cSuggestionNodes.length > 0 && this.cur > 0) { + var oNode = cSuggestionNodes[--this.cur]; + this.highlightSuggestion(oNode); + first = oNode.firstChild; + this.textbox.value = first.firstChild.nodeValue; + } +}; + +/** + * Selects a range of text in the textbox. + * @scope public + * @param iStart The start index (base 0) of the selection. + * @param iLength The number of characters to select. + */ +AutoSuggestControl.prototype.selectRange = function (iStart /*:int*/, iLength /*:int*/) { + + //use text ranges for Internet Explorer + if (this.textbox.createTextRange) { + var oRange = this.textbox.createTextRange(); + oRange.moveStart("character", iStart); + oRange.moveEnd("character", iLength - this.textbox.value.length); + oRange.select(); + + //use setSelectionRange() for Mozilla + } else if (this.textbox.setSelectionRange) { + this.textbox.setSelectionRange(iStart, iLength); + } + + //set focus back to the textbox + this.textbox.focus(); +}; + +/** + * Builds the suggestion layer contents, moves it into position, + * and displays the layer. + * @scope private + * @param aSuggestions An array of suggestions for the control. + */ +AutoSuggestControl.prototype.showSuggestions = function (aSuggestions /*:Array*/, aDescriptions /*:Array*/) { + + var oDiv = null; + this.layer.innerHTML = ""; //clear contents of the layer + + for (var i=0; i < aSuggestions.length; i++) { + oDiv = document.createElement("div"); + var sname = document.createElement("span"); + sname.className = "sname"; + sname.appendChild(document.createTextNode(aSuggestions[i])); + + var sdesc = document.createElement("span"); + sdesc.className = "sdesc"; + sdesc.appendChild(document.createTextNode(aDescriptions[i])); + + oDiv.appendChild(sname); + oDiv.appendChild(sdesc); + + this.layer.appendChild(oDiv); + } + + this.layer.style.left = this.getLeft() + "px"; +//this.layer.style.left = "100px"; +//alert(this.layer.style.left); + this.layer.style.top = (this.getTop()+this.textbox.offsetHeight) + "px"; +//this.layer.style.top = "100px"; +//alert(this.layer.style.top); + this.layer.style.visibility = "visible"; +}; + +/** + * Inserts a suggestion into the textbox, highlighting the + * suggested part of the text. + * @scope private + * @param sSuggestion The suggestion for the textbox. + */ +AutoSuggestControl.prototype.typeAhead = function (sSuggestion /*:String*/) { + + //check for support of typeahead functionality + if (this.textbox.createTextRange || this.textbox.setSelectionRange){ + var iLen = this.textbox.value.length; + this.textbox.value = sSuggestion; + this.selectRange(iLen, sSuggestion.length); + } +}; Index: openacs-4/packages/ajaxhelper/www/resources/images/indicator.gif =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajaxhelper/www/resources/images/indicator.gif,v diff -u Binary files differ Index: openacs-4/packages/ajaxhelper/www/resources/images/indicator_arrows.gif =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajaxhelper/www/resources/images/indicator_arrows.gif,v diff -u Binary files differ Index: openacs-4/packages/ajaxhelper/www/resources/images/indicator_big.gif =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajaxhelper/www/resources/images/indicator_big.gif,v diff -u Binary files differ Index: openacs-4/packages/ajaxhelper/www/resources/images/indicator_medium.gif =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajaxhelper/www/resources/images/indicator_medium.gif,v diff -u Binary files differ Index: openacs-4/packages/ajaxhelper/www/resources/overlibmws/BabelFish.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajaxhelper/www/resources/overlibmws/BabelFish.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajaxhelper/www/resources/overlibmws/BabelFish.js 21 Oct 2006 06:14:54 -0000 1.1 @@ -0,0 +1,58 @@ +/* + BabelFish.js - Script for using the AltaVista BabelFish translation service. + Adapted by Foteos Macrides for use with the overlibmws code set. + See http://www.macridesweb.com/oltest/BabelFish.html for a demonstration. + Initial: October 26, 2003 - Last Revised: April 17, 2004 +*/ +OLtrans_en = new Image(); +OLtrans_en.src = "http://babelfish.altavista.com/static/i/af/trans_en.gif" +OLtrans_en_off = new Image(); +OLtrans_en_off.src = "http://babelfish.altavista.com/static/i/af/trans_en_off.gif" + +var OLbfURL = location.href; + +if (location.href.indexOf("babelfish.altavista.com") == -1) { +var BabelFish = +'
' ++'

Note: This page can be viewed in a different language by ' ++'selecting the corresponding flag below.

' ++'

' ++'' ++'' ++'' ++'' ++'' ++'' ++'' ++'' ++'' ++'' ++'' ++'' ++'

' ++'

The translations are done via the AltaVista Babel Fish service.

'; +}else{ +var BabelFish = +'

' ++'

'; +} Index: openacs-4/packages/ajaxhelper/www/resources/overlibmws/arrow.gif =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajaxhelper/www/resources/overlibmws/arrow.gif,v diff -u Binary files differ Index: openacs-4/packages/ajaxhelper/www/resources/overlibmws/calendarmws.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajaxhelper/www/resources/overlibmws/calendarmws.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajaxhelper/www/resources/overlibmws/calendarmws.js 21 Oct 2006 06:14:54 -0000 1.1 @@ -0,0 +1,575 @@ +/* + calendermws.js - Script for generating calender popups and selecting dates for form + submissions. See http://www.macridesweb.com/oltest/calendarmws.html for a demonstration. + Initial: November 9, 2003 - Last Revised: July 9, 2005 + +**** + Original: Kedar R. Bhave (softricks@hotmail.com) + Web Site: http://www.softricks.com + (uses window popups) + + Modifications and customizations to work with the overLIB v3.50 + Author: James B. O'Connor (joconnor@nordenterprises.com) + Web Site: http://www.nordenterprises.com + Developed for use with http://home-owners-assoc.com + Note: while overlib works fine with Netscape 4, this function does not work very + well, since portions of the "over" div end up under other fields on the form and + cannot be seen. If you want to use this with NS4, you'll need to change the + positioning in the overlib() call to make sure the "over" div gets positioned + away from all other form fields + The O'Connor script and many more are available free online at: + The JavaScript Source!! http://javascript.internet.com + + Further modifications made by Foteos Macrides (http://www.macridesweb.com/oltest/) + and Bill McCormick (wpmccormick@freeshell.org) for overlibmws +*/ + +var ggPosX = -1; +var ggPosY = -1; +var ggOnChange = null; + +var ggWinContent = ""; + +var weekend = [0,6]; +var weekendColor = "#e0e0e0"; +var fontface = "Verdana"; +var fontsize = 8; // in "pt" units; used with "font-size" style element + +var gNow = new Date(); + +Calendar.Months = ["January", "February", "March", "April", "May", "June", +"July", "August", "September", "October", "November", "December"]; + +// Non-Leap year Month days.. +Calendar.DOMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; +// Leap year Month days.. +Calendar.lDOMonth = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; + +function Calendar(p_item, p_month, p_year, p_format) { + if ((p_month == null) && (p_year == null)) return; + + if (p_month == null) { + this.gMonthName = null; + this.gMonth = null; + this.gYearly = true; + } else { + this.gMonthName = Calendar.get_month(p_month); + this.gMonth = new Number(p_month); + this.gYearly = false; + } + + this.gYear = p_year; + this.gFormat = p_format; + this.gBGColor = "white"; + this.gFGColor = "black"; + this.gTextColor = "black"; + this.gHeaderColor = "black"; + this.gReturnItem = p_item; +} + +Calendar.get_month = Calendar_get_month; +Calendar.get_daysofmonth = Calendar_get_daysofmonth; +Calendar.calc_month_year = Calendar_calc_month_year; + +function Calendar_get_month(monthNo) { + return Calendar.Months[monthNo]; +} + +function Calendar_get_daysofmonth(monthNo, p_year) { + /* + Check for leap year .. + 1.Years evenly divisible by four are normally leap years, except for... + 2.Years also evenly divisible by 100 are not leap years, except for... + 3.Years also evenly divisible by 400 are leap years. + */ + if ((p_year % 4) == 0) { + if ((p_year % 100) == 0 && (p_year % 400) != 0) + return Calendar.DOMonth[monthNo]; + + return Calendar.lDOMonth[monthNo]; + } else + return Calendar.DOMonth[monthNo]; +} + +function Calendar_calc_month_year(p_Month, p_Year, incr) { + /* + Will return an 1-D array with 1st element being the calculated month + and second being the calculated year + after applying the month increment/decrement as specified by 'incr' parameter. + 'incr' will normally have 1/-1 to navigate thru the months. + */ + var ret_arr = new Array(); + + if (incr == -1) { + // B A C K W A R D + if (p_Month == 0) { + ret_arr[0] = 11; + ret_arr[1] = parseInt(p_Year) - 1; + } else { + ret_arr[0] = parseInt(p_Month) - 1; + ret_arr[1] = parseInt(p_Year); + } + } else if (incr == 1) { + // F O R W A R D + if (p_Month == 11) { + ret_arr[0] = 0; + ret_arr[1] = parseInt(p_Year) + 1; + } else { + ret_arr[0] = parseInt(p_Month) + 1; + ret_arr[1] = parseInt(p_Year); + } + } + return ret_arr; +} + +function Calendar_calc_month_year(p_Month, p_Year, incr) { + /* + Will return an 1-D array with 1st element being the calculated month + and second being the calculated year + after applying the month increment/decrement as specified by 'incr' parameter. + 'incr' will normally have 1/-1 to navigate thru the months. + */ + var ret_arr = new Array(); + + if (incr == -1) { + // B A C K W A R D + if (p_Month == 0) { + ret_arr[0] = 11; + ret_arr[1] = parseInt(p_Year) - 1; + } else { + ret_arr[0] = parseInt(p_Month) - 1; + ret_arr[1] = parseInt(p_Year); + } + } else if (incr == 1) { + // F O R W A R D + if (p_Month == 11) { + ret_arr[0] = 0; + ret_arr[1] = parseInt(p_Year) + 1; + } else { + ret_arr[0] = parseInt(p_Month) + 1; + ret_arr[1] = parseInt(p_Year); + } + } + return ret_arr; +} + +// This is for compatibility with Navigator 3, we have to create and discard one object +// before the prototype object exists. +new Calendar(); + +Calendar.prototype.getMonthlyCalendarCode = function() { + var vCode = ""; + var vHeader_Code = ""; + var vData_Code = ""; + + // Begin Table Drawing code here.. + vCode += ('
"); + + vHeader_Code = this.cal_header(); + vData_Code = this.cal_data(); + vCode += (vHeader_Code + vData_Code); + + vCode += '
'; + + return vCode; +} + +Calendar.prototype.show = function() { + var vCode = ""; + + // build content into global var ggWinContent + ggWinContent += ('
'); + ggWinContent += (this.gMonthName + ' ' + this.gYear); + ggWinContent += '
'; + + // Show navigation buttons + var prevMMYYYY = Calendar.calc_month_year(this.gMonth, this.gYear, -1); + var prevMM = prevMMYYYY[0]; + var prevYYYY = prevMMYYYY[1]; + + var nextMMYYYY = Calendar.calc_month_year(this.gMonth, this.gYear, 1); + var nextMM = nextMMYYYY[0]; + var nextYYYY = nextMMYYYY[1]; + + ggWinContent += ('
'); + ggWinContent += ('[<<Year]'); + ggWinContent += ('[<Mon]'); + ggWinContent += '       '; + ggWinContent += ('[Mon>]'); + ggWinContent += ('[Year>>]
' + +' 
'); + + // Get the complete calendar code for the month, and add it to the content var + vCode = this.getMonthlyCalendarCode(); + ggWinContent += vCode; +} + +Calendar.prototype.showY = function() { + var vCode = ""; + var i; + + ggWinContent += ('
' + this.gYear +'
'); + + // Show navigation buttons + var prevYYYY = parseInt(this.gYear) - 1; + var nextYYYY = parseInt(this.gYear) + 1; + + ggWinContent += ('
'); + ggWinContent += ('[<<Year]'); + ggWinContent += '       '; + ggWinContent += ('[Year>>]
'); + + // Get the complete calendar code for each month. + // start a table and first row in the table + ggWinContent += (''); + for (i=0; i<12; i++) { + // start the table cell + ggWinContent += ''; + if (i == 3 || i == 7) ggWinContent += ''; + } + ggWinContent += '
'; + this.gMonth = i; + this.gMonthName = Calendar.get_month(this.gMonth); + vCode = this.getMonthlyCalendarCode(); + ggWinContent += (this.gMonthName + '/' + this.gYear + '
 
'); + ggWinContent += vCode; + ggWinContent += '
'; +} + +Calendar.prototype.cal_header = function() { + var vCode = ''; + vCode += ('Sun'); + vCode += ('Mon'); + vCode += ('Tue'); + vCode += ('Wed'); + vCode += ('Thu'); + vCode += ('Fri'); + vCode += ('Sat'); + vCode += ''; + return vCode; +} + +Calendar.prototype.cal_data = function() { + var vDate = new Date(); + vDate.setDate(1); + vDate.setMonth(this.gMonth); + vDate.setFullYear(this.gYear); + + var vFirstDay=vDate.getDay(); + var vDay=1; + var vLastDay=Calendar.get_daysofmonth(this.gMonth, this.gYear); + var vOnLastDay=0; + var vCode = ''; + var i,j,k,m; + var orig = eval("document." + this.gReturnItem + ".value").toString(); + /* + Get day for the 1st of the requested month/year.. + Place as many blank cells before the 1st day of the month as necessary. + */ + for (i=0; i '); + } + + // Write rest of the 1st week + for (j=vFirstDay; j<7; j++) { vCode += + ('' + this.format_day(vDay) + ''); + vDay += 1; + } + vCode += ''; + + // Write the rest of the weeks + for (k=2; k<7; k++) { + vCode += ''; + for (j=0; j<7; j++) { vCode += + ('' + this.format_day(vDay) + ''); + vDay += 1; + if (vDay > vLastDay) { + vOnLastDay = 1; + break; + } + } + if (j == 6) vCode += ''; + if (vOnLastDay == 1) break; + } + + // Fill up the rest of last week with proper blanks, so that we get proper square blocks + for (m=1; m<(7-j); m++) { vCode += + (' '); + } + return vCode; +} + +Calendar.prototype.format_day = function(vday) { + var vNowDay = gNow.getDate(); + var vNowMonth = gNow.getMonth(); + var vNowYear = gNow.getFullYear(); + + if (vday == vNowDay && this.gMonth == vNowMonth && this.gYear == vNowYear) + return ('' + vday + ''); + else + return (vday); +} + +Calendar.prototype.write_weekend_string = function(vday) { + var i; + + // Return special formatting for the weekend day. + for (i=0; i' + p_format, + FGCOLOR,'#ffffcc', TEXTSIZE,2, STICKY, NOCLOSE, OFFSETX,-10, OFFSETY,-10, + WIDTH,110, BASE,2); + + Build(p_item, p_month, p_year, p_format); +} + +function show_yearly_calendar() { + var p_item // Return Item. + var p_year // 4-digit year + var p_format // Date format (YYYY-MM-DD, DD/MM/YYYY, ...) + + p_item = arguments[0]; + if (arguments[1] == "" || arguments[1] == null) + p_year = new String(gNow.getFullYear().toString()); + else + p_year = arguments[1]; + if (arguments[2] == "" || arguments[2] == null) + p_format = "YYYY-MM-DD"; + else + p_format = arguments[2]; + + if (OLns4) return overlib('Sorry, your browser does not support this feature. ' + +'Manually enter
' + p_format, + FGCOLOR,'#ffffcc', TEXTSIZE,2, STICKY, NOCLOSE, OFFSETX,-10, OFFSETY,-10, + WIDTH,110, BASE,2); + + Build(p_item, null, p_year, p_format); +} Index: openacs-4/packages/ajaxhelper/www/resources/overlibmws/calendarmws_lang.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajaxhelper/www/resources/overlibmws/calendarmws_lang.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajaxhelper/www/resources/overlibmws/calendarmws_lang.js 21 Oct 2006 06:14:54 -0000 1.1 @@ -0,0 +1,664 @@ +/* + calendermws_lang.js - Script with multi-language support for generating calender popups + and selecting dates for form submissions. + See http://www.macridesweb.com/oltest/calendarmws_lang.html for a demonstration. + Initial (calendarmws.js): November 9, 2003 - Last Revised: July 9, 2005 + +**** + Original: Kedar R. Bhave (softricks@hotmail.com) + Web Site: http://www.softricks.com + (uses window popups) + + Modifications and customizations to work with the overLIB v3.50 + Author: James B. O'Connor (joconnor@nordenterprises.com) + Web Site: http://www.nordenterprises.com + Developed for use with http://home-owners-assoc.com + Note: while overlib works fine with Netscape 4, this function does not work very + well, since portions of the "over" div end up under other fields on the form and + cannot be seen. If you want to use this with NS4, you'll need to change the + positioning in the overlib() call to make sure the "over" div gets positioned + away from all other form fields + The O'Connor script and many more are available free online at: + The JavaScript Source!! http://javascript.internet.com + + Further modifications made by Foteos Macrides (http://www.macridesweb.com/oltest/), + Bodo Hantschmann (http://www.hantschmann.org) - multi-language support, and + Bill McCormick (wpmccormick@freeshell.org) - draggable support, for overlibmws. + + Requires sprintf.js from the overlibmws distribution. +*/ + +var ggPosX = -1; +var ggPosY = -1; +var ggOnChange = null; +var ggLang = 'eng'; + +var ggWinContent = ""; + +var weekend = [0,6]; +var weekendColor = "#e0e0e0"; +var fontface = "Verdana"; +var fontsize = 8; // in "pt" units; used with "font-size" style element + +var calmsg = new Array(); +var datFormat = new Array(); +var CalendarMonths = new Array(); +var CalendarWeekdays = new Array(); + +/* ----------------------------------------------------------------------------------------- + Languages (set via the value of the ggLang global) + + 'eng' - English + 'ger' - German + 'esp' - Spanish + 'dut' - Dutch / Netherlands + + for more languages: + greetings from babelfish ;-) (Hint: Use always english as base, that gives the best + results. + ----------------------------------------------------------------------------------------- */ + +/* ------------------------------- + English + ------------------------------- */ +calmsg["eng"] = new Array; +calmsg["eng"][0] = "One year backward"; +calmsg["eng"][1] = "One year forward"; +calmsg["eng"][2] = "One month backward"; +calmsg["eng"][3] = "One month forward"; +calmsg["eng"][4] = "Set date"; +calmsg["eng"][5] = "Select date"; +calmsg["eng"][6] = "Your Browser does NOT support this feature. Update asap, please!
"; +calmsg["eng"][7] = "Year"; +calmsg["eng"][8] = "Click to close"; +datFormat["eng"] = "MM/DD/YYYY"; +CalendarMonths["eng"] = new Array("January", "February", "March", "April", "May", "June", + "July", "August", "September", "October", "November", "December"); +CalendarWeekdays["eng"] = new Array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"); + +/* ------------------------------- + German + ------------------------------- */ +calmsg["ger"] = new Array; +calmsg["ger"][0] = "Ein Jahr zurück"; +calmsg["ger"][1] = "Ein Jahr vorwärts"; +calmsg["ger"][2] = "Einen Monat zurück"; +calmsg["ger"][3] = "Einen Monat vorwärts"; +calmsg["ger"][4] = "Datum setzen"; +calmsg["ger"][5] = "Datum wählen"; +calmsg["ger"][6] = "Leider unterstützt Ihr Browser dieses Feature nicht. " + +"Bitte updaten!
"; +calmsg["ger"][7] = "Jahr"; +calmsg["ger"][8] = "Zum schließen klicken"; +datFormat["ger"] = "DD.MM.YYYY"; +CalendarMonths["ger"] = new Array("Januar", "Februar", "März", "April", "Mai", "Juni", + "Juli", "August", "September", "Oktober", "November", "Dezember"); +CalendarWeekdays["ger"] = new Array("So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"); + +/* ------------------------------- + Spanish + ------------------------------- */ +calmsg["esp"] = new Array; +calmsg["esp"][0] = "Un a�o atras"; +calmsg["esp"][1] = "Un a�o adelante"; +calmsg["esp"][2] = "Un mes atras"; +calmsg["esp"][3] = "Un mes adelante"; +calmsg["esp"][4] = "Fije la fecha"; +calmsg["esp"][5] = "Seleccione la fecha"; +calmsg["esp"][6] = "Su browser no apoya esta caracter�stica. �Actualizaci�n cuanto antes, " + +"por favor!
"; +calmsg["esp"][7] = "A�o"; +calmsg["esp"][8] = "Tecleo a cerrarse"; +datFormat["esp"] = "DD.MM.YYYY"; +CalendarMonths["esp"] = new Array("Enero", "Febrero", "Marcha", "Abril", "Puede", "Junio", + "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"); +CalendarWeekdays["esp"] = new Array("Do", "Lu", "Ma", "Mi", "Ju", "Vi", "Sa"); + +/* ------------------------------- + Dutch + ------------------------------- */ +calmsg["dut"] = new Array; +calmsg["dut"][0] = "��n jaar achteruit"; +calmsg["dut"][1] = "��n jaar voorwaarts"; +calmsg["dut"][2] = "��n maand achteruit"; +calmsg["dut"][3] = "��n maand voorwaarts"; +calmsg["dut"][4] = "Overname datum"; +calmsg["dut"][5] = "Selecteer datum"; +calmsg["dut"][6] = "Uw Browser steunt deze eigenschap niet. Update zo vlug mogelijk, " + +"tevreden!
"; +calmsg["dut"][7] = "Jaar"; +calmsg["dut"][8] = "klik aan het sluiten"; +datFormat["dut"] = "DD.MM.YYYY"; +CalendarMonths["dut"] = new Array("Januari", "Februari", "Maart", "April", "Mei", "Juni", + "Juli", "Augustus", "September", "Oktober", "November", "December"); +CalendarWeekdays["dut"] = new Array("Zo", "Ma", "Di", "Wo", "Do", "Vr", "Za"); + +var gNow = new Date(); + +Calendar.CellWidth = ["14%", "14%", "14%", "14%", "14%", "14%", "16%"]; + +// Non-Leap year Month days.. +Calendar.DOMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; +// Leap year Month days.. +Calendar.lDOMonth = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; + +function Calendar(p_item, p_month, p_year, p_format) { + if ((p_month == null) && (p_year == null)) return; + + if (p_month == null) { + this.gMonthName = null; + this.gMonth = null; + this.gYearly = true; + } else { + this.gMonthName = Calendar.get_month(p_month); + this.gMonth = new Number(p_month); + this.gYearly = false; + } + + this.gYear = p_year; + this.gFormat = p_format; + this.gBGColor = "white"; + this.gFGColor = "black"; + this.gTextColor = "black"; + this.gHeaderColor = "black"; + this.gReturnItem = p_item; +} + +Calendar.get_month = Calendar_get_month; +Calendar.get_daysofmonth = Calendar_get_daysofmonth; +Calendar.calc_month_year = Calendar_calc_month_year; + +function Calendar_get_month(monthNo) { + return Calendar.Months[monthNo]; +} + +function Calendar_get_daysofmonth(monthNo, p_year) { + /* + Check for leap year .. + 1.Years evenly divisible by four are normally leap years, except for... + 2.Years also evenly divisible by 100 are not leap years, except for... + 3.Years also evenly divisible by 400 are leap years. + */ + if ((p_year % 4) == 0) { + if ((p_year % 100) == 0 && (p_year % 400) != 0) + return Calendar.DOMonth[monthNo]; + + return Calendar.lDOMonth[monthNo]; + } else + return Calendar.DOMonth[monthNo]; +} + +function Calendar_calc_month_year(p_Month, p_Year, incr) { + /* + Will return an 1-D array with 1st element being the calculated month + and second being the calculated year + after applying the month increment/decrement as specified by 'incr' parameter. + 'incr' will normally have 1/-1 to navigate thru the months. + */ + var ret_arr = new Array(); + + if (incr == -1) { + // B A C K W A R D + if (p_Month == 0) { + ret_arr[0] = 11; + ret_arr[1] = parseInt(p_Year) - 1; + } else { + ret_arr[0] = parseInt(p_Month) - 1; + ret_arr[1] = parseInt(p_Year); + } + } else if (incr == 1) { + // F O R W A R D + if (p_Month == 11) { + ret_arr[0] = 0; + ret_arr[1] = parseInt(p_Year) + 1; + } else { + ret_arr[0] = parseInt(p_Month) + 1; + ret_arr[1] = parseInt(p_Year); + } + } + return ret_arr; +} + +function Calendar_calc_month_year(p_Month, p_Year, incr) { + /* + Will return an 1-D array with 1st element being the calculated month + and second being the calculated year + after applying the month increment/decrement as specified by 'incr' parameter. + 'incr' will normally have 1/-1 to navigate thru the months. + */ + var ret_arr = new Array(); + + if (incr == -1) { + // B A C K W A R D + if (p_Month == 0) { + ret_arr[0] = 11; + ret_arr[1] = parseInt(p_Year) - 1; + } else { + ret_arr[0] = parseInt(p_Month) - 1; + ret_arr[1] = parseInt(p_Year); + } + } else if (incr == 1) { + // F O R W A R D + if (p_Month == 11) { + ret_arr[0] = 0; + ret_arr[1] = parseInt(p_Year) + 1; + } else { + ret_arr[0] = parseInt(p_Month) + 1; + ret_arr[1] = parseInt(p_Year); + } + } + return ret_arr; +} + +// This is for compatibility with Navigator 3, we have to create and discard one object +// before the prototype object exists. +new Calendar(); + +Calendar.prototype.getMonthlyCalendarCode = function() { + var vCode = ""; + var vHeader_Code = ""; + var vData_Code = ""; + + // Begin Table Drawing code here.. + vCode += ('
'); + + vHeader_Code = this.cal_header(); + vData_Code = this.cal_data(); + vCode += (vHeader_Code + vData_Code); + + vCode += '
'; + + return vCode; +} + +Calendar.prototype.show = function() { + var vCode = ""; + + // build content into global var ggWinContent + ggWinContent += sprintf('
%s %s
', + fontface, fontsize, this.gMonthName, this.gYear); + + // Show navigation buttons + var prevMMYYYY = Calendar.calc_month_year(this.gMonth, this.gYear, -1); + var prevMM = prevMMYYYY[0]; + var prevYYYY = prevMMYYYY[1]; + + var nextMMYYYY = Calendar.calc_month_year(this.gMonth, this.gYear, 1); + var nextMM = nextMMYYYY[0]; + var nextYYYY = nextMMYYYY[1]; + + var nav_cell = ' [%s%s%s<\/a>] '; + + ggWinContent += ''; + ggWinContent += ''; + ggWinContent += sprintf(nav_cell, + 'left', calmsg[ggLang][0], calmsg[ggLang][0], + this.gReturnItem, this.gMonth, (parseInt(this.gYear)-1), this.gFormat, + '<<', (parseInt(this.gYear)-1), ''); + ggWinContent += sprintf(nav_cell, + 'right', calmsg[ggLang][1], calmsg[ggLang][1], + this.gReturnItem, this.gMonth, (parseInt(this.gYear)+1), this.gFormat, + '', (parseInt(this.gYear)+1), '>>'); + ggWinContent += ''; + ggWinContent += sprintf(nav_cell, + 'left', calmsg[ggLang][2], calmsg[ggLang][2], + this.gReturnItem, prevMM, prevYYYY, this.gFormat, '<', + Calendar.Months[prevMM], ''); + ggWinContent += sprintf(nav_cell, + 'right', calmsg[ggLang][3], calmsg[ggLang][3], + this.gReturnItem, nextMM, nextYYYY, this.gFormat, '', + Calendar.Months[nextMM], '>'); + ggWinContent += '
 
'; + + // Get the complete calendar code for the month, and add it to the content var + vCode = this.getMonthlyCalendarCode(); + ggWinContent += vCode; +} + +Calendar.prototype.showY = function() { + var vCode = ""; + var i; + + ggWinContent += sprintf( + '
%s
', fontface, fontsize+1, this.gYear); + // Show navigation buttons + var prevYYYY = parseInt(this.gYear) - 1; + var nextYYYY = parseInt(this.gYear) + 1; + + ggWinContent += '', '#e0e0e0', fontsize); + ggWinContent += ''; + ggWinContent += sprintf( + '', + calmsg[ggLang][0], calmsg[ggLang][0], this.gReturnItem, + prevYYYY, this.gFormat, (parseInt(this.gYear)-1)); + ggWinContent += ''; + ggWinContent += sprintf( + '', + calmsg[ggLang][1], calmsg[ggLang][1], this.gReturnItem, + nextYYYY, this.gFormat, (parseInt(this.gYear)+1)); + ggWinContent += '
[<<%s]       [%s>>]
'; + + // Get the complete calendar code for each month. + // start a table and first row in the table + ggWinContent += ''; + for (i=0; i<12; i++) { + // start the table cell + ggWinContent += ''; + if (i == 3 || i == 7) ggWinContent += ''; + } + ggWinContent += '
'; + this.gMonth = i; + this.gMonthName = Calendar.get_month(this.gMonth); + vCode = this.getMonthlyCalendarCode(); + ggWinContent += (this.gMonthName + '/' + this.gYear+ '
 
'); + ggWinContent += vCode; + ggWinContent += '
'; +} + +Calendar.prototype.cal_header = function() { + var vCode = ''; + for (i=0; i<7; i++) { vCode += sprintf( + '%s', + Calendar.CellWidth[i], fontface, this.gHeaderColor, Calendar.Weekdays[i]); + } + return (vCode + ''); +} + +Calendar.prototype.cal_data = function() { + var vDate = new Date(); + vDate.setDate(1); + vDate.setMonth(this.gMonth); + vDate.setFullYear(this.gYear); + + var vFirstDay=vDate.getDay(); + var vDay=1; + var vLastDay=Calendar.get_daysofmonth(this.gMonth, this.gYear); + var vOnLastDay=0; + var vCode = ''; + var i,j,k,m; + var orig = eval("document." + this.gReturnItem + ".value").toString(); + /* + Get day for the 1st of the requested month/year.. + Place as many blank cells before the 1st day of the month as necessary. + */ + for (i=0; i ', + Calendar.CellWidth[0], this.write_weekend_string(i),fontface); + } + // Write rest of the 1st week + for (j=vFirstDay; j<7; j++) { vCode += sprintf( + '
%s', + Calendar.CellWidth[j+1], this.write_weekend_string(j), fontface, + calmsg[ggLang][4], this.format_data(vDay), calmsg[ggLang][4], + this.format_data(vDay), this.gReturnItem, this.format_data(vDay), OLfnRef, + this.gReturnItem, orig, this.format_day(vDay)); + vDay += 1; + } + vCode += ''; + + // Write the rest of the weeks + for (k=2; k<7; k++) { + vCode += ''; + for (j=0; j<7; j++) { vCode += sprintf( + '%s', + Calendar.CellWidth[j+1], this.write_weekend_string(j), fontface, + calmsg[ggLang][4], this.format_data(vDay),calmsg[ggLang][4], + this.format_data(vDay), this.gReturnItem, this.format_data(vDay), + OLfnRef, this.gReturnItem, orig, this.format_day(vDay)); + vDay += 1; + if (vDay > vLastDay) { + vOnLastDay = 1; + break; + } + } + if (j == 6) vCode += ''; + if (vOnLastDay == 1) break; + } + + // Fill up the rest of last week with proper blanks, so that we get proper square blocks + for (m=1; m<(7-j); m++) { vCode += sprintf( + ' ', + Calendar.CellWidth[m+1], this.write_weekend_string(j+m), fontface); + } + return vCode; +} + +Calendar.prototype.format_day = function(vday) { + var vNowDay = gNow.getDate(); + var vNowMonth = gNow.getMonth(); + var vNowYear = gNow.getFullYear(); + + if (vday == vNowDay && this.gMonth == vNowMonth && this.gYear == vNowYear) + return ('' + vday + ''); + else + return (vday); +} + +Calendar.prototype.write_weekend_string = function(vday) { + var i; + + // Return special formatting for the weekend day. + for (i=0; i X ', MIDX,0, RELY,10); + // Otherwise use FIXX and FIXY + } else { + // Make sure popup is on screen + var X = ((ggPosX < 10)?0:ggPosX - 10), Y = ((ggPosY < 10)?0:ggPosY - 10); + window.scroll(X, Y); + // Put up the calendar + overlib(ggWinContent, AUTOSTATUSCAP, STICKY, EXCLUSIVE, DRAGGABLE, + CLOSECLICK, TEXTSIZE,'8pt', CAPTIONSIZE,'8pt', CLOSESIZE,'8pt', + CAPTION,calmsg[ggLang][5], CLOSETITLE,calmsg[ggLang][8],CLOSETEXT, + ' X ', FIXX,ggPosX, FIXY,ggPosY); + // Reset the position variables + ggPosX = -1; ggPosY = -1; + } +} + +function show_calendar() { + var p_item // Return Item. + var p_month // 0-11 for Jan-Dec; 12 for All Months. + var p_year // 4-digit year + var p_format // Date format (YYYY-MM-DD, DD/MM/YYYY, ...) + fontsize = 8; + + Calendar.Months = CalendarMonths[ggLang]; + Calendar.Weekdays = CalendarWeekdays[ggLang]; + + p_item = arguments[0]; + if (arguments[1] == "" || arguments[1] == null || arguments[1] == '12') + p_month = new String(gNow.getMonth()); + else + p_month = arguments[1]; + if (arguments[2] == "" || arguments[2] == null) + p_year = new String(gNow.getFullYear().toString()); + else + p_year = arguments[2]; + if (arguments[3] == "" || arguments[3] == null) + p_format = datFormat[ggLang]; + else + p_format = arguments[3]; + + if (OLns4) return overlib(calmsg[ggLang][6]+p_format, + FGCOLOR,'#ffffcc', TEXTSIZE,2, STICKY, NOCLOSE, OFFSETX,-10, OFFSETY,-10, + WIDTH,110, BASE,2); + + Build(p_item, p_month, p_year, p_format); +} + +function show_yearly_calendar() { + var p_item // Return Item. + var p_year // 4-digit year + var p_format // Date format (YYYY-MM-DD, DD/MM/YYYY, ...) + + Calendar.Months = CalendarMonths[ggLang]; + Calendar.Weekdays = CalendarWeekdays[ggLang]; + + p_item = arguments[0]; + if (arguments[1] == "" || arguments[1] == null) + p_year = new String(gNow.getFullYear().toString()); + else + p_year = arguments[1]; + if (arguments[2] == "" || arguments[2] == null) + p_format = datFormat[ggLang]; + else + p_format = arguments[2]; + + if (OLns4) return overlib(calmsg[ggLang][6]+p_format, + FGCOLOR,'#ffffcc', TEXTSIZE,2, STICKY, NOCLOSE, OFFSETX,-10, OFFSETY,-10, + WIDTH,110, BASE,2); + + Build(p_item, null, p_year, p_format); +} Index: openacs-4/packages/ajaxhelper/www/resources/overlibmws/cornerBL.gif =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajaxhelper/www/resources/overlibmws/cornerBL.gif,v diff -u Binary files differ Index: openacs-4/packages/ajaxhelper/www/resources/overlibmws/cornerBR.gif =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajaxhelper/www/resources/overlibmws/cornerBR.gif,v diff -u Binary files differ Index: openacs-4/packages/ajaxhelper/www/resources/overlibmws/cornerTL.gif =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajaxhelper/www/resources/overlibmws/cornerTL.gif,v diff -u Binary files differ Index: openacs-4/packages/ajaxhelper/www/resources/overlibmws/cornerTR.gif =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajaxhelper/www/resources/overlibmws/cornerTR.gif,v diff -u Binary files differ Index: openacs-4/packages/ajaxhelper/www/resources/overlibmws/edgeB.gif =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajaxhelper/www/resources/overlibmws/edgeB.gif,v diff -u Binary files differ Index: openacs-4/packages/ajaxhelper/www/resources/overlibmws/edgeL.gif =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajaxhelper/www/resources/overlibmws/edgeL.gif,v diff -u Binary files differ Index: openacs-4/packages/ajaxhelper/www/resources/overlibmws/edgeR.gif =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajaxhelper/www/resources/overlibmws/edgeR.gif,v diff -u Binary files differ Index: openacs-4/packages/ajaxhelper/www/resources/overlibmws/edgeT.gif =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajaxhelper/www/resources/overlibmws/edgeT.gif,v diff -u Binary files differ Index: openacs-4/packages/ajaxhelper/www/resources/overlibmws/exit.gif =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajaxhelper/www/resources/overlibmws/exit.gif,v diff -u Binary files differ Index: openacs-4/packages/ajaxhelper/www/resources/overlibmws/flower.gif =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajaxhelper/www/resources/overlibmws/flower.gif,v diff -u Binary files differ Index: openacs-4/packages/ajaxhelper/www/resources/overlibmws/iframecontentmws.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajaxhelper/www/resources/overlibmws/iframecontentmws.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajaxhelper/www/resources/overlibmws/iframecontentmws.js 21 Oct 2006 06:14:54 -0000 1.1 @@ -0,0 +1,3 @@ +function OLiframeContent(src, width, height, name, frameborder) { + return (''); +} Index: openacs-4/packages/ajaxhelper/www/resources/overlibmws/license.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajaxhelper/www/resources/overlibmws/license.html,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajaxhelper/www/resources/overlibmws/license.html 21 Oct 2006 06:14:54 -0000 1.1 @@ -0,0 +1,261 @@ + + + + + + + +overLIB - License for the overlibmws package + + + + + + + + + + + + + + + + + + + + + + +
+ Open Source License for the overlibmws Package +
+
+ 1. License coverage +

+ Note that this license only covers the script library (javascript core and plugin modules) + and not any supporting material such as the overlibmws website or its online documentation and support files. You may not + reproduce the website or its online material without explicit written permission from the + author, but can freely incorporate scripts and procedures which are demonstrated in that + material into your own HTML or XML documents. +

+ 2. License (Artistic) +
    +
  • + Preamble
    + The intent of this document is to state the conditions under which a Package may be + copied, such that the Copyright Holder maintains some semblance of artistic control over + the development of the package, while giving the users of the package the right to use + and distribute the Package in a more-or-less customary fashion, plus the right to make + reasonable modifications. +
  • +
+
    +
  • + Definitions:
    + "Package" refers to the collection of files distributed by the Copyright Holder, and + derivatives of that collection of files created through textual modification. +

    + "Standard Version" refers to such a Package if it has not been modified, or has been + modified in accordance with the wishes of the Copyright Holder. +

    + "Copyright Holder" is whoever is named in the copyright or copyrights for the package. +

    + "You" is you, if you're thinking about copying or distributing this Package. +

    + "Reasonable copying fee" is whatever you can justify on the basis of media cost, + duplication charges, time of people involved, and so on. (You will not be required to + justify it to the Copyright Holder, but only to the computing community at large as a + market that must bear the fee.) +

    + "Freely Available" means that no fee is charged for the item itself, though there may be + fees involved in handling the item. It also means that recipients of the item may + redistribute it under the same conditions they received it. +
  • +
+
    +
  1. + You may make and give away verbatim copies of the source form of the Standard Version + of this Package without restriction, provided that you duplicate all of the original + copyright notices and associated disclaimers. +
  2. +
  3. + You may apply bug fixes, portability fixes and other modifications derived from the + Public Domain or from the Copyright Holder. A Package modified in such a way shall still + be considered the Standard Version. +
  4. +
  5. + You may otherwise modify your copy of this Package in any way, provided that you insert + a prominent notice in each changed file stating how and when you changed that file, and + provided that you do at least ONE of the following: +
      +
    1. + place your modifications in the Public Domain or otherwise make them Freely Available, + such as by posting said modifications to Usenet or an equivalent medium, or placing the + modifications on a major archive site such as ftp.uu.net, or by allowing the Copyright + Holder to include your modifications in the Standard Version of the Package. +
    2. +
    3. + use the modified Package only within your corporation or organization. +
    4. +
    5. + rename any non-standard executables so the names do not conflict with standard + executables, which must also be provided, and provide a separate manual page for each + non-standard executable that clearly documents how it differs from the Standard Version. +
    6. +
    7. + make other distribution arrangements with the Copyright Holder. +
    8. +
    +
  6. +
  7. + You may distribute the programs of this Package in object code or executable form, + provided that you do at least ONE of the following: +
      +
    1. + distribute a Standard Version of the executables and library files, together with + instructions (in the manual page or equivalent) on where to get the Standard Version. +
    2. +
    3. + accompany the distribution with the machine-readable source of the Package with your + modifications. +
    4. +
    5. + accompany any non-standard executables with their corresponding Standard Version + executables, giving the non-standard executables non-standard names, and clearly + documenting the differences in manual pages (or equivalent), together with instructions + on where to get the Standard Version. +
    6. +
    7. + make other distribution arrangements with the Copyright Holder. +
    8. +
    +
  8. +
  9. + You may charge a reasonable copying fee for any distribution of this Package. You may + charge any fee you choose for support of this Package. You may not charge a fee for this + Package itself. However, you may distribute this Package in aggregate with other (possibly + commercial) programs as part of a larger (possibly commercial) software distribution + provided that you do not advertise this Package as a product of your own. +
  10. +
  11. + The scripts and library files supplied as input to or produced as output from the programs + of this Package do not automatically fall under the copyright of this Package, but belong + to whomever generated them, and may be sold commercially, and may be aggregated with this + Package. +
  12. +
  13. + C or perl subroutines supplied by you and linked into this Package shall not be considered + part of this Package. +
  14. +
  15. + The name of the Copyright Holder may not be used to endorse or promote products derived + from this software without specific prior written permission. +
  16. +
  17. + THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, + WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR + PURPOSE. +
  18. +
+
+
+ + + + + + + + +
+
+
+ Copyright Foteos Macrides
+   2002-2005.
+   All rights reserved.
+
+
+
+
+
+
+ + + Index: openacs-4/packages/ajaxhelper/www/resources/overlibmws/objectcontentmws.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajaxhelper/www/resources/overlibmws/objectcontentmws.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajaxhelper/www/resources/overlibmws/objectcontentmws.js 21 Oct 2006 06:14:54 -0000 1.1 @@ -0,0 +1,16 @@ +/* + objectcontentmws.js - Foteos Macrides + Initial: October 10, 2004 - Last Revised: November 22, 2004 + Simple script for using an HTML file as object content in overlibmws popups. + Include WRAP and TEXTPADDING,0 in the overlib call to ensure that the width + argument is respected (unless the CAPTION plus CLOSETEXT widths add up to more + than the width argument, in which case you should increase the width argument). + + See http://www.macridesweb.com/oltest/overflow.html for demonstrations. +*/ + +function OLobjectContent(data, width, height, name) { + return ('' + +'
[object not supported]
'); +} Index: openacs-4/packages/ajaxhelper/www/resources/overlibmws/oval.gif =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajaxhelper/www/resources/overlibmws/oval.gif,v diff -u Binary files differ Index: openacs-4/packages/ajaxhelper/www/resources/overlibmws/overlibCompat.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajaxhelper/www/resources/overlibmws/overlibCompat.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajaxhelper/www/resources/overlibmws/overlibCompat.js 21 Oct 2006 06:14:54 -0000 1.1 @@ -0,0 +1,30 @@ +//////////////////////////////////////////////////////////////////////////////////// +// OVERLIB 2 COMPATABILITY FUNCTIONS +// Include this if you are upgrading from overlib v2.x. Otherwise, forget it. +//////////////////////////////////////////////////////////////////////////////////// +// Converts old 0=left, 1=right and 2=center into constants. +function vpos_convert(d){if(d==0){d=LEFT;}else{if(d==1){d=RIGHT;}else{d=CENTER;}}return d;} +// Simple popup +function dts(d,text){o3_hpos=vpos_convert(d);overlib(text,o3_hpos,CAPTION,"");} +// Caption popup +function dtc(d,text,title){o3_hpos=vpos_convert(d);overlib(text,CAPTION,title,o3_hpos);} +// Sticky +function stc(d,text,title){o3_hpos=vpos_convert(d);overlib(text,CAPTION,title,o3_hpos,STICKY);} +// Simple popup right +function drs(text){dts(1,text);} +// Caption popup right +function drc(text,title){dtc(1,text,title);} +// Sticky caption right +function src(text,title){stc(1,text,title);} +// Simple popup left +function dls(text){dts(0,text);} +// Caption popup left +function dlc(text,title){dtc(0,text,title);} +// Sticky caption left +function slc(text,title){stc(0,text,title);} +// Simple popup center +function dcs(text){dts(2,text);} +// Caption popup center +function dcc(text,title){dtc(2,text,title);} +// Sticky caption center +function scc(text,title){stc(2,text,title);} Index: openacs-4/packages/ajaxhelper/www/resources/overlibmws/overlibConfig.txt =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajaxhelper/www/resources/overlibmws/overlibConfig.txt,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajaxhelper/www/resources/overlibmws/overlibConfig.txt 21 Oct 2006 06:14:54 -0000 1.1 @@ -0,0 +1,615 @@ + +Below are described the configuration variables and arrays associated with the +overlib commands, and their defaults as set in the + overlibmws.js +core module and the + overlibmws_bubble.js, overlibmws_crossframe.js, overlibmws_debug.js, + overlibmws_draggable.js, overlibmws_exclusive.js, overlib_filter.js, + overlibmws_function.js, overlibmws_hide.js, overlibmws_overtwo.js, + overlibmws_print.js, overlibmws_scroll.js and overlibmws_shadow.js +plugin modules. The + overlibmws_iframe.js and overlib_regCore.js +plugin modules do not have configuration variables or arrays. + +You can change any of the configuration default values for all pages by making +the modifications in overlibmws.js or the plugin modules, or for individual HTML +pages by declaring any of these variables with the values you prefer in a SCRIPT +block or imported js file for those pages. + +You instead can change the configuration default values for individual HTML pages by +calling the OLpageDefaults(arguments) function in a SCRIPT block or imported js file +with "arguments" consisting of a comma-separated list of uppercase command names and +their parameters if any, homologously to the arguments for an overlib() call. + +The overlibmws_overtwo.js module is used by calling overlib2() and nd2() from within +an overlib() call that invokes a primary popup, to invoke and close secondary popups. +Its LABLE2 command and its configuration variable are specific to the secondary popups, +and are complementary to the core module's LABLEL command and its configuration variable +for primary popups. + +The overlibmws_iframe.js module has no additional commands, and thus no configuration +variables. It should be imported when a page has system controls (e.g., some form +elements, flash objects, applets) which obscure overlib popups. It corrects this +problem for IE v5.5 or higher. For versions of IE lower than v5.5 and for other browsers, +you can use commands in the overlibmws_hide.js plugin module. See the examples in +http://www.macridesweb.com/oltest/hide.html and http://www.macridesweb.com/oltest/flash.html +on how to use those command to hide the system controls when overlib popups are invoked. + +The overlibmws_regCore.js module has no overlib() or overlib2() commands, and thus +no configuration variables. It should be imported in frames which will not themselves +import the core module and any plugin modules, but instead will use those in another +frame. See its header for more information. Examples of its use are in +http://www.macridesweb.com/oltest/testFrame.html + +See the overlibmws Command Reference (http://www.macridesweb.com/oltest/commandRef.html) +for more information about the commands, configuration variables, and plugin modules. + + +//////////////////////////////////////////////////////////////////////////////////// +// DEFAULT CONFIGURATION FOR CORE MODULE overlibmws.js +//////////////////////////////////////////////////////////////////////////////////// + +// FGCOLOR - Main background color (the large area). +// Usually a bright color (white, yellow etc). +var ol_fgcolor = "#CCCCFF"; + +// BGCOLOR - Border color. +// Usually a dark color (black, brown etc). +var ol_bgcolor = "#333399"; + +// CGCOLOR - Caption background color (typically same as border color). +// Usually a dark color (black, brown etc). +var ol_cgcolor = "#333399"; + +// TEXTCOLOR - Text color. +// Usually a dark color. +var ol_textcolor = "#000000"; + +// CAPCOLOR - Color of the caption text. +// Usually a bright color +var ol_capcolor = "#FFFFFF"; + +// CLOSECOLOR - Color of "Close" when using Sticky. +// Usually a semi-bright color. +var ol_closecolor = "#9999FF"; + +// TEXTFONT - Font face for the main text. +var ol_textfont = "Verdana,Arial,Helvetica"; + +// CAPTIONFONT - Font face for the caption. +var ol_captionfont = "Verdana,Arial,Helvetica"; + +// CLOSEFONT - Font face for the close text. +var ol_closefont = "Verdana,Arial,Helvetica"; + +// TEXTSIZE - Font size for the main text. +var ol_textsize = "1"; + +// CAPTIONSIZE - Font size for the caption. +var ol_captionsize = "1"; + +// CLOSESIZE - Font size for the close text. +var ol_closesize = "1"; + +// FGCLASS - Main background class. +var ol_fgclass = ""; + +// BGCLASS - Frame background class. +var ol_bgclass = ""; + +// CGCLASS - Caption background class. +var ol_cgclass = ""; + +// TEXTPADDING - Padding for main text. +var ol_textpadding = "2"; + +// TEXTFONTCLASS - Main font class. +var ol_textfontclass = ""; + +// CAPTIONPADDING - Padding for caption (including Close text if present). +var ol_captionpadding = "2"; + +// CAPTIONFONTCLASS - Caption font class. +var ol_captionfontclass = ""; + +// CLOSEFONTCLASS - Close font class. +var ol_closefontclass = ""; + +// CLOSECLICK - If the user has to click to close stickies. +var ol_closeclick = 0; + +// CLOSETEXT - Text for the closing sticky popups. Normal is "Close". +var ol_close = "Close"; + +// CLOSETITLE - Text to use as value of TITLE attribute for browser-generated TooTips +// with the "Close" link in captions of stickies when CLOSECLICK is changed to 1; +var ol_closetitle = "Click to Close"; + +// Default text for popups +// Should you forget to pass something to overLIB this will be displayed. +var ol_text = "Default Text"; + +// Default caption +// You should leave this blank or you will have problems making non caps popups. +var ol_cap = ""; + +// CAPBELOW - Whether the caption should appear below the main text area. Default is +// off (0) such that the caption appears above. +var ol_capbelow=0; + +// BACKGROUND - Default background image. Better left empty unless you always want one. +var ol_background = ""; + +// WIDTH - Default width of the popups in pixels. 100-300 pixels is typical. +// This value is simply a suggestion to the browser, which may change the +// actual width depending on the content. +var ol_width = "200"; + +// WRAP - Intended to keep the popup no wider than its content plus normal padding, but +// to wrap the content if it would exceed the window width, or if it would exceed WRAPMAX +// when that has been set to a value greater than zero. +// Overrides the o3_width setting. Default is no wrap (0). +var ol_wrap = 0; + +// WRAPMAX - If set to a value greater than 0, sets the maximum width of the popup, up to +// the window width, before wrapping occurs when the WRAP command is set. +var ol_wrapmax = 0; + +// HEIGHT - Default height for popup. Often best left alone. +var ol_height = -1; + +// BORDER - How thick the ol_border should be in pixels. +// 1-3 pixels is typical. +var ol_border = "1"; + +// BASE - Any additional thickening of the border's base in pixels. +var ol_base = "0"; + +// OFFSETX - How many pixels to the right (positive values) or left (negative values) +// of the cursor to show the popup. Values between 3 and 12 are best. +var ol_offsetx = 10; + +// OFFSETY - How many pixels below (positive values) or above (negative values) the +// cursor to show the popup. Values between 3 and 20 are best. +var ol_offsety = 10; + +// STICKY - Decides if sticky popups are default. 0 for non, 1 for stickies. +var ol_sticky = 0; + +// NOFOLLOW - Should non-sticky popups not follow cursor movements (i.e., remain +// stationary where initially positioned on invocation, like title-based tooltips). +var ol_nofollow = 0; + +// NOCLOSE - Omit Close text in stickies with captions, for all stickies use mouse off +// after mouse over sticky to close, and cancel any timeout while over sticky. +var ol_noclose = 0; + +// MOUSEOFF - For stickies which do have a caption with a CLOSETEXT, also use mouse off +// after mouse over sticky to close, and cancel any timeout while over sticky. +var ol_mouseoff = 0; + +// OFFDELAY - Default delay for closing NOCLOSE or MOUSEOFF popups. If a mouse over the +// sticky occurs during this delay, the close is cancelled. +var ol_delay = 300; + +// RIGHT - Default vertical alignment for popups. +// It's best to leave RIGHT here. Other options are LEFT and CENTER. +var ol_hpos = RIGHT; + +// BELOW - Default vertical position of the popups. +// It's best to leave BELOW here. Other options are ABOVE and VCENTER. +var ol_vpos = BELOW; + +// Default status bar text when a popup is invoked. +var ol_status = ""; + +// AUTOSTATUS, AUTOSTATUSCAP - If the status bar automatically should load either +// text or caption. 0=nothing, 1=text, 2=caption +var ol_autostatus = 0; + +// SNAPX - Horizontal grid spacing that popups will snap to. +// 0 makes no grid, anything else will cause a snap to that grid spacing. +var ol_snapx = 0; + +// SNAPY - Vertical grid spacing that popups will snap to. +// 0 makes no grid, anything else will cause a snap to that grid spacing. +var ol_snapy = 0; + +// FIXX - Sets the popup horizontal position to a fixed column. +// Numbers greater than -1 will cause fixed position. +var ol_fixx = -1; + +// FIXY - Sets the popup vertical position to a fixed row. +// Numbers greater than -1 will cause fixed position. +var ol_fixy = -1; + +// RELX - Sets the popup horizontal position to a column relative to the window display. +// Anything numeric (non-null) will cause relative position. Positive and 0 is to +// the right from left window margin for left margin of popup. Negative is to the +// left from right window margin for right margin of popup. +var ol_relx = null; + +// RELY - Sets the popup vertical position to a row relative to the window display. +// Anything numeric (non-null) will cause relative position. Positive and 0 is down +// from top window margin for top margin of popup. Negaive is up from bottom window +// margin for bottom margin of popup. +var ol_rely = null; + +// MIDX - Sets the popup horizontal midpoint to a column relative to the window horizontal +// midpoint. Anything numeric (non-null) will cause midpoint position. Positive and +// 0 is to the right from the window midpoint. Negative is to the left. +var ol_midx = null; + +// MIDY - Sets the popup vertical midpoint to a row relative to the window vertical midpoint. +// Anything numeric (non-null) will cause midpoint position. Positive and 0 is down from +// the window midpoint. Negative is up. +var ol_midy = null; + +// REF - The NAME of an anchor or image, or ID of a layer, to serve as a reference object such +// that a corner of the popup will be positioned relative to a corner of the object. +var ol_ref = ""; + +// REFC - Corner of the reference object for positioning. +// Value can be: 'UL' (Upper Left), 'UR', 'LR', or 'LL'. +var ol_refc = 'UL'; + +// REFP - Corner of the popup for positioning. +// Value can be: 'UL' (Upper Left), 'UR', 'LR', or 'LL'. +var ol_refp = 'UL'; + +// REFX - X displacement from the reference point. Positive to the right, +// negative left. +var ol_refx = 0; + +// REFY - Y displacement from the reference point. Positive down, negative up. +var ol_refy = 0; + +// FGBACKGROUND - Background image for the popup's inside. +var ol_fgbackground = ""; + +// BGBACKGROUND - Background image for the popup's frame (border). +var ol_bgbackground = ""; + +// CGBACKGROUND - Background image for the caption. +var ol_cgbackground = ""; + +// PADX +// How much horizontal left padding text should get by default when BACKGROUND is used. +var ol_padxl = 1; +// How much horizontal right padding text should get by default when BACKGROUND is used. +var ol_padxr = 1; + +// PADY +// How much vertical top padding text should get by default when BACKGROUND is used. +var ol_padyt = 1; +// How much vertical bottom padding text should get by default when BACKGROUND is used. +var ol_padyb = 1; + +// FULLHTML - If the user by default must supply all html for complete control of popup content. +// Set to 1 to activate, 0 otherwise. +var ol_fullhtml = 0; + +// CAPICON - Default icon to place next to the popups caption. +var ol_capicon = ""; + +// FRAME - Default frame. We default to current frame if there is no frame defined. +var ol_frame = self; + +// TIMEOUT - Default timeout. By default there is no timeout. +var ol_timeout = 0; + +// DELAY - Default delay for onset of popup. By default there is no delay. +var ol_delay = 0; + +// HAUTO - If overLIB should decide the horizontal placement. +var ol_hauto = 0; + +// VAUTO - If overLIB should decide the vertical placement. +var ol_vauto = 0; + +// NOJUSTX - If overLIB should let popups overrun the left or right window margins. +var ol_nojustx = 0; + +// NOJUSTY - If overLIB should let popups overrun the top or bottom window margins. +var ol_nojusty = 0; + +// LABEL - A labeling string for the primary popup while it is displayed (visible). +var ol_label = ""; + +// DECODE - If overLIB should automatically decode any URL-encoded characters in +// lead argument and/or caption. +var ol_decode = ""; + +//////////////////////////////////////////////////////////////////////////////////// +// ARRAY CONFIGURATION FOR CORE MODULE overlibmws.js +//////////////////////////////////////////////////////////////////////////////////// + +// INARRAY - Array with texts. +var ol_texts = new Array( + "Text 0", + "Text 1"); + +// CAPARRAY - Array with captions. +var ol_caps = new Array( + "Caption 0", + "Caption 1"); + +//////////////////////////////////////////////////////////////////////////////////// +// END CONFIGURATION FOR overlibmws.js +//////////////////////////////////////////////////////////////////////////////////// + + +//////////////////////////////////////////////////////////////////////////////////// +// DEFAULT CONFIGURATION FOR PLUGIN MODULE overlibmws_bubble.js +//////////////////////////////////////////////////////////////////////////////////// + +// BUBBLE - Whether to use a bubble type popup. Default is no (0). +var ol_bubble = 0; + +// BUBBLETYPE - Type of bubble image to use. Default is 'flower'. Other options are +// 'oval', 'square', 'pushpin', 'quotation', or 'roundedcorners'. Specify directory +// for images via the last parameter of registerImages() near the top of the plugin +// module (default value is './'). +var ol_bubbletype = 'flower'; + +// ADJBUBBLE - Whether to resize the image in relation to the content. +// Default is no (0). +var ol_adjbubble = 0; + +//////////////////////////////////////////////////////////////////////////////////// +// END CONFIGURATION FOR overlibmws_bubble.js +//////////////////////////////////////////////////////////////////////////////////// + + +//////////////////////////////////////////////////////////////////////////////////// +// DEFAULT CONFIGURATION FOR PLUGIN MODULE overlibmws_crossframe.js +//////////////////////////////////////////////////////////////////////////////////// + +You must import this plugin module to use the FRAME command, but its configuration +variable, ol_frame, is set in the core module. + +//////////////////////////////////////////////////////////////////////////////////// +// END CONFIGURATION FOR overlibmws_crossframe.js +//////////////////////////////////////////////////////////////////////////////////// + + +//////////////////////////////////////////////////////////////////////////////////// +// DEFAULT CONFIGURATION FOR PLUGIN MODULE overlibmws_debug.js +//////////////////////////////////////////////////////////////////////////////////// + +// ALLOWDEBUG - The ID or a comma-separated list of IDs for debug layers which, if +// invoked following an overlib call and then made hidden via the close link at +// upper right, should be made visible again whenever that overlib call occurs. +var ol_allowdebug = ""; + +//////////////////////////////////////////////////////////////////////////////////// +// END CONFIGURATION FOR overlibmws_debug.js +//////////////////////////////////////////////////////////////////////////////////// + + +//////////////////////////////////////////////////////////////////////////////////// +// DEFAULT CONFIGURATION FOR PLUGIN MODULE overlibmws_draggable.js +//////////////////////////////////////////////////////////////////////////////////// + +// DRAGGABLE - If sticky should be draggable. +var ol_draggable = 0; + +//////////////////////////////////////////////////////////////////////////////////// +// END CONFIGURATION FOR overlibmws_draggable.js +//////////////////////////////////////////////////////////////////////////////////// + + +//////////////////////////////////////////////////////////////////////////////////// +// DEFAULT CONFIGURATION FOR PLUGIN MODULE overlibmws_exclusive.js +//////////////////////////////////////////////////////////////////////////////////// + +// EXCLUSIVE - Decides if a sticky primary popup should be exclusive, such that no other +// primry popup can be invoked and replace it before the sticky is closed by the user or +// a timeout (secondary popups can still be invoked from within the exclusive primary). +var ol_exclusive = 0; + +// EXCLUSIVESTATUS - Status line string to use for exclusive stickies +var ol_exclusivestatus = 'Please act on or close the open popup.'; + +// EXCLUSIVEOVERRIDE = If a displayed exclusive sticky should be overridden by the +// current overlib call for a popup. +var ol_exclusiveoverride=0; + +//////////////////////////////////////////////////////////////////////////////////// +// END CONFIGURATION FOR overlibmws_exclusive.js +//////////////////////////////////////////////////////////////////////////////////// + + +//////////////////////////////////////////////////////////////////////////////////// +// DEFAULT CONFIGURATION FOR PLUGIN MODULE overlibmws_filter.js +//////////////////////////////////////////////////////////////////////////////////// + +// FILTER - Toggles on the filter feature set for IE v5.5+ browsers. Defualt is off. +var ol_filter=0; + +// FADEIN - Filter type for stylinzed fadein. Value can be 0 - 50 for the 51 types, +// or 51 (default) for random selections of the type across successive occurrences +// of the popup. +var ol_fadein=51; + +// FADETIME - Duration of fadein (millisec). +var ol_fadetime=800; + +// FILTEROPACITY - Opacity of entire popup. The higher the number in the range of 1-99, +// the more more opaque (less transparent) the popup will be. But 0 is handled as +// equivalent to 100 (no transparency). This feature also is implemented for Mozilla +// and Netscape v6+ browsers. +var ol_filteropacity=100; + +// FILTERSHADOW - Type of filter-based shadow. Default is off (0). +// Dropshadow is 1. Shadow (tapers from corners) is 2. +var ol_filtershadow=0; + +// FILTERSHADOWCOLOR - Color of filter-based shadow. +var ol_filtershadowcolor="#cccccc"; + +//////////////////////////////////////////////////////////////////////////////////// +// END CONFIGURATION FOR overlibmws_filter.js +//////////////////////////////////////////////////////////////////////////////////// + + +//////////////////////////////////////////////////////////////////////////////////// +// DEFAULT CONFIGURATION FOR PLUGIN MODULE overlibmws_function.js +//////////////////////////////////////////////////////////////////////////////////// + +// FUNCTION - Default javascript function. By default there is none. +var ol_function = null; + +//////////////////////////////////////////////////////////////////////////////////// +// END CONFIGURATION FOR overlibmws_function.js +//////////////////////////////////////////////////////////////////////////////////// + + +//////////////////////////////////////////////////////////////////////////////////// +// DEFAULT CONFIGURATION FOR PLUGIN MODULE overlibmws_hide.js +//////////////////////////////////////////////////////////////////////////////////// + +// HIDESELECTBOXES - Whether to hide any select boxes which overlap the popup +// while the popup is being displayed. +var ol_hideselectboxes=0; + +// HIDEBYID - An id or comma-separated list of id's to be hidden while the popup +// is displayed. Is intended for form elements and is ignored for any browsers +// using HIDESELECTBOXES and for Opera v7+. +var ol_hidebyid=''; + +// HIDEBYIDALL - An id or comma=separated list of id's to be hidden while the popup +// is displayed. Is intended for non-form elements with system controls, e.g., +// flash objects and applets. +var ol_hidebyidall=''; + +// HIDEBYIDNS4 - An id or comma-separated list of id's for positioned div's to be +// hidden while the popup is being displayed by Netscape v4.x browsers. +var ol_hidebyidns4=''; + +//////////////////////////////////////////////////////////////////////////////////// +// END CONFIGURATION FOR overlibmws_hide.js +//////////////////////////////////////////////////////////////////////////////////// + + + +//////////////////////////////////////////////////////////////////////////////////// +// DEFAULT CONFIGURATION FOR PLUGIN MODULE overlibmws_overtwo.js +//////////////////////////////////////////////////////////////////////////////////// + +// LABEL - A labeling string for the secondary popup while it is displayed (visible). +var ol_label = ""; + +//////////////////////////////////////////////////////////////////////////////////// +// END CONFIGURATION FOR overlibmws_overtwo.js +//////////////////////////////////////////////////////////////////////////////////// + + +//////////////////////////////////////////////////////////////////////////////////// +// DEFAULT CONFIGURATION FOR PLUGIN MODULE overlibmws_print.js +//////////////////////////////////////////////////////////////////////////////////// + +// PRINT - Whether sticky should include a Print link or button. +var ol_print = 0; + +// PRINTBUTTON - Whether to use button in main text area even if caption area is present. +var ol_printbutton=0; + +// NOAUTOPRINT - Whether to block automatic printing and deletion of temporary printing window. +var ol_noautoprint=0; + +// PRINTCOLOR - Color of "Print" link in caption area of sticky. +var ol_printcolor="#eeeeff"; + +// PRINTFONT - Font face for the print text. +var ol_printfont="Verdana,Arial,Helvetica"; + +// PRINTSIZE - Font size for the print text. +var ol_printsize=1; + +// PRINTTEXT - Text for the sticky popup print link. Normal is "Print". +var ol_printtext='Print'; + +// PRINTBUTTONTEXT - Text for the sticky popup print button. Normal is "Print". +var ol_printbuttontext='Print'; + +// PRINTTITLE - Text to use as value of TITLE attribute for browser-generated TooTips +// with the "Print" link in captions of stickies or "Print" button in main text area. +var ol_printtitle="Click to Print"; + +// PRINTFONTCLASS - Print font class. +var ol_printfontclass=""; + +// PRINTCSSFILE - URL for .ccs file with CSS rules for styling the popup. +var ol_printcssfile=""; + +// PRINTXML - String for (optional) xml tag for temporary printing window. +var ol_printxml=""; + +// PRINTDOCTYPE - String for DOCTYPE declaration for temporary printing window. +var ol_printdoctype= + ''; + +// PRINTROOT - String for root tag for temporary printing window. +var ol_printroot=""; + +// PRINTTYPE - String for MIME type for temporary printing window. +var ol_printtype="text/html"; + +// PRINTCHARSET - String for charset for temporary printing window. +var ol_printcharset="iso-8859-1"; + +// PRINTURL - URL for a document to be printed via the temporary printing window. +var ol_printurl=""; + +// PRINTJOB - string for an external function to be used for the temporary printing window. +var ol_printjob=""; + +//////////////////////////////////////////////////////////////////////////////////// +// END CONFIGURATION FOR overlibmws_print.js +//////////////////////////////////////////////////////////////////////////////////// + + +//////////////////////////////////////////////////////////////////////////////////// +// DEFAULT CONFIGURATION FOR PLUGIN MODULE overlibmws_scroll.js +//////////////////////////////////////////////////////////////////////////////////// + +// SCROLL - Whether sticky should scroll with the document when positioned via +// RELX or MIDX, and RELY or MIDY. +var ol_scroll = 0; + +//////////////////////////////////////////////////////////////////////////////////// +// END CONFIGURATION FOR overlibmws_scroll.js +//////////////////////////////////////////////////////////////////////////////////// + + +//////////////////////////////////////////////////////////////////////////////////// +// DEFAULT CONFIGURATION FOR PLUGIN MODULE overlibmws_shadow.js +//////////////////////////////////////////////////////////////////////////////////// + +// SHADOW - Whether to add a dropshadow. Default is no (0). +var ol_shadow = 0; + +// SHADOWX - Horizontal dropshadow displacement in pixels. +// Positive is to the right and negative is to the left. +var ol_shadowx = 5; + +// SHADOWY - Vertical dropshadow displacement in pixels. +// Positive is downward and negative is upward. +var ol_shadowy = 5; + +// SHADOWCOLOR - Dropshadow color. +var ol_shadowcolor = "#666666"; + +// SHADOWIMAGE - Dropshadow background image. Default is none. +var ol_shadowimage = ""; + +// SHADOWOPACITY - Dropshadow opacity (100 is solid; 0 turns off this feature and +// thus also yields a solid shadow). Default is 60. +var ol_shadowopacity = 60; + +//////////////////////////////////////////////////////////////////////////////////// +// END CONFIGURATION FOR overlibmws_shadow.js +//////////////////////////////////////////////////////////////////////////////////// + Index: openacs-4/packages/ajaxhelper/www/resources/overlibmws/overlibmws.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajaxhelper/www/resources/overlibmws/overlibmws.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajaxhelper/www/resources/overlibmws/overlibmws.js 21 Oct 2006 06:14:54 -0000 1.1 @@ -0,0 +1,694 @@ +/* + Do not remove or change this notice. + overlibmws.js core module - Copyright Foteos Macrides 2002-2005. All rights reserved. + Initial: August 18, 2002 - Last Revised: June 8, 2005 + This module is subject to the same terms of usage as for Erik Bosrup's overLIB, + though only a minority of the code and API now correspond with Erik's version. + See the overlibmws Change History and Command Reference via: + + http://www.macridesweb.com/oltest/ + + Published under an open source license: http://www.macridesweb.com/oltest/license.html + Give credit on sites that use overlibmws and submit changes so others can use them as well. + You can get Erik's version via: http://www.bosrup.com/web/overlib/ +*/ + +// PRE-INIT -- Ignore these lines, configuration is below. +var OLloaded=0,pmCnt=1,pMtr=new Array(),OLcmdLine=new Array(),OLrunTime=new Array(),OLv,OLudf, +OLpct=new Array("83%","67%","83%","100%","117%","150%","200%","267%"),OLrefXY, +OLbubblePI=0,OLcrossframePI=0,OLdebugPI=0,OLdraggablePI=0,OLexclusivePI=0,OLfilterPI=0, +OLfunctionPI=0,OLhidePI=0,OLiframePI=0,OLovertwoPI=0,OLscrollPI=0,OLshadowPI=0,OLprintPI=0; +if(typeof OLgateOK=='undefined')var OLgateOK=1; +var OLp1or2c='inarray,caparray,caption,closetext,right,left,center,autostatuscap,padx,pady,' ++'below,above,vcenter,donothing',OLp1or2co='nofollow,background,offsetx,offsety,fgcolor,' ++'bgcolor,cgcolor,textcolor,capcolor,width,wrap,wrapmax,height,border,base,status,autostatus,' ++'snapx,snapy,fixx,fixy,relx,rely,midx,midy,ref,refc,refp,refx,refy,fgbackground,bgbackground,' ++'cgbackground,fullhtml,capicon,textfont,captionfont,textsize,captionsize,timeout,delay,hauto,' ++'vauto,nojustx,nojusty,fgclass,bgclass,cgclass,capbelow,textpadding,textfontclass,' ++'captionpadding,captionfontclass,sticky,noclose,mouseoff,offdelay,closecolor,closefont,' ++'closesize,closeclick,closetitle,closefontclass,decode',OLp1or2o='text,cap,close,hpos,vpos,' ++'padxl,padxr,padyt,padyb',OLp1co='label',OLp1or2=OLp1or2co+','+OLp1or2o,OLp1=OLp1co+','+'frame'; +OLregCmds(OLp1or2c+','+OLp1or2co+','+OLp1co); +function OLud(v){return eval('typeof ol_'+v+'=="undefined"')?1:0;} + +// DEFAULT CONFIGURATION -- See overlibConfig.txt for descriptions +if(OLud('fgcolor'))var ol_fgcolor="#ccccff"; +if(OLud('bgcolor'))var ol_bgcolor="#333399"; +if(OLud('cgcolor'))var ol_cgcolor="#333399"; +if(OLud('textcolor'))var ol_textcolor="#000000"; +if(OLud('capcolor'))var ol_capcolor="#ffffff"; +if(OLud('closecolor'))var ol_closecolor="#eeeeff"; +if(OLud('textfont'))var ol_textfont="Verdana,Arial,Helvetica"; +if(OLud('captionfont'))var ol_captionfont="Verdana,Arial,Helvetica"; +if(OLud('closefont'))var ol_closefont="Verdana,Arial,Helvetica"; +if(OLud('textsize'))var ol_textsize=1; +if(OLud('captionsize'))var ol_captionsize=1; +if(OLud('closesize'))var ol_closesize=1; +if(OLud('fgclass'))var ol_fgclass=""; +if(OLud('bgclass'))var ol_bgclass=""; +if(OLud('cgclass'))var ol_cgclass=""; +if(OLud('textpadding'))var ol_textpadding=2; +if(OLud('textfontclass'))var ol_textfontclass=""; +if(OLud('captionpadding'))var ol_captionpadding=2; +if(OLud('captionfontclass'))var ol_captionfontclass=""; +if(OLud('closefontclass'))var ol_closefontclass=""; +if(OLud('close'))var ol_close="Close"; +if(OLud('closeclick'))var ol_closeclick=0; +if(OLud('closetitle'))var ol_closetitle="Click to Close"; +if(OLud('text'))var ol_text="Default Text"; +if(OLud('cap'))var ol_cap=""; +if(OLud('capbelow'))var ol_capbelow=0; +if(OLud('background'))var ol_background=""; +if(OLud('width'))var ol_width=200; +if(OLud('wrap'))var ol_wrap=0; +if(OLud('wrapmax'))var ol_wrapmax=0; +if(OLud('height'))var ol_height= -1; +if(OLud('border'))var ol_border=1; +if(OLud('base'))var ol_base=0; +if(OLud('offsetx'))var ol_offsetx=10; +if(OLud('offsety'))var ol_offsety=10; +if(OLud('sticky'))var ol_sticky=0; +if(OLud('nofollow'))var ol_nofollow=0; +if(OLud('noclose'))var ol_noclose=0; +if(OLud('mouseoff'))var ol_mouseoff=0; +if(OLud('offdelay'))var ol_offdelay=300; +if(OLud('hpos'))var ol_hpos=RIGHT; +if(OLud('vpos'))var ol_vpos=BELOW; +if(OLud('status'))var ol_status=""; +if(OLud('autostatus'))var ol_autostatus=0; +if(OLud('snapx'))var ol_snapx=0; +if(OLud('snapy'))var ol_snapy=0; +if(OLud('fixx'))var ol_fixx= -1; +if(OLud('fixy'))var ol_fixy= -1; +if(OLud('relx'))var ol_relx=null; +if(OLud('rely'))var ol_rely=null; +if(OLud('midx'))var ol_midx=null; +if(OLud('midy'))var ol_midy=null; +if(OLud('ref'))var ol_ref=""; +if(OLud('refc'))var ol_refc='UL'; +if(OLud('refp'))var ol_refp='UL'; +if(OLud('refx'))var ol_refx=0; +if(OLud('refy'))var ol_refy=0; +if(OLud('fgbackground'))var ol_fgbackground=""; +if(OLud('bgbackground'))var ol_bgbackground=""; +if(OLud('cgbackground'))var ol_cgbackground=""; +if(OLud('padxl'))var ol_padxl=1; +if(OLud('padxr'))var ol_padxr=1; +if(OLud('padyt'))var ol_padyt=1; +if(OLud('padyb'))var ol_padyb=1; +if(OLud('fullhtml'))var ol_fullhtml=0; +if(OLud('capicon'))var ol_capicon=""; +if(OLud('frame'))var ol_frame=self; +if(OLud('timeout'))var ol_timeout=0; +if(OLud('delay'))var ol_delay=0; +if(OLud('hauto'))var ol_hauto=0; +if(OLud('vauto'))var ol_vauto=0; +if(OLud('nojustx'))var ol_nojustx=0; +if(OLud('nojusty'))var ol_nojusty=0; +if(OLud('label'))var ol_label=""; +if(OLud('decode'))var ol_decode=0; +// ARRAY CONFIGURATION - See overlibConfig.txt for descriptions. +if(OLud('texts'))var ol_texts=new Array("Text 0","Text 1"); +if(OLud('caps'))var ol_caps=new Array("Caption 0","Caption 1"); +// END CONFIGURATION -- Don't change anything below, all configuration is above. + +// INIT -- Runtime variables. +var o3_text="",o3_cap="",o3_sticky=0,o3_nofollow=0,o3_background="",o3_noclose=0,o3_mouseoff=0, +o3_offdelay=300,o3_hpos=RIGHT,o3_offsetx=10,o3_offsety=10,o3_fgcolor="",o3_bgcolor="", +o3_cgcolor="",o3_textcolor="",o3_capcolor="",o3_closecolor="",o3_width=200,o3_wrap=0, +o3_wrapmax=0,o3_height= -1,o3_border=1,o3_base=0,o3_status="",o3_autostatus=0,o3_snapx=0, +o3_snapy=0,o3_fixx= -1,o3_fixy= -1,o3_relx=null,o3_rely=null,o3_midx=null,o3_midy=null,o3_ref="", +o3_refc='UL',o3_refp='UL',o3_refx=0,o3_refy=0,o3_fgbackground="",o3_bgbackground="", +o3_cgbackground="",o3_padxl=0,o3_padxr=0,o3_padyt=0,o3_padyb=0,o3_fullhtml=0,o3_vpos=BELOW, +o3_capicon="",o3_textfont="Verdana,Arial,Helvetica",o3_captionfont="",o3_closefont="", +o3_textsize=1,o3_captionsize=1,o3_closesize=1,o3_frame=self,o3_timeout=0,o3_delay=0,o3_hauto=0, +o3_vauto=0,o3_nojustx=0,o3_nojusty=0,o3_close="",o3_closeclick=0,o3_closetitle="",o3_fgclass="", +o3_bgclass="",o3_cgclass="",o3_textpadding=2,o3_textfontclass="",o3_captionpadding=2, +o3_captionfontclass="",o3_closefontclass="",o3_capbelow=0,o3_label="",o3_decode=0, +CSSOFF=DONOTHING,CSSCLASS=DONOTHING,OLdelayid=0,OLtimerid=0,OLshowid=0,OLndt=0,over=null, +OLfnRef="",OLhover=0,OLx=0,OLy=0,OLshowingsticky=0,OLallowmove=0,OLcC=null, +OLua=navigator.userAgent.toLowerCase(), +OLns4=(navigator.appName=='Netscape'&&parseInt(navigator.appVersion)==4), +OLns6=(document.getElementById)?1:0, +OLie4=(document.all)?1:0, +OLgek=(OLv=OLua.match(/gecko\/(\d{8})/i))?parseInt(OLv[1]):0, +OLmac=(OLua.indexOf('mac')>=0)?1:0, +OLsaf=(OLua.indexOf('safari')>=0)?1:0, +OLkon=(OLua.indexOf('konqueror')>=0)?1:0, +OLkht=(OLsaf||OLkon)?1:0, +OLopr=(OLua.indexOf('opera')>=0)?1:0, +OLop7=(OLopr&&document.createTextNode)?1:0; +if(OLopr){OLns4=OLns6=0;if(!OLop7)OLie4=0;} +var OLieM=((OLie4&&OLmac)&&!(OLkht||OLopr))?1:0, +OLie5=0,OLie55=0;if(OLie4&&!OLop7){ +if((OLv=OLua.match(/msie (\d\.\d+)\.*/i))&&(OLv=parseFloat(OLv[1]))>=5.0){ +OLie5=1;OLns6=0;if(OLv>=5.5)OLie55=1;}if(OLns6)OLie4=0;} +if(OLns4)window.onresize=function(){location.reload();} +var OLchkMh=1,OLdw; +if(OLns4||OLie4||OLns6)OLmh(); +else{overlib=nd=cClick=OLpageDefaults=no_overlib;} + +/* + PUBLIC FUNCTIONS +*/ +// Loads defaults then args into runtime variables. +function overlib(){ +if(!(OLloaded&&OLgateOK))return; +if((OLexclusivePI)&&OLisExclusive(arguments))return true; +if(OLchkMh)OLmh(); +if(OLndt&&!OLtimerid)OLndt=0;if(over)cClick(); +OLload(OLp1or2);OLload(OLp1); +OLfnRef="";OLhover=0; +OLsetRunTimeVar(); +OLparseTokens('o3_',arguments); +if(!(over=OLmkLyr()))return false; +if(o3_decode)OLdecode(); +if(OLprintPI)OLchkPrint(); +if(OLbubblePI)OLchkForBubbleEffect(); +if(OLdebugPI)OLsetDebugCanShow(); +if(OLshadowPI)OLinitShadow(); +if(OLiframePI)OLinitIfs(); +if(OLfilterPI)OLinitFilterLyr(); +if(OLexclusivePI&&o3_exclusive&&o3_exclusivestatus!="")o3_status=o3_exclusivestatus; +else if(o3_autostatus==2&&o3_cap!="")o3_status=o3_cap; +else if(o3_autostatus==1&&o3_text!="")o3_status=o3_text; +if(!o3_delay){return OLmain(); +}else{OLdelayid=setTimeout("OLmain()",o3_delay); +if(o3_status!=""){self.status=o3_status;return true;} +else if(!(OLop7&&event&&event.type=='mouseover'))return false;} +} + +// Clears popups if appropriate +function nd(time){ +if(OLloaded&&OLgateOK){if(!((OLexclusivePI)&&OLisExclusive())){ +if(time&&over&&!o3_delay){if(OLtimerid>0)clearTimeout(OLtimerid); +OLtimerid=(OLhover&&o3_frame==self&&!OLcursorOff())?0: +setTimeout("cClick()",(o3_timeout=OLndt=time));}else{ +if(!OLshowingsticky){OLallowmove=0;if(over)OLhideObject(over);}}}} +return false; +} + +// Close function for stickies +function cClick(){ +if(OLloaded&&OLgateOK){OLhover=0;if(over){ +if(OLovertwoPI&&over==over2)cClick2();OLhideObject(over);OLshowingsticky=0;}} +return false; +} + +// Sets page-specific defaults. +function OLpageDefaults(){ +OLparseTokens('ol_',arguments); +} + +// For unsupported browsers. +function no_overlib(){return false;} + +/* + OVERLIB MAIN FUNCTION SET +*/ +function OLmain(){ +o3_delay=0; +if(o3_frame==self){if(o3_noclose)OLoptMOUSEOFF(0);else if(o3_mouseoff)OLoptMOUSEOFF(1);} +if(o3_sticky)OLshowingsticky=1;OLdoLyr();OLallowmove=0;if(o3_timeout>0){ +if(OLtimerid>0)clearTimeout(OLtimerid);OLtimerid=setTimeout("cClick()",o3_timeout);} +if(o3_ref){OLrefXY=OLgetRefXY(o3_ref);if(OLrefXY[0]==null){o3_ref="";o3_midx=0;o3_midy=0;}} +OLdisp(o3_status);if(OLdraggablePI)OLcheckDrag(); +if(o3_status!="")return true;else if(!(OLop7&&event&&event.type=='mouseover'))return false; +} + +// Loads o3_ variables +function OLload(c){var i,m=c.split(',');for(i=0;i');d=fd.all[id]; +}else{d=fd.createElement('div');if(d){d.id=id;fd.body.appendChild(d);}}if(!d)return null; +if(OLns4)d.zIndex=z;else{var o=d.style;o.position='absolute';o.visibility='hidden';o.zIndex=z;}} +return d; +} + +// Creates and writes layer content +function OLdoLyr(){ +if(o3_background==''&&!o3_fullhtml){ +if(o3_fgbackground!='')o3_fgbackground=' background="'+o3_fgbackground+'"'; +if(o3_bgbackground!='')o3_bgbackground=' background="'+o3_bgbackground+'"'; +if(o3_cgbackground!='')o3_cgbackground=' background="'+o3_cgbackground+'"'; +if(o3_fgcolor!='')o3_fgcolor=' bgcolor="'+o3_fgcolor+'"'; +if(o3_bgcolor!='')o3_bgcolor=' bgcolor="'+o3_bgcolor+'"'; +if(o3_cgcolor!='')o3_cgcolor=' bgcolor="'+o3_cgcolor+'"'; +if(o3_height>0)o3_height=' height="'+o3_height+'"';else o3_height='';} +if(!OLns4)OLrepositionTo(over,(OLns6?20:0),0);var lyrHtml=OLdoLGF(); +if(o3_sticky&&OLtimerid>0){clearTimeout(OLtimerid);OLtimerid=0;} +if(o3_wrap&&!o3_fullhtml){OLlayerWrite(lyrHtml); +o3_width=(OLns4?over.clip.width:over.offsetWidth); +if(OLns4&&o3_wrapmax<1)o3_wrapmax=o3_frame.innerWidth-40; +o3_wrap=0;if(o3_wrapmax>0&&o3_width>o3_wrapmax)o3_width=o3_wrapmax;lyrHtml=OLdoLGF();} +OLlayerWrite(lyrHtml);o3_width=(OLns4?over.clip.width:over.offsetWidth); +if(OLbubblePI)OLgenerateBubble(lyrHtml); +} + +/* + LAYER GENERATION FUNCTIONS +*/ +// Makes simple table without caption +function OLcontentSimple(txt){ +var t=OLbgLGF()+OLfgLGF(txt)+OLbaseLGF(); +OLsetBackground('');return t; +} + +// Makes table with caption and optional close link +function OLcontentCaption(txt,title,close){ +var closing=(OLprintPI?OLprintCapLGF():''),closeevent='onmouseover',caption,t, +cC='javascript:return '+OLfnRef+(OLovertwoPI&&over==over2?'cClick2();':'cClick();'); +if(o3_closeclick)closeevent=(o3_closetitle?'title="'+o3_closetitle+'" ':'')+'onclick'; +if(o3_capicon!='')o3_capicon=' '; +if(close){closing+='':'>'+OLlgfUtil(0,'','span',o3_closecolor,o3_closefont,o3_closesize))+close ++(o3_closefontclass?'':OLlgfUtil(1,'','span'))+'';} +caption='':'>')+(o3_captionfontclass?'
':'' ++OLlgfUtil(0,'','div',o3_capcolor,o3_captionfont,o3_captionsize))+o3_capicon+title ++OLlgfUtil(1,'','div')+(o3_captionfontclass?'':'')+''+closing+''; +t=OLbgLGF()+(o3_capbelow?OLfgLGF(txt)+caption:caption+OLfgLGF(txt))+OLbaseLGF(); +OLsetBackground('');return t; +} + +// For BACKGROUND and FULLHTML commands +function OLcontentBackground(txt, image, hasfullhtml){ +var t;if(hasfullhtml){t=txt;}else{t='' ++OLlgfUtil(0,o3_textfontclass,'div',o3_textcolor,o3_textfont,o3_textsize)+txt+ +OLlgfUtil(1,'','div')+'';} +OLsetBackground(image);return t; +} + +// LGF utilities +function OLbgLGF(){ +return ''; +} +function OLfgLGF(t){ +return '' ++OLlgfUtil(0,o3_textfontclass,'div',o3_textcolor,o3_textfont,o3_textsize)+t ++(OLprintPI?OLprintFgLGF():'')+OLlgfUtil(1,'','div')+''; +} +function OLlgfUtil(end,tfc,ele,col,fac,siz){ +if(end)return ('');else return (tfc?'
': +('<'+(OLns4?'font color="'+col+'" face="'+OLquoteMultiNameFonts(fac)+'" size="'+siz:ele ++' style="color:'+col+';font-family:'+OLquoteMultiNameFonts(fac)+';font-size:'+siz+';' ++(ele=='span'?'text-decoration:underline;':''))+'">')); +} +function OLquoteMultiNameFonts(f){ +var i,v,pM=f.split(','); +for(i=0;i0&&!o3_wrap)?('
'):'')+''; +} +function OLwd(a){ +return(o3_wrap?'':' width="'+(!a?'100%':(a==1?o3_width:(o3_width-o3_padxl-o3_padxr)))+'"'); +} + +// Loads image into the div. +function OLsetBackground(i){ +if(i==''){if(OLns4)over.background.src=null; +else{if(OLns6)over.style.width='';over.style.backgroundImage='none';} +}else{if(OLns4)over.background.src=i; +else{if(OLns6)over.style.width=o3_width+'px';over.style.backgroundImage='url('+i+')';}} +} + +/* + HANDLING FUNCTIONS +*/ +// Displays layer +function OLdisp(s){ +if(!OLallowmove){if(OLshadowPI)OLdispShadow();if(OLiframePI)OLdispIfs();OLplaceLayer(); +if(OLndt)OLshowObject(over);else OLshowid=setTimeout("OLshowObject(over)",1); +OLallowmove=(o3_sticky||o3_nofollow)?0:1;}OLndt=0;if(s!="")self.status=s; +} + +// Decides placement of layer. +function OLplaceLayer(){ +var snp,X,Y,pgLeft,pgTop,pWd=o3_width,pHt,iWd=100,iHt=100,SB=0,LM=0,CX=0,TM=0,BM=0,CY=0, +o=OLfd(),nsb=(OLgek>=20010505&&!o3_frame.scrollbars.visible)?1:0; +if(!OLkht&&o&&o.clientWidth)iWd=o.clientWidth; +else if(o3_frame.innerWidth){SB=Math.ceil(1.4*(o3_frame.outerWidth-o3_frame.innerWidth)); +if(SB>20)SB=20;iWd=o3_frame.innerWidth;} +pgLeft=(OLie4)?o.scrollLeft:o3_frame.pageXOffset; +if(OLie55&&OLfilterPI&&o3_filter&&o3_filtershadow)SB=CX=5;else +if((OLshadowPI)&&bkdrop&&o3_shadow&&o3_shadowx){SB+=((o3_shadowx>0)?o3_shadowx:0); +LM=((o3_shadowx<0)?Math.abs(o3_shadowx):0);CX=Math.abs(o3_shadowx);} +if(o3_ref!=""||o3_fixx> -1||o3_relx!=null||o3_midx!=null){ +if(o3_ref!=""){X=OLrefXY[0];if(OLie55&&OLfilterPI&&o3_filter&&o3_filtershadow){ +if(o3_refp=='UR'||o3_refp=='LR')X-=5;} +else if((OLshadowPI)&&bkdrop&&o3_shadow&&o3_shadowx){ +if(o3_shadowx<0&&(o3_refp=='UL'||o3_refp=='LL'))X-=o3_shadowx;else +if(o3_shadowx>0&&(o3_refp=='UR'||o3_refp=='LR'))X-=o3_shadowx;} +}else{if(o3_midx!=null){ +X=parseInt(pgLeft+((iWd-pWd-SB-LM)/2)+o3_midx); +}else{if(o3_relx!=null){ +if(o3_relx>=0)X=pgLeft+o3_relx+LM;else X=pgLeft+o3_relx+iWd-pWd-SB; +}else{X=o3_fixx+LM;}}} +}else{ +if(o3_hauto){ +if(o3_hpos==LEFT&&OLx-pgLeftiWd/2&&OLx+pWd+o3_offsetx>pgLeft+iWd-SB)o3_hpos=LEFT;} +X=(o3_hpos==CENTER)?parseInt(OLx-((pWd+CX)/2)+o3_offsetx): +(o3_hpos==LEFT)?OLx-o3_offsetx-pWd:OLx+o3_offsetx; +if(o3_snapx>1){ +snp=X % o3_snapx; +if(o3_hpos==LEFT){X=X-(o3_snapx+snp);}else{X=X+(o3_snapx-snp);}}} +if(!o3_nojustx&&X+pWd>pgLeft+iWd-SB) +X=iWd+pgLeft-pWd-SB;if(!o3_nojustx&&X-LM0)?o3_shadowy:0;CY=Math.abs(o3_shadowy);} +if(o3_ref!=""||o3_fixy> -1||o3_rely!=null||o3_midy!=null){ +if(o3_ref!=""){Y=OLrefXY[1];if(OLie55&&OLfilterPI&&o3_filter&&o3_filtershadow){ +if(o3_refp=='LL'||o3_refp=='LR')Y-=5;}else if((OLshadowPI)&&bkdrop&&o3_shadow&&o3_shadowy){ +if(o3_shadowy<0&&(o3_refp=='UL'||o3_refp=='UR'))Y-=o3_shadowy;else +if(o3_shadowy>0&&(o3_refp=='LL'||o3_refp=='LR'))Y-=o3_shadowy;} +}else{if(o3_midy!=null){ +Y=parseInt(pgTop+((iHt-pHt-CY)/2)+o3_midy); +}else{if(o3_rely!=null){ +if(o3_rely>=0)Y=pgTop+o3_rely+TM;else Y=pgTop+o3_rely+iHt-pHt-BM;}else{ +Y=o3_fixy+TM;}}} +}else{ +if(o3_vauto){ +if(o3_vpos==ABOVE&&OLy-pgTopiHt/2&&OLy+pHt+o3_offsety+((OLns4||OLkht)?17:0)>pgTop+iHt-BM) +o3_vpos=ABOVE;}Y=(o3_vpos==VCENTER)?parseInt(OLy-((pHt+CY)/2)+o3_offsety): +(o3_vpos==ABOVE)?OLy-(pHt+o3_offsety+BM):OLy+o3_offsety+TM; +if(o3_snapy>1){ +snp=Y % o3_snapy; +if(pHt>0&&o3_vpos==ABOVE){Y=Y-(o3_snapy+snp);}else{Y=Y+(o3_snapy-snp);}}} +if(!o3_nojusty&&Y+pHt+BM>pgTop+iHt)Y=pgTop+iHt-pHt-BM;if(!o3_nojusty&&Y-TM1){ +ob=o[0];rXY[0]+=o[0].x+o[1].pageX;rXY[1]+=o[0].y+o[1].pageY; +}else{if((o.toString().indexOf('Image')!= -1)||(o.toString().indexOf('Anchor')!= -1)){ +rXY[0]+=o.x;rXY[1]+=o.y;}else{rXY[0]+=o.pageX;rXY[1]+=o.pageY;}} +}else{rXY[0]+=OLpageLoc(o,'Left');rXY[1]+=OLpageLoc(o,'Top');} +of=OLgetRefOffsets(ob);rXY[0]+=of[0];rXY[1]+=of[1]; +return rXY; +} +function OLgetRef(l){var r=OLgetRefById(l);return (r)?r:OLgetRefByName(l);} + +// Seeks REFerence by id +function OLgetRefById(l,d){ +var r="",j;l=(l||'overDiv');d=(d||o3_frame.document); +if(OLie4&&d.all){return d.all[l];}else if(d.getElementById){return d.getElementById(l); +}else if(d.layers&&d.layers.length>0){if(d.layers[l])return d.layers[l]; +for(j=0;j0){ +for(j=0;j0)return r;else if(r)return [r,d.layers[j]];}} +return null; +} + +// Gets layer vs REFerence offsets +function OLgetRefOffsets(o){ +var c=o3_refc.toUpperCase(),p=o3_refp.toUpperCase(),W=0,H=0,pW=0,pH=0,of=[0,0]; +pW=(OLbubblePI&&o3_bubble)?o3_width:OLns4?over.clip.width:over.offsetWidth; +pH=(OLbubblePI&&o3_bubble)?OLbubbleHt:OLns4?over.clip.height:over.offsetHeight; +if((!OLop7)&&o.toString().indexOf('Image')!= -1){W=o.width;H=o.height; +}else if((!OLop7)&&o.toString().indexOf('Anchor')!= -1){c=o3_refc='UL';}else{ +W=(OLns4)?o.clip.width:o.offsetWidth;H=(OLns4)?o.clip.height:o.offsetHeight;} +if((OLns4||(OLns6&&OLgek))&&o.border){W+=2*parseInt(o.border);H+=2*parseInt(o.border);} +if(c=='UL'){of=(p=='UR')?[-pW,0]:(p=='LL')?[0,-pH]:(p=='LR')?[-pW,-pH]:[0,0]; +}else if(c=='UR'){of=(p=='UR')?[W-pW,0]:(p=='LL')?[W,-pH]:(p=='LR')?[W-pW,-pH]:[W,0]; +}else if(c=='LL'){of=(p=='UR')?[-pW,H]:(p=='LL')?[0,H-pH]:(p=='LR')?[-pW,H-pH]:[0,H]; +}else if(c=='LR'){of=(p=='UR')?[W-pW,H]:(p=='LL')?[W,H-pH]:(p=='LR')?[W-pW,H-pH]: +[W,H];} +return of; +} + +// Gets x or y location of object +function OLpageLoc(o,t){ +var l=0;while(o.offsetParent&&o.offsetParent.tagName.toLowerCase()!='html'){ +l+=o['offset'+t];o=o.offsetParent;}l+=o['offset'+t]; +return l; +} + +// Moves layer +function OLmouseMove(e){ +var e=(e||event); +OLcC=(OLovertwoPI&&over2&&over==over2?cClick2:cClick); +OLx=(e.pageX||e.clientX+OLfd().scrollLeft);OLy=(e.pageY||e.clientY+OLfd().scrollTop); +if((OLallowmove&&over)&&(o3_frame==self||over==OLgetRefById())){ +OLplaceLayer();if(OLhidePI)OLhideUtil(0,1,1,0,0,0);} +if(OLhover&&over&&o3_frame==self&&OLcursorOff())if(o3_offdelay<1)OLcC();else +{if(OLtimerid>0)clearTimeout(OLtimerid);OLtimerid=setTimeout("OLcC()",o3_offdelay);} +} + +// Capture mouse and chain other scripts. +function OLmh(){ +var fN,f,j,k,s,mh=OLmouseMove,w=(OLns4&&window.onmousemove),re=/function[ ]*(\w*)\(/; +OLdw=document;if(document.onmousemove||w){if(w)OLdw=window;f=OLdw.onmousemove.toString(); +fN=f.match(re);if(!fN||fN[1]=='anonymous'||fN[1]=='OLmouseMove'){OLchkMh=0;return;} +if(fN[1])s=fN[1]+'(e)';else{j=f.indexOf('{');k=f.lastIndexOf('}')+1;s=f.substring(j,k);} +s+=';OLmouseMove(e);';mh=new Function('e',s);} +OLdw.onmousemove=mh;if(OLns4)OLdw.captureEvents(Event.MOUSEMOVE); +} + +/* + PARSING +*/ +function OLparseTokens(pf,ar){ +var i,v,md= -1,par=(pf!='ol_'),p=OLpar,q=OLparQuo,t=OLtoggle;OLudf=(par&&!ar.length?1:0); +for(i=0;i< ar.length;i++){if(md<0){if(typeof ar[i]=='number'){OLudf=(par?1:0);i--;} +else{switch(pf){case 'ol_':ol_text=ar[i];break;default:o3_text=ar[i];}}md=0; +}else{ +if(ar[i]==INARRAY){OLudf=0;eval(pf+'text=ol_texts['+ar[++i]+']');continue;} +if(ar[i]==CAPARRAY){eval(pf+'cap=ol_caps['+ar[++i]+']');continue;} +if(ar[i]==CAPTION){q(ar[++i],pf+'cap');continue;} +if(Math.abs(ar[i])==STICKY){t(ar[i],pf+'sticky');continue;} +if(Math.abs(ar[i])==NOFOLLOW){t(ar[i],pf+'nofollow');continue;} +if(ar[i]==BACKGROUND){q(ar[++i],pf+'background');continue;} +if(Math.abs(ar[i])==NOCLOSE){t(ar[i],pf+'noclose');continue;} +if(Math.abs(ar[i])==MOUSEOFF){t(ar[i],pf+'mouseoff');continue;} +if(ar[i]==OFFDELAY){p(ar[++i],pf+'offdelay');continue;} +if(ar[i]==RIGHT||ar[i]==LEFT||ar[i]==CENTER){p(ar[i],pf+'hpos');continue;} +if(ar[i]==OFFSETX){p(ar[++i],pf+'offsetx');continue;} +if(ar[i]==OFFSETY){p(ar[++i],pf+'offsety');continue;} +if(ar[i]==FGCOLOR){q(ar[++i],pf+'fgcolor');continue;} +if(ar[i]==BGCOLOR){q(ar[++i],pf+'bgcolor');continue;} +if(ar[i]==CGCOLOR){q(ar[++i],pf+'cgcolor');continue;} +if(ar[i]==TEXTCOLOR){q(ar[++i],pf+'textcolor');continue;} +if(ar[i]==CAPCOLOR){q(ar[++i],pf+'capcolor');continue;} +if(ar[i]==CLOSECOLOR){q(ar[++i],pf+'closecolor');continue;} +if(ar[i]==WIDTH){p(ar[++i],pf+'width');continue;} +if(Math.abs(ar[i])==WRAP){t(ar[i],pf+'wrap');continue;} +if(ar[i]==WRAPMAX){p(ar[++i],pf+'wrapmax');continue;} +if(ar[i]==HEIGHT){p(ar[++i],pf+'height');continue;} +if(ar[i]==BORDER){p(ar[++i],pf+'border');continue;} +if(ar[i]==BASE){p(ar[++i],pf+'base');continue;} +if(ar[i]==STATUS){q(ar[++i],pf+'status');continue;} +if(Math.abs(ar[i])==AUTOSTATUS){v=pf+'autostatus'; +eval(v+'=('+ar[i]+'<0)?('+v+'==2?2:0):('+v+'==1?0:1)');continue;} +if(Math.abs(ar[i])==AUTOSTATUSCAP){v=pf+'autostatus'; +eval(v+'=('+ar[i]+'<0)?('+v+'==1?1:0):('+v+'==2?0:2)');continue;} +if(ar[i]==CLOSETEXT){q(ar[++i],pf+'close');continue;} +if(ar[i]==SNAPX){p(ar[++i],pf+'snapx');continue;} +if(ar[i]==SNAPY){p(ar[++i],pf+'snapy');continue;} +if(ar[i]==FIXX){p(ar[++i],pf+'fixx');continue;} +if(ar[i]==FIXY){p(ar[++i],pf+'fixy');continue;} +if(ar[i]==RELX){p(ar[++i],pf+'relx');continue;} +if(ar[i]==RELY){p(ar[++i],pf+'rely');continue;} +if(ar[i]==MIDX){p(ar[++i],pf+'midx');continue;} +if(ar[i]==MIDY){p(ar[++i],pf+'midy');continue;} +if(ar[i]==REF){q(ar[++i],pf+'ref');continue;} +if(ar[i]==REFC){q(ar[++i],pf+'refc');continue;} +if(ar[i]==REFP){q(ar[++i],pf+'refp');continue;} +if(ar[i]==REFX){p(ar[++i],pf+'refx');continue;} +if(ar[i]==REFY){p(ar[++i],pf+'refy');continue;} +if(ar[i]==FGBACKGROUND){q(ar[++i],pf+'fgbackground');continue;} +if(ar[i]==BGBACKGROUND){q(ar[++i],pf+'bgbackground');continue;} +if(ar[i]==CGBACKGROUND){q(ar[++i],pf+'cgbackground');continue;} +if(ar[i]==PADX){p(ar[++i],pf+'padxl');p(ar[++i],pf+'padxr');continue;} +if(ar[i]==PADY){p(ar[++i],pf+'padyt');p(ar[++i],pf+'padyb');continue;} +if(Math.abs(ar[i])==FULLHTML){t(ar[i],pf+'fullhtml');continue;} +if(ar[i]==BELOW||ar[i]==ABOVE||ar[i]==VCENTER){p(ar[i],pf+'vpos');continue;} +if(ar[i]==CAPICON){q(ar[++i],pf+'capicon');continue;} +if(ar[i]==TEXTFONT){q(ar[++i],pf+'textfont');continue;} +if(ar[i]==CAPTIONFONT){q(ar[++i],pf+'captionfont');continue;} +if(ar[i]==CLOSEFONT){q(ar[++i],pf+'closefont');continue;} +if(ar[i]==TEXTSIZE){q(ar[++i],pf+'textsize');continue;} +if(ar[i]==CAPTIONSIZE){q(ar[++i],pf+'captionsize');continue;} +if(ar[i]==CLOSESIZE){q(ar[++i],pf+'closesize');continue;} +if(ar[i]==TIMEOUT){p(ar[++i],pf+'timeout');continue;} +if(ar[i]==DELAY){p(ar[++i],pf+'delay');continue;} +if(Math.abs(ar[i])==HAUTO){t(ar[i],pf+'hauto');continue;} +if(Math.abs(ar[i])==VAUTO){t(ar[i],pf+'vauto');continue;} +if(Math.abs(ar[i])==NOJUSTX){t(ar[i],pf+'nojustx');continue;} +if(Math.abs(ar[i])==NOJUSTY){t(ar[i],pf+'nojusty');continue;} +if(Math.abs(ar[i])==CLOSECLICK){t(ar[i],pf+'closeclick');continue;} +if(ar[i]==CLOSETITLE){q(ar[++i],pf+'closetitle');continue;} +if(ar[i]==FGCLASS){q(ar[++i],pf+'fgclass');continue;} +if(ar[i]==BGCLASS){q(ar[++i],pf+'bgclass');continue;} +if(ar[i]==CGCLASS){q(ar[++i],pf+'cgclass');continue;} +if(ar[i]==TEXTPADDING){p(ar[++i],pf+'textpadding');continue;} +if(ar[i]==TEXTFONTCLASS){q(ar[++i],pf+'textfontclass');continue;} +if(ar[i]==CAPTIONPADDING){p(ar[++i],pf+'captionpadding');continue;} +if(ar[i]==CAPTIONFONTCLASS){q(ar[++i],pf+'captionfontclass');continue;} +if(ar[i]==CLOSEFONTCLASS){q(ar[++i],pf+'closefontclass');continue;} +if(Math.abs(ar[i])==CAPBELOW){t(ar[i],pf+'capbelow');continue;} +if(ar[i]==LABEL){q(ar[++i],pf+'label');continue;} +if(Math.abs(ar[i])==DECODE){t(ar[i],pf+'decode');continue;} +if(ar[i]==DONOTHING){continue;} +i=OLparseCmdLine(pf,i,ar);}} +if((OLfunctionPI)&&OLudf&&o3_function)o3_text=o3_function(); +if(pf=='o3_')OLfontSize(); +} +function OLpar(a,v){eval(v+'='+a);} +function OLparQuo(a,v){eval(v+"='"+OLescSglQt(a)+"'");} +function OLescSglQt(s){return s.toString().replace(/'/g,"\\'");} +function OLtoggle(a,v){eval(v+'=('+v+'==0&&'+a+'>=0)?1:0');} +function OLhasDims(s){return /[%\-a-z]+$/.test(s);} +function OLfontSize(){ +var i;if(OLhasDims(o3_textsize)){if(OLns4)o3_textsize="2";}else +if(!OLns4){i=parseInt(o3_textsize);o3_textsize=(i>0&&i<8)?OLpct[i]:OLpct[0];} +if(OLhasDims(o3_captionsize)){if(OLns4)o3_captionsize="2";}else +if(!OLns4){i=parseInt(o3_captionsize);o3_captionsize=(i>0&&i<8)?OLpct[i]:OLpct[0];} +if(OLhasDims(o3_closesize)){if(OLns4)o3_closesize="2";}else +if(!OLns4){i=parseInt(o3_closesize);o3_closesize=(i>0&&i<8)?OLpct[i]:OLpct[0];} +if(OLprintPI)OLprintDims(); +} +function OLdecode(){ +var re=/%[0-9A-Fa-f]{2,}/,t=o3_text,c=o3_cap,u=unescape,d=!OLns4&&(!OLgek||OLgek>=20020826) +&&typeof decodeURIComponent?decodeURIComponent:u;if(typeof(window.TypeError)=='function'){ +if(re.test(t)){eval(new Array('try{','o3_text=d(t);','}catch(e){','o3_text=u(t);', +'}').join('\n'))};if(c&&re.test(c)){eval(new Array('try{','o3_cap=d(c);','}catch(e){', +'o3_cap=u(c);','}').join('\n'))}}else{if(re.test(t))o3_text=u(t);if(c&&re.test(c))o3_cap=u(c);} +} + +/* + LAYER FUNCTIONS +*/ +// Writes to layer +function OLlayerWrite(t){ +t+="\n"; +if(OLns4){over.document.write(t);over.document.close(); +}else if(typeof over.innerHTML!='undefined'){if(OLieM)over.innerHTML='';over.innerHTML=t; +}else{range=o3_frame.document.createRange();range.setStartAfter(over); +domfrag=range.createContextualFragment(t); +while(over.hasChildNodes()){over.removeChild(over.lastChild);} +over.appendChild(domfrag);} +if(OLprintPI)over.print=o3_print?t:null; +} + +// Makes object visible +function OLshowObject(o){ +OLshowid=0;o=(OLns4)?o:o.style; +if(((OLfilterPI)&&!OLchkFilter(o))||!OLfilterPI)o.visibility="visible"; +if(OLshadowPI)OLshowShadow();if(OLiframePI)OLshowIfs();if(OLhidePI)OLhideUtil(1,1,0); +} + +// Hides object +function OLhideObject(o){ +if(OLshowid>0){clearTimeout(OLshowid);OLshowid=0;} +if(OLtimerid>0)clearTimeout(OLtimerid);if(OLdelayid>0)clearTimeout(OLdelayid); +OLtimerid=0;OLdelayid=0;self.status="";o3_label=ol_label; +if(o3_frame!=self)o=OLgetRefById(); +if(o){if(o.onmouseover)o.onmouseover=null; +if(OLscrollPI&&o==over)OLclearScroll(); +if(OLdraggablePI)OLclearDrag(); +if(OLfilterPI)OLcleanupFilter(o);if(OLshadowPI)OLhideShadow(); +var os=(OLns4)?o:o.style;os.visibility="hidden"; +if(OLhidePI&&o==over)OLhideUtil(0,0,1);if(OLiframePI)OLhideIfs(o);} +} + +// Moves layer +function OLrepositionTo(o,xL,yL){ +o=(OLns4)?o:o.style; +o.left=(OLns4?xL:xL+'px'); +o.top=(OLns4?yL:yL+'px'); +} + +// Handle NOCLOSE-MOUSEOFF +function OLoptMOUSEOFF(c){ +if(!c)o3_close=""; +over.onmouseover=function(){OLhover=1;if(OLtimerid>0){clearTimeout(OLtimerid);OLtimerid=0;}} +} +function OLcursorOff(){ +var o=(OLns4?over:over.style),pHt=OLns4?over.clip.height:over.offsetHeight, +left=parseInt(o.left),top=parseInt(o.top), +right=left+o3_width,bottom=top+((OLbubblePI&&o3_bubble)?OLbubbleHt:pHt); +if(OLxright||OLybottom)return true; +return false; +} + +/* + REGISTRATION +*/ +function OLsetRunTimeVar(){ +if(OLrunTime.length)for(var k=0;k-1){i=j;break;}}} +return i; +} +function OLregCmds(c){ +if(typeof c!='string')return; +var pM=c.split(',');pMtr=pMtr.concat(pM); +for(var i=0;i0)bPadDiff=(bHtDiff<2)?0:parseInt(0.5*bHtDiff); +Y=(bHtDiff<0)?fc*bTopPad[OLbI]:fc*bTopPad[OLbI]+bPadDiff; +X=fc*bLeftPad[OLbI]; +Y=Math.round(Y); +X=Math.round(X); +o3_width=fc*bWd[OLbI]; +OLbubbleHt=fc*bHt[OLbI]; +txt=''+(OLns4?'
': +'
')+content+'
'; +OLlayerWrite(txt); +if(OLns4){ +bCobj=over.document.layers['bContent']; +if(typeof bCobj=='undefined')return; +bCobj.top=Y; +bCobj.left=X; +bCobj.clip.width=fc*OLbContentWd[OLbI]; +bCobj.zIndex=1;} +if(fc*bArwTipY[OLbI]<0.5*fc*bHt[OLbI])sY=fc*bArwTipY[OLbI]; +else sY= -(fc*bHt[OLbI]+20); +o3_offsetx -=fc*bArwTipX[OLbI]; +o3_offsety +=sY; +} + +function OLdoRoundCorners(content) { +var txt,wd,ht,o=OLbubbleImg[OLbI]; +wd=(OLns4)?over.clip.width:over.offsetWidth; +ht=(OLns4)?over.clip.height:over.offsetHeight; +txt='' ++'' ++''+'
'+content ++'
' ++'
'; +OLlayerWrite(txt); +o3_width=wd+28; +OLbubbleHt=ht+28; +} + +function OLresizeBubble(h1,dF,fold){ +var df,h2,fnew,alpha,cnt=0; +while(cnt<2){ +df= -OLsignOf(h1)*dF; +fnew=fold+df; +h2=OLgetHeightDiff(fnew)[0]; +if(Math.abs(h2)<11)break; +if(OLsignOf(h1)!=OLsignOf(h2)){ +alpha=Math.abs(h1)/(Math.abs(h1)+Math.abs(h2)); +if(h1<0)fnew=alpha*fnew+(1.0-alpha)*fold; +else fnew=(1.0-alpha)*fnew+alpha*fold; +}else{ +alpha=Math.abs(h1)/(Math.abs(h2)-Math.abs(h1)); +if(h1<0)fnew=(1.0+alpha)*fold-alpha*fnew; +else fnew=(1.0+alpha)*fnew-alpha*fold;} +fold=fnew; +h1=h2; +dF*=0.5; +cnt++;} +return fnew; +} + +function OLgetHeightDiff(f){ +var lyrhtml; +o3_width=f*OLcontentWidth[OLbI]; +lyrhtml=OLcontentSimple(o3_text); +OLlayerWrite(lyrhtml) +return [f*OLcontentHeight[OLbI]-((OLns4)?over.clip.height:over.offsetHeight),lyrhtml]; +} + +function OLsignOf(x){ +return (x<0)? -1:1; +} + +OLregRunTimeFunc(OLloadBubble); +OLregCmdLineFunc(OLparseBubble); + +if(OLns4) +document.write( +'