home *** CD-ROM | disk | FTP | other *** search
- /*
- * Copyright 1999-2004 The Apache Software Foundation
- *
- * Licensed 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.
- */
-
- /*
- * This is where all the browser dependent functions should be
- */
-
- var IE = (document.all) ? true : false;
-
- function addEvent(obj,type,func,bol) {
- if (IE) {
- obj.attachEvent(type,func);
- } else {
- obj.addEventListener(type.replace(/^on/g,""),func,bol);
- }
- }
-
- function removeEvent(obj,type,func,bol) {
- if (IE) {
- obj.detachEvent(type,func);
- } else {
- obj.removeEventListener(type.replace(/^on/g,""),func,bol);
- }
- }
-
- function setClass(obj,value) {
- if (IE) {
- obj.className = value;
- } else {
- obj.setAttribute("class",value,false);
- }
- }
-
- function getClass(obj) {
- return (IE) ? obj.className : obj.getAttribute("class");
- }
-
- function getTarget(e,obj) {
- if (IE) {
- return window.event.srcElement;
- } else {
- if (e) {
- return e.target;
- } else {
- return obj;
- }
- }
- }
-
- function getContentSource() {
- var iframe = document.getElementById('edit');
- var editor_body = iframe.contentWindow.document.body;
- if (IE) {
- return editor_body.createTextRange();
- } else {
- var source = editor_body.ownerDocument.createRange();
- source.selectNodeContents(editor.body);
- return source.toString();
- }
- }
-
- function getSelection(iframe) {
- if (IE) {
- return iframe.contentWindow.document.selection.createRange();
- } else {
- return iframe.contentWindow.getSelection();
- }
- }
-
- function getCommandFormat(block) {
- return (IE) ? "<"+block+">" : block;
- }
-
- // ------------------------ WARNING: HOTSPOT! ---------------------------
- // since it's called for every keystroke, keep it as fast as possible!!!
- // ----------------------------------------------------------------------
-
- function getOrigin() {
-
- var iframe = document.getElementById('edit');
- var selection = getSelection(iframe);
-
- if (IE) {
- var event = iframe.contentWindow.event;
- if (selection.type == "Control") {
- if (selection.length > 1) {
- alert("Error too many obj");
- } else {
- return selection(0);
- }
- } else {
- if ((selection.parentElement().nodeType != NodeType.TEXT_NODE) && event) {
- var nodes = selection.parentElement().childNodes;
- if (nodes.length == 1) return nodes[0];
- for (var co = 0; co < nodes.length; co++) {
- if (!nodes[co].offsetTop && nodes[co].nextSibling) {
- if ((nodes[co].nextSibling.offsetTop <= event.y)
- && (nodes[co].nextSibling.offsetTop + nodes[co].nextSibling.offsetHeight >= event.y)
- && (nodes[co].nextSibling.offsetLeft <= event.x)) {
- return nodes[co];
- }
- } else if ((nodes[co].offsetTop <= event.y)
- && (nodes[co].offsetTop + nodes[co].offsetHeight >= event.y)) {
- return nodes[co];
- }
- }
- return nodes[nodes.length-1];
- }
- }
- return selection.parentElement();
- } else {
- if (selection.anchorNode == selection.focusNode) {
- if (selection.anchorNode.nodeType != selection.anchorNode.TEXT_NODE) {
- var index = (selection.focusOffset == 0) ? 0 : selection.focusOffset - 1;
- return selection.anchorNode.childNodes[index];
- }
- }
- return selection.anchorNode;
- }
- }
-