You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2010/03/29 03:14:49 UTC
svn commit: r928555 [10/16] - in
/myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources:
oam.custom.calendar.DB/ oam.custom.calendar.WH/ oam.custom.calendar.images/
oam.custom.inputHtml.kupudrawers/ oam.custom.inputHtml.kupuimages/ oam.cu...
Added: myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.inputHtml/kupustart_multi.js
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.inputHtml/kupustart_multi.js?rev=928555&view=auto
==============================================================================
--- myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.inputHtml/kupustart_multi.js (added)
+++ myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.inputHtml/kupustart_multi.js Mon Mar 29 01:14:43 2010
@@ -0,0 +1,54 @@
+/*****************************************************************************
+ *
+ * Copyright (c) 2003-2005 Kupu Contributors. All rights reserved.
+ *
+ * This software is distributed under the terms of the Kupu
+ * License. See LICENSE.txt for license text. For a list of Kupu
+ * Contributors see CREDITS.txt.
+ *
+ *****************************************************************************/
+// $Id$
+
+function startKupu() {
+ // initialize the editor, this version groks an array of iframeids
+ var iframeids = ['kupu_1', 'kupu_2', 'kupu_3'];
+ var kupu = initKupu(iframeids);
+
+ // if there's no global 'i18n_message_catalog' variable available, don't
+ // try to load any translations
+ if (!window.i18n_message_catalog) {
+ continueStartKupu(kupu);
+ return kupu;
+ };
+ // loading will be done asynchronously (to keep Mozilla from freezing)
+ // so we'll continue in a follow-up function (continueStartKupu() below)
+ var handler = function(request) {
+ if (this.readyState == 4) {
+ var status = this.status;
+ if (status != '200') {
+ alert(_('Error loading translation (status ${status} ' +
+ '), falling back to english'), {'status': status});
+ continueStartKupu(kupu);
+ return;
+ };
+ var dom = this.responseXML;
+ window.i18n_message_catalog.initialize(dom);
+ continueStartKupu(kupu);
+ };
+ };
+ var request = new XMLHttpRequest();
+ request.onreadystatechange = (new ContextFixer(handler, request)).execute;
+ request.open('GET', 'kupu.pox', true);
+ request.send('');
+
+ // we need to return a reference to the editor here for certain 'external'
+ // stuff, developers should note that it's not yet initialized though, we
+ // need to wait for i18n data before we can do that
+ return kupu;
+};
+
+function continueStartKupu(kupu) {
+ kupu.initialize();
+
+ return kupu;
+}
Added: myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.inputHtml/kupustyles.css
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.inputHtml/kupustyles.css?rev=928555&view=auto
==============================================================================
--- myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.inputHtml/kupustyles.css (added)
+++ myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.inputHtml/kupustyles.css Mon Mar 29 01:14:43 2010
@@ -0,0 +1,280 @@
+/*****************************************************************************
+ *
+ * Kupu common styles
+ *
+ * Copyright (c) 2003-2005 Kupu Contributors. See CREDITS.txt
+ *
+ * Instead of customizing this file, it is recommended to add your own
+ * CSS file. Feel free to use whole or parts of this for your own
+ * designs, but give credit where credit is due.
+ *
+ *****************************************************************************/
+
+/* $Id: kupustyles.css 928511 2010-03-28 22:53:14Z lu4242 $ */
+
+.kupu-fulleditor, .kupu-toolboxes {
+ font-family: Verdana, "Lucida Grande", Helvetica, Arial, sans-serif;
+ background-color: white;
+}
+
+div.kupu-fulleditor .kupu-fulleditor-zoomed {
+ height: 100%;
+ padding: 0px;
+}
+
+div.kupu-fulleditor .kupu-editorframe {
+ margin: 0px;
+ margin-right: 20em;
+ border: none;
+}
+
+div.kupu-fulleditor-zoomed {
+ z-index: 100;
+ margin: 0; border: none;
+ position: fixed;
+ top: 0; left: 0;
+ background-color: white;
+}
+
+* html div.kupu-fulleditor-zoomed {
+ position: absolute; /* IE */
+}
+
+div.kupu-fulleditor-zoomed .kupu-editor-iframe {
+ border: none;
+ margin: 0;
+}
+
+div.kupu-smalleditor .kupu-editorframe {
+ margin-right: 0.2em;
+}
+
+h1.kupu-toolbox-heading, h1.kupu-toolbox-heading-closed {
+ cursor: default;
+ background-image: url("kupuimages/closed.png");
+ background-repeat: no-repeat;
+ background-position: left;
+}
+
+h1.kupu-toolbox-heading-opened {
+ cursor: default;
+ background-image: url("kupuimages/opened.png");
+ background-repeat: no-repeat;
+ background-position: left;
+}
+
+div.kupu-sourcemode span.kupu-tb-buttongroup,
+body.kupu-fulleditor-zoomed select { display: none; }
+body.kupu-fulleditor-zoomed div.kupu-fulleditor-zoomed select { display: inline; }
+div.kupu-sourcemode select { display: none !IMPORTANT; }
+div.kupu-sourcemode span#kupu-logo,
+div.kupu-sourcemode span#kupu-zoom,
+div.kupu-sourcemode span#kupu-source { display: inline; }
+
+div.kupu-smalleditor {
+ font-family: Verdana, "Lucida Grande", Helvetica, Arial, sans-serif;
+ border: solid 3px ButtonHighlight;
+ margin: 0.2em;
+ height: 100%;
+}
+
+.kupu-tb {
+ padding: 3px;
+ margin-bottom: 0.4em;
+ background-color: ButtonFace;
+ border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;
+}
+
+.kupu-tb-buttons button {
+ color: ButtonText;
+ border: 1px solid ButtonFace;
+ margin-top: 0;
+ margin-left: 0;
+ height: 26px;
+ width: 26px;
+ background-repeat: no-repeat;
+}
+
+.kupu-tb-buttons button:hover {
+ cursor: default;
+ border: 1px solid;
+ border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;
+}
+
+.kupu-tb-buttons button:active {
+ border: 1px solid;
+ border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow;
+}
+
+.kupu-tb-buttongroup {
+ margin-left: 2px;
+ margin-right: 2px;
+}
+
+
+.kupu-bold {background-image: url("kupuimages/bold.png");}
+.kupu-bold-pressed {background-image: url("kupuimages/bold.png"); background-color: white;}
+.kupu-anchors {background-image: url("kupuimages/anchor.png");}
+.kupu-forecolor {background-image: url("kupuimages/text-color.png");}
+.kupu-hilitecolor {background-image: url("kupuimages/background-color.png");}
+
+.kupu-inthyperlink {background-image: url("kupuimages/inthyperlink.png");}
+.kupu-inthyperlink-pressed {background-image: url("kupuimages/inthyperlink.png"); background-color: white}
+.kupu-exthyperlink {background-image: url("kupuimages/exthyperlink.png");}
+.kupu-exthyperlink-pressed {background-image: url("kupuimages/exthyperlink.png"); background-color: white}
+
+.kupu-image {background-image: url("kupuimages/image.png");}
+.kupu-indent {background-image: url("kupuimages/indent.png");}
+.kupu-inserthorizontalrule {background-image: url("kupuimages/hr.png");}
+.kupu-insertorderedlist {background-image: url("kupuimages/ordered-list.png");}
+.kupu-insertunorderedlist {background-image: url("kupuimages/unordered-list.png");}
+.kupu-insertdefinitionlist {background-image: url("kupuimages/definitionlist.png");}
+.kupu-italic {background-image: url("kupuimages/italic.png");}
+.kupu-italic-pressed {background-image: url("kupuimages/italic.png"); background-color: white}
+.kupu-justifycenter {background-image: url("kupuimages/justify-center.png");}
+.kupu-justifyleft {background-image: url("kupuimages/justify-left.png");}
+.kupu-justifyright {background-image: url("kupuimages/justify-right.png");}
+button.kupu-logo {background-image: url("kupuimages/kupu_icon.gif");}
+.kupu-outdent {background-image: url("kupuimages/outdent.png");}
+.kupu-redo {background-image: url("kupuimages/redo.png");}
+.kupu-save {background-image: url("kupuimages/save.png");}
+.kupu-save-and-exit {background-image: url("kupuimages/exit.gif");}
+.kupu-space {background-image: url("kupuimages/space.gif");}
+.kupu-source {background-image: url("kupuimages/view-source.png");}
+.kupu-spellchecker {background-image: url("kupuimages/text-check.png");}
+.kupu-subscript {background-image: url("kupuimages/subscript.png");}
+.kupu-subscript-pressed {background-image: url("kupuimages/subscript.png"); background-color: white}
+.kupu-superscript {background-image: url("kupuimages/superscript.png");}
+.kupu-superscript-pressed {background-image: url("kupuimages/superscript.png"); background-color: white}
+.kupu-table {background-image: url("kupuimages/table.png");}
+.kupu-underline {background-image: url("kupuimages/underline.png");}
+.kupu-underline-pressed {background-image: url("kupuimages/underline.png"); background-color: white}
+.kupu-undo {background-image: url("kupuimages/undo.png");}
+.kupu-removelink {background-image: url("kupuimages/remove.png");}
+.kupu-removeimage {background-image: url("kupuimages/remove.png");}
+.kupu-zoom {background-image: url("kupuimages/zoom-in.gif");}
+.kupu-zoom-pressed {background-image: url("kupuimages/zoom-out.gif");}
+
+.kupu-tb-buttons button.invisible {
+ display: none;
+ /*visibility: hidden;*/
+}
+
+.kupu-tb-buttons button.visible {
+ display: inline;
+}
+
+div.kupu-editorframe {
+ margin-left: 0.3em;
+ margin-bottom: 0.3em;
+ border: solid 2px ButtonFace;
+}
+
+iframe.kupu-editor-iframe {
+ height: 450px;
+ width: 99%;
+}
+
+textarea.kupu-editor-textarea {
+ height: 450px;
+ width: 99%;
+ display: none;
+}
+
+div.kupu-toolboxes {
+ float: right;
+ border: solid 2px ButtonFace;
+ width: 19.4em;
+ margin-right: 0.3em;
+ margin-bottom: 0.3em;
+ font-size: 0.8em;
+}
+
+div.kupu-fulleditor-zoomed div.kupu-toolboxes {
+ display: none;
+}
+
+div.kupu-toolbox, div.kupu-toolbox-active {
+ margin-bottom: 1em;
+}
+
+div.kupu-toolbox h1, div.kupu-toolbox-active h1 {
+ text-align: center;
+ width: 100%;
+ background-color: ButtonFace;
+ margin-top: 0;
+ font-size: 1.1em;
+}
+
+div.kupu-toolbox-label, span.kupu-toolbox-searchterm,
+input.wide, select.wide, textarea.wide, button.kupu-toolbox-action,
+div.kupu-toolbox-results {
+ margin-left: 0.2em;
+ margin-right: 0.2em;
+}
+
+.wide {
+ width: 95%;
+}
+
+div.kupu-toolbox-label {
+ margin-bottom: 0.4em;
+}
+
+.kupu-toolbox-buttons {
+ text-align: center;
+}
+
+.kupu-toolbox-buttons button {
+ width: 45%;
+}
+
+div.kupu-toolbox-results {
+ border: solid 2px ButtonFace;
+ margin-top: 0.8em;
+ text-decoration: underline;
+ padding: 0.2em;
+ display: none;
+}
+
+div.kupu-toolbox table.kupu-toolbox-addtable input,
+div.kupu-toolbox-active table.kupu-toolbox-edittable input {
+ width: 20px;
+}
+
+div.kupu-toolbox-active {
+ background-color: ButtonFace;
+}
+
+.kupu-toolbox-editlink, .kupu-toolbox-edittable,
+.kupu-ulstyles, .kupu-olstyles {
+ display: none;
+}
+
+
+div#kupu-colorchooser {
+ position: absolute;
+ visibility: hidden;
+ border: solid black 1px;
+ background-color: white;
+ padding: 0.2em;
+ font-size: small;
+}
+
+.kupu-toolboxes input, .kupu-toolboxes select, .kupu-toolboxes textarea {
+ font-size: x-small;
+ font-family: Verdana, "Lucida Grande", Helvetica, Arial, sans-serif;
+}
+
+div#kupu-fgcolorchooser div:hover {
+ /* border: outset 1px; */
+}
+
+div.kupu-drawer {
+ overflow: auto;
+}
+
+input.disabled, button.disabled {
+ opacity:0.5;
+ filter:alpha(opacity=50);
+}
Added: myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.inputHtml/kuputoolcollapser.js
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.inputHtml/kuputoolcollapser.js?rev=928555&view=auto
==============================================================================
--- myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.inputHtml/kuputoolcollapser.js (added)
+++ myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.inputHtml/kuputoolcollapser.js Mon Mar 29 01:14:43 2010
@@ -0,0 +1,133 @@
+// turn this into a nice module-like namespace to avoid messing up the global
+// (window) namespace
+this.kuputoolcollapser = new function() {
+ var ToolCollapser = function(toolboxesparentid) {
+ this.parent = document.getElementById(toolboxesparentid);
+ };
+
+ // make the collapser available in the namespace
+ this.Collapser = ToolCollapser;
+
+ ToolCollapser.prototype.initialize = function() {
+ var initial_state = {};
+ if (navigator.cookieEnabled) {
+ var cookie = document.cookie;
+ var reg = /initial_state=([^;]+);?/;
+ var match = cookie.match(reg);
+ if (match) { /*ignore 558 */
+ eval(unescape(match[0]));
+ };
+ };
+ for (var i=0; i < this.parent.childNodes.length; i++) {
+ var child = this.parent.childNodes[i];
+ if (child.className && child.className.match(/\bkupu-toolbox\b/)) {
+ var heading = child.getElementsByTagName('h1')[0];
+ if (!heading) {
+ throw('heading not found by collapser for toolbox ' +
+ child.id);
+ };
+ heading.setAttribute('title', _('click to unfold'));
+ // find the toolbox's body
+ var body = this.getToolBody(child);
+ // now set a handler that makes the body display and hide
+ // on click, and register it to the heading
+ // WAAAAAHHHH!!! since there's some weird shit happening when
+ // I just use closures to refer to the body (somehow only the
+ // *last* value body is set to in this loop is used?!?) I
+ // used a reference to the body as 'this' in the handler
+ var handler = function(heading) {
+ if (this.style.display == 'none') {
+ // assume we have a block-level element here...
+ this.style.display = 'block';
+ heading.className = 'kupu-toolbox-heading-opened';
+ heading.setAttribute('title', _('click to fold'));
+ } else {
+ this.style.display = 'none';
+ heading.className = 'kupu-toolbox-heading-closed';
+ heading.setAttribute('title', _('click to unfold'));
+ };
+ };
+ var wrap_openhandler = function(body, heading) {
+ return function() {
+ body.style.display = 'block';
+ heading.className = 'kupu-toolbox-heading-opened';
+ };
+ };
+ addEventHandler(heading, 'click', handler, body, heading);
+ if (initial_state[child.id] === undefined ||
+ initial_state[child.id] == '0') {
+ body.style.display = 'none';
+ } else {
+ heading.className = 'kupu-toolbox-heading-opened';
+ heading.setAttribute('title', _('click to fold'));
+ };
+ // add a reference to the openhandler on the toolbox div
+ // so any toolbox code can use that to open the toolbox if
+ // it so desires
+ child.open_handler = wrap_openhandler(body, heading);
+ };
+ };
+
+ addEventHandler(window, 'beforeunload', this.saveState, this);
+ };
+
+ ToolCollapser.prototype.getToolBody = function(tool) {
+ var heading = tool.getElementsByTagName('h1')[0];
+ var currchild = heading.nextSibling;
+ while (currchild.nodeType != 1) {
+ currchild = currchild.nextSibling;
+ if (!currchild) {
+ throw('body not found by collapser for toolbox ' +
+ tool.id);
+ };
+ };
+ return currchild;
+ };
+
+ ToolCollapser.prototype.saveState = function() {
+ /* save collapse state of the toolboxes in a cookie */
+ if (!navigator.cookieEnabled) {
+ return;
+ };
+ var current_state = {};
+ for (var i=0; i < this.parent.childNodes.length; i++) {
+ var child = this.parent.childNodes[i];
+ if (child.nodeType != 1) {
+ continue;
+ };
+ var body = this.getToolBody(child);
+ current_state[child.id] = body.style.display == 'none' ? '0' : '1';
+ };
+
+ var exp = new Date();
+ // 100 years before state is lost... should be enough ;)
+ exp.setTime(exp.getTime() + (100 * 365 * 24 * 60 * 60 * 1000));
+ var cookie = 'initial_state=' +
+ escape(this.serializeMapping(current_state)) +
+ ';' +
+ 'expires=' + exp.toGMTString() + ';' +
+ 'path=/';
+ document.cookie = cookie;
+ };
+
+ ToolCollapser.prototype.serializeMapping = function(mapping) {
+ /* serializes the config dict into a string that can be evalled
+
+ works only for dicts with string values
+ */
+ if (typeof(mapping) == 'string') {
+ return "'" + mapping + "'";
+ };
+ var ret = '{';
+ var first = true;
+ for (var key in mapping) {
+ if (!first) {
+ ret += ', ';
+ };
+ ret += "'" + key + "': " +
+ this.serializeMapping(mapping[key]);
+ first = false;
+ };
+ return ret + '}';
+ };
+}();
Added: myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.inputHtml/kupuundo.js
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.inputHtml/kupuundo.js?rev=928555&view=auto
==============================================================================
--- myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.inputHtml/kupuundo.js (added)
+++ myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.inputHtml/kupuundo.js Mon Mar 29 01:14:43 2010
@@ -0,0 +1,108 @@
+/* Improved undo support for Kupu
+
+ This uses the 'diff-match-patch' library from Neil Fraser to make patches
+ between edits, and saves those patches in an undo buffer.
+
+ The diff-match-patch lib is distributed under terms of the LGPL license,
+ for more information see doc/LICENSE_DIFFMATCHPATH.txt.
+
+ For more information about the library itself, see
+ http://code.google.com/p/google-diff-match-patch/
+*/
+
+function KupuUndoTool() {
+ if (arguments.length) {
+ this._init.apply(this, arguments);
+ };
+};
+
+KupuUndoTool.prototype = new KupuTool;
+
+KupuUndoTool.prototype._init =
+ function _init(undobuttonid, redobuttonid, maxbufsize) {
+ this.undobutton = document.getElementById(undobuttonid);
+ this.redobutton = document.getElementById(redobuttonid);
+ this._content = null;
+ this._buffer = [];
+ this._rev_buffer = [];
+ this._maximum_buffer_size = maxbufsize || 100;
+};
+
+KupuUndoTool.prototype.initialize = function initialize(editor) {
+ this.editor = editor;
+ addEventHandler(this.undobutton, 'click', this.undo, this);
+ addEventHandler(this.redobutton, 'click', this.redo, this);
+ this.dmp = new diff_match_patch();
+ this._content = this._get_content();
+};
+
+KupuUndoTool.prototype.updateState = function updateState(selNode, event) {
+ var new_content = this._get_content();
+ var patch = this.dmp.patch_make(new_content, this._content);
+ if (!patch.toString()) {
+ return;
+ };
+ var revpatch = this.dmp.patch_make(this._content, new_content);
+ this._buffer.push([patch, revpatch]);
+ this._rev_buffer = []; // discard redo information
+ this._content = new_content;
+ while (this._buffer.length > this._maximum_buffer_size) {
+ this._buffer.shift();
+ };
+};
+
+KupuUndoTool.prototype.undo = function undo() {
+ this.updateState();
+ var patchset = this._buffer.pop();
+ if (!patchset) {
+ return;
+ };
+ this._apply_patch(patchset[0]);
+ this._rev_buffer.push(patchset);
+};
+
+KupuUndoTool.prototype.redo = function redo() {
+ var patchset = this._rev_buffer.pop();
+ if (!patchset) {
+ return;
+ };
+ this._apply_patch(patchset[1]);
+ this._buffer.push(patchset);
+};
+
+KupuUndoTool.prototype._apply_patch = function _apply_patch(patch) {
+ var ret = this.dmp.patch_apply(patch, this._content);
+ var results = ret[1];
+ var failures = false;
+ for (var i=0; i < results.length; i++) {
+ if (!results[i]) {
+ failures = true;
+ break;
+ };
+ };
+ if (failures) {
+ throw('there were errors applying undo buffer patch! ' +
+ 'cancelling undo action...');
+ };
+ var new_content = ret[0];
+ this._set_content(new_content);
+ this._content = new_content;
+};
+
+KupuUndoTool.prototype._get_content = function _get_content() {
+ var body = this.editor.document.document.getElementsByTagName('body')[0];
+ return body.innerHTML;
+};
+
+KupuUndoTool.prototype._set_content = function _set_content(content) {
+ var body = this.editor.document.document.getElementsByTagName('body')[0];
+ body.innerHTML = content;
+};
+
+KupuUndoTool.prototype.debug = function debug(msg) {
+ var body = document.getElementsByTagName('body')[0];
+ var div = document.createElement('div');
+ div.appendChild(document.createTextNode(msg));
+ body.appendChild(div);
+ div.style.border = '1px solid red';
+};
Added: myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.inputHtml/myFaces.css
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.inputHtml/myFaces.css?rev=928555&view=auto
==============================================================================
--- myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.inputHtml/myFaces.css (added)
+++ myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.inputHtml/myFaces.css Mon Mar 29 01:14:43 2010
@@ -0,0 +1,13 @@
+div.kupu-fulleditor .kupu-editor-iframe {
+ height: 100%;
+ border: silver solid 1px;
+}
+div.kupu-fulleditor .kupu-editor-textarea {
+ height: 100%;
+}
+.kupu-fulleditor{
+ padding-bottom: 42px;
+}
+div.kupu-fulleditor-zoomed .kupu-editor-iframe{
+ background-color: white;
+}
\ No newline at end of file
Added: myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.inputHtml/myFacesKupustyles.css
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.inputHtml/myFacesKupustyles.css?rev=928555&view=auto
==============================================================================
--- myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.inputHtml/myFacesKupustyles.css (added)
+++ myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.inputHtml/myFacesKupustyles.css Mon Mar 29 01:14:43 2010
@@ -0,0 +1,279 @@
+/*****************************************************************************
+ *
+ * Kupu common styles
+ *
+ * Copyright (c) 2003-2005 Kupu Contributors. See CREDITS.txt
+ *
+ * Instead of customizing this file, it is recommended to add your own
+ * CSS file. Feel free to use whole or parts of this for your own
+ * designs, but give credit where credit is due.
+ *
+ *****************************************************************************/
+
+/* $Id: kupustyles.css 289206 2005-09-15 11:31:53Z svieujot $ */
+
+.kupu-fulleditor, .kupu-toolboxes {
+ font-family: Verdana, "Lucida Grande", Helvetica, Arial, sans-serif;
+ background-color: white;
+}
+
+div.kupu-fulleditor .kupu-fulleditor-zoomed {
+ height: 100%;
+ padding: 0px;
+}
+
+div.kupu-fulleditor .kupu-editorframe {
+ margin: 0px;
+ margin-right: 20em;
+ border: none;
+}
+
+div.kupu-fulleditor-zoomed {
+ z-index: 100;
+ margin: 0; border: none;
+ position: fixed;
+ top: 0; left: 0;
+ background-color: white;
+}
+
+* html div.kupu-fulleditor-zoomed {
+ position: absolute; /* IE */
+}
+
+div.kupu-fulleditor-zoomed .kupu-editor-iframe {
+ border: none;
+ margin: 0;
+}
+
+div.kupu-smalleditor .kupu-editorframe {
+ margin-right: 0.2em;
+}
+
+h1.kupu-toolbox-heading, h1.kupu-toolbox-heading-closed {
+ cursor: default;
+ background-image: url("#{resource['oam.custom.inputHtml.kupuimages:closed.png']}");
+ background-repeat: no-repeat;
+ background-position: left;
+}
+
+h1.kupu-toolbox-heading-opened {
+ cursor: default;
+ background-image: url("#{resource['oam.custom.inputHtml.kupuimages:opened.png']}");
+ background-repeat: no-repeat;
+ background-position: left;
+}
+
+div.kupu-sourcemode span.kupu-tb-buttongroup,
+body.kupu-fulleditor-zoomed select { display: none; }
+body.kupu-fulleditor-zoomed div.kupu-fulleditor-zoomed select { display: inline; }
+div.kupu-sourcemode select { display: none !IMPORTANT; }
+div.kupu-sourcemode span#kupu-logo,
+div.kupu-sourcemode span#kupu-zoom,
+div.kupu-sourcemode span#kupu-source { display: inline; }
+
+div.kupu-smalleditor {
+ font-family: Verdana, "Lucida Grande", Helvetica, Arial, sans-serif;
+ border: solid 3px ButtonHighlight;
+ margin: 0.2em;
+ height: 100%;
+}
+
+.kupu-tb {
+ padding: 3px;
+ margin-bottom: 0.4em;
+ background-color: ButtonFace;
+ border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;
+}
+
+.kupu-tb-buttons button {
+ color: ButtonText;
+ border: 1px solid ButtonFace;
+ margin-top: 0;
+ margin-left: 0;
+ height: 26px;
+ width: 26px;
+ background-repeat: no-repeat;
+}
+
+.kupu-tb-buttons button:hover {
+ cursor: default;
+ border: 1px solid;
+ border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;
+}
+
+.kupu-tb-buttons button:active {
+ border: 1px solid;
+ border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow;
+}
+
+.kupu-tb-buttongroup {
+ margin-left: 2px;
+ margin-right: 2px;
+}
+
+
+.kupu-bold {background-image: url("#{resource['oam.custom.inputHtml.kupuimages:bold.png']}");}
+.kupu-bold-pressed {background-image: url("#{resource['oam.custom.inputHtml.kupuimages:bold.png']}"); background-color: white;}
+.kupu-forecolor {background-image: url("#{resource['oam.custom.inputHtml.kupuimages:text-color.png']}");}
+.kupu-hilitecolor {background-image: url("#{resource['oam.custom.inputHtml.kupuimages:background-color.png']}");}
+
+.kupu-inthyperlink {background-image: url("#{resource['oam.custom.inputHtml.kupuimages:inthyperlink.png']}");}
+.kupu-inthyperlink-pressed {background-image: url("#{resource['oam.custom.inputHtml.kupuimages:inthyperlink.png']}"); background-color: white}
+.kupu-exthyperlink {background-image: url("#{resource['oam.custom.inputHtml.kupuimages:exthyperlink.png']}");}
+.kupu-exthyperlink-pressed {background-image: url("#{resource['oam.custom.inputHtml.kupuimages:exthyperlink.png']}"); background-color: white}
+
+.kupu-image {background-image: url("#{resource['oam.custom.inputHtml.kupuimages:image.png']}");}
+.kupu-indent {background-image: url("#{resource['oam.custom.inputHtml.kupuimages:indent.png']}");}
+.kupu-inserthorizontalrule {background-image: url("#{resource['oam.custom.inputHtml.kupuimages:hr.png']}");}
+.kupu-insertorderedlist {background-image: url("#{resource['oam.custom.inputHtml.kupuimages:ordered-list.png']}");}
+.kupu-insertunorderedlist {background-image: url("#{resource['oam.custom.inputHtml.kupuimages:unordered-list.png']}");}
+.kupu-insertdefinitionlist {background-image: url("#{resource['oam.custom.inputHtml.kupuimages:definitionlist.png']}");}
+.kupu-italic {background-image: url("#{resource['oam.custom.inputHtml.kupuimages:italic.png']}");}
+.kupu-italic-pressed {background-image: url("#{resource['oam.custom.inputHtml.kupuimages:italic.png']}"); background-color: white}
+.kupu-justifycenter {background-image: url("#{resource['oam.custom.inputHtml.kupuimages:justify-center.png']}");}
+.kupu-justifyleft {background-image: url("#{resource['oam.custom.inputHtml.kupuimages:justify-left.png']}");}
+.kupu-justifyright {background-image: url("#{resource['oam.custom.inputHtml.kupuimages:justify-right.png']}");}
+button.kupu-logo {background-image: url("#{resource['oam.custom.inputHtml.kupuimages:kupu_icon.gif']}");}
+.kupu-outdent {background-image: url("#{resource['oam.custom.inputHtml.kupuimages:outdent.png']}");}
+.kupu-redo {background-image: url("#{resource['oam.custom.inputHtml.kupuimages:redo.png']}");}
+.kupu-save {background-image: url("#{resource['oam.custom.inputHtml.kupuimages:save.png']}");}
+.kupu-save-and-exit {background-image: url("#{resource['oam.custom.inputHtml.kupuimages:exit.gif']}");}
+.kupu-space {background-image: url("#{resource['oam.custom.inputHtml.kupuimages:space.gif']}");}
+.kupu-source {background-image: url("#{resource['oam.custom.inputHtml.kupuimages:view-source.png']}");}
+.kupu-spellchecker {background-image: url("#{resource['oam.custom.inputHtml.kupuimages:text-check.png']}");}
+.kupu-subscript {background-image: url("#{resource['oam.custom.inputHtml.kupuimages:subscript.png']}");}
+.kupu-subscript-pressed {background-image: url("#{resource['oam.custom.inputHtml.kupuimages:subscript.png']}"); background-color: white}
+.kupu-superscript {background-image: url("#{resource['oam.custom.inputHtml.kupuimages:superscript.png']}");}
+.kupu-superscript-pressed {background-image: url("#{resource['oam.custom.inputHtml.kupuimages:superscript.png']}"); background-color: white}
+.kupu-table {background-image: url("#{resource['oam.custom.inputHtml.kupuimages:table.png']}");}
+.kupu-underline {background-image: url("#{resource['oam.custom.inputHtml.kupuimages:underline.png']}");}
+.kupu-underline-pressed {background-image: url("#{resource['oam.custom.inputHtml.kupuimages:underline.png']}"); background-color: white}
+.kupu-undo {background-image: url("#{resource['oam.custom.inputHtml.kupuimages:undo.png']}");}
+.kupu-removelink {background-image: url("#{resource['oam.custom.inputHtml.kupuimages:remove.png']}");}
+.kupu-removeimage {background-image: url("#{resource['oam.custom.inputHtml.kupuimages:remove.png']}");}
+.kupu-zoom {background-image: url("#{resource['oam.custom.inputHtml.kupuimages:zoom-in.gif']}");}
+.kupu-zoom-pressed {background-image: url("#{resource['oam.custom.inputHtml.kupuimages:zoom-out.gif']}");}
+
+.kupu-tb-buttons button.invisible {
+ display: none;
+ /*visibility: hidden;*/
+}
+
+.kupu-tb-buttons button.visible {
+ display: inline;
+}
+
+div.kupu-editorframe {
+ margin-left: 0.3em;
+ margin-bottom: 0.3em;
+ border: solid 2px ButtonFace;
+}
+
+iframe.kupu-editor-iframe {
+ height: 450px;
+ width: 99%;
+}
+
+textarea.kupu-editor-textarea {
+ height: 450px;
+ width: 99%;
+ display: none;
+}
+
+div.kupu-toolboxes {
+ float: right;
+ border: solid 2px ButtonFace;
+ width: 19.4em;
+ margin-right: 0.3em;
+ margin-bottom: 0.3em;
+ font-size: 0.8em;
+}
+
+div.kupu-fulleditor-zoomed div.kupu-toolboxes {
+ display: none;
+}
+
+div.kupu-toolbox, div.kupu-toolbox-active {
+ margin-bottom: 1em;
+}
+
+div.kupu-toolbox h1, div.kupu-toolbox-active h1 {
+ text-align: center;
+ width: 100%;
+ background-color: ButtonFace;
+ margin-top: 0;
+ font-size: 1.1em;
+}
+
+div.kupu-toolbox-label, span.kupu-toolbox-searchterm,
+input.wide, select.wide, textarea.wide, button.kupu-toolbox-action,
+div.kupu-toolbox-results {
+ margin-left: 0.2em;
+ margin-right: 0.2em;
+}
+
+.wide {
+ width: 95%;
+}
+
+div.kupu-toolbox-label {
+ margin-bottom: 0.4em;
+}
+
+.kupu-toolbox-buttons {
+ text-align: center;
+}
+
+.kupu-toolbox-buttons button {
+ width: 45%;
+}
+
+div.kupu-toolbox-results {
+ border: solid 2px ButtonFace;
+ margin-top: 0.8em;
+ text-decoration: underline;
+ padding: 0.2em;
+ display: none;
+}
+
+div.kupu-toolbox table.kupu-toolbox-addtable input,
+div.kupu-toolbox-active table.kupu-toolbox-edittable input {
+ width: 20px;
+}
+
+div.kupu-toolbox-active {
+ background-color: ButtonFace;
+}
+
+.kupu-toolbox-editlink, .kupu-toolbox-edittable,
+.kupu-ulstyles, .kupu-olstyles {
+ display: none;
+}
+
+
+div#kupu-colorchooser {
+ position: absolute;
+ visibility: hidden;
+ border: solid black 1px;
+ background-color: white;
+ padding: 0.2em;
+ font-size: small;
+}
+
+.kupu-toolboxes input, .kupu-toolboxes select, .kupu-toolboxes textarea {
+ font-size: x-small;
+ font-family: Verdana, "Lucida Grande", Helvetica, Arial, sans-serif;
+}
+
+div#kupu-fgcolorchooser div:hover {
+ /* border: outset 1px; */
+}
+
+div.kupu-drawer {
+ overflow: auto;
+}
+
+button.disabled {
+ opacity:0.5;
+ filter:alpha(opacity=50);
+}
Added: myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.inputHtml/myFacesUtils.js
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.inputHtml/myFacesUtils.js?rev=928555&view=auto
==============================================================================
--- myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.inputHtml/myFacesUtils.js (added)
+++ myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.inputHtml/myFacesUtils.js Mon Mar 29 01:14:43 2010
@@ -0,0 +1,117 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+/*
+ * Utilities used by MyFaces x:inputHtml tag
+ * @author Sylvain Vieujot (latest modification by $Author: lu4242 $)
+ * @version $Revision: 928334 $ $Date: 2010-03-27 23:24:30 -0500 (Sáb, 27 Mar 2010) $
+ */
+var myFacesKupuTextsToLoad = new Array();
+var myFacesKupuClientIDs = new Array();
+var myFacesKupuFormsIds = new Array();
+var myFacesKupuIFramesIds = new Array();
+var myFacesKupuResourceBaseURL;
+var myFacesKupuDocOnLoadSet = false;
+var myFacesKupuOriginalDocOnLoad;
+var myFacesKupuProcessedFormsIds = new Array();
+var myFacesKupuOriginalFormsOnSubmits = new Array();
+var myFacesKupuEditors;
+
+function myFacesKupuSet(text, clientId, formId, resourceBaseURL){
+ myFacesKupuTextsToLoad.push( text );
+ myFacesKupuClientIDs.push( clientId );
+ myFacesKupuFormsIds.push( formId );
+ myFacesKupuIFramesIds.push( myFacesKupuGetIFrameId(clientId) );
+ myFacesKupuResourceBaseURL = resourceBaseURL;
+
+ if( ! myFacesKupuDocOnLoadSet ){
+ var onLoadSrc;
+ if( document.all ) // IE
+ onLoadSrc = document.body;
+ else // Mozilla
+ onLoadSrc = window;
+
+ myFacesKupuOriginalDocOnLoad = onLoadSrc.onload;
+ onLoadSrc.onload = myFacesKupuInit;
+
+ myFacesKupuDocOnLoadSet = true;
+ }
+
+ var formAlreadyProcessed = false;
+ for(var i=0 ; i<myFacesKupuProcessedFormsIds.length && ! formAlreadyProcessed ; i++){
+ if( myFacesKupuProcessedFormsIds[i] == formId )
+ formAlreadyProcessed = true;
+ }
+ if( ! formAlreadyProcessed ){
+ myFacesKupuProcessedFormsIds.push( formId );
+ var form = document.forms[formId];
+ myFacesKupuOriginalFormsOnSubmits.push( form.onsubmit );
+ form.onsubmit = myFacesKupuFormSubmit;
+ }
+}
+
+// Must match InputHtmlRenderer.getIFrameID
+function myFacesKupuGetIFrameId(clientId){
+ return clientId+"_iframe";
+}
+
+function myFacesKupuInit(){
+ if( myFacesKupuOriginalDocOnLoad )
+ myFacesKupuOriginalDocOnLoad();
+
+ for(var i=0 ; i<myFacesKupuTextsToLoad.length ; i++){
+ myFacesKupuEditors = startKupu( myFacesKupuIFramesIds[i] );
+ document.getElementById(myFacesKupuIFramesIds[i]).contentWindow.document.getElementsByTagName('body')[0].innerHTML=myFacesKupuTextsToLoad[i];
+ }
+}
+
+function myFacesKupuReactivateDesignMode(iframe) {
+ var isIE = document.all && window.ActiveXObject && navigator.userAgent.toLowerCase().indexOf("msie") > -1 && navigator.userAgent.toLowerCase().indexOf("opera") == -1;
+ if (isIE) {
+ var body = iframe.contentWindow.document.getElementsByTagName('body')[0];
+ body.setAttribute('contentEditable', 'true');
+ }
+ else {
+ iframe.contentWindow.document.designMode='on';
+ }
+}
+
+function myFacesKupuFormSubmit(){
+ for(var i=0 ; i<myFacesKupuFormsIds.length ; i++){
+ myFacesKupuEditors.prepareForm(document.forms[myFacesKupuFormsIds[i]], myFacesKupuClientIDs[i]);
+ }
+
+ originalFormOnSubmit = myFacesKupuOriginalFormsOnSubmits[0]; // TODO : Fix (How do we get the calling frame ??)
+ if( originalFormOnSubmit ){
+ return originalFormOnSubmit();
+ }
+ return true;
+}
+
+// Redefine or extend buggy kupu functions
+
+function openPopup(url, width, height){
+ /* open and center a popup window */
+ var sw = screen.width;
+ var sh = screen.height;
+ var left = sw / 2 - width / 2;
+ var top = sh / 2 - height / 2;
+ var win = window.open(myFacesKupuResourceBaseURL+url, 'someWindow',
+ 'width=' + width + ',height=' + height + ',left=' + left + ',top=' + top);
+ return win;
+}
\ No newline at end of file
Added: myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.inputHtml/sarissa.js
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.inputHtml/sarissa.js?rev=928555&view=auto
==============================================================================
--- myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.inputHtml/sarissa.js (added)
+++ myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.inputHtml/sarissa.js Mon Mar 29 01:14:43 2010
@@ -0,0 +1,688 @@
+/**
+ * ====================================================================
+ * About
+ * ====================================================================
+ * Sarissa is an ECMAScript library acting as a cross-browser wrapper for native XML APIs.
+ * The library supports Gecko based browsers like Mozilla and Firefox,
+ * Internet Explorer (5.5+ with MSXML3.0+), Konqueror, Safari and a little of Opera
+ * @version ${project.version}
+ * @author: @author: Copyright 2004-2007 Emmanouil Batsis, mailto: mbatsis at users full stop sourceforge full stop net
+ *
+ * ====================================================================
+ * Licence
+ * ====================================================================
+ * Sarissa is free software distributed under the GNU GPL version 2 (see <a href="gpl.txt">gpl.txt</a>) or higher,
+ * GNU LGPL version 2.1 (see <a href="lgpl.txt">lgpl.txt</a>) or higher and Apache Software License 2.0 or higher
+ * (see <a href="asl.txt">asl.txt</a>). This means you can choose one of the three and use that if you like. If
+ * you make modifications under the ASL, i would appreciate it if you submitted those.
+ * In case your copy of Sarissa does not include the license texts, you may find
+ * them online in various formats at <a href="http://www.gnu.org">http://www.gnu.org</a> and
+ * <a href="http://www.apache.org">http://www.apache.org</a>.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ * KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ * WARRANTIES OF MERCHANTABILITY,FITNESS FOR A PARTICULAR PURPOSE
+ * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+ * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+/**
+ * <p>Sarissa is a utility class. Provides "static" methods for DOMDocument,
+ * DOM Node serialization to XML strings and other utility goodies.</p>
+ * @constructor
+ */
+function Sarissa(){};
+Sarissa.VERSION = "${project.version}";
+Sarissa.PARSED_OK = "Document contains no parsing errors";
+Sarissa.PARSED_EMPTY = "Document is empty";
+Sarissa.PARSED_UNKNOWN_ERROR = "Not well-formed or other error";
+Sarissa.IS_ENABLED_TRANSFORM_NODE = false;
+var _sarissa_iNsCounter = 0;
+var _SARISSA_IEPREFIX4XSLPARAM = "";
+var _SARISSA_HAS_DOM_IMPLEMENTATION = document.implementation && true;
+var _SARISSA_HAS_DOM_CREATE_DOCUMENT = _SARISSA_HAS_DOM_IMPLEMENTATION && document.implementation.createDocument;
+var _SARISSA_HAS_DOM_FEATURE = _SARISSA_HAS_DOM_IMPLEMENTATION && document.implementation.hasFeature;
+var _SARISSA_IS_MOZ = _SARISSA_HAS_DOM_CREATE_DOCUMENT && _SARISSA_HAS_DOM_FEATURE;
+var _SARISSA_IS_SAFARI = navigator.userAgent.toLowerCase().indexOf("safari") != -1 || navigator.userAgent.toLowerCase().indexOf("konqueror") != -1;
+var _SARISSA_IS_SAFARI_OLD = _SARISSA_IS_SAFARI && parseInt((navigator.userAgent.match(/AppleWebKit\/(\d+)/)||{})[1]) < 420;
+var _SARISSA_IS_IE = document.all && window.ActiveXObject && navigator.userAgent.toLowerCase().indexOf("msie") > -1 && navigator.userAgent.toLowerCase().indexOf("opera") == -1;
+var _SARISSA_IS_OPERA = navigator.userAgent.toLowerCase().indexOf("opera") != -1;
+if(!window.Node || !Node.ELEMENT_NODE){
+ Node = {ELEMENT_NODE: 1, ATTRIBUTE_NODE: 2, TEXT_NODE: 3, CDATA_SECTION_NODE: 4, ENTITY_REFERENCE_NODE: 5, ENTITY_NODE: 6, PROCESSING_INSTRUCTION_NODE: 7, COMMENT_NODE: 8, DOCUMENT_NODE: 9, DOCUMENT_TYPE_NODE: 10, DOCUMENT_FRAGMENT_NODE: 11, NOTATION_NODE: 12};
+};
+
+//This breaks for(x in o) loops in the old Safari
+if(_SARISSA_IS_SAFARI_OLD){
+ HTMLHtmlElement = document.createElement("html").constructor;
+ Node = HTMLElement = {};
+ HTMLElement.prototype = HTMLHtmlElement.__proto__.__proto__;
+ HTMLDocument = Document = document.constructor;
+ var x = new DOMParser();
+ XMLDocument = x.constructor;
+ Element = x.parseFromString("<Single />", "text/xml").documentElement.constructor;
+ x = null;
+}
+if(typeof XMLDocument == "undefined" && typeof Document !="undefined"){ XMLDocument = Document; }
+
+// IE initialization
+if(_SARISSA_IS_IE){
+ // for XSLT parameter names, prefix needed by IE
+ _SARISSA_IEPREFIX4XSLPARAM = "xsl:";
+ // used to store the most recent ProgID available out of the above
+ var _SARISSA_DOM_PROGID = "";
+ var _SARISSA_XMLHTTP_PROGID = "";
+ var _SARISSA_DOM_XMLWRITER = "";
+ /**
+ * Called when the Sarissa_xx.js file is parsed, to pick most recent
+ * ProgIDs for IE, then gets destroyed.
+ * @private
+ * @param idList an array of MSXML PROGIDs from which the most recent will be picked for a given object
+ * @param enabledList an array of arrays where each array has two items; the index of the PROGID for which a certain feature is enabled
+ */
+ Sarissa.pickRecentProgID = function (idList){
+ // found progID flag
+ var bFound = false, e;
+ for(var i=0; i < idList.length && !bFound; i++){
+ try{
+ var oDoc = new ActiveXObject(idList[i]);
+ var o2Store = idList[i];
+ bFound = true;
+ }catch (objException){
+ // trap; try next progID
+ e = objException;
+ };
+ };
+ if (!bFound) {
+ throw "Could not retrieve a valid progID of Class: " + idList[idList.length-1]+". (original exception: "+e+")";
+ };
+ idList = null;
+ return o2Store;
+ };
+ // pick best available MSXML progIDs
+ _SARISSA_DOM_PROGID = null;
+ _SARISSA_THREADEDDOM_PROGID = null;
+ _SARISSA_XSLTEMPLATE_PROGID = null;
+ _SARISSA_XMLHTTP_PROGID = null;
+ if(!window.XMLHttpRequest){
+ /**
+ * Emulate XMLHttpRequest
+ * @constructor
+ */
+ XMLHttpRequest = function() {
+ if(!_SARISSA_XMLHTTP_PROGID){
+ _SARISSA_XMLHTTP_PROGID = Sarissa.pickRecentProgID(["Msxml2.XMLHTTP.6.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"]);
+ };
+ return new ActiveXObject(_SARISSA_XMLHTTP_PROGID);
+ };
+ };
+ // we dont need this anymore
+ //============================================
+ // Factory methods (IE)
+ //============================================
+ // see non-IE version
+ Sarissa.getDomDocument = function(sUri, sName){
+ if(!_SARISSA_DOM_PROGID){
+ _SARISSA_DOM_PROGID = Sarissa.pickRecentProgID(["Msxml2.DOMDocument.6.0", "Msxml2.DOMDocument.3.0", "MSXML2.DOMDocument", "MSXML.DOMDocument", "Microsoft.XMLDOM"]);
+ };
+ var oDoc = new ActiveXObject(_SARISSA_DOM_PROGID);
+ // if a root tag name was provided, we need to load it in the DOM object
+ if (sName){
+ // create an artifical namespace prefix
+ // or reuse existing prefix if applicable
+ var prefix = "";
+ if(sUri){
+ if(sName.indexOf(":") > 1){
+ prefix = sName.substring(0, sName.indexOf(":"));
+ sName = sName.substring(sName.indexOf(":")+1);
+ }else{
+ prefix = "a" + (_sarissa_iNsCounter++);
+ };
+ };
+ // use namespaces if a namespace URI exists
+ if(sUri){
+ oDoc.loadXML('<' + prefix+':'+sName + " xmlns:" + prefix + "=\"" + sUri + "\"" + " />");
+ } else {
+ oDoc.loadXML('<' + sName + " />");
+ };
+ };
+ return oDoc;
+ };
+ // see non-IE version
+ Sarissa.getParseErrorText = function (oDoc) {
+ var parseErrorText = Sarissa.PARSED_OK;
+ if(oDoc && oDoc.parseError && oDoc.parseError.errorCode && oDoc.parseError.errorCode != 0){
+ parseErrorText = "XML Parsing Error: " + oDoc.parseError.reason +
+ "\nLocation: " + oDoc.parseError.url +
+ "\nLine Number " + oDoc.parseError.line + ", Column " +
+ oDoc.parseError.linepos +
+ ":\n" + oDoc.parseError.srcText +
+ "\n";
+ for(var i = 0; i < oDoc.parseError.linepos;i++){
+ parseErrorText += "-";
+ };
+ parseErrorText += "^\n";
+ }
+ else if(oDoc.documentElement == null){
+ parseErrorText = Sarissa.PARSED_EMPTY;
+ };
+ return parseErrorText;
+ };
+ // see non-IE version
+ Sarissa.setXpathNamespaces = function(oDoc, sNsSet) {
+ oDoc.setProperty("SelectionLanguage", "XPath");
+ oDoc.setProperty("SelectionNamespaces", sNsSet);
+ };
+ /**
+ * Basic implementation of Mozilla's XSLTProcessor for IE.
+ * Reuses the same XSLT stylesheet for multiple transforms
+ * @constructor
+ */
+ XSLTProcessor = function(){
+ if(!_SARISSA_XSLTEMPLATE_PROGID){
+ _SARISSA_XSLTEMPLATE_PROGID = Sarissa.pickRecentProgID(["Msxml2.XSLTemplate.6.0", "MSXML2.XSLTemplate.3.0"]);
+ };
+ this.template = new ActiveXObject(_SARISSA_XSLTEMPLATE_PROGID);
+ this.processor = null;
+ };
+ /**
+ * Imports the given XSLT DOM and compiles it to a reusable transform
+ * <b>Note:</b> If the stylesheet was loaded from a URL and contains xsl:import or xsl:include elements,it will be reloaded to resolve those
+ * @argument xslDoc The XSLT DOMDocument to import
+ */
+ XSLTProcessor.prototype.importStylesheet = function(xslDoc){
+ if(!_SARISSA_THREADEDDOM_PROGID){
+ _SARISSA_THREADEDDOM_PROGID = Sarissa.pickRecentProgID(["MSXML2.FreeThreadedDOMDocument.6.0", "MSXML2.FreeThreadedDOMDocument.3.0"]);
+ };
+ xslDoc.setProperty("SelectionLanguage", "XPath");
+ xslDoc.setProperty("SelectionNamespaces", "xmlns:xsl='http://www.w3.org/1999/XSL/Transform'");
+ // convert stylesheet to free threaded
+ var converted = new ActiveXObject(_SARISSA_THREADEDDOM_PROGID);
+ // make included/imported stylesheets work if exist and xsl was originally loaded from url
+ try{
+ converted.resolveExternals = true;
+ converted.setProperty("AllowDocumentFunction", true);
+ }
+ catch(e){
+ // Ignore. "AllowDocumentFunction" is only supported in MSXML 3.0 SP4 and later.
+ };
+ if(xslDoc.url && xslDoc.selectSingleNode("//xsl:*[local-name() = 'import' or local-name() = 'include']") != null){
+ converted.async = false;
+ converted.load(xslDoc.url);
+ } else {
+ converted.loadXML(xslDoc.xml);
+ };
+ converted.setProperty("SelectionNamespaces", "xmlns:xsl='http://www.w3.org/1999/XSL/Transform'");
+ var output = converted.selectSingleNode("//xsl:output");
+ this.outputMethod = output ? output.getAttribute("method") : "html";
+ this.template.stylesheet = converted;
+ this.processor = this.template.createProcessor();
+ // for getParameter and clearParameters
+ this.paramsSet = [];
+ };
+
+ /**
+ * Transform the given XML DOM and return the transformation result as a new DOM document
+ * @argument sourceDoc The XML DOMDocument to transform
+ * @return The transformation result as a DOM Document
+ */
+ XSLTProcessor.prototype.transformToDocument = function(sourceDoc){
+ // fix for bug 1549749
+ if(_SARISSA_THREADEDDOM_PROGID){
+ this.processor.input=sourceDoc;
+ var outDoc=new ActiveXObject(_SARISSA_DOM_PROGID);
+ this.processor.output=outDoc;
+ this.processor.transform();
+ return outDoc;
+ }
+ else{
+ if(!_SARISSA_DOM_XMLWRITER){
+ _SARISSA_DOM_XMLWRITER = Sarissa.pickRecentProgID(["Msxml2.MXXMLWriter.6.0", "Msxml2.MXXMLWriter.3.0", "MSXML2.MXXMLWriter", "MSXML.MXXMLWriter", "Microsoft.XMLDOM"]);
+ };
+ this.processor.input = sourceDoc;
+ var outDoc = new ActiveXObject(_SARISSA_DOM_XMLWRITER);
+ this.processor.output = outDoc;
+ this.processor.transform();
+ var oDoc = new ActiveXObject(_SARISSA_DOM_PROGID);
+ oDoc.loadXML(outDoc.output+"");
+ return oDoc;
+ };
+ };
+
+ /**
+ * Transform the given XML DOM and return the transformation result as a new DOM fragment.
+ * <b>Note</b>: The xsl:output method must match the nature of the owner document (XML/HTML).
+ * @argument sourceDoc The XML DOMDocument to transform
+ * @argument ownerDoc The owner of the result fragment
+ * @return The transformation result as a DOM Document
+ */
+ XSLTProcessor.prototype.transformToFragment = function (sourceDoc, ownerDoc) {
+ this.processor.input = sourceDoc;
+ this.processor.transform();
+ var s = this.processor.output;
+ var f = ownerDoc.createDocumentFragment();
+ if (this.outputMethod == 'text') {
+ f.appendChild(ownerDoc.createTextNode(s));
+ } else if (ownerDoc.body && ownerDoc.body.innerHTML) {
+ var container = ownerDoc.createElement('div');
+ container.innerHTML = s;
+ while (container.hasChildNodes()) {
+ f.appendChild(container.firstChild);
+ }
+ }
+ else {
+ var oDoc = new ActiveXObject(_SARISSA_DOM_PROGID);
+ if (s.substring(0, 5) == '<?xml') {
+ s = s.substring(s.indexOf('?>') + 2);
+ }
+ var xml = ''.concat('<my>', s, '</my>');
+ oDoc.loadXML(xml);
+ var container = oDoc.documentElement;
+ while (container.hasChildNodes()) {
+ f.appendChild(container.firstChild);
+ }
+ }
+ return f;
+ };
+
+ /**
+ * Set global XSLT parameter of the imported stylesheet
+ * @argument nsURI The parameter namespace URI
+ * @argument name The parameter base name
+ * @argument value The new parameter value
+ */
+ XSLTProcessor.prototype.setParameter = function(nsURI, name, value){
+ // make value a zero length string if null to allow clearing
+ value = value ? value : "";
+ // nsURI is optional but cannot be null
+ if(nsURI){
+ this.processor.addParameter(name, value, nsURI);
+ }else{
+ this.processor.addParameter(name, value);
+ };
+ // update updated params for getParameter
+ nsURI = "" + (nsURI || "");
+ if(!this.paramsSet[nsURI]){
+ this.paramsSet[nsURI] = new Array();
+ };
+ this.paramsSet[nsURI][name] = value;
+ };
+ /**
+ * Gets a parameter if previously set by setParameter. Returns null
+ * otherwise
+ * @argument name The parameter base name
+ * @argument value The new parameter value
+ * @return The parameter value if reviously set by setParameter, null otherwise
+ */
+ XSLTProcessor.prototype.getParameter = function(nsURI, name){
+ nsURI = "" + (nsURI || "");
+ if(this.paramsSet[nsURI] && this.paramsSet[nsURI][name]){
+ return this.paramsSet[nsURI][name];
+ }else{
+ return null;
+ };
+ };
+ /**
+ * Clear parameters (set them to default values as defined in the stylesheet itself)
+ */
+ XSLTProcessor.prototype.clearParameters = function(){
+ for(var nsURI in this.paramsSet){
+ for(var name in this.paramsSet[nsURI]){
+ if(nsURI!=""){
+ this.processor.addParameter(name, "", nsURI);
+ }else{
+ this.processor.addParameter(name, "");
+ };
+ };
+ };
+ this.paramsSet = new Array();
+ };
+}else{ /* end IE initialization, try to deal with real browsers now ;-) */
+ if(_SARISSA_HAS_DOM_CREATE_DOCUMENT){
+ /**
+ * <p>Ensures the document was loaded correctly, otherwise sets the
+ * parseError to -1 to indicate something went wrong. Internal use</p>
+ * @private
+ */
+ Sarissa.__handleLoad__ = function(oDoc){
+ Sarissa.__setReadyState__(oDoc, 4);
+ };
+ /**
+ * <p>Attached by an event handler to the load event. Internal use.</p>
+ * @private
+ */
+ _sarissa_XMLDocument_onload = function(){
+ Sarissa.__handleLoad__(this);
+ };
+ /**
+ * <p>Sets the readyState property of the given DOM Document object.
+ * Internal use.</p>
+ * @private
+ * @argument oDoc the DOM Document object to fire the
+ * readystatechange event
+ * @argument iReadyState the number to change the readystate property to
+ */
+ Sarissa.__setReadyState__ = function(oDoc, iReadyState){
+ oDoc.readyState = iReadyState;
+ oDoc.readystate = iReadyState;
+ if (oDoc.onreadystatechange != null && typeof oDoc.onreadystatechange == "function") {
+ oDoc.onreadystatechange();
+ }
+ };
+ Sarissa.getDomDocument = function(sUri, sName){
+ var oDoc = document.implementation.createDocument(sUri?sUri:null, sName?sName:null, null);
+ if(!oDoc.onreadystatechange){
+
+ /**
+ * <p>Emulate IE's onreadystatechange attribute</p>
+ */
+ oDoc.onreadystatechange = null;
+ };
+ if(!oDoc.readyState){
+ /**
+ * <p>Emulates IE's readyState property, which always gives an integer from 0 to 4:</p>
+ * <ul><li>1 == LOADING,</li>
+ * <li>2 == LOADED,</li>
+ * <li>3 == INTERACTIVE,</li>
+ * <li>4 == COMPLETED</li></ul>
+ */
+ oDoc.readyState = 0;
+ };
+ oDoc.addEventListener("load", _sarissa_XMLDocument_onload, false);
+ return oDoc;
+ };
+ if(window.XMLDocument){
+ // do nothing
+ }// TODO: check if the new document has content before trying to copynodes, check for error handling in DOM 3 LS
+ else if(_SARISSA_HAS_DOM_FEATURE && window.Document && !Document.prototype.load && document.implementation.hasFeature('LS', '3.0')){
+ //Opera 9 may get the XPath branch which gives creates XMLDocument, therefore it doesn't reach here which is good
+ /**
+ * <p>Factory method to obtain a new DOM Document object</p>
+ * @argument sUri the namespace of the root node (if any)
+ * @argument sUri the local name of the root node (if any)
+ * @returns a new DOM Document
+ */
+ Sarissa.getDomDocument = function(sUri, sName){
+ var oDoc = document.implementation.createDocument(sUri?sUri:null, sName?sName:null, null);
+ return oDoc;
+ };
+ }
+ else {
+ Sarissa.getDomDocument = function(sUri, sName){
+ var oDoc = document.implementation.createDocument(sUri?sUri:null, sName?sName:null, null);
+ // looks like safari does not create the root element for some unknown reason
+ if(oDoc && (sUri || sName) && !oDoc.documentElement){
+ oDoc.appendChild(oDoc.createElementNS(sUri, sName));
+ };
+ return oDoc;
+ };
+ };
+ };//if(_SARISSA_HAS_DOM_CREATE_DOCUMENT)
+};
+//==========================================
+// Common stuff
+//==========================================
+if(!window.DOMParser){
+ if(_SARISSA_IS_SAFARI){
+ /*
+ * DOMParser is a utility class, used to construct DOMDocuments from XML strings
+ * @constructor
+ */
+ DOMParser = function() { };
+ /**
+ * Construct a new DOM Document from the given XMLstring
+ * @param sXml the given XML string
+ * @param contentType the content type of the document the given string represents (one of text/xml, application/xml, application/xhtml+xml).
+ * @return a new DOM Document from the given XML string
+ */
+ DOMParser.prototype.parseFromString = function(sXml, contentType){
+ var xmlhttp = new XMLHttpRequest();
+ xmlhttp.open("GET", "data:text/xml;charset=utf-8," + encodeURIComponent(sXml), false);
+ xmlhttp.send(null);
+ return xmlhttp.responseXML;
+ };
+ }else if(Sarissa.getDomDocument && Sarissa.getDomDocument() && Sarissa.getDomDocument(null, "bar").xml){
+ DOMParser = function() { };
+ DOMParser.prototype.parseFromString = function(sXml, contentType){
+ var doc = Sarissa.getDomDocument();
+ doc.loadXML(sXml);
+ return doc;
+ };
+ };
+};
+
+if((typeof(document.importNode) == "undefined") && _SARISSA_IS_IE){
+ try{
+ /**
+ * Implementation of importNode for the context window document in IE.
+ * If <code>oNode</code> is a TextNode, <code>bChildren</code> is ignored.
+ * @param oNode the Node to import
+ * @param bChildren whether to include the children of oNode
+ * @returns the imported node for further use
+ */
+ document.importNode = function(oNode, bChildren){
+ var tmp;
+ if (oNode.nodeName=='#text') {
+ return document.createTextNode(oNode.data);
+ }
+ else {
+ if(oNode.nodeName == "tbody" || oNode.nodeName == "tr"){
+ tmp = document.createElement("table");
+ }
+ else if(oNode.nodeName == "td"){
+ tmp = document.createElement("tr");
+ }
+ else if(oNode.nodeName == "option"){
+ tmp = document.createElement("select");
+ }
+ else{
+ tmp = document.createElement("div");
+ };
+ if(bChildren){
+ tmp.innerHTML = oNode.xml ? oNode.xml : oNode.outerHTML;
+ }else{
+ tmp.innerHTML = oNode.xml ? oNode.cloneNode(false).xml : oNode.cloneNode(false).outerHTML;
+ };
+ return tmp.getElementsByTagName("*")[0];
+ };
+
+ };
+ }catch(e){ };
+};
+if(!Sarissa.getParseErrorText){
+ /**
+ * <p>Returns a human readable description of the parsing error. Usefull
+ * for debugging. Tip: append the returned error string in a <pre>
+ * element if you want to render it.</p>
+ * <p>Many thanks to Christian Stocker for the initial patch.</p>
+ * @argument oDoc The target DOM document
+ * @returns The parsing error description of the target Document in
+ * human readable form (preformated text)
+ */
+ Sarissa.getParseErrorText = function (oDoc){
+ var parseErrorText = Sarissa.PARSED_OK;
+ if(!oDoc.documentElement){
+ parseErrorText = Sarissa.PARSED_EMPTY;
+ } else if(oDoc.documentElement.tagName == "parsererror"){
+ parseErrorText = oDoc.documentElement.firstChild.data;
+ parseErrorText += "\n" + oDoc.documentElement.firstChild.nextSibling.firstChild.data;
+ } else if(oDoc.getElementsByTagName("parsererror").length > 0){
+ var parsererror = oDoc.getElementsByTagName("parsererror")[0];
+ parseErrorText = Sarissa.getText(parsererror, true)+"\n";
+ } else if(oDoc.parseError && oDoc.parseError.errorCode != 0){
+ parseErrorText = Sarissa.PARSED_UNKNOWN_ERROR;
+ };
+ return parseErrorText;
+ };
+};
+Sarissa.getText = function(oNode, deep){
+ var s = "";
+ var nodes = oNode.childNodes;
+ for(var i=0; i < nodes.length; i++){
+ var node = nodes[i];
+ var nodeType = node.nodeType;
+ if(nodeType == Node.TEXT_NODE || nodeType == Node.CDATA_SECTION_NODE){
+ s += node.data;
+ } else if(deep == true
+ && (nodeType == Node.ELEMENT_NODE
+ || nodeType == Node.DOCUMENT_NODE
+ || nodeType == Node.DOCUMENT_FRAGMENT_NODE)){
+ s += Sarissa.getText(node, true);
+ };
+ };
+ return s;
+};
+if(!window.XMLSerializer
+ && Sarissa.getDomDocument
+ && Sarissa.getDomDocument("","foo", null).xml){
+ /**
+ * Utility class to serialize DOM Node objects to XML strings
+ * @constructor
+ */
+ XMLSerializer = function(){};
+ /**
+ * Serialize the given DOM Node to an XML string
+ * @param oNode the DOM Node to serialize
+ */
+ XMLSerializer.prototype.serializeToString = function(oNode) {
+ return oNode.xml;
+ };
+};
+
+/**
+ * strips tags from a markup string
+ */
+Sarissa.stripTags = function (s) {
+ return s.replace(/<[^>]+>/g,"");
+};
+/**
+ * <p>Deletes all child nodes of the given node</p>
+ * @argument oNode the Node to empty
+ */
+Sarissa.clearChildNodes = function(oNode) {
+ // need to check for firstChild due to opera 8 bug with hasChildNodes
+ while(oNode.firstChild) {
+ oNode.removeChild(oNode.firstChild);
+ };
+};
+/**
+ * <p> Copies the childNodes of nodeFrom to nodeTo</p>
+ * <p> <b>Note:</b> The second object's original content is deleted before
+ * the copy operation, unless you supply a true third parameter</p>
+ * @argument nodeFrom the Node to copy the childNodes from
+ * @argument nodeTo the Node to copy the childNodes to
+ * @argument bPreserveExisting whether to preserve the original content of nodeTo, default is false
+ */
+Sarissa.copyChildNodes = function(nodeFrom, nodeTo, bPreserveExisting) {
+ if(_SARISSA_IS_SAFARI && nodeTo.nodeType == Node.DOCUMENT_NODE){ // SAFARI_OLD ??
+ nodeTo = nodeTo.documentElement; //Appearantly there's a bug in safari where you can't appendChild to a document node
+ }
+
+ if((!nodeFrom) || (!nodeTo)){
+ throw "Both source and destination nodes must be provided";
+ };
+ if(!bPreserveExisting){
+ Sarissa.clearChildNodes(nodeTo);
+ };
+ var ownerDoc = nodeTo.nodeType == Node.DOCUMENT_NODE ? nodeTo : nodeTo.ownerDocument;
+ var nodes = nodeFrom.childNodes;
+ if(typeof(ownerDoc.importNode) != "undefined") {
+ for(var i=0;i < nodes.length;i++) {
+ nodeTo.appendChild(ownerDoc.importNode(nodes[i], true));
+ };
+ } else {
+ for(var i=0;i < nodes.length;i++) {
+ nodeTo.appendChild(nodes[i].cloneNode(true));
+ };
+ };
+};
+
+/**
+ * <p> Moves the childNodes of nodeFrom to nodeTo</p>
+ * <p> <b>Note:</b> The second object's original content is deleted before
+ * the move operation, unless you supply a true third parameter</p>
+ * @argument nodeFrom the Node to copy the childNodes from
+ * @argument nodeTo the Node to copy the childNodes to
+ * @argument bPreserveExisting whether to preserve the original content of nodeTo, default is
+ */
+Sarissa.moveChildNodes = function(nodeFrom, nodeTo, bPreserveExisting) {
+ if((!nodeFrom) || (!nodeTo)){
+ throw "Both source and destination nodes must be provided";
+ };
+ if(!bPreserveExisting){
+ Sarissa.clearChildNodes(nodeTo);
+ };
+ var nodes = nodeFrom.childNodes;
+ // if within the same doc, just move, else copy and delete
+ if(nodeFrom.ownerDocument == nodeTo.ownerDocument){
+ while(nodeFrom.firstChild){
+ nodeTo.appendChild(nodeFrom.firstChild);
+ };
+ } else {
+ var ownerDoc = nodeTo.nodeType == Node.DOCUMENT_NODE ? nodeTo : nodeTo.ownerDocument;
+ if(typeof(ownerDoc.importNode) != "undefined") {
+ for(var i=0;i < nodes.length;i++) {
+ nodeTo.appendChild(ownerDoc.importNode(nodes[i], true));
+ };
+ }else{
+ for(var i=0;i < nodes.length;i++) {
+ nodeTo.appendChild(nodes[i].cloneNode(true));
+ };
+ };
+ Sarissa.clearChildNodes(nodeFrom);
+ };
+};
+
+/**
+ * <p>Serialize any <strong>non</strong> DOM object to an XML string. All properties are serialized using the property name
+ * as the XML element name. Array elements are rendered as <code>array-item</code> elements,
+ * using their index/key as the value of the <code>key</code> attribute.</p>
+ * @argument anyObject the object to serialize
+ * @argument objectName a name for that object
+ * @return the XML serialization of the given object as a string
+ */
+Sarissa.xmlize = function(anyObject, objectName, indentSpace){
+ indentSpace = indentSpace?indentSpace:'';
+ var s = indentSpace + '<' + objectName + '>';
+ var isLeaf = false;
+ if(!(anyObject instanceof Object) || anyObject instanceof Number || anyObject instanceof String
+ || anyObject instanceof Boolean || anyObject instanceof Date){
+ s += Sarissa.escape(""+anyObject);
+ isLeaf = true;
+ }else{
+ s += "\n";
+ var isArrayItem = anyObject instanceof Array;
+ for(var name in anyObject){
+ s += Sarissa.xmlize(anyObject[name], (isArrayItem?"array-item key=\""+name+"\"":name), indentSpace + " ");
+ };
+ s += indentSpace;
+ };
+ return (s += (objectName.indexOf(' ')!=-1?"</array-item>\n":"</" + objectName + ">\n"));
+};
+
+/**
+ * Escape the given string chacters that correspond to the five predefined XML entities
+ * @param sXml the string to escape
+ */
+Sarissa.escape = function(sXml){
+ return sXml.replace(/&/g, "&")
+ .replace(/</g, "<")
+ .replace(/>/g, ">")
+ .replace(/"/g, """)
+ .replace(/'/g, "'");
+};
+
+/**
+ * Unescape the given string. This turns the occurences of the predefined XML
+ * entities to become the characters they represent correspond to the five predefined XML entities
+ * @param sXml the string to unescape
+ */
+Sarissa.unescape = function(sXml){
+ return sXml.replace(/'/g,"'")
+ .replace(/"/g,"\"")
+ .replace(/>/g,">")
+ .replace(/</g,"<")
+ .replace(/&/g,"&");
+};
+// EOF
Added: myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.inputHtml/sarissa_ieemu_xpath.js
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.inputHtml/sarissa_ieemu_xpath.js?rev=928555&view=auto
==============================================================================
--- myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.inputHtml/sarissa_ieemu_xpath.js (added)
+++ myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.inputHtml/sarissa_ieemu_xpath.js Mon Mar 29 01:14:43 2010
@@ -0,0 +1,204 @@
+/**
+ * ====================================================================
+ * About
+ * ====================================================================
+ * Sarissa cross browser XML library - IE XPath Emulation
+ * @version @sarissa.version@
+ * @author: Manos Batsis, mailto: mbatsis at users full stop sourceforge full stop net
+ *
+ * This script emulates Internet Explorer's selectNodes and selectSingleNode
+ * for Mozilla. Associating namespace prefixes with URIs for your XPath queries
+ * is easy with IE's setProperty.
+ * USers may also map a namespace prefix to a default (unprefixed) namespace in the
+ * source document with Sarissa.setXpathNamespaces
+ *
+ *
+ * ====================================================================
+ * Licence
+ * ====================================================================
+ * Sarissa is free software distributed under the GNU GPL version 2 (see <a href="gpl.txt">gpl.txt</a>) or higher,
+ * GNU LGPL version 2.1 (see <a href="lgpl.txt">lgpl.txt</a>) or higher and Apache Software License 2.0 or higher
+ * (see <a href="asl.txt">asl.txt</a>). This means you can choose one of the three and use that if you like. If
+ * you make modifications under the ASL, i would appreciate it if you submitted those.
+ * In case your copy of Sarissa does not include the license texts, you may find
+ * them online in various formats at <a href="http://www.gnu.org">http://www.gnu.org</a> and
+ * <a href="http://www.apache.org">http://www.apache.org</a>.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ * KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ * WARRANTIES OF MERCHANTABILITY,FITNESS FOR A PARTICULAR PURPOSE
+ * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+ * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+if(_SARISSA_HAS_DOM_FEATURE && document.implementation.hasFeature("XPath", "3.0")){
+ /**
+ * <p>SarissaNodeList behaves as a NodeList but is only used as a result to <code>selectNodes</code>,
+ * so it also has some properties IEs proprietery object features.</p>
+ * @private
+ * @constructor
+ * @argument i the (initial) list size
+ */
+ function SarissaNodeList(i){
+ this.length = i;
+ };
+ /** <p>Set an Array as the prototype object</p> */
+ SarissaNodeList.prototype = [0];
+ /** <p>Inherit the Array constructor </p> */
+ SarissaNodeList.prototype.constructor = Array;
+ /**
+ * <p>Returns the node at the specified index or null if the given index
+ * is greater than the list size or less than zero </p>
+ * <p><b>Note</b> that in ECMAScript you can also use the square-bracket
+ * array notation instead of calling <code>item</code>
+ * @argument i the index of the member to return
+ * @returns the member corresponding to the given index
+ */
+ SarissaNodeList.prototype.item = function(i) {
+ return (i < 0 || i >= this.length)?null:this[i];
+ };
+ /**
+ * <p>Emulate IE's expr property
+ * (Here the SarissaNodeList object is given as the result of selectNodes).</p>
+ * @returns the XPath expression passed to selectNodes that resulted in
+ * this SarissaNodeList
+ */
+ SarissaNodeList.prototype.expr = "";
+ /** dummy, used to accept IE's stuff without throwing errors */
+ if(window.XMLDocument && (!XMLDocument.prototype.setProperty)){
+ XMLDocument.prototype.setProperty = function(x,y){};
+ };
+ /**
+ * <p>Programmatically control namespace URI/prefix mappings for XPath
+ * queries.</p>
+ * <p>This method comes especially handy when used to apply XPath queries
+ * on XML documents with a default namespace, as there is no other way
+ * of mapping that to a prefix.</p>
+ * <p>Using no namespace prefix in DOM Level 3 XPath queries, implies you
+ * are looking for elements in the null namespace. If you need to look
+ * for nodes in the default namespace, you need to map a prefix to it
+ * first like:</p>
+ * <pre>Sarissa.setXpathNamespaces(oDoc, "xmlns:myprefix=&aposhttp://mynsURI&apos");</pre>
+ * <p><b>Note 1 </b>: Use this method only if the source document features
+ * a default namespace (without a prefix), otherwise just use IE's setProperty
+ * (moz will rezolve non-default namespaces by itself). You will need to map that
+ * namespace to a prefix for queries to work.</p>
+ * <p><b>Note 2 </b>: This method calls IE's setProperty method to set the
+ * appropriate namespace-prefix mappings, so you dont have to do that.</p>
+ * @param oDoc The target XMLDocument to set the namespace mappings for.
+ * @param sNsSet A whilespace-seperated list of namespace declarations as
+ * those would appear in an XML document. E.g.:
+ * <code>"xmlns:xhtml='http://www.w3.org/1999/xhtml'
+ * xmlns:'http://www.w3.org/1999/XSL/Transform'"</code>
+ * @throws An error if the format of the given namespace declarations is bad.
+ */
+ Sarissa.setXpathNamespaces = function(oDoc, sNsSet) {
+ //oDoc._sarissa_setXpathNamespaces(sNsSet);
+ oDoc._sarissa_useCustomResolver = true;
+ var namespaces = sNsSet.indexOf(" ")>-1?sNsSet.split(" "):[sNsSet];
+ oDoc._sarissa_xpathNamespaces = [namespaces.length];
+ for(var i=0;i < namespaces.length;i++){
+ var ns = namespaces[i];
+ var colonPos = ns.indexOf(":");
+ var assignPos = ns.indexOf("=");
+ if(colonPos > 0 && assignPos > colonPos+1){
+ var prefix = ns.substring(colonPos+1, assignPos);
+ var uri = ns.substring(assignPos+2, ns.length-1);
+ oDoc._sarissa_xpathNamespaces[prefix] = uri;
+ }else{
+ throw "Bad format on namespace declaration(s) given";
+ };
+ };
+ };
+ /**
+ * @private Flag to control whether a custom namespace resolver should
+ * be used, set to true by Sarissa.setXpathNamespaces
+ */
+ XMLDocument.prototype._sarissa_useCustomResolver = false;
+ /** @private */
+ XMLDocument.prototype._sarissa_xpathNamespaces = [];
+ /**
+ * <p>Extends the XMLDocument to emulate IE's selectNodes.</p>
+ * @argument sExpr the XPath expression to use
+ * @argument contextNode this is for internal use only by the same
+ * method when called on Elements
+ * @returns the result of the XPath search as a SarissaNodeList
+ * @throws An error if no namespace URI is found for the given prefix.
+ */
+ XMLDocument.prototype.selectNodes = function(sExpr, contextNode, returnSingle){
+ var nsDoc = this;
+ var nsresolver = this._sarissa_useCustomResolver?
+ function(prefix) {
+ var s = nsDoc._sarissa_xpathNamespaces[prefix];
+ if(s)return s;
+ else throw "No namespace URI found for prefix: '" + prefix+"'";
+ }:
+ this.createNSResolver(this.documentElement);
+ var result = null;
+ if(!returnSingle){
+ var oResult = this.evaluate(sExpr,
+ (contextNode?contextNode:this),
+ nsresolver,
+ XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
+ var nodeList = new SarissaNodeList(oResult.snapshotLength);
+ nodeList.expr = sExpr;
+ for(var i=0;i<nodeList.length;i++) {
+ nodeList[i] = oResult.snapshotItem(i);
+ }
+ result = nodeList;
+ }
+ else {
+ result = oResult = this.evaluate(sExpr,
+ (contextNode?contextNode:this),
+ nsresolver,
+ XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
+ };
+ return result;
+ };
+ /**
+ * <p>Extends the Element to emulate IE's selectNodes</p>
+ * @argument sExpr the XPath expression to use
+ * @returns the result of the XPath search as an (Sarissa)NodeList
+ * @throws An
+ * error if invoked on an HTML Element as this is only be
+ * available to XML Elements.
+ */
+ Element.prototype.selectNodes = function(sExpr){
+ var doc = this.ownerDocument;
+ if(doc.selectNodes) {
+ return doc.selectNodes(sExpr, this);
+ }
+ else {
+ throw "Method selectNodes is only supported by XML Elements";
+ }
+ };
+ /**
+ * <p>Extends the XMLDocument to emulate IE's selectSingleNode.</p>
+ * @argument sExpr the XPath expression to use
+ * @argument contextNode this is for internal use only by the same
+ * method when called on Elements
+ * @returns the result of the XPath search as an (Sarissa)NodeList
+ */
+ XMLDocument.prototype.selectSingleNode = function(sExpr, contextNode){
+ var ctx = contextNode?contextNode:null;
+ return this.selectNodes(sExpr, ctx, true);
+ };
+ /**
+ * <p>Extends the Element to emulate IE's selectSingleNode.</p>
+ * @argument sExpr the XPath expression to use
+ * @returns the result of the XPath search as an (Sarissa)NodeList
+ * @throws An error if invoked on an HTML Element as this is only be
+ * available to XML Elements.
+ */
+ Element.prototype.selectSingleNode = function(sExpr){
+ var doc = this.ownerDocument;
+ if(doc.selectSingleNode) {
+ return doc.selectSingleNode(sExpr, this);
+ } else {
+ throw "Method selectNodes is only supported by XML Elements";
+ }
+ };
+ Sarissa.IS_ENABLED_SELECT_NODES = true;
+}
\ No newline at end of file
Added: myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.inputTextHelp/inputTextHelp.js
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.inputTextHelp/inputTextHelp.js?rev=928555&view=auto
==============================================================================
--- myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.inputTextHelp/inputTextHelp.js (added)
+++ myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.inputTextHelp/inputTextHelp.js Mon Mar 29 01:14:43 2010
@@ -0,0 +1,17 @@
+function resetHelpValue(helpText, id)
+{
+ var element=document.getElementById(id);
+ if(element.value==helpText)
+ {
+ element.value="";
+ }
+}
+
+function selectText(helpText, id)
+{
+ var element=document.getElementById(id);
+ if(element.value==helpText)
+ {
+ element.select();
+ }
+}
\ No newline at end of file
Added: myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.jslistener/JSListener.js
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.jslistener/JSListener.js?rev=928555&view=auto
==============================================================================
--- myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.jslistener/JSListener.js (added)
+++ myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.jslistener/JSListener.js Mon Mar 29 01:14:43 2010
@@ -0,0 +1,91 @@
+function orgApacheMyfacesJsListenerSetExpressionProperty(
+ srcId, destId, property, expression)
+{
+ var log = true;
+ var logStr;
+
+ try
+ {
+
+ if(log) logStr+="Source-Element id: "+srcId;
+
+ var srcElem = document.getElementById(srcId);
+
+ if(log) logStr+="\n Source-element: "+srcElem;
+ if(log) logStr+="\n Type of source-element: "+typeof(srcElem);
+
+ if(log) logStr += "\n\n Destination-element id: "+destId;
+
+ var destElem = document.getElementById(destId);
+
+ if(log) logStr+="\n Destination-element: "+destElem;
+ if(log) logStr+="\n Type of destination-element: "+typeof(destElem);
+
+ if(log) logStr+="\n\n Expression before parsing: "+expression;
+
+ expression = orgApacheMyfacesJsListenerReplaceMakro(expression, "srcElem",srcElem);
+ expression = orgApacheMyfacesJsListenerReplaceMakro(expression, "destElem",destElem);
+
+ if(log) logStr+="\n Expression after parsing: "+expression;
+
+ var value = eval(expression);
+
+ if(property)
+ {
+ var destElemStr = "destElem.";
+
+ var valueStr;
+
+ if(typeof (value) == 'string')
+ {
+ valueStr = "'"+value+"'";
+ }
+ else
+ {
+ valueStr = value;
+ }
+
+ var propertySetStr = destElemStr+property+"="+valueStr+";";
+
+ if(log) logStr+="\n\n Property set string: "+propertySetStr;
+
+ eval(propertySetStr);
+ }
+ }
+ catch(e)
+ {
+ var errorString = 'Error encountered : ';
+ errorString += e['message'];
+ errorString += logStr;
+
+ if(document.all)
+ {
+ e['description']=errorString;
+ throw e;
+ }
+ else
+ {
+ throw errorString;
+ }
+ }
+
+}
+
+function orgApacheMyfacesJsListenerReplaceMakro(expression, macroName, elem)
+{
+
+ var regEx = new RegExp("\\$"+macroName, "g");
+ expression = expression.replace(regEx,macroName);
+
+/* if(orgApacheMyfacesJsListenerIsArray(elem))
+ {
+ var arrRegEx = new RegExp("\\$"+macroName+"[\\[]([0-9]+)[\\]]", "g");
+ expression = expression.replace(arrRegEx,macroName+"[$1]");
+ expression = expression.replace(regEx,macroName+"[0]");
+ }
+ else
+ {*/
+// }
+
+ return expression;
+}
\ No newline at end of file
Added: myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.navmenu.htmlnavmenu/HMenuIEHover.js
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.navmenu.htmlnavmenu/HMenuIEHover.js?rev=928555&view=auto
==============================================================================
--- myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.navmenu.htmlnavmenu/HMenuIEHover.js (added)
+++ myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/resources/oam.custom.navmenu.htmlnavmenu/HMenuIEHover.js Mon Mar 29 01:14:43 2010
@@ -0,0 +1,24 @@
+startList = function()
+{
+ if (document.all && document.getElementById)
+ {
+ navDivRoot = document.getElementById("hNav_outer");
+ navRoot = navDivRoot.childNodes[0];
+ for (i=0; i<navRoot.childNodes.length; i++)
+ {
+ node = navRoot.childNodes[i];
+ if (node.nodeName=="LI")
+ {
+ node.onmouseover=function()
+ {
+ this.className+=" over";
+ }
+ node.onmouseout=function()
+ {
+ this.className=this.className.replace(" over", "");
+ }
+ }
+ }
+ }
+}
+window.onload=startList;
\ No newline at end of file