<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.8.4" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>http://blog.sLajax.com</title>
	<link>http://blog.slajax.com</link>
	<description>secure lightweight ajax solutions</description>
	<pubDate>Wed, 16 Dec 2009 07:39:40 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
			<item>
		<title>Introducing sLabFx alpha</title>
		<link>http://blog.slajax.com/2008/08/29/introducing-slabfx-beta/</link>
        <customfield>../uploads/2008/08/slabfx.jpg</customfield>
		<comments>http://blog.slajax.com/2008/08/29/introducing-slabfx-beta/#comments</comments>
		<pubDate>Fri, 29 Aug 2008 17:09:16 +0000</pubDate>
		<dc:creator>Kyle</dc:creator>
				<category><![CDATA[applications]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[mootools]]></category>
		<category><![CDATA[widgets]]></category>
		<category><![CDATA[downloads]]></category>
		<category><![CDATA[effects]]></category>
		<category><![CDATA[scripts]]></category>

		<guid isPermaLink="false">http://blog.slajax.com/?p=55</guid>
		<description><![CDATA[ [1]
Recently in my job at Blast Radius [2] I have been exposed to abstracted control methods. In my interview Loyal asked me if I know what &#34;inversion of control&#34; was. I assumed it was the opposite of version control, and we had a laugh. It so happens that inversion of control [3] is a very interesting concept that fits really well into my favorite javascript Mootools [4]. With this new concept in mind, I decided I would finally write a new plugin for mootools. It's been a while since I wrote anything [5] that anyone cared to download or comment on, so I thought I'd give this concept a go and see how people respond to it.

The plugin is called sLabFx and here is the Demo [6]. 

Basically it's a set of classes that when called, will reference a configuration file, preload and bind a set of motion effects and events, then fire them in which every timeline sequece you can event. The benefit to this plugin is that you can write highly animated effects without ever having to edit the actual code. You have a simple JSON configuration file that you structure to include all of your fx and chains, which essentially serves as sort of a timeline (like flash) for your application. 

So with that said, I am interested to hear what developers think, could this be useful if it were packaged with a javascript timeline application which allows the JSON config to be generated dynamically? All the sudden, we have a flash like javascript app on our hands. 

Please leave a comment with your thoughts!

[1] http://lab.slajax.com/sLabFx
[2] http://blastradius.com
[3] http://en.wikipedia.org/wiki/Inversion_of_control
[4] http://mootools.net
[5] http://blog.slajax.com/2007/04/26/mooedit-v-1/
[6] http://lab.slajax.com/sLabFx]]></description>
			<content:encoded><![CDATA[<center><a href="http://lab.slajax.com/sLabFx"><img height="71" width="300" alt="" src="http://blog.slajax.com/wp-content/uploads/2008/08/slabfx-300x71.jpg" title="slabfx" class="size-medium wp-image-57 alignright" /></a></center>
<p style="text-align: left;">Recently in my job at <a target="_blank" href="http://blastradius.com">Blast Radius</a> I have been exposed to abstracted control methods. In my interview Loyal asked me if I know what &quot;inversion of control&quot; was. I assumed it was the opposite of version control, and we had a laugh. It so happens that <a target="_blank" href="http://en.wikipedia.org/wiki/Inversion_of_control">inversion of control</a> is a very interesting concept that fits really well into my favorite javascript <a target="_blank" href="http://mootools.net">Mootools</a>. With this new concept in mind, I decided I would finally write a new plugin for mootools. It&#8217;s been a while since I wrote <a target="_blank" href="http://blog.slajax.com/2007/04/26/mooedit-v-1/">anything</a> that anyone cared to download or comment on, so I thought I&#8217;d give this concept a go and see how people respond to it.</p>
<p><br />
The plugin is called <strong>sLabFx</strong> and here is the <a target="_blank" href="http://lab.slajax.com/sLabFx">Demo</a>. <br />
<br />
Basically it&#8217;s a set of classes that when called, will reference a configuration file, preload and bind a set of motion effects and events, then fire them in which every timeline sequece you can event. The benefit to this plugin is that you can write highly animated effects without ever having to edit the actual code. You have a simple JSON configuration file that you structure to include all of your fx and chains, which essentially serves as sort of a timeline (like flash) for your application. <br />
<br />
So with that said, I am interested to hear what developers think, could this be useful if it were packaged with a javascript timeline application which allows the JSON config to be generated dynamically? All the sudden, we have a flash like javascript app on our hands. <br />
<br />
Please leave a comment with your thoughts!</p>]]></content:encoded>
			<wfw:commentRss>http://blog.slajax.com/2008/08/29/introducing-slabfx-beta/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Mushroom Life</title>
		<link>http://blog.slajax.com/2008/02/14/mushroom-life/</link>
        <customfield></customfield>
		<comments>http://blog.slajax.com/2008/02/14/mushroom-life/#comments</comments>
		<pubDate>Fri, 15 Feb 2008 02:21:01 +0000</pubDate>
		<dc:creator>Kyle</dc:creator>
				<category><![CDATA[applications]]></category>
		<category><![CDATA[other]]></category>
		<category><![CDATA[stumbled upon]]></category>
		<category><![CDATA[widgets]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[mushrooms]]></category>

		<guid isPermaLink="false">http://blog.slajax.com/2008/02/14/mushroom-life/</guid>
		<description><![CDATA[Mushroom Life [1] is a very interesting flash application that requires a lot of clicking. The application shows a very nicely laid out 3d area that when you click mushrooms grow. However, there are rules to this game as follows:


For each generation,
a mushroom with 1 or 0 neighbor dies (loneliness),
a mushroom with 4 or more neighbors dies (overcrowding),
a mushroom with 2 or 3 neighbors survives (stability),
an empty space with 3 neighbors sprouts a new mushroom (birth). 

Try it out, see how much mush you can make.

[1] http://a.parsons.edu/~joseph/k2/gameoflife/]]></description>
			<content:encoded><![CDATA[<a href="http://a.parsons.edu/~joseph/k2/gameoflife/">Mushroom Life</a> is a very interesting flash application that requires a lot of clicking. The application shows a very nicely laid out 3d area that when you click mushrooms grow. However, there are rules to this game as follows:


For each generation,
a mushroom with 1 or 0 neighbor dies (loneliness),
a mushroom with 4 or more neighbors dies (overcrowding),
a mushroom with 2 or 3 neighbors survives (stability),
an empty space with 3 neighbors sprouts a new mushroom (birth). 

Try it out, see how much mush you can make.]]></content:encoded>
			<wfw:commentRss>http://blog.slajax.com/2008/02/14/mushroom-life/feed/</wfw:commentRss>
		</item>
		<item>
		<title>sLedit (mooEdit) v1</title>
		<link>http://blog.slajax.com/2007/04/26/mooedit-v-1/</link>
        <customfield>sLedit.gif</customfield>
		<comments>http://blog.slajax.com/2007/04/26/mooedit-v-1/#comments</comments>
		<pubDate>Thu, 26 Apr 2007 13:56:53 +0000</pubDate>
		<dc:creator>Kyle</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[mootools]]></category>
		<category><![CDATA[widgets]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[mooedit]]></category>
		<category><![CDATA[source code]]></category>

		<guid isPermaLink="false">http://slajax.com/blog/2007/04/26/mooedit-sledit-v-10/</guid>
		<description><![CDATA[I've had a lot of requests to send people mooEdit. Thing is, that I'm way to lazy to package the whole thing. So I'm just going to post the source here, and let you figure it out. It's pretty easy, I'm sure you can do it. Oh yeah, and if anything is wrong with this code, let me know. I kinda just threw the image portion in really quickly without testing. It came from version 2 and should be backwards compatible, but there's always that chance that I missed something.

//////////////////////////////////////////////////////////////////////////////////////////////////
/*  sLedit v1.0 - 3:35 PM 29/03/2007
//////////////////////////////////////////////////////////////////////////////////////////////////
@author: kc@slajax.com
@description: First version of sLedit. Makes all element of a class conditionally editable.
*/
//////////////////////////////////////////////////////////////////////////////////////////////////
// init options - edit these for your purposes
//////////////////////////////////////////////////////////////////////////////////////////////////
window.addEvent('domready', function(){
var edit = new sLedit('.sLedit');
});
//////////////////////////////////////////////////////////////////////////////////////////////////
// class - no editing below this line
//////////////////////////////////////////////////////////////////////////////////////////////////
tinyMCE.init({
mode : "",
theme : "advanced",
plugins : "",
theme_advanced_buttons1 : "bold,italic,underline,separator,strikethrough,justifyleft,justifycenter,justifyright, justifyfull,bullist,numlist,undo,redo,link,unlink,&#124;,image",
theme_advanced_buttons2 : "",
theme_advanced_buttons3 : "",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_path_location : "bottom",
extended_valid_elements : "a[name&#124;href&#124;target&#124;title&#124;onclick],img[class&#124;src&#124;border=0&#124;alt&#124;title&#124;hspace&#124;vspace&#124;width&#124;height&#124;align&#124;onmouseover&#124;onmouseout&#124;name],hr[class&#124;width&#124;size&#124;noshade],font[face&#124;size&#124;color&#124;style],span[class&#124;align&#124;style]",
file_browser_callback : "fileBrowserCallBack",
paste_use_dialog : false,
theme_advanced_resizing : true,
theme_advanced_resize_horizontal : false,
apply_source_formatting : false
});
function fileBrowserCallBack(field_name, url, type, win) {
var connector = "../../filemanager/browser.html?Connector=connectors/php/connector.php";
var enableAutoTypeSelection = true;
var cType;
tinymcpuk_field = field_name;
tinymcpuk = win;
switch (type) {
case "image":
cType = "Image";
break;
case "flash":
cType = "Flash";
break;
case "file":
cType = "File";
break;
}
if (enableAutoTypeSelection &#38;&#38; cType) {	connector += "&#38;Type=" + cType;	}
window.open(connector, "tinymcpuk", "modal,width=600,height=400");
}


var sLedit = new Class({
initialize: function(sLclass) {
//start editor

$$(sLclass).each(function(el) {

var hilighter = new Fx.Style(el, 'background-color', {wait: false});

$(el).addEvent('mouseover', function() {
hilighter.start('#ffffcc');
});

$(el).addEvent('mouseout', function() {
hilighter.start('#ffffff');
});

if($(el).getProperty('rel').indexOf('textarea') &#62; -1){

$(el).addEvent('click', function() {

var rel = $(el).getProperty('rel');
var params = parseQuery(rel.substr(5,999));

$(el).style.display = 'none';
var content = this.innerHTML;
var container = new Element('div').injectAfter(el);

//check params are suitable or set base attributes
if(params['rows'] == undefined)	params['rows'] = '15';
if(params['cols'] == undefined) params['cols'] = '65';

var txtID = 'mce_'+$(el).getProperty('id');

//textarea
var textarea = new Element('textarea').injectInside(container);
textarea.value = content;
textarea.setProperty('class', 'mceEditor');
textarea.setProperty('id', txtID);
textarea.setStyle('position','relative');
textarea.setProperties({
rows: params['rows'],
cols: params['cols']
});

setTextareaToTinyMCE(txtID);

//save + cancel div
var saveDiv = new Element('div').injectInside(container);
saveDiv.setProperty('class', 'txtAreaSave');

//cancel
var cancel = new Element('a').injectInside(saveDiv);
cancel.setProperty('href', 'javascript:;');
cancel.innerHTML = 'cancel';

//seperator
var span = new Element('span').injectAfter(cancel);
span.innerHTML = ' - ';

//save
var save = new Element('a').injectInside(saveDiv);
save.setProperty('href', 'javascript:;');
save.innerHTML = 'save';

//response
var response = new Element('div').injectBefore(saveDiv);
response.setStyles({'width':'600px'});
response.id = 'txtReponse';

save.addEvent('click', function() {
unsetTextareaToTinyMCE(txtID);
$(el).style.display = 'block';
$(el).innerHTML = textarea.value;

//values
var rel = $(el).getProperty('rel');
var params = parseQuery(rel.substr(5,999));
var url = '/ajax/update.php';
var pars = 'module_type='+params['module_type']
+'&#38;type_sid='+params['type_sid']
+'&#38;sid='+params['sid']
+'&#38;content='+escape(textarea.value);

new Ajax( url, {
method: 'post',
postBody: pars,
update: $('txtReponse'),
onComplete: function(){
var responseFade = new Fx.Style('txtReponse', 'opacity', {
duration:3000,
onComplete:function(){
$('txtReponse').remove();
}
});
responseFade.start.pass([1,0],responseFade).delay(2000);
}
}
).request();

textarea.remove();
this.remove();
cancel.remove();
span.remove();
saveDiv.remove();
});

cancel.addEvent('click', function() {
unsetTextareaToTinyMCE(txtID);
$(el).style.display = 'block';
textarea.remove();
this.remove();
save.remove();
span.remove();
saveDiv.remove();
});

});
}
if($(el).getProperty('rel') == 'input'){
$(el).addEvent('click', function() {
$(el).style.display = 'none';

var content = this.innerHTML;
var container = this.parentNode;

//input
var textarea = new Element('input').injectInside(container);
textarea.value = content;
textarea.setProperty('size',5);

//save + cancel div
var saveDiv = new Element('span').injectInside(container);
saveDiv.setProperty('class', 'inputSave');

//cancel
var cancel = new Element('a').injectInside(saveDiv);
cancel.setProperty('href', 'javascript:;');
cancel.innerHTML = 'x';

//seperator
var span = new Element('span').injectAfter(cancel);
span.innerHTML = ' - ';

//save
var save = new Element('a').injectInside(saveDiv);
save.setProperty('href', 'javascript:;');
save.innerHTML = 's';

save.addEvent('click', function() {
$(el).style.display = 'block';
$(el).innerHTML = textarea.value;

/* new Ajax() */
textarea.remove();
this.remove();
cancel.remove();
span.remove();
saveDiv.remove();
});
cancel.addEvent('click', function() {
$(el).style.display = 'block';
textarea.remove();
this.remove();
save.remove();
span.remove();
saveDiv.remove();
});
});
}
if($(el).getProperty('rel').indexOf('image') &#62; -1){

var rel = $(el).getProperty('rel');
var params = parseQuery(rel.substr(5,999));
$(el).style.cursor = 'pointer';
if( $(el).getParent().getParent().href ) $(el).getParent().getParent().href = '#';
if( $(el).getParent().href ) $(el).getParent().href = '#';

$(el).addEvent('click', function() {

var imgForm = new Element('form').setProperties({
'action': '/ajax/update.php',
'method': 'post',
'id': 'newImageForm',
'enctype':'multipart/form-data'
});
imgForm.setStyles({ 'text-align':'left' });
imgForm.innerHTML = '

'
+'

'
+' '
+' '
+'Alt Tag: '
+'File to Upload:
';var boxHtml = new MooPrompt('Upload a New Image', imgForm, {
buttons: 2,
button1: 'Submit',
button2: 'Cancel',
width: 500,
height: 400,
onButton1: function() {
console.log($('userimage').value.length &#62; 0)
if( $('userimage').value.length &#60; 1 &#124;&#124;
$('userimage').value.length &#62; 0 &#38;&#38;
$('userimage').value.indexOf('.jpg') &#62; -1)
$('newImageForm').submit();
else
alert('Please only upload .jpg files');
}
});
});
}
});}
});
//////////////////////////////////////////////////////////////////////////
// TinyMCE helper functions
//////////////////////////////////////////////////////////////////////////
bTextareaWasTinyfied = false; //this should be global, could be stored in a cookie...
function setTextareaToTinyMCE(sEditorID) {
var oEditor = document.getElementById(sEditorID);
if(oEditor &#38;&#38; !bTextareaWasTinyfied) {
tinyMCE.execCommand('mceAddControl', true, sEditorID);
bTextareaWasTinyfied = true;
}
return;
}
function unsetTextareaToTinyMCE(sEditorID) {
var oEditor = document.getElementById(sEditorID);
if(oEditor &#38;&#38; bTextareaWasTinyfied) {
tinyMCE.execCommand('mceRemoveControl', true, sEditorID);
bTextareaWasTinyfied = false;
}
return;
}
//////////////////////////////////////////////////////////////////////////
// parseQuery code borrowed from ibox borrowed from thickbox, Thanks Cody!
// retrieve rel attributes with cols=x&#38;rows=x
//////////////////////////////////////////////////////////////////////////
parseQuery = function(query) {
var Params = new Object ();
if (!query) return Params;
var Pairs = query.split(/[;&#38;]/);
for ( var i = 0; i &#60; Pairs.length; i++ ) {
var KeyVal = Pairs[i].split('=');
if ( ! KeyVal &#124;&#124; KeyVal.length != 2 ) continue;
var key = unescape( KeyVal[0] );
var val = unescape( KeyVal[1] );
val = val.replace(/\+/g, ' ');
Params[key] = val;
}
return Params;
}


So the whole idea, is that you initiate the class at the bottom of the page, and it loops through all class elements applying a conditional editable feature to that element. I decided to add image editing via moo Prompt [1] so make sure you get that script too. You'll also need tinymce for this version (tinypuk support also included).

Ok, now for practical examples so I'm not answering emails about this:









Now for the different editable areas:


Image:

TextArea:
TEXTTEXTTEXT
input field:
TEXTTEXTTEXT


And then just run the class:


window.onload = function(){
new sLedit(".sLedit");
};


And that should pretty much do it. It's a fairly simple but unrevised script. I've done some new variations of it, however those will remain closed source for a while. I was thinking of putting up demos for the image and input fields, but for now I'll just give you the textarea example:



Download the source code here [2]

[1] http://demo.slajax.com/mooPrompt
[2] http://assets.slajax.com/filestore/code/sLedit.v1.rar]]></description>
			<content:encoded><![CDATA[I&#8217;ve had a lot of requests to send people mooEdit. Thing is, that I&#8217;m way to lazy to package the whole thing. So I&#8217;m just going to post the source here, and let you figure it out. It&#8217;s pretty easy, I&#8217;m sure you can do it. Oh yeah, and if anything is wrong with this code, let me know. I kinda just threw the image portion in really quickly without testing. It came from version 2 and should be backwards compatible, but there&#8217;s always that chance that I missed something.
<div class='codeWrapper'><div class='codeTitle'>javascript<span class='codeInstruct'>hover edges to scroll</span></div><code><pre>&nbsp;
<span style="color: #009900; font-style: italic;">//////////////////////////////////////////////////////////////////////////////////////////////////</span>
<span style="color: #009900; font-style: italic;">/*  sLedit v1.0 - 3:35 PM 29/03/2007
//////////////////////////////////////////////////////////////////////////////////////////////////
@author: kc@slajax.com
@description: First version of sLedit. Makes all element of a class conditionally editable.
*/</span>
<span style="color: #009900; font-style: italic;">//////////////////////////////////////////////////////////////////////////////////////////////////</span>
<span style="color: #009900; font-style: italic;">// init options - edit these for your purposes</span>
<span style="color: #009900; font-style: italic;">//////////////////////////////////////////////////////////////////////////////////////////////////</span>
window.<span style="color: #006600;">addEvent</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'domready'</span>, <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
<span style="color: #003366; font-weight: bold;">var</span> edit = <span style="color: #003366; font-weight: bold;">new</span> sLedit<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'.sLedit'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #009900; font-style: italic;">//////////////////////////////////////////////////////////////////////////////////////////////////</span>
<span style="color: #009900; font-style: italic;">// class - no editing below this line</span>
<span style="color: #009900; font-style: italic;">//////////////////////////////////////////////////////////////////////////////////////////////////</span>
tinyMCE.<span style="color: #006600;">init</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#123;</span>
mode : <span style="color: #3366CC;">""</span>,
theme : <span style="color: #3366CC;">"advanced"</span>,
plugins : <span style="color: #3366CC;">""</span>,
theme_advanced_buttons1 : <span style="color: #3366CC;">"bold,italic,underline,separator,strikethrough,justifyleft,justifycenter,justifyright, justifyfull,bullist,numlist,undo,redo,link,unlink,|,image"</span>,
theme_advanced_buttons2 : <span style="color: #3366CC;">""</span>,
theme_advanced_buttons3 : <span style="color: #3366CC;">""</span>,
theme_advanced_toolbar_location : <span style="color: #3366CC;">"top"</span>,
theme_advanced_toolbar_align : <span style="color: #3366CC;">"left"</span>,
theme_advanced_path_location : <span style="color: #3366CC;">"bottom"</span>,
extended_valid_elements : <span style="color: #3366CC;">"a[name|href|target|title|onclick],img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name],hr[class|width|size|noshade],font[face|size|color|style],span[class|align|style]"</span>,
file_browser_callback : <span style="color: #3366CC;">"fileBrowserCallBack"</span>,
paste_use_dialog : <span style="color: #003366; font-weight: bold;">false</span>,
theme_advanced_resizing : <span style="color: #003366; font-weight: bold;">true</span>,
theme_advanced_resize_horizontal : <span style="color: #003366; font-weight: bold;">false</span>,
apply_source_formatting : <span style="color: #003366; font-weight: bold;">false</span>
<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #003366; font-weight: bold;">function</span> fileBrowserCallBack<span style="color: #66cc66;">&#40;</span>field_name, url, type, win<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
<span style="color: #003366; font-weight: bold;">var</span> connector = <span style="color: #3366CC;">"../../filemanager/browser.html?Connector=connectors/php/connector.php"</span>;
<span style="color: #003366; font-weight: bold;">var</span> enableAutoTypeSelection = <span style="color: #003366; font-weight: bold;">true</span>;
<span style="color: #003366; font-weight: bold;">var</span> cType;
tinymcpuk_field = field_name;
tinymcpuk = win;
<span style="color: #000066; font-weight: bold;">switch</span> <span style="color: #66cc66;">&#40;</span>type<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
<span style="color: #000066; font-weight: bold;">case</span> <span style="color: #3366CC;">"image"</span>:
cType = <span style="color: #3366CC;">"Image"</span>;
<span style="color: #000066; font-weight: bold;">break</span>;
<span style="color: #000066; font-weight: bold;">case</span> <span style="color: #3366CC;">"flash"</span>:
cType = <span style="color: #3366CC;">"Flash"</span>;
<span style="color: #000066; font-weight: bold;">break</span>;
<span style="color: #000066; font-weight: bold;">case</span> <span style="color: #3366CC;">"file"</span>:
cType = <span style="color: #3366CC;">"File"</span>;
<span style="color: #000066; font-weight: bold;">break</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #66cc66;">&#40;</span>enableAutoTypeSelection &amp;amp;&amp;amp; cType<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>	connector += <span style="color: #3366CC;">"&amp;amp;Type="</span> + cType;	<span style="color: #66cc66;">&#125;</span>
window.<span style="color: #006600;">open</span><span style="color: #66cc66;">&#40;</span>connector, <span style="color: #3366CC;">"tinymcpuk"</span>, <span style="color: #3366CC;">"modal,width=600,height=400"</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></code></div>

<div class='codeWrapper'><div class='codeTitle'>javascript<span class='codeInstruct'>hover edges to scroll</span></div><code><pre>&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> sLedit = <span style="color: #003366; font-weight: bold;">new</span> <span style="color: #003366; font-weight: bold;">Class</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#123;</span>
initialize: <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span>sLclass<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
<span style="color: #009900; font-style: italic;">//start editor</span>
&nbsp;
$$<span style="color: #66cc66;">&#40;</span>sLclass<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">each</span><span style="color: #66cc66;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span>el<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> hilighter = <span style="color: #003366; font-weight: bold;">new</span> Fx.<span style="color: #006600;">Style</span><span style="color: #66cc66;">&#40;</span>el, <span style="color: #3366CC;">'background-color'</span>, <span style="color: #66cc66;">&#123;</span>wait: <span style="color: #003366; font-weight: bold;">false</span><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
$<span style="color: #66cc66;">&#40;</span>el<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">addEvent</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'mouseover'</span>, <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
hilighter.<span style="color: #006600;">start</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'#ffffcc'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
$<span style="color: #66cc66;">&#40;</span>el<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">addEvent</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'mouseout'</span>, <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
hilighter.<span style="color: #006600;">start</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'#ffffff'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #000066; font-weight: bold;">if</span><span style="color: #66cc66;">&#40;</span>$<span style="color: #66cc66;">&#40;</span>el<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">getProperty</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'rel'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">indexOf</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'textarea'</span><span style="color: #66cc66;">&#41;</span> &amp;gt; -<span style="color: #CC0000;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
&nbsp;
$<span style="color: #66cc66;">&#40;</span>el<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">addEvent</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'click'</span>, <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> rel = $<span style="color: #66cc66;">&#40;</span>el<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">getProperty</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'rel'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #003366; font-weight: bold;">var</span> params = parseQuery<span style="color: #66cc66;">&#40;</span>rel.<span style="color: #006600;">substr</span><span style="color: #66cc66;">&#40;</span><span style="color: #CC0000;">5</span>,<span style="color: #CC0000;">999</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
$<span style="color: #66cc66;">&#40;</span>el<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">style</span>.<span style="color: #006600;">display</span> = <span style="color: #3366CC;">'none'</span>;
<span style="color: #003366; font-weight: bold;">var</span> content = <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #006600;">innerHTML</span>;
<span style="color: #003366; font-weight: bold;">var</span> container = <span style="color: #003366; font-weight: bold;">new</span> Element<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'div'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">injectAfter</span><span style="color: #66cc66;">&#40;</span>el<span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #009900; font-style: italic;">//check params are suitable or set base attributes</span>
<span style="color: #000066; font-weight: bold;">if</span><span style="color: #66cc66;">&#40;</span>params<span style="color: #66cc66;">&#91;</span><span style="color: #3366CC;">'rows'</span><span style="color: #66cc66;">&#93;</span> == undefined<span style="color: #66cc66;">&#41;</span>	params<span style="color: #66cc66;">&#91;</span><span style="color: #3366CC;">'rows'</span><span style="color: #66cc66;">&#93;</span> = <span style="color: #3366CC;">'15'</span>;
<span style="color: #000066; font-weight: bold;">if</span><span style="color: #66cc66;">&#40;</span>params<span style="color: #66cc66;">&#91;</span><span style="color: #3366CC;">'cols'</span><span style="color: #66cc66;">&#93;</span> == undefined<span style="color: #66cc66;">&#41;</span> params<span style="color: #66cc66;">&#91;</span><span style="color: #3366CC;">'cols'</span><span style="color: #66cc66;">&#93;</span> = <span style="color: #3366CC;">'65'</span>;
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> txtID = <span style="color: #3366CC;">'mce_'</span>+$<span style="color: #66cc66;">&#40;</span>el<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">getProperty</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'id'</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #009900; font-style: italic;">//textarea</span>
<span style="color: #003366; font-weight: bold;">var</span> textarea = <span style="color: #003366; font-weight: bold;">new</span> Element<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'textarea'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">injectInside</span><span style="color: #66cc66;">&#40;</span>container<span style="color: #66cc66;">&#41;</span>;
textarea.<span style="color: #006600;">value</span> = content;
textarea.<span style="color: #006600;">setProperty</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'class'</span>, <span style="color: #3366CC;">'mceEditor'</span><span style="color: #66cc66;">&#41;</span>;
textarea.<span style="color: #006600;">setProperty</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'id'</span>, txtID<span style="color: #66cc66;">&#41;</span>;
textarea.<span style="color: #006600;">setStyle</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'position'</span>,<span style="color: #3366CC;">'relative'</span><span style="color: #66cc66;">&#41;</span>;
textarea.<span style="color: #006600;">setProperties</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#123;</span>
rows: params<span style="color: #66cc66;">&#91;</span><span style="color: #3366CC;">'rows'</span><span style="color: #66cc66;">&#93;</span>,
cols: params<span style="color: #66cc66;">&#91;</span><span style="color: #3366CC;">'cols'</span><span style="color: #66cc66;">&#93;</span>
<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
setTextareaToTinyMCE<span style="color: #66cc66;">&#40;</span>txtID<span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #009900; font-style: italic;">//save + cancel div</span>
<span style="color: #003366; font-weight: bold;">var</span> saveDiv = <span style="color: #003366; font-weight: bold;">new</span> Element<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'div'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">injectInside</span><span style="color: #66cc66;">&#40;</span>container<span style="color: #66cc66;">&#41;</span>;
saveDiv.<span style="color: #006600;">setProperty</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'class'</span>, <span style="color: #3366CC;">'txtAreaSave'</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #009900; font-style: italic;">//cancel</span>
<span style="color: #003366; font-weight: bold;">var</span> cancel = <span style="color: #003366; font-weight: bold;">new</span> Element<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'a'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">injectInside</span><span style="color: #66cc66;">&#40;</span>saveDiv<span style="color: #66cc66;">&#41;</span>;
cancel.<span style="color: #006600;">setProperty</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'href'</span>, <span style="color: #3366CC;">'javascript:;'</span><span style="color: #66cc66;">&#41;</span>;
cancel.<span style="color: #006600;">innerHTML</span> = <span style="color: #3366CC;">'cancel'</span>;
&nbsp;
<span style="color: #009900; font-style: italic;">//seperator</span>
<span style="color: #003366; font-weight: bold;">var</span> span = <span style="color: #003366; font-weight: bold;">new</span> Element<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'span'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">injectAfter</span><span style="color: #66cc66;">&#40;</span>cancel<span style="color: #66cc66;">&#41;</span>;
span.<span style="color: #006600;">innerHTML</span> = <span style="color: #3366CC;">' - '</span>;
&nbsp;
<span style="color: #009900; font-style: italic;">//save</span>
<span style="color: #003366; font-weight: bold;">var</span> save = <span style="color: #003366; font-weight: bold;">new</span> Element<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'a'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">injectInside</span><span style="color: #66cc66;">&#40;</span>saveDiv<span style="color: #66cc66;">&#41;</span>;
save.<span style="color: #006600;">setProperty</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'href'</span>, <span style="color: #3366CC;">'javascript:;'</span><span style="color: #66cc66;">&#41;</span>;
save.<span style="color: #006600;">innerHTML</span> = <span style="color: #3366CC;">'save'</span>;
&nbsp;
<span style="color: #009900; font-style: italic;">//response</span>
<span style="color: #003366; font-weight: bold;">var</span> response = <span style="color: #003366; font-weight: bold;">new</span> Element<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'div'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">injectBefore</span><span style="color: #66cc66;">&#40;</span>saveDiv<span style="color: #66cc66;">&#41;</span>;
response.<span style="color: #006600;">setStyles</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#123;</span><span style="color: #3366CC;">'width'</span>:<span style="color: #3366CC;">'600px'</span><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;
response.<span style="color: #006600;">id</span> = <span style="color: #3366CC;">'txtReponse'</span>;
&nbsp;
save.<span style="color: #006600;">addEvent</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'click'</span>, <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
unsetTextareaToTinyMCE<span style="color: #66cc66;">&#40;</span>txtID<span style="color: #66cc66;">&#41;</span>;
$<span style="color: #66cc66;">&#40;</span>el<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">style</span>.<span style="color: #006600;">display</span> = <span style="color: #3366CC;">'block'</span>;
$<span style="color: #66cc66;">&#40;</span>el<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">innerHTML</span> = textarea.<span style="color: #006600;">value</span>;
&nbsp;
<span style="color: #009900; font-style: italic;">//values</span>
<span style="color: #003366; font-weight: bold;">var</span> rel = $<span style="color: #66cc66;">&#40;</span>el<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">getProperty</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'rel'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #003366; font-weight: bold;">var</span> params = parseQuery<span style="color: #66cc66;">&#40;</span>rel.<span style="color: #006600;">substr</span><span style="color: #66cc66;">&#40;</span><span style="color: #CC0000;">5</span>,<span style="color: #CC0000;">999</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #003366; font-weight: bold;">var</span> url = <span style="color: #3366CC;">'/ajax/update.php'</span>;
<span style="color: #003366; font-weight: bold;">var</span> pars = <span style="color: #3366CC;">'module_type='</span>+params<span style="color: #66cc66;">&#91;</span><span style="color: #3366CC;">'module_type'</span><span style="color: #66cc66;">&#93;</span>
+<span style="color: #3366CC;">'&amp;amp;type_sid='</span>+params<span style="color: #66cc66;">&#91;</span><span style="color: #3366CC;">'type_sid'</span><span style="color: #66cc66;">&#93;</span>
+<span style="color: #3366CC;">'&amp;amp;sid='</span>+params<span style="color: #66cc66;">&#91;</span><span style="color: #3366CC;">'sid'</span><span style="color: #66cc66;">&#93;</span>
+<span style="color: #3366CC;">'&amp;amp;content='</span>+escape<span style="color: #66cc66;">&#40;</span>textarea.<span style="color: #006600;">value</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #003366; font-weight: bold;">new</span> Ajax<span style="color: #66cc66;">&#40;</span> url, <span style="color: #66cc66;">&#123;</span>
method: <span style="color: #3366CC;">'post'</span>,
postBody: pars,
update: $<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'txtReponse'</span><span style="color: #66cc66;">&#41;</span>,
onComplete: <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
<span style="color: #003366; font-weight: bold;">var</span> responseFade = <span style="color: #003366; font-weight: bold;">new</span> Fx.<span style="color: #006600;">Style</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'txtReponse'</span>, <span style="color: #3366CC;">'opacity'</span>, <span style="color: #66cc66;">&#123;</span>
duration:<span style="color: #CC0000;">3000</span>,
onComplete:<span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
$<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'txtReponse'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">remove</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;
responseFade.<span style="color: #006600;">start</span>.<span style="color: #006600;">pass</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#91;</span><span style="color: #CC0000;">1</span>,<span style="color: #CC0000;">0</span><span style="color: #66cc66;">&#93;</span>,responseFade<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">delay</span><span style="color: #66cc66;">&#40;</span><span style="color: #CC0000;">2000</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">request</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
textarea.<span style="color: #006600;">remove</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #006600;">remove</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
cancel.<span style="color: #006600;">remove</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
span.<span style="color: #006600;">remove</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
saveDiv.<span style="color: #006600;">remove</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
cancel.<span style="color: #006600;">addEvent</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'click'</span>, <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
unsetTextareaToTinyMCE<span style="color: #66cc66;">&#40;</span>txtID<span style="color: #66cc66;">&#41;</span>;
$<span style="color: #66cc66;">&#40;</span>el<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">style</span>.<span style="color: #006600;">display</span> = <span style="color: #3366CC;">'block'</span>;
textarea.<span style="color: #006600;">remove</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #006600;">remove</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
save.<span style="color: #006600;">remove</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
span.<span style="color: #006600;">remove</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
saveDiv.<span style="color: #006600;">remove</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #000066; font-weight: bold;">if</span><span style="color: #66cc66;">&#40;</span>$<span style="color: #66cc66;">&#40;</span>el<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">getProperty</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'rel'</span><span style="color: #66cc66;">&#41;</span> == <span style="color: #3366CC;">'input'</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
$<span style="color: #66cc66;">&#40;</span>el<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">addEvent</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'click'</span>, <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
$<span style="color: #66cc66;">&#40;</span>el<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">style</span>.<span style="color: #006600;">display</span> = <span style="color: #3366CC;">'none'</span>;
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> content = <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #006600;">innerHTML</span>;
<span style="color: #003366; font-weight: bold;">var</span> container = <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #006600;">parentNode</span>;
&nbsp;
<span style="color: #009900; font-style: italic;">//input</span>
<span style="color: #003366; font-weight: bold;">var</span> textarea = <span style="color: #003366; font-weight: bold;">new</span> Element<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'input'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">injectInside</span><span style="color: #66cc66;">&#40;</span>container<span style="color: #66cc66;">&#41;</span>;
textarea.<span style="color: #006600;">value</span> = content;
textarea.<span style="color: #006600;">setProperty</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'size'</span>,<span style="color: #CC0000;">5</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #009900; font-style: italic;">//save + cancel div</span>
<span style="color: #003366; font-weight: bold;">var</span> saveDiv = <span style="color: #003366; font-weight: bold;">new</span> Element<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'span'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">injectInside</span><span style="color: #66cc66;">&#40;</span>container<span style="color: #66cc66;">&#41;</span>;
saveDiv.<span style="color: #006600;">setProperty</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'class'</span>, <span style="color: #3366CC;">'inputSave'</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #009900; font-style: italic;">//cancel</span>
<span style="color: #003366; font-weight: bold;">var</span> cancel = <span style="color: #003366; font-weight: bold;">new</span> Element<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'a'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">injectInside</span><span style="color: #66cc66;">&#40;</span>saveDiv<span style="color: #66cc66;">&#41;</span>;
cancel.<span style="color: #006600;">setProperty</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'href'</span>, <span style="color: #3366CC;">'javascript:;'</span><span style="color: #66cc66;">&#41;</span>;
cancel.<span style="color: #006600;">innerHTML</span> = <span style="color: #3366CC;">'x'</span>;
&nbsp;
<span style="color: #009900; font-style: italic;">//seperator</span>
<span style="color: #003366; font-weight: bold;">var</span> span = <span style="color: #003366; font-weight: bold;">new</span> Element<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'span'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">injectAfter</span><span style="color: #66cc66;">&#40;</span>cancel<span style="color: #66cc66;">&#41;</span>;
span.<span style="color: #006600;">innerHTML</span> = <span style="color: #3366CC;">' - '</span>;
&nbsp;
<span style="color: #009900; font-style: italic;">//save</span>
<span style="color: #003366; font-weight: bold;">var</span> save = <span style="color: #003366; font-weight: bold;">new</span> Element<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'a'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">injectInside</span><span style="color: #66cc66;">&#40;</span>saveDiv<span style="color: #66cc66;">&#41;</span>;
save.<span style="color: #006600;">setProperty</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'href'</span>, <span style="color: #3366CC;">'javascript:;'</span><span style="color: #66cc66;">&#41;</span>;
save.<span style="color: #006600;">innerHTML</span> = <span style="color: #3366CC;">'s'</span>;
&nbsp;
save.<span style="color: #006600;">addEvent</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'click'</span>, <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
$<span style="color: #66cc66;">&#40;</span>el<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">style</span>.<span style="color: #006600;">display</span> = <span style="color: #3366CC;">'block'</span>;
$<span style="color: #66cc66;">&#40;</span>el<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">innerHTML</span> = textarea.<span style="color: #006600;">value</span>;
&nbsp;
<span style="color: #009900; font-style: italic;">/* new Ajax() */</span>
textarea.<span style="color: #006600;">remove</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #006600;">remove</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
cancel.<span style="color: #006600;">remove</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
span.<span style="color: #006600;">remove</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
saveDiv.<span style="color: #006600;">remove</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;
cancel.<span style="color: #006600;">addEvent</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'click'</span>, <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
$<span style="color: #66cc66;">&#40;</span>el<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">style</span>.<span style="color: #006600;">display</span> = <span style="color: #3366CC;">'block'</span>;
textarea.<span style="color: #006600;">remove</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #006600;">remove</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
save.<span style="color: #006600;">remove</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
span.<span style="color: #006600;">remove</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
saveDiv.<span style="color: #006600;">remove</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #000066; font-weight: bold;">if</span><span style="color: #66cc66;">&#40;</span>$<span style="color: #66cc66;">&#40;</span>el<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">getProperty</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'rel'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">indexOf</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'image'</span><span style="color: #66cc66;">&#41;</span> &amp;gt; -<span style="color: #CC0000;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> rel = $<span style="color: #66cc66;">&#40;</span>el<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">getProperty</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'rel'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #003366; font-weight: bold;">var</span> params = parseQuery<span style="color: #66cc66;">&#40;</span>rel.<span style="color: #006600;">substr</span><span style="color: #66cc66;">&#40;</span><span style="color: #CC0000;">5</span>,<span style="color: #CC0000;">999</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
$<span style="color: #66cc66;">&#40;</span>el<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">style</span>.<span style="color: #006600;">cursor</span> = <span style="color: #3366CC;">'pointer'</span>;
<span style="color: #000066; font-weight: bold;">if</span><span style="color: #66cc66;">&#40;</span> $<span style="color: #66cc66;">&#40;</span>el<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">getParent</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">getParent</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">href</span> <span style="color: #66cc66;">&#41;</span> $<span style="color: #66cc66;">&#40;</span>el<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">getParent</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">getParent</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">href</span> = <span style="color: #3366CC;">'#'</span>;
<span style="color: #000066; font-weight: bold;">if</span><span style="color: #66cc66;">&#40;</span> $<span style="color: #66cc66;">&#40;</span>el<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">getParent</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">href</span> <span style="color: #66cc66;">&#41;</span> $<span style="color: #66cc66;">&#40;</span>el<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">getParent</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">href</span> = <span style="color: #3366CC;">'#'</span>;
&nbsp;
$<span style="color: #66cc66;">&#40;</span>el<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">addEvent</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'click'</span>, <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> imgForm = <span style="color: #003366; font-weight: bold;">new</span> Element<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'form'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">setProperties</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#123;</span>
<span style="color: #3366CC;">'action'</span>: <span style="color: #3366CC;">'/ajax/update.php'</span>,
<span style="color: #3366CC;">'method'</span>: <span style="color: #3366CC;">'post'</span>,
<span style="color: #3366CC;">'id'</span>: <span style="color: #3366CC;">'newImageForm'</span>,
<span style="color: #3366CC;">'enctype'</span>:<span style="color: #3366CC;">'multipart/form-data'</span>
<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;
imgForm.<span style="color: #006600;">setStyles</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#123;</span> <span style="color: #3366CC;">'text-align'</span>:<span style="color: #3366CC;">'left'</span> <span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;
imgForm.<span style="color: #006600;">innerHTML</span> = <span style="color: #3366CC;">'&lt;img src=&quot;'</span>+$<span style="color: #66cc66;">&#40;</span>el<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">src</span>+<span style="color: #3366CC;">'&quot; alt=&quot;'</span>+$<span style="color: #66cc66;">&#40;</span>el<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">alt</span>+<span style="color: #3366CC;">'&quot; /&gt;
&nbsp;
'</span>
+<span style="color: #3366CC;">'
&nbsp;
&lt;input id=&quot;module_type&quot; name=&quot;module_type&quot; value=&quot;skin_variable&quot; type=&quot;hidden&quot; /&gt;'</span>
+<span style="color: #3366CC;">' &lt;input id=&quot;type_sid&quot; name=&quot;type_sid&quot; value=&quot;'</span>+params<span style="color: #66cc66;">&#91;</span><span style="color: #3366CC;">" type="</span>hidden<span style="color: #3366CC;">" /&gt;'
+' &lt;input id="</span>sid<span style="color: #3366CC;">" name="</span>sid<span style="color: #3366CC;">" value="</span><span style="color: #3366CC;">'+params[&quot; type=&quot;hidden&quot; /&gt;'</span>
+<span style="color: #3366CC;">'Alt Tag: &lt;input class=&quot;textField&quot; id=&quot;alt&quot; name=&quot;alt&quot; value=&quot;'</span>+$<span style="color: #66cc66;">&#40;</span>el<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">alt</span>+<span style="color: #3366CC;">'&quot; style=&quot;width: 375px&quot; type=&quot;input&quot; /&gt;'</span>
+<span style="color: #3366CC;">'File to Upload:
&lt;input class=&quot;textField&quot; id=&quot;userimage&quot; name=&quot;userimage&quot; type=&quot;file&quot; /&gt;'</span>;var boxHtml = <span style="color: #003366; font-weight: bold;">new</span> MooPrompt<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'Upload a New Image'</span>, imgForm, <span style="color: #66cc66;">&#123;</span>
buttons: <span style="color: #CC0000;">2</span>,
button1: <span style="color: #3366CC;">'Submit'</span>,
button2: <span style="color: #3366CC;">'Cancel'</span>,
width: <span style="color: #CC0000;">500</span>,
height: <span style="color: #CC0000;">400</span>,
onButton1: <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
console.<span style="color: #006600;">log</span><span style="color: #66cc66;">&#40;</span>$<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'userimage'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">value</span>.<span style="color: #006600;">length</span> &amp;gt; <span style="color: #CC0000;">0</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #000066; font-weight: bold;">if</span><span style="color: #66cc66;">&#40;</span> $<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'userimage'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">value</span>.<span style="color: #006600;">length</span> &amp;lt; <span style="color: #CC0000;">1</span> ||
$<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'userimage'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">value</span>.<span style="color: #006600;">length</span> &amp;gt; <span style="color: #CC0000;">0</span> &amp;amp;&amp;amp;
$<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'userimage'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">value</span>.<span style="color: #006600;">indexOf</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'.jpg'</span><span style="color: #66cc66;">&#41;</span> &amp;gt; -<span style="color: #CC0000;">1</span><span style="color: #66cc66;">&#41;</span>
$<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'newImageForm'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">submit</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #000066; font-weight: bold;">else</span>
<span style="color: #000066;">alert</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'Please only upload .jpg files'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #009900; font-style: italic;">//////////////////////////////////////////////////////////////////////////</span>
<span style="color: #009900; font-style: italic;">// TinyMCE helper functions</span>
<span style="color: #009900; font-style: italic;">//////////////////////////////////////////////////////////////////////////</span>
bTextareaWasTinyfied = <span style="color: #003366; font-weight: bold;">false</span>; <span style="color: #009900; font-style: italic;">//this should be global, could be stored in a cookie...</span>
<span style="color: #003366; font-weight: bold;">function</span> setTextareaToTinyMCE<span style="color: #66cc66;">&#40;</span>sEditorID<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
<span style="color: #003366; font-weight: bold;">var</span> oEditor = document.<span style="color: #006600;">getElementById</span><span style="color: #66cc66;">&#40;</span>sEditorID<span style="color: #66cc66;">&#41;</span>;
<span style="color: #000066; font-weight: bold;">if</span><span style="color: #66cc66;">&#40;</span>oEditor &amp;amp;&amp;amp; !bTextareaWasTinyfied<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
tinyMCE.<span style="color: #006600;">execCommand</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'mceAddControl'</span>, <span style="color: #003366; font-weight: bold;">true</span>, sEditorID<span style="color: #66cc66;">&#41;</span>;
bTextareaWasTinyfied = <span style="color: #003366; font-weight: bold;">true</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #000066; font-weight: bold;">return</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #003366; font-weight: bold;">function</span> unsetTextareaToTinyMCE<span style="color: #66cc66;">&#40;</span>sEditorID<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
<span style="color: #003366; font-weight: bold;">var</span> oEditor = document.<span style="color: #006600;">getElementById</span><span style="color: #66cc66;">&#40;</span>sEditorID<span style="color: #66cc66;">&#41;</span>;
<span style="color: #000066; font-weight: bold;">if</span><span style="color: #66cc66;">&#40;</span>oEditor &amp;amp;&amp;amp; bTextareaWasTinyfied<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
tinyMCE.<span style="color: #006600;">execCommand</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'mceRemoveControl'</span>, <span style="color: #003366; font-weight: bold;">true</span>, sEditorID<span style="color: #66cc66;">&#41;</span>;
bTextareaWasTinyfied = <span style="color: #003366; font-weight: bold;">false</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #000066; font-weight: bold;">return</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #009900; font-style: italic;">//////////////////////////////////////////////////////////////////////////</span>
<span style="color: #009900; font-style: italic;">// parseQuery code borrowed from ibox borrowed from thickbox, Thanks Cody!</span>
<span style="color: #009900; font-style: italic;">// retrieve rel attributes with cols=x&amp;amp;rows=x</span>
<span style="color: #009900; font-style: italic;">//////////////////////////////////////////////////////////////////////////</span>
parseQuery = <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span>query<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
<span style="color: #003366; font-weight: bold;">var</span> Params = <span style="color: #003366; font-weight: bold;">new</span> Object <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #66cc66;">&#40;</span>!query<span style="color: #66cc66;">&#41;</span> <span style="color: #000066; font-weight: bold;">return</span> Params;
<span style="color: #003366; font-weight: bold;">var</span> Pairs = query.<span style="color: #006600;">split</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066FF;">/<span style="color: #66cc66;">&#91;</span>;&amp;amp;<span style="color: #66cc66;">&#93;</span>/</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #000066; font-weight: bold;">for</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #003366; font-weight: bold;">var</span> i = <span style="color: #CC0000;">0</span>; i &amp;lt; Pairs.<span style="color: #006600;">length</span>; i++ <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
<span style="color: #003366; font-weight: bold;">var</span> KeyVal = Pairs<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">split</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'='</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #66cc66;">&#40;</span> ! KeyVal || KeyVal.<span style="color: #006600;">length</span> != <span style="color: #CC0000;">2</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #000066; font-weight: bold;">continue</span>;
<span style="color: #003366; font-weight: bold;">var</span> key = unescape<span style="color: #66cc66;">&#40;</span> KeyVal<span style="color: #66cc66;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #66cc66;">&#93;</span> <span style="color: #66cc66;">&#41;</span>;
<span style="color: #003366; font-weight: bold;">var</span> val = unescape<span style="color: #66cc66;">&#40;</span> KeyVal<span style="color: #66cc66;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #66cc66;">&#93;</span> <span style="color: #66cc66;">&#41;</span>;
val = val.<span style="color: #006600;">replace</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066FF;">/\+/g</span>, <span style="color: #3366CC;">' '</span><span style="color: #66cc66;">&#41;</span>;
Params<span style="color: #66cc66;">&#91;</span>key<span style="color: #66cc66;">&#93;</span> = val;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #000066; font-weight: bold;">return</span> Params;
<span style="color: #66cc66;">&#125;</span></pre></code></div>

So the whole idea, is that you initiate the class at the bottom of the page, and it loops through all class elements applying a conditional editable feature to that element. I decided to add image editing via <a href="http://demo.slajax.com/mooPrompt">moo Prompt</a> so make sure you get that script too. You&#8217;ll also need tinymce for this version (tinypuk support also included).

Ok, now for practical examples so I&#8217;m not answering emails about this:

<div class='codeWrapper'><div class='codeTitle'>html<span class='codeInstruct'>hover edges to scroll</span></div><code><pre>&nbsp;
<span style="color: #009900;"><span style="color: #808080; font-style: italic;">&lt;!-- include script dependancies ---&gt;</span></span>
<span style="color: #009900;"><a href="http://december.com/html/4/element/script.html"><span style="color: #000000; font-weight: bold;">&lt;script</span></a> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">"/skin/shared/js/moo.tools.v1.js"</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">"text/javascript"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/script&gt;</span></span>
<span style="color: #009900;"><a href="http://december.com/html/4/element/script.html"><span style="color: #000000; font-weight: bold;">&lt;script</span></a> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">"/skin/shared/js/moo.prompt.v1.js"</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">"text/javascript"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/script&gt;</span></span>
<span style="color: #009900;"><a href="http://december.com/html/4/element/script.html"><span style="color: #000000; font-weight: bold;">&lt;script</span></a> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">"/skin/shared/js/tinymce/tiny_mce.js"</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">"text/javascript"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/script&gt;</span></span>
<span style="color: #009900;"><a href="http://december.com/html/4/element/script.html"><span style="color: #000000; font-weight: bold;">&lt;script</span></a> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">"/skin/shared/js/sLedit.v1.js"</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">"text/javascript"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/script&gt;</span></span></pre></code></div>

Now for the different editable areas:

<div class='codeWrapper'><div class='codeTitle'>html<span class='codeInstruct'>hover edges to scroll</span></div><code><pre>&nbsp;
Image:
<span style="color: #009900;"><a href="http://december.com/html/4/element/img.html"><span style="color: #000000; font-weight: bold;">&lt;img</span></a> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">"/images/yeahdude.gif"</span> <span style="color: #000066;">alt</span>=<span style="color: #ff0000;">"YEAH DUDE"</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">"sLedit"</span> <span style="color: #000066;">rel</span>=<span style="color: #ff0000;">"image"</span> <span style="color: #000066;">border</span>=<span style="color: #ff0000;">"0"</span> /<span style="color: #000000; font-weight: bold;">&gt;</span></a></span>
TextArea:
<span style="color: #009900;"><a href="http://december.com/html/4/element/p.html"><span style="color: #000000; font-weight: bold;">&lt;p</span></a> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">"sLedit"</span> <span style="color: #000066;">rel</span>=<span style="color: #ff0000;">"textarea&amp;amp;cols=50&amp;amp;rows=20"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span>TEXTTEXTTEXT<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/p&gt;</span></span>
input field:
<span style="color: #009900;"><a href="http://december.com/html/4/element/span.html"><span style="color: #000000; font-weight: bold;">&lt;span</span></a> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">"sLedit"</span> <span style="color: #000066;">rel</span>=<span style="color: #ff0000;">"input"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span>TEXTTEXTTEXT
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/span&gt;</span></span></pre></code></div>
And then just run the class:

<div class='codeWrapper'><div class='codeTitle'>javascript<span class='codeInstruct'>hover edges to scroll</span></div><code><pre>&nbsp;
window.<span style="color: #006600;">onload</span> = <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
<span style="color: #003366; font-weight: bold;">new</span> sLedit<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">".sLedit"</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>;</pre></code></div>

And that should pretty much do it. It&#8217;s a fairly simple but unrevised script. I&#8217;ve done some new variations of it, however those will remain closed source for a while. I was thinking of putting up demos for the image and input fields, but for now I&#8217;ll just give you the textarea example:<br/>

<iframe src="http://demo.slajax.com/sLedit/" frameborder="0" height="400" width="500"></iframe>

Download the source code <a href="http://assets.slajax.com/filestore/code/sLedit.v1.rar" target="_blank">here</a>]]></content:encoded>
			<wfw:commentRss>http://blog.slajax.com/2007/04/26/mooedit-v-1/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
