Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • osian/sucs-site
  • kais58/sucs-site
  • imranh/sucs-site
  • foshjedi2004/sucs-site
  • gigosaurus/sucs-site
  • matstn/sucs-site
  • ripp_/sucs-site
  • eggnog/sucs-site
  • sucssite/sucs-site
  • elbows/sucs-site
  • realitykiller/sucs-site
  • crox/sucs-site
  • vectre/sucs-site
  • welshbyte/sucs-site
  • paperclipman/sucs-site
15 results
Show changes
Showing
with 0 additions and 4470 deletions
<!doctype html public "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
<html>
<head>
<title>
Overview
</title>
<link rel ="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script>
function asd() {
parent.document.title="TinyMCE_Event.class.js Overview";
}
</script>
</head>
<body bgcolor="white" onload="asd();">
<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
<tr align="center" valign="top">
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
<td bgcolor="#FFFFFF" class="NavBarCell1Rev"> &nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
<td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
</tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top">
<em>
<b></b></em>
</td>
</tr>
<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
<a href="index.html" target="_top"><b>FRAMES</b></a> &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
<!--
if(window==top) {
document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
}
//-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->
<hr>
<center>
<h2>TinyMCE_Event.class.js</h2>
</center>
<h4>Summary</h4>
<p>
No overview generated for 'TinyMCE_Event.class.js'<BR/><BR/>
</p>
<hr>
<!-- ========== METHOD SUMMARY =========== -->
<!-- ========== END METHOD SUMMARY =========== -->
<pre class="sourceview"><span class="comment">/**
* $RCSfile: overview-summary-TinyMCE_Event.class.js.html,v $
* $Revision: 1.42 $
* $Date: 2006/04/14 20:00:30 $
*
* <span class="attrib">@author</span> Moxiecode
* <span class="attrib">@copyright</span> Copyright 2004-2006, Moxiecode Systems AB, All rights reserved.
*
* The contents of this file will be wrapped in a class later on.
*/</span>
<span class="comment">/**
* Sets the enabled/disabled state of build in events on the specific node.
* This function is needed since some events gets executed in WYSIWYG mode.
*
* <span class="attrib">@param</span> {HTMLNode} node HTML node to enable/disable events on.
* <span class="attrib">@param</span> {boolean} state true/false state if the events should be disabled or enabled.
* <span class="attrib">@private</span>
*/</span>
TinyMCE_Engine.<span class="reserved">prototype</span>._setEventsEnabled = <span class="reserved">function</span>(node, state) {
var events = new Array(<span class="literal">'onfocus'</span>,<span class="literal">'onblur'</span>,<span class="literal">'onclick'</span>,<span class="literal">'ondblclick'</span>,
<span class="literal">'onmousedown'</span>,<span class="literal">'onmouseup'</span>,<span class="literal">'onmouseover'</span>,<span class="literal">'onmousemove'</span>,
<span class="literal">'onmouseout'</span>,<span class="literal">'onkeypress'</span>,<span class="literal">'onkeydown'</span>,<span class="literal">'onkeydown'</span>,<span class="literal">'onkeyup'</span>);
var evs = tinyMCE.settings[<span class="literal">'event_elements'</span>].split(<span class="literal">','</span>);
<span class="reserved">for</span> (var y=0; y&lt;evs.length; y++){
var elms = node.getElementsByTagName(evs[y]);
<span class="reserved">for</span> (var i=0; i&lt;elms.length; i++) {
var event = <span class="literal">""</span>;
<span class="reserved">for</span> (var x=0; x&lt;events.length; x++) {
<span class="reserved">if</span> ((event = tinyMCE.getAttrib(elms[i], events[x])) != <span class="literal">''</span>) {
event = tinyMCE.cleanupEventStr(<span class="literal">""</span> + event);
<span class="reserved">if</span> (!state)
event = <span class="literal">"return true;"</span> + event;
<span class="reserved">else</span>
event = event.replace(/^<span class="reserved">return</span> true;/gi, <span class="literal">''</span>);
elms[i].removeAttribute(events[x]);
elms[i].setAttribute(events[x], event);
}
}
}
}
};
<span class="comment">/**
* Patch function for MSIE specific events, this one simply grabs the window.event object and
* passes it as a argument to the handleEvent function of the TinyMCE_Engine class.
*
* <span class="attrib">@param</span> {string} editor_id Editor id to patch.
* <span class="attrib">@private</span>
*/</span>
TinyMCE_Engine.<span class="reserved">prototype</span>._eventPatch = <span class="reserved">function</span>(editor_id) {
var n, inst, win, e;
<span class="comment">// Remove odd, error</span>
<span class="reserved">if</span> (typeof(tinyMCE) == <span class="literal">"undefined"</span>)
<span class="reserved">return</span> true;
try {
<span class="comment">// Try selected instance first</span>
<span class="reserved">if</span> (tinyMCE.selectedInstance) {
win = tinyMCE.selectedInstance.getWin();
<span class="reserved">if</span> (win &amp;&amp; win.event) {
e = win.event;
<span class="reserved">if</span> (!e.target)
e.target = e.srcElement;
TinyMCE_Engine.<span class="reserved">prototype</span>.handleEvent(e);
<span class="reserved">return</span>;
}
}
<span class="comment">// Search for it</span>
<span class="reserved">for</span> (n in tinyMCE.instances) {
inst = tinyMCE.instances[n];
<span class="reserved">if</span> (!tinyMCE.isInstance(inst))
continue;
tinyMCE.selectedInstance = inst;
win = inst.getWin();
<span class="reserved">if</span> (win &amp;&amp; win.event) {
e = win.event;
<span class="reserved">if</span> (!e.target)
e.target = e.srcElement;
TinyMCE_Engine.<span class="reserved">prototype</span>.handleEvent(e);
<span class="reserved">return</span>;
}
}
} catch (ex) {
<span class="comment">// Ignore error if iframe is pointing to external URL</span>
}
};
<span class="comment">/**
* Unload document event handler function. This function will be executed when the
* page is unloaded, this will automaticly move the current editor contents to the textarea element this enables
* the editor to restore it's state when the user presses the back button in the browser.
* This will execute the triggerSave function.
*/</span>
TinyMCE_Engine.<span class="reserved">prototype</span>.unloadHandler = <span class="reserved">function</span>() {
tinyMCE.triggerSave(true, true);
};
<span class="comment">/**
* Adds the handleEvent function to the specified editor instance.
*
* <span class="attrib">@param</span> {inst} inst Editor control instance to add event handler to.
*/</span>
TinyMCE_Engine.<span class="reserved">prototype</span>.addEventHandlers = <span class="reserved">function</span>(inst) {
var doc = inst.getDoc();
inst.switchSettings();
<span class="reserved">if</span> (tinyMCE.isMSIE) {
tinyMCE.addEvent(doc, <span class="literal">"keypress"</span>, TinyMCE_Engine.<span class="reserved">prototype</span>._eventPatch);
tinyMCE.addEvent(doc, <span class="literal">"keyup"</span>, TinyMCE_Engine.<span class="reserved">prototype</span>._eventPatch);
tinyMCE.addEvent(doc, <span class="literal">"keydown"</span>, TinyMCE_Engine.<span class="reserved">prototype</span>._eventPatch);
tinyMCE.addEvent(doc, <span class="literal">"mouseup"</span>, TinyMCE_Engine.<span class="reserved">prototype</span>._eventPatch);
tinyMCE.addEvent(doc, <span class="literal">"click"</span>, TinyMCE_Engine.<span class="reserved">prototype</span>._eventPatch);
} <span class="reserved">else</span> {
tinyMCE.addEvent(doc, <span class="literal">"keypress"</span>, tinyMCE.handleEvent);
tinyMCE.addEvent(doc, <span class="literal">"keydown"</span>, tinyMCE.handleEvent);
tinyMCE.addEvent(doc, <span class="literal">"keyup"</span>, tinyMCE.handleEvent);
tinyMCE.addEvent(doc, <span class="literal">"click"</span>, tinyMCE.handleEvent);
tinyMCE.addEvent(doc, <span class="literal">"mouseup"</span>, tinyMCE.handleEvent);
tinyMCE.addEvent(doc, <span class="literal">"mousedown"</span>, tinyMCE.handleEvent);
tinyMCE.addEvent(doc, <span class="literal">"focus"</span>, tinyMCE.handleEvent);
tinyMCE.addEvent(doc, <span class="literal">"blur"</span>, tinyMCE.handleEvent);
eval(<span class="literal">'try { doc.designMode = "On"; } catch(e) {}'</span>); <span class="comment">// Force designmode</span>
}
};
<span class="comment">/**
* Mouse move handler function, this will be executed each time
* the mouse is moved within a editor instance. This function stores away the current selection in MSIE
* this will then be used when a undo/redo level is added.
*/</span>
TinyMCE_Engine.<span class="reserved">prototype</span>.onMouseMove = <span class="reserved">function</span>() {
var inst;
<span class="reserved">if</span> (!tinyMCE.hasMouseMoved) {
inst = tinyMCE.selectedInstance;
<span class="comment">// Workaround for bug #1437457 (Odd MSIE bug)</span>
<span class="reserved">if</span> (inst.isFocused) {
inst.undoBookmark = inst.selection.getBookmark();
tinyMCE.hasMouseMoved = true;
}
}
<span class="comment">// tinyMCE.cancelEvent(inst.getWin().event);</span>
<span class="comment">// return false;</span>
};
<span class="comment">/**
* Cancels the specified event, this will disable the event from be passed to other listeners in event chain.
*
* <span class="attrib">@param</span> {DOMEvent} e Event to cancel.
*/</span>
TinyMCE_Engine.<span class="reserved">prototype</span>.cancelEvent = <span class="reserved">function</span>(e) {
<span class="reserved">if</span> (tinyMCE.isMSIE) {
e.returnValue = false;
e.cancelBubble = true;
} <span class="reserved">else</span>
e.preventDefault();
};
<span class="comment">/**
* Adds a event handler function to the specified object.
*
* <span class="attrib">@param</span> {HTMLElement} o Object to add event handler to.
* <span class="attrib">@param</span> {string} n Event name to listen to for example "click".
* <span class="attrib">@param</span> {function} h Function handler to execute when event occurs.
*/</span>
TinyMCE_Engine.<span class="reserved">prototype</span>.addEvent = <span class="reserved">function</span>(o, n, h) {
<span class="reserved">if</span> (o.attachEvent)
o.attachEvent(<span class="literal">"on"</span> + n, h);
<span class="reserved">else</span>
o.addEventListener(n, h, false);
};
<span class="comment">/**
* Adds accessibility keydown handler to the specified select element.
*
* <span class="attrib">@param</span> {DOMEvent} e Event that gets passed when the element is focused.
* <span class="attrib">@param</span> {HTMLElement} s Select element that the keydown handler gets added to.
* <span class="attrib">@param</span> {DOMWindow} w DOM window reference to add.
*/</span>
TinyMCE_Engine.<span class="reserved">prototype</span>.addSelectAccessibility = <span class="reserved">function</span>(e, s, w) {
<span class="comment">// Add event handlers </span>
<span class="reserved">if</span> (!s._isAccessible) {
s.onkeydown = tinyMCE.accessibleEventHandler;
s.onblur = tinyMCE.accessibleEventHandler;
s._isAccessible = true;
s._win = w;
}
<span class="reserved">return</span> false;
};
<span class="comment">/**
* Accessibility handler that gets executed when the user hits a key in a select element.
* This handler trams the enter/return or space key and then executes the onchange event handler.
*
* <span class="attrib">@param</span> {DOMEvent} e DOM event object instance.
*/</span>
TinyMCE_Engine.<span class="reserved">prototype</span>.accessibleEventHandler = <span class="reserved">function</span>(e) {
var win = <span class="reserved">this</span>._win;
e = tinyMCE.isMSIE ? win.event : e;
var elm = tinyMCE.isMSIE ? e.srcElement : e.target;
<span class="comment">// Unpiggyback onchange on blur</span>
<span class="reserved">if</span> (e.type == <span class="literal">"blur"</span>) {
<span class="reserved">if</span> (elm.oldonchange) {
elm.onchange = elm.oldonchange;
elm.oldonchange = null;
}
<span class="reserved">return</span> true;
}
<span class="comment">// Piggyback onchange</span>
<span class="reserved">if</span> (elm.nodeName == <span class="literal">"SELECT"</span> &amp;&amp; !elm.oldonchange) {
elm.oldonchange = elm.onchange;
elm.onchange = null;
}
<span class="comment">// Execute onchange and remove piggyback</span>
<span class="reserved">if</span> (e.keyCode == 13 || e.keyCode == 32) {
elm.onchange = elm.oldonchange;
elm.onchange();
elm.oldonchange = null;
tinyMCE.cancelEvent(e);
<span class="reserved">return</span> false;
}
<span class="reserved">return</span> true;
};
</pre>
<hr>
<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
<tr align="center" valign="top">
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
<td bgcolor="#FFFFFF" class="NavBarCell1Rev"> &nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
<td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
</tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top"><em>
<b></b></em>
</td>
</tr>
<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
<a href="index.html" target="_top"><b>FRAMES</b></a> &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
<!--
if(window==top) {
document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
}
//-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->
<hr>
<font size="-1">
</font>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Fri Apr 14 21:59:23 2006</div>
</body>
</html>
<!doctype html public "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
<html>
<head>
<title>
Overview
</title>
<link rel ="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script>
function asd() {
parent.document.title="TinyMCE_ForceParagraphs.class.js Overview";
}
</script>
</head>
<body bgcolor="white" onload="asd();">
<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
<tr align="center" valign="top">
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
<td bgcolor="#FFFFFF" class="NavBarCell1Rev"> &nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
<td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
</tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top">
<em>
<b></b></em>
</td>
</tr>
<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
<a href="index.html" target="_top"><b>FRAMES</b></a> &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
<!--
if(window==top) {
document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
}
//-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->
<hr>
<center>
<h2>TinyMCE_ForceParagraphs.class.js</h2>
</center>
<h4>Summary</h4>
<p>
No overview generated for 'TinyMCE_ForceParagraphs.class.js'<BR/><BR/>
</p>
<hr>
<!-- ========== METHOD SUMMARY =========== -->
<!-- ========== END METHOD SUMMARY =========== -->
<pre class="sourceview"><span class="comment">/**
* $RCSfile: overview-summary-TinyMCE_ForceParagraphs.class.js.html,v $
* $Revision: 1.42 $
* $Date: 2006/04/14 20:00:30 $
*
* <span class="attrib">@author</span> Moxiecode
* <span class="attrib">@copyright</span> Copyright 2004-2006, Moxiecode Systems AB, All rights reserved.
*/</span>
<span class="comment">/**
* Forces P tags on return/enter in Gecko browsers.
*/</span>
var TinyMCE_ForceParagraphs = {
<span class="comment">/**
* Inserts a paragraph at the current cursor location.
*
* <span class="attrib">@param</span> {TinyMCE_Control} inst TinyMCE editor control instance.
* <span class="attrib">@param</span> {DOMEvent} e DOM event object.
* <span class="attrib">@return</span> true on success or false if it fails.
* <span class="attrib">@type</span> boolean
* <span class="attrib">@private</span>
*/</span>
_insertPara : <span class="reserved">function</span>(inst, e) {
<span class="reserved">function</span> isEmpty(para) {
<span class="reserved">function</span> isEmptyHTML(html) {
<span class="reserved">return</span> html.replace(new RegExp(<span class="literal">'[ \t\r\n]+'</span>, <span class="literal">'g'</span>), <span class="literal">''</span>).toLowerCase() == <span class="literal">""</span>;
}
<span class="comment">// Check for images</span>
<span class="reserved">if</span> (para.getElementsByTagName(<span class="literal">"img"</span>).length &gt; 0)
<span class="reserved">return</span> false;
<span class="comment">// Check for tables</span>
<span class="reserved">if</span> (para.getElementsByTagName(<span class="literal">"table"</span>).length &gt; 0)
<span class="reserved">return</span> false;
<span class="comment">// Check for HRs</span>
<span class="reserved">if</span> (para.getElementsByTagName(<span class="literal">"hr"</span>).length &gt; 0)
<span class="reserved">return</span> false;
<span class="comment">// Check all textnodes</span>
var nodes = tinyMCE.getNodeTree(para, new Array(), 3);
<span class="reserved">for</span> (var i=0; i&lt;nodes.length; i++) {
<span class="reserved">if</span> (!isEmptyHTML(nodes[i].nodeValue))
<span class="reserved">return</span> false;
}
<span class="comment">// No images, no tables, no hrs, no text content then it's empty</span>
<span class="reserved">return</span> true;
}
var doc = inst.getDoc();
var sel = inst.getSel();
var win = inst.contentWindow;
var rng = sel.getRangeAt(0);
var body = doc.body;
var rootElm = doc.documentElement;
var blockName = <span class="literal">"P"</span>;
<span class="comment">// tinyMCE.debug(body.innerHTML);</span>
<span class="comment">// debug(e.target, sel.anchorNode.nodeName, sel.focusNode.nodeName, rng.startContainer, rng.endContainer, rng.commonAncestorContainer, sel.anchorOffset, sel.focusOffset, rng.toString());</span>
<span class="comment">// Setup before range</span>
var rngBefore = doc.createRange();
rngBefore.setStart(sel.anchorNode, sel.anchorOffset);
rngBefore.collapse(true);
<span class="comment">// Setup after range</span>
var rngAfter = doc.createRange();
rngAfter.setStart(sel.focusNode, sel.focusOffset);
rngAfter.collapse(true);
<span class="comment">// Setup start/end points</span>
var direct = rngBefore.compareBoundaryPoints(rngBefore.START_TO_END, rngAfter) &lt; 0;
var startNode = direct ? sel.anchorNode : sel.focusNode;
var startOffset = direct ? sel.anchorOffset : sel.focusOffset;
var endNode = direct ? sel.focusNode : sel.anchorNode;
var endOffset = direct ? sel.focusOffset : sel.anchorOffset;
startNode = startNode.nodeName == <span class="literal">"BODY"</span> ? startNode.firstChild : startNode;
endNode = endNode.nodeName == <span class="literal">"BODY"</span> ? endNode.firstChild : endNode;
<span class="comment">// tinyMCE.debug(startNode, endNode);</span>
<span class="comment">// Get block elements</span>
var startBlock = tinyMCE.getParentBlockElement(startNode);
var endBlock = tinyMCE.getParentBlockElement(endNode);
<span class="comment">// If absolute force paragraph generation within</span>
<span class="reserved">if</span> (startBlock &amp;&amp; new RegExp(<span class="literal">'absolute|relative|static'</span>, <span class="literal">'gi'</span>).test(startBlock.style.position))
startBlock = null;
<span class="reserved">if</span> (endBlock &amp;&amp; new RegExp(<span class="literal">'absolute|relative|static'</span>, <span class="literal">'gi'</span>).test(endBlock.style.position))
endBlock = null;
<span class="comment">// Use current block name</span>
<span class="reserved">if</span> (startBlock != null) {
blockName = startBlock.nodeName;
<span class="comment">// Use P instead</span>
<span class="reserved">if</span> (blockName == <span class="literal">"TD"</span> || blockName == <span class="literal">"TABLE"</span> || (blockName == <span class="literal">"DIV"</span> &amp;&amp; new RegExp(<span class="literal">'left|right'</span>, <span class="literal">'gi'</span>).test(startBlock.style.cssFloat)))
blockName = <span class="literal">"P"</span>;
}
<span class="comment">// Within a list use normal behaviour</span>
<span class="reserved">if</span> (tinyMCE.getParentElement(startBlock, <span class="literal">"OL,UL"</span>) != null)
<span class="reserved">return</span> false;
<span class="comment">// Within a table create new paragraphs</span>
<span class="reserved">if</span> ((startBlock != null &amp;&amp; startBlock.nodeName == <span class="literal">"TABLE"</span>) || (endBlock != null &amp;&amp; endBlock.nodeName == <span class="literal">"TABLE"</span>))
startBlock = endBlock = null;
<span class="comment">// Setup new paragraphs</span>
var paraBefore = (startBlock != null &amp;&amp; startBlock.nodeName == blockName) ? startBlock.cloneNode(false) : doc.createElement(blockName);
var paraAfter = (endBlock != null &amp;&amp; endBlock.nodeName == blockName) ? endBlock.cloneNode(false) : doc.createElement(blockName);
<span class="comment">// Is header, then force paragraph under</span>
<span class="reserved">if</span> (/^(H[1-6])$/.test(blockName))
paraAfter = doc.createElement(<span class="literal">"p"</span>);
<span class="comment">// Setup chop nodes</span>
var startChop = startNode;
var endChop = endNode;
<span class="comment">// Get startChop node</span>
node = startChop;
do {
<span class="reserved">if</span> (node == body || node.nodeType == 9 || tinyMCE.isBlockElement(node))
break;
startChop = node;
} <span class="reserved">while</span> ((node = node.previousSibling ? node.previousSibling : node.parentNode));
<span class="comment">// Get endChop node</span>
node = endChop;
do {
<span class="reserved">if</span> (node == body || node.nodeType == 9 || tinyMCE.isBlockElement(node))
break;
endChop = node;
} <span class="reserved">while</span> ((node = node.nextSibling ? node.nextSibling : node.parentNode));
<span class="comment">// Fix when only a image is within the TD</span>
<span class="reserved">if</span> (startChop.nodeName == <span class="literal">"TD"</span>)
startChop = startChop.firstChild;
<span class="reserved">if</span> (endChop.nodeName == <span class="literal">"TD"</span>)
endChop = endChop.lastChild;
<span class="comment">// If not in a block element</span>
<span class="reserved">if</span> (startBlock == null) {
<span class="comment">// Delete selection</span>
rng.deleteContents();
sel.removeAllRanges();
<span class="reserved">if</span> (startChop != rootElm &amp;&amp; endChop != rootElm) {
<span class="comment">// Insert paragraph before</span>
rngBefore = rng.cloneRange();
<span class="reserved">if</span> (startChop == body)
rngBefore.setStart(startChop, 0);
<span class="reserved">else</span>
rngBefore.setStartBefore(startChop);
paraBefore.appendChild(rngBefore.cloneContents());
<span class="comment">// Insert paragraph after</span>
<span class="reserved">if</span> (endChop.parentNode.nodeName == blockName)
endChop = endChop.parentNode;
<span class="comment">// If not after image</span>
<span class="comment">//if (rng.startContainer.nodeName != "BODY" &amp;&amp; rng.endContainer.nodeName != "BODY")</span>
rng.setEndAfter(endChop);
<span class="reserved">if</span> (endChop.nodeName != <span class="literal">"#text"</span> &amp;&amp; endChop.nodeName != <span class="literal">"BODY"</span>)
rngBefore.setEndAfter(endChop);
var contents = rng.cloneContents();
<span class="reserved">if</span> (contents.firstChild &amp;&amp; (contents.firstChild.nodeName == blockName || contents.firstChild.nodeName == <span class="literal">"BODY"</span>))
paraAfter.innerHTML = contents.firstChild.innerHTML;
<span class="reserved">else</span>
paraAfter.appendChild(contents);
<span class="comment">// Check if it's a empty paragraph</span>
<span class="reserved">if</span> (isEmpty(paraBefore))
paraBefore.innerHTML = <span class="literal">"&amp;nbsp;"</span>;
<span class="comment">// Check if it's a empty paragraph</span>
<span class="reserved">if</span> (isEmpty(paraAfter))
paraAfter.innerHTML = <span class="literal">"&amp;nbsp;"</span>;
<span class="comment">// Delete old contents</span>
rng.deleteContents();
rngAfter.deleteContents();
rngBefore.deleteContents();
<span class="comment">// Insert new paragraphs</span>
paraAfter.normalize();
rngBefore.insertNode(paraAfter);
paraBefore.normalize();
rngBefore.insertNode(paraBefore);
<span class="comment">// tinyMCE.debug("1: ", paraBefore.innerHTML, paraAfter.innerHTML);</span>
} <span class="reserved">else</span> {
body.innerHTML = <span class="literal">"&lt;"</span> + blockName + <span class="literal">"&gt;&amp;nbsp;&lt;/"</span> + blockName + <span class="literal">"&gt;&lt;"</span> + blockName + <span class="literal">"&gt;&amp;nbsp;&lt;/"</span> + blockName + <span class="literal">"&gt;"</span>;
paraAfter = body.childNodes[1];
}
inst.selection.selectNode(paraAfter, true, true);
<span class="reserved">return</span> true;
}
<span class="comment">// Place first part within new paragraph</span>
<span class="reserved">if</span> (startChop.nodeName == blockName)
rngBefore.setStart(startChop, 0);
<span class="reserved">else</span>
rngBefore.setStartBefore(startChop);
rngBefore.setEnd(startNode, startOffset);
paraBefore.appendChild(rngBefore.cloneContents());
<span class="comment">// Place secound part within new paragraph</span>
rngAfter.setEndAfter(endChop);
rngAfter.setStart(endNode, endOffset);
var contents = rngAfter.cloneContents();
<span class="reserved">if</span> (contents.firstChild &amp;&amp; contents.firstChild.nodeName == blockName) {
<span class="comment">/* var nodes = contents.firstChild.childNodes;
for (var i=0; i&lt;nodes.length; i++) {
//tinyMCE.debug(nodes[i].nodeName);
if (nodes[i].nodeName != "BODY")
paraAfter.appendChild(nodes[i]);
}
*/</span>
paraAfter.innerHTML = contents.firstChild.innerHTML;
} <span class="reserved">else</span>
paraAfter.appendChild(contents);
<span class="comment">// Check if it's a empty paragraph</span>
<span class="reserved">if</span> (isEmpty(paraBefore))
paraBefore.innerHTML = <span class="literal">"&amp;nbsp;"</span>;
<span class="comment">// Check if it's a empty paragraph</span>
<span class="reserved">if</span> (isEmpty(paraAfter))
paraAfter.innerHTML = <span class="literal">"&amp;nbsp;"</span>;
<span class="comment">// Create a range around everything</span>
var rng = doc.createRange();
<span class="reserved">if</span> (!startChop.previousSibling &amp;&amp; startChop.parentNode.nodeName.toUpperCase() == blockName) {
rng.setStartBefore(startChop.parentNode);
} <span class="reserved">else</span> {
<span class="reserved">if</span> (rngBefore.startContainer.nodeName.toUpperCase() == blockName &amp;&amp; rngBefore.startOffset == 0)
rng.setStartBefore(rngBefore.startContainer);
<span class="reserved">else</span>
rng.setStart(rngBefore.startContainer, rngBefore.startOffset);
}
<span class="reserved">if</span> (!endChop.nextSibling &amp;&amp; endChop.parentNode.nodeName.toUpperCase() == blockName)
rng.setEndAfter(endChop.parentNode);
<span class="reserved">else</span>
rng.setEnd(rngAfter.endContainer, rngAfter.endOffset);
<span class="comment">// Delete all contents and insert new paragraphs</span>
rng.deleteContents();
rng.insertNode(paraAfter);
rng.insertNode(paraBefore);
<span class="comment">//tinyMCE.debug("2", paraBefore.innerHTML, paraAfter.innerHTML);</span>
<span class="comment">// Normalize</span>
paraAfter.normalize();
paraBefore.normalize();
inst.selection.selectNode(paraAfter, true, true);
<span class="reserved">return</span> true;
},
<span class="comment">/**
* Handles the backspace action in Gecko. This will remove the weird BR element
* that gets generated when a user hits backspace in the beginning of a paragraph.
*
* <span class="attrib">@param</span> {TinyMCE_Control} inst TinyMCE editor control instance.
* <span class="attrib">@return</span> true/false if the event should be canceled or not.
* <span class="attrib">@type</span>
*/</span>
_handleBackSpace : <span class="reserved">function</span>(inst) {
var r = inst.getRng(), sn = r.startContainer, nv, s = false;
<span class="reserved">if</span> (sn &amp;&amp; sn.nextSibling &amp;&amp; sn.nextSibling.nodeName == <span class="literal">"BR"</span>) {
nv = sn.nodeValue;
<span class="comment">// Handle if a backspace is pressed after a space character #bug 1466054</span>
<span class="reserved">if</span> (nv != null &amp;&amp; nv.length &gt;= r.startOffset &amp;&amp; nv.charAt(r.startOffset - 1) == <span class="literal">' '</span>)
s = true;
<span class="comment">// Only remove BRs if we are at the end of line #bug 1464152</span>
<span class="reserved">if</span> (nv != null &amp;&amp; r.startOffset == nv.length)
sn.nextSibling.parentNode.removeChild(sn.nextSibling);
}
<span class="reserved">return</span> s;
}
};
</pre>
<hr>
<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
<tr align="center" valign="top">
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
<td bgcolor="#FFFFFF" class="NavBarCell1Rev"> &nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
<td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
</tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top"><em>
<b></b></em>
</td>
</tr>
<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
<a href="index.html" target="_top"><b>FRAMES</b></a> &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
<!--
if(window==top) {
document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
}
//-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->
<hr>
<font size="-1">
</font>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Fri Apr 14 21:59:23 2006</div>
</body>
</html>
<!doctype html public "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
<html>
<head>
<title>
Overview
</title>
<link rel ="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script>
function asd() {
parent.document.title="TinyMCE_Layer.class.js Overview";
}
</script>
</head>
<body bgcolor="white" onload="asd();">
<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
<tr align="center" valign="top">
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
<td bgcolor="#FFFFFF" class="NavBarCell1Rev"> &nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
<td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
</tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top">
<em>
<b></b></em>
</td>
</tr>
<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
<a href="index.html" target="_top"><b>FRAMES</b></a> &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
<!--
if(window==top) {
document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
}
//-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->
<hr>
<center>
<h2>TinyMCE_Layer.class.js</h2>
</center>
<h4>Summary</h4>
<p>
No overview generated for 'TinyMCE_Layer.class.js'<BR/><BR/>
</p>
<hr>
<table border="1" cellpadding="3" cellspacing="0" width="100%">
<tr bgcolor="#CCCCFF" class="TableHeadingColor">
<td colspan=2><font size="+2">
<b>Class Summary</b>
</font></td>
</tr>
<tr bgcolor="white" class="TableRowColor">
<td width="15%"><b><a href="TinyMCE_Layer.html">TinyMCE_Layer</a></b></td>
<td>&nbsp;</td>
</tr>
</table>
<hr/>
<!-- ========== METHOD SUMMARY =========== -->
<!-- ========== END METHOD SUMMARY =========== -->
<pre class="sourceview"><span class="comment">/**
* $RCSfile: overview-summary-TinyMCE_Layer.class.js.html,v $
* $Revision: 1.19 $
* $Date: 2006/04/14 20:00:30 $
*
* <span class="attrib">@author</span> Moxiecode
* <span class="attrib">@copyright</span> Copyright 2004-2006, Moxiecode Systems AB, All rights reserved.
*/</span>
<span class="comment">/**
* Constructor for the TinyMCE Layer. This class enables you to construct
* floating layers that is visible on top of select input fields, flashes and iframes.
*
* <span class="attrib">@param</span> {string} id Unique ID name for the layer.
* <span class="attrib">@param</span> {boolean} bm Block mode, defaults to true.
*/</span>
<span class="reserved">function</span> TinyMCE_Layer(id, bm) {
<span class="reserved">this</span>.id = id;
<span class="reserved">this</span>.blockerElement = null;
<span class="reserved">this</span>.events = false;
<span class="reserved">this</span>.element = null;
<span class="reserved">this</span>.blockMode = typeof(bm) != <span class="literal">'undefined'</span> ? bm : true;
<span class="reserved">this</span>.doc = document;
};
TinyMCE_Layer.<span class="reserved">prototype</span> = {
<span class="comment">/**
* Moves the layer relative to the specified HTML element.
*
* <span class="attrib">@param</span> {HTMLElement} re Element to move the layer relative to.
* <span class="attrib">@param</span> {string} p Position of the layer tl = top left, tr = top right, bl = bottom left, br = bottom right.
*/</span>
moveRelativeTo : <span class="reserved">function</span>(re, p) {
var rep = <span class="reserved">this</span>.getAbsPosition(re);
var w = parseInt(re.offsetWidth);
var h = parseInt(re.offsetHeight);
var e = <span class="reserved">this</span>.getElement();
var ew = parseInt(e.offsetWidth);
var eh = parseInt(e.offsetHeight);
var x, y;
switch (p) {
case <span class="literal">"tl"</span>:
x = rep.absLeft;
y = rep.absTop;
break;
case <span class="literal">"tr"</span>:
x = rep.absLeft + w;
y = rep.absTop;
break;
case <span class="literal">"bl"</span>:
x = rep.absLeft;
y = rep.absTop + h;
break;
case <span class="literal">"br"</span>:
x = rep.absLeft + w;
y = rep.absTop + h;
break;
case <span class="literal">"cc"</span>:
x = rep.absLeft + (w / 2) - (ew / 2);
y = rep.absTop + (h / 2) - (eh / 2);
break;
}
<span class="reserved">this</span>.moveTo(x, y);
},
<span class="comment">/**
* Moves the layer relative in pixels.
*
* <span class="attrib">@param</span> {int} x Horizontal relative position in pixels.
* <span class="attrib">@param</span> {int} y Vertical relative position in pixels.
*/</span>
moveBy : <span class="reserved">function</span>(x, y) {
var e = <span class="reserved">this</span>.getElement();
<span class="reserved">this</span>.moveTo(parseInt(e.style.left) + x, parseInt(e.style.top) + y);
},
<span class="comment">/**
* Moves the layer absolute in pixels.
*
* <span class="attrib">@param</span> {int} x Horizontal absolute position in pixels.
* <span class="attrib">@param</span> {int} y Vertical absolute position in pixels.
*/</span>
moveTo : <span class="reserved">function</span>(x, y) {
var e = <span class="reserved">this</span>.getElement();
e.style.left = x + <span class="literal">"px"</span>;
e.style.top = y + <span class="literal">"px"</span>;
<span class="reserved">this</span>.updateBlocker();
},
<span class="comment">/**
* Resizes the layer by the specified relative width and height.
*
* <span class="attrib">@param</span> {int} w Relative width value.
* <span class="attrib">@param</span> {int} h Relative height value.
*/</span>
resizeBy : <span class="reserved">function</span>(w, h) {
var e = <span class="reserved">this</span>.getElement();
<span class="reserved">this</span>.resizeTo(parseInt(e.style.width) + w, parseInt(e.style.height) + h);
},
<span class="comment">/**
* Resizes the layer to the specified width and height.
*
* <span class="attrib">@param</span> {int} w Width value.
* <span class="attrib">@param</span> {int} h Height value.
*/</span>
resizeTo : <span class="reserved">function</span>(w, h) {
var e = <span class="reserved">this</span>.getElement();
<span class="reserved">if</span> (w != null)
e.style.width = w + <span class="literal">"px"</span>;
<span class="reserved">if</span> (h != null)
e.style.height = h + <span class="literal">"px"</span>;
<span class="reserved">this</span>.updateBlocker();
},
<span class="comment">/**
* Shows the layer.
*/</span>
show : <span class="reserved">function</span>() {
<span class="reserved">this</span>.getElement().style.display = <span class="literal">'block'</span>;
<span class="reserved">this</span>.updateBlocker();
},
<span class="comment">/**
* Hides the layer.
*/</span>
hide : <span class="reserved">function</span>() {
<span class="reserved">this</span>.getElement().style.display = <span class="literal">'none'</span>;
<span class="reserved">this</span>.updateBlocker();
},
<span class="comment">/**
* Returns true/false if the layer is visible or not.
*
* <span class="attrib">@return</span> true/false if it's visible or not.
* <span class="attrib">@type</span> boolean
*/</span>
isVisible : <span class="reserved">function</span>() {
<span class="reserved">return</span> <span class="reserved">this</span>.getElement().style.display == <span class="literal">'block'</span>;
},
<span class="comment">/**
* Returns the DOM element that the layer is binded to.
*
* <span class="attrib">@return</span> DOM HTML element.
* <span class="attrib">@type</span> HTMLElement
*/</span>
getElement : <span class="reserved">function</span>() {
<span class="reserved">if</span> (!<span class="reserved">this</span>.element)
<span class="reserved">this</span>.element = <span class="reserved">this</span>.doc.getElementById(<span class="reserved">this</span>.id);
<span class="reserved">return</span> <span class="reserved">this</span>.element;
},
<span class="comment">/**
* Sets the block mode. If you set this property to true a control box blocker iframe
* will be added to the document since MSIE has a issue where select boxes are visible
* through layers.
*
* <span class="attrib">@param</span> {boolean} s Block mode state, true is the default value.
*/</span>
setBlockMode : <span class="reserved">function</span>(s) {
<span class="reserved">this</span>.blockMode = s;
},
<span class="comment">/**
* Updates the select/iframe/flash blocker this will also block the caret in Firefox.
*/</span>
updateBlocker : <span class="reserved">function</span>() {
var e, b, x, y, w, h;
b = <span class="reserved">this</span>.getBlocker();
<span class="reserved">if</span> (b) {
<span class="reserved">if</span> (<span class="reserved">this</span>.blockMode) {
e = <span class="reserved">this</span>.getElement();
x = <span class="reserved">this</span>.parseInt(e.style.left);
y = <span class="reserved">this</span>.parseInt(e.style.top);
w = <span class="reserved">this</span>.parseInt(e.offsetWidth);
h = <span class="reserved">this</span>.parseInt(e.offsetHeight);
b.style.left = x + <span class="literal">'px'</span>;
b.style.top = y + <span class="literal">'px'</span>;
b.style.width = w + <span class="literal">'px'</span>;
b.style.height = h + <span class="literal">'px'</span>;
b.style.display = e.style.display;
} <span class="reserved">else</span>
b.style.display = <span class="literal">'none'</span>;
}
},
<span class="comment">/**
* Returns the blocker DOM element, this is a invisible iframe.
*
* <span class="attrib">@return</span> DOM HTML element.
* <span class="attrib">@type</span> HTMLElement
*/</span>
getBlocker : <span class="reserved">function</span>() {
var d, b;
<span class="reserved">if</span> (!<span class="reserved">this</span>.blockerElement &amp;&amp; <span class="reserved">this</span>.blockMode) {
d = <span class="reserved">this</span>.doc;
b = d.createElement(<span class="literal">"iframe"</span>);
b.style.cssText = <span class="literal">'display: none; position: absolute; left: 0; top: 0'</span>;
b.src = <span class="literal">'javascript:false;'</span>;
b.frameBorder = <span class="literal">'0'</span>;
b.scrolling = <span class="literal">'no'</span>;
d.body.appendChild(b);
<span class="reserved">this</span>.blockerElement = b;
}
<span class="reserved">return</span> <span class="reserved">this</span>.blockerElement;
},
<span class="comment">/**
* Returns the absolute x, y cordinate of the specified node.
*
* <span class="attrib">@param</span> {DOMElement} n DOM node to retrive x, y of.
* <span class="attrib">@return</span> Object containing absLeft and absTop properties.
* <span class="attrib">@type</span> Object
*/</span>
getAbsPosition : <span class="reserved">function</span>(n) {
var p = {absLeft : 0, absTop : 0};
<span class="reserved">while</span> (n) {
p.absLeft += n.offsetLeft;
p.absTop += n.offsetTop;
n = n.offsetParent;
}
<span class="reserved">return</span> p;
},
<span class="comment">/**
* Creates a element for the layer based on the id and specified name.
*
* <span class="attrib">@param</span> {string} n Element tag name, like div.
* <span class="attrib">@param</span> {string} c Optional class name to set as class attribute value.
* <span class="attrib">@param</span> {HTMLElement} p Optional parent element reference, defaults to body.
* <span class="attrib">@return</span> HTML DOM element that got created.
* <span class="attrib">@type</span> HTMLElement
*/</span>
create : <span class="reserved">function</span>(n, c, p) {
var d = <span class="reserved">this</span>.doc, e = d.createElement(n);
e.setAttribute(<span class="literal">'id'</span>, <span class="reserved">this</span>.id);
<span class="reserved">if</span> (c)
e.className = c;
<span class="reserved">if</span> (!p)
p = d.body;
p.appendChild(e);
<span class="reserved">return</span> <span class="reserved">this</span>.element = e;
},
<span class="comment">/**
* Parses a int value this method will return 0 if the string is empty.
*
* <span class="attrib">@param</span> {string} s String to parse value of.
* <span class="attrib">@return</span> Parsed number.
* <span class="attrib">@type</span> int
*/</span>
parseInt : <span class="reserved">function</span>(s) {
<span class="reserved">if</span> (s == null || s == <span class="literal">''</span>)
<span class="reserved">return</span> 0;
<span class="reserved">return</span> parseInt(s);
}
};
</pre>
<hr>
<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
<tr align="center" valign="top">
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
<td bgcolor="#FFFFFF" class="NavBarCell1Rev"> &nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
<td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
</tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top"><em>
<b></b></em>
</td>
</tr>
<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
<a href="index.html" target="_top"><b>FRAMES</b></a> &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
<!--
if(window==top) {
document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
}
//-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->
<hr>
<font size="-1">
</font>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Fri Apr 14 21:59:23 2006</div>
</body>
</html>
<!doctype html public "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
<html>
<head>
<title>
Overview
</title>
<link rel ="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script>
function asd() {
parent.document.title="TinyMCE_Menu.class.js Overview";
}
</script>
</head>
<body bgcolor="white" onload="asd();">
<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
<tr align="center" valign="top">
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
<td bgcolor="#FFFFFF" class="NavBarCell1Rev"> &nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
<td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
</tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top">
<em>
<b></b></em>
</td>
</tr>
<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
<a href="index.html" target="_top"><b>FRAMES</b></a> &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
<!--
if(window==top) {
document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
}
//-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->
<hr>
<center>
<h2>TinyMCE_Menu.class.js</h2>
</center>
<h4>Summary</h4>
<p>
No overview generated for 'TinyMCE_Menu.class.js'<BR/><BR/>
</p>
<hr>
<!-- ========== METHOD SUMMARY =========== -->
<a name="method_summary"><!-- --></a>
<table border="1" cellpadding="3" cellspacing="0" width="100%">
<tr bgcolor="#CCCCFF" class="TableHeadingColor">
<td colspan=2>
<font size="+2">
<b>Method Summary</b>
</font>
</td>
</tr>
<tr bgcolor="white" class="TableRowColor">
<td align="right" valign="top" width="1%">
<font size="-1">
<code>static&nbsp;void</code>
</font>
</td>
<td>
<code>
<b>
<a href="GLOBALS.html#TinyMCE_Menu">TinyMCE_Menu</a></b>()
</code>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Constructor for the menu layer class.
</td>
</tr>
</table>
<p>
<!-- ========== END METHOD SUMMARY =========== -->
<pre class="sourceview"><span class="comment">/**
* $RCSfile: overview-summary-TinyMCE_Menu.class.js.html,v $
* $Revision: 1.15 $
* $Date: 2006/04/14 20:00:30 $
*
* <span class="attrib">@author</span> Moxiecode
* <span class="attrib">@copyright</span> Copyright 2004-2006, Moxiecode Systems AB, All rights reserved.
*/</span>
<span class="comment">/**
* Constructor for the menu layer class.
*/</span>
<span class="reserved">function</span> TinyMCE_Menu() {
var id;
<span class="reserved">if</span> (typeof(tinyMCE.menuCounter) == <span class="literal">"undefined"</span>)
tinyMCE.menuCounter = 0;
id = <span class="literal">"mc_menu_"</span> + tinyMCE.menuCounter++;
TinyMCE_Layer.call(<span class="reserved">this</span>, id, true);
<span class="reserved">this</span>.id = id;
<span class="reserved">this</span>.items = new Array();
<span class="reserved">this</span>.needsUpdate = true;
};
<span class="comment">// Extends the TinyMCE_Layer class</span>
TinyMCE_Menu.<span class="reserved">prototype</span> = tinyMCE.extend(TinyMCE_Layer.<span class="reserved">prototype</span>, {
<span class="comment">/**
* Initializes the Menu with settings. This will also create the menu
* as a DIV element if it doesn't exists in the DOM.
*
* <span class="attrib">@param</span> {Array} s Name/Value array with settings.
*/</span>
init : <span class="reserved">function</span>(s) {
var n;
<span class="comment">// Default params</span>
<span class="reserved">this</span>.settings = {
separator_class : <span class="literal">'mceMenuSeparator'</span>,
title_class : <span class="literal">'mceMenuTitle'</span>,
disabled_class : <span class="literal">'mceMenuDisabled'</span>,
menu_class : <span class="literal">'mceMenu'</span>,
drop_menu : true
};
<span class="reserved">for</span> (n in s)
<span class="reserved">this</span>.settings[n] = s[n];
<span class="reserved">this</span>.create(<span class="literal">'div'</span>, <span class="reserved">this</span>.settings.menu_class);
},
<span class="comment">/**
* Clears the menu.
*/</span>
clear : <span class="reserved">function</span>() {
<span class="reserved">this</span>.items = new Array();
},
<span class="comment">/**
* Adds a menu title, this is a static item that can't be clicked.
*
* <span class="attrib">@param</span> {string} t Text to add to title.
*/</span>
addTitle : <span class="reserved">function</span>(t) {
<span class="reserved">this</span>.add({type : <span class="literal">'title'</span>, text : t});
},
<span class="comment">/**
* Adds a disabled menu item, this is a static item that can't be clicked.
*
* <span class="attrib">@param</span> {string} t Text to add to title.
*/</span>
addDisabled : <span class="reserved">function</span>(t) {
<span class="reserved">this</span>.add({type : <span class="literal">'disabled'</span>, text : t});
},
<span class="comment">/**
* Adds a menu separator line.
*/</span>
addSeparator : <span class="reserved">function</span>() {
<span class="reserved">this</span>.add({type : <span class="literal">'separator'</span>});
},
<span class="comment">/**
* Adds a menu item.
*
* <span class="attrib">@param</span> {string} t Menu item text.
* <span class="attrib">@param</span> {string} js JS string to evaluate on click.
*/</span>
addItem : <span class="reserved">function</span>(t, js) {
<span class="reserved">this</span>.add({text : t, js : js});
},
<span class="comment">/**
* Adds a menu item object.
*
* <span class="attrib">@param</span> {Object} mi Menu item object to add.
*/</span>
add : <span class="reserved">function</span>(mi) {
<span class="reserved">this</span>.items[<span class="reserved">this</span>.items.length] = mi;
<span class="reserved">this</span>.needsUpdate = true;
},
<span class="comment">/**
* Update the menu with new HTML contents.
*/</span>
update : <span class="reserved">function</span>() {
var e = <span class="reserved">this</span>.getElement(), h = <span class="literal">''</span>, i, t, m = <span class="reserved">this</span>.items, s = <span class="reserved">this</span>.settings;
<span class="reserved">if</span> (<span class="reserved">this</span>.settings.drop_menu)
h += <span class="literal">'&lt;span class="mceMenuLine"&gt;&lt;/span&gt;'</span>;
h += <span class="literal">'&lt;table border="0" cellpadding="0" cellspacing="0"&gt;'</span>;
<span class="reserved">for</span> (i=0; i&lt;m.length; i++) {
t = tinyMCE.xmlEncode(m[i].text);
c = m[i].class_name ? <span class="literal">' class="'</span> + m[i].class_name + <span class="literal">'"'</span> : <span class="literal">''</span>;
switch (m[i].type) {
case <span class="literal">'separator'</span>:
h += <span class="literal">'&lt;tr class="'</span> + s.separator_class + <span class="literal">'"&gt;&lt;td&gt;'</span>;
break;
case <span class="literal">'title'</span>:
h += <span class="literal">'&lt;tr class="'</span> + s.title_class + <span class="literal">'"&gt;&lt;td&gt;&lt;span'</span> + c +<span class="literal">'&gt;'</span> + t + <span class="literal">'&lt;/span&gt;'</span>;
break;
case <span class="literal">'disabled'</span>:
h += <span class="literal">'&lt;tr class="'</span> + s.disabled_class + <span class="literal">'"&gt;&lt;td&gt;&lt;span'</span> + c +<span class="literal">'&gt;'</span> + t + <span class="literal">'&lt;/span&gt;'</span>;
break;
default:
h += <span class="literal">'&lt;tr&gt;&lt;td&gt;&lt;a href="javascript:void(0);" onmousedown="'</span> + tinyMCE.xmlEncode(m[i].js) + <span class="literal">';return false;"&gt;&lt;span'</span> + c +<span class="literal">'&gt;'</span> + t + <span class="literal">'&lt;/span&gt;&lt;/a&gt;'</span>;
}
h += <span class="literal">'&lt;/td&gt;&lt;/tr&gt;'</span>;
}
h += <span class="literal">'&lt;/table&gt;'</span>;
e.innerHTML = h;
<span class="reserved">this</span>.needsUpdate = false;
<span class="reserved">this</span>.updateBlocker();
},
<span class="comment">/**
* Displays the menu. This function will automaticly hide any previously visible menus.
*/</span>
show : <span class="reserved">function</span>() {
var nl, i;
<span class="reserved">if</span> (tinyMCE.lastMenu == <span class="reserved">this</span>)
<span class="reserved">return</span>;
<span class="reserved">if</span> (<span class="reserved">this</span>.needsUpdate)
<span class="reserved">this</span>.update();
<span class="reserved">if</span> (tinyMCE.lastMenu &amp;&amp; tinyMCE.lastMenu != <span class="reserved">this</span>)
tinyMCE.lastMenu.hide();
TinyMCE_Layer.<span class="reserved">prototype</span>.show.call(<span class="reserved">this</span>);
<span class="reserved">if</span> (!tinyMCE.isOpera) {
<span class="comment">// Accessibility stuff</span>
<span class="comment">/* nl = this.getElement().getElementsByTagName("a");
if (nl.length &gt; 0)
nl[0].focus();*/</span>
}
tinyMCE.lastMenu = <span class="reserved">this</span>;
}
});
</pre>
<hr>
<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
<tr align="center" valign="top">
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
<td bgcolor="#FFFFFF" class="NavBarCell1Rev"> &nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
<td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
</tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top"><em>
<b></b></em>
</td>
</tr>
<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
<a href="index.html" target="_top"><b>FRAMES</b></a> &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
<!--
if(window==top) {
document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
}
//-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->
<hr>
<font size="-1">
</font>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Fri Apr 14 21:59:23 2006</div>
</body>
</html>
<!doctype html public "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
<html>
<head>
<title>
Overview
</title>
<link rel ="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script>
function asd() {
parent.document.title="TinyMCE_Popup.class.js Overview";
}
</script>
</head>
<body bgcolor="white" onload="asd();">
<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
<tr align="center" valign="top">
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
<td bgcolor="#FFFFFF" class="NavBarCell1Rev"> &nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
<td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
</tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top">
<em>
<b></b></em>
</td>
</tr>
<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
<a href="index.html" target="_top"><b>FRAMES</b></a> &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
<!--
if(window==top) {
document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
}
//-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->
<hr>
<center>
<h2>TinyMCE_Popup.class.js</h2>
</center>
<h4>Summary</h4>
<p>
No overview generated for 'TinyMCE_Popup.class.js'<BR/><BR/>
</p>
<hr>
<table border="1" cellpadding="3" cellspacing="0" width="100%">
<tr bgcolor="#CCCCFF" class="TableHeadingColor">
<td colspan=2><font size="+2">
<b>Class Summary</b>
</font></td>
</tr>
<tr bgcolor="white" class="TableRowColor">
<td width="15%"><b><a href="TinyMCE_Popup.html">TinyMCE_Popup</a></b></td>
<td>&nbsp;</td>
</tr>
</table>
<hr/>
<!-- ========== METHOD SUMMARY =========== -->
<!-- ========== END METHOD SUMMARY =========== -->
<pre class="sourceview"><span class="comment">/**
* $RCSfile: overview-summary-TinyMCE_Popup.class.js.html,v $
* $Revision: 1.24 $
* $Date: 2006/04/14 20:00:30 $
*
* <span class="attrib">@author</span> Moxiecode
* <span class="attrib">@copyright</span> Copyright 2004-2006, Moxiecode Systems AB, All rights reserved.
*/</span>
<span class="comment">// Some global instances, this will be filled later</span>
var tinyMCE = null, tinyMCELang = null;
<span class="comment">/**
* Constructor for the popup class. This class contains base logic for popup/dialogs and sets up
* object references to the TinyMCE core.
*/</span>
<span class="reserved">function</span> TinyMCE_Popup() {
};
<span class="comment">/**
* Initializes the TinyMCE Popup class. This will setup the TinyMCE core references and other popup/dialog related functions.
*/</span>
TinyMCE_Popup.<span class="reserved">prototype</span>.init = <span class="reserved">function</span>() {
var win = window.opener ? window.opener : window.dialogArguments;
var inst;
<span class="reserved">if</span> (!win) {
<span class="comment">// Try parent</span>
win = parent.parent;
<span class="comment">// Try top</span>
<span class="reserved">if</span> (typeof(win.tinyMCE) == <span class="literal">"undefined"</span>)
win = top;
}
window.opener = win;
<span class="reserved">this</span>.windowOpener = win;
<span class="reserved">this</span>.onLoadEval = <span class="literal">""</span>;
<span class="comment">// Setup parent references</span>
tinyMCE = win.tinyMCE;
tinyMCELang = win.tinyMCELang;
<span class="reserved">if</span> (!tinyMCE) {
alert(<span class="literal">"tinyMCE object reference not found from popup."</span>);
<span class="reserved">return</span>;
}
inst = tinyMCE.selectedInstance;
<span class="reserved">this</span>.isWindow = tinyMCE.getWindowArg(<span class="literal">'mce_inside_iframe'</span>, false) == false;
<span class="reserved">this</span>.storeSelection = (tinyMCE.isMSIE &amp;&amp; !tinyMCE.isOpera) &amp;&amp; !<span class="reserved">this</span>.isWindow &amp;&amp; tinyMCE.getWindowArg(<span class="literal">'mce_store_selection'</span>, true);
<span class="reserved">if</span> (<span class="reserved">this</span>.isWindow)
window.focus();
<span class="comment">// Store selection</span>
<span class="reserved">if</span> (<span class="reserved">this</span>.storeSelection)
inst.selectionBookmark = inst.selection.getBookmark(true);
<span class="comment">// Setup dir</span>
<span class="reserved">if</span> (tinyMCELang[<span class="literal">'lang_dir'</span>])
document.dir = tinyMCELang[<span class="literal">'lang_dir'</span>];
<span class="comment">// Setup title</span>
var re = new RegExp(<span class="literal">'{|\\\$|}'</span>, <span class="literal">'g'</span>);
var title = document.title.replace(re, <span class="literal">""</span>);
<span class="reserved">if</span> (typeof tinyMCELang[title] != <span class="literal">"undefined"</span>) {
var divElm = document.createElement(<span class="literal">"div"</span>);
divElm.innerHTML = tinyMCELang[title];
document.title = divElm.innerHTML;
<span class="reserved">if</span> (tinyMCE.setWindowTitle != null)
tinyMCE.setWindowTitle(window, divElm.innerHTML);
}
<span class="comment">// Output Popup CSS class</span>
document.write(<span class="literal">'&lt;link href="'</span> + tinyMCE.getParam(<span class="literal">"popups_css"</span>) + <span class="literal">'" rel="stylesheet" type="text/css"&gt;'</span>);
tinyMCE.addEvent(window, <span class="literal">"load"</span>, <span class="reserved">this</span>.onLoad);
};
<span class="comment">/**
* Gets executed when the window has finished loading it's contents. This function will then
* replace language variables with their real values.
*/</span>
TinyMCE_Popup.<span class="reserved">prototype</span>.onLoad = <span class="reserved">function</span>() {
var dir, i, elms, body = document.body;
<span class="reserved">if</span> (tinyMCE.getWindowArg(<span class="literal">'mce_replacevariables'</span>, true))
body.innerHTML = tinyMCE.applyTemplate(body.innerHTML, tinyMCE.windowArgs);
dir = tinyMCE.selectedInstance.settings[<span class="literal">'directionality'</span>];
<span class="reserved">if</span> (dir == <span class="literal">"rtl"</span> &amp;&amp; document.forms &amp;&amp; document.forms.length &gt; 0) {
elms = document.forms[0].elements;
<span class="reserved">for</span> (i=0; i&lt;elms.length; i++) {
<span class="reserved">if</span> ((elms[i].type == <span class="literal">"text"</span> || elms[i].type == <span class="literal">"textarea"</span>) &amp;&amp; elms[i].getAttribute(<span class="literal">"dir"</span>) != <span class="literal">"ltr"</span>)
elms[i].dir = dir;
}
}
<span class="reserved">if</span> (body.style.display == <span class="literal">'none'</span>)
body.style.display = <span class="literal">'block'</span>;
<span class="comment">// Execute real onload (Opera fix)</span>
<span class="reserved">if</span> (tinyMCEPopup.onLoadEval != <span class="literal">""</span>)
eval(tinyMCEPopup.onLoadEval);
};
<span class="comment">/**
* Executes the specified string onload. This is a workaround for Opera since it
* doesn't execute the events in the same order than MSIE and Firefox.
*
* <span class="attrib">@param</span> {string} str String to evaluate on load.
*/</span>
TinyMCE_Popup.<span class="reserved">prototype</span>.executeOnLoad = <span class="reserved">function</span>(str) {
<span class="reserved">if</span> (tinyMCE.isOpera)
<span class="reserved">this</span>.onLoadEval = str;
<span class="reserved">else</span>
eval(str);
};
<span class="comment">/**
* Resizes the current window to it's inner body size. This function
* was needed since MSIE makes the visible dialog area diffrent depending
* on what Theme/Skin you use.
*/</span>
TinyMCE_Popup.<span class="reserved">prototype</span>.resizeToInnerSize = <span class="reserved">function</span>() {
<span class="comment">// Netscape 7.1 workaround</span>
<span class="reserved">if</span> (<span class="reserved">this</span>.isWindow &amp;&amp; tinyMCE.isNS71) {
window.resizeBy(0, 10);
<span class="reserved">return</span>;
}
<span class="reserved">if</span> (<span class="reserved">this</span>.isWindow) {
var doc = document;
var body = doc.body;
var oldMargin, wrapper, iframe, nodes, dx, dy;
<span class="reserved">if</span> (body.style.display == <span class="literal">'none'</span>)
body.style.display = <span class="literal">'block'</span>;
<span class="comment">// Remove margin</span>
oldMargin = body.style.margin;
body.style.margin = <span class="literal">'0'</span>;
<span class="comment">// Create wrapper</span>
wrapper = doc.createElement(<span class="literal">"div"</span>);
wrapper.id = <span class="literal">'mcBodyWrapper'</span>;
wrapper.style.display = <span class="literal">'none'</span>;
wrapper.style.margin = <span class="literal">'0'</span>;
<span class="comment">// Wrap body elements</span>
nodes = doc.body.childNodes;
<span class="reserved">for</span> (var i=nodes.length-1; i&gt;=0; i--) {
<span class="reserved">if</span> (wrapper.hasChildNodes())
wrapper.insertBefore(nodes[i].cloneNode(true), wrapper.firstChild);
<span class="reserved">else</span>
wrapper.appendChild(nodes[i].cloneNode(true));
nodes[i].parentNode.removeChild(nodes[i]);
}
<span class="comment">// Add wrapper</span>
doc.body.appendChild(wrapper);
<span class="comment">// Create iframe</span>
iframe = document.createElement(<span class="literal">"iframe"</span>);
iframe.id = <span class="literal">"mcWinIframe"</span>;
iframe.src = document.location.href.toLowerCase().indexOf(<span class="literal">'https'</span>) == -1 ? <span class="literal">"about:blank"</span> : tinyMCE.settings[<span class="literal">'default_document'</span>];
iframe.width = <span class="literal">"100%"</span>;
iframe.height = <span class="literal">"100%"</span>;
iframe.style.margin = <span class="literal">'0'</span>;
<span class="comment">// Add iframe</span>
doc.body.appendChild(iframe);
<span class="comment">// Measure iframe</span>
iframe = document.getElementById(<span class="literal">'mcWinIframe'</span>);
dx = tinyMCE.getWindowArg(<span class="literal">'mce_width'</span>) - iframe.clientWidth;
dy = tinyMCE.getWindowArg(<span class="literal">'mce_height'</span>) - iframe.clientHeight;
<span class="comment">// Resize window</span>
<span class="comment">// tinyMCE.debug(tinyMCE.getWindowArg('mce_width') + "," + tinyMCE.getWindowArg('mce_height') + " - " + dx + "," + dy);</span>
window.resizeBy(dx, dy);
<span class="comment">// Hide iframe and show wrapper</span>
body.style.margin = oldMargin;
iframe.style.display = <span class="literal">'none'</span>;
wrapper.style.display = <span class="literal">'block'</span>;
}
};
<span class="comment">/**
* Resizes the current window to the dimensions of the body.
*/</span>
TinyMCE_Popup.<span class="reserved">prototype</span>.resizeToContent = <span class="reserved">function</span>() {
var isMSIE = (navigator.appName == <span class="literal">"Microsoft Internet Explorer"</span>);
var isOpera = (navigator.userAgent.indexOf(<span class="literal">"Opera"</span>) != -1);
<span class="reserved">if</span> (isOpera)
<span class="reserved">return</span>;
<span class="reserved">if</span> (isMSIE) {
try { window.resizeTo(10, 10); } catch (e) {}
var elm = document.body;
var width = elm.offsetWidth;
var height = elm.offsetHeight;
var dx = (elm.scrollWidth - width) + 4;
var dy = elm.scrollHeight - height;
try { window.resizeBy(dx, dy); } catch (e) {}
} <span class="reserved">else</span> {
window.scrollBy(1000, 1000);
<span class="reserved">if</span> (window.scrollX &gt; 0 || window.scrollY &gt; 0) {
window.resizeBy(window.innerWidth * 2, window.innerHeight * 2);
window.sizeToContent();
window.scrollTo(0, 0);
var x = parseInt(screen.width / 2.0) - (window.outerWidth / 2.0);
var y = parseInt(screen.height / 2.0) - (window.outerHeight / 2.0);
window.moveTo(x, y);
}
}
};
<span class="comment">/**
* Returns a window argument, window arguments can be passed from a plugin to a window
* by using the tinyMCE.openWindow function.
*
* <span class="attrib">@param</span> {string} name Argument name to retrive.
* <span class="attrib">@param</span> {string} default_value Optional default value to assign if the argument wasn't set.
* <span class="attrib">@return</span> Argument value object.
* <span class="attrib">@type</span> Object
*/</span>
TinyMCE_Popup.<span class="reserved">prototype</span>.getWindowArg = <span class="reserved">function</span>(name, default_value) {
<span class="reserved">return</span> tinyMCE.getWindowArg(name, default_value);
};
<span class="comment">/**
* Restores the selection back to the one stored after executing a command.
* This function was needed in MSIE when using inlinepopups, the selection
* would otherwice get lost if the user focused another field.
*/</span>
TinyMCE_Popup.<span class="reserved">prototype</span>.restoreSelection = <span class="reserved">function</span>() {
<span class="reserved">if</span> (<span class="reserved">this</span>.storeSelection) {
var inst = tinyMCE.selectedInstance;
inst.getWin().focus();
<span class="reserved">if</span> (inst.selectionBookmark)
inst.selection.moveToBookmark(inst.selectionBookmark);
}
};
<span class="comment">/**
* Executes the specific command on the parent instance that opened the window. This method
* will also take care of the storage and restorage of the current selection in MSIE when
* using inlinepopups. So we suggest using this method instead of tinyMCE.execCommand when using
* popup windows.
*
* <span class="attrib">@param</span> {string} command Command name to execute, for example mceLink or Bold.
* <span class="attrib">@param</span> {boolean} user_interface True/false state if a UI (dialog) should be presented or not.
* <span class="attrib">@param</span> {mixed} value Optional command value, this can be anything.
*/</span>
TinyMCE_Popup.<span class="reserved">prototype</span>.execCommand = <span class="reserved">function</span>(command, user_interface, value) {
var inst = tinyMCE.selectedInstance;
<span class="reserved">this</span>.restoreSelection();
inst.execCommand(command, user_interface, value);
<span class="comment">// Store selection</span>
<span class="reserved">if</span> (<span class="reserved">this</span>.storeSelection)
inst.selectionBookmark = inst.selection.getBookmark(true);
};
<span class="comment">/**
* Closes the current window. This should be used instead of window.close. Since this will
* also handle inlinepopups closing.
*/</span>
TinyMCE_Popup.<span class="reserved">prototype</span>.close = <span class="reserved">function</span>() {
tinyMCE.closeWindow(window);
};
<span class="comment">/**
* Executes a color picker on the specified element id. When the user
* then selects a color it will be set as the value of the specified element.
*
* <span class="attrib">@param</span> {DOMEvent} e DOM event object.
* <span class="attrib">@param</span> {string} element_id Element id to be filled with the color value from the picker.
*/</span>
TinyMCE_Popup.<span class="reserved">prototype</span>.pickColor = <span class="reserved">function</span>(e, element_id) {
tinyMCE.selectedInstance.execCommand(<span class="literal">'mceColorPicker'</span>, true, {
element_id : element_id,
document : document,
window : window,
store_selection : false
});
};
<span class="comment">/**
* Opens a filebrowser/imagebrowser this will set the output value from
* the browser as a value on the specified element.
*
* <span class="attrib">@param</span> {string} element_id Id of the element to set value in.
* <span class="attrib">@param</span> {string} type Type of browser to open image/file/flash.
* <span class="attrib">@param</span> {string} option Option name to get the file_broswer_callback function name from.
*/</span>
TinyMCE_Popup.<span class="reserved">prototype</span>.openBrowser = <span class="reserved">function</span>(element_id, type, option) {
var cb = tinyMCE.getParam(option, tinyMCE.getParam(<span class="literal">"file_browser_callback"</span>));
var url = document.getElementById(element_id).value;
tinyMCE.setWindowArg(<span class="literal">"window"</span>, window);
tinyMCE.setWindowArg(<span class="literal">"document"</span>, document);
<span class="comment">// Call to external callback</span>
<span class="reserved">if</span> (eval(<span class="literal">'typeof(tinyMCEPopup.windowOpener.'</span> + cb + <span class="literal">')'</span>) == <span class="literal">"undefined"</span>)
alert(<span class="literal">"Callback function: "</span> + cb + <span class="literal">" could not be found."</span>);
<span class="reserved">else</span>
eval(<span class="literal">"tinyMCEPopup.windowOpener."</span> + cb + <span class="literal">"(element_id, url, type, window);"</span>);
};
<span class="comment">/**
* Imports the specified class into the current popup. This will setup a local class definition
* by importing from the parent window.
*
* <span class="attrib">@param</span> {string} c Class name to import to current page.
*/</span>
TinyMCE_Popup.<span class="reserved">prototype</span>.importClass = <span class="reserved">function</span>(c) {
window[c] = <span class="reserved">function</span>() {};
<span class="reserved">for</span> (var n in window.opener[c].<span class="reserved">prototype</span>)
window[c].<span class="reserved">prototype</span>[n] = window.opener[c].<span class="reserved">prototype</span>[n];
window[c].constructor = window.opener[c].constructor;
};
<span class="comment">// Setup global instance</span>
var tinyMCEPopup = new TinyMCE_Popup();
tinyMCEPopup.init();
</pre>
<hr>
<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
<tr align="center" valign="top">
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
<td bgcolor="#FFFFFF" class="NavBarCell1Rev"> &nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
<td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
</tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top"><em>
<b></b></em>
</td>
</tr>
<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
<a href="index.html" target="_top"><b>FRAMES</b></a> &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
<!--
if(window==top) {
document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
}
//-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->
<hr>
<font size="-1">
</font>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Fri Apr 14 21:59:23 2006</div>
</body>
</html>
<!doctype html public "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
<html>
<head>
<title>
Overview
</title>
<link rel ="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script>
function asd() {
parent.document.title="TinyMCE_Selection.class.js Overview";
}
</script>
</head>
<body bgcolor="white" onload="asd();">
<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
<tr align="center" valign="top">
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
<td bgcolor="#FFFFFF" class="NavBarCell1Rev"> &nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
<td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
</tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top">
<em>
<b></b></em>
</td>
</tr>
<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
<a href="index.html" target="_top"><b>FRAMES</b></a> &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
<!--
if(window==top) {
document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
}
//-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->
<hr>
<center>
<h2>TinyMCE_Selection.class.js</h2>
</center>
<h4>Summary</h4>
<p>
No overview generated for 'TinyMCE_Selection.class.js'<BR/><BR/>
</p>
<hr>
<table border="1" cellpadding="3" cellspacing="0" width="100%">
<tr bgcolor="#CCCCFF" class="TableHeadingColor">
<td colspan=2><font size="+2">
<b>Class Summary</b>
</font></td>
</tr>
<tr bgcolor="white" class="TableRowColor">
<td width="15%"><b><a href="TinyMCE_Selection.html">TinyMCE_Selection</a></b></td>
<td>&nbsp;</td>
</tr>
</table>
<hr/>
<!-- ========== METHOD SUMMARY =========== -->
<!-- ========== END METHOD SUMMARY =========== -->
<pre class="sourceview"><span class="comment">/**
* $RCSfile: overview-summary-TinyMCE_Selection.class.js.html,v $
* $Revision: 1.42 $
* $Date: 2006/04/14 20:00:31 $
*
* <span class="attrib">@author</span> Moxiecode
* <span class="attrib">@copyright</span> Copyright 2004-2006, Moxiecode Systems AB, All rights reserved.
*/</span>
<span class="comment">/**
* Constructs a Selection instance and binds it to the specificed TinyMCE editor control.
*
* <span class="attrib">@param</span> {TinyMCE_Control} inst TinyMCE editor control instance.
* <span class="attrib">@constructor</span>
*/</span>
<span class="reserved">function</span> TinyMCE_Selection(inst) {
<span class="reserved">this</span>.instance = inst;
};
TinyMCE_Selection.<span class="reserved">prototype</span> = {
<span class="comment">/**
* Returns the selected HTML code.
*
* <span class="attrib">@return</span> Selected HTML contents.
* <span class="attrib">@type</span> string
*/</span>
getSelectedHTML : <span class="reserved">function</span>() {
var inst = <span class="reserved">this</span>.instance;
var e, r = <span class="reserved">this</span>.getRng(), h;
<span class="reserved">if</span> (tinyMCE.isSafari) {
<span class="comment">// Not realy perfect!!</span>
<span class="reserved">return</span> r.toString();
}
e = document.createElement(<span class="literal">"body"</span>);
<span class="reserved">if</span> (tinyMCE.isGecko)
e.appendChild(r.cloneContents());
<span class="reserved">else</span>
e.innerHTML = r.item ? r.item(0).outerHTML : r.htmlText;
h = tinyMCE._cleanupHTML(inst, inst.contentDocument, inst.settings, e, e, false, true, false);
<span class="comment">// When editing always use fonts internaly</span>
<span class="reserved">if</span> (tinyMCE.getParam(<span class="literal">"convert_fonts_to_spans"</span>))
tinyMCE.convertSpansToFonts(inst.getDoc());
<span class="reserved">return</span> h;
},
<span class="comment">/**
* Returns the selected text.
*
* <span class="attrib">@return</span> Selected text contents.
* <span class="attrib">@type</span> string
*/</span>
getSelectedText : <span class="reserved">function</span>() {
var inst = <span class="reserved">this</span>.instance;
var d, r, s, t;
<span class="reserved">if</span> (tinyMCE.isMSIE) {
d = inst.getDoc();
<span class="reserved">if</span> (d.selection.type == <span class="literal">"Text"</span>) {
r = d.selection.createRange();
t = r.text;
} <span class="reserved">else</span>
t = <span class="literal">''</span>;
} <span class="reserved">else</span> {
s = <span class="reserved">this</span>.getSel();
<span class="reserved">if</span> (s &amp;&amp; s.toString)
t = s.toString();
<span class="reserved">else</span>
t = <span class="literal">''</span>;
}
<span class="reserved">return</span> t;
},
<span class="comment">/**
* Returns a selection bookmark that can be restored later with moveToBookmark.
* This acts much like the one MSIE has built in but this one is persistent if between DOM
* tree rewritings. The simple mode enables a quicker and non persistent bookmark.
*
* <span class="attrib">@param</span> {boolean} simple If this is set to true, the selection bookmark will not me dom persistent.
* <span class="attrib">@return</span> Selection bookmark that can be restored later with moveToBookmark.
* <span class="attrib">@type</span> TinyMCE_Bookmark
*/</span>
getBookmark : <span class="reserved">function</span>(simple) {
var rng = <span class="reserved">this</span>.getRng();
var doc = <span class="reserved">this</span>.instance.getDoc();
var sp, le, s, e, nl, i, si, ei;
var trng, sx, sy, xx = -999999999;
<span class="comment">// Skip Opera for now</span>
<span class="reserved">if</span> (tinyMCE.isOpera)
<span class="reserved">return</span> null;
sx = doc.body.scrollLeft + doc.documentElement.scrollLeft;
sy = doc.body.scrollTop + doc.documentElement.scrollTop;
<span class="reserved">if</span> (tinyMCE.isSafari || tinyMCE.isGecko)
<span class="reserved">return</span> {rng : rng, scrollX : sx, scrollY : sy};
<span class="reserved">if</span> (tinyMCE.isMSIE) {
<span class="reserved">if</span> (simple)
<span class="reserved">return</span> {rng : rng};
<span class="reserved">if</span> (rng.item) {
e = rng.item(0);
nl = doc.getElementsByTagName(e.nodeName);
<span class="reserved">for</span> (i=0; i&lt;nl.length; i++) {
<span class="reserved">if</span> (e == nl[i]) {
sp = i;
break;
}
}
<span class="reserved">return</span> {
tag : e.nodeName,
index : sp,
scrollX : sx,
scrollY : sy
};
} <span class="reserved">else</span> {
trng = rng.duplicate();
trng.collapse(true);
sp = Math.abs(trng.move(<span class="literal">'character'</span>, xx));
trng = rng.duplicate();
trng.collapse(false);
le = Math.abs(trng.move(<span class="literal">'character'</span>, xx)) - sp;
<span class="reserved">return</span> {
start : sp,
length : le,
scrollX : sx,
scrollY : sy
};
}
}
<span class="reserved">if</span> (tinyMCE.isGecko) {
s = tinyMCE.getParentElement(rng.startContainer);
<span class="reserved">for</span> (si=0; si&lt;s.childNodes.length &amp;&amp; s.childNodes[si] != rng.startContainer; si++) ;
nl = doc.getElementsByTagName(s.nodeName);
<span class="reserved">for</span> (i=0; i&lt;nl.length; i++) {
<span class="reserved">if</span> (s == nl[i]) {
sp = i;
break;
}
}
e = tinyMCE.getParentElement(rng.endContainer);
<span class="reserved">for</span> (ei=0; ei&lt;e.childNodes.length &amp;&amp; e.childNodes[ei] != rng.endContainer; ei++) ;
nl = doc.getElementsByTagName(e.nodeName);
<span class="reserved">for</span> (i=0; i&lt;nl.length; i++) {
<span class="reserved">if</span> (e == nl[i]) {
le = i;
break;
}
}
<span class="comment">//tinyMCE.debug(s.nodeName, sp, rng.startOffset, '-' , e.nodeName, le, rng.endOffset);</span>
<span class="comment">//tinyMCE.debug(sx, sy);</span>
<span class="reserved">return</span> {
startTag : s.nodeName,
start : sp,
startIndex : si,
endTag : e.nodeName,
end : le,
endIndex : ei,
startOffset : rng.startOffset,
endOffset : rng.endOffset,
scrollX : sx,
scrollY : sy
};
}
<span class="reserved">return</span> null;
},
<span class="comment">/**
* Restores the selection to the specified bookmark.
*
* <span class="attrib">@param</span> {TinyMCE_Bookmark} bookmark Bookmark to restore selection from.
* <span class="attrib">@return</span> true/false if it was successful or not.
* <span class="attrib">@type</span> boolean
*/</span>
moveToBookmark : <span class="reserved">function</span>(bookmark) {
var rng, nl, i;
var inst = <span class="reserved">this</span>.instance;
var doc = inst.getDoc();
var win = inst.getWin();
var sel = <span class="reserved">this</span>.getSel();
<span class="reserved">if</span> (!bookmark)
<span class="reserved">return</span> false;
<span class="reserved">if</span> (tinyMCE.isSafari) {
sel.setBaseAndExtent(bookmark.startContainer, bookmark.startOffset, bookmark.endContainer, bookmark.endOffset);
<span class="reserved">return</span> true;
}
<span class="reserved">if</span> (tinyMCE.isMSIE) {
<span class="reserved">if</span> (bookmark.rng) {
bookmark.rng.select();
<span class="reserved">return</span> true;
}
win.focus();
<span class="reserved">if</span> (bookmark.tag) {
rng = inst.getBody().createControlRange();
nl = doc.getElementsByTagName(bookmark.tag);
<span class="reserved">if</span> (nl.length &gt; bookmark.index) {
try {
rng.addElement(nl[bookmark.index]);
} catch (ex) {
<span class="comment">// Might be thrown if the node no longer exists</span>
}
}
} <span class="reserved">else</span> {
rng = inst.getSel().createRange();
rng.moveToElementText(inst.getBody());
rng.collapse(true);
rng.moveStart(<span class="literal">'character'</span>, bookmark.start);
rng.moveEnd(<span class="literal">'character'</span>, bookmark.length);
}
rng.select();
win.scrollTo(bookmark.scrollX, bookmark.scrollY);
<span class="reserved">return</span> true;
}
<span class="reserved">if</span> (tinyMCE.isGecko &amp;&amp; bookmark.rng) {
sel.removeAllRanges();
sel.addRange(bookmark.rng);
win.scrollTo(bookmark.scrollX, bookmark.scrollY);
<span class="reserved">return</span> true;
}
<span class="reserved">if</span> (tinyMCE.isGecko) {
<span class="comment">// try {</span>
rng = doc.createRange();
nl = doc.getElementsByTagName(bookmark.startTag);
<span class="reserved">if</span> (nl.length &gt; bookmark.start)
rng.setStart(nl[bookmark.start].childNodes[bookmark.startIndex], bookmark.startOffset);
nl = doc.getElementsByTagName(bookmark.endTag);
<span class="reserved">if</span> (nl.length &gt; bookmark.end)
rng.setEnd(nl[bookmark.end].childNodes[bookmark.endIndex], bookmark.endOffset);
sel.removeAllRanges();
sel.addRange(rng);
<span class="comment">/* } catch {
// Ignore
}*/</span>
win.scrollTo(bookmark.scrollX, bookmark.scrollY);
<span class="reserved">return</span> true;
}
<span class="reserved">return</span> false;
},
<span class="comment">/**
* Selects the specified node.
*
* <span class="attrib">@param</span> {HTMLNode} node Node object to move selection to.
* <span class="attrib">@param</span> {boolean} collapse True/false if it will be collasped.
* <span class="attrib">@param</span> {boolean} select_text_node True/false if the text contents should be selected or not.
* <span class="attrib">@param</span> {boolean} to_start True/false if the collapse should be to start or end of range.
*/</span>
selectNode : <span class="reserved">function</span>(node, collapse, select_text_node, to_start) {
var inst = <span class="reserved">this</span>.instance, sel, rng, nodes;
<span class="reserved">if</span> (!node)
<span class="reserved">return</span>;
<span class="reserved">if</span> (typeof(collapse) == <span class="literal">"undefined"</span>)
collapse = true;
<span class="reserved">if</span> (typeof(select_text_node) == <span class="literal">"undefined"</span>)
select_text_node = false;
<span class="reserved">if</span> (typeof(to_start) == <span class="literal">"undefined"</span>)
to_start = true;
<span class="reserved">if</span> (tinyMCE.isMSIE) {
rng = inst.getBody().createTextRange();
try {
rng.moveToElementText(node);
<span class="reserved">if</span> (collapse)
rng.collapse(to_start);
rng.select();
} catch (e) {
<span class="comment">// Throws illigal agrument in MSIE some times</span>
}
} <span class="reserved">else</span> {
sel = <span class="reserved">this</span>.getSel();
<span class="reserved">if</span> (!sel)
<span class="reserved">return</span>;
<span class="reserved">if</span> (tinyMCE.isSafari) {
sel.setBaseAndExtent(node, 0, node, node.innerText.length);
<span class="reserved">if</span> (collapse) {
<span class="reserved">if</span> (to_start)
sel.collapseToStart();
<span class="reserved">else</span>
sel.collapseToEnd();
}
<span class="reserved">this</span>.scrollToNode(node);
<span class="reserved">return</span>;
}
rng = inst.getDoc().createRange();
<span class="reserved">if</span> (select_text_node) {
<span class="comment">// Find first textnode in tree</span>
nodes = tinyMCE.getNodeTree(node, new Array(), 3);
<span class="reserved">if</span> (nodes.length &gt; 0)
rng.selectNodeContents(nodes[0]);
<span class="reserved">else</span>
rng.selectNodeContents(node);
} <span class="reserved">else</span>
rng.selectNode(node);
<span class="reserved">if</span> (collapse) {
<span class="comment">// Special treatment of textnode collapse</span>
<span class="reserved">if</span> (!to_start &amp;&amp; node.nodeType == 3) {
rng.setStart(node, node.nodeValue.length);
rng.setEnd(node, node.nodeValue.length);
} <span class="reserved">else</span>
rng.collapse(to_start);
}
sel.removeAllRanges();
sel.addRange(rng);
}
<span class="reserved">this</span>.scrollToNode(node);
<span class="comment">// Set selected element</span>
tinyMCE.selectedElement = null;
<span class="reserved">if</span> (node.nodeType == 1)
tinyMCE.selectedElement = node;
},
<span class="comment">/**
* Scrolls to the specified node location.
*
* <span class="attrib">@param</span> {HTMLNode} node Node to scroll to.
*/</span>
scrollToNode : <span class="reserved">function</span>(node) {
var inst = <span class="reserved">this</span>.instance;
var pos, doc, scrollX, scrollY, height;
<span class="comment">// Scroll to node position</span>
pos = tinyMCE.getAbsPosition(node);
doc = inst.getDoc();
scrollX = doc.body.scrollLeft + doc.documentElement.scrollLeft;
scrollY = doc.body.scrollTop + doc.documentElement.scrollTop;
height = tinyMCE.isMSIE ? document.getElementById(inst.editorId).style.pixelHeight : inst.targetElement.clientHeight;
<span class="comment">// Only scroll if out of visible area</span>
<span class="reserved">if</span> (!tinyMCE.settings[<span class="literal">'auto_resize'</span>] &amp;&amp; !(pos.absTop &gt; scrollY &amp;&amp; pos.absTop &lt; (scrollY - 25 + height)))
inst.contentWindow.scrollTo(pos.absLeft, pos.absTop - height + 25);
},
<span class="comment">/**
* Returns the browsers selection instance.
*
* <span class="attrib">@return</span> Browser selection instance.
* <span class="attrib">@type</span> DOMSelection
*/</span>
getSel : <span class="reserved">function</span>() {
var inst = <span class="reserved">this</span>.instance;
<span class="reserved">if</span> (tinyMCE.isMSIE &amp;&amp; !tinyMCE.isOpera)
<span class="reserved">return</span> inst.getDoc().selection;
<span class="reserved">return</span> inst.contentWindow.getSelection();
},
<span class="comment">/**
* Returns the browsers selections first range instance.
*
* <span class="attrib">@return</span> Browsers selections first range instance.
* <span class="attrib">@type</span> DOMRange
*/</span>
getRng : <span class="reserved">function</span>() {
var inst = <span class="reserved">this</span>.instance;
var sel = <span class="reserved">this</span>.getSel();
<span class="reserved">if</span> (sel == null)
<span class="reserved">return</span> null;
<span class="reserved">if</span> (tinyMCE.isMSIE &amp;&amp; !tinyMCE.isOpera)
<span class="reserved">return</span> sel.createRange();
<span class="reserved">if</span> (tinyMCE.isSafari &amp;&amp; !sel.getRangeAt)
<span class="reserved">return</span> <span class="literal">''</span> + window.getSelection();
<span class="reserved">return</span> sel.getRangeAt(0);
},
<span class="comment">/**
* Returns the currently selected/focused element.
*
* <span class="attrib">@return</span> Currently selected element.
* <span class="attrib">@type</span> HTMLElement
*/</span>
getFocusElement : <span class="reserved">function</span>() {
var inst = <span class="reserved">this</span>.instance;
<span class="reserved">if</span> (tinyMCE.isMSIE &amp;&amp; !tinyMCE.isOpera) {
var doc = inst.getDoc();
var rng = doc.selection.createRange();
<span class="comment">// if (rng.collapse)</span>
<span class="comment">// rng.collapse(true);</span>
var elm = rng.item ? rng.item(0) : rng.parentElement();
} <span class="reserved">else</span> {
<span class="reserved">if</span> (inst.isHidden())
<span class="reserved">return</span> inst.getBody();
var sel = <span class="reserved">this</span>.getSel();
var rng = <span class="reserved">this</span>.getRng();
<span class="reserved">if</span> (!sel || !rng)
<span class="reserved">return</span> null;
var elm = rng.commonAncestorContainer;
<span class="comment">//var elm = (sel &amp;&amp; sel.anchorNode) ? sel.anchorNode : null;</span>
<span class="comment">// Handle selection a image or other control like element such as anchors</span>
<span class="reserved">if</span> (!rng.collapsed) {
<span class="comment">// Is selection small</span>
<span class="reserved">if</span> (rng.startContainer == rng.endContainer) {
<span class="reserved">if</span> (rng.startOffset - rng.endOffset &lt; 2) {
<span class="reserved">if</span> (rng.startContainer.hasChildNodes())
elm = rng.startContainer.childNodes[rng.startOffset];
}
}
}
<span class="comment">// Get the element parent of the node</span>
elm = tinyMCE.getParentElement(elm);
<span class="comment">//if (tinyMCE.selectedElement != null &amp;&amp; tinyMCE.selectedElement.nodeName.toLowerCase() == "img")</span>
<span class="comment">// elm = tinyMCE.selectedElement;</span>
}
<span class="reserved">return</span> elm;
}
};
</pre>
<hr>
<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
<tr align="center" valign="top">
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
<td bgcolor="#FFFFFF" class="NavBarCell1Rev"> &nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
<td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
</tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top"><em>
<b></b></em>
</td>
</tr>
<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
<a href="index.html" target="_top"><b>FRAMES</b></a> &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
<!--
if(window==top) {
document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
}
//-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->
<hr>
<font size="-1">
</font>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Fri Apr 14 21:59:23 2006</div>
</body>
</html>
<!doctype html public "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
<html>
<head>
<title>
Overview
</title>
<link rel ="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script>
function asd() {
parent.document.title="TinyMCE_URL.class.js Overview";
}
</script>
</head>
<body bgcolor="white" onload="asd();">
<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
<tr align="center" valign="top">
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
<td bgcolor="#FFFFFF" class="NavBarCell1Rev"> &nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
<td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
</tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top">
<em>
<b></b></em>
</td>
</tr>
<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
<a href="index.html" target="_top"><b>FRAMES</b></a> &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
<!--
if(window==top) {
document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
}
//-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->
<hr>
<center>
<h2>TinyMCE_URL.class.js</h2>
</center>
<h4>Summary</h4>
<p>
No overview generated for 'TinyMCE_URL.class.js'<BR/><BR/>
</p>
<hr>
<!-- ========== METHOD SUMMARY =========== -->
<!-- ========== END METHOD SUMMARY =========== -->
<pre class="sourceview"><span class="comment">/**
* $RCSfile: overview-summary-TinyMCE_URL.class.js.html,v $
* $Revision: 1.42 $
* $Date: 2006/04/14 20:00:31 $
*
* <span class="attrib">@author</span> Moxiecode
* <span class="attrib">@copyright</span> Copyright 2004-2006, Moxiecode Systems AB, All rights reserved.
*
* The contents of this file will be wrapped in a class later on.
*/</span>
<span class="comment">/**
* Parses a URL in to its diffrent components.
*
* <span class="attrib">@param</span> {string} url_str URL string to parse into a URL object.
* <span class="attrib">@return</span> URL object based on input string.
* <span class="attrib">@type</span> TinyMCE_URL_Item
*/</span>
TinyMCE_Engine.<span class="reserved">prototype</span>.parseURL = <span class="reserved">function</span>(url_str) {
var urlParts = new Array();
<span class="reserved">if</span> (url_str) {
var pos, lastPos;
<span class="comment">// Parse protocol part</span>
pos = url_str.indexOf(<span class="literal">'://'</span>);
<span class="reserved">if</span> (pos != -1) {
urlParts[<span class="literal">'protocol'</span>] = url_str.substring(0, pos);
lastPos = pos + 3;
}
<span class="comment">// Find port or path start</span>
<span class="reserved">for</span> (var i=lastPos; i&lt;url_str.length; i++) {
var chr = url_str.charAt(i);
<span class="reserved">if</span> (chr == <span class="literal">':'</span>)
break;
<span class="reserved">if</span> (chr == <span class="literal">'/'</span>)
break;
}
pos = i;
<span class="comment">// Get host</span>
urlParts[<span class="literal">'host'</span>] = url_str.substring(lastPos, pos);
<span class="comment">// Get port</span>
urlParts[<span class="literal">'port'</span>] = <span class="literal">""</span>;
lastPos = pos;
<span class="reserved">if</span> (url_str.charAt(pos) == <span class="literal">':'</span>) {
pos = url_str.indexOf(<span class="literal">'/'</span>, lastPos);
urlParts[<span class="literal">'port'</span>] = url_str.substring(lastPos+1, pos);
}
<span class="comment">// Get path</span>
lastPos = pos;
pos = url_str.indexOf(<span class="literal">'?'</span>, lastPos);
<span class="reserved">if</span> (pos == -1)
pos = url_str.indexOf(<span class="literal">'#'</span>, lastPos);
<span class="reserved">if</span> (pos == -1)
pos = url_str.length;
urlParts[<span class="literal">'path'</span>] = url_str.substring(lastPos, pos);
<span class="comment">// Get query</span>
lastPos = pos;
<span class="reserved">if</span> (url_str.charAt(pos) == <span class="literal">'?'</span>) {
pos = url_str.indexOf(<span class="literal">'#'</span>);
pos = (pos == -1) ? url_str.length : pos;
urlParts[<span class="literal">'query'</span>] = url_str.substring(lastPos+1, pos);
}
<span class="comment">// Get anchor</span>
lastPos = pos;
<span class="reserved">if</span> (url_str.charAt(pos) == <span class="literal">'#'</span>) {
pos = url_str.length;
urlParts[<span class="literal">'anchor'</span>] = url_str.substring(lastPos+1, pos);
}
}
<span class="reserved">return</span> urlParts;
};
<span class="comment">/**
* Serializes the specified URL object into a string.
*
* <span class="attrib">@param</span> {TinyMCE_URL_Item} up URL object to serialize.
* <span class="attrib">@return</span> Serialized URL object.
* <span class="attrib">@type</span> string
*/</span>
TinyMCE_Engine.<span class="reserved">prototype</span>.serializeURL = <span class="reserved">function</span>(up) {
var o = <span class="literal">""</span>;
<span class="reserved">if</span> (up[<span class="literal">'protocol'</span>])
o += up[<span class="literal">'protocol'</span>] + <span class="literal">"://"</span>;
<span class="reserved">if</span> (up[<span class="literal">'host'</span>])
o += up[<span class="literal">'host'</span>];
<span class="reserved">if</span> (up[<span class="literal">'port'</span>])
o += <span class="literal">":"</span> + up[<span class="literal">'port'</span>];
<span class="reserved">if</span> (up[<span class="literal">'path'</span>])
o += up[<span class="literal">'path'</span>];
<span class="reserved">if</span> (up[<span class="literal">'query'</span>])
o += <span class="literal">"?"</span> + up[<span class="literal">'query'</span>];
<span class="reserved">if</span> (up[<span class="literal">'anchor'</span>])
o += <span class="literal">"#"</span> + up[<span class="literal">'anchor'</span>];
<span class="reserved">return</span> o;
};
<span class="comment">/**
* Converts an absolute path to relative path.
*
* <span class="attrib">@param</span> {string} base_url URL to make as a base path, URLs will be converted relative from this point.
* <span class="attrib">@param</span> {string} url_to_relative URL to convert into a relative URL.
* <span class="attrib">@return</span> Relative URL based in input.
* <span class="attrib">@type</span> string
*/</span>
TinyMCE_Engine.<span class="reserved">prototype</span>.convertAbsoluteURLToRelativeURL = <span class="reserved">function</span>(base_url, url_to_relative) {
var baseURL = <span class="reserved">this</span>.parseURL(base_url);
var targetURL = <span class="reserved">this</span>.parseURL(url_to_relative);
var strTok1;
var strTok2;
var breakPoint = 0;
var outPath = <span class="literal">""</span>;
var forceSlash = false;
<span class="reserved">if</span> (targetURL.path == <span class="literal">""</span>)
targetURL.path = <span class="literal">"/"</span>;
<span class="reserved">else</span>
forceSlash = true;
<span class="comment">// Crop away last path part</span>
base_url = baseURL.path.substring(0, baseURL.path.lastIndexOf(<span class="literal">'/'</span>));
strTok1 = base_url.split(<span class="literal">'/'</span>);
strTok2 = targetURL.path.split(<span class="literal">'/'</span>);
<span class="reserved">if</span> (strTok1.length &gt;= strTok2.length) {
<span class="reserved">for</span> (var i=0; i&lt;strTok1.length; i++) {
<span class="reserved">if</span> (i &gt;= strTok2.length || strTok1[i] != strTok2[i]) {
breakPoint = i + 1;
break;
}
}
}
<span class="reserved">if</span> (strTok1.length &lt; strTok2.length) {
<span class="reserved">for</span> (var i=0; i&lt;strTok2.length; i++) {
<span class="reserved">if</span> (i &gt;= strTok1.length || strTok1[i] != strTok2[i]) {
breakPoint = i + 1;
break;
}
}
}
<span class="reserved">if</span> (breakPoint == 1)
<span class="reserved">return</span> targetURL.path;
<span class="reserved">for</span> (var i=0; i&lt;(strTok1.length-(breakPoint-1)); i++)
outPath += <span class="literal">"../"</span>;
<span class="reserved">for</span> (var i=breakPoint-1; i&lt;strTok2.length; i++) {
<span class="reserved">if</span> (i != (breakPoint-1))
outPath += <span class="literal">"/"</span> + strTok2[i];
<span class="reserved">else</span>
outPath += strTok2[i];
}
targetURL.protocol = null;
targetURL.host = null;
targetURL.port = null;
targetURL.path = outPath == <span class="literal">""</span> &amp;&amp; forceSlash ? <span class="literal">"/"</span> : outPath;
<span class="comment">// Remove document prefix from local anchors</span>
var fileName = baseURL.path;
var pos;
<span class="reserved">if</span> ((pos = fileName.lastIndexOf(<span class="literal">'/'</span>)) != -1)
fileName = fileName.substring(pos + 1);
<span class="comment">// Is local anchor</span>
<span class="reserved">if</span> (fileName == targetURL.path &amp;&amp; targetURL.anchor != <span class="literal">""</span>)
targetURL.path = <span class="literal">""</span>;
<span class="comment">// If empty and not local anchor force filename or slash</span>
<span class="reserved">if</span> (targetURL.path == <span class="literal">""</span> &amp;&amp; !targetURL.anchor)
targetURL.path = fileName != <span class="literal">""</span> ? fileName : <span class="literal">"/"</span>;
<span class="reserved">return</span> <span class="reserved">this</span>.serializeURL(targetURL);
};
<span class="comment">/**
* Converts an relative path to absolute path.
*
* <span class="attrib">@param</span> {string} base_url URL to make as a base path, URLs will be converted absolute from this point.
* <span class="attrib">@param</span> {string} relative_url URL to convert into a absolute URL.
* <span class="attrib">@return</span> Absolute URL based in input.
* <span class="attrib">@type</span> string
*/</span>
TinyMCE_Engine.<span class="reserved">prototype</span>.convertRelativeToAbsoluteURL = <span class="reserved">function</span>(base_url, relative_url) {
var baseURL = <span class="reserved">this</span>.parseURL(base_url);
var relURL = <span class="reserved">this</span>.parseURL(relative_url);
<span class="reserved">if</span> (relative_url == <span class="literal">""</span> || relative_url.charAt(0) == <span class="literal">'/'</span> || relative_url.indexOf(<span class="literal">'://'</span>) != -1 || relative_url.indexOf(<span class="literal">'mailto:'</span>) != -1 || relative_url.indexOf(<span class="literal">'javascript:'</span>) != -1)
<span class="reserved">return</span> relative_url;
<span class="comment">// Split parts</span>
baseURLParts = baseURL[<span class="literal">'path'</span>].split(<span class="literal">'/'</span>);
relURLParts = relURL[<span class="literal">'path'</span>].split(<span class="literal">'/'</span>);
<span class="comment">// Remove empty chunks</span>
var newBaseURLParts = new Array();
<span class="reserved">for</span> (var i=baseURLParts.length-1; i&gt;=0; i--) {
<span class="reserved">if</span> (baseURLParts[i].length == 0)
continue;
newBaseURLParts[newBaseURLParts.length] = baseURLParts[i];
}
baseURLParts = newBaseURLParts.reverse();
<span class="comment">// Merge relURLParts chunks</span>
var newRelURLParts = new Array();
var numBack = 0;
<span class="reserved">for</span> (var i=relURLParts.length-1; i&gt;=0; i--) {
<span class="reserved">if</span> (relURLParts[i].length == 0 || relURLParts[i] == <span class="literal">"."</span>)
continue;
<span class="reserved">if</span> (relURLParts[i] == <span class="literal">'..'</span>) {
numBack++;
continue;
}
<span class="reserved">if</span> (numBack &gt; 0) {
numBack--;
continue;
}
newRelURLParts[newRelURLParts.length] = relURLParts[i];
}
relURLParts = newRelURLParts.reverse();
<span class="comment">// Remove end from absolute path</span>
var len = baseURLParts.length-numBack;
var absPath = (len &lt;= 0 ? <span class="literal">""</span> : <span class="literal">"/"</span>) + baseURLParts.slice(0, len).join(<span class="literal">'/'</span>) + <span class="literal">"/"</span> + relURLParts.join(<span class="literal">'/'</span>);
var start = <span class="literal">""</span>, end = <span class="literal">""</span>;
<span class="comment">// Build output URL</span>
relURL.protocol = baseURL.protocol;
relURL.host = baseURL.host;
relURL.port = baseURL.port;
<span class="comment">// Re-add trailing slash if it's removed</span>
<span class="reserved">if</span> (relURL.path.charAt(relURL.path.length-1) == <span class="literal">"/"</span>)
absPath += <span class="literal">"/"</span>;
relURL.path = absPath;
<span class="reserved">return</span> <span class="reserved">this</span>.serializeURL(relURL);
};
<span class="comment">/**
* Converts the specified URL based in TinyMCE configuration settings.
*
* <span class="attrib">@param</span> {string} url URL to convert based on config.
* <span class="attrib">@param</span> {HTMLElement} node HTML element that holds the URL.
* <span class="attrib">@param</span> {boolean} on_save Is this convertion the final output URL.
* <span class="attrib">@return</span> Converted URL string.
* <span class="attrib">@type</span> string
*/</span>
TinyMCE_Engine.<span class="reserved">prototype</span>.convertURL = <span class="reserved">function</span>(url, node, on_save) {
var prot = document.location.protocol;
var host = document.location.hostname;
var port = document.location.port;
<span class="comment">// Pass through file protocol</span>
<span class="reserved">if</span> (prot == <span class="literal">"file:"</span>)
<span class="reserved">return</span> url;
<span class="comment">// Something is wrong, remove weirdness</span>
url = tinyMCE.regexpReplace(url, <span class="literal">'(http|https):///'</span>, <span class="literal">'/'</span>);
<span class="comment">// Mailto link or anchor (Pass through)</span>
<span class="reserved">if</span> (url.indexOf(<span class="literal">'mailto:'</span>) != -1 || url.indexOf(<span class="literal">'javascript:'</span>) != -1 || tinyMCE.regexpReplace(url,<span class="literal">'[ \t\r\n\+]|%20'</span>,<span class="literal">''</span>).charAt(0) == <span class="literal">"#"</span>)
<span class="reserved">return</span> url;
<span class="comment">// Fix relative/Mozilla</span>
<span class="reserved">if</span> (!tinyMCE.isMSIE &amp;&amp; !on_save &amp;&amp; url.indexOf(<span class="literal">"://"</span>) == -1 &amp;&amp; url.charAt(0) != <span class="literal">'/'</span>)
<span class="reserved">return</span> tinyMCE.settings[<span class="literal">'base_href'</span>] + url;
<span class="comment">// Handle relative URLs</span>
<span class="reserved">if</span> (on_save &amp;&amp; tinyMCE.getParam(<span class="literal">'relative_urls'</span>)) {
var curl = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings[<span class="literal">'base_href'</span>], url);
<span class="reserved">if</span> (curl.charAt(0) == <span class="literal">'/'</span>)
curl = tinyMCE.settings[<span class="literal">'document_base_prefix'</span>] + curl;
var urlParts = tinyMCE.parseURL(curl);
var tmpUrlParts = tinyMCE.parseURL(tinyMCE.settings[<span class="literal">'document_base_url'</span>]);
<span class="comment">// Force relative</span>
<span class="reserved">if</span> (urlParts[<span class="literal">'host'</span>] == tmpUrlParts[<span class="literal">'host'</span>] &amp;&amp; (urlParts[<span class="literal">'port'</span>] == tmpUrlParts[<span class="literal">'port'</span>]))
<span class="reserved">return</span> tinyMCE.convertAbsoluteURLToRelativeURL(tinyMCE.settings[<span class="literal">'document_base_url'</span>], curl);
}
<span class="comment">// Handle absolute URLs</span>
<span class="reserved">if</span> (!tinyMCE.getParam(<span class="literal">'relative_urls'</span>)) {
var urlParts = tinyMCE.parseURL(url);
var baseUrlParts = tinyMCE.parseURL(tinyMCE.settings[<span class="literal">'base_href'</span>]);
<span class="comment">// Force absolute URLs from relative URLs</span>
url = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings[<span class="literal">'base_href'</span>], url);
<span class="comment">// If anchor and path is the same page</span>
<span class="reserved">if</span> (urlParts[<span class="literal">'anchor'</span>] &amp;&amp; urlParts[<span class="literal">'path'</span>] == baseUrlParts[<span class="literal">'path'</span>])
<span class="reserved">return</span> <span class="literal">"#"</span> + urlParts[<span class="literal">'anchor'</span>];
}
<span class="comment">// Remove current domain</span>
<span class="reserved">if</span> (tinyMCE.getParam(<span class="literal">'remove_script_host'</span>)) {
var start = <span class="literal">""</span>, portPart = <span class="literal">""</span>;
<span class="reserved">if</span> (port != <span class="literal">""</span>)
portPart = <span class="literal">":"</span> + port;
start = prot + <span class="literal">"//"</span> + host + portPart + <span class="literal">"/"</span>;
<span class="reserved">if</span> (url.indexOf(start) == 0)
url = url.substring(start.length-1);
}
<span class="reserved">return</span> url;
};
<span class="comment">/**
* Converts all img and a element URLs to absolute URLs. This will use the mce_src or mce_href attribute values
* if they are provided. This function is used when the editor is initialized.
*
* <span class="attrib">@param</span> {HTMLElement} body HTML element to convert all URLs in.
*/</span>
TinyMCE_Engine.<span class="reserved">prototype</span>.convertAllRelativeURLs = <span class="reserved">function</span>(body) {
<span class="comment">// Convert all image URL:s to absolute URL</span>
var elms = body.getElementsByTagName(<span class="literal">"img"</span>);
<span class="reserved">for</span> (var i=0; i&lt;elms.length; i++) {
var src = tinyMCE.getAttrib(elms[i], <span class="literal">'src'</span>);
var msrc = tinyMCE.getAttrib(elms[i], <span class="literal">'mce_src'</span>);
<span class="reserved">if</span> (msrc != <span class="literal">""</span>)
src = msrc;
<span class="reserved">if</span> (src != <span class="literal">""</span>) {
src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings[<span class="literal">'base_href'</span>], src);
elms[i].setAttribute(<span class="literal">"src"</span>, src);
}
}
<span class="comment">// Convert all link URL:s to absolute URL</span>
var elms = body.getElementsByTagName(<span class="literal">"a"</span>);
<span class="reserved">for</span> (var i=0; i&lt;elms.length; i++) {
var href = tinyMCE.getAttrib(elms[i], <span class="literal">'href'</span>);
var mhref = tinyMCE.getAttrib(elms[i], <span class="literal">'mce_href'</span>);
<span class="reserved">if</span> (mhref != <span class="literal">""</span>)
href = mhref;
<span class="reserved">if</span> (href &amp;&amp; href != <span class="literal">""</span>) {
href = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings[<span class="literal">'base_href'</span>], href);
elms[i].setAttribute(<span class="literal">"href"</span>, href);
}
}
};
</pre>
<hr>
<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
<tr align="center" valign="top">
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
<td bgcolor="#FFFFFF" class="NavBarCell1Rev"> &nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
<td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
</tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top"><em>
<b></b></em>
</td>
</tr>
<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
<a href="index.html" target="_top"><b>FRAMES</b></a> &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
<!--
if(window==top) {
document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
}
//-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->
<hr>
<font size="-1">
</font>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Fri Apr 14 21:59:23 2006</div>
</body>
</html>
<!doctype html public "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
<html>
<head>
<title>
Overview
</title>
<link rel ="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script>
function asd() {
parent.document.title="TinyMCE_UndoRedo.class.js Overview";
}
</script>
</head>
<body bgcolor="white" onload="asd();">
<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
<tr align="center" valign="top">
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
<td bgcolor="#FFFFFF" class="NavBarCell1Rev"> &nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
<td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
</tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top">
<em>
<b></b></em>
</td>
</tr>
<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
<a href="index.html" target="_top"><b>FRAMES</b></a> &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
<!--
if(window==top) {
document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
}
//-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->
<hr>
<center>
<h2>TinyMCE_UndoRedo.class.js</h2>
</center>
<h4>Summary</h4>
<p>
No overview generated for 'TinyMCE_UndoRedo.class.js'<BR/><BR/>
</p>
<hr>
<table border="1" cellpadding="3" cellspacing="0" width="100%">
<tr bgcolor="#CCCCFF" class="TableHeadingColor">
<td colspan=2><font size="+2">
<b>Class Summary</b>
</font></td>
</tr>
<tr bgcolor="white" class="TableRowColor">
<td width="15%"><b><a href="TinyMCE_UndoRedo.html">TinyMCE_UndoRedo</a></b></td>
<td>&nbsp;</td>
</tr>
</table>
<hr/>
<!-- ========== METHOD SUMMARY =========== -->
<!-- ========== END METHOD SUMMARY =========== -->
<pre class="sourceview"><span class="comment">/**
* $RCSfile: overview-summary-TinyMCE_UndoRedo.class.js.html,v $
* $Revision: 1.42 $
* $Date: 2006/04/14 20:00:31 $
*
* <span class="attrib">@author</span> Moxiecode
* <span class="attrib">@copyright</span> Copyright 2004-2006, Moxiecode Systems AB, All rights reserved.
*/</span>
<span class="comment">/**
* Constructs a undo redo instance, this instance handles the custom undo/redo handeling in TinyMCE.
*
* <span class="attrib">@param</span> {TinyMCE_Control} inst TinyMCE editor control instance.
* <span class="attrib">@constructor</span>
*/</span>
<span class="reserved">function</span> TinyMCE_UndoRedo(inst) {
<span class="reserved">this</span>.instance = inst;
<span class="reserved">this</span>.undoLevels = new Array();
<span class="reserved">this</span>.undoIndex = 0;
<span class="reserved">this</span>.typingUndoIndex = -1;
<span class="reserved">this</span>.undoRedo = true;
};
TinyMCE_UndoRedo.<span class="reserved">prototype</span> = {
<span class="comment">/**
* Adds a new undo level, this will take a snapshot of the current instance HTML or use the specified level.
*
* <span class="attrib">@param</span> {TinyMCE_UndoRedoLevel} l Optional undo/redo level to add.
* <span class="attrib">@return</span> true/false on success or failure.
* <span class="attrib">@type</span> boolean
*/</span>
add : <span class="reserved">function</span>(l) {
var b;
<span class="reserved">if</span> (l) {
<span class="reserved">this</span>.undoLevels[<span class="reserved">this</span>.undoLevels.length] = l;
<span class="reserved">return</span> true;
}
var inst = <span class="reserved">this</span>.instance;
<span class="reserved">if</span> (<span class="reserved">this</span>.typingUndoIndex != -1) {
<span class="reserved">this</span>.undoIndex = <span class="reserved">this</span>.typingUndoIndex;
<span class="comment">// tinyMCE.debug("Override: " + this.undoIndex);</span>
}
var newHTML = tinyMCE.trim(inst.getBody().innerHTML);
<span class="reserved">if</span> (<span class="reserved">this</span>.undoLevels[<span class="reserved">this</span>.undoIndex] &amp;&amp; newHTML != <span class="reserved">this</span>.undoLevels[<span class="reserved">this</span>.undoIndex].content) {
<span class="comment">//tinyMCE.debug(newHTML, this.undoLevels[this.undoIndex]);</span>
tinyMCE.dispatchCallback(inst, <span class="literal">'onchange_callback'</span>, <span class="literal">'onChange'</span>, inst);
<span class="comment">// Time to compress</span>
var customUndoLevels = tinyMCE.settings[<span class="literal">'custom_undo_redo_levels'</span>];
<span class="reserved">if</span> (customUndoLevels != -1 &amp;&amp; <span class="reserved">this</span>.undoLevels.length &gt; customUndoLevels) {
<span class="reserved">for</span> (var i=0; i&lt;<span class="reserved">this</span>.undoLevels.length-1; i++) {
<span class="comment">//tinyMCE.debug(this.undoLevels[i] + "=" + this.undoLevels[i+1]);</span>
<span class="reserved">this</span>.undoLevels[i] = <span class="reserved">this</span>.undoLevels[i+1];
}
<span class="reserved">this</span>.undoLevels.length--;
<span class="reserved">this</span>.undoIndex--;
}
b = inst.undoBookmark;
<span class="reserved">if</span> (!b)
b = inst.selection.getBookmark();
<span class="reserved">this</span>.undoIndex++;
<span class="reserved">this</span>.undoLevels[<span class="reserved">this</span>.undoIndex] = {
content : newHTML,
bookmark : b
};
<span class="reserved">this</span>.undoLevels.length = <span class="reserved">this</span>.undoIndex + 1;
<span class="comment">//tinyMCE.debug("level added" + this.undoIndex);</span>
<span class="reserved">return</span> true;
<span class="comment">// tinyMCE.debug(this.undoIndex + "," + (this.undoLevels.length-1));</span>
}
<span class="reserved">return</span> false;
},
<span class="comment">/**
* Performes a undo action, this will restore the HTML contents of the editor to a former state.
*/</span>
undo : <span class="reserved">function</span>() {
var inst = <span class="reserved">this</span>.instance;
<span class="comment">// Do undo</span>
<span class="reserved">if</span> (<span class="reserved">this</span>.undoIndex &gt; 0) {
<span class="reserved">this</span>.undoIndex--;
tinyMCE.setInnerHTML(inst.getBody(), <span class="reserved">this</span>.undoLevels[<span class="reserved">this</span>.undoIndex].content);
inst.repaint();
<span class="reserved">if</span> (inst.settings.custom_undo_redo_restore_selection)
inst.selection.moveToBookmark(<span class="reserved">this</span>.undoLevels[<span class="reserved">this</span>.undoIndex].bookmark);
}
<span class="comment">// tinyMCE.debug("Undo - undo levels:" + this.undoLevels.length + ", undo index: " + this.undoIndex);</span>
},
<span class="comment">/**
* Performes a undo action, this will restore the HTML contents of the editor to a former undoed state.
*/</span>
redo : <span class="reserved">function</span>() {
var inst = <span class="reserved">this</span>.instance;
tinyMCE.execCommand(<span class="literal">"mceEndTyping"</span>);
<span class="reserved">if</span> (<span class="reserved">this</span>.undoIndex &lt; (<span class="reserved">this</span>.undoLevels.length-1)) {
<span class="reserved">this</span>.undoIndex++;
tinyMCE.setInnerHTML(inst.getBody(), <span class="reserved">this</span>.undoLevels[<span class="reserved">this</span>.undoIndex].content);
inst.repaint();
<span class="comment">// if (this.undoIndex &gt; 0)</span>
<span class="comment">// inst.selection.moveToBookmark(this.undoLevels[this.undoIndex-1].bookmark);</span>
<span class="reserved">if</span> (inst.settings.custom_undo_redo_restore_selection)
inst.selection.moveToBookmark(<span class="reserved">this</span>.undoLevels[<span class="reserved">this</span>.undoIndex].bookmark);
<span class="comment">// tinyMCE.debug("Redo - undo levels:" + this.undoLevels.length + ", undo index: " + this.undoIndex);</span>
}
tinyMCE.triggerNodeChange();
}
};
</pre>
<hr>
<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
<tr align="center" valign="top">
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
<td bgcolor="#FFFFFF" class="NavBarCell1Rev"> &nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
<td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
</tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top"><em>
<b></b></em>
</td>
</tr>
<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
<a href="index.html" target="_top"><b>FRAMES</b></a> &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
<!--
if(window==top) {
document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
}
//-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->
<hr>
<font size="-1">
</font>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Fri Apr 14 21:59:23 2006</div>
</body>
</html>
<!doctype html public "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
<html>
<head>
<title>
Overview
</title>
<link rel ="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script>
function asd() {
parent.document.title=" Overview";
}
</script>
</head>
<body bgcolor="white" onload="asd();">
<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
<tr align="center" valign="top">
<td bgcolor="#FFFFFF" class="NavBarCell1Rev"> &nbsp;<font class="NavBarFont1Rev"><b>Overview</b></font>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <font class="NavBarFont1">File</font>&nbsp;</td>
<td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
</tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top">
<em>
<b></b></em>
</td>
</tr>
<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
<a href="index.html" target="_top"><b>FRAMES</b></a> &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
<!--
if(window==top) {
document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
}
//-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->
<hr>
<center>
<h2>JSDoc Documentation</h2>
</center>
<h4>Summary</h4>
<p>
No summary generated for these documents.
</p>
<hr>
<table border="1" cellpadding="3" cellspacing="0" width="100%">
<tr bgcolor="#CCCCFF" class="TableHeadingColor">
<td colspan=2><font size="+2">
<b>File Summary</b>
</font></td>
</tr>
<tr bgcolor="white" class="TableRowColor">
<td width="15%"><b><a href="overview-summary-TinyMCE_Array.class.js.html">TinyMCE_Array.class.js</a></b></td>
<td>&nbsp;</td>
</tr>
<tr bgcolor="white" class="TableRowColor">
<td width="15%"><b><a href="overview-summary-TinyMCE_Cleanup.class.js.html">TinyMCE_Cleanup.class.js</a></b></td>
<td>&nbsp;</td>
</tr>
<tr bgcolor="white" class="TableRowColor">
<td width="15%"><b><a href="overview-summary-TinyMCE_Control.class.js.html">TinyMCE_Control.class.js</a></b></td>
<td>&nbsp;</td>
</tr>
<tr bgcolor="white" class="TableRowColor">
<td width="15%"><b><a href="overview-summary-TinyMCE_Debug.class.js.html">TinyMCE_Debug.class.js</a></b></td>
<td>&nbsp;</td>
</tr>
<tr bgcolor="white" class="TableRowColor">
<td width="15%"><b><a href="overview-summary-TinyMCE_DOMUtils.class.js.html">TinyMCE_DOMUtils.class.js</a></b></td>
<td>&nbsp;</td>
</tr>
<tr bgcolor="white" class="TableRowColor">
<td width="15%"><b><a href="overview-summary-TinyMCE_Engine.class.js.html">TinyMCE_Engine.class.js</a></b></td>
<td>&nbsp;</td>
</tr>
<tr bgcolor="white" class="TableRowColor">
<td width="15%"><b><a href="overview-summary-TinyMCE_Event.class.js.html">TinyMCE_Event.class.js</a></b></td>
<td>&nbsp;</td>
</tr>
<tr bgcolor="white" class="TableRowColor">
<td width="15%"><b><a href="overview-summary-TinyMCE_ForceParagraphs.class.js.html">TinyMCE_ForceParagraphs.class.js</a></b></td>
<td>&nbsp;</td>
</tr>
<tr bgcolor="white" class="TableRowColor">
<td width="15%"><b><a href="overview-summary-TinyMCE_Layer.class.js.html">TinyMCE_Layer.class.js</a></b></td>
<td>&nbsp;</td>
</tr>
<tr bgcolor="white" class="TableRowColor">
<td width="15%"><b><a href="overview-summary-TinyMCE_Menu.class.js.html">TinyMCE_Menu.class.js</a></b></td>
<td>&nbsp;</td>
</tr>
<tr bgcolor="white" class="TableRowColor">
<td width="15%"><b><a href="overview-summary-TinyMCE_Popup.class.js.html">TinyMCE_Popup.class.js</a></b></td>
<td>&nbsp;</td>
</tr>
<tr bgcolor="white" class="TableRowColor">
<td width="15%"><b><a href="overview-summary-TinyMCE_Selection.class.js.html">TinyMCE_Selection.class.js</a></b></td>
<td>&nbsp;</td>
</tr>
<tr bgcolor="white" class="TableRowColor">
<td width="15%"><b><a href="overview-summary-TinyMCE_UndoRedo.class.js.html">TinyMCE_UndoRedo.class.js</a></b></td>
<td>&nbsp;</td>
</tr>
<tr bgcolor="white" class="TableRowColor">
<td width="15%"><b><a href="overview-summary-TinyMCE_URL.class.js.html">TinyMCE_URL.class.js</a></b></td>
<td>&nbsp;</td>
</tr>
</table>
<hr/>
<!-- ========== METHOD SUMMARY =========== -->
<!-- ========== END METHOD SUMMARY =========== -->
<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
<tr align="center" valign="top">
<td bgcolor="#FFFFFF" class="NavBarCell1Rev"> &nbsp;<font class="NavBarFont1Rev"><b>Overview</b></font>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <font class="NavBarFont1">File</font>&nbsp;</td>
<td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
</tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top"><em>
<b></b></em>
</td>
</tr>
<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
<a href="index.html" target="_top"><b>FRAMES</b></a> &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
<!--
if(window==top) {
document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
}
//-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->
<hr>
<font size="-1">
</font>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Fri Apr 14 21:59:23 2006</div>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
Class Hierarchy
</TITLE>
<LINK REL="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
<SCRIPT>
function asd()
{
parent.document.title=" Class Hierarchy";
}
</SCRIPT>
</HEAD>
<BODY BGCOLOR="white" onload="asd();">
<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_top"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1"><A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><b>Overview</b></A></FONT>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">File</FONT>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><b>Tree</b></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><b>Index</b></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><b>Help</b></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD BGCOLOR="#FFFFFF" ALIGN="right" VALIGN="top"><EM>
<B></B></EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="index.html" TARGET="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="overview-summary.html" TARGET="_top"><B>NO FRAMES</B></A>
&nbsp;&nbsp;
<SCRIPT>
<!--
if(window==top) {
document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>
<H2>Class Hierarchy</H2>
<UL><LI TYPE="circle">Object</LI><UL>
<LI TYPE="circle">
<A HREF="TinyMCE_Cleanup.html">
<B>TinyMCE_Cleanup</B></A></LI>
<LI TYPE="circle">
<A HREF="TinyMCE_Control.html">
<B>TinyMCE_Control</B></A></LI>
<LI TYPE="circle">
<A HREF="TinyMCE_Engine.html">
<B>TinyMCE_Engine</B></A></LI>
<LI TYPE="circle">
<A HREF="TinyMCE_Layer.html">
<B>TinyMCE_Layer</B></A></LI>
<LI TYPE="circle">
<A HREF="TinyMCE_Popup.html">
<B>TinyMCE_Popup</B></A></LI>
<LI TYPE="circle">
<A HREF="TinyMCE_Selection.html">
<B>TinyMCE_Selection</B></A></LI>
<LI TYPE="circle">
<A HREF="TinyMCE_UndoRedo.html">
<B>TinyMCE_UndoRedo</B></A></LI>
</UL></UL>
<HR>
<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_top"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1"><A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><b>Overview</b></A></FONT>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">File</FONT>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><b>Tree</b></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><b>Index</b></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><b>Help</b></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD BGCOLOR="#FFFFFF" ALIGN="right" VALIGN="top"><EM>
<B></B></EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="index.html" TARGET="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="overview-summary.html" TARGET="_top"><B>NO FRAMES</B></A>
&nbsp;&nbsp;
<SCRIPT>
<!--
if(window==top) {
document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<hr>
<FONT SIZE="-1">
</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" parent="_parent">JSDoc</a> on Fri Apr 14 21:59:23 2006</div>
</BODY>
</HTML>
/* JSDoc style sheet */
/* Define colors, fonts and other style attributes here to override the defaults */
/* Page background color */
body { background-color: #FFFFFF }
/* Table colors */
.TableHeadingColor { background: #CCCCFF } /* Dark mauve */
.TableSubHeadingColor { background: #EEEEFF } /* Light mauve */
.TableRowColor { background: #FFFFFF } /* White */
/* Font used in left-hand frame lists */
.FrameTitleFont { font-size: 10pt; font-family: Helvetica, Arial, san-serif }
.FrameHeadingFont { font-size: 10pt; font-family: Helvetica, Arial, san-serif }
.FrameItemFont { font-size: 10pt; font-family: Helvetica, Arial, san-serif }
/* Example of smaller, sans-serif font in frames */
/* .FrameItemFont { font-size: 10pt; font-family: Helvetica, Arial, sans-serif } */
/* Navigation bar fonts and colors */
.NavBarCell1 { background-color:#EEEEFF;}/* Light mauve */
.NavBarCell1Rev { background-color:#00008B;}/* Dark Blue */
.NavBarFont1 { font-family: Arial, Helvetica, sans-serif; color:#000000;}
.NavBarFont1Rev { font-family: Arial, Helvetica, sans-serif; color:#FFFFFF;}
.NavBarCell2 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF;}
.NavBarCell3 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF;}
.jsdoc_ctime { font-family: Arial, Helvetica, sans-serif; font-size: 9pt;
text-align: right }
/* Sourcecode view */
.sourceview { background: #FFFFFF }
.attrib { color: #DD7777 }
.comment { color: #55AA55 }
.reserved { color: #FF5555 }
.literal { color: #5555FF }
body {
background-color: #FFFFFF;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
color: #880000;
scrollbar-3dlight-color: #F0F0EE;
scrollbar-arrow-color: #676662;
scrollbar-base-color: #F0F0EE;
scrollbar-darkshadow-color: #DDDDDD;
scrollbar-face-color: #E0E0DD;
scrollbar-highlight-color: #F0F0EE;
scrollbar-shadow-color: #F0F0EE;
scrollbar-track-color: #F5F5F5;
}
.header1 {
font-weight: bold;
font-size: 14px
}
.header2 {
font-weight: bold;
font-size: 12px;
color: #FF0000
}
.header3 {
font-weight: normal;
font-size: 12px;
color: #0000FF
}
.tablerow1 {
background-color: #BBBBBB;
}
td {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Advanced example</title>
<!-- tinyMCE -->
<script language="javascript" type="text/javascript" src="../jscripts/tiny_mce/tiny_mce.js"></script>
<script language="javascript" type="text/javascript">
tinyMCE.init({
theme : "advanced",
mode : "exact",
elements : "elm1,elm2",
save_callback : "customSave",
content_css : "example_advanced.css",
extended_valid_elements : "a[href|target|name]",
plugins : "table",
theme_advanced_buttons3_add_before : "tablecontrols,separator",
//invalid_elements : "a",
theme_advanced_styles : "Header 1=header1;Header 2=header2;Header 3=header3;Table Row=tableRow1", // Theme specific setting CSS classes
//execcommand_callback : "myCustomExecCommandHandler",
debug : false
});
// Custom event handler
function myCustomExecCommandHandler(editor_id, elm, command, user_interface, value) {
var linkElm, imageElm, inst;
switch (command) {
case "mceLink":
inst = tinyMCE.getInstanceById(editor_id);
linkElm = tinyMCE.getParentElement(inst.selection.getFocusElement(), "a");
if (linkElm)
alert("Link dialog has been overriden. Found link href: " + tinyMCE.getAttrib(linkElm, "href"));
else
alert("Link dialog has been overriden.");
return true;
case "mceImage":
inst = tinyMCE.getInstanceById(editor_id);
imageElm = tinyMCE.getParentElement(inst.selection.getFocusElement(), "img");
if (imageElm)
alert("Image dialog has been overriden. Found image src: " + tinyMCE.getAttrib(imageElm, "src"));
else
alert("Image dialog has been overriden.");
return true;
}
return false; // Pass to next handler in chain
}
// Custom save callback, gets called when the contents is to be submitted
function customSave(id, content) {
alert(id + "=" + content);
}
</script>
<!-- /tinyMCE -->
</head>
<body>
<a href="example_full.htm">[Full featured example]</a> [Advanced example] <a href="example_simple.htm">[Simple example]</a> <a href="example_word.htm">[Word example]</a>
<h3>Advanced example</h3>
This page shows a more complex usage of TinyMCE. On this page the mode is set to convert specific elements in this case a DIV element and a TEXTAREA into editor instances. The example below uses a custom CSS, thats why the text is red and it allso uses the &quot;advanced&quot; theme that includes more options than the default one. The code allso includes examples of custom call back functions and much more. Notice the submit button at the end of the page, this button triggers a save action. Read more about the features and possible settings of TinyMCE in the <a href="../docs/index.html">manual</a>.<br />
<br />
<!-- Form with textare element with width: 100% -->
<form method="post" action="http://tinymce.moxiecode.com/dump.php?example=true">
<textarea name="elm1" style="width:100%" rows="15">
Some &lt;b&gt;element&lt;/b&gt;, this is to be editor 1. &lt;br /&gt; This editor instance has a 100% width to it.
&lt;p&gt;Some paragraph. &lt;a href=&quot;http://www.sourceforge.net&quot;&gt;Some link&lt;/a&gt;&lt;/p&gt;
&lt;img src=&quot;logo.jpg&quot;&gt;
</textarea>
<br />
<input type="button" name="save" value="save" onclick="tinyMCE.triggerSave();" />
</form>
<!-- Div elements that gets to be a editor instance aswell -->
<div id="elm2" style="width:450px; height:250px">
Some <b>element</b>, this is to be editor 2. <br /> This editor instance is a DIV element instead of a textarea.
<p>Some paragraph. <a href="http://www.sourceforge.net">Some link</a></p>
<img src="logo.jpg" />
</div>
<br />
Some custom actions:
<a href="javascript:tinyMCE.execCommand('Bold');">[Bold]</a> |
<a href="javascript:tinyMCE.execCommand('Italic');">[Italic]</a>
<a href="javascript:void(0);" onclick="tinyMCE.execCommand('mceInsertContent',false,'<b>Hello world!!</b>');">[Insert some HTML]</a>
<a href="javascript:void(0);" onclick="tinyMCE.execCommand('mceReplaceContent',false,'<!-- comment --><b>{$selection}</b>');">[Replace selection]</a>
<br />
</body>
</html>
// This list may be created by a server logic page PHP/ASP/ASPX/JSP in some backend system.
// There flash movies will be displayed as a dropdown in all flash dialogs if the "flash_external_list_url"
// option is defined in TinyMCE init.
var tinyMCEFlashList = new Array(
// Name, URL
["Some Flash 1", "test1.swf"],
["Some Flash 2", "test2.swf"]
);
body {
background-color: #FFFFFF;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 10px;
scrollbar-3dlight-color: #F0F0EE;
scrollbar-arrow-color: #676662;
scrollbar-base-color: #F0F0EE;
scrollbar-darkshadow-color: #DDDDDD;
scrollbar-face-color: #E0E0DD;
scrollbar-highlight-color: #F0F0EE;
scrollbar-shadow-color: #F0F0EE;
scrollbar-track-color: #F5F5F5;
}
td {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 10px;
}
pre {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 10px;
}
.example1 {
font-weight: bold;
font-size: 14px
}
.example2 {
font-weight: bold;
font-size: 12px;
color: #FF0000
}
.tablerow1 {
background-color: #BBBBBB;
}
thead {
background-color: #FFBBBB;
}
tfoot {
background-color: #BBBBFF;
}
th {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 13px;
}
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Full featured example</title>
<!-- TinyMCE -->
<script language="javascript" type="text/javascript" src="../jscripts/tiny_mce/tiny_mce.js"></script>
<script language="javascript" type="text/javascript">
tinyMCE.init({
mode : "textareas",
theme : "advanced",
plugins : "style,layer,table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,flash,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable",
theme_advanced_buttons1_add_before : "save,newdocument,separator",
theme_advanced_buttons1_add : "fontselect,fontsizeselect",
theme_advanced_buttons2_add : "separator,insertdate,inserttime,preview,separator,forecolor,backcolor",
theme_advanced_buttons2_add_before: "cut,copy,paste,pastetext,pasteword,separator,search,replace,separator",
theme_advanced_buttons3_add_before : "tablecontrols,separator",
theme_advanced_buttons3_add : "emotions,iespell,flash,advhr,separator,print,separator,ltr,rtl,separator,fullscreen",
theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_path_location : "bottom",
content_css : "example_full.css",
plugin_insertdate_dateFormat : "%Y-%m-%d",
plugin_insertdate_timeFormat : "%H:%M:%S",
extended_valid_elements : "hr[class|width|size|noshade],font[face|size|color|style],span[class|align|style]",
external_link_list_url : "example_link_list.js",
external_image_list_url : "example_image_list.js",
flash_external_list_url : "example_flash_list.js",
file_browser_callback : "fileBrowserCallBack",
theme_advanced_resize_horizontal : false,
theme_advanced_resizing : true
});
function fileBrowserCallBack(field_name, url, type, win) {
// This is where you insert your custom filebrowser logic
alert("Example of filebrowser callback: field_name: " + field_name + ", url: " + url + ", type: " + type);
// Insert new URL, this would normaly be done in a popup
win.document.forms[0].elements[field_name].value = "someurl.htm";
}
</script>
<!-- /TinyMCE -->
</head>
<body>
[Full featured example] <a href="example_advanced.htm">[Advanced example]</a> <a href="example_simple.htm">[Simple example]</a> <a href="example_word.htm">[Word example]</a>
<form method="post" action="http://tinymce.moxiecode.com/dump.php?example=true">
<h3>Full featured example</h3>
This page shows all available plugins that are included in the TinyMCE distribution. Some of these plugins will only be visible on MSIE due to the lack of some support in FF. For more details on the various options on TinyMCE check the <a href="../docs/index.html">manual</a> or for more third party plugins check the plugin section.<br /><br />
<textarea id="elm1" name="elm1" rows="15" cols="80" style="width: 100%">
&lt;span class=&quot;example1&quot;&gt;Test header 1&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;example2&quot;&gt;Test header 2&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;example3&quot;&gt;Test header 3&lt;/span&gt;&lt;br /&gt;
Some &lt;b&gt;element&lt;/b&gt;, this is to be editor 1. &lt;br /&gt; This editor instance has a 100% width to it.
&lt;p&gt;Some paragraph. &lt;a href=&quot;http://www.sourceforge.net&quot;&gt;Some link&lt;/a&gt;&lt;/p&gt;
&lt;img src=&quot;logo.jpg&quot;&gt;
</textarea>
<br />
<input type="submit" name="save" value="Submit" />
<input type="reset" name="reset" value="Reset" />
</form>
</body>
</html>
// This list may be created by a server logic page PHP/ASP/ASPX/JSP in some backend system.
// There images will be displayed as a dropdown in all image dialogs if the "external_link_image_url"
// option is defined in TinyMCE init.
var tinyMCEImageList = new Array(
// Name, URL
["Logo 1", "logo.jpg"],
["Logo 2 Over", "logo_over.jpg"]
);
// This list may be created by a server logic page PHP/ASP/ASPX/JSP in some backend system.
// There links will be displayed as a dropdown in all link dialogs if the "external_link_list_url"
// option is defined in TinyMCE init.
var tinyMCELinkList = new Array(
// Name, URL
["Moxiecode", "http://www.moxiecode.com"],
["Freshmeat", "http://www.freshmeat.com"],
["Sourceforge", "http://www.sourceforge.com"]
);
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8" />
<title>Simple example</title>
<!-- tinyMCE -->
<script language="javascript" type="text/javascript" src="../jscripts/tiny_mce/tiny_mce.js"></script>
<script language="javascript" type="text/javascript">
// Notice: The simple theme does not use all options some of them are limited to the advanced theme
tinyMCE.init({
mode : "textareas",
theme : "simple"
});
</script>
<!-- /tinyMCE -->
</head>
<body>
<a href="example_full.htm">[Full featured example]</a> <a href="example_advanced.htm">[Advanced example]</a> [Simple example] <a href="example_word.htm">[Word example]</a>
<form method="post" action="http://tinymce.moxiecode.com/dump.php?example=true">
<h3>Simple example</h3>
This page shows how to use TinyMCE on a HTML page in the most common and simple way. On this page each TEXTAREA
element gets converted to a editor instance on page load. Notice how TinyMCE tries to match the width and height of the old text area elements. Read more about the features and settings of TinyMCE in the <a href="../docs/index.html">manual</a>.<br /><br />
<textarea id="elm1" name="elm1" rows="10" cols="40">
Some &lt;b&gt;element&lt;/b&gt;, this is to be editor 1.
&lt;p&gt;Some paragraph. &lt;a href=&quot;http://www.sourceforge.net&quot;&gt;Some link&lt;/a&gt;&lt;/p&gt;
&lt;img src=&quot;logo.jpg&quot;&gt;
</textarea>
<br />
<textarea id="elm2" name="elm2" rows="15" cols="32">
Some &lt;b&gt;element&lt;/b&gt;, this is to be editor 2.
&lt;p&gt;Some paragraph. &lt;a href=&quot;http://www.sourceforge.net&quot;&gt;Some link&lt;/a&gt;&lt;/p&gt;
&lt;img src=&quot;logo.jpg&quot;&gt;
</textarea>
<br />
<input type="submit" name="save" value="Submit" />
<input type="reset" name="reset" value="Reset" />
</form>
</body>
</html>
body {
background-color: #FFFFFF;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 10px;
scrollbar-3dlight-color: #F0F0EE;
scrollbar-arrow-color: #676662;
scrollbar-base-color: #F0F0EE;
scrollbar-darkshadow-color: #DDDDDD;
scrollbar-face-color: #E0E0DD;
scrollbar-highlight-color: #F0F0EE;
scrollbar-shadow-color: #F0F0EE;
scrollbar-track-color: #F5F5F5;
}
td {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 10px;
}
pre {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 10px;
}
.example1 {
font-weight: bold;
font-size: 14px
}
.example2 {
font-weight: bold;
font-size: 12px;
color: #FF0000
}
.tablerow1 {
background-color: #BBBBBB;
}
/* Fix for MS Office style paragraphs (MsoNormal) */
p {
margin: 0;
padding: 0;
}
/* Fix for MS Office unindeted lists */
.unIndentedList {
margin: 0;
padding: 0;
list-style-position: inside;
}
.unIndentedList li {
padding: 0;
}
/* Fix for MS Office UL lists */
ul {
margin-top: 0;
margin-bottom: 0;
}