+++ /dev/null
-/**\r
- * FusionCharts: Flash Player detection and Chart embedding.\r
- * Version: 1.2.3 (15th September, 2008) - Added fix for % and & characters. Additional fixes to properly handle double quotes and single quotes in setDataXML() function.\r
- * Version: 1.2.2 (10th July, 2008) - Added fix for % scaled dimensions, fixes in setDataXML() and setDataURL() functions\r
- * Version: 1.2.1 (21st December, 2007) - Added setting up transparent/opaque mode: setTransparent() function \r
- * Version: 1.2 (1st November, 2007) - Added FORM fixes for IE \r
- * Version: 1.1 (29th June, 2007) - Added Player detection, New conditional fixes for IE\r
- *\r
- * Morphed from SWFObject (http://blog.deconcept.com/swfobject/) under MIT License:\r
- * http://www.opensource.org/licenses/mit-license.php\r
- *\r
- */\r
-if(typeof infosoftglobal == "undefined") var infosoftglobal = new Object();\r
-if(typeof infosoftglobal.FusionChartsUtil == "undefined") infosoftglobal.FusionChartsUtil = new Object();\r
-infosoftglobal.FusionCharts = function(swf, id, w, h, debugMode, registerWithJS, c, scaleMode, lang, detectFlashVersion, autoInstallRedirect){\r
- if (!document.getElementById) { return; }\r
- \r
- //Flag to see whether data has been set initially\r
- this.initialDataSet = false;\r
- \r
- //Create container objects\r
- this.params = new Object();\r
- this.variables = new Object();\r
- this.attributes = new Array();\r
- \r
- //Set attributes for the SWF\r
- if(swf) { this.setAttribute('swf', swf); }\r
- if(id) { this.setAttribute('id', id); }\r
-\r
- debugMode = debugMode ? debugMode : 0;\r
- this.addVariable('debugMode', debugMode);\r
-\r
- w=w.toString().replace(/\%$/,"%25");\r
- if(w) { this.setAttribute('width', w); }\r
- h=h.toString().replace(/\%$/,"%25");\r
- if(h) { this.setAttribute('height', h); }\r
-\r
- \r
- //Set background color\r
- if(c) { this.addParam('bgcolor', c); }\r
- \r
- //Set Quality \r
- this.addParam('quality', 'high');\r
- \r
- //Add scripting access parameter\r
- this.addParam('allowScriptAccess', 'always');\r
- \r
- //Pass width and height to be appended as chartWidth and chartHeight\r
- this.addVariable('chartWidth', w);\r
- this.addVariable('chartHeight', h);\r
-\r
- //Whether in debug mode\r
- //Pass DOM ID to Chart\r
- this.addVariable('DOMId', id);\r
- //Whether to registed with JavaScript\r
- registerWithJS = registerWithJS ? registerWithJS : 0;\r
- this.addVariable('registerWithJS', registerWithJS);\r
- \r
- //Scale Mode of chart\r
- scaleMode = scaleMode ? scaleMode : 'noScale';\r
- this.addVariable('scaleMode', scaleMode);\r
- \r
- //Application Message Language\r
- lang = lang ? lang : 'EN';\r
- this.addVariable('lang', lang);\r
- \r
- //Whether to auto detect and re-direct to Flash Player installation\r
- this.detectFlashVersion = detectFlashVersion?detectFlashVersion:1;\r
- this.autoInstallRedirect = autoInstallRedirect?autoInstallRedirect:1;\r
- \r
- //Ger Flash Player version \r
- this.installedVer = infosoftglobal.FusionChartsUtil.getPlayerVersion();\r
- \r
- if (!window.opera && document.all && this.installedVer.major > 7) {\r
- // Only add the onunload cleanup if the Flash Player version supports External Interface and we are in IE\r
- infosoftglobal.FusionCharts.doPrepUnload = true;\r
- }\r
-}\r
-\r
-infosoftglobal.FusionCharts.prototype = {\r
- setAttribute: function(name, value){\r
- this.attributes[name] = value;\r
- },\r
- getAttribute: function(name){\r
- return this.attributes[name];\r
- },\r
- addParam: function(name, value){\r
- this.params[name] = value;\r
- },\r
- getParams: function(){\r
- return this.params;\r
- },\r
- addVariable: function(name, value){\r
- this.variables[name] = value;\r
- },\r
- getVariable: function(name){\r
- return this.variables[name];\r
- },\r
- getVariables: function(){\r
- return this.variables;\r
- },\r
- getVariablePairs: function(){\r
- var variablePairs = new Array();\r
- var key;\r
- var variables = this.getVariables();\r
- for(key in variables){\r
- variablePairs.push(key +"="+ variables[key]);\r
- }\r
- return variablePairs;\r
- },\r
- getSWFHTML: function() {\r
- var swfNode = "";\r
- if (navigator.plugins && navigator.mimeTypes && navigator.mimeTypes.length) { \r
- // netscape plugin architecture \r
- swfNode = '<embed type="application/x-shockwave-flash" src="'+ this.getAttribute('swf') +'" width="'+ this.getAttribute('width') +'" height="'+ this.getAttribute('height') +'" ';\r
- swfNode += ' id="'+ this.getAttribute('id') +'" name="'+ this.getAttribute('id') +'" ';\r
- var params = this.getParams();\r
- for(var key in params){ swfNode += [key] +'="'+ params[key] +'" '; }\r
- var pairs = this.getVariablePairs().join("&");\r
- if (pairs.length > 0){ swfNode += 'flashvars="'+ pairs +'"'; }\r
- swfNode += '/>';\r
- } else { // PC IE \r
- swfNode = '<object id="'+ this.getAttribute('id') +'" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+ this.getAttribute('width') +'" height="'+ this.getAttribute('height') +'">';\r
- swfNode += '<param name="movie" value="'+ this.getAttribute('swf') +'" />';\r
- var params = this.getParams();\r
- for(var key in params) {\r
- swfNode += '<param name="'+ key +'" value="'+ params[key] +'" />';\r
- }\r
- var pairs = this.getVariablePairs().join("&"); \r
- if(pairs.length > 0) {swfNode += '<param name="flashvars" value="'+ pairs +'" />';}\r
- swfNode += "</object>";\r
- }\r
- return swfNode;\r
- },\r
- setDataURL: function(strDataURL){\r
- //This method sets the data URL for the chart.\r
- //If being set initially\r
- if (this.initialDataSet==false){\r
- this.addVariable('dataURL',strDataURL);\r
- //Update flag\r
- this.initialDataSet = true;\r
- }else{\r
- //Else, we update the chart data using External Interface\r
- //Get reference to chart object\r
- var chartObj = infosoftglobal.FusionChartsUtil.getChartObject(this.getAttribute('id'));\r
- \r
- if (!chartObj.setDataURL)\r
- {\r
- __flash__addCallback(chartObj, "setDataURL");\r
- }\r
- \r
- chartObj.setDataURL(strDataURL);\r
- }\r
- },\r
- //This function :\r
- //fixes the double quoted attributes to single quotes\r
- //Encodes all quotes inside attribute values\r
- //Encodes % to %25 and & to %26;\r
- encodeDataXML: function(strDataXML){\r
- \r
- var regExpReservedCharacters=["\\$","\\+"];\r
- var arrDQAtt=strDataXML.match(/=\s*\".*?\"/g);\r
- if (arrDQAtt){\r
- for(var i=0;i<arrDQAtt.length;i++){\r
- var repStr=arrDQAtt[i].replace(/^=\s*\"|\"$/g,"");\r
- repStr=repStr.replace(/\'/g,"%26apos;");\r
- var strTo=strDataXML.indexOf(arrDQAtt[i]);\r
- var repStrr="='"+repStr+"'";\r
- var strStart=strDataXML.substring(0,strTo);\r
- var strEnd=strDataXML.substring(strTo+arrDQAtt[i].length);\r
- var strDataXML=strStart+repStrr+strEnd;\r
- }\r
- }\r
- \r
- strDataXML=strDataXML.replace(/\"/g,"%26quot;");\r
- strDataXML=strDataXML.replace(/%(?![\da-f]{2}|[\da-f]{4})/ig,"%25");\r
- strDataXML=strDataXML.replace(/\&/g,"%26");\r
-\r
- return strDataXML;\r
-\r
- },\r
- setDataXML: function(strDataXML){\r
- //If being set initially\r
- if (this.initialDataSet==false){\r
- //This method sets the data XML for the chart INITIALLY.\r
- this.addVariable('dataXML',this.encodeDataXML(strDataXML));\r
- //Update flag\r
- this.initialDataSet = true;\r
- }else{\r
- //Else, we update the chart data using External Interface\r
- //Get reference to chart object\r
- var chartObj = infosoftglobal.FusionChartsUtil.getChartObject(this.getAttribute('id'));\r
- chartObj.setDataXML(strDataXML);\r
- }\r
- },\r
- setTransparent: function(isTransparent){\r
- //Sets chart to transparent mode when isTransparent is true (default)\r
- //When no parameter is passed, we assume transparent to be true.\r
- if(typeof isTransparent=="undefined") {\r
- isTransparent=true;\r
- } \r
- //Set the property\r
- if(isTransparent)\r
- this.addParam('WMode', 'transparent');\r
- else\r
- this.addParam('WMode', 'Opaque');\r
- },\r
- \r
- render: function(elementId){\r
- //First check for installed version of Flash Player - we need a minimum of 8\r
- if((this.detectFlashVersion==1) && (this.installedVer.major < 8)){\r
- if (this.autoInstallRedirect==1){\r
- //If we can auto redirect to install the player?\r
- var installationConfirm = window.confirm("You need Adobe Flash Player 8 (or above) to view the charts. It is a free and lightweight installation from Adobe.com. Please click on Ok to install the same.");\r
- if (installationConfirm){\r
- window.location = "http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash";\r
- }else{\r
- return false;\r
- }\r
- }else{\r
- //Else, do not take an action. It means the developer has specified a message in the DIV (and probably a link).\r
- //So, expect the developers to provide a course of way to their end users.\r
- //window.alert("You need Adobe Flash Player 8 (or above) to view the charts. It is a free and lightweight installation from Adobe.com. ");\r
- return false;\r
- } \r
- }else{\r
- //Render the chart\r
- var n = (typeof elementId == 'string') ? document.getElementById(elementId) : elementId;\r
- n.innerHTML = this.getSWFHTML();\r
- \r
- //Added <FORM> compatibility\r
- //Check if it's added in Mozilla embed array or if already exits \r
- if(!document.embeds[this.getAttribute('id')] && !window[this.getAttribute('id')])\r
- window[this.getAttribute('id')]=document.getElementById(this.getAttribute('id')); \r
- //or else document.forms[formName/formIndex][chartId] \r
- return true; \r
- }\r
- }\r
-}\r
-\r
-/* ---- detection functions ---- */\r
-infosoftglobal.FusionChartsUtil.getPlayerVersion = function(){\r
- var PlayerVersion = new infosoftglobal.PlayerVersion([0,0,0]);\r
- if(navigator.plugins && navigator.mimeTypes.length){\r
- var x = navigator.plugins["Shockwave Flash"];\r
- if(x && x.description) {\r
- PlayerVersion = new infosoftglobal.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/, "").replace(/(\s+r|\s+b[0-9]+)/, ".").split("."));\r
- }\r
- }else if (navigator.userAgent && navigator.userAgent.indexOf("Windows CE") >= 0){ \r
- //If Windows CE\r
- var axo = 1;\r
- var counter = 3;\r
- while(axo) {\r
- try {\r
- counter++;\r
- axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+ counter);\r
- PlayerVersion = new infosoftglobal.PlayerVersion([counter,0,0]);\r
- } catch (e) {\r
- axo = null;\r
- }\r
- }\r
- } else { \r
- // Win IE (non mobile)\r
- // Do minor version lookup in IE, but avoid Flash Player 6 crashing issues\r
- try{\r
- var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");\r
- }catch(e){\r
- try {\r
- var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");\r
- PlayerVersion = new infosoftglobal.PlayerVersion([6,0,21]);\r
- axo.AllowScriptAccess = "always"; // error if player version < 6.0.47 (thanks to Michael Williams @ Adobe for this code)\r
- } catch(e) {\r
- if (PlayerVersion.major == 6) {\r
- return PlayerVersion;\r
- }\r
- }\r
- try {\r
- axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");\r
- } catch(e) {}\r
- }\r
- if (axo != null) {\r
- PlayerVersion = new infosoftglobal.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));\r
- }\r
- }\r
- return PlayerVersion;\r
-}\r
-infosoftglobal.PlayerVersion = function(arrVersion){\r
- this.major = arrVersion[0] != null ? parseInt(arrVersion[0]) : 0;\r
- this.minor = arrVersion[1] != null ? parseInt(arrVersion[1]) : 0;\r
- this.rev = arrVersion[2] != null ? parseInt(arrVersion[2]) : 0;\r
-}\r
-// ------------ Fix for Out of Memory Bug in IE in FP9 ---------------//\r
-/* Fix for video streaming bug */\r
-infosoftglobal.FusionChartsUtil.cleanupSWFs = function() {\r
- var objects = document.getElementsByTagName("OBJECT");\r
- for (var i = objects.length - 1; i >= 0; i--) {\r
- objects[i].style.display = 'none';\r
- for (var x in objects[i]) {\r
- if (typeof objects[i][x] == 'function') {\r
- objects[i][x] = function(){};\r
- }\r
- }\r
- }\r
-}\r
-// Fixes bug in fp9\r
-if (infosoftglobal.FusionCharts.doPrepUnload) {\r
- if (!infosoftglobal.unloadSet) {\r
- infosoftglobal.FusionChartsUtil.prepUnload = function() {\r
- __flash_unloadHandler = function(){};\r
- __flash_savedUnloadHandler = function(){};\r
- window.attachEvent("onunload", infosoftglobal.FusionChartsUtil.cleanupSWFs);\r
- }\r
- window.attachEvent("onbeforeunload", infosoftglobal.FusionChartsUtil.prepUnload);\r
- infosoftglobal.unloadSet = true;\r
- }\r
-}\r
-/* Add document.getElementById if needed (mobile IE < 5) */\r
-if (!document.getElementById && document.all) { document.getElementById = function(id) { return document.all[id]; }}\r
-/* Add Array.push if needed (ie5) */\r
-if (Array.prototype.push == null) { Array.prototype.push = function(item) { this[this.length] = item; return this.length; }}\r
-\r
-/* Function to return Flash Object from ID */\r
-infosoftglobal.FusionChartsUtil.getChartObject = function(id)\r
-{\r
- var chartRef=null;\r
- if (navigator.appName.indexOf("Microsoft Internet")==-1) {\r
- if (document.embeds && document.embeds[id])\r
- chartRef = document.embeds[id]; \r
- else\r
- chartRef = window.document[id];\r
- }\r
- else {\r
- chartRef = window[id];\r
- }\r
- if (!chartRef)\r
- chartRef = document.getElementById(id);\r
- \r
- return chartRef;\r
-}\r
-/* Aliases for easy usage */\r
-var getChartFromId = infosoftglobal.FusionChartsUtil.getChartObject;\r
-var FusionCharts = infosoftglobal.FusionCharts;
\ No newline at end of file
+++ /dev/null
-/* Block IE 5 */
-@import "null.css?\"\{";
-
-/* Import other styles */
-@import url('global.css');
-@import url('layout.css');
-
-/* Import patch for IE 6 Windows */
-/*\*/ @import "patch-iewin.css"; /**/
+++ /dev/null
-@import url('base.css');
-
-/* CHANGELISTS */
-#changelist { position:relative; width:100%; }
-#changelist table { width:100%; }
-.change-list .filtered table { border-right:1px solid #ddd; }
-.change-list .filtered { min-height:400px; }
-.change-list .filtered { background:white url(../img/changelist-bg.gif) top right repeat-y !important; }
-.change-list .filtered table, .change-list .filtered .paginator, .filtered #toolbar, .filtered div.xfull { margin-right:200px !important; width:auto !important; }
-.change-list .filtered table tbody th { padding-right:1em; }
-#changelist .toplinks { border-bottom:1px solid #ccc !important; }
-#changelist .paginator { color:#666; border-top:1px solid #eee; border-bottom:1px solid #eee; background:white url(../img/nav-bg.gif) 0 180% repeat-x; overflow:hidden; }
-.change-list .filtered .paginator { border-right:1px solid #ddd; }
-
-/* CHANGELIST TABLES */
-#changelist table thead th { white-space:nowrap; }
-#changelist table tbody td { border-left: 1px solid #ddd; }
-#changelist table tfoot { color: #666; }
-
-/* TOOLBAR */
-#changelist #toolbar { padding:3px; border-bottom:1px solid #ddd; background:#e1e1e1 url(../img/nav-bg.gif) top left repeat-x; color:#666; }
-#changelist #toolbar form input { font-size:11px; padding:1px 2px; }
-#changelist #toolbar form #searchbar { padding:2px; }
-#changelist #changelist-search img { vertical-align:middle; }
-
-/* FILTER COLUMN */
-#changelist-filter { position:absolute; top:0; right:0; z-index:1000; width:200px; border-left:1px solid #ddd; background:#efefef; margin:0; }
-#changelist-filter h2 { font-size:11px; padding:2px 5px; border-bottom:1px solid #ddd; }
-#changelist-filter h3 { font-size:12px; margin-bottom:0; }
-#changelist-filter ul { padding-left:0;margin-left:10px; }
-#changelist-filter li { list-style-type:none; margin-left:0; padding-left:0; }
-#changelist-filter a { color:#999; }
-#changelist-filter a:hover { color:#036; }
-#changelist-filter li.selected { border-left:5px solid #ccc; padding-left:5px;margin-left:-10px; }
-#changelist-filter li.selected a { color:#5b80b2 !important; }
-
-/* DATE DRILLDOWN */
-.change-list ul.toplinks { display:block; background:white url(../img/nav-bg-reverse.gif) 0 -10px repeat-x; border-top:1px solid white; float:left; padding:0 !important; margin:0 !important; width:100%; }
-.change-list ul.toplinks li { float: left; width: 9em; padding:3px 6px; font-weight: bold; list-style-type:none; }
-.change-list ul.toplinks .date-back a { color:#999; }
-.change-list ul.toplinks .date-back a:hover { color:#036; }
-
-/* PAGINATOR */
-.paginator { font-size:11px; padding-top:10px; padding-bottom:10px; line-height:22px; margin:0; border-top:1px solid #ddd; }
-.paginator a:link, .paginator a:visited { padding:2px 6px; border:solid 1px #ccc; background:white; text-decoration:none; }
-.paginator a.showall { padding:0 !important; border:none !important; }
-.paginator a.showall:hover { color:#036 !important; background:transparent !important; }
-.paginator .end { border-width:2px !important; margin-right:6px; }
-.paginator .this-page { border:solid 1px #ccc; padding:2px 6px; font-weight:bold; vertical-align:top; }
-.paginator a:hover { color:white; background:#5b80b2; border-color:#036; }
-
-.ItemsDragClass{background-color:#E3F3FE;}
+++ /dev/null
-@import url('base.css');
-
-/* DASHBOARD */
-.dashboard .module table th { width:100%; }
-.dashboard .module table td { white-space:nowrap; }
-.dashboard .module table td a { display:block; padding-right:.6em; }
-
-/* RECENT ACTIONS MODULE */
-.module ul.actionlist { margin-left:0; }
-ul.actionlist li { list-style-type:none; }
\ No newline at end of file
+++ /dev/null
-@import url('base.css');
-@import url('widgets.css');
-
-/* FORM ROWS */
-.form-row { overflow:hidden; padding:8px 12px; font-size:11px; border-bottom:1px solid #eee; }
-.form-row img { vertical-align:middle; }
-.form-row input { vertical-align:middle; width: 300px; }
-.form-row textarea { width: 300px; height: 180px; }
-form .form-row p { padding-left:0; font-size:11px; }
-
-/* FORM GROUP TITLE */
-.form-group-title {
- background-color:#CFCFCF;
- padding:2px 8px 3px 16px; font-size:12px; color:#006A95; border-top:1px solid #CCC; border-bottom:1px solid #CCC; text-align:left;
- font-weight:bold;
-}
-
-/* FORM LABELS */
-form h4 { margin:0 !important; padding:0 !important; border:none !important; }
-label { font-weight:normal !important; color:#666; font-size:12px; }
-label.inline { margin-left:20px; }
-.required label, label.required { font-weight:bold !important; color:#333 !important; }
-
-/* RADIO BUTTONS */
-form ul.radiolist li { list-style-type:none; }
-form ul.radiolist label { float:none; display:inline; }
-form ul.inline { margin-left:0; padding:0; }
-form ul.inline li { float:left; padding-right:7px; }
-
-.checkgroup_master li {list-style: none outside none}
-.checkgroup_master li label {width:auto;float:none}
-
-/* ALIGNED FIELDSETS */
-.aligned label { display:block; padding:0 1em 3px 0; float:left; width:8em; }
-.aligned label.inline { display:inline; float:none; }
-label.file_remove{display:inline; float:none; padding:0; margin:0 20px 0 0; }
-.colMS .aligned .vLargeTextField, .colMS .aligned .vXMLLargeTextField { width:350px; }
-form .aligned p, form .aligned ul { margin-left:7em; padding-left:30px; }
-form .aligned table p { margin-left:0; padding-left:0; }
-form .aligned p.help { padding-left:38px; }
-.aligned .vCheckboxLabel { float:none !important; display:inline; padding-left:4px; }
-.colM .aligned .vLargeTextField, .colM .aligned .vXMLLargeTextField { width:610px; }
-.checkbox-row p.help { margin-left:0; padding-left:0 !important; }
-
-/* WIDE FIELDSETS */
-.wide label { width:15em !important; }
-form .wide p { margin-left:15em; }
-form .wide p.help { padding-left:38px; }
-.colM fieldset.wide .vLargeTextField, .colM fieldset.wide .vXMLLargeTextField { width:450px; }
-
-/* COLLAPSED FIELDSETS */
-fieldset.collapsed * { display:none; }
-fieldset.collapsed h2, fieldset.collapsed { display:block !important; }
-fieldset.collapsed h2 { background-image:url(../img/nav-bg.gif); background-position:bottom left; color:#999; }
-fieldset.collapsed .collapse-toggle { padding:3px 5px !important; background:transparent; display:inline !important;}
-
-/* MONOSPACE TEXTAREAS */
-fieldset.monospace textarea { font-family:"Bitstream Vera Sans Mono",Monaco,"Courier New",Courier,monospace; }
-
-/* INLINE */
-.inline-related table {width: 100%;}
-
-/* INLINE REORDER */
-.ItemsDragClass{background-color:#E3F3FE;}
-
-/* SUBMIT ROW */
-.submit-row { padding:5px 7px; text-align:right; background:white url(../img/nav-bg.gif) 0 100% repeat-x; border:1px solid #ccc; margin:5px 0; }
-.submit-row input { margin:0 0 0 5px; }
-.submit-row p { margin-top:0.3em; }
-.submit-row .deletelink { background:url(../img/icon_deletelink.gif) 0 50% no-repeat; padding-left:14px; }
-
-/* CUSTOM FORM FIELDS */
-.vSelectMultipleField { vertical-align:top !important; }
-.vCheckboxField { border:none; }
-.vDateField, .vTimeField { margin-right:2px; }
-.vURLField { width:30em; }
-.vLargeTextField, .vXMLLargeTextField { width:48em; }
-.flatpages-flatpage #id_content { height:40.2em; }
-.module table .vPositiveSmallIntegerField { width:2.2em; }
-
+++ /dev/null
-body { margin:0; padding:0; font-size:12px; font-family:"Lucida Grande","DejaVu Sans","Bitstream Vera Sans",Verdana,Arial,sans-serif; color:#333; background:#fff; }
-
-/* LINKS */
-a:link, a:visited { color:#006A95; text-decoration:none; }
-a:hover { color: #036; }
-a img { border:none; }
-
-/* GLOBAL DEFAULTS */
-p, ol, ul, dl { margin:.2em 0 .8em 0; }
-p { padding:0; line-height:140%; }
-
-h1,h2,h3,h4,h5 { font-weight:bold; }
-h1 { font-size:18px; color:#666; padding:0 6px 0 0; margin:0 0 .2em 0; }
-h2 { font-size:16px; margin:1em 0 .5em 0; }
-h2.subhead { font-weight:normal;margin-top:0; }
-h3 { font-size:14px; margin:.8em 0 .3em 0; color:#666; font-weight:bold; }
-h4 { font-size:12px; margin:1em 0 .8em 0; padding-bottom:3px; }
-h5 { font-size:10px; margin:1.5em 0 .5em 0; color:#666; text-transform:uppercase; letter-spacing:1px; }
-
-ul li { list-style-type:square; padding:1px 0; }
-ul.plainlist { margin-left:0 !important; }
-ul.plainlist li { list-style-type:none; }
-li ul { margin-bottom:0; }
-li, dt, dd { font-size:11px; line-height:14px; }
-dt { font-weight:bold; margin-top:4px; }
-dd { margin-left:0; }
-
-form { margin:0; padding:0; }
-fieldset { margin:0; padding:0; }
-
-blockquote { font-size:11px; color:#777; margin-left:2px; padding-left:10px; border-left:5px solid #ddd; }
-code, pre { font-family:"Bitstream Vera Sans Mono", Monaco, "Courier New", Courier, monospace; background:inherit; color:#666; font-size:11px; }
-pre.literal-block { margin:10px; background:#eee; padding:6px 8px; }
-code strong { color:#930; }
-hr { clear:both; color:#eee; background-color:#eee; height:1px; border:none; margin:0; padding:0; font-size:1px; line-height:1px; }
-
-/* TEXT STYLES & MODIFIERS */
-.small { font-size:11px; }
-.tiny { font-size:10px; }
-p.tiny { margin-top:-2px; }
-.mini { font-size:9px; }
-p.mini { margin-top:-3px; }
-.help, p.help { font-size:10px !important; color:#999; }
-p img, h1 img, h2 img, h3 img, h4 img, td img { vertical-align:middle; }
-.quiet, a.quiet:link, a.quiet:visited { color:#999 !important;font-weight:normal !important; }
-.quiet strong { font-weight:bold !important; }
-.float-right { float:right; }
-.float-left { float:left; }
-.clear { clear:both; }
-.align-left { text-align:left; }
-.align-right { text-align:right; }
-.example { margin:10px 0; padding:5px 10px; background:#efefef; }
-.nowrap { white-space:nowrap; }
-
-/* TABLES */
-table { border-collapse:collapse; border-color:#ccc; }
-td, th { font-size:11px; line-height:13px; border-bottom:1px solid #eee; vertical-align:top; padding:5px; font-family:"Lucida Grande", Verdana, Arial, sans-serif; }
-th { text-align:left; font-size:12px; font-weight:bold; }
-thead th,
-tfoot td { color:#666; padding:2px 5px; font-size:11px; background:#e1e1e1 url(../img/nav-bg.gif) top left repeat-x; border-left:1px solid #ddd; border-bottom:1px solid #ddd; }
-tfoot td { border-bottom:none; border-top:1px solid #ddd; }
-thead th:first-child,
-tfoot td:first-child { border-left:none !important; }
-thead th.optional { font-weight:normal !important; }
-fieldset table { border-right:1px solid #eee; }
-tr.row-label td { font-size:9px; padding-top:2px; padding-bottom:0; border-bottom:none; color:#666; margin-top:-1px; }
-tr.alt { background:#f6f6f6; }
-.row1 { background:#EDF3FE; }
-.row2 { background:white; }
-
-/* SORTABLE TABLES */
-thead th a:link, thead th a:visited { color:#666; display:block; }
-table thead th.sorted { background-position:bottom left !important; }
-table thead th.sorted a { padding-right:13px; }
-table thead th.ascending a { background:url(../img/arrow-down.gif) right .4em no-repeat; }
-table thead th.descending a { background:url(../img/arrow-up.gif) right .4em no-repeat; }
-
-/* ORDERABLE TABLES */
-table.orderable tbody tr td:hover { cursor:move; }
-table.orderable tbody tr td:first-child { padding-left:14px; background-image:url(../img/nav-bg-grabber.gif); background-repeat:repeat-y; }
-table.orderable-initalized .order-cell, body>tr>td.order-cell { display:none; }
-
-/* FORM DEFAULTS */
-input, textarea, select { margin:2px 0; padding:2px 3px; vertical-align:middle; font-family:"Lucida Grande", Verdana, Arial, sans-serif; font-weight:normal; font-size:11px; }
-textarea { vertical-align:top !important; }
-input[type=text], input[type=password], textarea, select, .vTextField { border:1px solid #ccc; }
-
-/* FORM BUTTONS */
-input[type=submit], input[type=button], .submit-row input { background:white url(../img/nav-bg.gif) bottom repeat-x; padding:3px; color:black; border:1px solid #bbb; border-color:#ddd #aaa #aaa #ddd; }
-input[type=submit]:active, input[type=button]:active { background-image:url(../img/nav-bg-reverse.gif); background-position:top; }
-input[type=submit].default, .submit-row input.default { border:2px solid #888; background:#DADFE3 url(../img/nav-bg.gif) bottom repeat-x; font-weight:bold; color:black; }
-input[type=submit].default:active { background-image:url(../img/nav-bg-reverse.gif); background-position:top; }
-
-/* MODULES */
-.module { border:1px solid #ccc; margin-bottom:5px; background:white; }
-.module p, .module ul, .module h3, .module h4, .module dl, .module pre { padding-left:10px; padding-right:10px; }
-.module blockquote { margin-left:12px; }
-.module ul, .module ol { margin-left:1.5em; }
-.module h3 { margin-top:.6em; }
-.module h2, .module caption { margin:0; padding:2px 5px 3px 5px; font-size:11px; text-align:left; font-weight:bold; background:#DADFE3 url(../img/default-bg.gif) top left repeat-x; color:#444; }
-.module table { border-collapse: collapse; }
-
-/* MESSAGES & ERRORS */
-ul.messagelist { padding:0 0 5px 0; margin:0; }
-ul.messagelist li { font-size:12px; display:block; padding:4px 5px 4px 25px; margin:0 0 3px 0; border-bottom:1px solid #ddd; color:#666; background:#ffc url(../img/icon_success.gif) 5px .3em no-repeat; }
-.errornote { font-size:12px !important; display:block; padding:4px 5px 4px 25px; margin:0 0 3px 0; border:1px solid red; color:red;background:#ffc url(../img/icon_error.gif) 5px .3em no-repeat; }
-ul.errorlist { margin:0 !important; padding:0 !important; }
-.errorlist li { font-size:12px !important; display:block; padding:4px 5px 4px 25px; margin:0 0 3px 0; border:1px solid #844; color:maroon; background:#fee url(../img/icon_alert.gif) 5px .3em no-repeat; }
-td ul.errorlist { margin:0 !important; padding:0 !important; }
-td ul.errorlist li { margin:0 !important; }
-.error { background:#ffc; }
-.error input, .error select { border:1px solid red; }
-div.system-message { background: #ffc; margin: 10px; padding: 6px 8px; font-size: .8em; }
-div.system-message p.system-message-title { padding:4px 5px 4px 25px; margin:0; color:red; background:#ffc url(../img/icon_error.gif) 5px .3em no-repeat; }
-.description { font-size:12px; padding:5px 0 0 12px; }
-
-/* BREADCRUMBS */
-div.breadcrumbs { background:#AFAFAF url(../img/breadcrubms-bg.gif) left repeat-x; padding:2px 8px 3px 16px; font-size:11px; color:#444; border-top:1px solid #DCDCDC; border-bottom:1px solid #8C8C8C; text-align:left; }
-
-/* ACTION ICONS */
-.addlink { padding-left:12px; background:url(../img/icon_addlink.gif) 0 .2em no-repeat; }
-.changelink { padding-left:12px; background:url(../img/icon_changelink.gif) 0 .2em no-repeat; }
-.deletelink { padding-left:12px; background:url(../img/icon_deletelink.gif) 0 .25em no-repeat; }
-a.deletelink:link, a.deletelink:visited { color:#CC3434; }
-a.deletelink:hover { color:#993333; }
-
-/* OBJECT TOOLS */
-.object-tools { font-size:10px; font-weight:bold; font-family:Arial,Helvetica,sans-serif; padding-left:0; float:right; position:relative; margin-top:-2.4em; margin-bottom:-2em; }
-.form-row .object-tools { margin-top:5px; margin-bottom:5px; float:none; height:2em; padding-left:3.5em; }
-.object-tools li { display:block; float:left; background:url(../img/tool-left.gif) 0 0 no-repeat; padding:0 0 0 8px; margin-left:2px; height:16px; }
-.object-tools li:hover { background:url(../img/tool-left_over.gif) 0 0 no-repeat; }
-.object-tools a:link, .object-tools a:visited { display:block; float:left; color:white; padding:.1em 14px .1em 8px; height:14px; background:#999 url(../img/tool-right.gif) 100% 0 no-repeat; }
-.object-tools a:hover, .object-tools li:hover a { background:#5b80b2 url(../img/tool-right_over.gif) 100% 0 no-repeat; }
-.object-tools a.viewsitelink, .object-tools a.golink { background:#999 url(../img/tooltag-arrowright.gif) top right no-repeat; padding-right:28px; }
-.object-tools a.viewsitelink:hover, .object-tools a.golink:hover { background:#5b80b2 url(../img/tooltag-arrowright_over.gif) top right no-repeat; }
-.object-tools a.addlink { background:#999 url(../img/tooltag-add.gif) top right no-repeat; padding-right:28px; }
-.object-tools a.addlink:hover { background:#5b80b2 url(../img/tooltag-add_over.gif) top right no-repeat; }
-
-/* OBJECT HISTORY */
-table#change-history { width:100%; }
-table#change-history tbody th { width:16em; }
+++ /dev/null
-/*
- * jQuery UI CSS Framework 1.8.13
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Theming/API
- */
-
-/* Layout helpers
-----------------------------------*/
-.ui-helper-hidden { display: none; }
-.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
-.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
-.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
-.ui-helper-clearfix { display: inline-block; }
-/* required comment for clearfix to work in Opera \*/
-* html .ui-helper-clearfix { height:1%; }
-.ui-helper-clearfix { display:block; }
-/* end clearfix */
-.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
-
-
-/* Interaction Cues
-----------------------------------*/
-.ui-state-disabled { cursor: default !important; }
-
-
-/* Icons
-----------------------------------*/
-
-/* states and images */
-.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
-
-
-/* Misc visuals
-----------------------------------*/
-
-/* Overlays */
-.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
-
-
-/*
- * jQuery UI CSS Framework 1.8.13
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Theming/API
- *
- * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana,Arial,sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
- */
-
-
-/* Component containers
-----------------------------------*/
-.ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; }
-.ui-widget .ui-widget { font-size: 1em; }
-.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; }
-.ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(../img-ui/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; }
-.ui-widget-content a { color: #222222; }
-.ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(../img-ui/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; }
-.ui-widget-header a { color: #222222; }
-
-/* Interaction states
-----------------------------------*/
-.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(../img-ui/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; }
-.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; }
-.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #dadada url(../img-ui/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
-.ui-state-hover a, .ui-state-hover a:hover { color: #212121; text-decoration: none; }
-.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(../img-ui/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
-.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; }
-.ui-widget :active { outline: none; }
-
-/* Interaction Cues
-----------------------------------*/
-.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url(../img-ui/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; }
-.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
-.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(../img-ui/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }
-.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }
-.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
-.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
-.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
-.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
-
-/* Icons
-----------------------------------*/
-
-/* states and images */
-.ui-icon { width: 16px; height: 16px; background-image: url(../img-ui/ui-icons_222222_256x240.png); }
-.ui-widget-content .ui-icon {background-image: url(../img-ui/ui-icons_222222_256x240.png); }
-.ui-widget-header .ui-icon {background-image: url(../img-ui/ui-icons_222222_256x240.png); }
-.ui-state-default .ui-icon { background-image: url(../img-ui/ui-icons_888888_256x240.png); }
-.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(../img-ui/ui-icons_454545_256x240.png); }
-.ui-state-active .ui-icon {background-image: url(../img-ui/ui-icons_454545_256x240.png); }
-.ui-state-highlight .ui-icon {background-image: url(../img-ui/ui-icons_2e83ff_256x240.png); }
-.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(../img-ui/ui-icons_cd0a0a_256x240.png); }
-
-/* positioning */
-.ui-icon-carat-1-n { background-position: 0 0; }
-.ui-icon-carat-1-ne { background-position: -16px 0; }
-.ui-icon-carat-1-e { background-position: -32px 0; }
-.ui-icon-carat-1-se { background-position: -48px 0; }
-.ui-icon-carat-1-s { background-position: -64px 0; }
-.ui-icon-carat-1-sw { background-position: -80px 0; }
-.ui-icon-carat-1-w { background-position: -96px 0; }
-.ui-icon-carat-1-nw { background-position: -112px 0; }
-.ui-icon-carat-2-n-s { background-position: -128px 0; }
-.ui-icon-carat-2-e-w { background-position: -144px 0; }
-.ui-icon-triangle-1-n { background-position: 0 -16px; }
-.ui-icon-triangle-1-ne { background-position: -16px -16px; }
-.ui-icon-triangle-1-e { background-position: -32px -16px; }
-.ui-icon-triangle-1-se { background-position: -48px -16px; }
-.ui-icon-triangle-1-s { background-position: -64px -16px; }
-.ui-icon-triangle-1-sw { background-position: -80px -16px; }
-.ui-icon-triangle-1-w { background-position: -96px -16px; }
-.ui-icon-triangle-1-nw { background-position: -112px -16px; }
-.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
-.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
-.ui-icon-arrow-1-n { background-position: 0 -32px; }
-.ui-icon-arrow-1-ne { background-position: -16px -32px; }
-.ui-icon-arrow-1-e { background-position: -32px -32px; }
-.ui-icon-arrow-1-se { background-position: -48px -32px; }
-.ui-icon-arrow-1-s { background-position: -64px -32px; }
-.ui-icon-arrow-1-sw { background-position: -80px -32px; }
-.ui-icon-arrow-1-w { background-position: -96px -32px; }
-.ui-icon-arrow-1-nw { background-position: -112px -32px; }
-.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
-.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
-.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
-.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
-.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
-.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
-.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
-.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
-.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
-.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
-.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
-.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
-.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
-.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
-.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
-.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
-.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
-.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
-.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
-.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
-.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
-.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
-.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
-.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
-.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
-.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
-.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
-.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
-.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
-.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
-.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
-.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
-.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
-.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
-.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
-.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
-.ui-icon-arrow-4 { background-position: 0 -80px; }
-.ui-icon-arrow-4-diag { background-position: -16px -80px; }
-.ui-icon-extlink { background-position: -32px -80px; }
-.ui-icon-newwin { background-position: -48px -80px; }
-.ui-icon-refresh { background-position: -64px -80px; }
-.ui-icon-shuffle { background-position: -80px -80px; }
-.ui-icon-transfer-e-w { background-position: -96px -80px; }
-.ui-icon-transferthick-e-w { background-position: -112px -80px; }
-.ui-icon-folder-collapsed { background-position: 0 -96px; }
-.ui-icon-folder-open { background-position: -16px -96px; }
-.ui-icon-document { background-position: -32px -96px; }
-.ui-icon-document-b { background-position: -48px -96px; }
-.ui-icon-note { background-position: -64px -96px; }
-.ui-icon-mail-closed { background-position: -80px -96px; }
-.ui-icon-mail-open { background-position: -96px -96px; }
-.ui-icon-suitcase { background-position: -112px -96px; }
-.ui-icon-comment { background-position: -128px -96px; }
-.ui-icon-person { background-position: -144px -96px; }
-.ui-icon-print { background-position: -160px -96px; }
-.ui-icon-trash { background-position: -176px -96px; }
-.ui-icon-locked { background-position: -192px -96px; }
-.ui-icon-unlocked { background-position: -208px -96px; }
-.ui-icon-bookmark { background-position: -224px -96px; }
-.ui-icon-tag { background-position: -240px -96px; }
-.ui-icon-home { background-position: 0 -112px; }
-.ui-icon-flag { background-position: -16px -112px; }
-.ui-icon-calendar { background-position: -32px -112px; }
-.ui-icon-cart { background-position: -48px -112px; }
-.ui-icon-pencil { background-position: -64px -112px; }
-.ui-icon-clock { background-position: -80px -112px; }
-.ui-icon-disk { background-position: -96px -112px; }
-.ui-icon-calculator { background-position: -112px -112px; }
-.ui-icon-zoomin { background-position: -128px -112px; }
-.ui-icon-zoomout { background-position: -144px -112px; }
-.ui-icon-search { background-position: -160px -112px; }
-.ui-icon-wrench { background-position: -176px -112px; }
-.ui-icon-gear { background-position: -192px -112px; }
-.ui-icon-heart { background-position: -208px -112px; }
-.ui-icon-star { background-position: -224px -112px; }
-.ui-icon-link { background-position: -240px -112px; }
-.ui-icon-cancel { background-position: 0 -128px; }
-.ui-icon-plus { background-position: -16px -128px; }
-.ui-icon-plusthick { background-position: -32px -128px; }
-.ui-icon-minus { background-position: -48px -128px; }
-.ui-icon-minusthick { background-position: -64px -128px; }
-.ui-icon-close { background-position: -80px -128px; }
-.ui-icon-closethick { background-position: -96px -128px; }
-.ui-icon-key { background-position: -112px -128px; }
-.ui-icon-lightbulb { background-position: -128px -128px; }
-.ui-icon-scissors { background-position: -144px -128px; }
-.ui-icon-clipboard { background-position: -160px -128px; }
-.ui-icon-copy { background-position: -176px -128px; }
-.ui-icon-contact { background-position: -192px -128px; }
-.ui-icon-image { background-position: -208px -128px; }
-.ui-icon-video { background-position: -224px -128px; }
-.ui-icon-script { background-position: -240px -128px; }
-.ui-icon-alert { background-position: 0 -144px; }
-.ui-icon-info { background-position: -16px -144px; }
-.ui-icon-notice { background-position: -32px -144px; }
-.ui-icon-help { background-position: -48px -144px; }
-.ui-icon-check { background-position: -64px -144px; }
-.ui-icon-bullet { background-position: -80px -144px; }
-.ui-icon-radio-off { background-position: -96px -144px; }
-.ui-icon-radio-on { background-position: -112px -144px; }
-.ui-icon-pin-w { background-position: -128px -144px; }
-.ui-icon-pin-s { background-position: -144px -144px; }
-.ui-icon-play { background-position: 0 -160px; }
-.ui-icon-pause { background-position: -16px -160px; }
-.ui-icon-seek-next { background-position: -32px -160px; }
-.ui-icon-seek-prev { background-position: -48px -160px; }
-.ui-icon-seek-end { background-position: -64px -160px; }
-.ui-icon-seek-start { background-position: -80px -160px; }
-/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
-.ui-icon-seek-first { background-position: -80px -160px; }
-.ui-icon-stop { background-position: -96px -160px; }
-.ui-icon-eject { background-position: -112px -160px; }
-.ui-icon-volume-off { background-position: -128px -160px; }
-.ui-icon-volume-on { background-position: -144px -160px; }
-.ui-icon-power { background-position: 0 -176px; }
-.ui-icon-signal-diag { background-position: -16px -176px; }
-.ui-icon-signal { background-position: -32px -176px; }
-.ui-icon-battery-0 { background-position: -48px -176px; }
-.ui-icon-battery-1 { background-position: -64px -176px; }
-.ui-icon-battery-2 { background-position: -80px -176px; }
-.ui-icon-battery-3 { background-position: -96px -176px; }
-.ui-icon-circle-plus { background-position: 0 -192px; }
-.ui-icon-circle-minus { background-position: -16px -192px; }
-.ui-icon-circle-close { background-position: -32px -192px; }
-.ui-icon-circle-triangle-e { background-position: -48px -192px; }
-.ui-icon-circle-triangle-s { background-position: -64px -192px; }
-.ui-icon-circle-triangle-w { background-position: -80px -192px; }
-.ui-icon-circle-triangle-n { background-position: -96px -192px; }
-.ui-icon-circle-arrow-e { background-position: -112px -192px; }
-.ui-icon-circle-arrow-s { background-position: -128px -192px; }
-.ui-icon-circle-arrow-w { background-position: -144px -192px; }
-.ui-icon-circle-arrow-n { background-position: -160px -192px; }
-.ui-icon-circle-zoomin { background-position: -176px -192px; }
-.ui-icon-circle-zoomout { background-position: -192px -192px; }
-.ui-icon-circle-check { background-position: -208px -192px; }
-.ui-icon-circlesmall-plus { background-position: 0 -208px; }
-.ui-icon-circlesmall-minus { background-position: -16px -208px; }
-.ui-icon-circlesmall-close { background-position: -32px -208px; }
-.ui-icon-squaresmall-plus { background-position: -48px -208px; }
-.ui-icon-squaresmall-minus { background-position: -64px -208px; }
-.ui-icon-squaresmall-close { background-position: -80px -208px; }
-.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
-.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
-.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
-.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
-.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
-.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
-
-
-/* Misc visuals
-----------------------------------*/
-
-/* Corner radius */
-.ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; }
-.ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; }
-.ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
-.ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
-.ui-corner-top { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; }
-.ui-corner-bottom { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
-.ui-corner-right { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
-.ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
-.ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; }
-
-/* Overlays */
-.ui-widget-overlay { background: #aaaaaa url(../img-ui/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
-.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(../img-ui/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/*
- * jQuery UI Datepicker 1.8.13
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Datepicker#theming
- */
-.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
-.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
-.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
-.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
-.ui-datepicker .ui-datepicker-prev { left:2px; }
-.ui-datepicker .ui-datepicker-next { right:2px; }
-.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
-.ui-datepicker .ui-datepicker-next-hover { right:1px; }
-.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
-.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
-.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
-.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
-.ui-datepicker select.ui-datepicker-month,
-.ui-datepicker select.ui-datepicker-year { width: 49%;}
-.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
-.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
-.ui-datepicker td { border: 0; padding: 1px; }
-.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
-.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
-.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
-.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
-
-/* with multiple calendars */
-.ui-datepicker.ui-datepicker-multi { width:auto; }
-.ui-datepicker-multi .ui-datepicker-group { float:left; }
-.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
-.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
-.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
-.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
-.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
-.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
-.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
-.ui-datepicker-row-break { clear:both; width:100%; }
-
-/* RTL support */
-.ui-datepicker-rtl { direction: rtl; }
-.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
-.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
-.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
-.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
-.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
-.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
-.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
-.ui-datepicker-rtl .ui-datepicker-group { float:right; }
-.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
-.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
-
-/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
-.ui-datepicker-cover {
- display: none; /*sorry for IE5*/
- display/**/: block; /*sorry for IE5*/
- position: absolute; /*must have*/
- z-index: -1; /*must have*/
- filter: mask(); /*must have*/
- top: -4px; /*must have*/
- left: -4px; /*must have*/
- width: 200px; /*must have*/
- height: 200px; /*must have*/
-}
+++ /dev/null
-/* PAGE STRUCTURE */
-#container { position:relative; width:100%; min-width:760px; padding:0; }
-#content { margin:10px 15px; }
-#header { width:100%; }
-#content-main { float:left; width:100%; }
-#content-related { float:right; width:18em; position:relative; margin-right:-19em; }
-#footer { clear:both; padding:10px; }
-
-/* COLUMN TYPES */
-.colMS { margin-right:20em !important; }
-.colSM { margin-left:20em !important; }
-.colSM #content-related { float:left; margin-right:0; margin-left:-19em; }
-.colSM #content-main { float:right; }
-.popup .colM { width:95%; }
-.subcol { float:left; width:46%; margin-right:15px; }
-.dashboard #content { width:500px; }
-
-/* HEADER */
-#header { background:#BDBDBD url(../img/topbg.gif) left repeat-x; color:#565656; overflow:hidden; border-bottom:1px solid #8B8B8B;}
-#header a:link, #header a:visited { color:#006A95; }
-#header a:hover { text-decoration:underline; }
-#branding h1 { padding:0 16px; font-size:18px; margin:8px 0; font-weight:normal; }
-#branding h2 { padding:0 10px; font-size:14px; margin:-8px 0 8px 0; font-weight:normal; color:#ffc; }
-#user-tools { position:absolute; top:0; right:0; padding:8px 10px; font-size:11px; text-align:right; }
-#user-tools span{ font-size:9px; color:#ADA9AD;}
-
-/* SIDEBAR */
-#content-related h3 { font-size:12px; color:#666; margin-bottom:3px; }
-#content-related h4 { font-size:11px; }
-#content-related .module h2 { background:#eee url(../img/nav-bg.gif) bottom left repeat-x; color:#666; }
\ No newline at end of file
+++ /dev/null
-@import url('base.css');
-@import url('layout.css');
-
-/* LOGIN FORM */
-body.login { background:#eee; }
-.login #container { background:white; border:1px solid #ccc; width:28em; min-width:300px; margin-left:auto; margin-right:auto; margin-top:100px; }
-.login #content-main { width:100%; }
-.login form { margin-top:1em; }
-.login .form-row { padding:4px 0; float:left; width:100%; }
-.login .form-row label { float:left; width:9em; padding-right:0.5em; line-height:2em; text-align:right; font-size:1em; color:#333; }
-.login .form-row #id_username, .login .form-row #id_password { width:14em; }
-.login span.help { font-size:10px; display:block; }
-.login .submit-row { clear:both; padding:1em 0 0 9.4em; }
\ No newline at end of file
+++ /dev/null
-/* Nothing to see here. Dummy file to feed to the high pass filter which hides CSS from IE5/win. Details: http://tantek.com/CSS/Examples/highpass.html */
\ No newline at end of file
+++ /dev/null
-* html #container { position:static; } /* keep header from flowing off the page */
-* html .colMS #content-related { margin-right:0; margin-left:10px; position:static; } /* put the right sidebars back on the page */
-* html .colSM #content-related { margin-right:10px; margin-left:-115px; position:static; } /* put the left sidebars back on the page */
-* html .form-row { height:1%; }
-* html .dashboard #content { width:768px; } /* proper fixed width for dashboard in IE6 */
-* html .dashboard #content-main { width:535px; } /* proper fixed width for dashboard in IE6 */
-* html #changelist-filter ul { margin-right:-10px; } /* fix right margin for changelist filters in IE6 */
-* html .change-list .filtered { height:400px; } /* IE ignores min-height, but treats height as if it were min-height */
\ No newline at end of file
+++ /dev/null
-#content {margin:0;}
-#changelist-filter{display:none;}
-#header{display:none;}
-#footer{display:none;}
-.breadcrumbs{display:none;}
-.paginator{display:none;}
-.object-tools{display:none;}
\ No newline at end of file
+++ /dev/null
-body { direction: rtl; }
-
-/* login styles */
-
-.login .form-row { float:right; }
-.login .form-row label { float:right; padding-left:0.5em; padding-right:0; text-align:left;}
-.login .submit-row { clear:both; padding:1em 9.4em 0 0; }
-
-
-/* global styles */
-th { text-align: right; }
-.module h2, .module caption { text-align: right; }
-.addlink, .changelink { padding-left:0px; padding-right:12px; background-position:100% 0.2em; }
-.deletelink { padding-left:0px; padding-right:12px; background-position:100% 0.25em; }
-.object-tools { float:left; }
-
-
-/* layout styles */
-#user-tools { right:auto; left:0; text-align:left; }
-div.breadcrumbs { text-align:right; }
-#content-main { float:right;}
-#content-related { float:left; margin-left:-19em; margin-right:auto;}
-.colMS { margin-left:20em !important; margin-right:10px !important;}
-
-/* dashboard styles */
-.dashboard .module table td a { padding-left:.6em; padding-right:12px; }
-
-/* changelists styles */
-.change-list .filtered { background:white url(../img/changelist-bg_rtl.gif) top left repeat-y !important; }
-.change-list .filtered table { border-left:1px solid #ddd; border-right:0px none; }
-#changelist-filter { right:auto; left:0; border-left:0px none; border-right:1px solid #ddd;}
-.change-list .filtered table, .change-list .filtered .paginator, .filtered #toolbar, .filtered div.xfull { margin-right:0px !important; margin-left:160px !important; }
-#changelist-filter li.selected { border-left:0px none; padding-left:0px; margin-left:0; border-right:5px solid #ccc; padding-right:5px;margin-right:-10px; }
-
-/* fomrs styles */
-.aligned label { padding:0 0 3px 1em; float:right; }
-.submit-row { text-align: left }
-.vDateField, .vTimeField { margin-left:2px; }
-
-/* widget styles */
-.calendarnav-previous { top:0; left:auto; right:0; }
-.calendarnav-next { top:0; right:auto; left:0;}
-.calendar caption, .calendarbox h2 { text-align:center; }
-
-.selector { float: right;}
-.selector .selector-filter { text-align: right;}
+++ /dev/null
-/* SELECTOR (FILTER INTERFACE) */
-.selector { width:580px; float:left; }
-.selector select { width:270px; height:17.2em; }
-.selector-available, .selector-chosen { float:left; width:270px; text-align:center; margin-bottom:5px; }
-.selector-available h2, .selector-chosen h2 { border:1px solid #ccc; }
-.selector .selector-available h2 { background:white url(../img/nav-bg.gif) bottom left repeat-x; color:#666; }
-.selector .selector-filter { background:white; border:1px solid #ccc; border-width:0 1px; padding:3px; color:#999; font-size:10px; margin:0; text-align:left; }
-.selector .selector-chosen .selector-filter { padding:4px 5px; }
-.selector .selector-available input { width:230px; }
-.selector ul.selector-chooser { float:left; width:22px; height:50px; background:url(../img/chooser-bg.gif) top center no-repeat; margin:8em 3px 0 3px; padding:0; }
-.selector-chooser li { margin:0; padding:3px; list-style-type:none; }
-.selector select { margin-bottom:5px; margin-top:0; }
-.selector-add, .selector-remove { width:16px; height:16px; display:block; text-indent:-3000px; }
-.selector-add { background:url(../img/selector-add.gif) top center no-repeat; margin-bottom:2px; }
-.selector-remove { background:url(../img/selector-remove.gif) top center no-repeat; }
-a.selector-chooseall, a.selector-clearall { display:block; width:6em; text-align:left; margin-left:auto; margin-right:auto; font-weight:bold; color:#666; padding:3px 0 3px 18px; }
-a.selector-chooseall:hover, a.selector-clearall:hover { color:#036; }
-a.selector-chooseall { width:7em; background:url(../img/selector-addall.gif) left center no-repeat; }
-a.selector-clearall { background:url(../img/selector-removeall.gif) left center no-repeat; }
-
-/* STACKED SELECTORS */
-.stacked { float:left; width:500px; }
-.stacked select { width:480px; height:10.1em; }
-.stacked .selector-available, .stacked .selector-chosen { width:480px; }
-.stacked .selector-available { margin-bottom:0; }
-.stacked .selector-available input { width:442px; }
-.stacked ul.selector-chooser { height:22px; width:50px; margin:0 0 3px 40%; background:url(../img/chooser_stacked-bg.gif) top center no-repeat; }
-.stacked .selector-chooser li { float:left; padding:3px 3px 3px 5px; }
-.stacked .selector-chooseall, .stacked .selector-clearall { display:none; }
-.stacked .selector-add { background-image:url(../img/selector_stacked-add.gif); }
-.stacked .selector-remove { background-image:url(../img/selector_stacked-remove.gif); }
-
-/* DATE AND TIME */
-p.datetime { line-height:20px; margin:0; padding:0; color:#666; font-size:11px; font-weight:bold; }
-.datetime span { font-size:11px; color:#ccc; font-weight:normal; white-space:nowrap; }
-.vDateField { margin-left:4px; }
-table p.datetime { font-size:10px; margin-left:0; padding-left:0; }
-
-/* FILE UPLOADS */
-p.file-upload { line-height:20px; margin:0; padding:0; color:#666; font-size:11px; font-weight:bold; }
-.file-upload a { font-weight:normal; }
-.file-upload .deletelink { margin-left:5px; }
-
-/* CALENDARS & CLOCKS */
-.calendarbox, .clockbox { margin:5px auto; font-size:11px; width:16em; text-align:center; background:white; position:relative; }
-.clockbox { width:auto; }
-.calendar { margin:0; padding: 0; }
-.calendar table { margin:0; padding:0; border-collapse:collapse; background:white; width:99%; }
-.calendar caption, .calendarbox h2 { margin: 0; font-size:11px; text-align:center; border-top:none; }
-.calendar th { font-size:10px; color:#666; padding:2px 3px; text-align:center; background:#e1e1e1 url(../img/nav-bg.gif) 0 50% repeat-x; border-bottom:1px solid #ddd; }
-.calendar td { font-size:11px; text-align: center; padding: 0; border-top:1px solid #eee; border-bottom:none; }
-.calendar td.selected a { background: #C9DBED; }
-.calendar td.nonday { background:#efefef; }
-.calendar td.today a { background:#ffc; }
-.calendar td a, .timelist a { display: block; font-weight:bold; padding:4px; text-decoration: none; color:#444; }
-.calendar td a:hover, .timelist a:hover { background: #5b80b2; color:white; }
-.calendar td a:active, .timelist a:active { background: #036; color:white; }
-.calendarnav { font-size:10px; text-align: center; color:#ccc; margin:0; padding:1px 3px; }
-.calendarnav a:link, #calendarnav a:visited, #calendarnav a:hover { color: #999; }
-.calendar-shortcuts { background:white; font-size:10px; line-height:11px; border-top:1px solid #eee; padding:3px 0 4px; color:#ccc; }
-.calendarbox .calendarnav-previous, .calendarbox .calendarnav-next { display:block; position:absolute; font-weight:bold; font-size:12px; background:#C9DBED url(../img/default-bg.gif) bottom left repeat-x; padding:1px 4px 2px 4px; color:white; }
-.calendarnav-previous:hover, .calendarnav-next:hover { background:#036; }
-.calendarnav-previous { top:0; left:0; }
-.calendarnav-next { top:0; right:0; }
-.calendar-cancel { margin:0 !important; padding:0; font-size:10px; background:#e1e1e1 url(../img/nav-bg.gif) 0 50% repeat-x; border-top:1px solid #ddd; }
-.calendar-cancel a { padding:2px; color:#999; }
-ul.timelist, .timelist li { list-style-type:none; margin:0; padding:0; }
-.timelist a { padding:2px; }
-
-/* INLINE ORDERER */
-ul.orderer { position:relative; padding:0 !important; margin:0 !important; list-style-type:none; }
-ul.orderer li { list-style-type:none; display:block; padding:0; margin:0; border:1px solid #bbb; border-width:0 1px 1px 0; white-space:nowrap; overflow:hidden; background:#e2e2e2 url(../img/nav-bg-grabber.gif) repeat-y; }
-ul.orderer li:hover { cursor:move; background-color:#ddd; }
-ul.orderer li a.selector { margin-left:12px; overflow:hidden; width:83%; font-size:10px !important; padding:0.6em 0; }
-ul.orderer li a:link, ul.orderer li a:visited { color:#333; }
-ul.orderer li .inline-deletelink { position:absolute; right:4px; margin-top:0.6em; }
-ul.orderer li.selected { background-color:#f8f8f8; border-right-color:#f8f8f8; }
-ul.orderer li.deleted { background:#bbb url(../img/deleted-overlay.gif); }
-ul.orderer li.deleted a:link, ul.orderer li.deleted a:visited { color:#888; }
-ul.orderer li.deleted .inline-deletelink { background-image:url(../img/inline-restore.png); }
-ul.orderer li.deleted:hover, ul.orderer li.deleted a.selector:hover { cursor:default; }
-
-/* EDIT INLINE */
-.inline-deletelink { display:block; text-indent:-9999px; background:transparent url(../img/inline-delete.png) no-repeat; width:15px; height:15px; margin:0.4em 0; border: 0px none; }
-.inline-deletelink:hover { background-position:-15px 0; cursor:pointer; }
-.editinline button.addlink { border: 0px none; color: #5b80b2; font-size: 100%; cursor: pointer; }
-.editinline button.addlink:hover { color: #036; cursor: pointer; }
-.editinline table .help { text-align:right; float:right; padding-left:2em; }
-.editinline tfoot .addlink { white-space:nowrap; }
-.editinline table thead th:last-child { border-left:none; }
-.editinline tr.deleted { background:#ddd url(../img/deleted-overlay.gif); }
-.editinline tr.deleted .inline-deletelink { background-image:url(../img/inline-restore.png); }
-.editinline tr.deleted td:hover { cursor:default; }
-.editinline tr.deleted td:first-child { background-image:none !important; }
-
-/* EDIT INLINE - STACKED */
-.editinline-stacked { min-width:758px; }
-.editinline-stacked .inline-object { margin-left:210px; background:white; }
-.editinline-stacked .inline-source { float:left; width:200px; background:#f8f8f8; }
-.editinline-stacked .inline-splitter { float:left; width:9px; background:#f8f8f8 url(../img/inline-splitter-bg.gif) 50% 50% no-repeat; border-right:1px solid #ccc; }
-.editinline-stacked .controls { clear:both; background:#e1e1e1 url(../img/nav-bg.gif) top left repeat-x; padding:3px 4px; font-size:11px; border-top:1px solid #ddd; }
\ No newline at end of file
+++ /dev/null
-$(function(){
- $('.dateinput').datepicker({dateFormat: 'yy-mm-dd'});
-
- $('.checkgroup').closest('ul').each(function(){
- var master = $(this),
- tools = $('<ul class="object-tools"><li><a href="#" class="checkall">Check All</a></li><li><a href="#">Uncheck All</a></li></ul>');
- master.before(tools).addClass('checkgroup_master');
- tools.find('a').click(function(){
- var check = $(this).hasClass('checkall');
- master.find('input').attr('checked', check);
- return false;
- });
- });
-});
-
+++ /dev/null
-/*!
- * jQuery UI 1.8.13
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI
- */
-(function(c,j){function k(a,b){var d=a.nodeName.toLowerCase();if("area"===d){b=a.parentNode;d=b.name;if(!a.href||!d||b.nodeName.toLowerCase()!=="map")return false;a=c("img[usemap=#"+d+"]")[0];return!!a&&l(a)}return(/input|select|textarea|button|object/.test(d)?!a.disabled:"a"==d?a.href||b:b)&&l(a)}function l(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.13",
-keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});c.fn.extend({_focus:c.fn.focus,focus:function(a,b){return typeof a==="number"?this.each(function(){var d=this;setTimeout(function(){c(d).focus();
-b&&b.call(d)},a)}):this._focus.apply(this,arguments)},scrollParent:function(){var a;a=c.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(c.curCSS(this,"position",1))&&/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,
-"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!a.length?c(document):a},zIndex:function(a){if(a!==j)return this.css("zIndex",a);if(this.length){a=c(this[0]);for(var b;a.length&&a[0]!==document;){b=a.css("position");if(b==="absolute"||b==="relative"||b==="fixed"){b=parseInt(a.css("zIndex"),10);if(!isNaN(b)&&b!==0)return b}a=a.parent()}}return 0},disableSelection:function(){return this.bind((c.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",
-function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});c.each(["Width","Height"],function(a,b){function d(f,g,m,n){c.each(e,function(){g-=parseFloat(c.curCSS(f,"padding"+this,true))||0;if(m)g-=parseFloat(c.curCSS(f,"border"+this+"Width",true))||0;if(n)g-=parseFloat(c.curCSS(f,"margin"+this,true))||0});return g}var e=b==="Width"?["Left","Right"]:["Top","Bottom"],h=b.toLowerCase(),i={innerWidth:c.fn.innerWidth,innerHeight:c.fn.innerHeight,outerWidth:c.fn.outerWidth,
-outerHeight:c.fn.outerHeight};c.fn["inner"+b]=function(f){if(f===j)return i["inner"+b].call(this);return this.each(function(){c(this).css(h,d(this,f)+"px")})};c.fn["outer"+b]=function(f,g){if(typeof f!=="number")return i["outer"+b].call(this,f);return this.each(function(){c(this).css(h,d(this,f,true,g)+"px")})}});c.extend(c.expr[":"],{data:function(a,b,d){return!!c.data(a,d[3])},focusable:function(a){return k(a,!isNaN(c.attr(a,"tabindex")))},tabbable:function(a){var b=c.attr(a,"tabindex"),d=isNaN(b);
-return(d||b>=0)&&k(a,!d)}});c(function(){var a=document.body,b=a.appendChild(b=document.createElement("div"));c.extend(b.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});c.support.minHeight=b.offsetHeight===100;c.support.selectstart="onselectstart"in b;a.removeChild(b).style.display="none"});c.extend(c.ui,{plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=
-0;e<b.length;e++)a.options[b[e][0]]&&b[e][1].apply(a.element,d)}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(a,b){if(c(a).css("overflow")==="hidden")return false;b=b&&b==="left"?"scrollLeft":"scrollTop";var d=false;if(a[b]>0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a<b+d},isOver:function(a,b,d,e,h,i){return c.ui.isOverAxis(a,d,h)&&c.ui.isOverAxis(b,e,i)}})}})(jQuery);
-;/*
- * jQuery UI Datepicker 1.8.13
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Datepicker
- *
- * Depends:
- * jquery.ui.core.js
- */
-(function(d,B){function M(){this.debug=false;this._curInst=null;this._keyEvent=false;this._disabledInputs=[];this._inDialog=this._datepickerShowing=false;this._mainDivId="ui-datepicker-div";this._inlineClass="ui-datepicker-inline";this._appendClass="ui-datepicker-append";this._triggerClass="ui-datepicker-trigger";this._dialogClass="ui-datepicker-dialog";this._disableClass="ui-datepicker-disabled";this._unselectableClass="ui-datepicker-unselectable";this._currentClass="ui-datepicker-current-day";this._dayOverClass=
-"ui-datepicker-days-cell-over";this.regional=[];this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su",
-"Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:false,showMonthAfterYear:false,yearSuffix:""};this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:false,hideIfNoPrevNext:false,navigationAsDateFormat:false,gotoCurrent:false,changeMonth:false,changeYear:false,yearRange:"c-10:c+10",showOtherMonths:false,selectOtherMonths:false,showWeek:false,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",
-minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:true,showButtonPanel:false,autoSize:false};d.extend(this._defaults,this.regional[""]);this.dpDiv=N(d('<div id="'+this._mainDivId+'" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}function N(a){return a.delegate("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a",
-"mouseout",function(){d(this).removeClass("ui-state-hover");this.className.indexOf("ui-datepicker-prev")!=-1&&d(this).removeClass("ui-datepicker-prev-hover");this.className.indexOf("ui-datepicker-next")!=-1&&d(this).removeClass("ui-datepicker-next-hover")}).delegate("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a","mouseover",function(){if(!d.datepicker._isDisabledDatepicker(J.inline?a.parent()[0]:J.input[0])){d(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");
-d(this).addClass("ui-state-hover");this.className.indexOf("ui-datepicker-prev")!=-1&&d(this).addClass("ui-datepicker-prev-hover");this.className.indexOf("ui-datepicker-next")!=-1&&d(this).addClass("ui-datepicker-next-hover")}})}function H(a,b){d.extend(a,b);for(var c in b)if(b[c]==null||b[c]==B)a[c]=b[c];return a}d.extend(d.ui,{datepicker:{version:"1.8.13"}});var z=(new Date).getTime(),J;d.extend(M.prototype,{markerClassName:"hasDatepicker",log:function(){this.debug&&console.log.apply("",arguments)},
-_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(a){H(this._defaults,a||{});return this},_attachDatepicker:function(a,b){var c=null;for(var e in this._defaults){var f=a.getAttribute("date:"+e);if(f){c=c||{};try{c[e]=eval(f)}catch(h){c[e]=f}}}e=a.nodeName.toLowerCase();f=e=="div"||e=="span";if(!a.id){this.uuid+=1;a.id="dp"+this.uuid}var i=this._newInst(d(a),f);i.settings=d.extend({},b||{},c||{});if(e=="input")this._connectDatepicker(a,i);else f&&this._inlineDatepicker(a,i)},_newInst:function(a,
-b){return{id:a[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1"),input:a,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:b,dpDiv:!b?this.dpDiv:N(d('<div class="'+this._inlineClass+' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}},_connectDatepicker:function(a,b){var c=d(a);b.append=d([]);b.trigger=d([]);if(!c.hasClass(this.markerClassName)){this._attachments(c,b);c.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",
-function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});this._autoSize(b);d.data(a,"datepicker",b)}},_attachments:function(a,b){var c=this._get(b,"appendText"),e=this._get(b,"isRTL");b.append&&b.append.remove();if(c){b.append=d('<span class="'+this._appendClass+'">'+c+"</span>");a[e?"before":"after"](b.append)}a.unbind("focus",this._showDatepicker);b.trigger&&b.trigger.remove();c=this._get(b,"showOn");if(c=="focus"||c=="both")a.focus(this._showDatepicker);
-if(c=="button"||c=="both"){c=this._get(b,"buttonText");var f=this._get(b,"buttonImage");b.trigger=d(this._get(b,"buttonImageOnly")?d("<img/>").addClass(this._triggerClass).attr({src:f,alt:c,title:c}):d('<button type="button"></button>').addClass(this._triggerClass).html(f==""?c:d("<img/>").attr({src:f,alt:c,title:c})));a[e?"before":"after"](b.trigger);b.trigger.click(function(){d.datepicker._datepickerShowing&&d.datepicker._lastInput==a[0]?d.datepicker._hideDatepicker():d.datepicker._showDatepicker(a[0]);
-return false})}},_autoSize:function(a){if(this._get(a,"autoSize")&&!a.inline){var b=new Date(2009,11,20),c=this._get(a,"dateFormat");if(c.match(/[DM]/)){var e=function(f){for(var h=0,i=0,g=0;g<f.length;g++)if(f[g].length>h){h=f[g].length;i=g}return i};b.setMonth(e(this._get(a,c.match(/MM/)?"monthNames":"monthNamesShort")));b.setDate(e(this._get(a,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-b.getDay())}a.input.attr("size",this._formatDate(a,b).length)}},_inlineDatepicker:function(a,b){var c=d(a);
-if(!c.hasClass(this.markerClassName)){c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker",function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});d.data(a,"datepicker",b);this._setDate(b,this._getDefaultDate(b),true);this._updateDatepicker(b);this._updateAlternate(b);b.dpDiv.show()}},_dialogDatepicker:function(a,b,c,e,f){a=this._dialogInst;if(!a){this.uuid+=1;this._dialogInput=d('<input type="text" id="'+("dp"+this.uuid)+'" style="position: absolute; top: -100px; width: 0px; z-index: -10;"/>');
-this._dialogInput.keydown(this._doKeyDown);d("body").append(this._dialogInput);a=this._dialogInst=this._newInst(this._dialogInput,false);a.settings={};d.data(this._dialogInput[0],"datepicker",a)}H(a.settings,e||{});b=b&&b.constructor==Date?this._formatDate(a,b):b;this._dialogInput.val(b);this._pos=f?f.length?f:[f.pageX,f.pageY]:null;if(!this._pos)this._pos=[document.documentElement.clientWidth/2-100+(document.documentElement.scrollLeft||document.body.scrollLeft),document.documentElement.clientHeight/
-2-150+(document.documentElement.scrollTop||document.body.scrollTop)];this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px");a.settings.onSelect=c;this._inDialog=true;this.dpDiv.addClass(this._dialogClass);this._showDatepicker(this._dialogInput[0]);d.blockUI&&d.blockUI(this.dpDiv);d.data(this._dialogInput[0],"datepicker",a);return this},_destroyDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();d.removeData(a,
-"datepicker");if(e=="input"){c.append.remove();c.trigger.remove();b.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)}else if(e=="div"||e=="span")b.removeClass(this.markerClassName).empty()}},_enableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=false;c.trigger.filter("button").each(function(){this.disabled=
-false}).end().filter("img").css({opacity:"1.0",cursor:""})}else if(e=="div"||e=="span"){b=b.children("."+this._inlineClass);b.children().removeClass("ui-state-disabled");b.find("select.ui-datepicker-month, select.ui-datepicker-year").removeAttr("disabled")}this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null:f})}},_disableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=
-true;c.trigger.filter("button").each(function(){this.disabled=true}).end().filter("img").css({opacity:"0.5",cursor:"default"})}else if(e=="div"||e=="span"){b=b.children("."+this._inlineClass);b.children().addClass("ui-state-disabled");b.find("select.ui-datepicker-month, select.ui-datepicker-year").attr("disabled","disabled")}this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null:f});this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(a){if(!a)return false;
-for(var b=0;b<this._disabledInputs.length;b++)if(this._disabledInputs[b]==a)return true;return false},_getInst:function(a){try{return d.data(a,"datepicker")}catch(b){throw"Missing instance data for this datepicker";}},_optionDatepicker:function(a,b,c){var e=this._getInst(a);if(arguments.length==2&&typeof b=="string")return b=="defaults"?d.extend({},d.datepicker._defaults):e?b=="all"?d.extend({},e.settings):this._get(e,b):null;var f=b||{};if(typeof b=="string"){f={};f[b]=c}if(e){this._curInst==e&&
-this._hideDatepicker();var h=this._getDateDatepicker(a,true),i=this._getMinMaxDate(e,"min"),g=this._getMinMaxDate(e,"max");H(e.settings,f);if(i!==null&&f.dateFormat!==B&&f.minDate===B)e.settings.minDate=this._formatDate(e,i);if(g!==null&&f.dateFormat!==B&&f.maxDate===B)e.settings.maxDate=this._formatDate(e,g);this._attachments(d(a),e);this._autoSize(e);this._setDate(e,h);this._updateAlternate(e);this._updateDatepicker(e)}},_changeDatepicker:function(a,b,c){this._optionDatepicker(a,b,c)},_refreshDatepicker:function(a){(a=
-this._getInst(a))&&this._updateDatepicker(a)},_setDateDatepicker:function(a,b){if(a=this._getInst(a)){this._setDate(a,b);this._updateDatepicker(a);this._updateAlternate(a)}},_getDateDatepicker:function(a,b){(a=this._getInst(a))&&!a.inline&&this._setDateFromField(a,b);return a?this._getDate(a):null},_doKeyDown:function(a){var b=d.datepicker._getInst(a.target),c=true,e=b.dpDiv.is(".ui-datepicker-rtl");b._keyEvent=true;if(d.datepicker._datepickerShowing)switch(a.keyCode){case 9:d.datepicker._hideDatepicker();
-c=false;break;case 13:c=d("td."+d.datepicker._dayOverClass+":not(."+d.datepicker._currentClass+")",b.dpDiv);c[0]?d.datepicker._selectDay(a.target,b.selectedMonth,b.selectedYear,c[0]):d.datepicker._hideDatepicker();return false;case 27:d.datepicker._hideDatepicker();break;case 33:d.datepicker._adjustDate(a.target,a.ctrlKey?-d.datepicker._get(b,"stepBigMonths"):-d.datepicker._get(b,"stepMonths"),"M");break;case 34:d.datepicker._adjustDate(a.target,a.ctrlKey?+d.datepicker._get(b,"stepBigMonths"):+d.datepicker._get(b,
-"stepMonths"),"M");break;case 35:if(a.ctrlKey||a.metaKey)d.datepicker._clearDate(a.target);c=a.ctrlKey||a.metaKey;break;case 36:if(a.ctrlKey||a.metaKey)d.datepicker._gotoToday(a.target);c=a.ctrlKey||a.metaKey;break;case 37:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,e?+1:-1,"D");c=a.ctrlKey||a.metaKey;if(a.originalEvent.altKey)d.datepicker._adjustDate(a.target,a.ctrlKey?-d.datepicker._get(b,"stepBigMonths"):-d.datepicker._get(b,"stepMonths"),"M");break;case 38:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,
--7,"D");c=a.ctrlKey||a.metaKey;break;case 39:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,e?-1:+1,"D");c=a.ctrlKey||a.metaKey;if(a.originalEvent.altKey)d.datepicker._adjustDate(a.target,a.ctrlKey?+d.datepicker._get(b,"stepBigMonths"):+d.datepicker._get(b,"stepMonths"),"M");break;case 40:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,+7,"D");c=a.ctrlKey||a.metaKey;break;default:c=false}else if(a.keyCode==36&&a.ctrlKey)d.datepicker._showDatepicker(this);else c=false;if(c){a.preventDefault();
-a.stopPropagation()}},_doKeyPress:function(a){var b=d.datepicker._getInst(a.target);if(d.datepicker._get(b,"constrainInput")){b=d.datepicker._possibleChars(d.datepicker._get(b,"dateFormat"));var c=String.fromCharCode(a.charCode==B?a.keyCode:a.charCode);return a.ctrlKey||a.metaKey||c<" "||!b||b.indexOf(c)>-1}},_doKeyUp:function(a){a=d.datepicker._getInst(a.target);if(a.input.val()!=a.lastVal)try{if(d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),a.input?a.input.val():null,d.datepicker._getFormatConfig(a))){d.datepicker._setDateFromField(a);
-d.datepicker._updateAlternate(a);d.datepicker._updateDatepicker(a)}}catch(b){d.datepicker.log(b)}return true},_showDatepicker:function(a){a=a.target||a;if(a.nodeName.toLowerCase()!="input")a=d("input",a.parentNode)[0];if(!(d.datepicker._isDisabledDatepicker(a)||d.datepicker._lastInput==a)){var b=d.datepicker._getInst(a);d.datepicker._curInst&&d.datepicker._curInst!=b&&d.datepicker._curInst.dpDiv.stop(true,true);var c=d.datepicker._get(b,"beforeShow");H(b.settings,c?c.apply(a,[a,b]):{});b.lastVal=
-null;d.datepicker._lastInput=a;d.datepicker._setDateFromField(b);if(d.datepicker._inDialog)a.value="";if(!d.datepicker._pos){d.datepicker._pos=d.datepicker._findPos(a);d.datepicker._pos[1]+=a.offsetHeight}var e=false;d(a).parents().each(function(){e|=d(this).css("position")=="fixed";return!e});if(e&&d.browser.opera){d.datepicker._pos[0]-=document.documentElement.scrollLeft;d.datepicker._pos[1]-=document.documentElement.scrollTop}c={left:d.datepicker._pos[0],top:d.datepicker._pos[1]};d.datepicker._pos=
-null;b.dpDiv.empty();b.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});d.datepicker._updateDatepicker(b);c=d.datepicker._checkOffset(b,c,e);b.dpDiv.css({position:d.datepicker._inDialog&&d.blockUI?"static":e?"fixed":"absolute",display:"none",left:c.left+"px",top:c.top+"px"});if(!b.inline){c=d.datepicker._get(b,"showAnim");var f=d.datepicker._get(b,"duration"),h=function(){var i=b.dpDiv.find("iframe.ui-datepicker-cover");if(i.length){var g=d.datepicker._getBorders(b.dpDiv);i.css({left:-g[0],
-top:-g[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()})}};b.dpDiv.zIndex(d(a).zIndex()+1);d.datepicker._datepickerShowing=true;d.effects&&d.effects[c]?b.dpDiv.show(c,d.datepicker._get(b,"showOptions"),f,h):b.dpDiv[c||"show"](c?f:null,h);if(!c||!f)h();b.input.is(":visible")&&!b.input.is(":disabled")&&b.input.focus();d.datepicker._curInst=b}}},_updateDatepicker:function(a){var b=d.datepicker._getBorders(a.dpDiv);J=a;a.dpDiv.empty().append(this._generateHTML(a));var c=a.dpDiv.find("iframe.ui-datepicker-cover");
-c.length&&c.css({left:-b[0],top:-b[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()});a.dpDiv.find("."+this._dayOverClass+" a").mouseover();b=this._getNumberOfMonths(a);c=b[1];a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");c>1&&a.dpDiv.addClass("ui-datepicker-multi-"+c).css("width",17*c+"em");a.dpDiv[(b[0]!=1||b[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi");a.dpDiv[(this._get(a,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl");
-a==d.datepicker._curInst&&d.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&&!a.input.is(":disabled")&&a.input[0]!=document.activeElement&&a.input.focus();if(a.yearshtml){var e=a.yearshtml;setTimeout(function(){e===a.yearshtml&&a.yearshtml&&a.dpDiv.find("select.ui-datepicker-year:first").replaceWith(a.yearshtml);e=a.yearshtml=null},0)}},_getBorders:function(a){var b=function(c){return{thin:1,medium:2,thick:3}[c]||c};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]},
-_checkOffset:function(a,b,c){var e=a.dpDiv.outerWidth(),f=a.dpDiv.outerHeight(),h=a.input?a.input.outerWidth():0,i=a.input?a.input.outerHeight():0,g=document.documentElement.clientWidth+d(document).scrollLeft(),j=document.documentElement.clientHeight+d(document).scrollTop();b.left-=this._get(a,"isRTL")?e-h:0;b.left-=c&&b.left==a.input.offset().left?d(document).scrollLeft():0;b.top-=c&&b.top==a.input.offset().top+i?d(document).scrollTop():0;b.left-=Math.min(b.left,b.left+e>g&&g>e?Math.abs(b.left+e-
-g):0);b.top-=Math.min(b.top,b.top+f>j&&j>f?Math.abs(f+i):0);return b},_findPos:function(a){for(var b=this._get(this._getInst(a),"isRTL");a&&(a.type=="hidden"||a.nodeType!=1||d.expr.filters.hidden(a));)a=a[b?"previousSibling":"nextSibling"];a=d(a).offset();return[a.left,a.top]},_hideDatepicker:function(a){var b=this._curInst;if(!(!b||a&&b!=d.data(a,"datepicker")))if(this._datepickerShowing){a=this._get(b,"showAnim");var c=this._get(b,"duration"),e=function(){d.datepicker._tidyDialog(b);this._curInst=
-null};d.effects&&d.effects[a]?b.dpDiv.hide(a,d.datepicker._get(b,"showOptions"),c,e):b.dpDiv[a=="slideDown"?"slideUp":a=="fadeIn"?"fadeOut":"hide"](a?c:null,e);a||e();if(a=this._get(b,"onClose"))a.apply(b.input?b.input[0]:null,[b.input?b.input.val():"",b]);this._datepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute",left:"0",top:"-100px"});if(d.blockUI){d.unblockUI();d("body").append(this.dpDiv)}}this._inDialog=false}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},
-_checkExternalClick:function(a){if(d.datepicker._curInst){a=d(a.target);a[0].id!=d.datepicker._mainDivId&&a.parents("#"+d.datepicker._mainDivId).length==0&&!a.hasClass(d.datepicker.markerClassName)&&!a.hasClass(d.datepicker._triggerClass)&&d.datepicker._datepickerShowing&&!(d.datepicker._inDialog&&d.blockUI)&&d.datepicker._hideDatepicker()}},_adjustDate:function(a,b,c){a=d(a);var e=this._getInst(a[0]);if(!this._isDisabledDatepicker(a[0])){this._adjustInstDate(e,b+(c=="M"?this._get(e,"showCurrentAtPos"):
-0),c);this._updateDatepicker(e)}},_gotoToday:function(a){a=d(a);var b=this._getInst(a[0]);if(this._get(b,"gotoCurrent")&&b.currentDay){b.selectedDay=b.currentDay;b.drawMonth=b.selectedMonth=b.currentMonth;b.drawYear=b.selectedYear=b.currentYear}else{var c=new Date;b.selectedDay=c.getDate();b.drawMonth=b.selectedMonth=c.getMonth();b.drawYear=b.selectedYear=c.getFullYear()}this._notifyChange(b);this._adjustDate(a)},_selectMonthYear:function(a,b,c){a=d(a);var e=this._getInst(a[0]);e._selectingMonthYear=
-false;e["selected"+(c=="M"?"Month":"Year")]=e["draw"+(c=="M"?"Month":"Year")]=parseInt(b.options[b.selectedIndex].value,10);this._notifyChange(e);this._adjustDate(a)},_clickMonthYear:function(a){var b=this._getInst(d(a)[0]);b.input&&b._selectingMonthYear&&setTimeout(function(){b.input.focus()},0);b._selectingMonthYear=!b._selectingMonthYear},_selectDay:function(a,b,c,e){var f=d(a);if(!(d(e).hasClass(this._unselectableClass)||this._isDisabledDatepicker(f[0]))){f=this._getInst(f[0]);f.selectedDay=f.currentDay=
-d("a",e).html();f.selectedMonth=f.currentMonth=b;f.selectedYear=f.currentYear=c;this._selectDate(a,this._formatDate(f,f.currentDay,f.currentMonth,f.currentYear))}},_clearDate:function(a){a=d(a);this._getInst(a[0]);this._selectDate(a,"")},_selectDate:function(a,b){a=this._getInst(d(a)[0]);b=b!=null?b:this._formatDate(a);a.input&&a.input.val(b);this._updateAlternate(a);var c=this._get(a,"onSelect");if(c)c.apply(a.input?a.input[0]:null,[b,a]);else a.input&&a.input.trigger("change");if(a.inline)this._updateDatepicker(a);
-else{this._hideDatepicker();this._lastInput=a.input[0];typeof a.input[0]!="object"&&a.input.focus();this._lastInput=null}},_updateAlternate:function(a){var b=this._get(a,"altField");if(b){var c=this._get(a,"altFormat")||this._get(a,"dateFormat"),e=this._getDate(a),f=this.formatDate(c,e,this._getFormatConfig(a));d(b).each(function(){d(this).val(f)})}},noWeekends:function(a){a=a.getDay();return[a>0&&a<6,""]},iso8601Week:function(a){a=new Date(a.getTime());a.setDate(a.getDate()+4-(a.getDay()||7));var b=
-a.getTime();a.setMonth(0);a.setDate(1);return Math.floor(Math.round((b-a)/864E5)/7)+1},parseDate:function(a,b,c){if(a==null||b==null)throw"Invalid arguments";b=typeof b=="object"?b.toString():b+"";if(b=="")return null;var e=(c?c.shortYearCutoff:null)||this._defaults.shortYearCutoff;e=typeof e!="string"?e:(new Date).getFullYear()%100+parseInt(e,10);for(var f=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,h=(c?c.dayNames:null)||this._defaults.dayNames,i=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,
-g=(c?c.monthNames:null)||this._defaults.monthNames,j=c=-1,l=-1,u=-1,k=false,o=function(p){(p=A+1<a.length&&a.charAt(A+1)==p)&&A++;return p},m=function(p){var C=o(p);p=new RegExp("^\\d{1,"+(p=="@"?14:p=="!"?20:p=="y"&&C?4:p=="o"?3:2)+"}");p=b.substring(s).match(p);if(!p)throw"Missing number at position "+s;s+=p[0].length;return parseInt(p[0],10)},n=function(p,C,K){p=d.map(o(p)?K:C,function(w,x){return[[x,w]]}).sort(function(w,x){return-(w[1].length-x[1].length)});var E=-1;d.each(p,function(w,x){w=
-x[1];if(b.substr(s,w.length).toLowerCase()==w.toLowerCase()){E=x[0];s+=w.length;return false}});if(E!=-1)return E+1;else throw"Unknown name at position "+s;},r=function(){if(b.charAt(s)!=a.charAt(A))throw"Unexpected literal at position "+s;s++},s=0,A=0;A<a.length;A++)if(k)if(a.charAt(A)=="'"&&!o("'"))k=false;else r();else switch(a.charAt(A)){case "d":l=m("d");break;case "D":n("D",f,h);break;case "o":u=m("o");break;case "m":j=m("m");break;case "M":j=n("M",i,g);break;case "y":c=m("y");break;case "@":var v=
-new Date(m("@"));c=v.getFullYear();j=v.getMonth()+1;l=v.getDate();break;case "!":v=new Date((m("!")-this._ticksTo1970)/1E4);c=v.getFullYear();j=v.getMonth()+1;l=v.getDate();break;case "'":if(o("'"))r();else k=true;break;default:r()}if(c==-1)c=(new Date).getFullYear();else if(c<100)c+=(new Date).getFullYear()-(new Date).getFullYear()%100+(c<=e?0:-100);if(u>-1){j=1;l=u;do{e=this._getDaysInMonth(c,j-1);if(l<=e)break;j++;l-=e}while(1)}v=this._daylightSavingAdjust(new Date(c,j-1,l));if(v.getFullYear()!=
-c||v.getMonth()+1!=j||v.getDate()!=l)throw"Invalid date";return v},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1E7,formatDate:function(a,b,c){if(!b)return"";var e=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,f=(c?c.dayNames:null)||this._defaults.dayNames,
-h=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort;c=(c?c.monthNames:null)||this._defaults.monthNames;var i=function(o){(o=k+1<a.length&&a.charAt(k+1)==o)&&k++;return o},g=function(o,m,n){m=""+m;if(i(o))for(;m.length<n;)m="0"+m;return m},j=function(o,m,n,r){return i(o)?r[m]:n[m]},l="",u=false;if(b)for(var k=0;k<a.length;k++)if(u)if(a.charAt(k)=="'"&&!i("'"))u=false;else l+=a.charAt(k);else switch(a.charAt(k)){case "d":l+=g("d",b.getDate(),2);break;case "D":l+=j("D",b.getDay(),e,f);break;
-case "o":l+=g("o",(b.getTime()-(new Date(b.getFullYear(),0,0)).getTime())/864E5,3);break;case "m":l+=g("m",b.getMonth()+1,2);break;case "M":l+=j("M",b.getMonth(),h,c);break;case "y":l+=i("y")?b.getFullYear():(b.getYear()%100<10?"0":"")+b.getYear()%100;break;case "@":l+=b.getTime();break;case "!":l+=b.getTime()*1E4+this._ticksTo1970;break;case "'":if(i("'"))l+="'";else u=true;break;default:l+=a.charAt(k)}return l},_possibleChars:function(a){for(var b="",c=false,e=function(h){(h=f+1<a.length&&a.charAt(f+
-1)==h)&&f++;return h},f=0;f<a.length;f++)if(c)if(a.charAt(f)=="'"&&!e("'"))c=false;else b+=a.charAt(f);else switch(a.charAt(f)){case "d":case "m":case "y":case "@":b+="0123456789";break;case "D":case "M":return null;case "'":if(e("'"))b+="'";else c=true;break;default:b+=a.charAt(f)}return b},_get:function(a,b){return a.settings[b]!==B?a.settings[b]:this._defaults[b]},_setDateFromField:function(a,b){if(a.input.val()!=a.lastVal){var c=this._get(a,"dateFormat"),e=a.lastVal=a.input?a.input.val():null,
-f,h;f=h=this._getDefaultDate(a);var i=this._getFormatConfig(a);try{f=this.parseDate(c,e,i)||h}catch(g){this.log(g);e=b?"":e}a.selectedDay=f.getDate();a.drawMonth=a.selectedMonth=f.getMonth();a.drawYear=a.selectedYear=f.getFullYear();a.currentDay=e?f.getDate():0;a.currentMonth=e?f.getMonth():0;a.currentYear=e?f.getFullYear():0;this._adjustInstDate(a)}},_getDefaultDate:function(a){return this._restrictMinMax(a,this._determineDate(a,this._get(a,"defaultDate"),new Date))},_determineDate:function(a,b,
-c){var e=function(h){var i=new Date;i.setDate(i.getDate()+h);return i},f=function(h){try{return d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),h,d.datepicker._getFormatConfig(a))}catch(i){}var g=(h.toLowerCase().match(/^c/)?d.datepicker._getDate(a):null)||new Date,j=g.getFullYear(),l=g.getMonth();g=g.getDate();for(var u=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,k=u.exec(h);k;){switch(k[2]||"d"){case "d":case "D":g+=parseInt(k[1],10);break;case "w":case "W":g+=parseInt(k[1],10)*7;break;case "m":case "M":l+=
-parseInt(k[1],10);g=Math.min(g,d.datepicker._getDaysInMonth(j,l));break;case "y":case "Y":j+=parseInt(k[1],10);g=Math.min(g,d.datepicker._getDaysInMonth(j,l));break}k=u.exec(h)}return new Date(j,l,g)};if(b=(b=b==null||b===""?c:typeof b=="string"?f(b):typeof b=="number"?isNaN(b)?c:e(b):new Date(b.getTime()))&&b.toString()=="Invalid Date"?c:b){b.setHours(0);b.setMinutes(0);b.setSeconds(0);b.setMilliseconds(0)}return this._daylightSavingAdjust(b)},_daylightSavingAdjust:function(a){if(!a)return null;
-a.setHours(a.getHours()>12?a.getHours()+2:0);return a},_setDate:function(a,b,c){var e=!b,f=a.selectedMonth,h=a.selectedYear;b=this._restrictMinMax(a,this._determineDate(a,b,new Date));a.selectedDay=a.currentDay=b.getDate();a.drawMonth=a.selectedMonth=a.currentMonth=b.getMonth();a.drawYear=a.selectedYear=a.currentYear=b.getFullYear();if((f!=a.selectedMonth||h!=a.selectedYear)&&!c)this._notifyChange(a);this._adjustInstDate(a);if(a.input)a.input.val(e?"":this._formatDate(a))},_getDate:function(a){return!a.currentYear||
-a.input&&a.input.val()==""?null:this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay))},_generateHTML:function(a){var b=new Date;b=this._daylightSavingAdjust(new Date(b.getFullYear(),b.getMonth(),b.getDate()));var c=this._get(a,"isRTL"),e=this._get(a,"showButtonPanel"),f=this._get(a,"hideIfNoPrevNext"),h=this._get(a,"navigationAsDateFormat"),i=this._getNumberOfMonths(a),g=this._get(a,"showCurrentAtPos"),j=this._get(a,"stepMonths"),l=i[0]!=1||i[1]!=1,u=this._daylightSavingAdjust(!a.currentDay?
-new Date(9999,9,9):new Date(a.currentYear,a.currentMonth,a.currentDay)),k=this._getMinMaxDate(a,"min"),o=this._getMinMaxDate(a,"max");g=a.drawMonth-g;var m=a.drawYear;if(g<0){g+=12;m--}if(o){var n=this._daylightSavingAdjust(new Date(o.getFullYear(),o.getMonth()-i[0]*i[1]+1,o.getDate()));for(n=k&&n<k?k:n;this._daylightSavingAdjust(new Date(m,g,1))>n;){g--;if(g<0){g=11;m--}}}a.drawMonth=g;a.drawYear=m;n=this._get(a,"prevText");n=!h?n:this.formatDate(n,this._daylightSavingAdjust(new Date(m,g-j,1)),this._getFormatConfig(a));
-n=this._canAdjustMonth(a,-1,m,g)?'<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery_'+z+".datepicker._adjustDate('#"+a.id+"', -"+j+", 'M');\" title=\""+n+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"e":"w")+'">'+n+"</span></a>":f?"":'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+n+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"e":"w")+'">'+n+"</span></a>";var r=this._get(a,"nextText");r=!h?r:this.formatDate(r,this._daylightSavingAdjust(new Date(m,
-g+j,1)),this._getFormatConfig(a));f=this._canAdjustMonth(a,+1,m,g)?'<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery_'+z+".datepicker._adjustDate('#"+a.id+"', +"+j+", 'M');\" title=\""+r+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"w":"e")+'">'+r+"</span></a>":f?"":'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+r+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"w":"e")+'">'+r+"</span></a>";j=this._get(a,"currentText");r=this._get(a,"gotoCurrent")&&
-a.currentDay?u:b;j=!h?j:this.formatDate(j,r,this._getFormatConfig(a));h=!a.inline?'<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery_'+z+'.datepicker._hideDatepicker();">'+this._get(a,"closeText")+"</button>":"";e=e?'<div class="ui-datepicker-buttonpane ui-widget-content">'+(c?h:"")+(this._isInRange(a,r)?'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery_'+
-z+".datepicker._gotoToday('#"+a.id+"');\">"+j+"</button>":"")+(c?"":h)+"</div>":"";h=parseInt(this._get(a,"firstDay"),10);h=isNaN(h)?0:h;j=this._get(a,"showWeek");r=this._get(a,"dayNames");this._get(a,"dayNamesShort");var s=this._get(a,"dayNamesMin"),A=this._get(a,"monthNames"),v=this._get(a,"monthNamesShort"),p=this._get(a,"beforeShowDay"),C=this._get(a,"showOtherMonths"),K=this._get(a,"selectOtherMonths");this._get(a,"calculateWeek");for(var E=this._getDefaultDate(a),w="",x=0;x<i[0];x++){for(var O=
-"",G=0;G<i[1];G++){var P=this._daylightSavingAdjust(new Date(m,g,a.selectedDay)),t=" ui-corner-all",y="";if(l){y+='<div class="ui-datepicker-group';if(i[1]>1)switch(G){case 0:y+=" ui-datepicker-group-first";t=" ui-corner-"+(c?"right":"left");break;case i[1]-1:y+=" ui-datepicker-group-last";t=" ui-corner-"+(c?"left":"right");break;default:y+=" ui-datepicker-group-middle";t="";break}y+='">'}y+='<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'+t+'">'+(/all|left/.test(t)&&x==0?c?
-f:n:"")+(/all|right/.test(t)&&x==0?c?n:f:"")+this._generateMonthYearHeader(a,g,m,k,o,x>0||G>0,A,v)+'</div><table class="ui-datepicker-calendar"><thead><tr>';var D=j?'<th class="ui-datepicker-week-col">'+this._get(a,"weekHeader")+"</th>":"";for(t=0;t<7;t++){var q=(t+h)%7;D+="<th"+((t+h+6)%7>=5?' class="ui-datepicker-week-end"':"")+'><span title="'+r[q]+'">'+s[q]+"</span></th>"}y+=D+"</tr></thead><tbody>";D=this._getDaysInMonth(m,g);if(m==a.selectedYear&&g==a.selectedMonth)a.selectedDay=Math.min(a.selectedDay,
-D);t=(this._getFirstDayOfMonth(m,g)-h+7)%7;D=l?6:Math.ceil((t+D)/7);q=this._daylightSavingAdjust(new Date(m,g,1-t));for(var Q=0;Q<D;Q++){y+="<tr>";var R=!j?"":'<td class="ui-datepicker-week-col">'+this._get(a,"calculateWeek")(q)+"</td>";for(t=0;t<7;t++){var I=p?p.apply(a.input?a.input[0]:null,[q]):[true,""],F=q.getMonth()!=g,L=F&&!K||!I[0]||k&&q<k||o&&q>o;R+='<td class="'+((t+h+6)%7>=5?" ui-datepicker-week-end":"")+(F?" ui-datepicker-other-month":"")+(q.getTime()==P.getTime()&&g==a.selectedMonth&&
-a._keyEvent||E.getTime()==q.getTime()&&E.getTime()==P.getTime()?" "+this._dayOverClass:"")+(L?" "+this._unselectableClass+" ui-state-disabled":"")+(F&&!C?"":" "+I[1]+(q.getTime()==u.getTime()?" "+this._currentClass:"")+(q.getTime()==b.getTime()?" ui-datepicker-today":""))+'"'+((!F||C)&&I[2]?' title="'+I[2]+'"':"")+(L?"":' onclick="DP_jQuery_'+z+".datepicker._selectDay('#"+a.id+"',"+q.getMonth()+","+q.getFullYear()+', this);return false;"')+">"+(F&&!C?" ":L?'<span class="ui-state-default">'+q.getDate()+
-"</span>":'<a class="ui-state-default'+(q.getTime()==b.getTime()?" ui-state-highlight":"")+(q.getTime()==u.getTime()?" ui-state-active":"")+(F?" ui-priority-secondary":"")+'" href="#">'+q.getDate()+"</a>")+"</td>";q.setDate(q.getDate()+1);q=this._daylightSavingAdjust(q)}y+=R+"</tr>"}g++;if(g>11){g=0;m++}y+="</tbody></table>"+(l?"</div>"+(i[0]>0&&G==i[1]-1?'<div class="ui-datepicker-row-break"></div>':""):"");O+=y}w+=O}w+=e+(d.browser.msie&&parseInt(d.browser.version,10)<7&&!a.inline?'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>':
-"");a._keyEvent=false;return w},_generateMonthYearHeader:function(a,b,c,e,f,h,i,g){var j=this._get(a,"changeMonth"),l=this._get(a,"changeYear"),u=this._get(a,"showMonthAfterYear"),k='<div class="ui-datepicker-title">',o="";if(h||!j)o+='<span class="ui-datepicker-month">'+i[b]+"</span>";else{i=e&&e.getFullYear()==c;var m=f&&f.getFullYear()==c;o+='<select class="ui-datepicker-month" onchange="DP_jQuery_'+z+".datepicker._selectMonthYear('#"+a.id+"', this, 'M');\" onclick=\"DP_jQuery_"+z+".datepicker._clickMonthYear('#"+
-a.id+"');\">";for(var n=0;n<12;n++)if((!i||n>=e.getMonth())&&(!m||n<=f.getMonth()))o+='<option value="'+n+'"'+(n==b?' selected="selected"':"")+">"+g[n]+"</option>";o+="</select>"}u||(k+=o+(h||!(j&&l)?" ":""));if(!a.yearshtml){a.yearshtml="";if(h||!l)k+='<span class="ui-datepicker-year">'+c+"</span>";else{g=this._get(a,"yearRange").split(":");var r=(new Date).getFullYear();i=function(s){s=s.match(/c[+-].*/)?c+parseInt(s.substring(1),10):s.match(/[+-].*/)?r+parseInt(s,10):parseInt(s,10);return isNaN(s)?
-r:s};b=i(g[0]);g=Math.max(b,i(g[1]||""));b=e?Math.max(b,e.getFullYear()):b;g=f?Math.min(g,f.getFullYear()):g;for(a.yearshtml+='<select class="ui-datepicker-year" onchange="DP_jQuery_'+z+".datepicker._selectMonthYear('#"+a.id+"', this, 'Y');\" onclick=\"DP_jQuery_"+z+".datepicker._clickMonthYear('#"+a.id+"');\">";b<=g;b++)a.yearshtml+='<option value="'+b+'"'+(b==c?' selected="selected"':"")+">"+b+"</option>";a.yearshtml+="</select>";k+=a.yearshtml;a.yearshtml=null}}k+=this._get(a,"yearSuffix");if(u)k+=
-(h||!(j&&l)?" ":"")+o;k+="</div>";return k},_adjustInstDate:function(a,b,c){var e=a.drawYear+(c=="Y"?b:0),f=a.drawMonth+(c=="M"?b:0);b=Math.min(a.selectedDay,this._getDaysInMonth(e,f))+(c=="D"?b:0);e=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(e,f,b)));a.selectedDay=e.getDate();a.drawMonth=a.selectedMonth=e.getMonth();a.drawYear=a.selectedYear=e.getFullYear();if(c=="M"||c=="Y")this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,
-"max");b=c&&b<c?c:b;return b=a&&b>a?a:b},_notifyChange:function(a){var b=this._get(a,"onChangeMonthYear");if(b)b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){a=this._get(a,"numberOfMonths");return a==null?[1,1]:typeof a=="number"?[1,a]:a},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,b){return 32-this._daylightSavingAdjust(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,
-b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,e){var f=this._getNumberOfMonths(a);c=this._daylightSavingAdjust(new Date(c,e+(b<0?b:f[0]*f[1]),1));b<0&&c.setDate(this._getDaysInMonth(c.getFullYear(),c.getMonth()));return this._isInRange(a,c)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!a||b.getTime()<=a.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff");b=typeof b!=
-"string"?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a,"dayNamesShort"),dayNames:this._get(a,"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,e){if(!b){a.currentDay=a.selectedDay;a.currentMonth=a.selectedMonth;a.currentYear=a.selectedYear}b=b?typeof b=="object"?b:this._daylightSavingAdjust(new Date(e,c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));
-return this.formatDate(this._get(a,"dateFormat"),b,this._getFormatConfig(a))}});d.fn.datepicker=function(a){if(!this.length)return this;if(!d.datepicker.initialized){d(document).mousedown(d.datepicker._checkExternalClick).find("body").append(d.datepicker.dpDiv);d.datepicker.initialized=true}var b=Array.prototype.slice.call(arguments,1);if(typeof a=="string"&&(a=="isDisabled"||a=="getDate"||a=="widget"))return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));if(a=="option"&&
-arguments.length==2&&typeof arguments[1]=="string")return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));return this.each(function(){typeof a=="string"?d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this].concat(b)):d.datepicker._attachDatepicker(this,a)})};d.datepicker=new M;d.datepicker.initialized=false;d.datepicker.uuid=(new Date).getTime();d.datepicker.version="1.8.13";window["DP_jQuery_"+z]=d})(jQuery);
-;
\ No newline at end of file
+++ /dev/null
-/*!
- * jQuery JavaScript Library v1.4.3
- * http://jquery.com/
- *
- * Copyright 2010, John Resig
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * Includes Sizzle.js
- * http://sizzlejs.com/
- * Copyright 2010, The Dojo Foundation
- * Released under the MIT, BSD, and GPL Licenses.
- *
- * Date: Thu Oct 14 23:10:06 2010 -0400
- */
-(function(E,A){function U(){return false}function ba(){return true}function ja(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function Ga(a){var b,d,e=[],f=[],h,k,l,n,s,v,B,D;k=c.data(this,this.nodeType?"events":"__events__");if(typeof k==="function")k=k.events;if(!(a.liveFired===this||!k||!k.live||a.button&&a.type==="click")){if(a.namespace)D=RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)");a.liveFired=this;var H=k.live.slice(0);for(n=0;n<H.length;n++){k=H[n];k.origType.replace(X,
-"")===a.type?f.push(k.selector):H.splice(n--,1)}f=c(a.target).closest(f,a.currentTarget);s=0;for(v=f.length;s<v;s++){B=f[s];for(n=0;n<H.length;n++){k=H[n];if(B.selector===k.selector&&(!D||D.test(k.namespace))){l=B.elem;h=null;if(k.preType==="mouseenter"||k.preType==="mouseleave"){a.type=k.preType;h=c(a.relatedTarget).closest(k.selector)[0]}if(!h||h!==l)e.push({elem:l,handleObj:k,level:B.level})}}}s=0;for(v=e.length;s<v;s++){f=e[s];if(d&&f.level>d)break;a.currentTarget=f.elem;a.data=f.handleObj.data;
-a.handleObj=f.handleObj;D=f.handleObj.origHandler.apply(f.elem,arguments);if(D===false||a.isPropagationStopped()){d=f.level;if(D===false)b=false}}return b}}function Y(a,b){return(a&&a!=="*"?a+".":"")+b.replace(Ha,"`").replace(Ia,"&")}function ka(a,b,d){if(c.isFunction(b))return c.grep(a,function(f,h){return!!b.call(f,h,f)===d});else if(b.nodeType)return c.grep(a,function(f){return f===b===d});else if(typeof b==="string"){var e=c.grep(a,function(f){return f.nodeType===1});if(Ja.test(b))return c.filter(b,
-e,!d);else b=c.filter(b,e)}return c.grep(a,function(f){return c.inArray(f,b)>=0===d})}function la(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var e=c.data(a[d++]),f=c.data(this,e);if(e=e&&e.events){delete f.handle;f.events={};for(var h in e)for(var k in e[h])c.event.add(this,h,e[h][k],e[h][k].data)}}})}function Ka(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}
-function ma(a,b,d){var e=b==="width"?a.offsetWidth:a.offsetHeight;if(d==="border")return e;c.each(b==="width"?La:Ma,function(){d||(e-=parseFloat(c.css(a,"padding"+this))||0);if(d==="margin")e+=parseFloat(c.css(a,"margin"+this))||0;else e-=parseFloat(c.css(a,"border"+this+"Width"))||0});return e}function ca(a,b,d,e){if(c.isArray(b)&&b.length)c.each(b,function(f,h){d||Na.test(a)?e(a,h):ca(a+"["+(typeof h==="object"||c.isArray(h)?f:"")+"]",h,d,e)});else if(!d&&b!=null&&typeof b==="object")c.isEmptyObject(b)?
-e(a,""):c.each(b,function(f,h){ca(a+"["+f+"]",h,d,e)});else e(a,b)}function S(a,b){var d={};c.each(na.concat.apply([],na.slice(0,b)),function(){d[this]=a});return d}function oa(a){if(!da[a]){var b=c("<"+a+">").appendTo("body"),d=b.css("display");b.remove();if(d==="none"||d==="")d="block";da[a]=d}return da[a]}function ea(a){return c.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var u=E.document,c=function(){function a(){if(!b.isReady){try{u.documentElement.doScroll("left")}catch(i){setTimeout(a,
-1);return}b.ready()}}var b=function(i,r){return new b.fn.init(i,r)},d=E.jQuery,e=E.$,f,h=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,k=/\S/,l=/^\s+/,n=/\s+$/,s=/\W/,v=/\d/,B=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,D=/^[\],:{}\s]*$/,H=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,w=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,G=/(?:^|:|,)(?:\s*\[)+/g,M=/(webkit)[ \/]([\w.]+)/,g=/(opera)(?:.*version)?[ \/]([\w.]+)/,j=/(msie) ([\w.]+)/,o=/(mozilla)(?:.*? rv:([\w.]+))?/,m=navigator.userAgent,p=false,
-q=[],t,x=Object.prototype.toString,C=Object.prototype.hasOwnProperty,P=Array.prototype.push,N=Array.prototype.slice,R=String.prototype.trim,Q=Array.prototype.indexOf,L={};b.fn=b.prototype={init:function(i,r){var y,z,F;if(!i)return this;if(i.nodeType){this.context=this[0]=i;this.length=1;return this}if(i==="body"&&!r&&u.body){this.context=u;this[0]=u.body;this.selector="body";this.length=1;return this}if(typeof i==="string")if((y=h.exec(i))&&(y[1]||!r))if(y[1]){F=r?r.ownerDocument||r:u;if(z=B.exec(i))if(b.isPlainObject(r)){i=
-[u.createElement(z[1])];b.fn.attr.call(i,r,true)}else i=[F.createElement(z[1])];else{z=b.buildFragment([y[1]],[F]);i=(z.cacheable?z.fragment.cloneNode(true):z.fragment).childNodes}return b.merge(this,i)}else{if((z=u.getElementById(y[2]))&&z.parentNode){if(z.id!==y[2])return f.find(i);this.length=1;this[0]=z}this.context=u;this.selector=i;return this}else if(!r&&!s.test(i)){this.selector=i;this.context=u;i=u.getElementsByTagName(i);return b.merge(this,i)}else return!r||r.jquery?(r||f).find(i):b(r).find(i);
-else if(b.isFunction(i))return f.ready(i);if(i.selector!==A){this.selector=i.selector;this.context=i.context}return b.makeArray(i,this)},selector:"",jquery:"1.4.3",length:0,size:function(){return this.length},toArray:function(){return N.call(this,0)},get:function(i){return i==null?this.toArray():i<0?this.slice(i)[0]:this[i]},pushStack:function(i,r,y){var z=b();b.isArray(i)?P.apply(z,i):b.merge(z,i);z.prevObject=this;z.context=this.context;if(r==="find")z.selector=this.selector+(this.selector?" ":
-"")+y;else if(r)z.selector=this.selector+"."+r+"("+y+")";return z},each:function(i,r){return b.each(this,i,r)},ready:function(i){b.bindReady();if(b.isReady)i.call(u,b);else q&&q.push(i);return this},eq:function(i){return i===-1?this.slice(i):this.slice(i,+i+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(N.apply(this,arguments),"slice",N.call(arguments).join(","))},map:function(i){return this.pushStack(b.map(this,function(r,y){return i.call(r,
-y,r)}))},end:function(){return this.prevObject||b(null)},push:P,sort:[].sort,splice:[].splice};b.fn.init.prototype=b.fn;b.extend=b.fn.extend=function(){var i=arguments[0]||{},r=1,y=arguments.length,z=false,F,I,K,J,fa;if(typeof i==="boolean"){z=i;i=arguments[1]||{};r=2}if(typeof i!=="object"&&!b.isFunction(i))i={};if(y===r){i=this;--r}for(;r<y;r++)if((F=arguments[r])!=null)for(I in F){K=i[I];J=F[I];if(i!==J)if(z&&J&&(b.isPlainObject(J)||(fa=b.isArray(J)))){if(fa){fa=false;clone=K&&b.isArray(K)?K:[]}else clone=
-K&&b.isPlainObject(K)?K:{};i[I]=b.extend(z,clone,J)}else if(J!==A)i[I]=J}return i};b.extend({noConflict:function(i){E.$=e;if(i)E.jQuery=d;return b},isReady:false,readyWait:1,ready:function(i){i===true&&b.readyWait--;if(!b.readyWait||i!==true&&!b.isReady){if(!u.body)return setTimeout(b.ready,1);b.isReady=true;if(!(i!==true&&--b.readyWait>0)){if(q){for(var r=0;i=q[r++];)i.call(u,b);q=null}b.fn.triggerHandler&&b(u).triggerHandler("ready")}}},bindReady:function(){if(!p){p=true;if(u.readyState==="complete")return setTimeout(b.ready,
-1);if(u.addEventListener){u.addEventListener("DOMContentLoaded",t,false);E.addEventListener("load",b.ready,false)}else if(u.attachEvent){u.attachEvent("onreadystatechange",t);E.attachEvent("onload",b.ready);var i=false;try{i=E.frameElement==null}catch(r){}u.documentElement.doScroll&&i&&a()}}},isFunction:function(i){return b.type(i)==="function"},isArray:Array.isArray||function(i){return b.type(i)==="array"},isWindow:function(i){return i&&typeof i==="object"&&"setInterval"in i},isNaN:function(i){return i==
-null||!v.test(i)||isNaN(i)},type:function(i){return i==null?String(i):L[x.call(i)]||"object"},isPlainObject:function(i){if(!i||b.type(i)!=="object"||i.nodeType||b.isWindow(i))return false;if(i.constructor&&!C.call(i,"constructor")&&!C.call(i.constructor.prototype,"isPrototypeOf"))return false;for(var r in i);return r===A||C.call(i,r)},isEmptyObject:function(i){for(var r in i)return false;return true},error:function(i){throw i;},parseJSON:function(i){if(typeof i!=="string"||!i)return null;i=b.trim(i);
-if(D.test(i.replace(H,"@").replace(w,"]").replace(G,"")))return E.JSON&&E.JSON.parse?E.JSON.parse(i):(new Function("return "+i))();else b.error("Invalid JSON: "+i)},noop:function(){},globalEval:function(i){if(i&&k.test(i)){var r=u.getElementsByTagName("head")[0]||u.documentElement,y=u.createElement("script");y.type="text/javascript";if(b.support.scriptEval)y.appendChild(u.createTextNode(i));else y.text=i;r.insertBefore(y,r.firstChild);r.removeChild(y)}},nodeName:function(i,r){return i.nodeName&&i.nodeName.toUpperCase()===
-r.toUpperCase()},each:function(i,r,y){var z,F=0,I=i.length,K=I===A||b.isFunction(i);if(y)if(K)for(z in i){if(r.apply(i[z],y)===false)break}else for(;F<I;){if(r.apply(i[F++],y)===false)break}else if(K)for(z in i){if(r.call(i[z],z,i[z])===false)break}else for(y=i[0];F<I&&r.call(y,F,y)!==false;y=i[++F]);return i},trim:R?function(i){return i==null?"":R.call(i)}:function(i){return i==null?"":i.toString().replace(l,"").replace(n,"")},makeArray:function(i,r){var y=r||[];if(i!=null){var z=b.type(i);i.length==
-null||z==="string"||z==="function"||z==="regexp"||b.isWindow(i)?P.call(y,i):b.merge(y,i)}return y},inArray:function(i,r){if(r.indexOf)return r.indexOf(i);for(var y=0,z=r.length;y<z;y++)if(r[y]===i)return y;return-1},merge:function(i,r){var y=i.length,z=0;if(typeof r.length==="number")for(var F=r.length;z<F;z++)i[y++]=r[z];else for(;r[z]!==A;)i[y++]=r[z++];i.length=y;return i},grep:function(i,r,y){var z=[],F;y=!!y;for(var I=0,K=i.length;I<K;I++){F=!!r(i[I],I);y!==F&&z.push(i[I])}return z},map:function(i,
-r,y){for(var z=[],F,I=0,K=i.length;I<K;I++){F=r(i[I],I,y);if(F!=null)z[z.length]=F}return z.concat.apply([],z)},guid:1,proxy:function(i,r,y){if(arguments.length===2)if(typeof r==="string"){y=i;i=y[r];r=A}else if(r&&!b.isFunction(r)){y=r;r=A}if(!r&&i)r=function(){return i.apply(y||this,arguments)};if(i)r.guid=i.guid=i.guid||r.guid||b.guid++;return r},access:function(i,r,y,z,F,I){var K=i.length;if(typeof r==="object"){for(var J in r)b.access(i,J,r[J],z,F,y);return i}if(y!==A){z=!I&&z&&b.isFunction(y);
-for(J=0;J<K;J++)F(i[J],r,z?y.call(i[J],J,F(i[J],r)):y,I);return i}return K?F(i[0],r):A},now:function(){return(new Date).getTime()},uaMatch:function(i){i=i.toLowerCase();i=M.exec(i)||g.exec(i)||j.exec(i)||i.indexOf("compatible")<0&&o.exec(i)||[];return{browser:i[1]||"",version:i[2]||"0"}},browser:{}});b.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(i,r){L["[object "+r+"]"]=r.toLowerCase()});m=b.uaMatch(m);if(m.browser){b.browser[m.browser]=true;b.browser.version=
-m.version}if(b.browser.webkit)b.browser.safari=true;if(Q)b.inArray=function(i,r){return Q.call(r,i)};if(!/\s/.test("\u00a0")){l=/^[\s\xA0]+/;n=/[\s\xA0]+$/}f=b(u);if(u.addEventListener)t=function(){u.removeEventListener("DOMContentLoaded",t,false);b.ready()};else if(u.attachEvent)t=function(){if(u.readyState==="complete"){u.detachEvent("onreadystatechange",t);b.ready()}};return E.jQuery=E.$=b}();(function(){c.support={};var a=u.documentElement,b=u.createElement("script"),d=u.createElement("div"),
-e="script"+c.now();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";var f=d.getElementsByTagName("*"),h=d.getElementsByTagName("a")[0],k=u.createElement("select"),l=k.appendChild(u.createElement("option"));if(!(!f||!f.length||!h)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(h.getAttribute("style")),
-hrefNormalized:h.getAttribute("href")==="/a",opacity:/^0.55$/.test(h.style.opacity),cssFloat:!!h.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:l.selected,optDisabled:false,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableHiddenOffsets:true};k.disabled=true;c.support.optDisabled=!l.disabled;b.type="text/javascript";try{b.appendChild(u.createTextNode("window."+e+"=1;"))}catch(n){}a.insertBefore(b,
-a.firstChild);if(E[e]){c.support.scriptEval=true;delete E[e]}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function s(){c.support.noCloneEvent=false;d.detachEvent("onclick",s)});d.cloneNode(true).fireEvent("onclick")}d=u.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=u.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var s=u.createElement("div");
-s.style.width=s.style.paddingLeft="1px";u.body.appendChild(s);c.boxModel=c.support.boxModel=s.offsetWidth===2;if("zoom"in s.style){s.style.display="inline";s.style.zoom=1;c.support.inlineBlockNeedsLayout=s.offsetWidth===2;s.style.display="";s.innerHTML="<div style='width:4px;'></div>";c.support.shrinkWrapBlocks=s.offsetWidth!==2}s.innerHTML="<table><tr><td style='padding:0;display:none'></td><td>t</td></tr></table>";var v=s.getElementsByTagName("td");c.support.reliableHiddenOffsets=v[0].offsetHeight===
-0;v[0].style.display="";v[1].style.display="none";c.support.reliableHiddenOffsets=c.support.reliableHiddenOffsets&&v[0].offsetHeight===0;s.innerHTML="";u.body.removeChild(s).style.display="none"});a=function(s){var v=u.createElement("div");s="on"+s;var B=s in v;if(!B){v.setAttribute(s,"return;");B=typeof v[s]==="function"}return B};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=f=h=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",
-cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var pa={},Oa=/^(?:\{.*\}|\[.*\])$/;c.extend({cache:{},uuid:0,expando:"jQuery"+c.now(),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},data:function(a,b,d){if(c.acceptData(a)){a=a==E?pa:a;var e=a.nodeType,f=e?a[c.expando]:null,h=c.cache;if(!(e&&!f&&typeof b==="string"&&d===A)){if(e)f||(a[c.expando]=f=++c.uuid);else h=a;if(typeof b==="object")if(e)h[f]=
-c.extend(h[f],b);else c.extend(h,b);else if(e&&!h[f])h[f]={};a=e?h[f]:h;if(d!==A)a[b]=d;return typeof b==="string"?a[b]:a}}},removeData:function(a,b){if(c.acceptData(a)){a=a==E?pa:a;var d=a.nodeType,e=d?a[c.expando]:a,f=c.cache,h=d?f[e]:e;if(b){if(h){delete h[b];d&&c.isEmptyObject(h)&&c.removeData(a)}}else if(d&&c.support.deleteExpando)delete a[c.expando];else if(a.removeAttribute)a.removeAttribute(c.expando);else if(d)delete f[e];else for(var k in a)delete a[k]}},acceptData:function(a){if(a.nodeName){var b=
-c.noData[a.nodeName.toLowerCase()];if(b)return!(b===true||a.getAttribute("classid")!==b)}return true}});c.fn.extend({data:function(a,b){if(typeof a==="undefined")return this.length?c.data(this[0]):null;else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===A){var e=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(e===A&&this.length){e=c.data(this[0],a);if(e===A&&this[0].nodeType===1){e=this[0].getAttribute("data-"+a);if(typeof e===
-"string")try{e=e==="true"?true:e==="false"?false:e==="null"?null:!c.isNaN(e)?parseFloat(e):Oa.test(e)?c.parseJSON(e):e}catch(f){}else e=A}}return e===A&&d[1]?this.data(d[0]):e}else return this.each(function(){var h=c(this),k=[d[0],b];h.triggerHandler("setData"+d[1]+"!",k);c.data(this,a,b);h.triggerHandler("changeData"+d[1]+"!",k)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var e=c.data(a,b);if(!d)return e||
-[];if(!e||c.isArray(d))e=c.data(a,b,c.makeArray(d));else e.push(d);return e}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),e=d.shift();if(e==="inprogress")e=d.shift();if(e){b==="fx"&&d.unshift("inprogress");e.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===A)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,
-a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var qa=/[\n\t]/g,ga=/\s+/,Pa=/\r/g,Qa=/^(?:href|src|style)$/,Ra=/^(?:button|input)$/i,Sa=/^(?:button|input|object|select|textarea)$/i,Ta=/^a(?:rea)?$/i,ra=/^(?:radio|checkbox)$/i;c.fn.extend({attr:function(a,b){return c.access(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,
-a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(s){var v=c(this);v.addClass(a.call(this,s,v.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ga),d=0,e=this.length;d<e;d++){var f=this[d];if(f.nodeType===1)if(f.className){for(var h=" "+f.className+" ",k=f.className,l=0,n=b.length;l<n;l++)if(h.indexOf(" "+b[l]+" ")<0)k+=" "+b[l];f.className=c.trim(k)}else f.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(n){var s=
-c(this);s.removeClass(a.call(this,n,s.attr("class")))});if(a&&typeof a==="string"||a===A)for(var b=(a||"").split(ga),d=0,e=this.length;d<e;d++){var f=this[d];if(f.nodeType===1&&f.className)if(a){for(var h=(" "+f.className+" ").replace(qa," "),k=0,l=b.length;k<l;k++)h=h.replace(" "+b[k]+" "," ");f.className=c.trim(h)}else f.className=""}return this},toggleClass:function(a,b){var d=typeof a,e=typeof b==="boolean";if(c.isFunction(a))return this.each(function(f){var h=c(this);h.toggleClass(a.call(this,
-f,h.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var f,h=0,k=c(this),l=b,n=a.split(ga);f=n[h++];){l=e?l:!k.hasClass(f);k[l?"addClass":"removeClass"](f)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(qa," ").indexOf(a)>-1)return true;return false},
-val:function(a){if(!arguments.length){var b=this[0];if(b){if(c.nodeName(b,"option")){var d=b.attributes.value;return!d||d.specified?b.value:b.text}if(c.nodeName(b,"select")){var e=b.selectedIndex;d=[];var f=b.options;b=b.type==="select-one";if(e<0)return null;var h=b?e:0;for(e=b?e+1:f.length;h<e;h++){var k=f[h];if(k.selected&&(c.support.optDisabled?!k.disabled:k.getAttribute("disabled")===null)&&(!k.parentNode.disabled||!c.nodeName(k.parentNode,"optgroup"))){a=c(k).val();if(b)return a;d.push(a)}}return d}if(ra.test(b.type)&&
-!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Pa,"")}return A}var l=c.isFunction(a);return this.each(function(n){var s=c(this),v=a;if(this.nodeType===1){if(l)v=a.call(this,n,s.val());if(v==null)v="";else if(typeof v==="number")v+="";else if(c.isArray(v))v=c.map(v,function(D){return D==null?"":D+""});if(c.isArray(v)&&ra.test(this.type))this.checked=c.inArray(s.val(),v)>=0;else if(c.nodeName(this,"select")){var B=c.makeArray(v);c("option",this).each(function(){this.selected=
-c.inArray(c(this).val(),B)>=0});if(!B.length)this.selectedIndex=-1}else this.value=v}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,e){if(!a||a.nodeType===3||a.nodeType===8)return A;if(e&&b in c.attrFn)return c(a)[b](d);e=a.nodeType!==1||!c.isXMLDoc(a);var f=d!==A;b=e&&c.props[b]||b;if(a.nodeType===1){var h=Qa.test(b);if((b in a||a[b]!==A)&&e&&!h){if(f){b==="type"&&Ra.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
-if(d===null)a.nodeType===1&&a.removeAttribute(b);else a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:Sa.test(a.nodeName)||Ta.test(a.nodeName)&&a.href?0:A;return a[b]}if(!c.support.style&&e&&b==="style"){if(f)a.style.cssText=""+d;return a.style.cssText}f&&a.setAttribute(b,""+d);if(!a.attributes[b]&&a.hasAttribute&&!a.hasAttribute(b))return A;a=!c.support.hrefNormalized&&e&&
-h?a.getAttribute(b,2):a.getAttribute(b);return a===null?A:a}}});var X=/\.(.*)$/,ha=/^(?:textarea|input|select)$/i,Ha=/\./g,Ia=/ /g,Ua=/[^\w\s.|`]/g,Va=function(a){return a.replace(Ua,"\\$&")},sa={focusin:0,focusout:0};c.event={add:function(a,b,d,e){if(!(a.nodeType===3||a.nodeType===8)){if(c.isWindow(a)&&a!==E&&!a.frameElement)a=E;if(d===false)d=U;var f,h;if(d.handler){f=d;d=f.handler}if(!d.guid)d.guid=c.guid++;if(h=c.data(a)){var k=a.nodeType?"events":"__events__",l=h[k],n=h.handle;if(typeof l===
-"function"){n=l.handle;l=l.events}else if(!l){a.nodeType||(h[k]=h=function(){});h.events=l={}}if(!n)h.handle=n=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(n.elem,arguments):A};n.elem=a;b=b.split(" ");for(var s=0,v;k=b[s++];){h=f?c.extend({},f):{handler:d,data:e};if(k.indexOf(".")>-1){v=k.split(".");k=v.shift();h.namespace=v.slice(0).sort().join(".")}else{v=[];h.namespace=""}h.type=k;if(!h.guid)h.guid=d.guid;var B=l[k],D=c.event.special[k]||{};if(!B){B=l[k]=[];
-if(!D.setup||D.setup.call(a,e,v,n)===false)if(a.addEventListener)a.addEventListener(k,n,false);else a.attachEvent&&a.attachEvent("on"+k,n)}if(D.add){D.add.call(a,h);if(!h.handler.guid)h.handler.guid=d.guid}B.push(h);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,e){if(!(a.nodeType===3||a.nodeType===8)){if(d===false)d=U;var f,h,k=0,l,n,s,v,B,D,H=a.nodeType?"events":"__events__",w=c.data(a),G=w&&w[H];if(w&&G){if(typeof G==="function"){w=G;G=G.events}if(b&&b.type){d=b.handler;b=b.type}if(!b||
-typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(f in G)c.event.remove(a,f+b)}else{for(b=b.split(" ");f=b[k++];){v=f;l=f.indexOf(".")<0;n=[];if(!l){n=f.split(".");f=n.shift();s=RegExp("(^|\\.)"+c.map(n.slice(0).sort(),Va).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(B=G[f])if(d){v=c.event.special[f]||{};for(h=e||0;h<B.length;h++){D=B[h];if(d.guid===D.guid){if(l||s.test(D.namespace)){e==null&&B.splice(h--,1);v.remove&&v.remove.call(a,D)}if(e!=null)break}}if(B.length===0||e!=null&&B.length===1){if(!v.teardown||
-v.teardown.call(a,n)===false)c.removeEvent(a,f,w.handle);delete G[f]}}else for(h=0;h<B.length;h++){D=B[h];if(l||s.test(D.namespace)){c.event.remove(a,v,D.handler,h);B.splice(h--,1)}}}if(c.isEmptyObject(G)){if(b=w.handle)b.elem=null;delete w.events;delete w.handle;if(typeof w==="function")c.removeData(a,H);else c.isEmptyObject(w)&&c.removeData(a)}}}}},trigger:function(a,b,d,e){var f=a.type||a;if(!e){a=typeof a==="object"?a[c.expando]?a:c.extend(c.Event(f),a):c.Event(f);if(f.indexOf("!")>=0){a.type=
-f=f.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[f]&&c.each(c.cache,function(){this.events&&this.events[f]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return A;a.result=A;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(e=d.nodeType?c.data(d,"handle"):(c.data(d,"__events__")||{}).handle)&&e.apply(d,b);e=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+f]&&d["on"+f].apply(d,b)===
-false){a.result=false;a.preventDefault()}}catch(h){}if(!a.isPropagationStopped()&&e)c.event.trigger(a,b,e,true);else if(!a.isDefaultPrevented()){e=a.target;var k,l=f.replace(X,""),n=c.nodeName(e,"a")&&l==="click",s=c.event.special[l]||{};if((!s._default||s._default.call(d,a)===false)&&!n&&!(e&&e.nodeName&&c.noData[e.nodeName.toLowerCase()])){try{if(e[l]){if(k=e["on"+l])e["on"+l]=null;c.event.triggered=true;e[l]()}}catch(v){}if(k)e["on"+l]=k;c.event.triggered=false}}},handle:function(a){var b,d,e;
-d=[];var f,h=c.makeArray(arguments);a=h[0]=c.event.fix(a||E.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;if(!b){e=a.type.split(".");a.type=e.shift();d=e.slice(0).sort();e=RegExp("(^|\\.)"+d.join("\\.(?:.*\\.)?")+"(\\.|$)")}a.namespace=a.namespace||d.join(".");f=c.data(this,this.nodeType?"events":"__events__");if(typeof f==="function")f=f.events;d=(f||{})[a.type];if(f&&d){d=d.slice(0);f=0;for(var k=d.length;f<k;f++){var l=d[f];if(b||e.test(l.namespace)){a.handler=l.handler;a.data=
-l.data;a.handleObj=l;l=l.handler.apply(this,h);if(l!==A){a.result=l;if(l===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
-fix:function(a){if(a[c.expando])return a;var b=a;a=c.Event(b);for(var d=this.props.length,e;d;){e=this.props[--d];a[e]=b[e]}if(!a.target)a.target=a.srcElement||u;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=u.documentElement;d=u.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
-d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(a.which==null&&(a.charCode!=null||a.keyCode!=null))a.which=a.charCode!=null?a.charCode:a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==A)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,Y(a.origType,a.selector),c.extend({},a,{handler:Ga,guid:a.handler.guid}))},remove:function(a){c.event.remove(this,
-Y(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,d){if(c.isWindow(this))this.onbeforeunload=d},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};c.removeEvent=u.removeEventListener?function(a,b,d){a.removeEventListener&&a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent&&a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=a;this.type=a.type}else this.type=a;this.timeStamp=
-c.now();this[c.expando]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=ba;var a=this.originalEvent;if(a)if(a.preventDefault)a.preventDefault();else a.returnValue=false},stopPropagation:function(){this.isPropagationStopped=ba;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=ba;this.stopPropagation()},isDefaultPrevented:U,isPropagationStopped:U,isImmediatePropagationStopped:U};
-var ta=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},ua=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?ua:ta,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?ua:ta)}}});if(!c.support.submitBubbles)c.event.special.submit={setup:function(){if(this.nodeName.toLowerCase()!==
-"form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length){a.liveFired=A;return ja("submit",this,arguments)}});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13){a.liveFired=A;return ja("submit",this,arguments)}})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};if(!c.support.changeBubbles){var V,
-va=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(e){return e.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},Z=function(a,b){var d=a.target,e,f;if(!(!ha.test(d.nodeName)||d.readOnly)){e=c.data(d,"_change_data");f=va(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",f);if(!(e===A||f===e))if(e!=null||f){a.type="change";a.liveFired=
-A;return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:Z,beforedeactivate:Z,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return Z.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return Z.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,"_change_data",va(a))}},setup:function(){if(this.type===
-"file")return false;for(var a in V)c.event.add(this,a+".specialChange",V[a]);return ha.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return ha.test(this.nodeName)}};V=c.event.special.change.filters;V.focus=V.beforeactivate}u.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(e){e=c.event.fix(e);e.type=b;return c.event.trigger(e,null,e.target)}c.event.special[b]={setup:function(){sa[b]++===0&&u.addEventListener(a,d,true)},teardown:function(){--sa[b]===
-0&&u.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,e,f){if(typeof d==="object"){for(var h in d)this[b](h,e,d[h],f);return this}if(c.isFunction(e)||e===false){f=e;e=A}var k=b==="one"?c.proxy(f,function(n){c(this).unbind(n,k);return f.apply(this,arguments)}):f;if(d==="unload"&&b!=="one")this.one(d,e,f);else{h=0;for(var l=this.length;h<l;h++)c.event.add(this[h],d,k,e)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&!a.preventDefault)for(var d in a)this.unbind(d,
-a[d]);else{d=0;for(var e=this.length;d<e;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,e){return this.live(b,d,e,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){var d=c.Event(a);d.preventDefault();d.stopPropagation();c.event.trigger(d,b,this[0]);return d.result}},toggle:function(a){for(var b=arguments,d=
-1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(e){var f=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,f+1);e.preventDefault();return b[f].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var wa={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,e,f,h){var k,l=0,n,s,v=h||this.selector;h=h?this:c(this.context);if(typeof d===
-"object"&&!d.preventDefault){for(k in d)h[b](k,e,d[k],v);return this}if(c.isFunction(e)){f=e;e=A}for(d=(d||"").split(" ");(k=d[l++])!=null;){n=X.exec(k);s="";if(n){s=n[0];k=k.replace(X,"")}if(k==="hover")d.push("mouseenter"+s,"mouseleave"+s);else{n=k;if(k==="focus"||k==="blur"){d.push(wa[k]+s);k+=s}else k=(wa[k]||k)+s;if(b==="live"){s=0;for(var B=h.length;s<B;s++)c.event.add(h[s],"live."+Y(k,v),{data:e,selector:v,handler:f,origType:k,origHandler:f,preType:n})}else h.unbind("live."+Y(k,v),f)}}return this}});
-c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),function(a,b){c.fn[b]=function(d,e){if(e==null){e=d;d=null}return arguments.length>0?this.bind(b,d,e):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});E.attachEvent&&!E.addEventListener&&c(E).bind("unload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});
-(function(){function a(g,j,o,m,p,q){p=0;for(var t=m.length;p<t;p++){var x=m[p];if(x){x=x[g];for(var C=false;x;){if(x.sizcache===o){C=m[x.sizset];break}if(x.nodeType===1&&!q){x.sizcache=o;x.sizset=p}if(x.nodeName.toLowerCase()===j){C=x;break}x=x[g]}m[p]=C}}}function b(g,j,o,m,p,q){p=0;for(var t=m.length;p<t;p++){var x=m[p];if(x){x=x[g];for(var C=false;x;){if(x.sizcache===o){C=m[x.sizset];break}if(x.nodeType===1){if(!q){x.sizcache=o;x.sizset=p}if(typeof j!=="string"){if(x===j){C=true;break}}else if(l.filter(j,
-[x]).length>0){C=x;break}}x=x[g]}m[p]=C}}}var d=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,f=Object.prototype.toString,h=false,k=true;[0,0].sort(function(){k=false;return 0});var l=function(g,j,o,m){o=o||[];var p=j=j||u;if(j.nodeType!==1&&j.nodeType!==9)return[];if(!g||typeof g!=="string")return o;var q=[],t,x,C,P,N=true,R=l.isXML(j),Q=g,L;do{d.exec("");if(t=d.exec(Q)){Q=t[3];q.push(t[1]);if(t[2]){P=t[3];
-break}}}while(t);if(q.length>1&&s.exec(g))if(q.length===2&&n.relative[q[0]])x=M(q[0]+q[1],j);else for(x=n.relative[q[0]]?[j]:l(q.shift(),j);q.length;){g=q.shift();if(n.relative[g])g+=q.shift();x=M(g,x)}else{if(!m&&q.length>1&&j.nodeType===9&&!R&&n.match.ID.test(q[0])&&!n.match.ID.test(q[q.length-1])){t=l.find(q.shift(),j,R);j=t.expr?l.filter(t.expr,t.set)[0]:t.set[0]}if(j){t=m?{expr:q.pop(),set:D(m)}:l.find(q.pop(),q.length===1&&(q[0]==="~"||q[0]==="+")&&j.parentNode?j.parentNode:j,R);x=t.expr?l.filter(t.expr,
-t.set):t.set;if(q.length>0)C=D(x);else N=false;for(;q.length;){t=L=q.pop();if(n.relative[L])t=q.pop();else L="";if(t==null)t=j;n.relative[L](C,t,R)}}else C=[]}C||(C=x);C||l.error(L||g);if(f.call(C)==="[object Array]")if(N)if(j&&j.nodeType===1)for(g=0;C[g]!=null;g++){if(C[g]&&(C[g]===true||C[g].nodeType===1&&l.contains(j,C[g])))o.push(x[g])}else for(g=0;C[g]!=null;g++)C[g]&&C[g].nodeType===1&&o.push(x[g]);else o.push.apply(o,C);else D(C,o);if(P){l(P,p,o,m);l.uniqueSort(o)}return o};l.uniqueSort=function(g){if(w){h=
-k;g.sort(w);if(h)for(var j=1;j<g.length;j++)g[j]===g[j-1]&&g.splice(j--,1)}return g};l.matches=function(g,j){return l(g,null,null,j)};l.matchesSelector=function(g,j){return l(j,null,null,[g]).length>0};l.find=function(g,j,o){var m;if(!g)return[];for(var p=0,q=n.order.length;p<q;p++){var t=n.order[p],x;if(x=n.leftMatch[t].exec(g)){var C=x[1];x.splice(1,1);if(C.substr(C.length-1)!=="\\"){x[1]=(x[1]||"").replace(/\\/g,"");m=n.find[t](x,j,o);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=j.getElementsByTagName("*"));
-return{set:m,expr:g}};l.filter=function(g,j,o,m){for(var p=g,q=[],t=j,x,C,P=j&&j[0]&&l.isXML(j[0]);g&&j.length;){for(var N in n.filter)if((x=n.leftMatch[N].exec(g))!=null&&x[2]){var R=n.filter[N],Q,L;L=x[1];C=false;x.splice(1,1);if(L.substr(L.length-1)!=="\\"){if(t===q)q=[];if(n.preFilter[N])if(x=n.preFilter[N](x,t,o,q,m,P)){if(x===true)continue}else C=Q=true;if(x)for(var i=0;(L=t[i])!=null;i++)if(L){Q=R(L,x,i,t);var r=m^!!Q;if(o&&Q!=null)if(r)C=true;else t[i]=false;else if(r){q.push(L);C=true}}if(Q!==
-A){o||(t=q);g=g.replace(n.match[N],"");if(!C)return[];break}}}if(g===p)if(C==null)l.error(g);else break;p=g}return t};l.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=l.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+\-]*)\))?/,
-POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},relative:{"+":function(g,j){var o=typeof j==="string",m=o&&!/\W/.test(j);o=o&&!m;if(m)j=j.toLowerCase();m=0;for(var p=g.length,q;m<p;m++)if(q=g[m]){for(;(q=q.previousSibling)&&q.nodeType!==1;);g[m]=o||q&&q.nodeName.toLowerCase()===
-j?q||false:q===j}o&&l.filter(j,g,true)},">":function(g,j){var o=typeof j==="string",m,p=0,q=g.length;if(o&&!/\W/.test(j))for(j=j.toLowerCase();p<q;p++){if(m=g[p]){o=m.parentNode;g[p]=o.nodeName.toLowerCase()===j?o:false}}else{for(;p<q;p++)if(m=g[p])g[p]=o?m.parentNode:m.parentNode===j;o&&l.filter(j,g,true)}},"":function(g,j,o){var m=e++,p=b,q;if(typeof j==="string"&&!/\W/.test(j)){q=j=j.toLowerCase();p=a}p("parentNode",j,m,g,q,o)},"~":function(g,j,o){var m=e++,p=b,q;if(typeof j==="string"&&!/\W/.test(j)){q=
-j=j.toLowerCase();p=a}p("previousSibling",j,m,g,q,o)}},find:{ID:function(g,j,o){if(typeof j.getElementById!=="undefined"&&!o)return(g=j.getElementById(g[1]))&&g.parentNode?[g]:[]},NAME:function(g,j){if(typeof j.getElementsByName!=="undefined"){for(var o=[],m=j.getElementsByName(g[1]),p=0,q=m.length;p<q;p++)m[p].getAttribute("name")===g[1]&&o.push(m[p]);return o.length===0?null:o}},TAG:function(g,j){return j.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,j,o,m,p,q){g=" "+g[1].replace(/\\/g,
-"")+" ";if(q)return g;q=0;for(var t;(t=j[q])!=null;q++)if(t)if(p^(t.className&&(" "+t.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))o||m.push(t);else if(o)j[q]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},CHILD:function(g){if(g[1]==="nth"){var j=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=j[1]+(j[2]||1)-0;g[3]=j[3]-0}g[0]=e++;return g},ATTR:function(g,j,o,
-m,p,q){j=g[1].replace(/\\/g,"");if(!q&&n.attrMap[j])g[1]=n.attrMap[j];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,j,o,m,p){if(g[1]==="not")if((d.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=l(g[3],null,null,j);else{g=l.filter(g[3],j,o,true^p);o||m.push.apply(m,g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===
-true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,j,o){return!!l(o[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===
-g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},setFilters:{first:function(g,j){return j===0},last:function(g,j,o,m){return j===m.length-1},even:function(g,j){return j%2===0},odd:function(g,j){return j%2===1},lt:function(g,j,o){return j<o[3]-0},gt:function(g,j,o){return j>o[3]-0},nth:function(g,j,o){return o[3]-
-0===j},eq:function(g,j,o){return o[3]-0===j}},filter:{PSEUDO:function(g,j,o,m){var p=j[1],q=n.filters[p];if(q)return q(g,o,j,m);else if(p==="contains")return(g.textContent||g.innerText||l.getText([g])||"").indexOf(j[3])>=0;else if(p==="not"){j=j[3];o=0;for(m=j.length;o<m;o++)if(j[o]===g)return false;return true}else l.error("Syntax error, unrecognized expression: "+p)},CHILD:function(g,j){var o=j[1],m=g;switch(o){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(o===
-"first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":o=j[2];var p=j[3];if(o===1&&p===0)return true;var q=j[0],t=g.parentNode;if(t&&(t.sizcache!==q||!g.nodeIndex)){var x=0;for(m=t.firstChild;m;m=m.nextSibling)if(m.nodeType===1)m.nodeIndex=++x;t.sizcache=q}m=g.nodeIndex-p;return o===0?m===0:m%o===0&&m/o>=0}},ID:function(g,j){return g.nodeType===1&&g.getAttribute("id")===j},TAG:function(g,j){return j==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===
-j},CLASS:function(g,j){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(j)>-1},ATTR:function(g,j){var o=j[1];o=n.attrHandle[o]?n.attrHandle[o](g):g[o]!=null?g[o]:g.getAttribute(o);var m=o+"",p=j[2],q=j[4];return o==null?p==="!=":p==="="?m===q:p==="*="?m.indexOf(q)>=0:p==="~="?(" "+m+" ").indexOf(q)>=0:!q?m&&o!==false:p==="!="?m!==q:p==="^="?m.indexOf(q)===0:p==="$="?m.substr(m.length-q.length)===q:p==="|="?m===q||m.substr(0,q.length+1)===q+"-":false},POS:function(g,j,o,m){var p=n.setFilters[j[2]];
-if(p)return p(g,o,j,m)}}},s=n.match.POS,v=function(g,j){return"\\"+(j-0+1)},B;for(B in n.match){n.match[B]=RegExp(n.match[B].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[B]=RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[B].source.replace(/\\(\d+)/g,v))}var D=function(g,j){g=Array.prototype.slice.call(g,0);if(j){j.push.apply(j,g);return j}return g};try{Array.prototype.slice.call(u.documentElement.childNodes,0)}catch(H){D=function(g,j){var o=j||[],m=0;if(f.call(g)==="[object Array]")Array.prototype.push.apply(o,
-g);else if(typeof g.length==="number")for(var p=g.length;m<p;m++)o.push(g[m]);else for(;g[m];m++)o.push(g[m]);return o}}var w,G;if(u.documentElement.compareDocumentPosition)w=function(g,j){if(g===j){h=true;return 0}if(!g.compareDocumentPosition||!j.compareDocumentPosition)return g.compareDocumentPosition?-1:1;return g.compareDocumentPosition(j)&4?-1:1};else{w=function(g,j){var o=[],m=[],p=g.parentNode,q=j.parentNode,t=p;if(g===j){h=true;return 0}else if(p===q)return G(g,j);else if(p){if(!q)return 1}else return-1;
-for(;t;){o.unshift(t);t=t.parentNode}for(t=q;t;){m.unshift(t);t=t.parentNode}p=o.length;q=m.length;for(t=0;t<p&&t<q;t++)if(o[t]!==m[t])return G(o[t],m[t]);return t===p?G(g,m[t],-1):G(o[t],j,1)};G=function(g,j,o){if(g===j)return o;for(g=g.nextSibling;g;){if(g===j)return-1;g=g.nextSibling}return 1}}l.getText=function(g){for(var j="",o,m=0;g[m];m++){o=g[m];if(o.nodeType===3||o.nodeType===4)j+=o.nodeValue;else if(o.nodeType!==8)j+=l.getText(o.childNodes)}return j};(function(){var g=u.createElement("div"),
-j="script"+(new Date).getTime();g.innerHTML="<a name='"+j+"'/>";var o=u.documentElement;o.insertBefore(g,o.firstChild);if(u.getElementById(j)){n.find.ID=function(m,p,q){if(typeof p.getElementById!=="undefined"&&!q)return(p=p.getElementById(m[1]))?p.id===m[1]||typeof p.getAttributeNode!=="undefined"&&p.getAttributeNode("id").nodeValue===m[1]?[p]:A:[]};n.filter.ID=function(m,p){var q=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&q&&q.nodeValue===p}}o.removeChild(g);
-o=g=null})();(function(){var g=u.createElement("div");g.appendChild(u.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(j,o){var m=o.getElementsByTagName(j[1]);if(j[1]==="*"){for(var p=[],q=0;m[q];q++)m[q].nodeType===1&&p.push(m[q]);m=p}return m};g.innerHTML="<a href='#'></a>";if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(j){return j.getAttribute("href",2)};g=null})();u.querySelectorAll&&
-function(){var g=l,j=u.createElement("div");j.innerHTML="<p class='TEST'></p>";if(!(j.querySelectorAll&&j.querySelectorAll(".TEST").length===0)){l=function(m,p,q,t){p=p||u;if(!t&&!l.isXML(p))if(p.nodeType===9)try{return D(p.querySelectorAll(m),q)}catch(x){}else if(p.nodeType===1&&p.nodeName.toLowerCase()!=="object"){var C=p.id,P=p.id="__sizzle__";try{return D(p.querySelectorAll("#"+P+" "+m),q)}catch(N){}finally{if(C)p.id=C;else p.removeAttribute("id")}}return g(m,p,q,t)};for(var o in g)l[o]=g[o];
-j=null}}();(function(){var g=u.documentElement,j=g.matchesSelector||g.mozMatchesSelector||g.webkitMatchesSelector||g.msMatchesSelector,o=false;try{j.call(u.documentElement,":sizzle")}catch(m){o=true}if(j)l.matchesSelector=function(p,q){try{if(o||!n.match.PSEUDO.test(q))return j.call(p,q)}catch(t){}return l(q,null,null,[p]).length>0}})();(function(){var g=u.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===
-0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(j,o,m){if(typeof o.getElementsByClassName!=="undefined"&&!m)return o.getElementsByClassName(j[1])};g=null}}})();l.contains=u.documentElement.contains?function(g,j){return g!==j&&(g.contains?g.contains(j):true)}:function(g,j){return!!(g.compareDocumentPosition(j)&16)};l.isXML=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false};var M=function(g,
-j){for(var o=[],m="",p,q=j.nodeType?[j]:j;p=n.match.PSEUDO.exec(g);){m+=p[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;p=0;for(var t=q.length;p<t;p++)l(g,q[p],o);return l.filter(m,o)};c.find=l;c.expr=l.selectors;c.expr[":"]=c.expr.filters;c.unique=l.uniqueSort;c.text=l.getText;c.isXMLDoc=l.isXML;c.contains=l.contains})();var Wa=/Until$/,Xa=/^(?:parents|prevUntil|prevAll)/,Ya=/,/,Ja=/^.[^:#\[\.,]*$/,Za=Array.prototype.slice,$a=c.expr.match.POS;c.fn.extend({find:function(a){for(var b=this.pushStack("",
-"find",a),d=0,e=0,f=this.length;e<f;e++){d=b.length;c.find(a,this[e],b);if(e>0)for(var h=d;h<b.length;h++)for(var k=0;k<d;k++)if(b[k]===b[h]){b.splice(h--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,e=b.length;d<e;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(ka(this,a,false),"not",a)},filter:function(a){return this.pushStack(ka(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,
-b){var d=[],e,f,h=this[0];if(c.isArray(a)){var k={},l,n=1;if(h&&a.length){e=0;for(f=a.length;e<f;e++){l=a[e];k[l]||(k[l]=c.expr.match.POS.test(l)?c(l,b||this.context):l)}for(;h&&h.ownerDocument&&h!==b;){for(l in k){e=k[l];if(e.jquery?e.index(h)>-1:c(h).is(e))d.push({selector:l,elem:h,level:n})}h=h.parentNode;n++}}return d}k=$a.test(a)?c(a,b||this.context):null;e=0;for(f=this.length;e<f;e++)for(h=this[e];h;)if(k?k.index(h)>-1:c.find.matchesSelector(h,a)){d.push(h);break}else{h=h.parentNode;if(!h||
-!h.ownerDocument||h===b)break}d=d.length>1?c.unique(d):d;return this.pushStack(d,"closest",a)},index:function(a){if(!a||typeof a==="string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var d=typeof a==="string"?c(a,b||this.context):c.makeArray(a),e=c.merge(this.get(),d);return this.pushStack(!d[0]||!d[0].parentNode||d[0].parentNode.nodeType===11||!e[0]||!e[0].parentNode||e[0].parentNode.nodeType===11?e:c.unique(e))},andSelf:function(){return this.add(this.prevObject)}});
-c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",
-d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,e){var f=c.map(this,b,d);Wa.test(a)||(e=d);if(e&&typeof e==="string")f=c.filter(e,f);f=this.length>1?c.unique(f):f;if((this.length>1||Ya.test(e))&&Xa.test(a))f=f.reverse();return this.pushStack(f,a,Za.call(arguments).join(","))}});
-c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return b.length===1?c.find.matchesSelector(b[0],a)?[b[0]]:[]:c.find.matches(a,b)},dir:function(a,b,d){var e=[];for(a=a[b];a&&a.nodeType!==9&&(d===A||a.nodeType!==1||!c(a).is(d));){a.nodeType===1&&e.push(a);a=a[b]}return e},nth:function(a,b,d){b=b||1;for(var e=0;a;a=a[d])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var xa=/ jQuery\d+="(?:\d+|null)"/g,
-$=/^\s+/,ya=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,za=/<([\w:]+)/,ab=/<tbody/i,bb=/<|&#?\w+;/,Aa=/<(?:script|object|embed|option|style)/i,Ba=/checked\s*(?:[^=]|=\s*.checked.)/i,cb=/\=([^="'>\s]+\/)>/g,O={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],
-area:[1,"<map>","</map>"],_default:[0,"",""]};O.optgroup=O.option;O.tbody=O.tfoot=O.colgroup=O.caption=O.thead;O.th=O.td;if(!c.support.htmlSerialize)O._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==A)return this.empty().append((this[0]&&this[0].ownerDocument||u).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,
-d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},
-unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=
-c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,e;(e=this[d])!=null;d++)if(!a||c.filter(a,[e]).length){if(!b&&e.nodeType===1){c.cleanData(e.getElementsByTagName("*"));
-c.cleanData([e])}e.parentNode&&e.parentNode.removeChild(e)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,e=this.ownerDocument;if(!d){d=e.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(xa,"").replace(cb,'="$1">').replace($,
-"")],e)[0]}else return this.cloneNode(true)});if(a===true){la(this,b);la(this.find("*"),b.find("*"))}return b},html:function(a){if(a===A)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(xa,""):null;else if(typeof a==="string"&&!Aa.test(a)&&(c.support.leadingWhitespace||!$.test(a))&&!O[(za.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(ya,"<$1></$2>");try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(e){this.empty().append(a)}}else c.isFunction(a)?
-this.each(function(f){var h=c(this);h.html(a.call(this,f,h.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),e=d.html();d.replaceWith(a.call(this,b,e))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,
-true)},domManip:function(a,b,d){var e,f,h=a[0],k=[],l;if(!c.support.checkClone&&arguments.length===3&&typeof h==="string"&&Ba.test(h))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(h))return this.each(function(s){var v=c(this);a[0]=h.call(this,s,b?v.html():A);v.domManip(a,b,d)});if(this[0]){e=h&&h.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:c.buildFragment(a,this,k);l=e.fragment;if(f=l.childNodes.length===1?l=l.firstChild:
-l.firstChild){b=b&&c.nodeName(f,"tr");f=0;for(var n=this.length;f<n;f++)d.call(b?c.nodeName(this[f],"table")?this[f].getElementsByTagName("tbody")[0]||this[f].appendChild(this[f].ownerDocument.createElement("tbody")):this[f]:this[f],f>0||e.cacheable||this.length>1?l.cloneNode(true):l)}k.length&&c.each(k,Ka)}return this}});c.buildFragment=function(a,b,d){var e,f,h;b=b&&b[0]?b[0].ownerDocument||b[0]:u;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===u&&!Aa.test(a[0])&&(c.support.checkClone||
-!Ba.test(a[0]))){f=true;if(h=c.fragments[a[0]])if(h!==1)e=h}if(!e){e=b.createDocumentFragment();c.clean(a,b,e,d)}if(f)c.fragments[a[0]]=h?e:1;return{fragment:e,cacheable:f}};c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var e=[];d=c(d);var f=this.length===1&&this[0].parentNode;if(f&&f.nodeType===11&&f.childNodes.length===1&&d.length===1){d[b](this[0]);return this}else{f=0;for(var h=
-d.length;f<h;f++){var k=(f>0?this.clone(true):this).get();c(d[f])[b](k);e=e.concat(k)}return this.pushStack(e,a,d.selector)}}});c.extend({clean:function(a,b,d,e){b=b||u;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||u;for(var f=[],h=0,k;(k=a[h])!=null;h++){if(typeof k==="number")k+="";if(k){if(typeof k==="string"&&!bb.test(k))k=b.createTextNode(k);else if(typeof k==="string"){k=k.replace(ya,"<$1></$2>");var l=(za.exec(k)||["",""])[1].toLowerCase(),n=O[l]||O._default,
-s=n[0],v=b.createElement("div");for(v.innerHTML=n[1]+k+n[2];s--;)v=v.lastChild;if(!c.support.tbody){s=ab.test(k);l=l==="table"&&!s?v.firstChild&&v.firstChild.childNodes:n[1]==="<table>"&&!s?v.childNodes:[];for(n=l.length-1;n>=0;--n)c.nodeName(l[n],"tbody")&&!l[n].childNodes.length&&l[n].parentNode.removeChild(l[n])}!c.support.leadingWhitespace&&$.test(k)&&v.insertBefore(b.createTextNode($.exec(k)[0]),v.firstChild);k=v.childNodes}if(k.nodeType)f.push(k);else f=c.merge(f,k)}}if(d)for(h=0;f[h];h++)if(e&&
-c.nodeName(f[h],"script")&&(!f[h].type||f[h].type.toLowerCase()==="text/javascript"))e.push(f[h].parentNode?f[h].parentNode.removeChild(f[h]):f[h]);else{f[h].nodeType===1&&f.splice.apply(f,[h+1,0].concat(c.makeArray(f[h].getElementsByTagName("script"))));d.appendChild(f[h])}return f},cleanData:function(a){for(var b,d,e=c.cache,f=c.event.special,h=c.support.deleteExpando,k=0,l;(l=a[k])!=null;k++)if(!(l.nodeName&&c.noData[l.nodeName.toLowerCase()]))if(d=l[c.expando]){if((b=e[d])&&b.events)for(var n in b.events)f[n]?
-c.event.remove(l,n):c.removeEvent(l,n,b.handle);if(h)delete l[c.expando];else l.removeAttribute&&l.removeAttribute(c.expando);delete e[d]}}});var Ca=/alpha\([^)]*\)/i,db=/opacity=([^)]*)/,eb=/-([a-z])/ig,fb=/([A-Z])/g,Da=/^-?\d+(?:px)?$/i,gb=/^-?\d/,hb={position:"absolute",visibility:"hidden",display:"block"},La=["Left","Right"],Ma=["Top","Bottom"],W,ib=u.defaultView&&u.defaultView.getComputedStyle,jb=function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){if(arguments.length===2&&b===A)return this;
-return c.access(this,a,b,true,function(d,e,f){return f!==A?c.style(d,e,f):c.css(d,e)})};c.extend({cssHooks:{opacity:{get:function(a,b){if(b){var d=W(a,"opacity","opacity");return d===""?"1":d}else return a.style.opacity}}},cssNumber:{zIndex:true,fontWeight:true,opacity:true,zoom:true,lineHeight:true},cssProps:{"float":c.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,d,e){if(!(!a||a.nodeType===3||a.nodeType===8||!a.style)){var f,h=c.camelCase(b),k=a.style,l=c.cssHooks[h];b=c.cssProps[h]||
-h;if(d!==A){if(!(typeof d==="number"&&isNaN(d)||d==null)){if(typeof d==="number"&&!c.cssNumber[h])d+="px";if(!l||!("set"in l)||(d=l.set(a,d))!==A)try{k[b]=d}catch(n){}}}else{if(l&&"get"in l&&(f=l.get(a,false,e))!==A)return f;return k[b]}}},css:function(a,b,d){var e,f=c.camelCase(b),h=c.cssHooks[f];b=c.cssProps[f]||f;if(h&&"get"in h&&(e=h.get(a,true,d))!==A)return e;else if(W)return W(a,b,f)},swap:function(a,b,d){var e={},f;for(f in b){e[f]=a.style[f];a.style[f]=b[f]}d.call(a);for(f in b)a.style[f]=
-e[f]},camelCase:function(a){return a.replace(eb,jb)}});c.curCSS=c.css;c.each(["height","width"],function(a,b){c.cssHooks[b]={get:function(d,e,f){var h;if(e){if(d.offsetWidth!==0)h=ma(d,b,f);else c.swap(d,hb,function(){h=ma(d,b,f)});return h+"px"}},set:function(d,e){if(Da.test(e)){e=parseFloat(e);if(e>=0)return e+"px"}else return e}}});if(!c.support.opacity)c.cssHooks.opacity={get:function(a,b){return db.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":
-b?"1":""},set:function(a,b){var d=a.style;d.zoom=1;var e=c.isNaN(b)?"":"alpha(opacity="+b*100+")",f=d.filter||"";d.filter=Ca.test(f)?f.replace(Ca,e):d.filter+" "+e}};if(ib)W=function(a,b,d){var e;d=d.replace(fb,"-$1").toLowerCase();if(!(b=a.ownerDocument.defaultView))return A;if(b=b.getComputedStyle(a,null)){e=b.getPropertyValue(d);if(e===""&&!c.contains(a.ownerDocument.documentElement,a))e=c.style(a,d)}return e};else if(u.documentElement.currentStyle)W=function(a,b){var d,e,f=a.currentStyle&&a.currentStyle[b],
-h=a.style;if(!Da.test(f)&&gb.test(f)){d=h.left;e=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;h.left=b==="fontSize"?"1em":f||0;f=h.pixelLeft+"px";h.left=d;a.runtimeStyle.left=e}return f};if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=a.offsetHeight;return a.offsetWidth===0&&b===0||!c.support.reliableHiddenOffsets&&(a.style.display||c.css(a,"display"))==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var kb=c.now(),lb=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
-mb=/^(?:select|textarea)/i,nb=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,ob=/^(?:GET|HEAD|DELETE)$/,Na=/\[\]$/,T=/\=\?(&|$)/,ia=/\?/,pb=/([?&])_=[^&]*/,qb=/^(\w+:)?\/\/([^\/?#]+)/,rb=/%20/g,sb=/#.*$/,Ea=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!=="string"&&Ea)return Ea.apply(this,arguments);else if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var f=a.slice(e,a.length);a=a.slice(0,e)}e="GET";if(b)if(c.isFunction(b)){d=
-b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);e="POST"}var h=this;c.ajax({url:a,type:e,dataType:"html",data:b,complete:function(k,l){if(l==="success"||l==="notmodified")h.html(f?c("<div>").append(k.responseText.replace(lb,"")).find(f):k.responseText);d&&h.each(d,[k.responseText,l,k])}});return this},serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&
-!this.disabled&&(this.checked||mb.test(this.nodeName)||nb.test(this.type))}).map(function(a,b){var d=c(this).val();return d==null?null:c.isArray(d)?c.map(d,function(e){return{name:b.name,value:e}}):{name:b.name,value:d}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,e){if(c.isFunction(b)){e=e||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:e})},
-getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,e){if(c.isFunction(b)){e=e||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:e})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return new E.XMLHttpRequest},accepts:{xml:"application/xml, text/xml",html:"text/html",
-script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},ajax:function(a){var b=c.extend(true,{},c.ajaxSettings,a),d,e,f,h=b.type.toUpperCase(),k=ob.test(h);b.url=b.url.replace(sb,"");b.context=a&&a.context!=null?a.context:b;if(b.data&&b.processData&&typeof b.data!=="string")b.data=c.param(b.data,b.traditional);if(b.dataType==="jsonp"){if(h==="GET")T.test(b.url)||(b.url+=(ia.test(b.url)?"&":"?")+(b.jsonp||"callback")+"=?");else if(!b.data||
-!T.test(b.data))b.data=(b.data?b.data+"&":"")+(b.jsonp||"callback")+"=?";b.dataType="json"}if(b.dataType==="json"&&(b.data&&T.test(b.data)||T.test(b.url))){d=b.jsonpCallback||"jsonp"+kb++;if(b.data)b.data=(b.data+"").replace(T,"="+d+"$1");b.url=b.url.replace(T,"="+d+"$1");b.dataType="script";var l=E[d];E[d]=function(m){f=m;c.handleSuccess(b,w,e,f);c.handleComplete(b,w,e,f);if(c.isFunction(l))l(m);else{E[d]=A;try{delete E[d]}catch(p){}}v&&v.removeChild(B)}}if(b.dataType==="script"&&b.cache===null)b.cache=
-false;if(b.cache===false&&h==="GET"){var n=c.now(),s=b.url.replace(pb,"$1_="+n);b.url=s+(s===b.url?(ia.test(b.url)?"&":"?")+"_="+n:"")}if(b.data&&h==="GET")b.url+=(ia.test(b.url)?"&":"?")+b.data;b.global&&c.active++===0&&c.event.trigger("ajaxStart");n=(n=qb.exec(b.url))&&(n[1]&&n[1]!==location.protocol||n[2]!==location.host);if(b.dataType==="script"&&h==="GET"&&n){var v=u.getElementsByTagName("head")[0]||u.documentElement,B=u.createElement("script");if(b.scriptCharset)B.charset=b.scriptCharset;B.src=
-b.url;if(!d){var D=false;B.onload=B.onreadystatechange=function(){if(!D&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){D=true;c.handleSuccess(b,w,e,f);c.handleComplete(b,w,e,f);B.onload=B.onreadystatechange=null;v&&B.parentNode&&v.removeChild(B)}}}v.insertBefore(B,v.firstChild);return A}var H=false,w=b.xhr();if(w){b.username?w.open(h,b.url,b.async,b.username,b.password):w.open(h,b.url,b.async);try{if(b.data!=null&&!k||a&&a.contentType)w.setRequestHeader("Content-Type",
-b.contentType);if(b.ifModified){c.lastModified[b.url]&&w.setRequestHeader("If-Modified-Since",c.lastModified[b.url]);c.etag[b.url]&&w.setRequestHeader("If-None-Match",c.etag[b.url])}n||w.setRequestHeader("X-Requested-With","XMLHttpRequest");w.setRequestHeader("Accept",b.dataType&&b.accepts[b.dataType]?b.accepts[b.dataType]+", */*; q=0.01":b.accepts._default)}catch(G){}if(b.beforeSend&&b.beforeSend.call(b.context,w,b)===false){b.global&&c.active--===1&&c.event.trigger("ajaxStop");w.abort();return false}b.global&&
-c.triggerGlobal(b,"ajaxSend",[w,b]);var M=w.onreadystatechange=function(m){if(!w||w.readyState===0||m==="abort"){H||c.handleComplete(b,w,e,f);H=true;if(w)w.onreadystatechange=c.noop}else if(!H&&w&&(w.readyState===4||m==="timeout")){H=true;w.onreadystatechange=c.noop;e=m==="timeout"?"timeout":!c.httpSuccess(w)?"error":b.ifModified&&c.httpNotModified(w,b.url)?"notmodified":"success";var p;if(e==="success")try{f=c.httpData(w,b.dataType,b)}catch(q){e="parsererror";p=q}if(e==="success"||e==="notmodified")d||
-c.handleSuccess(b,w,e,f);else c.handleError(b,w,e,p);d||c.handleComplete(b,w,e,f);m==="timeout"&&w.abort();if(b.async)w=null}};try{var g=w.abort;w.abort=function(){w&&g.call&&g.call(w);M("abort")}}catch(j){}b.async&&b.timeout>0&&setTimeout(function(){w&&!H&&M("timeout")},b.timeout);try{w.send(k||b.data==null?null:b.data)}catch(o){c.handleError(b,w,null,o);c.handleComplete(b,w,e,f)}b.async||M();return w}},param:function(a,b){var d=[],e=function(h,k){k=c.isFunction(k)?k():k;d[d.length]=encodeURIComponent(h)+
-"="+encodeURIComponent(k)};if(b===A)b=c.ajaxSettings.traditional;if(c.isArray(a)||a.jquery)c.each(a,function(){e(this.name,this.value)});else for(var f in a)ca(f,a[f],b,e);return d.join("&").replace(rb,"+")}});c.extend({active:0,lastModified:{},etag:{},handleError:function(a,b,d,e){a.error&&a.error.call(a.context,b,d,e);a.global&&c.triggerGlobal(a,"ajaxError",[b,a,e])},handleSuccess:function(a,b,d,e){a.success&&a.success.call(a.context,e,d,b);a.global&&c.triggerGlobal(a,"ajaxSuccess",[b,a])},handleComplete:function(a,
-b,d){a.complete&&a.complete.call(a.context,b,d);a.global&&c.triggerGlobal(a,"ajaxComplete",[b,a]);a.global&&c.active--===1&&c.event.trigger("ajaxStop")},triggerGlobal:function(a,b,d){(a.context&&a.context.url==null?c(a.context):c.event).trigger(b,d)},httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===1223}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),e=a.getResponseHeader("Etag");
-if(d)c.lastModified[b]=d;if(e)c.etag[b]=e;return a.status===304},httpData:function(a,b,d){var e=a.getResponseHeader("content-type")||"",f=b==="xml"||!b&&e.indexOf("xml")>=0;a=f?a.responseXML:a.responseText;f&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b==="json"||!b&&e.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&e.indexOf("javascript")>=0)c.globalEval(a);return a}});if(E.ActiveXObject)c.ajaxSettings.xhr=
-function(){if(E.location.protocol!=="file:")try{return new E.XMLHttpRequest}catch(a){}try{return new E.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}};c.support.ajax=!!c.ajaxSettings.xhr();var da={},tb=/^(?:toggle|show|hide)$/,ub=/^([+\-]=)?([\d+.\-]+)(.*)$/,aa,na=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b,d){if(a||a===0)return this.animate(S("show",3),a,b,d);else{a=
-0;for(b=this.length;a<b;a++){if(!c.data(this[a],"olddisplay")&&this[a].style.display==="none")this[a].style.display="";this[a].style.display===""&&c.css(this[a],"display")==="none"&&c.data(this[a],"olddisplay",oa(this[a].nodeName))}for(a=0;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b,d){if(a||a===0)return this.animate(S("hide",3),a,b,d);else{a=0;for(b=this.length;a<b;a++){d=c.css(this[a],"display");d!=="none"&&c.data(this[a],"olddisplay",d)}for(a=
-0;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b,d){var e=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||e?this.each(function(){var f=e?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(S("toggle",3),a,b,d);return this},fadeTo:function(a,b,d,e){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d,e)},animate:function(a,b,d,e){var f=c.speed(b,d,e);if(c.isEmptyObject(a))return this.each(f.complete);
-return this[f.queue===false?"each":"queue"](function(){var h=c.extend({},f),k,l=this.nodeType===1,n=l&&c(this).is(":hidden"),s=this;for(k in a){var v=c.camelCase(k);if(k!==v){a[v]=a[k];delete a[k];k=v}if(a[k]==="hide"&&n||a[k]==="show"&&!n)return h.complete.call(this);if(l&&(k==="height"||k==="width")){h.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY];if(c.css(this,"display")==="inline"&&c.css(this,"float")==="none")if(c.support.inlineBlockNeedsLayout)if(oa(this.nodeName)===
-"inline")this.style.display="inline-block";else{this.style.display="inline";this.style.zoom=1}else this.style.display="inline-block"}if(c.isArray(a[k])){(h.specialEasing=h.specialEasing||{})[k]=a[k][1];a[k]=a[k][0]}}if(h.overflow!=null)this.style.overflow="hidden";h.curAnim=c.extend({},a);c.each(a,function(B,D){var H=new c.fx(s,h,B);if(tb.test(D))H[D==="toggle"?n?"show":"hide":D](a);else{var w=ub.exec(D),G=H.cur(true)||0;if(w){var M=parseFloat(w[2]),g=w[3]||"px";if(g!=="px"){c.style(s,B,(M||1)+g);
-G=(M||1)/H.cur(true)*G;c.style(s,B,G+g)}if(w[1])M=(w[1]==="-="?-1:1)*M+G;H.custom(G,M,g)}else H.custom(G,D,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);this.each(function(){for(var e=d.length-1;e>=0;e--)if(d[e].elem===this){b&&d[e](true);d.splice(e,1)}});b||this.dequeue();return this}});c.each({slideDown:S("show",1),slideUp:S("hide",1),slideToggle:S("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,e,f){return this.animate(b,
-d,e,f)}});c.extend({speed:function(a,b,d){var e=a&&typeof a==="object"?c.extend({},a):{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};e.duration=c.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in c.fx.speeds?c.fx.speeds[e.duration]:c.fx.speeds._default;e.old=e.complete;e.complete=function(){e.queue!==false&&c(this).dequeue();c.isFunction(e.old)&&e.old.call(this)};return e},easing:{linear:function(a,b,d,e){return d+e*a},swing:function(a,b,d,e){return(-Math.cos(a*
-Math.PI)/2+0.5)*e+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||c.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a=parseFloat(c.css(this.elem,this.prop));return a&&a>-1E4?a:0},custom:function(a,b,d){function e(h){return f.step(h)}
-this.startTime=c.now();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;this.pos=this.state=0;var f=this;a=c.fx;e.elem=this.elem;if(e()&&c.timers.push(e)&&!aa)aa=setInterval(a.tick,a.interval)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;
-this.custom(this.cur(),0)},step:function(a){var b=c.now(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var e in this.options.curAnim)if(this.options.curAnim[e]!==true)d=false;if(d){if(this.options.overflow!=null&&!c.support.shrinkWrapBlocks){var f=this.elem,h=this.options;c.each(["","X","Y"],function(l,n){f.style["overflow"+n]=h.overflow[l]})}this.options.hide&&c(this.elem).hide();if(this.options.hide||
-this.options.show)for(var k in this.options.curAnim)c.style(this.elem,k,this.options.orig[k]);this.options.complete.call(this.elem)}return false}else{a=b-this.startTime;this.state=a/this.options.duration;b=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||b](this.state,a,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=
-c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||c.fx.stop()},interval:13,stop:function(){clearInterval(aa);aa=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===
-b.elem}).length};var vb=/^t(?:able|d|h)$/i,Fa=/^(?:body|html)$/i;c.fn.offset="getBoundingClientRect"in u.documentElement?function(a){var b=this[0],d;if(a)return this.each(function(k){c.offset.setOffset(this,a,k)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);try{d=b.getBoundingClientRect()}catch(e){}var f=b.ownerDocument,h=f.documentElement;if(!d||!c.contains(h,b))return d||{top:0,left:0};b=f.body;f=ea(f);return{top:d.top+(f.pageYOffset||c.support.boxModel&&
-h.scrollTop||b.scrollTop)-(h.clientTop||b.clientTop||0),left:d.left+(f.pageXOffset||c.support.boxModel&&h.scrollLeft||b.scrollLeft)-(h.clientLeft||b.clientLeft||0)}}:function(a){var b=this[0];if(a)return this.each(function(s){c.offset.setOffset(this,a,s)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,e=b.ownerDocument,f,h=e.documentElement,k=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;
-for(var l=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==k&&b!==h;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;f=e?e.getComputedStyle(b,null):b.currentStyle;l-=b.scrollTop;n-=b.scrollLeft;if(b===d){l+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&vb.test(b.nodeName))){l+=parseFloat(f.borderTopWidth)||0;n+=parseFloat(f.borderLeftWidth)||0}d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&f.overflow!=="visible"){l+=
-parseFloat(f.borderTopWidth)||0;n+=parseFloat(f.borderLeftWidth)||0}f=f}if(f.position==="relative"||f.position==="static"){l+=k.offsetTop;n+=k.offsetLeft}if(c.offset.supportsFixedPosition&&f.position==="fixed"){l+=Math.max(h.scrollTop,k.scrollTop);n+=Math.max(h.scrollLeft,k.scrollLeft)}return{top:l,left:n}};c.offset={initialize:function(){var a=u.body,b=u.createElement("div"),d,e,f,h=parseFloat(c.css(a,"marginTop"))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",
-height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";a.insertBefore(b,a.firstChild);d=b.firstChild;e=d.firstChild;f=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=e.offsetTop!==5;this.doesAddBorderForTableAndCells=
-f.offsetTop===5;e.style.position="fixed";e.style.top="20px";this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15;e.style.position=e.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==h;a.removeChild(b);c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.css(a,
-"marginTop"))||0;d+=parseFloat(c.css(a,"marginLeft"))||0}return{top:b,left:d}},setOffset:function(a,b,d){var e=c.css(a,"position");if(e==="static")a.style.position="relative";var f=c(a),h=f.offset(),k=c.css(a,"top"),l=c.css(a,"left"),n=e==="absolute"&&c.inArray("auto",[k,l])>-1;e={};var s={};if(n)s=f.position();k=n?s.top:parseInt(k,10)||0;l=n?s.left:parseInt(l,10)||0;if(c.isFunction(b))b=b.call(a,d,h);if(b.top!=null)e.top=b.top-h.top+k;if(b.left!=null)e.left=b.left-h.left+l;"using"in b?b.using.call(a,
-e):f.css(e)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),e=Fa.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.css(a,"marginTop"))||0;d.left-=parseFloat(c.css(a,"marginLeft"))||0;e.top+=parseFloat(c.css(b[0],"borderTopWidth"))||0;e.left+=parseFloat(c.css(b[0],"borderLeftWidth"))||0;return{top:d.top-e.top,left:d.left-e.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||u.body;a&&!Fa.test(a.nodeName)&&
-c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(e){var f=this[0],h;if(!f)return null;if(e!==A)return this.each(function(){if(h=ea(this))h.scrollTo(!a?e:c(h).scrollLeft(),a?e:c(h).scrollTop());else this[d]=e});else return(h=ea(f))?"pageXOffset"in h?h[a?"pageYOffset":"pageXOffset"]:c.support.boxModel&&h.document.documentElement[d]||h.document.body[d]:f[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();
-c.fn["inner"+b]=function(){return this[0]?parseFloat(c.css(this[0],d,"padding")):null};c.fn["outer"+b]=function(e){return this[0]?parseFloat(c.css(this[0],d,e?"margin":"border")):null};c.fn[d]=function(e){var f=this[0];if(!f)return e==null?null:this;if(c.isFunction(e))return this.each(function(h){var k=c(this);k[d](e.call(this,h,k[d]()))});return c.isWindow(f)?f.document.compatMode==="CSS1Compat"&&f.document.documentElement["client"+b]||f.document.body["client"+b]:f.nodeType===9?Math.max(f.documentElement["client"+
-b],f.body["scroll"+b],f.documentElement["scroll"+b],f.body["offset"+b],f.documentElement["offset"+b]):e===A?parseFloat(c.css(f,d)):this.css(d,typeof e==="string"?e:e+"px")}})})(window);
+++ /dev/null
-jQuery.tableDnD = {
- /** Keep hold of the current table being dragged */
- currentTable : null,
- /** Keep hold of the current drag object if any */
- dragObject: null,
- /** The current mouse offset */
- mouseOffset: null,
- /** Remember the old value of Y so that we don't do too much processing */
- oldY: 0,
-
- /** Actually build the structure */
- build: function(options) {
- // Set up the defaults if any
-
- this.each(function() {
- // This is bound to each matching table, set up the defaults and override with user options
- this.tableDnDConfig = jQuery.extend({
- onDragStyle: null,
- onDropStyle: null,
- // Add in the default class for whileDragging
- onDragClass: "tDnD_whileDrag",
- onDrop: null,
- onDragStart: null,
- scrollAmount: 5,
- serializeRegexp: /[^\-]*$/, // The regular expression to use to trim row IDs
- serializeParamName: null, // If you want to specify another parameter name instead of the table ID
- dragHandle: null // If you give the name of a class here, then only Cells with this class will be draggable
- }, options || {});
- // Now make the rows draggable
- jQuery.tableDnD.makeDraggable(this);
- });
-
- // Now we need to capture the mouse up and mouse move event
- // We can use bind so that we don't interfere with other event handlers
- jQuery(document)
- .bind('mousemove', jQuery.tableDnD.mousemove)
- .bind('mouseup', jQuery.tableDnD.mouseup);
-
- // Don't break the chain
- return this;
- },
-
- /** This function makes all the rows on the table draggable apart from those marked as "NoDrag" */
- makeDraggable: function(table) {
- var config = table.tableDnDConfig;
- if (table.tableDnDConfig.dragHandle) {
- // We only need to add the event to the specified cells
- var cells = jQuery("td."+table.tableDnDConfig.dragHandle, table);
- cells.each(function() {
- // The cell is bound to "this"
- jQuery(this).mousedown(function(ev) {
- jQuery.tableDnD.dragObject = this.parentNode;
- jQuery.tableDnD.currentTable = table;
- jQuery.tableDnD.mouseOffset = jQuery.tableDnD.getMouseOffset(this, ev);
- if (config.onDragStart) {
- // Call the onDrop method if there is one
- config.onDragStart(table, this);
- }
- return false;
- });
- })
- } else {
- // For backwards compatibility, we add the event to the whole row
- var rows = jQuery("tr", table); // get all the rows as a wrapped set
- rows.each(function() {
- // Iterate through each row, the row is bound to "this"
- var row = jQuery(this);
- if (! row.hasClass("nodrag")) {
- row.mousedown(function(ev) {
- if (ev.target.tagName == "TD") {
- jQuery.tableDnD.dragObject = this;
- jQuery.tableDnD.currentTable = table;
- jQuery.tableDnD.mouseOffset = jQuery.tableDnD.getMouseOffset(this, ev);
- if (config.onDragStart) {
- // Call the onDrop method if there is one
- config.onDragStart(table, this);
- }
- return false;
- }
- }).css("cursor", "move"); // Store the tableDnD object
- }
- });
- }
- },
-
- updateTables: function() {
- this.each(function() {
- // this is now bound to each matching table
- if (this.tableDnDConfig) {
- jQuery.tableDnD.makeDraggable(this);
- }
- })
- },
-
- /** Get the mouse coordinates from the event (allowing for browser differences) */
- mouseCoords: function(ev){
- if(ev.pageX || ev.pageY){
- return {x:ev.pageX, y:ev.pageY};
- }
- return {
- x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
- y:ev.clientY + document.body.scrollTop - document.body.clientTop
- };
- },
-
- /** Given a target element and a mouse event, get the mouse offset from that element.
- To do this we need the element's position and the mouse position */
- getMouseOffset: function(target, ev) {
- ev = ev || window.event;
-
- var docPos = this.getPosition(target);
- var mousePos = this.mouseCoords(ev);
- return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y};
- },
-
- /** Get the position of an element by going up the DOM tree and adding up all the offsets */
- getPosition: function(e){
- var left = 0;
- var top = 0;
- /** Safari fix -- thanks to Luis Chato for this! */
- if (e.offsetHeight == 0) {
- /** Safari 2 doesn't correctly grab the offsetTop of a table row
- this is detailed here:
- http://jacob.peargrove.com/blog/2006/technical/table-row-offsettop-bug-in-safari/
- the solution is likewise noted there, grab the offset of a table cell in the row - the firstChild.
- note that firefox will return a text node as a first child, so designing a more thorough
- solution may need to take that into account, for now this seems to work in firefox, safari, ie */
- e = e.firstChild; // a table cell
- }
-
- while (e.offsetParent){
- left += e.offsetLeft;
- top += e.offsetTop;
- e = e.offsetParent;
- }
-
- left += e.offsetLeft;
- top += e.offsetTop;
-
- return {x:left, y:top};
- },
-
- mousemove: function(ev) {
- if (jQuery.tableDnD.dragObject == null) {
- return;
- }
-
- var dragObj = jQuery(jQuery.tableDnD.dragObject);
- var config = jQuery.tableDnD.currentTable.tableDnDConfig;
- var mousePos = jQuery.tableDnD.mouseCoords(ev);
- var y = mousePos.y - jQuery.tableDnD.mouseOffset.y;
- //auto scroll the window
- var yOffset = window.pageYOffset;
- if (document.all) {
- // Windows version
- //yOffset=document.body.scrollTop;
- if (typeof document.compatMode != 'undefined' &&
- document.compatMode != 'BackCompat') {
- yOffset = document.documentElement.scrollTop;
- }
- else if (typeof document.body != 'undefined') {
- yOffset=document.body.scrollTop;
- }
-
- }
-
- if (mousePos.y-yOffset < config.scrollAmount) {
- window.scrollBy(0, -config.scrollAmount);
- } else {
- var windowHeight = window.innerHeight ? window.innerHeight
- : document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight;
- if (windowHeight-(mousePos.y-yOffset) < config.scrollAmount) {
- window.scrollBy(0, config.scrollAmount);
- }
- }
-
-
- if (y != jQuery.tableDnD.oldY) {
- // work out if we're going up or down...
- var movingDown = y > jQuery.tableDnD.oldY;
- // update the old value
- jQuery.tableDnD.oldY = y;
- // update the style to show we're dragging
- if (config.onDragClass) {
- dragObj.addClass(config.onDragClass);
- } else {
- dragObj.css(config.onDragStyle);
- }
- // If we're over a row then move the dragged row to there so that the user sees the
- // effect dynamically
- var currentRow = jQuery.tableDnD.findDropTargetRow(dragObj, y);
- if (currentRow) {
- // TODO worry about what happens when there are multiple TBODIES
- if (movingDown && jQuery.tableDnD.dragObject != currentRow) {
- jQuery.tableDnD.dragObject.parentNode.insertBefore(jQuery.tableDnD.dragObject, currentRow.nextSibling);
- } else if (! movingDown && jQuery.tableDnD.dragObject != currentRow) {
- jQuery.tableDnD.dragObject.parentNode.insertBefore(jQuery.tableDnD.dragObject, currentRow);
- }
- }
- }
-
- return false;
- },
-
- /** We're only worried about the y position really, because we can only move rows up and down */
- findDropTargetRow: function(draggedRow, y) {
- var rows = jQuery.tableDnD.currentTable.rows;
- for (var i=0; i<rows.length; i++) {
- var row = rows[i];
- var rowY = this.getPosition(row).y;
- var rowHeight = parseInt(row.offsetHeight)/2;
- if (row.offsetHeight == 0) {
- rowY = this.getPosition(row.firstChild).y;
- rowHeight = parseInt(row.firstChild.offsetHeight)/2;
- }
- // Because we always have to insert before, we need to offset the height a bit
- if ((y > rowY - rowHeight) && (y < (rowY + rowHeight))) {
- // that's the row we're over
- // If it's the same as the current row, ignore it
- if (row == draggedRow) {return null;}
- var config = jQuery.tableDnD.currentTable.tableDnDConfig;
- if (config.onAllowDrop) {
- if (config.onAllowDrop(draggedRow, row)) {
- return row;
- } else {
- return null;
- }
- } else {
- // If a row has nodrop class, then don't allow dropping (inspired by John Tarr and Famic)
- var nodrop = jQuery(row).hasClass("nodrop");
- if (! nodrop) {
- return row;
- } else {
- return null;
- }
- }
- return row;
- }
- }
- return null;
- },
-
- mouseup: function(e) {
- if (jQuery.tableDnD.currentTable && jQuery.tableDnD.dragObject) {
- var droppedRow = jQuery.tableDnD.dragObject;
- var config = jQuery.tableDnD.currentTable.tableDnDConfig;
- // If we have a dragObject, then we need to release it,
- // The row will already have been moved to the right place so we just reset stuff
- if (config.onDragClass) {
- jQuery(droppedRow).removeClass(config.onDragClass);
- } else {
- jQuery(droppedRow).css(config.onDropStyle);
- }
- jQuery.tableDnD.dragObject = null;
- if (config.onDrop) {
- // Call the onDrop method if there is one
- config.onDrop(jQuery.tableDnD.currentTable, droppedRow);
- }
- jQuery.tableDnD.currentTable = null; // let go of the table too
- }
- },
-
- serialize: function() {
- if (jQuery.tableDnD.currentTable) {
- return jQuery.tableDnD.serializeTable(jQuery.tableDnD.currentTable);
- } else {
- return "Error: No Table id set, you need to set an id on your table and every row";
- }
- },
-
- serializeTable: function(table) {
- var result = "";
- var tableId = table.id;
- var rows = table.rows;
- for (var i=0; i<rows.length; i++) {
- var rowId = rows[i].id;
- if (rowId && rowId && table.tableDnDConfig && table.tableDnDConfig.serializeRegexp) {
- rowId = rowId.match(table.tableDnDConfig.serializeRegexp)[0];
- }
- if (result.length > 0) result += ",";
- result += rowId;
- }
- return result;
- },
-
- serializeTables: function() {
- var result = "";
- this.each(function() {
- // this is now bound to each matching table
- result += jQuery.tableDnD.serializeTable(this);
- });
- return result;
- }
-
-}
-
-jQuery.fn.extend(
- {
- tableDnD : jQuery.tableDnD.build,
- tableDnDUpdate : jQuery.tableDnD.updateTables,
- tableDnDSerialize: jQuery.tableDnD.serializeTables
- }
-);
\ No newline at end of file
+++ /dev/null
-/**\r
- * SWFObject v1.4.1: Flash Player detection and embed - http://blog.deconcept.com/swfobject/\r
- *\r
- * SWFObject is (c) 2006 Geoff Stearns and is released under the MIT License:\r
- * http://www.opensource.org/licenses/mit-license.php\r
- *\r
- * **SWFObject is the SWF embed script formerly known as FlashObject. The name was changed for\r
- * legal reasons.\r
- */\r
-if(typeof deconcept=="undefined"){var deconcept=new Object();}\r
-if(typeof deconcept.util=="undefined"){deconcept.util=new Object();}\r
-if(typeof deconcept.SWFObjectUtil=="undefined"){deconcept.SWFObjectUtil=new Object();}\r
-deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a,_b){\r
-if(!document.createElement||!document.getElementById){return;}\r
-this.DETECT_KEY=_b?_b:"detectflash";\r
-this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);\r
-this.params=new Object();\r
-this.variables=new Object();\r
-this.attributes=new Array();\r
-if(_1){this.setAttribute("swf",_1);}\r
-if(id){this.setAttribute("id",id);}\r
-if(w){this.setAttribute("width",w);}\r
-if(h){this.setAttribute("height",h);}\r
-if(_5){this.setAttribute("version",new deconcept.PlayerVersion(_5.toString().split(".")));}\r
-this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion(this.getAttribute("version"),_7);\r
-if(c){this.addParam("bgcolor",c);}\r
-var q=_8?_8:"high";\r
-this.addParam("quality",q);\r
-this.setAttribute("useExpressInstall",_7);\r
-this.setAttribute("doExpressInstall",false);\r
-var _d=(_9)?_9:window.location;\r
-this.setAttribute("xiRedirectUrl",_d);\r
-this.setAttribute("redirectUrl","");\r
-if(_a){this.setAttribute("redirectUrl",_a);}};\r
-deconcept.SWFObject.prototype={setAttribute:function(_e,_f){\r
-this.attributes[_e]=_f;\r
-},getAttribute:function(_10){\r
-return this.attributes[_10];\r
-},addParam:function(_11,_12){\r
-this.params[_11]=_12;\r
-},getParams:function(){\r
-return this.params;\r
-},addVariable:function(_13,_14){\r
-this.variables[_13]=_14;\r
-},getVariable:function(_15){\r
-return this.variables[_15];\r
-},getVariables:function(){\r
-return this.variables;\r
-},getVariablePairs:function(){\r
-var _16=new Array();\r
-var key;\r
-var _18=this.getVariables();\r
-for(key in _18){_16.push(key+"="+_18[key]);}\r
-return _16;\r
-},getSWFHTML:function(){\r
-var _19="";\r
-if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){\r
-if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","PlugIn");}\r
-_19="<embed type=\"application/x-shockwave-flash\" src=\""+this.getAttribute("swf")+"\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\"";\r
-_19+=" id=\""+this.getAttribute("id")+"\" name=\""+this.getAttribute("id")+"\" ";\r
-var _1a=this.getParams();\r
-for(var key in _1a){_19+=[key]+"=\""+_1a[key]+"\" ";}\r
-var _1c=this.getVariablePairs().join("&");\r
-if(_1c.length>0){_19+="flashvars=\""+_1c+"\"";}\r
-_19+="/>";}else{if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","ActiveX");}\r
-_19="<object id=\""+this.getAttribute("id")+"\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\">";\r
-_19+="<param name=\"movie\" value=\""+this.getAttribute("swf")+"\" />";\r
-var _1d=this.getParams();\r
-for(var key in _1d){_19+="<param name=\""+key+"\" value=\""+_1d[key]+"\" />";}\r
-var _1f=this.getVariablePairs().join("&");\r
-if(_1f.length>0){_19+="<param name=\"flashvars\" value=\""+_1f+"\" />";}_19+="</object>";}\r
-return _19;},write:function(_20){\r
-if(this.getAttribute("useExpressInstall")){\r
-var _21=new deconcept.PlayerVersion([6,0,65]);\r
-if(this.installedVer.versionIsValid(_21)&&!this.installedVer.versionIsValid(this.getAttribute("version"))){\r
-this.setAttribute("doExpressInstall",true);\r
-this.addVariable("MMredirectURL",escape(this.getAttribute("xiRedirectUrl")));\r
-document.title=document.title.slice(0,47)+" - Flash Player Installation";\r
-this.addVariable("MMdoctitle",document.title);}}\r
-if(this.skipDetect||this.getAttribute("doExpressInstall")||this.installedVer.versionIsValid(this.getAttribute("version"))){\r
-var n=(typeof _20=="string")?document.getElementById(_20):_20;\r
-n.innerHTML=this.getSWFHTML();return true;\r
-}else{if(this.getAttribute("redirectUrl")!=""){document.location.replace(this.getAttribute("redirectUrl"));}}return false;}};\r
-deconcept.SWFObjectUtil.getPlayerVersion=function(_23,_24){\r
-var _25=new deconcept.PlayerVersion([0,0,0]);\r
-if(navigator.plugins&&navigator.mimeTypes.length){\r
-var x=navigator.plugins["Shockwave Flash"];\r
-if(x&&x.description){_25=new deconcept.PlayerVersion(x.description.replace(/([a-z]|[A-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."));}\r
-}else{try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");\r
-for(var i=3;axo!=null;i++){axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+i);_25=new deconcept.PlayerVersion([i,0,0]);}}\r
-catch(e){}\r
-if(_23&&_25.major>_23.major){return _25;}\r
-if(!_23||((_23.minor!=0||_23.rev!=0)&&_25.major==_23.major)||_25.major!=6||_24){\r
-try{_25=new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));}\r
-catch(e){}}}return _25;};\r
-deconcept.PlayerVersion=function(_29){\r
-this.major=parseInt(_29[0])!=null?parseInt(_29[0]):0;\r
-this.minor=parseInt(_29[1])||0;\r
-this.rev=parseInt(_29[2])||0;};\r
-deconcept.PlayerVersion.prototype.versionIsValid=function(fv){\r
-if(this.major<fv.major){return false;}\r
-if(this.major>fv.major){return true;}\r
-if(this.minor<fv.minor){return false;}\r
-if(this.minor>fv.minor){return true;}\r
-if(this.rev<fv.rev){return false;}return true;};\r
-deconcept.util={getRequestParameter:function(_2b){\r
-var q=document.location.search||document.location.hash;\r
-if(q){var _2d=q.indexOf(_2b+"=");\r
-var _2e=(q.indexOf("&",_2d)>-1)?q.indexOf("&",_2d):q.length;\r
-if(q.length>1&&_2d>-1){return q.substring(q.indexOf("=",_2d)+1,_2e);}}\r
-return "";}};\r
-deconcept.SWFObjectUtil.cleanupSWFs=function(){\r
-var _2f=document.getElementsByTagName("OBJECT");\r
-for(var i=0;i<_2f.length;i++){\r
-for(var x in _2f[i]){if(typeof _2f[i][x]=="function"){_2f[i][x]=null;}}}};\r
-if(typeof window.onunload=="function"){\r
-var oldunload=window.onunload;\r
-window.onunload=function(){deconcept.SWFObjectUtil.cleanupSWFs();oldunload();};\r
-}else{window.onunload=deconcept.SWFObjectUtil.cleanupSWFs;}\r
-if(Array.prototype.push==null){\r
-Array.prototype.push=function(_32){\r
-this[this.length]=_32;\r
-return this.length;};}\r
-\r
-var getQueryParamValue = deconcept.util.getRequestParameter;\r
-var FlashObject = deconcept.SWFObject; // for backwards compatibility\r
-var SWFObject = deconcept.SWFObject;\r
-\r
+++ /dev/null
-tinyMCE.addI18n({en:{\r
-common:{\r
-edit_confirm:"Do you want to use the WYSIWYG mode for this textarea?",\r
-apply:"Apply",\r
-insert:"Insert",\r
-update:"Update",\r
-cancel:"Cancel",\r
-close:"Close",\r
-browse:"Browse",\r
-class_name:"Class",\r
-not_set:"-- Not set --",\r
-clipboard_msg:"Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?",\r
-clipboard_no_support:"Currently not supported by your browser, use keyboard shortcuts instead.",\r
-popup_blocked:"Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.",\r
-invalid_data:"Error: Invalid values entered, these are marked in red.",\r
-more_colors:"More colors"\r
-},\r
-contextmenu:{\r
-align:"Alignment",\r
-left:"Left",\r
-center:"Center",\r
-right:"Right",\r
-full:"Full"\r
-},\r
-insertdatetime:{\r
-date_fmt:"%Y-%m-%d",\r
-time_fmt:"%H:%M:%S",\r
-insertdate_desc:"Insert date",\r
-inserttime_desc:"Insert time",\r
-months_long:"January,February,March,April,May,June,July,August,September,October,November,December",\r
-months_short:"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec",\r
-day_long:"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday",\r
-day_short:"Sun,Mon,Tue,Wed,Thu,Fri,Sat,Sun"\r
-},\r
-print:{\r
-print_desc:"Print"\r
-},\r
-preview:{\r
-preview_desc:"Preview"\r
-},\r
-directionality:{\r
-ltr_desc:"Direction left to right",\r
-rtl_desc:"Direction right to left"\r
-},\r
-layer:{\r
-insertlayer_desc:"Insert new layer",\r
-forward_desc:"Move forward",\r
-backward_desc:"Move backward",\r
-absolute_desc:"Toggle absolute positioning",\r
-content:"New layer..."\r
-},\r
-save:{\r
-save_desc:"Save",\r
-cancel_desc:"Cancel all changes"\r
-},\r
-nonbreaking:{\r
-nonbreaking_desc:"Insert non-breaking space character"\r
-},\r
-iespell:{\r
-iespell_desc:"Run spell checking",\r
-download:"ieSpell not detected. Do you want to install it now?"\r
-},\r
-advhr:{\r
-advhr_desc:"Horizontal rule"\r
-},\r
-emotions:{\r
-emotions_desc:"Emotions"\r
-},\r
-searchreplace:{\r
-search_desc:"Find",\r
-replace_desc:"Find/Replace"\r
-},\r
-advimage:{\r
-image_desc:"Insert/edit image"\r
-},\r
-advlink:{\r
-link_desc:"Insert/edit link"\r
-},\r
-xhtmlxtras:{\r
-cite_desc:"Citation",\r
-abbr_desc:"Abbreviation",\r
-acronym_desc:"Acronym",\r
-del_desc:"Deletion",\r
-ins_desc:"Insertion",\r
-attribs_desc:"Insert/Edit Attributes"\r
-},\r
-style:{\r
-desc:"Edit CSS Style"\r
-},\r
-paste:{\r
-paste_text_desc:"Paste as Plain Text",\r
-paste_word_desc:"Paste from Word",\r
-selectall_desc:"Select All"\r
-},\r
-paste_dlg:{\r
-text_title:"Use CTRL+V on your keyboard to paste the text into the window.",\r
-text_linebreaks:"Keep linebreaks",\r
-word_title:"Use CTRL+V on your keyboard to paste the text into the window."\r
-},\r
-table:{\r
-desc:"Inserts a new table",\r
-row_before_desc:"Insert row before",\r
-row_after_desc:"Insert row after",\r
-delete_row_desc:"Delete row",\r
-col_before_desc:"Insert column before",\r
-col_after_desc:"Insert column after",\r
-delete_col_desc:"Remove column",\r
-split_cells_desc:"Split merged table cells",\r
-merge_cells_desc:"Merge table cells",\r
-row_desc:"Table row properties",\r
-cell_desc:"Table cell properties",\r
-props_desc:"Table properties",\r
-paste_row_before_desc:"Paste table row before",\r
-paste_row_after_desc:"Paste table row after",\r
-cut_row_desc:"Cut table row",\r
-copy_row_desc:"Copy table row",\r
-del:"Delete table",\r
-row:"Row",\r
-col:"Column",\r
-cell:"Cell"\r
-},\r
-autosave:{\r
-unload_msg:"The changes you made will be lost if you navigate away from this page."\r
-},\r
-fullscreen:{\r
-desc:"Toggle fullscreen mode"\r
-},\r
-media:{\r
-desc:"Insert / edit embedded media",\r
-edit:"Edit embedded media"\r
-},\r
-fullpage:{\r
-desc:"Document properties"\r
-},\r
-template:{\r
-desc:"Insert predefined template content"\r
-},\r
-visualchars:{\r
-desc:"Visual control characters on/off."\r
-},\r
-spellchecker:{\r
-desc:"Toggle spellchecker",\r
-menu:"Spellchecker settings",\r
-ignore_word:"Ignore word",\r
-ignore_words:"Ignore all",\r
-langs:"Languages",\r
-wait:"Please wait...",\r
-sug:"Suggestions",\r
-no_sug:"No suggestions",\r
-no_mpell:"No misspellings found."\r
-},\r
-pagebreak:{\r
-desc:"Insert page break."\r
-}}});
\ No newline at end of file
+++ /dev/null
-input.radio {border:1px none #000; background:transparent; vertical-align:middle;}\r
-.panel_wrapper div.current {height:80px;}\r
-#width {width:50px; vertical-align:middle;}\r
-#width2 {width:50px; vertical-align:middle;}\r
-#size {width:100px;}\r
+++ /dev/null
-(function(){tinymce.create('tinymce.plugins.AdvancedHRPlugin',{init:function(ed,url){ed.addCommand('mceAdvancedHr',function(){ed.windowManager.open({file:url+'/rule.htm',width:250+parseInt(ed.getLang('advhr.delta_width',0)),height:160+parseInt(ed.getLang('advhr.delta_height',0)),inline:1},{plugin_url:url});});ed.addButton('advhr',{title:'advhr.advhr_desc',cmd:'mceAdvancedHr'});ed.onNodeChange.add(function(ed,cm,n){cm.setActive('advhr',n.nodeName=='HR');});ed.onClick.add(function(ed,e){e=e.target;if(e.nodeName==='HR')ed.selection.select(e);});},getInfo:function(){return{longname:'Advanced HR',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advhr',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('advhr',tinymce.plugins.AdvancedHRPlugin);})();
\ No newline at end of file
+++ /dev/null
-/**\r
- * $Id: editor_plugin_src.js 520 2008-01-07 16:30:32Z spocke $\r
- *\r
- * @author Moxiecode\r
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-(function() {\r
- tinymce.create('tinymce.plugins.AdvancedHRPlugin', {\r
- init : function(ed, url) {\r
- // Register commands\r
- ed.addCommand('mceAdvancedHr', function() {\r
- ed.windowManager.open({\r
- file : url + '/rule.htm',\r
- width : 250 + parseInt(ed.getLang('advhr.delta_width', 0)),\r
- height : 160 + parseInt(ed.getLang('advhr.delta_height', 0)),\r
- inline : 1\r
- }, {\r
- plugin_url : url\r
- });\r
- });\r
-\r
- // Register buttons\r
- ed.addButton('advhr', {\r
- title : 'advhr.advhr_desc',\r
- cmd : 'mceAdvancedHr'\r
- });\r
-\r
- ed.onNodeChange.add(function(ed, cm, n) {\r
- cm.setActive('advhr', n.nodeName == 'HR');\r
- });\r
-\r
- ed.onClick.add(function(ed, e) {\r
- e = e.target;\r
-\r
- if (e.nodeName === 'HR')\r
- ed.selection.select(e);\r
- });\r
- },\r
-\r
- getInfo : function() {\r
- return {\r
- longname : 'Advanced HR',\r
- author : 'Moxiecode Systems AB',\r
- authorurl : 'http://tinymce.moxiecode.com',\r
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advhr',\r
- version : tinymce.majorVersion + "." + tinymce.minorVersion\r
- };\r
- }\r
- });\r
-\r
- // Register plugin\r
- tinymce.PluginManager.add('advhr', tinymce.plugins.AdvancedHRPlugin);\r
-})();
\ No newline at end of file
+++ /dev/null
-var AdvHRDialog = {\r
- init : function(ed) {\r
- var dom = ed.dom, f = document.forms[0], n = ed.selection.getNode(), w;\r
-\r
- w = dom.getAttrib(n, 'width');\r
- f.width.value = w ? parseInt(w) : (dom.getStyle('width') || '');\r
- f.size.value = dom.getAttrib(n, 'size') || parseInt(dom.getStyle('height')) || '';\r
- f.noshade.checked = !!dom.getAttrib(n, 'noshade') || !!dom.getStyle('border-width');\r
- selectByValue(f, 'width2', w.indexOf('%') != -1 ? '%' : 'px');\r
- },\r
-\r
- update : function() {\r
- var ed = tinyMCEPopup.editor, h, f = document.forms[0], st = '';\r
-\r
- h = '<hr';\r
-\r
- if (f.size.value) {\r
- h += ' size="' + f.size.value + '"';\r
- st += ' height:' + f.size.value + 'px;';\r
- }\r
-\r
- if (f.width.value) {\r
- h += ' width="' + f.width.value + (f.width2.value == '%' ? '%' : '') + '"';\r
- st += ' width:' + f.width.value + (f.width2.value == '%' ? '%' : 'px') + ';';\r
- }\r
-\r
- if (f.noshade.checked) {\r
- h += ' noshade="noshade"';\r
- st += ' border-width: 1px; border-style: solid; border-color: #CCCCCC; color: #ffffff;';\r
- }\r
-\r
- if (ed.settings.inline_styles)\r
- h += ' style="' + tinymce.trim(st) + '"';\r
-\r
- h += ' />';\r
-\r
- ed.execCommand("mceInsertContent", false, h);\r
- tinyMCEPopup.close();\r
- }\r
-};\r
-\r
-tinyMCEPopup.requireLangPack();\r
-tinyMCEPopup.onInit.add(AdvHRDialog.init, AdvHRDialog);\r
+++ /dev/null
-tinyMCE.addI18n('en.advhr_dlg',{\r
-width:"Width",\r
-size:"Height",\r
-noshade:"No shadow"\r
-});
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
- <title>{#advhr.advhr_desc}</title>\r
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
- <script type="text/javascript" src="js/rule.js"></script>\r
- <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
- <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
- <link href="css/advhr.css" rel="stylesheet" type="text/css" />\r
- <base target="_self" />\r
-</head>\r
-<body>\r
-<form onsubmit="AdvHRDialog.update();return false;" action="#">\r
- <div class="tabs">\r
- <ul>\r
- <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advhr.advhr_desc}</a></span></li>\r
- </ul>\r
- </div>\r
-\r
- <div class="panel_wrapper">\r
- <div id="general_panel" class="panel current">\r
- <table border="0" cellpadding="4" cellspacing="0">\r
- <tr>\r
- <td><label for="width">{#advhr_dlg.width}</label></td>\r
- <td nowrap="nowrap">\r
- <input id="width" name="width" type="text" value="" class="mceFocus" />\r
- <select name="width2" id="width2">\r
- <option value="">px</option>\r
- <option value="%">%</option>\r
- </select>\r
- </td>\r
- </tr>\r
- <tr>\r
- <td><label for="size">{#advhr_dlg.size}</label></td>\r
- <td><select id="size" name="size">\r
- <option value="">Normal</option>\r
- <option value="1">1</option>\r
- <option value="2">2</option>\r
- <option value="3">3</option>\r
- <option value="4">4</option>\r
- <option value="5">5</option>\r
- </select></td>\r
- </tr>\r
- <tr>\r
- <td><label for="noshade">{#advhr_dlg.noshade}</label></td>\r
- <td><input type="checkbox" name="noshade" id="noshade" class="radio" /></td>\r
- </tr>\r
- </table>\r
- </div>\r
- </div>\r
-\r
- <div class="mceActionPanel">\r
- <div style="float: left">\r
- <input type="submit" id="insert" name="insert" value="{#insert}" />\r
- </div>\r
-\r
- <div style="float: right">\r
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
- </div>\r
- </div>\r
-</form>\r
-</body>\r
-</html>\r
+++ /dev/null
-#src_list, #over_list, #out_list {width:280px;}\r
-.mceActionPanel {margin-top:7px;}\r
-.alignPreview {border:1px solid #000; width:140px; height:140px; overflow:hidden; padding:5px;}\r
-.checkbox {border:0;}\r
-.panel_wrapper div.current {height:305px;}\r
-#prev {margin:0; border:1px solid #000; width:428px; height:150px; overflow:auto;}\r
-#align, #classlist {width:150px;}\r
-#width, #height {vertical-align:middle; width:50px; text-align:center;}\r
-#vspace, #hspace, #border {vertical-align:middle; width:30px; text-align:center;}\r
-#class_list {width:180px;}\r
-input {width: 280px;}\r
-#constrain, #onmousemovecheck {width:auto;}\r
-#id, #dir, #lang, #usemap, #longdesc {width:200px;}\r
+++ /dev/null
-(function(){tinymce.create('tinymce.plugins.AdvancedImagePlugin',{init:function(ed,url){ed.addCommand('mceAdvImage',function(){if(ed.dom.getAttrib(ed.selection.getNode(),'class').indexOf('mceItem')!=-1)return;ed.windowManager.open({file:url+'/image.htm',width:480+parseInt(ed.getLang('advimage.delta_width',0)),height:385+parseInt(ed.getLang('advimage.delta_height',0)),inline:1},{plugin_url:url});});ed.addButton('image',{title:'advimage.image_desc',cmd:'mceAdvImage'});},getInfo:function(){return{longname:'Advanced image',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advimage',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('advimage',tinymce.plugins.AdvancedImagePlugin);})();
\ No newline at end of file
+++ /dev/null
-/**\r
- * $Id: editor_plugin_src.js 677 2008-03-07 13:52:41Z spocke $\r
- *\r
- * @author Moxiecode\r
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-(function() {\r
- tinymce.create('tinymce.plugins.AdvancedImagePlugin', {\r
- init : function(ed, url) {\r
- // Register commands\r
- ed.addCommand('mceAdvImage', function() {\r
- // Internal image object like a flash placeholder\r
- if (ed.dom.getAttrib(ed.selection.getNode(), 'class').indexOf('mceItem') != -1)\r
- return;\r
-\r
- ed.windowManager.open({\r
- file : url + '/image.htm',\r
- width : 480 + parseInt(ed.getLang('advimage.delta_width', 0)),\r
- height : 385 + parseInt(ed.getLang('advimage.delta_height', 0)),\r
- inline : 1\r
- }, {\r
- plugin_url : url\r
- });\r
- });\r
-\r
- // Register buttons\r
- ed.addButton('image', {\r
- title : 'advimage.image_desc',\r
- cmd : 'mceAdvImage'\r
- });\r
- },\r
-\r
- getInfo : function() {\r
- return {\r
- longname : 'Advanced image',\r
- author : 'Moxiecode Systems AB',\r
- authorurl : 'http://tinymce.moxiecode.com',\r
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advimage',\r
- version : tinymce.majorVersion + "." + tinymce.minorVersion\r
- };\r
- }\r
- });\r
-\r
- // Register plugin\r
- tinymce.PluginManager.add('advimage', tinymce.plugins.AdvancedImagePlugin);\r
-})();
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
- <title>{#advimage_dlg.dialog_title}</title>\r
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
- <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
- <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
- <script type="text/javascript" src="../../utils/validate.js"></script>\r
- <script type="text/javascript" src="../../utils/editable_selects.js"></script>\r
- <script type="text/javascript" src="js/image.js"></script>\r
- <link href="css/advimage.css" rel="stylesheet" type="text/css" />\r
- <base target="_self" />\r
-</head>\r
-<body id="advimage" style="display: none">\r
- <form onsubmit="ImageDialog.insert();return false;" action="#"> \r
- <div class="tabs">\r
- <ul>\r
- <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advimage_dlg.tab_general}</a></span></li>\r
- <li id="appearance_tab"><span><a href="javascript:mcTabs.displayTab('appearance_tab','appearance_panel');" onmousedown="return false;">{#advimage_dlg.tab_appearance}</a></span></li>\r
- <li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#advimage_dlg.tab_advanced}</a></span></li>\r
- </ul>\r
- </div>\r
-\r
- <div class="panel_wrapper">\r
- <div id="general_panel" class="panel current">\r
- <fieldset>\r
- <legend>{#advimage_dlg.general}</legend>\r
-\r
- <table class="properties">\r
- <tr>\r
- <td class="column1"><label id="srclabel" for="src">{#advimage_dlg.src}</label></td>\r
- <td colspan="2"><table border="0" cellspacing="0" cellpadding="0">\r
- <tr> \r
- <td><input name="src" type="text" id="src" value="" class="mceFocus" onchange="ImageDialog.showPreviewImage(this.value);" /></td> \r
- <td id="srcbrowsercontainer"> </td>\r
- </tr>\r
- </table></td>\r
- </tr>\r
- <tr>\r
- <td><label for="src_list">{#advimage_dlg.image_list}</label></td>\r
- <td><select id="src_list" name="src_list" onchange="document.getElementById('src').value=this.options[this.selectedIndex].value;document.getElementById('alt').value=this.options[this.selectedIndex].text;document.getElementById('title').value=this.options[this.selectedIndex].text;ImageDialog.showPreviewImage(this.options[this.selectedIndex].value);"></select></td>\r
- </tr>\r
- <tr> \r
- <td class="column1"><label id="altlabel" for="alt">{#advimage_dlg.alt}</label></td> \r
- <td colspan="2"><input id="alt" name="alt" type="text" value="" /></td> \r
- </tr> \r
- <tr> \r
- <td class="column1"><label id="titlelabel" for="title">{#advimage_dlg.title}</label></td> \r
- <td colspan="2"><input id="title" name="title" type="text" value="" /></td> \r
- </tr>\r
- </table>\r
- </fieldset>\r
-\r
- <fieldset>\r
- <legend>{#advimage_dlg.preview}</legend>\r
- <div id="prev"></div>\r
- </fieldset>\r
- </div>\r
-\r
- <div id="appearance_panel" class="panel">\r
- <fieldset>\r
- <legend>{#advimage_dlg.tab_appearance}</legend>\r
-\r
- <table border="0" cellpadding="4" cellspacing="0">\r
- <tr> \r
- <td class="column1"><label id="alignlabel" for="align">{#advimage_dlg.align}</label></td> \r
- <td><select id="align" name="align" onchange="ImageDialog.updateStyle('align');ImageDialog.changeAppearance();"> \r
- <option value="">{#not_set}</option> \r
- <option value="baseline">{#advimage_dlg.align_baseline}</option>\r
- <option value="top">{#advimage_dlg.align_top}</option>\r
- <option value="middle">{#advimage_dlg.align_middle}</option>\r
- <option value="bottom">{#advimage_dlg.align_bottom}</option>\r
- <option value="text-top">{#advimage_dlg.align_texttop}</option>\r
- <option value="text-bottom">{#advimage_dlg.align_textbottom}</option>\r
- <option value="left">{#advimage_dlg.align_left}</option>\r
- <option value="right">{#advimage_dlg.align_right}</option>\r
- </select> \r
- </td>\r
- <td rowspan="6" valign="top">\r
- <div class="alignPreview">\r
- <img id="alignSampleImg" src="img/sample.gif" alt="{#advimage_dlg.example_img}" />\r
- Lorem ipsum, Dolor sit amet, consectetuer adipiscing loreum ipsum edipiscing elit, sed diam\r
- nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.Loreum ipsum\r
- edipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam\r
- erat volutpat.\r
- </div>\r
- </td>\r
- </tr>\r
-\r
- <tr>\r
- <td class="column1"><label id="widthlabel" for="width">{#advimage_dlg.dimensions}</label></td>\r
- <td nowrap="nowrap">\r
- <input name="width" type="text" id="width" value="" size="5" maxlength="5" class="size" onchange="ImageDialog.changeHeight();" /> x \r
- <input name="height" type="text" id="height" value="" size="5" maxlength="5" class="size" onchange="ImageDialog.changeWidth();" /> px\r
- </td>\r
- </tr>\r
-\r
- <tr>\r
- <td> </td>\r
- <td><table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input id="constrain" type="checkbox" name="constrain" class="checkbox" /></td>\r
- <td><label id="constrainlabel" for="constrain">{#advimage_dlg.constrain_proportions}</label></td>\r
- </tr>\r
- </table></td>\r
- </tr>\r
-\r
- <tr>\r
- <td class="column1"><label id="vspacelabel" for="vspace">{#advimage_dlg.vspace}</label></td> \r
- <td><input name="vspace" type="text" id="vspace" value="" size="3" maxlength="3" class="number" onchange="ImageDialog.updateStyle('vspace');ImageDialog.changeAppearance();" onblur="ImageDialog.updateStyle('vspace');ImageDialog.changeAppearance();" />\r
- </td>\r
- </tr>\r
-\r
- <tr> \r
- <td class="column1"><label id="hspacelabel" for="hspace">{#advimage_dlg.hspace}</label></td> \r
- <td><input name="hspace" type="text" id="hspace" value="" size="3" maxlength="3" class="number" onchange="ImageDialog.updateStyle('hspace');ImageDialog.changeAppearance();" onblur="ImageDialog.updateStyle('hspace');ImageDialog.changeAppearance();" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="column1"><label id="borderlabel" for="border">{#advimage_dlg.border}</label></td> \r
- <td><input id="border" name="border" type="text" value="" size="3" maxlength="3" class="number" onchange="ImageDialog.updateStyle('border');ImageDialog.changeAppearance();" onblur="ImageDialog.updateStyle('border');ImageDialog.changeAppearance();" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td><label for="class_list">{#class_name}</label></td>\r
- <td colspan="2"><select id="class_list" name="class_list" class="mceEditableSelect"></select></td>\r
- </tr>\r
-\r
- <tr>\r
- <td class="column1"><label id="stylelabel" for="style">{#advimage_dlg.style}</label></td> \r
- <td colspan="2"><input id="style" name="style" type="text" value="" onchange="ImageDialog.changeAppearance();" /></td> \r
- </tr>\r
-\r
- <!-- <tr>\r
- <td class="column1"><label id="classeslabel" for="classes">{#advimage_dlg.classes}</label></td> \r
- <td colspan="2"><input id="classes" name="classes" type="text" value="" onchange="selectByValue(this.form,'classlist',this.value,true);" /></td> \r
- </tr> -->\r
- </table>\r
- </fieldset>\r
- </div>\r
-\r
- <div id="advanced_panel" class="panel">\r
- <fieldset>\r
- <legend>{#advimage_dlg.swap_image}</legend>\r
-\r
- <input type="checkbox" id="onmousemovecheck" name="onmousemovecheck" class="checkbox" onclick="ImageDialog.setSwapImage(this.checked);" />\r
- <label id="onmousemovechecklabel" for="onmousemovecheck">{#advimage_dlg.alt_image}</label>\r
-\r
- <table border="0" cellpadding="4" cellspacing="0" width="100%">\r
- <tr>\r
- <td class="column1"><label id="onmouseoversrclabel" for="onmouseoversrc">{#advimage_dlg.mouseover}</label></td> \r
- <td><table border="0" cellspacing="0" cellpadding="0"> \r
- <tr> \r
- <td><input id="onmouseoversrc" name="onmouseoversrc" type="text" value="" /></td> \r
- <td id="onmouseoversrccontainer"> </td>\r
- </tr>\r
- </table></td>\r
- </tr>\r
- <tr>\r
- <td><label for="over_list">{#advimage_dlg.image_list}</label></td>\r
- <td><select id="over_list" name="over_list" onchange="document.getElementById('onmouseoversrc').value=this.options[this.selectedIndex].value;"></select></td>\r
- </tr>\r
- <tr> \r
- <td class="column1"><label id="onmouseoutsrclabel" for="onmouseoutsrc">{#advimage_dlg.mouseout}</label></td> \r
- <td class="column2"><table border="0" cellspacing="0" cellpadding="0"> \r
- <tr> \r
- <td><input id="onmouseoutsrc" name="onmouseoutsrc" type="text" value="" /></td> \r
- <td id="onmouseoutsrccontainer"> </td>\r
- </tr> \r
- </table></td> \r
- </tr>\r
- <tr>\r
- <td><label for="out_list">{#advimage_dlg.image_list}</label></td>\r
- <td><select id="out_list" name="out_list" onchange="document.getElementById('onmouseoutsrc').value=this.options[this.selectedIndex].value;"></select></td>\r
- </tr>\r
- </table>\r
- </fieldset>\r
-\r
- <fieldset>\r
- <legend>{#advimage_dlg.misc}</legend>\r
-\r
- <table border="0" cellpadding="4" cellspacing="0">\r
- <tr>\r
- <td class="column1"><label id="idlabel" for="id">{#advimage_dlg.id}</label></td> \r
- <td><input id="id" name="id" type="text" value="" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="column1"><label id="dirlabel" for="dir">{#advimage_dlg.langdir}</label></td> \r
- <td>\r
- <select id="dir" name="dir" onchange="ImageDialog.changeAppearance();"> \r
- <option value="">{#not_set}</option> \r
- <option value="ltr">{#advimage_dlg.ltr}</option> \r
- <option value="rtl">{#advimage_dlg.rtl}</option> \r
- </select>\r
- </td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="column1"><label id="langlabel" for="lang">{#advimage_dlg.langcode}</label></td> \r
- <td>\r
- <input id="lang" name="lang" type="text" value="" />\r
- </td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="column1"><label id="usemaplabel" for="usemap">{#advimage_dlg.map}</label></td> \r
- <td>\r
- <input id="usemap" name="usemap" type="text" value="" />\r
- </td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="column1"><label id="longdesclabel" for="longdesc">{#advimage_dlg.long_desc}</label></td>\r
- <td><table border="0" cellspacing="0" cellpadding="0">\r
- <tr>\r
- <td><input id="longdesc" name="longdesc" type="text" value="" /></td>\r
- <td id="longdesccontainer"> </td>\r
- </tr>\r
- </table></td> \r
- </tr>\r
- </table>\r
- </fieldset>\r
- </div>\r
- </div>\r
-\r
- <div class="mceActionPanel">\r
- <div style="float: left">\r
- <input type="submit" id="insert" name="insert" value="{#insert}" />\r
- </div>\r
-\r
- <div style="float: right">\r
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
- </div>\r
- </div>\r
- </form>\r
-</body> \r
-</html> \r
+++ /dev/null
-var ImageDialog = {\r
- preInit : function() {\r
- var url;\r
-\r
- tinyMCEPopup.requireLangPack();\r
-\r
- if (url = tinyMCEPopup.getParam("external_image_list_url"))\r
- document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>');\r
- },\r
-\r
- init : function(ed) {\r
- var f = document.forms[0], nl = f.elements, ed = tinyMCEPopup.editor, dom = ed.dom, n = ed.selection.getNode();\r
-\r
- tinyMCEPopup.resizeToInnerSize();\r
- this.fillClassList('class_list');\r
- this.fillFileList('src_list', 'tinyMCEImageList');\r
- this.fillFileList('over_list', 'tinyMCEImageList');\r
- this.fillFileList('out_list', 'tinyMCEImageList');\r
- TinyMCE_EditableSelects.init();\r
-\r
- if (n.nodeName == 'IMG') {\r
- nl.src.value = dom.getAttrib(n, 'src');\r
- nl.width.value = dom.getAttrib(n, 'width');\r
- nl.height.value = dom.getAttrib(n, 'height');\r
- nl.alt.value = dom.getAttrib(n, 'alt');\r
- nl.title.value = dom.getAttrib(n, 'title');\r
- nl.vspace.value = this.getAttrib(n, 'vspace');\r
- nl.hspace.value = this.getAttrib(n, 'hspace');\r
- nl.border.value = this.getAttrib(n, 'border');\r
- selectByValue(f, 'align', this.getAttrib(n, 'align'));\r
- selectByValue(f, 'class_list', dom.getAttrib(n, 'class'), true, true);\r
- nl.style.value = dom.getAttrib(n, 'style');\r
- nl.id.value = dom.getAttrib(n, 'id');\r
- nl.dir.value = dom.getAttrib(n, 'dir');\r
- nl.lang.value = dom.getAttrib(n, 'lang');\r
- nl.usemap.value = dom.getAttrib(n, 'usemap');\r
- nl.longdesc.value = dom.getAttrib(n, 'longdesc');\r
- nl.insert.value = ed.getLang('update');\r
-\r
- if (/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/.test(dom.getAttrib(n, 'onmouseover')))\r
- nl.onmouseoversrc.value = dom.getAttrib(n, 'onmouseover').replace(/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/, '$1');\r
-\r
- if (/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/.test(dom.getAttrib(n, 'onmouseout')))\r
- nl.onmouseoutsrc.value = dom.getAttrib(n, 'onmouseout').replace(/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/, '$1');\r
-\r
- if (ed.settings.inline_styles) {\r
- // Move attribs to styles\r
- if (dom.getAttrib(n, 'align'))\r
- this.updateStyle('align');\r
-\r
- if (dom.getAttrib(n, 'hspace'))\r
- this.updateStyle('hspace');\r
-\r
- if (dom.getAttrib(n, 'border'))\r
- this.updateStyle('border');\r
-\r
- if (dom.getAttrib(n, 'vspace'))\r
- this.updateStyle('vspace');\r
- }\r
- }\r
-\r
- // Setup browse button\r
- document.getElementById('srcbrowsercontainer').innerHTML = getBrowserHTML('srcbrowser','src','image','theme_advanced_image');\r
- if (isVisible('srcbrowser'))\r
- document.getElementById('src').style.width = '260px';\r
-\r
- // Setup browse button\r
- document.getElementById('onmouseoversrccontainer').innerHTML = getBrowserHTML('overbrowser','onmouseoversrc','image','theme_advanced_image');\r
- if (isVisible('overbrowser'))\r
- document.getElementById('onmouseoversrc').style.width = '260px';\r
-\r
- // Setup browse button\r
- document.getElementById('onmouseoutsrccontainer').innerHTML = getBrowserHTML('outbrowser','onmouseoutsrc','image','theme_advanced_image');\r
- if (isVisible('outbrowser'))\r
- document.getElementById('onmouseoutsrc').style.width = '260px';\r
-\r
- // If option enabled default contrain proportions to checked\r
- if (ed.getParam("advimage_constrain_proportions", true))\r
- f.constrain.checked = true;\r
-\r
- // Check swap image if valid data\r
- if (nl.onmouseoversrc.value || nl.onmouseoutsrc.value)\r
- this.setSwapImage(true);\r
- else\r
- this.setSwapImage(false);\r
-\r
- this.changeAppearance();\r
- this.showPreviewImage(nl.src.value, 1);\r
- },\r
-\r
- insert : function(file, title) {\r
- var ed = tinyMCEPopup.editor, t = this, f = document.forms[0];\r
-\r
- if (f.src.value === '') {\r
- if (ed.selection.getNode().nodeName == 'IMG') {\r
- ed.dom.remove(ed.selection.getNode());\r
- ed.execCommand('mceRepaint');\r
- }\r
-\r
- tinyMCEPopup.close();\r
- return;\r
- }\r
-\r
- if (tinyMCEPopup.getParam("accessibility_warnings", 1)) {\r
- if (!f.alt.value) {\r
- tinyMCEPopup.confirm(tinyMCEPopup.getLang('advimage_dlg.missing_alt'), function(s) {\r
- if (s)\r
- t.insertAndClose();\r
- });\r
-\r
- return;\r
- }\r
- }\r
-\r
- t.insertAndClose();\r
- },\r
-\r
- insertAndClose : function() {\r
- var ed = tinyMCEPopup.editor, f = document.forms[0], nl = f.elements, v, args = {}, el;\r
-\r
- tinyMCEPopup.restoreSelection();\r
-\r
- // Fixes crash in Safari\r
- if (tinymce.isWebKit)\r
- ed.getWin().focus();\r
-\r
- if (!ed.settings.inline_styles) {\r
- args = {\r
- vspace : nl.vspace.value,\r
- hspace : nl.hspace.value,\r
- border : nl.border.value,\r
- align : getSelectValue(f, 'align')\r
- };\r
- } else {\r
- // Remove deprecated values\r
- args = {\r
- vspace : '',\r
- hspace : '',\r
- border : '',\r
- align : ''\r
- };\r
- }\r
-\r
- tinymce.extend(args, {\r
- src : nl.src.value,\r
- width : nl.width.value,\r
- height : nl.height.value,\r
- alt : nl.alt.value,\r
- title : nl.title.value,\r
- 'class' : getSelectValue(f, 'class_list'),\r
- style : nl.style.value,\r
- id : nl.id.value,\r
- dir : nl.dir.value,\r
- lang : nl.lang.value,\r
- usemap : nl.usemap.value,\r
- longdesc : nl.longdesc.value\r
- });\r
-\r
- args.onmouseover = args.onmouseout = '';\r
-\r
- if (f.onmousemovecheck.checked) {\r
- if (nl.onmouseoversrc.value)\r
- args.onmouseover = "this.src='" + nl.onmouseoversrc.value + "';";\r
-\r
- if (nl.onmouseoutsrc.value)\r
- args.onmouseout = "this.src='" + nl.onmouseoutsrc.value + "';";\r
- }\r
-\r
- el = ed.selection.getNode();\r
-\r
- if (el && el.nodeName == 'IMG') {\r
- ed.dom.setAttribs(el, args);\r
- } else {\r
- ed.execCommand('mceInsertContent', false, '<img id="__mce_tmp" />', {skip_undo : 1});\r
- ed.dom.setAttribs('__mce_tmp', args);\r
- ed.dom.setAttrib('__mce_tmp', 'id', '');\r
- ed.undoManager.add();\r
- }\r
-\r
- tinyMCEPopup.close();\r
- },\r
-\r
- getAttrib : function(e, at) {\r
- var ed = tinyMCEPopup.editor, dom = ed.dom, v, v2;\r
-\r
- if (ed.settings.inline_styles) {\r
- switch (at) {\r
- case 'align':\r
- if (v = dom.getStyle(e, 'float'))\r
- return v;\r
-\r
- if (v = dom.getStyle(e, 'vertical-align'))\r
- return v;\r
-\r
- break;\r
-\r
- case 'hspace':\r
- v = dom.getStyle(e, 'margin-left')\r
- v2 = dom.getStyle(e, 'margin-right');\r
-\r
- if (v && v == v2)\r
- return parseInt(v.replace(/[^0-9]/g, ''));\r
-\r
- break;\r
-\r
- case 'vspace':\r
- v = dom.getStyle(e, 'margin-top')\r
- v2 = dom.getStyle(e, 'margin-bottom');\r
- if (v && v == v2)\r
- return parseInt(v.replace(/[^0-9]/g, ''));\r
-\r
- break;\r
-\r
- case 'border':\r
- v = 0;\r
-\r
- tinymce.each(['top', 'right', 'bottom', 'left'], function(sv) {\r
- sv = dom.getStyle(e, 'border-' + sv + '-width');\r
-\r
- // False or not the same as prev\r
- if (!sv || (sv != v && v !== 0)) {\r
- v = 0;\r
- return false;\r
- }\r
-\r
- if (sv)\r
- v = sv;\r
- });\r
-\r
- if (v)\r
- return parseInt(v.replace(/[^0-9]/g, ''));\r
-\r
- break;\r
- }\r
- }\r
-\r
- if (v = dom.getAttrib(e, at))\r
- return v;\r
-\r
- return '';\r
- },\r
-\r
- setSwapImage : function(st) {\r
- var f = document.forms[0];\r
-\r
- f.onmousemovecheck.checked = st;\r
- setBrowserDisabled('overbrowser', !st);\r
- setBrowserDisabled('outbrowser', !st);\r
-\r
- if (f.over_list)\r
- f.over_list.disabled = !st;\r
-\r
- if (f.out_list)\r
- f.out_list.disabled = !st;\r
-\r
- f.onmouseoversrc.disabled = !st;\r
- f.onmouseoutsrc.disabled = !st;\r
- },\r
-\r
- fillClassList : function(id) {\r
- var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;\r
-\r
- if (v = tinyMCEPopup.getParam('theme_advanced_styles')) {\r
- cl = [];\r
-\r
- tinymce.each(v.split(';'), function(v) {\r
- var p = v.split('=');\r
-\r
- cl.push({'title' : p[0], 'class' : p[1]});\r
- });\r
- } else\r
- cl = tinyMCEPopup.editor.dom.getClasses();\r
-\r
- if (cl.length > 0) {\r
- lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), '');\r
-\r
- tinymce.each(cl, function(o) {\r
- lst.options[lst.options.length] = new Option(o.title || o['class'], o['class']);\r
- });\r
- } else\r
- dom.remove(dom.getParent(id, 'tr'));\r
- },\r
-\r
- fillFileList : function(id, l) {\r
- var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;\r
-\r
- l = window[l];\r
-\r
- if (l && l.length > 0) {\r
- lst.options[lst.options.length] = new Option('', '');\r
-\r
- tinymce.each(l, function(o) {\r
- lst.options[lst.options.length] = new Option(o[0], o[1]);\r
- });\r
- } else\r
- dom.remove(dom.getParent(id, 'tr'));\r
- },\r
-\r
- resetImageData : function() {\r
- var f = document.forms[0];\r
-\r
- f.elements.width.value = f.elements.height.value = '';\r
- },\r
-\r
- updateImageData : function(img, st) {\r
- var f = document.forms[0];\r
-\r
- if (!st) {\r
- f.elements.width.value = img.width;\r
- f.elements.height.value = img.height;\r
- }\r
-\r
- this.preloadImg = img;\r
- },\r
-\r
- changeAppearance : function() {\r
- var ed = tinyMCEPopup.editor, f = document.forms[0], img = document.getElementById('alignSampleImg');\r
-\r
- if (img) {\r
- if (ed.getParam('inline_styles')) {\r
- ed.dom.setAttrib(img, 'style', f.style.value);\r
- } else {\r
- img.align = f.align.value;\r
- img.border = f.border.value;\r
- img.hspace = f.hspace.value;\r
- img.vspace = f.vspace.value;\r
- }\r
- }\r
- },\r
-\r
- changeHeight : function() {\r
- var f = document.forms[0], tp, t = this;\r
-\r
- if (!f.constrain.checked || !t.preloadImg) {\r
- return;\r
- }\r
-\r
- if (f.width.value == "" || f.height.value == "")\r
- return;\r
-\r
- tp = (parseInt(f.width.value) / parseInt(t.preloadImg.width)) * t.preloadImg.height;\r
- f.height.value = tp.toFixed(0);\r
- },\r
-\r
- changeWidth : function() {\r
- var f = document.forms[0], tp, t = this;\r
-\r
- if (!f.constrain.checked || !t.preloadImg) {\r
- return;\r
- }\r
-\r
- if (f.width.value == "" || f.height.value == "")\r
- return;\r
-\r
- tp = (parseInt(f.height.value) / parseInt(t.preloadImg.height)) * t.preloadImg.width;\r
- f.width.value = tp.toFixed(0);\r
- },\r
-\r
- updateStyle : function(ty) {\r
- var dom = tinyMCEPopup.dom, st, v, f = document.forms[0], img = dom.create('img', {style : dom.get('style').value});\r
-\r
- if (tinyMCEPopup.editor.settings.inline_styles) {\r
- // Handle align\r
- if (ty == 'align') {\r
- dom.setStyle(img, 'float', '');\r
- dom.setStyle(img, 'vertical-align', '');\r
-\r
- v = getSelectValue(f, 'align');\r
- if (v) {\r
- if (v == 'left' || v == 'right')\r
- dom.setStyle(img, 'float', v);\r
- else\r
- img.style.verticalAlign = v;\r
- }\r
- }\r
-\r
- // Handle border\r
- if (ty == 'border') {\r
- dom.setStyle(img, 'border', '');\r
-\r
- v = f.border.value;\r
- if (v || v == '0') {\r
- if (v == '0')\r
- img.style.border = '0';\r
- else\r
- img.style.border = v + 'px solid black';\r
- }\r
- }\r
-\r
- // Handle hspace\r
- if (ty == 'hspace') {\r
- dom.setStyle(img, 'marginLeft', '');\r
- dom.setStyle(img, 'marginRight', '');\r
-\r
- v = f.hspace.value;\r
- if (v) {\r
- img.style.marginLeft = v + 'px';\r
- img.style.marginRight = v + 'px';\r
- }\r
- }\r
-\r
- // Handle vspace\r
- if (ty == 'vspace') {\r
- dom.setStyle(img, 'marginTop', '');\r
- dom.setStyle(img, 'marginBottom', '');\r
-\r
- v = f.vspace.value;\r
- if (v) {\r
- img.style.marginTop = v + 'px';\r
- img.style.marginBottom = v + 'px';\r
- }\r
- }\r
-\r
- // Merge\r
- dom.get('style').value = dom.serializeStyle(dom.parseStyle(img.style.cssText));\r
- }\r
- },\r
-\r
- changeMouseMove : function() {\r
- },\r
-\r
- showPreviewImage : function(u, st) {\r
- if (!u) {\r
- tinyMCEPopup.dom.setHTML('prev', '');\r
- return;\r
- }\r
-\r
- if (!st && tinyMCEPopup.getParam("advimage_update_dimensions_onchange", true))\r
- this.resetImageData();\r
-\r
- u = tinyMCEPopup.editor.documentBaseURI.toAbsolute(u);\r
-\r
- if (!st)\r
- tinyMCEPopup.dom.setHTML('prev', '<img id="previewImg" src="' + u + '" border="0" onload="ImageDialog.updateImageData(this);" onerror="ImageDialog.resetImageData();" />');\r
- else\r
- tinyMCEPopup.dom.setHTML('prev', '<img id="previewImg" src="' + u + '" border="0" onload="ImageDialog.updateImageData(this, 1);" />');\r
- }\r
-};\r
-\r
-ImageDialog.preInit();\r
-tinyMCEPopup.onInit.add(ImageDialog.init, ImageDialog);\r
+++ /dev/null
-tinyMCE.addI18n('en.advimage_dlg',{\r
-tab_general:"General",\r
-tab_appearance:"Appearance",\r
-tab_advanced:"Advanced",\r
-general:"General",\r
-title:"Title",\r
-preview:"Preview",\r
-constrain_proportions:"Constrain proportions",\r
-langdir:"Language direction",\r
-langcode:"Language code",\r
-long_desc:"Long description link",\r
-style:"Style",\r
-classes:"Classes",\r
-ltr:"Left to right",\r
-rtl:"Right to left",\r
-id:"Id",\r
-map:"Image map",\r
-swap_image:"Swap image",\r
-alt_image:"Alternative image",\r
-mouseover:"for mouse over",\r
-mouseout:"for mouse out",\r
-misc:"Miscellaneous",\r
-example_img:"Appearance preview image",\r
-missing_alt:"Are you sure you want to continue without including an Image Description? Without it the image may not be accessible to some users with disabilities, or to those using a text browser, or browsing the Web with images turned off.",\r
-dialog_title:"Insert/edit image",\r
-src:"Image URL",\r
-alt:"Image description",\r
-list:"Image list",\r
-border:"Border",\r
-dimensions:"Dimensions",\r
-vspace:"Vertical space",\r
-hspace:"Horizontal space",\r
-align:"Alignment",\r
-align_baseline:"Baseline",\r
-align_top:"Top",\r
-align_middle:"Middle",\r
-align_bottom:"Bottom",\r
-align_texttop:"Text top",\r
-align_textbottom:"Text bottom",\r
-align_left:"Left",\r
-align_right:"Right",\r
-image_list:"Image list"\r
-});
\ No newline at end of file
+++ /dev/null
-.mceLinkList, .mceAnchorList, #targetlist {width:280px;}\r
-.mceActionPanel {margin-top:7px;}\r
-.panel_wrapper div.current {height:320px;}\r
-#classlist, #title, #href {width:280px;}\r
-#popupurl, #popupname {width:200px;}\r
-#popupwidth, #popupheight, #popupleft, #popuptop {width:30px;vertical-align:middle;text-align:center;}\r
-#id, #style, #classes, #target, #dir, #hreflang, #lang, #charset, #type, #rel, #rev, #tabindex, #accesskey {width:200px;}\r
-#events_panel input {width:200px;}\r
+++ /dev/null
-(function(){tinymce.create('tinymce.plugins.AdvancedLinkPlugin',{init:function(ed,url){this.editor=ed;ed.addCommand('mceAdvLink',function(){var se=ed.selection;if(se.isCollapsed()&&!ed.dom.getParent(se.getNode(),'A'))return;ed.windowManager.open({file:url+'/link.htm',width:480+parseInt(ed.getLang('advlink.delta_width',0)),height:400+parseInt(ed.getLang('advlink.delta_height',0)),inline:1},{plugin_url:url});});ed.addButton('link',{title:'advlink.link_desc',cmd:'mceAdvLink'});ed.addShortcut('ctrl+k','advlink.advlink_desc','mceAdvLink');ed.onNodeChange.add(function(ed,cm,n,co){cm.setDisabled('link',co&&n.nodeName!='A');cm.setActive('link',n.nodeName=='A'&&!n.name);});},getInfo:function(){return{longname:'Advanced link',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlink',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('advlink',tinymce.plugins.AdvancedLinkPlugin);})();
\ No newline at end of file
+++ /dev/null
-/**\r
- * $Id: editor_plugin_src.js 539 2008-01-14 19:08:58Z spocke $\r
- *\r
- * @author Moxiecode\r
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-(function() {\r
- tinymce.create('tinymce.plugins.AdvancedLinkPlugin', {\r
- init : function(ed, url) {\r
- this.editor = ed;\r
-\r
- // Register commands\r
- ed.addCommand('mceAdvLink', function() {\r
- var se = ed.selection;\r
-\r
- // No selection and not in link\r
- if (se.isCollapsed() && !ed.dom.getParent(se.getNode(), 'A'))\r
- return;\r
-\r
- ed.windowManager.open({\r
- file : url + '/link.htm',\r
- width : 480 + parseInt(ed.getLang('advlink.delta_width', 0)),\r
- height : 400 + parseInt(ed.getLang('advlink.delta_height', 0)),\r
- inline : 1\r
- }, {\r
- plugin_url : url\r
- });\r
- });\r
-\r
- // Register buttons\r
- ed.addButton('link', {\r
- title : 'advlink.link_desc',\r
- cmd : 'mceAdvLink'\r
- });\r
-\r
- ed.addShortcut('ctrl+k', 'advlink.advlink_desc', 'mceAdvLink');\r
-\r
- ed.onNodeChange.add(function(ed, cm, n, co) {\r
- cm.setDisabled('link', co && n.nodeName != 'A');\r
- cm.setActive('link', n.nodeName == 'A' && !n.name);\r
- });\r
- },\r
-\r
- getInfo : function() {\r
- return {\r
- longname : 'Advanced link',\r
- author : 'Moxiecode Systems AB',\r
- authorurl : 'http://tinymce.moxiecode.com',\r
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlink',\r
- version : tinymce.majorVersion + "." + tinymce.minorVersion\r
- };\r
- }\r
- });\r
-\r
- // Register plugin\r
- tinymce.PluginManager.add('advlink', tinymce.plugins.AdvancedLinkPlugin);\r
-})();
\ No newline at end of file
+++ /dev/null
-/* Functions for the advlink plugin popup */\r
-\r
-tinyMCEPopup.requireLangPack();\r
-\r
-var templates = {\r
- "window.open" : "window.open('${url}','${target}','${options}')"\r
-};\r
-\r
-function preinit() {\r
- var url;\r
-\r
- if (url = tinyMCEPopup.getParam("external_link_list_url"))\r
- document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>');\r
-}\r
-\r
-function changeClass() {\r
- var f = document.forms[0];\r
-\r
- f.classes.value = getSelectValue(f, 'classlist');\r
-}\r
-\r
-function init() {\r
- tinyMCEPopup.resizeToInnerSize();\r
-\r
- var formObj = document.forms[0];\r
- var inst = tinyMCEPopup.editor;\r
- var elm = inst.selection.getNode();\r
- var action = "insert";\r
- var html;\r
-\r
- document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser','href','file','advlink');\r
- document.getElementById('popupurlbrowsercontainer').innerHTML = getBrowserHTML('popupurlbrowser','popupurl','file','advlink');\r
- document.getElementById('linklisthrefcontainer').innerHTML = getLinkListHTML('linklisthref','href');\r
- document.getElementById('anchorlistcontainer').innerHTML = getAnchorListHTML('anchorlist','href');\r
- document.getElementById('targetlistcontainer').innerHTML = getTargetListHTML('targetlist','target');\r
-\r
- // Link list\r
- html = getLinkListHTML('linklisthref','href');\r
- if (html == "")\r
- document.getElementById("linklisthrefrow").style.display = 'none';\r
- else\r
- document.getElementById("linklisthrefcontainer").innerHTML = html;\r
-\r
- // Resize some elements\r
- if (isVisible('hrefbrowser'))\r
- document.getElementById('href').style.width = '260px';\r
-\r
- if (isVisible('popupurlbrowser'))\r
- document.getElementById('popupurl').style.width = '180px';\r
-\r
- elm = inst.dom.getParent(elm, "A");\r
- if (elm != null && elm.nodeName == "A")\r
- action = "update";\r
-\r
- formObj.insert.value = tinyMCEPopup.getLang(action, 'Insert', true); \r
-\r
- setPopupControlsDisabled(true);\r
-\r
- if (action == "update") {\r
- var href = inst.dom.getAttrib(elm, 'href');\r
- var onclick = inst.dom.getAttrib(elm, 'onclick');\r
-\r
- // Setup form data\r
- setFormValue('href', href);\r
- setFormValue('title', inst.dom.getAttrib(elm, 'title'));\r
- setFormValue('id', inst.dom.getAttrib(elm, 'id'));\r
- setFormValue('style', inst.dom.getAttrib(elm, "style"));\r
- setFormValue('rel', inst.dom.getAttrib(elm, 'rel'));\r
- setFormValue('rev', inst.dom.getAttrib(elm, 'rev'));\r
- setFormValue('charset', inst.dom.getAttrib(elm, 'charset'));\r
- setFormValue('hreflang', inst.dom.getAttrib(elm, 'hreflang'));\r
- setFormValue('dir', inst.dom.getAttrib(elm, 'dir'));\r
- setFormValue('lang', inst.dom.getAttrib(elm, 'lang'));\r
- setFormValue('tabindex', inst.dom.getAttrib(elm, 'tabindex', typeof(elm.tabindex) != "undefined" ? elm.tabindex : ""));\r
- setFormValue('accesskey', inst.dom.getAttrib(elm, 'accesskey', typeof(elm.accesskey) != "undefined" ? elm.accesskey : ""));\r
- setFormValue('type', inst.dom.getAttrib(elm, 'type'));\r
- setFormValue('onfocus', inst.dom.getAttrib(elm, 'onfocus'));\r
- setFormValue('onblur', inst.dom.getAttrib(elm, 'onblur'));\r
- setFormValue('onclick', onclick);\r
- setFormValue('ondblclick', inst.dom.getAttrib(elm, 'ondblclick'));\r
- setFormValue('onmousedown', inst.dom.getAttrib(elm, 'onmousedown'));\r
- setFormValue('onmouseup', inst.dom.getAttrib(elm, 'onmouseup'));\r
- setFormValue('onmouseover', inst.dom.getAttrib(elm, 'onmouseover'));\r
- setFormValue('onmousemove', inst.dom.getAttrib(elm, 'onmousemove'));\r
- setFormValue('onmouseout', inst.dom.getAttrib(elm, 'onmouseout'));\r
- setFormValue('onkeypress', inst.dom.getAttrib(elm, 'onkeypress'));\r
- setFormValue('onkeydown', inst.dom.getAttrib(elm, 'onkeydown'));\r
- setFormValue('onkeyup', inst.dom.getAttrib(elm, 'onkeyup'));\r
- setFormValue('target', inst.dom.getAttrib(elm, 'target'));\r
- setFormValue('classes', inst.dom.getAttrib(elm, 'class'));\r
-\r
- // Parse onclick data\r
- if (onclick != null && onclick.indexOf('window.open') != -1)\r
- parseWindowOpen(onclick);\r
- else\r
- parseFunction(onclick);\r
-\r
- // Select by the values\r
- selectByValue(formObj, 'dir', inst.dom.getAttrib(elm, 'dir'));\r
- selectByValue(formObj, 'rel', inst.dom.getAttrib(elm, 'rel'));\r
- selectByValue(formObj, 'rev', inst.dom.getAttrib(elm, 'rev'));\r
- selectByValue(formObj, 'linklisthref', href);\r
-\r
- if (href.charAt(0) == '#')\r
- selectByValue(formObj, 'anchorlist', href);\r
-\r
- addClassesToList('classlist', 'advlink_styles');\r
-\r
- selectByValue(formObj, 'classlist', inst.dom.getAttrib(elm, 'class'), true);\r
- selectByValue(formObj, 'targetlist', inst.dom.getAttrib(elm, 'target'), true);\r
- } else\r
- addClassesToList('classlist', 'advlink_styles');\r
-}\r
-\r
-function checkPrefix(n) {\r
- if (n.value && Validator.isEmail(n) && !/^\s*mailto:/i.test(n.value) && confirm(tinyMCEPopup.getLang('advlink_dlg.is_email')))\r
- n.value = 'mailto:' + n.value;\r
-\r
- if (/^\s*www./i.test(n.value) && confirm(tinyMCEPopup.getLang('advlink_dlg.is_external')))\r
- n.value = 'http://' + n.value;\r
-}\r
-\r
-function setFormValue(name, value) {\r
- document.forms[0].elements[name].value = value;\r
-}\r
-\r
-function parseWindowOpen(onclick) {\r
- var formObj = document.forms[0];\r
-\r
- // Preprocess center code\r
- if (onclick.indexOf('return false;') != -1) {\r
- formObj.popupreturn.checked = true;\r
- onclick = onclick.replace('return false;', '');\r
- } else\r
- formObj.popupreturn.checked = false;\r
-\r
- var onClickData = parseLink(onclick);\r
-\r
- if (onClickData != null) {\r
- formObj.ispopup.checked = true;\r
- setPopupControlsDisabled(false);\r
-\r
- var onClickWindowOptions = parseOptions(onClickData['options']);\r
- var url = onClickData['url'];\r
-\r
- formObj.popupname.value = onClickData['target'];\r
- formObj.popupurl.value = url;\r
- formObj.popupwidth.value = getOption(onClickWindowOptions, 'width');\r
- formObj.popupheight.value = getOption(onClickWindowOptions, 'height');\r
-\r
- formObj.popupleft.value = getOption(onClickWindowOptions, 'left');\r
- formObj.popuptop.value = getOption(onClickWindowOptions, 'top');\r
-\r
- if (formObj.popupleft.value.indexOf('screen') != -1)\r
- formObj.popupleft.value = "c";\r
-\r
- if (formObj.popuptop.value.indexOf('screen') != -1)\r
- formObj.popuptop.value = "c";\r
-\r
- formObj.popuplocation.checked = getOption(onClickWindowOptions, 'location') == "yes";\r
- formObj.popupscrollbars.checked = getOption(onClickWindowOptions, 'scrollbars') == "yes";\r
- formObj.popupmenubar.checked = getOption(onClickWindowOptions, 'menubar') == "yes";\r
- formObj.popupresizable.checked = getOption(onClickWindowOptions, 'resizable') == "yes";\r
- formObj.popuptoolbar.checked = getOption(onClickWindowOptions, 'toolbar') == "yes";\r
- formObj.popupstatus.checked = getOption(onClickWindowOptions, 'status') == "yes";\r
- formObj.popupdependent.checked = getOption(onClickWindowOptions, 'dependent') == "yes";\r
-\r
- buildOnClick();\r
- }\r
-}\r
-\r
-function parseFunction(onclick) {\r
- var formObj = document.forms[0];\r
- var onClickData = parseLink(onclick);\r
-\r
- // TODO: Add stuff here\r
-}\r
-\r
-function getOption(opts, name) {\r
- return typeof(opts[name]) == "undefined" ? "" : opts[name];\r
-}\r
-\r
-function setPopupControlsDisabled(state) {\r
- var formObj = document.forms[0];\r
-\r
- formObj.popupname.disabled = state;\r
- formObj.popupurl.disabled = state;\r
- formObj.popupwidth.disabled = state;\r
- formObj.popupheight.disabled = state;\r
- formObj.popupleft.disabled = state;\r
- formObj.popuptop.disabled = state;\r
- formObj.popuplocation.disabled = state;\r
- formObj.popupscrollbars.disabled = state;\r
- formObj.popupmenubar.disabled = state;\r
- formObj.popupresizable.disabled = state;\r
- formObj.popuptoolbar.disabled = state;\r
- formObj.popupstatus.disabled = state;\r
- formObj.popupreturn.disabled = state;\r
- formObj.popupdependent.disabled = state;\r
-\r
- setBrowserDisabled('popupurlbrowser', state);\r
-}\r
-\r
-function parseLink(link) {\r
- link = link.replace(new RegExp(''', 'g'), "'");\r
-\r
- var fnName = link.replace(new RegExp("\\s*([A-Za-z0-9\.]*)\\s*\\(.*", "gi"), "$1");\r
-\r
- // Is function name a template function\r
- var template = templates[fnName];\r
- if (template) {\r
- // Build regexp\r
- var variableNames = template.match(new RegExp("'?\\$\\{[A-Za-z0-9\.]*\\}'?", "gi"));\r
- var regExp = "\\s*[A-Za-z0-9\.]*\\s*\\(";\r
- var replaceStr = "";\r
- for (var i=0; i<variableNames.length; i++) {\r
- // Is string value\r
- if (variableNames[i].indexOf("'${") != -1)\r
- regExp += "'(.*)'";\r
- else // Number value\r
- regExp += "([0-9]*)";\r
-\r
- replaceStr += "$" + (i+1);\r
-\r
- // Cleanup variable name\r
- variableNames[i] = variableNames[i].replace(new RegExp("[^A-Za-z0-9]", "gi"), "");\r
-\r
- if (i != variableNames.length-1) {\r
- regExp += "\\s*,\\s*";\r
- replaceStr += "<delim>";\r
- } else\r
- regExp += ".*";\r
- }\r
-\r
- regExp += "\\);?";\r
-\r
- // Build variable array\r
- var variables = [];\r
- variables["_function"] = fnName;\r
- var variableValues = link.replace(new RegExp(regExp, "gi"), replaceStr).split('<delim>');\r
- for (var i=0; i<variableNames.length; i++)\r
- variables[variableNames[i]] = variableValues[i];\r
-\r
- return variables;\r
- }\r
-\r
- return null;\r
-}\r
-\r
-function parseOptions(opts) {\r
- if (opts == null || opts == "")\r
- return [];\r
-\r
- // Cleanup the options\r
- opts = opts.toLowerCase();\r
- opts = opts.replace(/;/g, ",");\r
- opts = opts.replace(/[^0-9a-z=,]/g, "");\r
-\r
- var optionChunks = opts.split(',');\r
- var options = [];\r
-\r
- for (var i=0; i<optionChunks.length; i++) {\r
- var parts = optionChunks[i].split('=');\r
-\r
- if (parts.length == 2)\r
- options[parts[0]] = parts[1];\r
- }\r
-\r
- return options;\r
-}\r
-\r
-function buildOnClick() {\r
- var formObj = document.forms[0];\r
-\r
- if (!formObj.ispopup.checked) {\r
- formObj.onclick.value = "";\r
- return;\r
- }\r
-\r
- var onclick = "window.open('";\r
- var url = formObj.popupurl.value;\r
-\r
- onclick += url + "','";\r
- onclick += formObj.popupname.value + "','";\r
-\r
- if (formObj.popuplocation.checked)\r
- onclick += "location=yes,";\r
-\r
- if (formObj.popupscrollbars.checked)\r
- onclick += "scrollbars=yes,";\r
-\r
- if (formObj.popupmenubar.checked)\r
- onclick += "menubar=yes,";\r
-\r
- if (formObj.popupresizable.checked)\r
- onclick += "resizable=yes,";\r
-\r
- if (formObj.popuptoolbar.checked)\r
- onclick += "toolbar=yes,";\r
-\r
- if (formObj.popupstatus.checked)\r
- onclick += "status=yes,";\r
-\r
- if (formObj.popupdependent.checked)\r
- onclick += "dependent=yes,";\r
-\r
- if (formObj.popupwidth.value != "")\r
- onclick += "width=" + formObj.popupwidth.value + ",";\r
-\r
- if (formObj.popupheight.value != "")\r
- onclick += "height=" + formObj.popupheight.value + ",";\r
-\r
- if (formObj.popupleft.value != "") {\r
- if (formObj.popupleft.value != "c")\r
- onclick += "left=" + formObj.popupleft.value + ",";\r
- else\r
- onclick += "left='+(screen.availWidth/2-" + (formObj.popupwidth.value/2) + ")+',";\r
- }\r
-\r
- if (formObj.popuptop.value != "") {\r
- if (formObj.popuptop.value != "c")\r
- onclick += "top=" + formObj.popuptop.value + ",";\r
- else\r
- onclick += "top='+(screen.availHeight/2-" + (formObj.popupheight.value/2) + ")+',";\r
- }\r
-\r
- if (onclick.charAt(onclick.length-1) == ',')\r
- onclick = onclick.substring(0, onclick.length-1);\r
-\r
- onclick += "');";\r
-\r
- if (formObj.popupreturn.checked)\r
- onclick += "return false;";\r
-\r
- // tinyMCE.debug(onclick);\r
-\r
- formObj.onclick.value = onclick;\r
-\r
- if (formObj.href.value == "")\r
- formObj.href.value = url;\r
-}\r
-\r
-function setAttrib(elm, attrib, value) {\r
- var formObj = document.forms[0];\r
- var valueElm = formObj.elements[attrib.toLowerCase()];\r
- var dom = tinyMCEPopup.editor.dom;\r
-\r
- if (typeof(value) == "undefined" || value == null) {\r
- value = "";\r
-\r
- if (valueElm)\r
- value = valueElm.value;\r
- }\r
-\r
- // Clean up the style\r
- if (attrib == 'style')\r
- value = dom.serializeStyle(dom.parseStyle(value));\r
-\r
- dom.setAttrib(elm, attrib, value);\r
-}\r
-\r
-function getAnchorListHTML(id, target) {\r
- var inst = tinyMCEPopup.editor;\r
- var nodes = inst.dom.select('a.mceItemAnchor,img.mceItemAnchor'), name, i;\r
- var html = "";\r
-\r
- html += '<select id="' + id + '" name="' + id + '" class="mceAnchorList" o2nfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target + '.value=';\r
- html += 'this.options[this.selectedIndex].value;">';\r
- html += '<option value="">---</option>';\r
-\r
- for (i=0; i<nodes.length; i++) {\r
- if ((name = inst.dom.getAttrib(nodes[i], "name")) != "")\r
- html += '<option value="#' + name + '">' + name + '</option>';\r
- }\r
-\r
- html += '</select>';\r
-\r
- return html;\r
-}\r
-\r
-function insertAction() {\r
- var inst = tinyMCEPopup.editor;\r
- var elm, elementArray, i;\r
-\r
- elm = inst.selection.getNode();\r
- checkPrefix(document.forms[0].href);\r
-\r
- elm = inst.dom.getParent(elm, "A");\r
-\r
- // Remove element if there is no href\r
- if (!document.forms[0].href.value) {\r
- tinyMCEPopup.execCommand("mceBeginUndoLevel");\r
- i = inst.selection.getBookmark();\r
- inst.dom.remove(elm, 1);\r
- inst.selection.moveToBookmark(i);\r
- tinyMCEPopup.execCommand("mceEndUndoLevel");\r
- tinyMCEPopup.close();\r
- return;\r
- }\r
-\r
- tinyMCEPopup.execCommand("mceBeginUndoLevel");\r
-\r
- // Create new anchor elements\r
- if (elm == null) {\r
- tinyMCEPopup.execCommand("CreateLink", false, "#mce_temp_url#", {skip_undo : 1});\r
-\r
- elementArray = tinymce.grep(inst.dom.select("a"), function(n) {return inst.dom.getAttrib(n, 'href') == '#mce_temp_url#';});\r
- for (i=0; i<elementArray.length; i++)\r
- setAllAttribs(elm = elementArray[i]);\r
- } else\r
- setAllAttribs(elm);\r
-\r
- // Don't move caret if selection was image\r
- if (elm.childNodes.length != 1 || elm.firstChild.nodeName != 'IMG') {\r
- inst.focus();\r
- inst.selection.select(elm);\r
- inst.selection.collapse(0);\r
- tinyMCEPopup.storeSelection();\r
- }\r
-\r
- tinyMCEPopup.execCommand("mceEndUndoLevel");\r
- tinyMCEPopup.close();\r
-}\r
-\r
-function setAllAttribs(elm) {\r
- var formObj = document.forms[0];\r
- var href = formObj.href.value;\r
- var target = getSelectValue(formObj, 'targetlist');\r
-\r
- setAttrib(elm, 'href', href);\r
- setAttrib(elm, 'title');\r
- setAttrib(elm, 'target', target == '_self' ? '' : target);\r
- setAttrib(elm, 'id');\r
- setAttrib(elm, 'style');\r
- setAttrib(elm, 'class', getSelectValue(formObj, 'classlist'));\r
- setAttrib(elm, 'rel');\r
- setAttrib(elm, 'rev');\r
- setAttrib(elm, 'charset');\r
- setAttrib(elm, 'hreflang');\r
- setAttrib(elm, 'dir');\r
- setAttrib(elm, 'lang');\r
- setAttrib(elm, 'tabindex');\r
- setAttrib(elm, 'accesskey');\r
- setAttrib(elm, 'type');\r
- setAttrib(elm, 'onfocus');\r
- setAttrib(elm, 'onblur');\r
- setAttrib(elm, 'onclick');\r
- setAttrib(elm, 'ondblclick');\r
- setAttrib(elm, 'onmousedown');\r
- setAttrib(elm, 'onmouseup');\r
- setAttrib(elm, 'onmouseover');\r
- setAttrib(elm, 'onmousemove');\r
- setAttrib(elm, 'onmouseout');\r
- setAttrib(elm, 'onkeypress');\r
- setAttrib(elm, 'onkeydown');\r
- setAttrib(elm, 'onkeyup');\r
-\r
- // Refresh in old MSIE\r
- if (tinyMCE.isMSIE5)\r
- elm.outerHTML = elm.outerHTML;\r
-}\r
-\r
-function getSelectValue(form_obj, field_name) {\r
- var elm = form_obj.elements[field_name];\r
-\r
- if (!elm || elm.options == null || elm.selectedIndex == -1)\r
- return "";\r
-\r
- return elm.options[elm.selectedIndex].value;\r
-}\r
-\r
-function getLinkListHTML(elm_id, target_form_element, onchange_func) {\r
- if (typeof(tinyMCELinkList) == "undefined" || tinyMCELinkList.length == 0)\r
- return "";\r
-\r
- var html = "";\r
-\r
- html += '<select id="' + elm_id + '" name="' + elm_id + '"';\r
- html += ' class="mceLinkList" onfoc2us="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target_form_element + '.value=';\r
- html += 'this.options[this.selectedIndex].value;';\r
-\r
- if (typeof(onchange_func) != "undefined")\r
- html += onchange_func + '(\'' + target_form_element + '\',this.options[this.selectedIndex].text,this.options[this.selectedIndex].value);';\r
-\r
- html += '"><option value="">---</option>';\r
-\r
- for (var i=0; i<tinyMCELinkList.length; i++)\r
- html += '<option value="' + tinyMCELinkList[i][1] + '">' + tinyMCELinkList[i][0] + '</option>';\r
-\r
- html += '</select>';\r
-\r
- return html;\r
-\r
- // tinyMCE.debug('-- image list start --', html, '-- image list end --');\r
-}\r
-\r
-function getTargetListHTML(elm_id, target_form_element) {\r
- var targets = tinyMCEPopup.getParam('theme_advanced_link_targets', '').split(';');\r
- var html = '';\r
-\r
- html += '<select id="' + elm_id + '" name="' + elm_id + '" onf2ocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target_form_element + '.value=';\r
- html += 'this.options[this.selectedIndex].value;">';\r
- html += '<option value="_self">' + tinyMCEPopup.getLang('advlink_dlg.target_same') + '</option>';\r
- html += '<option value="_blank">' + tinyMCEPopup.getLang('advlink_dlg.target_blank') + ' (_blank)</option>';\r
- html += '<option value="_parent">' + tinyMCEPopup.getLang('advlink_dlg.target_parent') + ' (_parent)</option>';\r
- html += '<option value="_top">' + tinyMCEPopup.getLang('advlink_dlg.target_top') + ' (_top)</option>';\r
-\r
- for (var i=0; i<targets.length; i++) {\r
- var key, value;\r
-\r
- if (targets[i] == "")\r
- continue;\r
-\r
- key = targets[i].split('=')[0];\r
- value = targets[i].split('=')[1];\r
-\r
- html += '<option value="' + key + '">' + value + ' (' + key + ')</option>';\r
- }\r
-\r
- html += '</select>';\r
-\r
- return html;\r
-}\r
-\r
-// While loading\r
-preinit();\r
-tinyMCEPopup.onInit.add(init);\r
+++ /dev/null
-tinyMCE.addI18n('en.advlink_dlg',{\r
-title:"Insert/edit link",\r
-url:"Link URL",\r
-target:"Target",\r
-titlefield:"Title",\r
-is_email:"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?",\r
-is_external:"The URL you entered seems to external link, do you want to add the required http:// prefix?",\r
-list:"Link list",\r
-general_tab:"General",\r
-popup_tab:"Popup",\r
-events_tab:"Events",\r
-advanced_tab:"Advanced",\r
-general_props:"General properties",\r
-popup_props:"Popup properties",\r
-event_props:"Events",\r
-advanced_props:"Advanced properties",\r
-popup_opts:"Options",\r
-anchor_names:"Anchors",\r
-target_same:"Open in this window / frame",\r
-target_parent:"Open in parent window / frame",\r
-target_top:"Open in top frame (replaces all frames)",\r
-target_blank:"Open in new window",\r
-popup:"Javascript popup",\r
-popup_url:"Popup URL",\r
-popup_name:"Window name",\r
-popup_return:"Insert 'return false'",\r
-popup_scrollbars:"Show scrollbars",\r
-popup_statusbar:"Show status bar",\r
-popup_toolbar:"Show toolbars",\r
-popup_menubar:"Show menu bar",\r
-popup_location:"Show location bar",\r
-popup_resizable:"Make window resizable",\r
-popup_dependent:"Dependent (Mozilla/Firefox only)",\r
-popup_size:"Size",\r
-popup_position:"Position (X/Y)",\r
-id:"Id",\r
-style:"Style",\r
-classes:"Classes",\r
-target_name:"Target name",\r
-langdir:"Language direction",\r
-target_langcode:"Target language",\r
-langcode:"Language code",\r
-encoding:"Target character encoding",\r
-mime:"Target MIME type",\r
-rel:"Relationship page to target",\r
-rev:"Relationship target to page",\r
-tabindex:"Tabindex",\r
-accesskey:"Accesskey",\r
-ltr:"Left to right",\r
-rtl:"Right to left",\r
-link_list:"Link list"\r
-});
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
- <title>{#advlink_dlg.title}</title>\r
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
- <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
- <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
- <script type="text/javascript" src="../../utils/validate.js"></script>\r
- <script type="text/javascript" src="js/advlink.js"></script>\r
- <link href="css/advlink.css" rel="stylesheet" type="text/css" />\r
- <base target="_self" />\r
-</head>\r
-<body id="advlink" style="display: none">\r
- <form onsubmit="insertAction();return false;" action="#">\r
- <div class="tabs">\r
- <ul>\r
- <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advlink_dlg.general_tab}</a></span></li>\r
- <li id="popup_tab"><span><a href="javascript:mcTabs.displayTab('popup_tab','popup_panel');" onmousedown="return false;">{#advlink_dlg.popup_tab}</a></span></li>\r
- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#advlink_dlg.events_tab}</a></span></li>\r
- <li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#advlink_dlg.advanced_tab}</a></span></li>\r
- </ul>\r
- </div>\r
-\r
- <div class="panel_wrapper">\r
- <div id="general_panel" class="panel current">\r
- <fieldset>\r
- <legend>{#advlink_dlg.general_props}</legend>\r
-\r
- <table border="0" cellpadding="4" cellspacing="0">\r
- <tr>\r
- <td nowrap="nowrap"><label id="hreflabel" for="href">{#advlink_dlg.url}</label></td>\r
- <td><table border="0" cellspacing="0" cellpadding="0">\r
- <tr>\r
- <td><input id="href" name="href" type="text" class="mceFocus" value="" onchange="selectByValue(this.form,'linklisthref',this.value);" /></td>\r
- <td id="hrefbrowsercontainer"> </td>\r
- </tr>\r
- </table></td>\r
- </tr>\r
- <tr id="linklisthrefrow">\r
- <td class="column1"><label for="linklisthref">{#advlink_dlg.list}</label></td>\r
- <td colspan="2" id="linklisthrefcontainer"> </td>\r
- </tr>\r
- <tr>\r
- <td class="column1"><label for="anchorlist">{#advlink_dlg.anchor_names}</label></td>\r
- <td colspan="2" id="anchorlistcontainer"> </td>\r
- </tr>\r
- <tr>\r
- <td><label id="targetlistlabel" for="targetlist">{#advlink_dlg.target}</label></td>\r
- <td id="targetlistcontainer"> </td>\r
- </tr>\r
- <tr>\r
- <td nowrap="nowrap"><label id="titlelabel" for="title">{#advlink_dlg.titlefield}</label></td>\r
- <td><input id="title" name="title" type="text" value="" /></td>\r
- </tr>\r
- <tr>\r
- <td><label id="classlabel" for="classlist">{#class_name}</label></td>\r
- <td>\r
- <select id="classlist" name="classlist" onchange="changeClass();">\r
- <option value="" selected>{#not_set}</option>\r
- </select>\r
- </td>\r
- </tr>\r
- </table>\r
- </fieldset>\r
- </div>\r
-\r
- <div id="popup_panel" class="panel">\r
- <fieldset>\r
- <legend>{#advlink_dlg.popup_props}</legend>\r
-\r
- <input type="checkbox" id="ispopup" name="ispopup" class="radio" onclick="setPopupControlsDisabled(!this.checked);buildOnClick();" />\r
- <label id="ispopuplabel" for="ispopup">{#advlink_dlg.popup}</label>\r
-\r
- <table border="0" cellpadding="0" cellspacing="4">\r
- <tr>\r
- <td nowrap="nowrap"><label for="popupurl">{#advlink_dlg.popup_url}</label> </td>\r
- <td>\r
- <table border="0" cellspacing="0" cellpadding="0">\r
- <tr>\r
- <td><input type="text" name="popupurl" id="popupurl" value="" onchange="buildOnClick();" /></td>\r
- <td id="popupurlbrowsercontainer"> </td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
- <tr>\r
- <td nowrap="nowrap"><label for="popupname">{#advlink_dlg.popup_name}</label> </td>\r
- <td><input type="text" name="popupname" id="popupname" value="" onchange="buildOnClick();" /></td>\r
- </tr>\r
- <tr>\r
- <td nowrap="nowrap"><label>{#advlink_dlg.popup_size}</label> </td>\r
- <td nowrap="nowrap">\r
- <input type="text" id="popupwidth" name="popupwidth" value="" onchange="buildOnClick();" /> x\r
- <input type="text" id="popupheight" name="popupheight" value="" onchange="buildOnClick();" /> px\r
- </td>\r
- </tr>\r
- <tr>\r
- <td nowrap="nowrap" id="labelleft"><label>{#advlink_dlg.popup_position}</label> </td>\r
- <td nowrap="nowrap">\r
- <input type="text" id="popupleft" name="popupleft" value="" onchange="buildOnClick();" /> / \r
- <input type="text" id="popuptop" name="popuptop" value="" onchange="buildOnClick();" /> (c /c = center)\r
- </td>\r
- </tr>\r
- </table>\r
-\r
- <fieldset>\r
- <legend>{#advlink_dlg.popup_opts}</legend>\r
-\r
- <table border="0" cellpadding="0" cellspacing="4">\r
- <tr>\r
- <td><input type="checkbox" id="popuplocation" name="popuplocation" class="checkbox" onchange="buildOnClick();" /></td>\r
- <td nowrap="nowrap"><label id="popuplocationlabel" for="popuplocation">{#advlink_dlg.popup_location}</label></td>\r
- <td><input type="checkbox" id="popupscrollbars" name="popupscrollbars" class="checkbox" onchange="buildOnClick();" /></td>\r
- <td nowrap="nowrap"><label id="popupscrollbarslabel" for="popupscrollbars">{#advlink_dlg.popup_scrollbars}</label></td>\r
- </tr>\r
- <tr>\r
- <td><input type="checkbox" id="popupmenubar" name="popupmenubar" class="checkbox" onchange="buildOnClick();" /></td>\r
- <td nowrap="nowrap"><label id="popupmenubarlabel" for="popupmenubar">{#advlink_dlg.popup_menubar}</label></td>\r
- <td><input type="checkbox" id="popupresizable" name="popupresizable" class="checkbox" onchange="buildOnClick();" /></td>\r
- <td nowrap="nowrap"><label id="popupresizablelabel" for="popupresizable">{#advlink_dlg.popup_resizable}</label></td>\r
- </tr>\r
- <tr>\r
- <td><input type="checkbox" id="popuptoolbar" name="popuptoolbar" class="checkbox" onchange="buildOnClick();" /></td>\r
- <td nowrap="nowrap"><label id="popuptoolbarlabel" for="popuptoolbar">{#advlink_dlg.popup_toolbar}</label></td>\r
- <td><input type="checkbox" id="popupdependent" name="popupdependent" class="checkbox" onchange="buildOnClick();" /></td>\r
- <td nowrap="nowrap"><label id="popupdependentlabel" for="popupdependent">{#advlink_dlg.popup_dependent}</label></td>\r
- </tr>\r
- <tr>\r
- <td><input type="checkbox" id="popupstatus" name="popupstatus" class="checkbox" onchange="buildOnClick();" /></td>\r
- <td nowrap="nowrap"><label id="popupstatuslabel" for="popupstatus">{#advlink_dlg.popup_statusbar}</label></td>\r
- <td><input type="checkbox" id="popupreturn" name="popupreturn" class="checkbox" onchange="buildOnClick();" checked="checked" /></td>\r
- <td nowrap="nowrap"><label id="popupreturnlabel" for="popupreturn">{#advlink_dlg.popup_return}</label></td>\r
- </tr>\r
- </table>\r
- </fieldset>\r
- </fieldset>\r
- </div>\r
-\r
- <div id="advanced_panel" class="panel">\r
- <fieldset>\r
- <legend>{#advlink_dlg.advanced_props}</legend>\r
-\r
- <table border="0" cellpadding="0" cellspacing="4">\r
- <tr>\r
- <td class="column1"><label id="idlabel" for="id">{#advlink_dlg.id}</label></td> \r
- <td><input id="id" name="id" type="text" value="" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td><label id="stylelabel" for="style">{#advlink_dlg.style}</label></td>\r
- <td><input type="text" id="style" name="style" value="" /></td>\r
- </tr>\r
-\r
- <tr>\r
- <td><label id="classeslabel" for="classes">{#advlink_dlg.classes}</label></td>\r
- <td><input type="text" id="classes" name="classes" value="" onchange="selectByValue(this.form,'classlist',this.value,true);" /></td>\r
- </tr>\r
-\r
- <tr>\r
- <td><label id="targetlabel" for="target">{#advlink_dlg.target_name}</label></td>\r
- <td><input type="text" id="target" name="target" value="" onchange="selectByValue(this.form,'targetlist',this.value,true);" /></td>\r
- </tr>\r
-\r
- <tr>\r
- <td class="column1"><label id="dirlabel" for="dir">{#advlink_dlg.langdir}</label></td> \r
- <td>\r
- <select id="dir" name="dir"> \r
- <option value="">{#not_set}</option> \r
- <option value="ltr">{#advlink_dlg.ltr}</option> \r
- <option value="rtl">{#advlink_dlg.rtl}</option> \r
- </select>\r
- </td> \r
- </tr>\r
-\r
- <tr>\r
- <td><label id="hreflanglabel" for="hreflang">{#advlink_dlg.target_langcode}</label></td>\r
- <td><input type="text" id="hreflang" name="hreflang" value="" /></td>\r
- </tr>\r
-\r
- <tr>\r
- <td class="column1"><label id="langlabel" for="lang">{#advlink_dlg.langcode}</label></td> \r
- <td>\r
- <input id="lang" name="lang" type="text" value="" />\r
- </td> \r
- </tr>\r
-\r
- <tr>\r
- <td><label id="charsetlabel" for="charset">{#advlink_dlg.encoding}</label></td>\r
- <td><input type="text" id="charset" name="charset" value="" /></td>\r
- </tr>\r
-\r
- <tr>\r
- <td><label id="typelabel" for="type">{#advlink_dlg.mime}</label></td>\r
- <td><input type="text" id="type" name="type" value="" /></td>\r
- </tr>\r
-\r
- <tr>\r
- <td><label id="rellabel" for="rel">{#advlink_dlg.rel}</label></td>\r
- <td><select id="rel" name="rel"> \r
- <option value="">{#not_set}</option> \r
- <option value="lightbox">Lightbox</option> \r
- <option value="alternate">Alternate</option> \r
- <option value="designates">Designates</option> \r
- <option value="stylesheet">Stylesheet</option> \r
- <option value="start">Start</option> \r
- <option value="next">Next</option> \r
- <option value="prev">Prev</option> \r
- <option value="contents">Contents</option> \r
- <option value="index">Index</option> \r
- <option value="glossary">Glossary</option> \r
- <option value="copyright">Copyright</option> \r
- <option value="chapter">Chapter</option> \r
- <option value="subsection">Subsection</option> \r
- <option value="appendix">Appendix</option> \r
- <option value="help">Help</option> \r
- <option value="bookmark">Bookmark</option>\r
- <option value="nofollow">No Follow</option>\r
- <option value="tag">Tag</option>\r
- </select> \r
- </td>\r
- </tr>\r
-\r
- <tr>\r
- <td><label id="revlabel" for="rev">{#advlink_dlg.rev}</label></td>\r
- <td><select id="rev" name="rev"> \r
- <option value="">{#not_set}</option> \r
- <option value="alternate">Alternate</option> \r
- <option value="designates">Designates</option> \r
- <option value="stylesheet">Stylesheet</option> \r
- <option value="start">Start</option> \r
- <option value="next">Next</option> \r
- <option value="prev">Prev</option> \r
- <option value="contents">Contents</option> \r
- <option value="index">Index</option> \r
- <option value="glossary">Glossary</option> \r
- <option value="copyright">Copyright</option> \r
- <option value="chapter">Chapter</option> \r
- <option value="subsection">Subsection</option> \r
- <option value="appendix">Appendix</option> \r
- <option value="help">Help</option> \r
- <option value="bookmark">Bookmark</option> \r
- </select> \r
- </td>\r
- </tr>\r
-\r
- <tr>\r
- <td><label id="tabindexlabel" for="tabindex">{#advlink_dlg.tabindex}</label></td>\r
- <td><input type="text" id="tabindex" name="tabindex" value="" /></td>\r
- </tr>\r
-\r
- <tr>\r
- <td><label id="accesskeylabel" for="accesskey">{#advlink_dlg.accesskey}</label></td>\r
- <td><input type="text" id="accesskey" name="accesskey" value="" /></td>\r
- </tr>\r
- </table>\r
- </fieldset>\r
- </div>\r
-\r
- <div id="events_panel" class="panel">\r
- <fieldset>\r
- <legend>{#advlink_dlg.event_props}</legend>\r
-\r
- <table border="0" cellpadding="0" cellspacing="4">\r
- <tr>\r
- <td class="column1"><label for="onfocus">onfocus</label></td> \r
- <td><input id="onfocus" name="onfocus" type="text" value="" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="column1"><label for="onblur">onblur</label></td> \r
- <td><input id="onblur" name="onblur" type="text" value="" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="column1"><label for="onclick">onclick</label></td> \r
- <td><input id="onclick" name="onclick" type="text" value="" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="column1"><label for="ondblclick">ondblclick</label></td> \r
- <td><input id="ondblclick" name="ondblclick" type="text" value="" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="column1"><label for="onmousedown">onmousedown</label></td> \r
- <td><input id="onmousedown" name="onmousedown" type="text" value="" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="column1"><label for="onmouseup">onmouseup</label></td> \r
- <td><input id="onmouseup" name="onmouseup" type="text" value="" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="column1"><label for="onmouseover">onmouseover</label></td> \r
- <td><input id="onmouseover" name="onmouseover" type="text" value="" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="column1"><label for="onmousemove">onmousemove</label></td> \r
- <td><input id="onmousemove" name="onmousemove" type="text" value="" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="column1"><label for="onmouseout">onmouseout</label></td> \r
- <td><input id="onmouseout" name="onmouseout" type="text" value="" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="column1"><label for="onkeypress">onkeypress</label></td> \r
- <td><input id="onkeypress" name="onkeypress" type="text" value="" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="column1"><label for="onkeydown">onkeydown</label></td> \r
- <td><input id="onkeydown" name="onkeydown" type="text" value="" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="column1"><label for="onkeyup">onkeyup</label></td> \r
- <td><input id="onkeyup" name="onkeyup" type="text" value="" /></td> \r
- </tr>\r
- </table>\r
- </fieldset>\r
- </div>\r
- </div>\r
-\r
- <div class="mceActionPanel">\r
- <div style="float: left">\r
- <input type="submit" id="insert" name="insert" value="{#insert}" />\r
- </div>\r
-\r
- <div style="float: right">\r
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
- </div>\r
- </div>\r
- </form>\r
-</body>\r
-</html>\r
+++ /dev/null
-(function(){tinymce.create('tinymce.plugins.AutoSavePlugin',{init:function(ed,url){var t=this;t.editor=ed;window.onbeforeunload=tinymce.plugins.AutoSavePlugin._beforeUnloadHandler;},getInfo:function(){return{longname:'Auto save',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autosave',version:tinymce.majorVersion+"."+tinymce.minorVersion};},'static':{_beforeUnloadHandler:function(){var msg;tinymce.each(tinyMCE.editors,function(ed){if(ed.getParam("fullscreen_is_enabled"))return;if(ed.isDirty()){msg=ed.getLang("autosave.unload_msg");return false;}});return msg;}}});tinymce.PluginManager.add('autosave',tinymce.plugins.AutoSavePlugin);})();
\ No newline at end of file
+++ /dev/null
-/**\r
- * $Id: editor_plugin_src.js 520 2008-01-07 16:30:32Z spocke $\r
- *\r
- * @author Moxiecode\r
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-(function() {\r
- tinymce.create('tinymce.plugins.AutoSavePlugin', {\r
- init : function(ed, url) {\r
- var t = this;\r
-\r
- t.editor = ed;\r
-\r
- window.onbeforeunload = tinymce.plugins.AutoSavePlugin._beforeUnloadHandler;\r
- },\r
-\r
- getInfo : function() {\r
- return {\r
- longname : 'Auto save',\r
- author : 'Moxiecode Systems AB',\r
- authorurl : 'http://tinymce.moxiecode.com',\r
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autosave',\r
- version : tinymce.majorVersion + "." + tinymce.minorVersion\r
- };\r
- },\r
-\r
- // Private plugin internal methods\r
-\r
- 'static' : {\r
- _beforeUnloadHandler : function() {\r
- var msg;\r
-\r
- tinymce.each(tinyMCE.editors, function(ed) {\r
- if (ed.getParam("fullscreen_is_enabled"))\r
- return;\r
-\r
- if (ed.isDirty()) {\r
- msg = ed.getLang("autosave.unload_msg");\r
- return false;\r
- }\r
- });\r
-\r
- return msg;\r
- }\r
- }\r
- });\r
-\r
- // Register plugin\r
- tinymce.PluginManager.add('autosave', tinymce.plugins.AutoSavePlugin);\r
-})();
\ No newline at end of file
+++ /dev/null
-(function(){tinymce.create('tinymce.plugins.BBCodePlugin',{init:function(ed,url){var t=this,dialect=ed.getParam('bbcode_dialect','punbb').toLowerCase();ed.onBeforeSetContent.add(function(ed,o){o.content=t['_'+dialect+'_bbcode2html'](o.content);});ed.onPostProcess.add(function(ed,o){if(o.set)o.content=t['_'+dialect+'_bbcode2html'](o.content);if(o.get)o.content=t['_'+dialect+'_html2bbcode'](o.content);});},getInfo:function(){return{longname:'BBCode Plugin',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/bbcode',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_punbb_html2bbcode:function(s){s=tinymce.trim(s);function rep(re,str){s=s.replace(re,str);};rep(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]");rep(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");rep(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");rep(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");rep(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");rep(/<span style=\"color: ?(.*?);\">(.*?)<\/span>/gi,"[color=$1]$2[/color]");rep(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[color=$1]$2[/color]");rep(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi,"[size=$1]$2[/size]");rep(/<font>(.*?)<\/font>/gi,"$1");rep(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]");rep(/<span class=\"codeStyle\">(.*?)<\/span>/gi,"[code]$1[/code]");rep(/<span class=\"quoteStyle\">(.*?)<\/span>/gi,"[quote]$1[/quote]");rep(/<strong class=\"codeStyle\">(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]");rep(/<strong class=\"quoteStyle\">(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]");rep(/<em class=\"codeStyle\">(.*?)<\/em>/gi,"[code][i]$1[/i][/code]");rep(/<em class=\"quoteStyle\">(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]");rep(/<u class=\"codeStyle\">(.*?)<\/u>/gi,"[code][u]$1[/u][/code]");rep(/<u class=\"quoteStyle\">(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]");rep(/<\/(strong|b)>/gi,"[/b]");rep(/<(strong|b)>/gi,"[b]");rep(/<\/(em|i)>/gi,"[/i]");rep(/<(em|i)>/gi,"[i]");rep(/<\/u>/gi,"[/u]");rep(/<span style=\"text-decoration: ?underline;\">(.*?)<\/span>/gi,"[u]$1[/u]");rep(/<u>/gi,"[u]");rep(/<blockquote[^>]*>/gi,"[quote]");rep(/<\/blockquote>/gi,"[/quote]");rep(/<br \/>/gi,"\n");rep(/<br\/>/gi,"\n");rep(/<br>/gi,"\n");rep(/<p>/gi,"");rep(/<\/p>/gi,"\n");rep(/ /gi," ");rep(/"/gi,"\"");rep(/</gi,"<");rep(/>/gi,">");rep(/&/gi,"&");return s;},_punbb_bbcode2html:function(s){s=tinymce.trim(s);function rep(re,str){s=s.replace(re,str);};rep(/\n/gi,"<br />");rep(/\[b\]/gi,"<strong>");rep(/\[\/b\]/gi,"</strong>");rep(/\[i\]/gi,"<em>");rep(/\[\/i\]/gi,"</em>");rep(/\[u\]/gi,"<u>");rep(/\[\/u\]/gi,"</u>");rep(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,"<a href=\"$1\">$2</a>");rep(/\[url\](.*?)\[\/url\]/gi,"<a href=\"$1\">$1</a>");rep(/\[img\](.*?)\[\/img\]/gi,"<img src=\"$1\" />");rep(/\[color=(.*?)\](.*?)\[\/color\]/gi,"<font color=\"$1\">$2</font>");rep(/\[code\](.*?)\[\/code\]/gi,"<span class=\"codeStyle\">$1</span> ");rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"<span class=\"quoteStyle\">$1</span> ");return s;}});tinymce.PluginManager.add('bbcode',tinymce.plugins.BBCodePlugin);})();
\ No newline at end of file
+++ /dev/null
-/**\r
- * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $\r
- *\r
- * @author Moxiecode\r
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-(function() {\r
- tinymce.create('tinymce.plugins.BBCodePlugin', {\r
- init : function(ed, url) {\r
- var t = this, dialect = ed.getParam('bbcode_dialect', 'punbb').toLowerCase();\r
-\r
- ed.onBeforeSetContent.add(function(ed, o) {\r
- o.content = t['_' + dialect + '_bbcode2html'](o.content);\r
- });\r
-\r
- ed.onPostProcess.add(function(ed, o) {\r
- if (o.set)\r
- o.content = t['_' + dialect + '_bbcode2html'](o.content);\r
-\r
- if (o.get)\r
- o.content = t['_' + dialect + '_html2bbcode'](o.content);\r
- });\r
- },\r
-\r
- getInfo : function() {\r
- return {\r
- longname : 'BBCode Plugin',\r
- author : 'Moxiecode Systems AB',\r
- authorurl : 'http://tinymce.moxiecode.com',\r
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/bbcode',\r
- version : tinymce.majorVersion + "." + tinymce.minorVersion\r
- };\r
- },\r
-\r
- // Private methods\r
-\r
- // HTML -> BBCode in PunBB dialect\r
- _punbb_html2bbcode : function(s) {\r
- s = tinymce.trim(s);\r
-\r
- function rep(re, str) {\r
- s = s.replace(re, str);\r
- };\r
-\r
- // example: <strong> to [b]\r
- rep(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]");\r
- rep(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");\r
- rep(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");\r
- rep(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");\r
- rep(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");\r
- rep(/<span style=\"color: ?(.*?);\">(.*?)<\/span>/gi,"[color=$1]$2[/color]");\r
- rep(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[color=$1]$2[/color]");\r
- rep(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi,"[size=$1]$2[/size]");\r
- rep(/<font>(.*?)<\/font>/gi,"$1");\r
- rep(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]");\r
- rep(/<span class=\"codeStyle\">(.*?)<\/span>/gi,"[code]$1[/code]");\r
- rep(/<span class=\"quoteStyle\">(.*?)<\/span>/gi,"[quote]$1[/quote]");\r
- rep(/<strong class=\"codeStyle\">(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]");\r
- rep(/<strong class=\"quoteStyle\">(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]");\r
- rep(/<em class=\"codeStyle\">(.*?)<\/em>/gi,"[code][i]$1[/i][/code]");\r
- rep(/<em class=\"quoteStyle\">(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]");\r
- rep(/<u class=\"codeStyle\">(.*?)<\/u>/gi,"[code][u]$1[/u][/code]");\r
- rep(/<u class=\"quoteStyle\">(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]");\r
- rep(/<\/(strong|b)>/gi,"[/b]");\r
- rep(/<(strong|b)>/gi,"[b]");\r
- rep(/<\/(em|i)>/gi,"[/i]");\r
- rep(/<(em|i)>/gi,"[i]");\r
- rep(/<\/u>/gi,"[/u]");\r
- rep(/<span style=\"text-decoration: ?underline;\">(.*?)<\/span>/gi,"[u]$1[/u]");\r
- rep(/<u>/gi,"[u]");\r
- rep(/<blockquote[^>]*>/gi,"[quote]");\r
- rep(/<\/blockquote>/gi,"[/quote]");\r
- rep(/<br \/>/gi,"\n");\r
- rep(/<br\/>/gi,"\n");\r
- rep(/<br>/gi,"\n");\r
- rep(/<p>/gi,"");\r
- rep(/<\/p>/gi,"\n");\r
- rep(/ /gi," ");\r
- rep(/"/gi,"\"");\r
- rep(/</gi,"<");\r
- rep(/>/gi,">");\r
- rep(/&/gi,"&");\r
-\r
- return s; \r
- },\r
-\r
- // BBCode -> HTML from PunBB dialect\r
- _punbb_bbcode2html : function(s) {\r
- s = tinymce.trim(s);\r
-\r
- function rep(re, str) {\r
- s = s.replace(re, str);\r
- };\r
-\r
- // example: [b] to <strong>\r
- rep(/\n/gi,"<br />");\r
- rep(/\[b\]/gi,"<strong>");\r
- rep(/\[\/b\]/gi,"</strong>");\r
- rep(/\[i\]/gi,"<em>");\r
- rep(/\[\/i\]/gi,"</em>");\r
- rep(/\[u\]/gi,"<u>");\r
- rep(/\[\/u\]/gi,"</u>");\r
- rep(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,"<a href=\"$1\">$2</a>");\r
- rep(/\[url\](.*?)\[\/url\]/gi,"<a href=\"$1\">$1</a>");\r
- rep(/\[img\](.*?)\[\/img\]/gi,"<img src=\"$1\" />");\r
- rep(/\[color=(.*?)\](.*?)\[\/color\]/gi,"<font color=\"$1\">$2</font>");\r
- rep(/\[code\](.*?)\[\/code\]/gi,"<span class=\"codeStyle\">$1</span> ");\r
- rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"<span class=\"quoteStyle\">$1</span> ");\r
-\r
- return s; \r
- }\r
- });\r
-\r
- // Register plugin\r
- tinymce.PluginManager.add('bbcode', tinymce.plugins.BBCodePlugin);\r
-})();
\ No newline at end of file
+++ /dev/null
-(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,each=tinymce.each,is=tinymce.is;tinymce.create('tinymce.plugins.Compat2x',{getInfo:function(){return{longname:'Compat2x',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/compat2x',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion};}});(function(){tinymce.extend(tinyMCE,{addToLang:function(p,l){each(l,function(v,k){tinyMCE.i18n[(tinyMCE.settings.language||'en')+'.'+(p?p+'_':'')+k]=v;});},getInstanceById:function(n){return this.get(n);}});})();(function(){var EditorManager=tinymce.EditorManager;tinyMCE.instances={};tinyMCE.plugins={};tinymce.PluginManager.onAdd.add(function(pm,n,p){tinyMCE.plugins[n]=p;});tinyMCE.majorVersion=tinymce.majorVersion;tinyMCE.minorVersion=tinymce.minorVersion;tinyMCE.releaseDate=tinymce.releaseDate;tinyMCE.baseURL=tinymce.baseURL;tinyMCE.isIE=tinyMCE.isMSIE=tinymce.isIE||tinymce.isOpera;tinyMCE.isMSIE5=tinymce.isIE;tinyMCE.isMSIE5_0=tinymce.isIE;tinyMCE.isMSIE7=tinymce.isIE;tinyMCE.isGecko=tinymce.isGecko;tinyMCE.isSafari=tinymce.isWebKit;tinyMCE.isOpera=tinymce.isOpera;tinyMCE.isMac=false;tinyMCE.isNS7=false;tinyMCE.isNS71=false;tinyMCE.compat=true;TinyMCE_Engine=tinyMCE;tinymce.extend(tinyMCE,{getParam:function(n,dv){return this.activeEditor.getParam(n,dv);},addEvent:function(e,na,f,sc){tinymce.dom.Event.add(e,na,f,sc||this);},getControlHTML:function(n){return EditorManager.activeEditor.controlManager.createControl(n);},loadCSS:function(u){tinymce.DOM.loadCSS(u);},importCSS:function(doc,u){if(doc==document)this.loadCSS(u);else new tinymce.dom.DOMUtils(doc).loadCSS(u);},log:function(){console.debug.apply(console,arguments);},getLang:function(n,dv){var v=EditorManager.activeEditor.getLang(n.replace(/^lang_/g,''),dv);if(/^[0-9\-.]+$/g.test(v))return parseInt(v);return v;},isInstance:function(o){return o!=null&&typeof(o)=="object"&&o.execCommand;},triggerNodeChange:function(){EditorManager.activeEditor.nodeChanged();},regexpReplace:function(in_str,reg_exp,replace_str,opts){var re;if(in_str==null)return in_str;if(typeof(opts)=="undefined")opts='g';re=new RegExp(reg_exp,opts);return in_str.replace(re,replace_str);},trim:function(s){return tinymce.trim(s);},xmlEncode:function(s){return tinymce.DOM.encode(s);},explode:function(s,d){var o=[];tinymce.each(s.split(d),function(v){if(v!='')o.push(v);});return o;},switchClass:function(id,cls){var b;if(/^mceButton/.test(cls)){b=EditorManager.activeEditor.controlManager.get(id);if(!b)return;switch(cls){case"mceButtonNormal":b.setDisabled(false);b.setActive(false);return;case"mceButtonDisabled":b.setDisabled(true);return;case"mceButtonSelected":b.setActive(true);b.setDisabled(false);return;}}},addCSSClass:function(e,n,b){return tinymce.DOM.addClass(e,n,b);},hasCSSClass:function(e,n){return tinymce.DOM.hasClass(e,n);},removeCSSClass:function(e,n){return tinymce.DOM.removeClass(e,n);},getCSSClasses:function(){var cl=EditorManager.activeEditor.dom.getClasses(),o=[];each(cl,function(c){o.push(c['class']);});return o;},setWindowArg:function(n,v){EditorManager.activeEditor.windowManager.params[n]=v;},getWindowArg:function(n,dv){var wm=EditorManager.activeEditor.windowManager,v;v=wm.getParam(n);if(v==='')return'';return v||wm.getFeature(n)||dv;},getParentNode:function(n,f){return this._getDOM().getParent(n,f);},selectElements:function(n,na,f){var i,a=[],nl,x;for(x=0,na=na.split(',');x<na.length;x++)for(i=0,nl=n.getElementsByTagName(na[x]);i<nl.length;i++)(!f||f(nl[i]))&&a.push(nl[i]);return a;},getNodeTree:function(n,na,t,nn){return this.selectNodes(n,function(n){return(!t||n.nodeType==t)&&(!nn||n.nodeName==nn);},na?na:[]);},getAttrib:function(e,n,dv){return this._getDOM().getAttrib(e,n,dv);},setAttrib:function(e,n,v){return this._getDOM().setAttrib(e,n,v);},getElementsByAttributeValue:function(n,e,a,v){var i,nl=n.getElementsByTagName(e),o=[];for(i=0;i<nl.length;i++){if(tinyMCE.getAttrib(nl[i],a).indexOf(v)!=-1)o[o.length]=nl[i];}return o;},selectNodes:function(n,f,a){var i;if(!a)a=[];if(f(n))a[a.length]=n;if(n.hasChildNodes()){for(i=0;i<n.childNodes.length;i++)tinyMCE.selectNodes(n.childNodes[i],f,a);}return a;},getContent:function(){return EditorManager.activeEditor.getContent();},getParentElement:function(n,na,f){if(na)na=new RegExp('^('+na.toUpperCase().replace(/,/g,'|')+')$','g');return this._getDOM().getParent(n,function(n){return n.nodeType==1&&(!na||na.test(n.nodeName))&&(!f||f(n));},this.activeEditor.getBody());},importPluginLanguagePack:function(n){tinymce.PluginManager.requireLangPack(n);},getButtonHTML:function(cn,lang,img,c,u,v){var ed=EditorManager.activeEditor;img=img.replace(/\{\$pluginurl\}/g,tinyMCE.pluginURL);img=img.replace(/\{\$themeurl\}/g,tinyMCE.themeURL);lang=lang.replace(/^lang_/g,'');return ed.controlManager.createButton(cn,{title:lang,command:c,ui:u,value:v,scope:this,'class':'compat',image:img});},addSelectAccessibility:function(e,s,w){if(!s._isAccessible){s.onkeydown=tinyMCE.accessibleEventHandler;s.onblur=tinyMCE.accessibleEventHandler;s._isAccessible=true;s._win=w;}return false;},accessibleEventHandler:function(e){var elm,win=this._win;e=tinymce.isIE?win.event:e;elm=tinymce.isIE?e.srcElement:e.target;if(e.type=="blur"){if(elm.oldonchange){elm.onchange=elm.oldonchange;elm.oldonchange=null;}return true;}if(elm.nodeName=="SELECT"&&!elm.oldonchange){elm.oldonchange=elm.onchange;elm.onchange=null;}if(e.keyCode==13||e.keyCode==32){elm.onchange=elm.oldonchange;elm.onchange();elm.oldonchange=null;tinyMCE.cancelEvent(e);return false;}return true;},cancelEvent:function(e){return tinymce.dom.Event.cancel(e);},handleVisualAid:function(e){EditorManager.activeEditor.addVisual(e);},getAbsPosition:function(n,r){return tinymce.DOM.getPos(n,r);},cleanupEventStr:function(s){s=""+s;s=s.replace('function anonymous()\n{\n','');s=s.replace('\n}','');s=s.replace(/^return true;/gi,'');return s;},getVisualAidClass:function(s){return s;},parseStyle:function(s){return this._getDOM().parseStyle(s);},serializeStyle:function(s){return this._getDOM().serializeStyle(s);},openWindow:function(tpl,args){var ed=EditorManager.activeEditor,o={},n;for(n in tpl)o[n]=tpl[n];tpl=o;args=args||{};tpl.url=new tinymce.util.URI(tinymce.ThemeManager.themeURLs[ed.settings.theme]).toAbsolute(tpl.file);tpl.inline=tpl.inline||args.inline;ed.windowManager.open(tpl,args);},closeWindow:function(win){EditorManager.activeEditor.windowManager.close(win);},getOuterHTML:function(e){return tinymce.DOM.getOuterHTML(e);},setOuterHTML:function(e,h,d){return tinymce.DOM.setOuterHTML(e,h,d);},hasPlugin:function(n){return tinymce.PluginManager.get(n)!=null;},_setEventsEnabled:function(){},addPlugin:function(pn,f){var t=this;function PluginWrapper(ed){tinyMCE.selectedInstance=ed;ed.onInit.add(function(){t.settings=ed.settings;t.settings['base_href']=tinyMCE.documentBasePath;tinyMCE.settings=t.settings;tinyMCE.documentBasePath=ed.documentBasePath;if(f.initInstance)f.initInstance(ed);ed.contentDocument=ed.getDoc();ed.contentWindow=ed.getWin();ed.undoRedo=ed.undoManager;ed.startContent=ed.getContent({format:'raw'});tinyMCE.instances[ed.id]=ed;tinyMCE.loadedFiles=[];});ed.onActivate.add(function(){tinyMCE.settings=ed.settings;tinyMCE.selectedInstance=ed;});if(f.handleNodeChange){ed.onNodeChange.add(function(ed,cm,n){f.handleNodeChange(ed.id,n,0,0,false,!ed.selection.isCollapsed());});}if(f.onChange){ed.onChange.add(function(ed,n){return f.onChange(ed);});}if(f.cleanup){ed.onGetContent.add(function(){});}this.getInfo=function(){return f.getInfo();};this.createControl=function(n){tinyMCE.pluginURL=tinymce.baseURL+'/plugins/'+pn;tinyMCE.themeURL=tinymce.baseURL+'/themes/'+tinyMCE.activeEditor.settings.theme;if(f.getControlHTML)return f.getControlHTML(n);return null;};this.execCommand=function(cmd,ui,val){if(f.execCommand)return f.execCommand(ed.id,ed.getBody(),cmd,ui,val);return false;};};tinymce.PluginManager.add(pn,PluginWrapper);},_getDOM:function(){return tinyMCE.activeEditor?tinyMCE.activeEditor.dom:tinymce.DOM;},convertRelativeToAbsoluteURL:function(b,u){return new tinymce.util.URI(b).toAbsolute(u);},convertAbsoluteURLToRelativeURL:function(b,u){return new tinymce.util.URI(b).toRelative(u);}});tinymce.extend(tinymce.Editor.prototype,{getFocusElement:function(){return this.selection.getNode();},getData:function(n){if(!this.data)this.data=[];if(!this.data[n])this.data[n]=[];return this.data[n];},hasPlugin:function(n){return this.plugins[n]!=null;},getContainerWin:function(){return window;},getHTML:function(raw){return this.getContent({format:raw?'raw':'html'});},setHTML:function(h){this.setContent(h);},getSel:function(){return this.selection.getSel();},getRng:function(){return this.selection.getRng();},isHidden:function(){var s;if(!tinymce.isGecko)return false;s=this.getSel();return(!s||!s.rangeCount||s.rangeCount==0);},translate:function(s){var c=this.settings.language,o;if(!s)return s;o=tinymce.EditorManager.i18n[c+'.'+s]||s.replace(/{\#([^}]+)\}/g,function(a,b){return tinymce.EditorManager.i18n[c+'.'+b]||'{#'+b+'}';});o=o.replace(/{\$lang_([^}]+)\}/g,function(a,b){return tinymce.EditorManager.i18n[c+'.'+b]||'{$lang_'+b+'}';});return o;},repaint:function(){this.execCommand('mceRepaint');}});tinymce.extend(tinymce.dom.Selection.prototype,{getSelectedText:function(){return this.getContent({format:'text'});},getSelectedHTML:function(){return this.getContent({format:'html'});},getFocusElement:function(){return this.getNode();},selectNode:function(node,collapse,select_text_node,to_start){var t=this;t.select(node,select_text_node||0);if(!is(collapse))collapse=true;if(collapse){if(!is(to_start))to_start=true;t.collapse(to_start);}}});}).call(this);tinymce.PluginManager.add('compat2x',tinymce.plugins.Compat2x);})();
\ No newline at end of file
+++ /dev/null
-/**\r
- * $Id: editor_plugin_src.js 264 2007-04-26 20:53:09Z spocke $\r
- *\r
- * @author Moxiecode\r
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-(function() {\r
- var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, is = tinymce.is;\r
-\r
- tinymce.create('tinymce.plugins.Compat2x', {\r
- getInfo : function() {\r
- return {\r
- longname : 'Compat2x',\r
- author : 'Moxiecode Systems AB',\r
- authorurl : 'http://tinymce.moxiecode.com',\r
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/compat2x',\r
- version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion\r
- };\r
- }\r
- });\r
-\r
- (function() {\r
- // Extend tinyMCE/EditorManager\r
- tinymce.extend(tinyMCE, {\r
- addToLang : function(p, l) {\r
- each(l, function(v, k) {\r
- tinyMCE.i18n[(tinyMCE.settings.language || 'en') + '.' + (p ? p + '_' : '') + k] = v;\r
- });\r
- },\r
-\r
- getInstanceById : function(n) {\r
- return this.get(n);\r
- }\r
- });\r
- })();\r
-\r
- (function() {\r
- var EditorManager = tinymce.EditorManager;\r
-\r
- tinyMCE.instances = {};\r
- tinyMCE.plugins = {};\r
- tinymce.PluginManager.onAdd.add(function(pm, n, p) {\r
- tinyMCE.plugins[n] = p;\r
- });\r
-\r
- tinyMCE.majorVersion = tinymce.majorVersion;\r
- tinyMCE.minorVersion = tinymce.minorVersion;\r
- tinyMCE.releaseDate = tinymce.releaseDate;\r
- tinyMCE.baseURL = tinymce.baseURL;\r
- tinyMCE.isIE = tinyMCE.isMSIE = tinymce.isIE || tinymce.isOpera;\r
- tinyMCE.isMSIE5 = tinymce.isIE;\r
- tinyMCE.isMSIE5_0 = tinymce.isIE;\r
- tinyMCE.isMSIE7 = tinymce.isIE;\r
- tinyMCE.isGecko = tinymce.isGecko;\r
- tinyMCE.isSafari = tinymce.isWebKit;\r
- tinyMCE.isOpera = tinymce.isOpera;\r
- tinyMCE.isMac = false;\r
- tinyMCE.isNS7 = false;\r
- tinyMCE.isNS71 = false;\r
- tinyMCE.compat = true;\r
-\r
- // Extend tinyMCE class\r
- TinyMCE_Engine = tinyMCE;\r
- tinymce.extend(tinyMCE, {\r
- getParam : function(n, dv) {\r
- return this.activeEditor.getParam(n, dv);\r
- },\r
-\r
- addEvent : function(e, na, f, sc) {\r
- tinymce.dom.Event.add(e, na, f, sc || this);\r
- },\r
-\r
- getControlHTML : function(n) {\r
- return EditorManager.activeEditor.controlManager.createControl(n);\r
- },\r
-\r
- loadCSS : function(u) {\r
- tinymce.DOM.loadCSS(u);\r
- },\r
-\r
- importCSS : function(doc, u) {\r
- if (doc == document)\r
- this.loadCSS(u);\r
- else\r
- new tinymce.dom.DOMUtils(doc).loadCSS(u);\r
- },\r
-\r
- log : function() {\r
- console.debug.apply(console, arguments);\r
- },\r
-\r
- getLang : function(n, dv) {\r
- var v = EditorManager.activeEditor.getLang(n.replace(/^lang_/g, ''), dv);\r
-\r
- // Is number\r
- if (/^[0-9\-.]+$/g.test(v))\r
- return parseInt(v);\r
-\r
- return v;\r
- },\r
-\r
- isInstance : function(o) {\r
- return o != null && typeof(o) == "object" && o.execCommand;\r
- },\r
-\r
- triggerNodeChange : function() {\r
- EditorManager.activeEditor.nodeChanged();\r
- },\r
-\r
- regexpReplace : function(in_str, reg_exp, replace_str, opts) {\r
- var re;\r
-\r
- if (in_str == null)\r
- return in_str;\r
-\r
- if (typeof(opts) == "undefined")\r
- opts = 'g';\r
-\r
- re = new RegExp(reg_exp, opts);\r
-\r
- return in_str.replace(re, replace_str);\r
- },\r
-\r
- trim : function(s) {\r
- return tinymce.trim(s);\r
- },\r
-\r
- xmlEncode : function(s) {\r
- return tinymce.DOM.encode(s);\r
- },\r
-\r
- explode : function(s, d) {\r
- var o = [];\r
-\r
- tinymce.each(s.split(d), function(v) {\r
- if (v != '')\r
- o.push(v);\r
- });\r
-\r
- return o;\r
- },\r
-\r
- switchClass : function(id, cls) {\r
- var b;\r
-\r
- if (/^mceButton/.test(cls)) {\r
- b = EditorManager.activeEditor.controlManager.get(id);\r
-\r
- if (!b)\r
- return;\r
-\r
- switch (cls) {\r
- case "mceButtonNormal":\r
- b.setDisabled(false);\r
- b.setActive(false);\r
- return;\r
-\r
- case "mceButtonDisabled":\r
- b.setDisabled(true);\r
- return;\r
-\r
- case "mceButtonSelected":\r
- b.setActive(true);\r
- b.setDisabled(false);\r
- return;\r
- }\r
- }\r
- },\r
-\r
- addCSSClass : function(e, n, b) {\r
- return tinymce.DOM.addClass(e, n, b);\r
- },\r
-\r
- hasCSSClass : function(e, n) {\r
- return tinymce.DOM.hasClass(e, n);\r
- },\r
-\r
- removeCSSClass : function(e, n) {\r
- return tinymce.DOM.removeClass(e, n);\r
- },\r
-\r
- getCSSClasses : function() {\r
- var cl = EditorManager.activeEditor.dom.getClasses(), o = [];\r
-\r
- each(cl, function(c) {\r
- o.push(c['class']);\r
- });\r
-\r
- return o;\r
- },\r
-\r
- setWindowArg : function(n, v) {\r
- EditorManager.activeEditor.windowManager.params[n] = v;\r
- },\r
-\r
- getWindowArg : function(n, dv) {\r
- var wm = EditorManager.activeEditor.windowManager, v;\r
-\r
- v = wm.getParam(n);\r
- if (v === '')\r
- return '';\r
-\r
- return v || wm.getFeature(n) || dv;\r
- },\r
-\r
- getParentNode : function(n, f) {\r
- return this._getDOM().getParent(n, f);\r
- },\r
-\r
- selectElements : function(n, na, f) {\r
- var i, a = [], nl, x;\r
-\r
- for (x=0, na = na.split(','); x<na.length; x++)\r
- for (i=0, nl = n.getElementsByTagName(na[x]); i<nl.length; i++)\r
- (!f || f(nl[i])) && a.push(nl[i]);\r
-\r
- return a;\r
- },\r
-\r
- getNodeTree : function(n, na, t, nn) {\r
- return this.selectNodes(n, function(n) {\r
- return (!t || n.nodeType == t) && (!nn || n.nodeName == nn);\r
- }, na ? na : []);\r
- },\r
-\r
- getAttrib : function(e, n, dv) {\r
- return this._getDOM().getAttrib(e, n, dv);\r
- },\r
-\r
- setAttrib : function(e, n, v) {\r
- return this._getDOM().setAttrib(e, n, v);\r
- },\r
-\r
- getElementsByAttributeValue : function(n, e, a, v) {\r
- var i, nl = n.getElementsByTagName(e), o = [];\r
-\r
- for (i=0; i<nl.length; i++) {\r
- if (tinyMCE.getAttrib(nl[i], a).indexOf(v) != -1)\r
- o[o.length] = nl[i];\r
- }\r
-\r
- return o;\r
- },\r
-\r
- selectNodes : function(n, f, a) {\r
- var i;\r
-\r
- if (!a)\r
- a = [];\r
-\r
- if (f(n))\r
- a[a.length] = n;\r
-\r
- if (n.hasChildNodes()) {\r
- for (i=0; i<n.childNodes.length; i++)\r
- tinyMCE.selectNodes(n.childNodes[i], f, a);\r
- }\r
-\r
- return a;\r
- },\r
-\r
- getContent : function() {\r
- return EditorManager.activeEditor.getContent();\r
- },\r
-\r
- getParentElement : function(n, na, f) {\r
- if (na)\r
- na = new RegExp('^(' + na.toUpperCase().replace(/,/g, '|') + ')$', 'g');\r
-\r
- return this._getDOM().getParent(n, function(n) {\r
- return n.nodeType == 1 && (!na || na.test(n.nodeName)) && (!f || f(n));\r
- }, this.activeEditor.getBody());\r
- },\r
-\r
- importPluginLanguagePack : function(n) {\r
- tinymce.PluginManager.requireLangPack(n);\r
- },\r
-\r
- getButtonHTML : function(cn, lang, img, c, u, v) {\r
- var ed = EditorManager.activeEditor;\r
-\r
- img = img.replace(/\{\$pluginurl\}/g, tinyMCE.pluginURL);\r
- img = img.replace(/\{\$themeurl\}/g, tinyMCE.themeURL);\r
- lang = lang.replace(/^lang_/g, '');\r
-\r
- return ed.controlManager.createButton(cn, {\r
- title : lang,\r
- command : c,\r
- ui : u,\r
- value : v,\r
- scope : this,\r
- 'class' : 'compat',\r
- image : img\r
- });\r
- },\r
-\r
- addSelectAccessibility : function(e, s, w) {\r
- // Add event handlers \r
- if (!s._isAccessible) {\r
- s.onkeydown = tinyMCE.accessibleEventHandler;\r
- s.onblur = tinyMCE.accessibleEventHandler;\r
- s._isAccessible = true;\r
- s._win = w;\r
- }\r
-\r
- return false;\r
- },\r
-\r
- accessibleEventHandler : function(e) {\r
- var elm, win = this._win;\r
-\r
- e = tinymce.isIE ? win.event : e;\r
- elm = tinymce.isIE ? e.srcElement : e.target;\r
-\r
- // Unpiggyback onchange on blur\r
- if (e.type == "blur") {\r
- if (elm.oldonchange) {\r
- elm.onchange = elm.oldonchange;\r
- elm.oldonchange = null;\r
- }\r
-\r
- return true;\r
- }\r
-\r
- // Piggyback onchange\r
- if (elm.nodeName == "SELECT" && !elm.oldonchange) {\r
- elm.oldonchange = elm.onchange;\r
- elm.onchange = null;\r
- }\r
-\r
- // Execute onchange and remove piggyback\r
- if (e.keyCode == 13 || e.keyCode == 32) {\r
- elm.onchange = elm.oldonchange;\r
- elm.onchange();\r
- elm.oldonchange = null;\r
-\r
- tinyMCE.cancelEvent(e);\r
- return false;\r
- }\r
-\r
- return true;\r
- },\r
-\r
- cancelEvent : function(e) {\r
- return tinymce.dom.Event.cancel(e);\r
- },\r
-\r
- handleVisualAid : function(e) {\r
- EditorManager.activeEditor.addVisual(e);\r
- },\r
-\r
- getAbsPosition : function(n, r) {\r
- return tinymce.DOM.getPos(n, r);\r
- },\r
-\r
- cleanupEventStr : function(s) {\r
- s = "" + s;\r
- s = s.replace('function anonymous()\n{\n', '');\r
- s = s.replace('\n}', '');\r
- s = s.replace(/^return true;/gi, ''); // Remove event blocker\r
-\r
- return s;\r
- },\r
-\r
- getVisualAidClass : function(s) {\r
- // TODO: Implement\r
- return s;\r
- },\r
-\r
- parseStyle : function(s) {\r
- return this._getDOM().parseStyle(s);\r
- },\r
-\r
- serializeStyle : function(s) {\r
- return this._getDOM().serializeStyle(s);\r
- },\r
-\r
- openWindow : function(tpl, args) {\r
- var ed = EditorManager.activeEditor, o = {}, n;\r
-\r
- // Convert name/value array to object\r
- for (n in tpl)\r
- o[n] = tpl[n];\r
-\r
- tpl = o;\r
-\r
- args = args || {};\r
- tpl.url = new tinymce.util.URI(tinymce.ThemeManager.themeURLs[ed.settings.theme]).toAbsolute(tpl.file);\r
- tpl.inline = tpl.inline || args.inline;\r
-\r
- ed.windowManager.open(tpl, args);\r
- },\r
-\r
- closeWindow : function(win) {\r
- EditorManager.activeEditor.windowManager.close(win);\r
- },\r
-\r
- getOuterHTML : function(e) {\r
- return tinymce.DOM.getOuterHTML(e);\r
- },\r
-\r
- setOuterHTML : function(e, h, d) {\r
- return tinymce.DOM.setOuterHTML(e, h, d);\r
- },\r
-\r
- hasPlugin : function(n) {\r
- return tinymce.PluginManager.get(n) != null;\r
- },\r
-\r
- _setEventsEnabled : function() {\r
- // Ignore it!!\r
- },\r
-\r
- addPlugin : function(pn, f) {\r
- var t = this;\r
-\r
- function PluginWrapper(ed) {\r
- tinyMCE.selectedInstance = ed;\r
-\r
- ed.onInit.add(function() {\r
- t.settings = ed.settings;\r
- t.settings['base_href'] = tinyMCE.documentBasePath;\r
- tinyMCE.settings = t.settings;\r
- tinyMCE.documentBasePath = ed.documentBasePath;\r
- //ed.formElement = DOM.get(ed.id);\r
-\r
- if (f.initInstance)\r
- f.initInstance(ed);\r
-\r
- ed.contentDocument = ed.getDoc();\r
- ed.contentWindow = ed.getWin();\r
- ed.undoRedo = ed.undoManager;\r
- ed.startContent = ed.getContent({format : 'raw'});\r
-\r
- tinyMCE.instances[ed.id] = ed;\r
- tinyMCE.loadedFiles = [];\r
- });\r
-\r
- ed.onActivate.add(function() {\r
- tinyMCE.settings = ed.settings;\r
- tinyMCE.selectedInstance = ed;\r
- });\r
-\r
- /* if (f.removeInstance) {\r
- ed.onDestroy.add(function() {\r
- return f.removeInstance(ed.id);\r
- });\r
- }*/\r
-\r
- if (f.handleNodeChange) {\r
- ed.onNodeChange.add(function(ed, cm, n) {\r
- f.handleNodeChange(ed.id, n, 0, 0, false, !ed.selection.isCollapsed());\r
- });\r
- }\r
-\r
- if (f.onChange) {\r
- ed.onChange.add(function(ed, n) {\r
- return f.onChange(ed);\r
- });\r
- }\r
-\r
- if (f.cleanup) {\r
- ed.onGetContent.add(function() {\r
- //f.cleanup(type, content, inst);\r
- });\r
- }\r
-\r
- this.getInfo = function() {\r
- return f.getInfo();\r
- };\r
-\r
- this.createControl = function(n) {\r
- tinyMCE.pluginURL = tinymce.baseURL + '/plugins/' + pn;\r
- tinyMCE.themeURL = tinymce.baseURL + '/themes/' + tinyMCE.activeEditor.settings.theme;\r
-\r
- if (f.getControlHTML)\r
- return f.getControlHTML(n);\r
-\r
- return null;\r
- };\r
-\r
- this.execCommand = function(cmd, ui, val) {\r
- if (f.execCommand)\r
- return f.execCommand(ed.id, ed.getBody(), cmd, ui, val);\r
-\r
- return false;\r
- };\r
- };\r
-\r
- tinymce.PluginManager.add(pn, PluginWrapper);\r
- },\r
-\r
- _getDOM : function() {\r
- return tinyMCE.activeEditor ? tinyMCE.activeEditor.dom : tinymce.DOM;\r
- },\r
-\r
- convertRelativeToAbsoluteURL : function(b, u) {\r
- return new tinymce.util.URI(b).toAbsolute(u);\r
- },\r
-\r
- convertAbsoluteURLToRelativeURL : function(b, u) {\r
- return new tinymce.util.URI(b).toRelative(u);\r
- }\r
- });\r
-\r
- // Extend Editor class\r
- tinymce.extend(tinymce.Editor.prototype, {\r
- getFocusElement : function() {\r
- return this.selection.getNode();\r
- },\r
-\r
- getData : function(n) {\r
- if (!this.data)\r
- this.data = [];\r
-\r
- if (!this.data[n])\r
- this.data[n] = [];\r
-\r
- return this.data[n];\r
- },\r
-\r
- hasPlugin : function(n) {\r
- return this.plugins[n] != null;\r
- },\r
-\r
- getContainerWin : function() {\r
- return window;\r
- },\r
-\r
- getHTML : function(raw) {\r
- return this.getContent({ format : raw ? 'raw' : 'html'});\r
- },\r
-\r
- setHTML : function(h) {\r
- this.setContent(h);\r
- },\r
-\r
- getSel : function() {\r
- return this.selection.getSel();\r
- },\r
-\r
- getRng : function() {\r
- return this.selection.getRng();\r
- },\r
-\r
- isHidden : function() {\r
- var s;\r
-\r
- if (!tinymce.isGecko)\r
- return false;\r
-\r
- s = this.getSel();\r
-\r
- // Weird, wheres that cursor selection?\r
- return (!s || !s.rangeCount || s.rangeCount == 0);\r
- },\r
-\r
- translate : function(s) {\r
- var c = this.settings.language, o;\r
-\r
- if (!s)\r
- return s;\r
-\r
- o = tinymce.EditorManager.i18n[c + '.' + s] || s.replace(/{\#([^}]+)\}/g, function(a, b) {\r
- return tinymce.EditorManager.i18n[c + '.' + b] || '{#' + b + '}';\r
- });\r
-\r
- o = o.replace(/{\$lang_([^}]+)\}/g, function(a, b) {\r
- return tinymce.EditorManager.i18n[c + '.' + b] || '{$lang_' + b + '}';\r
- });\r
-\r
- return o;\r
- },\r
-\r
- repaint : function() {\r
- this.execCommand('mceRepaint');\r
- }\r
- });\r
-\r
- // Extend selection\r
- tinymce.extend(tinymce.dom.Selection.prototype, {\r
- getSelectedText : function() {\r
- return this.getContent({format : 'text'});\r
- },\r
-\r
- getSelectedHTML : function() {\r
- return this.getContent({format : 'html'});\r
- },\r
-\r
- getFocusElement : function() {\r
- return this.getNode();\r
- },\r
-\r
- selectNode : function(node, collapse, select_text_node, to_start) {\r
- var t = this;\r
-\r
- t.select(node, select_text_node || 0);\r
-\r
- if (!is(collapse))\r
- collapse = true;\r
-\r
- if (collapse) {\r
- if (!is(to_start))\r
- to_start = true;\r
-\r
- t.collapse(to_start);\r
- }\r
- }\r
- });\r
- }).call(this);\r
-\r
- // Register plugin\r
- tinymce.PluginManager.add('compat2x', tinymce.plugins.Compat2x);\r
-})();\r
-\r
+++ /dev/null
-(function(){var Event=tinymce.dom.Event,each=tinymce.each,DOM=tinymce.DOM;tinymce.create('tinymce.plugins.ContextMenu',{init:function(ed){var t=this;t.editor=ed;t.onContextMenu=new tinymce.util.Dispatcher(this);ed.onContextMenu.add(function(ed,e){if(!e.ctrlKey){t._getMenu(ed).showMenu(e.clientX,e.clientY);Event.add(ed.getDoc(),'click',hide);Event.cancel(e);}});function hide(){if(t._menu){t._menu.removeAll();t._menu.destroy();Event.remove(ed.getDoc(),'click',hide);}};ed.onMouseDown.add(hide);ed.onKeyDown.add(hide);},getInfo:function(){return{longname:'Contextmenu',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/contextmenu',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_getMenu:function(ed){var t=this,m=t._menu,se=ed.selection,col=se.isCollapsed(),el=se.getNode()||ed.getBody(),am,p1,p2;if(m){m.removeAll();m.destroy();}p1=DOM.getPos(ed.getContentAreaContainer());p2=DOM.getPos(ed.getContainer());m=ed.controlManager.createDropMenu('contextmenu',{offset_x:p1.x+ed.getParam('contextmenu_offset_x',0),offset_y:p1.y+ed.getParam('contextmenu_offset_y',0),constrain:1});t._menu=m;m.add({title:'advanced.cut_desc',icon:'cut',cmd:'Cut'}).setDisabled(col);m.add({title:'advanced.copy_desc',icon:'copy',cmd:'Copy'}).setDisabled(col);m.add({title:'advanced.paste_desc',icon:'paste',cmd:'Paste'});if((el.nodeName=='A'&&!ed.dom.getAttrib(el,'name'))||!col){m.addSeparator();m.add({title:'advanced.link_desc',icon:'link',cmd:ed.plugins.advlink?'mceAdvLink':'mceLink',ui:true});m.add({title:'advanced.unlink_desc',icon:'unlink',cmd:'UnLink'});}m.addSeparator();m.add({title:'advanced.image_desc',icon:'image',cmd:ed.plugins.advimage?'mceAdvImage':'mceImage',ui:true});m.addSeparator();am=m.addMenu({title:'contextmenu.align'});am.add({title:'contextmenu.left',icon:'justifyleft',cmd:'JustifyLeft'});am.add({title:'contextmenu.center',icon:'justifycenter',cmd:'JustifyCenter'});am.add({title:'contextmenu.right',icon:'justifyright',cmd:'JustifyRight'});am.add({title:'contextmenu.full',icon:'justifyfull',cmd:'JustifyFull'});t.onContextMenu.dispatch(t,m,el,col);return m;}});tinymce.PluginManager.add('contextmenu',tinymce.plugins.ContextMenu);})();
\ No newline at end of file
+++ /dev/null
-/**\r
- * $Id: editor_plugin_src.js 848 2008-05-15 11:54:40Z spocke $\r
- *\r
- * @author Moxiecode\r
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-(function() {\r
- var Event = tinymce.dom.Event, each = tinymce.each, DOM = tinymce.DOM;\r
-\r
- tinymce.create('tinymce.plugins.ContextMenu', {\r
- init : function(ed) {\r
- var t = this;\r
-\r
- t.editor = ed;\r
- t.onContextMenu = new tinymce.util.Dispatcher(this);\r
-\r
- ed.onContextMenu.add(function(ed, e) {\r
- if (!e.ctrlKey) {\r
- t._getMenu(ed).showMenu(e.clientX, e.clientY);\r
- Event.add(ed.getDoc(), 'click', hide);\r
- Event.cancel(e);\r
- }\r
- });\r
-\r
- function hide() {\r
- if (t._menu) {\r
- t._menu.removeAll();\r
- t._menu.destroy();\r
- Event.remove(ed.getDoc(), 'click', hide);\r
- }\r
- };\r
-\r
- ed.onMouseDown.add(hide);\r
- ed.onKeyDown.add(hide);\r
- },\r
-\r
- getInfo : function() {\r
- return {\r
- longname : 'Contextmenu',\r
- author : 'Moxiecode Systems AB',\r
- authorurl : 'http://tinymce.moxiecode.com',\r
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/contextmenu',\r
- version : tinymce.majorVersion + "." + tinymce.minorVersion\r
- };\r
- },\r
-\r
- _getMenu : function(ed) {\r
- var t = this, m = t._menu, se = ed.selection, col = se.isCollapsed(), el = se.getNode() || ed.getBody(), am, p1, p2;\r
-\r
- if (m) {\r
- m.removeAll();\r
- m.destroy();\r
- }\r
-\r
- p1 = DOM.getPos(ed.getContentAreaContainer());\r
- p2 = DOM.getPos(ed.getContainer());\r
-\r
- m = ed.controlManager.createDropMenu('contextmenu', {\r
- offset_x : p1.x + ed.getParam('contextmenu_offset_x', 0),\r
- offset_y : p1.y + ed.getParam('contextmenu_offset_y', 0),\r
- constrain : 1\r
- });\r
-\r
- t._menu = m;\r
-\r
- m.add({title : 'advanced.cut_desc', icon : 'cut', cmd : 'Cut'}).setDisabled(col);\r
- m.add({title : 'advanced.copy_desc', icon : 'copy', cmd : 'Copy'}).setDisabled(col);\r
- m.add({title : 'advanced.paste_desc', icon : 'paste', cmd : 'Paste'});\r
-\r
- if ((el.nodeName == 'A' && !ed.dom.getAttrib(el, 'name')) || !col) {\r
- m.addSeparator();\r
- m.add({title : 'advanced.link_desc', icon : 'link', cmd : ed.plugins.advlink ? 'mceAdvLink' : 'mceLink', ui : true});\r
- m.add({title : 'advanced.unlink_desc', icon : 'unlink', cmd : 'UnLink'});\r
- }\r
-\r
- m.addSeparator();\r
- m.add({title : 'advanced.image_desc', icon : 'image', cmd : ed.plugins.advimage ? 'mceAdvImage' : 'mceImage', ui : true});\r
-\r
- m.addSeparator();\r
- am = m.addMenu({title : 'contextmenu.align'});\r
- am.add({title : 'contextmenu.left', icon : 'justifyleft', cmd : 'JustifyLeft'});\r
- am.add({title : 'contextmenu.center', icon : 'justifycenter', cmd : 'JustifyCenter'});\r
- am.add({title : 'contextmenu.right', icon : 'justifyright', cmd : 'JustifyRight'});\r
- am.add({title : 'contextmenu.full', icon : 'justifyfull', cmd : 'JustifyFull'});\r
-\r
- t.onContextMenu.dispatch(t, m, el, col);\r
-\r
- return m;\r
- }\r
- });\r
-\r
- // Register plugin\r
- tinymce.PluginManager.add('contextmenu', tinymce.plugins.ContextMenu);\r
-})();
\ No newline at end of file
+++ /dev/null
-(function(){tinymce.create('tinymce.plugins.Directionality',{init:function(ed,url){var t=this;t.editor=ed;ed.addCommand('mceDirectionLTR',function(){var e=ed.dom.getParent(ed.selection.getNode(),ed.dom.isBlock);if(e){if(ed.dom.getAttrib(e,"dir")!="ltr")ed.dom.setAttrib(e,"dir","ltr");else ed.dom.setAttrib(e,"dir","");}ed.nodeChanged();});ed.addCommand('mceDirectionRTL',function(){var e=ed.dom.getParent(ed.selection.getNode(),ed.dom.isBlock);if(e){if(ed.dom.getAttrib(e,"dir")!="rtl")ed.dom.setAttrib(e,"dir","rtl");else ed.dom.setAttrib(e,"dir","");}ed.nodeChanged();});ed.addButton('ltr',{title:'directionality.ltr_desc',cmd:'mceDirectionLTR'});ed.addButton('rtl',{title:'directionality.rtl_desc',cmd:'mceDirectionRTL'});ed.onNodeChange.add(t._nodeChange,t);},getInfo:function(){return{longname:'Directionality',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/directionality',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_nodeChange:function(ed,cm,n){var dom=ed.dom,dir;n=dom.getParent(n,dom.isBlock);if(!n){cm.setDisabled('ltr',1);cm.setDisabled('rtl',1);return;}dir=dom.getAttrib(n,'dir');cm.setActive('ltr',dir=="ltr");cm.setDisabled('ltr',0);cm.setActive('rtl',dir=="rtl");cm.setDisabled('rtl',0);}});tinymce.PluginManager.add('directionality',tinymce.plugins.Directionality);})();
\ No newline at end of file
+++ /dev/null
-/**\r
- * $Id: editor_plugin_src.js 520 2008-01-07 16:30:32Z spocke $\r
- *\r
- * @author Moxiecode\r
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-(function() {\r
- tinymce.create('tinymce.plugins.Directionality', {\r
- init : function(ed, url) {\r
- var t = this;\r
-\r
- t.editor = ed;\r
-\r
- ed.addCommand('mceDirectionLTR', function() {\r
- var e = ed.dom.getParent(ed.selection.getNode(), ed.dom.isBlock);\r
-\r
- if (e) {\r
- if (ed.dom.getAttrib(e, "dir") != "ltr")\r
- ed.dom.setAttrib(e, "dir", "ltr");\r
- else\r
- ed.dom.setAttrib(e, "dir", "");\r
- }\r
-\r
- ed.nodeChanged();\r
- });\r
-\r
- ed.addCommand('mceDirectionRTL', function() {\r
- var e = ed.dom.getParent(ed.selection.getNode(), ed.dom.isBlock);\r
-\r
- if (e) {\r
- if (ed.dom.getAttrib(e, "dir") != "rtl")\r
- ed.dom.setAttrib(e, "dir", "rtl");\r
- else\r
- ed.dom.setAttrib(e, "dir", "");\r
- }\r
-\r
- ed.nodeChanged();\r
- });\r
-\r
- ed.addButton('ltr', {title : 'directionality.ltr_desc', cmd : 'mceDirectionLTR'});\r
- ed.addButton('rtl', {title : 'directionality.rtl_desc', cmd : 'mceDirectionRTL'});\r
-\r
- ed.onNodeChange.add(t._nodeChange, t);\r
- },\r
-\r
- getInfo : function() {\r
- return {\r
- longname : 'Directionality',\r
- author : 'Moxiecode Systems AB',\r
- authorurl : 'http://tinymce.moxiecode.com',\r
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/directionality',\r
- version : tinymce.majorVersion + "." + tinymce.minorVersion\r
- };\r
- },\r
-\r
- // Private methods\r
-\r
- _nodeChange : function(ed, cm, n) {\r
- var dom = ed.dom, dir;\r
-\r
- n = dom.getParent(n, dom.isBlock);\r
- if (!n) {\r
- cm.setDisabled('ltr', 1);\r
- cm.setDisabled('rtl', 1);\r
- return;\r
- }\r
-\r
- dir = dom.getAttrib(n, 'dir');\r
- cm.setActive('ltr', dir == "ltr");\r
- cm.setDisabled('ltr', 0);\r
- cm.setActive('rtl', dir == "rtl");\r
- cm.setDisabled('rtl', 0);\r
- }\r
- });\r
-\r
- // Register plugin\r
- tinymce.PluginManager.add('directionality', tinymce.plugins.Directionality);\r
-})();
\ No newline at end of file
+++ /dev/null
-(function(){tinymce.create('tinymce.plugins.EmotionsPlugin',{init:function(ed,url){ed.addCommand('mceEmotion',function(){ed.windowManager.open({file:url+'/emotions.htm',width:250+parseInt(ed.getLang('emotions.delta_width',0)),height:160+parseInt(ed.getLang('emotions.delta_height',0)),inline:1},{plugin_url:url});});ed.addButton('emotions',{title:'emotions.emotions_desc',cmd:'mceEmotion'});},getInfo:function(){return{longname:'Emotions',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/emotions',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('emotions',tinymce.plugins.EmotionsPlugin);})();
\ No newline at end of file
+++ /dev/null
-/**\r
- * $Id: editor_plugin_src.js 520 2008-01-07 16:30:32Z spocke $\r
- *\r
- * @author Moxiecode\r
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-(function() {\r
- tinymce.create('tinymce.plugins.EmotionsPlugin', {\r
- init : function(ed, url) {\r
- // Register commands\r
- ed.addCommand('mceEmotion', function() {\r
- ed.windowManager.open({\r
- file : url + '/emotions.htm',\r
- width : 250 + parseInt(ed.getLang('emotions.delta_width', 0)),\r
- height : 160 + parseInt(ed.getLang('emotions.delta_height', 0)),\r
- inline : 1\r
- }, {\r
- plugin_url : url\r
- });\r
- });\r
-\r
- // Register buttons\r
- ed.addButton('emotions', {title : 'emotions.emotions_desc', cmd : 'mceEmotion'});\r
- },\r
-\r
- getInfo : function() {\r
- return {\r
- longname : 'Emotions',\r
- author : 'Moxiecode Systems AB',\r
- authorurl : 'http://tinymce.moxiecode.com',\r
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/emotions',\r
- version : tinymce.majorVersion + "." + tinymce.minorVersion\r
- };\r
- }\r
- });\r
-\r
- // Register plugin\r
- tinymce.PluginManager.add('emotions', tinymce.plugins.EmotionsPlugin);\r
-})();
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
- <title>{#emotions_dlg.title}</title>\r
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
- <script type="text/javascript" src="js/emotions.js"></script>\r
- <base target="_self" />\r
-</head>\r
-<body style="display: none">\r
- <div align="center">\r
- <div class="title">{#emotions_dlg.title}:<br /><br /></div>\r
-\r
- <table border="0" cellspacing="0" cellpadding="4">\r
- <tr>\r
- <td><a href="javascript:EmotionsDialog.insert('smiley-cool.gif','emotions_dlg.cool');"><img src="img/smiley-cool.gif" width="18" height="18" border="0" alt="{#emotions_dlg.cool}" title="{#emotions_dlg.cool}" /></a></td>\r
- <td><a href="javascript:EmotionsDialog.insert('smiley-cry.gif','emotions_dlg.cry');"><img src="img/smiley-cry.gif" width="18" height="18" border="0" alt="{#emotions_dlg.cry}" title="{#emotions_dlg.cry}" /></a></td>\r
- <td><a href="javascript:EmotionsDialog.insert('smiley-embarassed.gif','emotions_dlg.embarassed');"><img src="img/smiley-embarassed.gif" width="18" height="18" border="0" alt="{#emotions_dlg.embarassed}" title="{#emotions_dlg.embarassed}" /></a></td>\r
- <td><a href="javascript:EmotionsDialog.insert('smiley-foot-in-mouth.gif','emotions_dlg.foot_in_mouth');"><img src="img/smiley-foot-in-mouth.gif" width="18" height="18" border="0" alt="{#emotions_dlg.foot_in_mouth}" title="{#emotions_dlg.foot_in_mouth}" /></a></td>\r
- </tr>\r
- <tr>\r
- <td><a href="javascript:EmotionsDialog.insert('smiley-frown.gif','emotions_dlg.frown');"><img src="img/smiley-frown.gif" width="18" height="18" border="0" alt="{#emotions_dlg.frown}" title="{#emotions_dlg.frown}" /></a></td>\r
- <td><a href="javascript:EmotionsDialog.insert('smiley-innocent.gif','emotions_dlg.innocent');"><img src="img/smiley-innocent.gif" width="18" height="18" border="0" alt="{#emotions_dlg.innocent}" title="{#emotions_dlg.innocent}" /></a></td>\r
- <td><a href="javascript:EmotionsDialog.insert('smiley-kiss.gif','emotions_dlg.kiss');"><img src="img/smiley-kiss.gif" width="18" height="18" border="0" alt="{#emotions_dlg.kiss}" title="{#emotions_dlg.kiss}" /></a></td>\r
- <td><a href="javascript:EmotionsDialog.insert('smiley-laughing.gif','emotions_dlg.laughing');"><img src="img/smiley-laughing.gif" width="18" height="18" border="0" alt="{#emotions_dlg.laughing}" title="{#emotions_dlg.laughing}" /></a></td>\r
- </tr>\r
- <tr>\r
- <td><a href="javascript:EmotionsDialog.insert('smiley-money-mouth.gif','emotions_dlg.money_mouth');"><img src="img/smiley-money-mouth.gif" width="18" height="18" border="0" alt="{#emotions_dlg.money_mouth}" title="{#emotions_dlg.money_mouth}" /></a></td>\r
- <td><a href="javascript:EmotionsDialog.insert('smiley-sealed.gif','emotions_dlg.sealed');"><img src="img/smiley-sealed.gif" width="18" height="18" border="0" alt="{#emotions_dlg.sealed}" title="{#emotions_dlg.sealed}" /></a></td>\r
- <td><a href="javascript:EmotionsDialog.insert('smiley-smile.gif','emotions_dlg.smile');"><img src="img/smiley-smile.gif" width="18" height="18" border="0" alt="{#emotions_dlg.smile}" title="{#emotions_dlg.smile}" /></a></td>\r
- <td><a href="javascript:EmotionsDialog.insert('smiley-surprised.gif','emotions_dlg.surprised');"><img src="img/smiley-surprised.gif" width="18" height="18" border="0" alt="{#emotions_dlg.surprised}" title="{#emotions_dlg.surprised}" /></a></td>\r
- </tr>\r
- <tr>\r
- <td><a href="javascript:EmotionsDialog.insert('smiley-tongue-out.gif','emotions_dlg.tongue_out');"><img src="img/smiley-tongue-out.gif" width="18" height="18" border="0" alt="{#emotions_dlg.tongue-out}" title="{#emotions_dlg.tongue_out}" /></a></td>\r
- <td><a href="javascript:EmotionsDialog.insert('smiley-undecided.gif','emotions_dlg.undecided');"><img src="img/smiley-undecided.gif" width="18" height="18" border="0" alt="{#emotions_dlg.undecided}" title="{#emotions_dlg.undecided}" /></a></td>\r
- <td><a href="javascript:EmotionsDialog.insert('smiley-wink.gif','emotions_dlg.wink');"><img src="img/smiley-wink.gif" width="18" height="18" border="0" alt="{#emotions_dlg.wink}" title="{#emotions_dlg.wink}" /></a></td>\r
- <td><a href="javascript:EmotionsDialog.insert('smiley-yell.gif','emotions_dlg.yell');"><img src="img/smiley-yell.gif" width="18" height="18" border="0" alt="{#emotions_dlg.yell}" title="{#emotions_dlg.yell}" /></a></td>\r
- </tr>\r
- </table>\r
- </div>\r
-</body>\r
-</html>\r
+++ /dev/null
-tinyMCEPopup.requireLangPack();\r
-\r
-var EmotionsDialog = {\r
- init : function(ed) {\r
- tinyMCEPopup.resizeToInnerSize();\r
- },\r
-\r
- insert : function(file, title) {\r
- var ed = tinyMCEPopup.editor, dom = ed.dom;\r
-\r
- tinyMCEPopup.execCommand('mceInsertContent', false, dom.createHTML('img', {\r
- src : tinyMCEPopup.getWindowArg('plugin_url') + '/img/' + file,\r
- alt : ed.getLang(title),\r
- title : ed.getLang(title),\r
- border : 0\r
- }));\r
-\r
- tinyMCEPopup.close();\r
- }\r
-};\r
-\r
-tinyMCEPopup.onInit.add(EmotionsDialog.init, EmotionsDialog);\r
+++ /dev/null
-tinyMCE.addI18n('en.emotions_dlg',{\r
-title:"Insert emotion",\r
-desc:"Emotions",\r
-cool:"Cool",\r
-cry:"Cry",\r
-embarassed:"Embarassed",\r
-foot_in_mouth:"Foot in mouth",\r
-frown:"Frown",\r
-innocent:"Innocent",\r
-kiss:"Kiss",\r
-laughing:"Laughing",\r
-money_mouth:"Money mouth",\r
-sealed:"Sealed",\r
-smile:"Smile",\r
-surprised:"Surprised",\r
-tongue_out:"Tongue out",\r
-undecided:"Undecided",\r
-wink:"Wink",\r
-yell:"Yell"\r
-});
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
- <title>{#example_dlg.title}</title>\r
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
- <script type="text/javascript" src="js/dialog.js"></script>\r
-</head>\r
-<body>\r
-\r
-<form onsubmit="ExampleDialog.insert();return false;" action="#">\r
- <p>Here is a example dialog.</p>\r
- <p>Selected text: <input id="someval" name="someval" type="text" class="text" /></p>\r
- <p>Custom arg: <input id="somearg" name="somearg" type="text" class="text" /></p>\r
-\r
- <div class="mceActionPanel">\r
- <div style="float: left">\r
- <input type="button" id="insert" name="insert" value="{#insert}" onclick="ExampleDialog.insert();" />\r
- </div>\r
-\r
- <div style="float: right">\r
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
- </div>\r
- </div>\r
-</form>\r
-\r
-</body>\r
-</html>\r
+++ /dev/null
-(function(){tinymce.PluginManager.requireLangPack('example');tinymce.create('tinymce.plugins.ExamplePlugin',{init:function(ed,url){ed.addCommand('mceExample',function(){ed.windowManager.open({file:url+'/dialog.htm',width:320+parseInt(ed.getLang('example.delta_width',0)),height:120+parseInt(ed.getLang('example.delta_height',0)),inline:1},{plugin_url:url,some_custom_arg:'custom arg'});});ed.addButton('example',{title:'example.desc',cmd:'mceExample',image:url+'/img/example.gif'});ed.onNodeChange.add(function(ed,cm,n){cm.setActive('example',n.nodeName=='IMG');});},createControl:function(n,cm){return null;},getInfo:function(){return{longname:'Example plugin',author:'Some author',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/example',version:"1.0"};}});tinymce.PluginManager.add('example',tinymce.plugins.ExamplePlugin);})();
\ No newline at end of file
+++ /dev/null
-/**\r
- * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $\r
- *\r
- * @author Moxiecode\r
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-(function() {\r
- // Load plugin specific language pack\r
- tinymce.PluginManager.requireLangPack('example');\r
-\r
- tinymce.create('tinymce.plugins.ExamplePlugin', {\r
- /**\r
- * Initializes the plugin, this will be executed after the plugin has been created.\r
- * This call is done before the editor instance has finished it's initialization so use the onInit event\r
- * of the editor instance to intercept that event.\r
- *\r
- * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in.\r
- * @param {string} url Absolute URL to where the plugin is located.\r
- */\r
- init : function(ed, url) {\r
- // Register the command so that it can be invoked by using tinyMCE.activeEditor.execCommand('mceExample');\r
- ed.addCommand('mceExample', function() {\r
- ed.windowManager.open({\r
- file : url + '/dialog.htm',\r
- width : 320 + parseInt(ed.getLang('example.delta_width', 0)),\r
- height : 120 + parseInt(ed.getLang('example.delta_height', 0)),\r
- inline : 1\r
- }, {\r
- plugin_url : url, // Plugin absolute URL\r
- some_custom_arg : 'custom arg' // Custom argument\r
- });\r
- });\r
-\r
- // Register example button\r
- ed.addButton('example', {\r
- title : 'example.desc',\r
- cmd : 'mceExample',\r
- image : url + '/img/example.gif'\r
- });\r
-\r
- // Add a node change handler, selects the button in the UI when a image is selected\r
- ed.onNodeChange.add(function(ed, cm, n) {\r
- cm.setActive('example', n.nodeName == 'IMG');\r
- });\r
- },\r
-\r
- /**\r
- * Creates control instances based in the incomming name. This method is normally not\r
- * needed since the addButton method of the tinymce.Editor class is a more easy way of adding buttons\r
- * but you sometimes need to create more complex controls like listboxes, split buttons etc then this\r
- * method can be used to create those.\r
- *\r
- * @param {String} n Name of the control to create.\r
- * @param {tinymce.ControlManager} cm Control manager to use inorder to create new control.\r
- * @return {tinymce.ui.Control} New control instance or null if no control was created.\r
- */\r
- createControl : function(n, cm) {\r
- return null;\r
- },\r
-\r
- /**\r
- * Returns information about the plugin as a name/value array.\r
- * The current keys are longname, author, authorurl, infourl and version.\r
- *\r
- * @return {Object} Name/value array containing information about the plugin.\r
- */\r
- getInfo : function() {\r
- return {\r
- longname : 'Example plugin',\r
- author : 'Some author',\r
- authorurl : 'http://tinymce.moxiecode.com',\r
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/example',\r
- version : "1.0"\r
- };\r
- }\r
- });\r
-\r
- // Register plugin\r
- tinymce.PluginManager.add('example', tinymce.plugins.ExamplePlugin);\r
-})();
\ No newline at end of file
+++ /dev/null
-tinyMCEPopup.requireLangPack();\r
-\r
-var ExampleDialog = {\r
- init : function() {\r
- var f = document.forms[0];\r
-\r
- // Get the selected contents as text and place it in the input\r
- f.someval.value = tinyMCEPopup.editor.selection.getContent({format : 'text'});\r
- f.somearg.value = tinyMCEPopup.getWindowArg('some_custom_arg');\r
- },\r
-\r
- insert : function() {\r
- // Insert the contents from the input into the document\r
- tinyMCEPopup.editor.execCommand('mceInsertContent', false, document.forms[0].someval.value);\r
- tinyMCEPopup.close();\r
- }\r
-};\r
-\r
-tinyMCEPopup.onInit.add(ExampleDialog.init, ExampleDialog);\r
+++ /dev/null
-tinyMCE.addI18n('en.example',{\r
- desc : 'This is just a template button'\r
-});\r
+++ /dev/null
-tinyMCE.addI18n('en.example_dlg',{\r
- title : 'This is just a example title'\r
-});\r
+++ /dev/null
-/* Hide the advanced tab */\r
-#advanced_tab {\r
- display: none;\r
-}\r
-\r
-#metatitle, #metakeywords, #metadescription, #metaauthor, #metacopyright {\r
- width: 280px;\r
-}\r
-\r
-#doctype, #docencoding {\r
- width: 200px;\r
-}\r
-\r
-#langcode {\r
- width: 30px;\r
-}\r
-\r
-#bgimage {\r
- width: 220px; \r
-}\r
-\r
-#fontface {\r
- width: 240px;\r
-}\r
-\r
-#leftmargin, #rightmargin, #topmargin, #bottommargin {\r
- width: 50px;\r
-}\r
-\r
-.panel_wrapper div.current {\r
- height: 400px;\r
-}\r
-\r
-#stylesheet, #style {\r
- width: 240px;\r
-}\r
-\r
-/* Head list classes */\r
-\r
-.headlistwrapper {\r
- width: 100%;\r
-}\r
-\r
-.addbutton, .removebutton, .moveupbutton, .movedownbutton {\r
- border-top: 1px solid;\r
- border-left: 1px solid;\r
- border-bottom: 1px solid;\r
- border-right: 1px solid;\r
- border-color: #F0F0EE;\r
- cursor: default;\r
- display: block;\r
- width: 20px;\r
- height: 20px;\r
-}\r
-\r
-#doctypes {\r
- width: 200px;\r
-}\r
-\r
-.addbutton:hover, .removebutton:hover, .moveupbutton:hover, .movedownbutton:hover {\r
- border: 1px solid #0A246A;\r
- background-color: #B6BDD2;\r
-}\r
-\r
-.addbutton {\r
- background-image: url('../images/add.gif');\r
- float: left;\r
- margin-right: 3px;\r
-}\r
-\r
-.removebutton {\r
- background-image: url('../images/remove.gif');\r
- float: left;\r
-}\r
-\r
-.moveupbutton {\r
- background-image: url('../images/move_up.gif');\r
- float: left;\r
- margin-right: 3px;\r
-}\r
-\r
-.movedownbutton {\r
- background-image: url('../images/move_down.gif');\r
- float: left;\r
-}\r
-\r
-.selected {\r
- border: 1px solid #0A246A;\r
- background-color: #B6BDD2;\r
-}\r
-\r
-.toolbar {\r
- width: 100%;\r
-}\r
-\r
-#headlist {\r
- width: 100%;\r
- margin-top: 3px;\r
- font-size: 11px;\r
-}\r
-\r
-#info, #title_element, #meta_element, #script_element, #style_element, #base_element, #link_element, #comment_element, #unknown_element {\r
- display: none;\r
-}\r
-\r
-#addmenu {\r
- position: absolute;\r
- border: 1px solid gray;\r
- display: none;\r
- z-index: 100;\r
- background-color: white;\r
-}\r
-\r
-#addmenu a {\r
- display: block;\r
- width: 100%;\r
- line-height: 20px;\r
- text-decoration: none;\r
- background-color: white;\r
-}\r
-\r
-#addmenu a:hover {\r
- background-color: #B6BDD2;\r
- color: black;\r
-}\r
-\r
-#addmenu span {\r
- padding-left: 10px;\r
- padding-right: 10px;\r
-}\r
-\r
-#updateElementPanel {\r
- display: none;\r
-}\r
-\r
-#script_element .panel_wrapper div.current {\r
- height: 108px;\r
-}\r
-\r
-#style_element .panel_wrapper div.current {\r
- height: 108px;\r
-}\r
-\r
-#link_element .panel_wrapper div.current {\r
- height: 140px;\r
-}\r
-\r
-#element_script_value {\r
- width: 100%;\r
- height: 100px;\r
-}\r
-\r
-#element_comment_value {\r
- width: 100%;\r
- height: 120px;\r
-}\r
-\r
-#element_style_value {\r
- width: 100%;\r
- height: 100px;\r
-}\r
-\r
-#element_title, #element_script_src, #element_meta_name, #element_meta_content, #element_base_href, #element_link_href, #element_link_title {\r
- width: 250px;\r
-}\r
-\r
-.updateElementButton {\r
- margin-top: 3px;\r
-}\r
-\r
-/* MSIE specific styles */\r
-\r
-* html .addbutton, * html .removebutton, * html .moveupbutton, * html .movedownbutton {\r
- width: 22px;\r
- height: 22px;\r
-}\r
-\r
-textarea {\r
- height: 55px;\r
-}\r
-\r
-.panel_wrapper div.current {height:420px;}
\ No newline at end of file
+++ /dev/null
-(function(){tinymce.create('tinymce.plugins.FullPagePlugin',{init:function(ed,url){var t=this;t.editor=ed;ed.addCommand('mceFullPageProperties',function(){ed.windowManager.open({file:url+'/fullpage.htm',width:430+parseInt(ed.getLang('fullpage.delta_width',0)),height:495+parseInt(ed.getLang('fullpage.delta_height',0)),inline:1},{plugin_url:url,head_html:t.head});});ed.addButton('fullpage',{title:'fullpage.desc',cmd:'mceFullPageProperties'});ed.onBeforeSetContent.add(t._setContent,t);ed.onSetContent.add(t._setBodyAttribs,t);ed.onGetContent.add(t._getContent,t);},getInfo:function(){return{longname:'Fullpage',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullpage',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_setBodyAttribs:function(ed,o){var bdattr,i,len,kv,k,v,t,attr=this.head.match(/body(.*?)>/i);if(attr&&attr[1]){bdattr=attr[1].match(/\s*(\w+\s*=\s*".*?"|\w+\s*=\s*'.*?'|\w+\s*=\s*\w+|\w+)\s*/g);for(i=0,len=bdattr.length;i<len;i++){kv=bdattr[i].split('=');k=kv[0].replace(/\s/,'');v=kv[1];if(v){v=v.replace(/^\s+/,'').replace(/\s+$/,'');t=v.match(/^["'](.*)["']$/);if(t)v=t[1];}else v=k;ed.dom.setAttrib(ed.getBody(),'style',v);}}},_createSerializer:function(){return new tinymce.dom.Serializer({dom:this.editor.dom,apply_source_formatting:true});},_setContent:function(ed,o){var t=this,sp,ep,c=o.content,v,st='';c=c.replace(/<(\/?)BODY/gi,'<$1body');sp=c.indexOf('<body');if(sp!=-1){sp=c.indexOf('>',sp);t.head=c.substring(0,sp+1);ep=c.indexOf('</body',sp);if(ep==-1)ep=c.indexOf('</body',ep);o.content=c.substring(sp+1,ep);t.foot=c.substring(ep);function low(s){return s.replace(/<\/?[A-Z]+/g,function(a){return a.toLowerCase();})};t.head=low(t.head);t.foot=low(t.foot);}else{t.head='';if(ed.getParam('fullpage_default_xml_pi'))t.head+='<?xml version="1.0" encoding="'+ed.getParam('fullpage_default_encoding','ISO-8859-1')+'" ?>\n';t.head+=ed.getParam('fullpage_default_doctype','<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">');t.head+='\n<html>\n<head>\n<title>'+ed.getParam('fullpage_default_title','Untitled document')+'</title>\n';if(v=ed.getParam('fullpage_default_encoding'))t.head+='<meta http-equiv="Content-Type" content="'+v+'" />\n';if(v=ed.getParam('fullpage_default_font_family'))st+='font-family: '+v+';';if(v=ed.getParam('fullpage_default_font_size'))st+='font-size: '+v+';';if(v=ed.getParam('fullpage_default_text_color'))st+='color: '+v+';';t.head+='</head>\n<body'+(st?' style="'+st+'"':'')+'>\n';t.foot='\n</body>\n</html>';}},_getContent:function(ed,o){var t=this;o.content=tinymce.trim(t.head)+'\n'+tinymce.trim(o.content)+'\n'+tinymce.trim(t.foot);}});tinymce.PluginManager.add('fullpage',tinymce.plugins.FullPagePlugin);})();
\ No newline at end of file
+++ /dev/null
-/**\r
- * $Id: editor_plugin_src.js 827 2008-04-29 15:02:42Z spocke $\r
- *\r
- * @author Moxiecode\r
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-(function() {\r
- tinymce.create('tinymce.plugins.FullPagePlugin', {\r
- init : function(ed, url) {\r
- var t = this;\r
-\r
- t.editor = ed;\r
-\r
- // Register commands\r
- ed.addCommand('mceFullPageProperties', function() {\r
- ed.windowManager.open({\r
- file : url + '/fullpage.htm',\r
- width : 430 + parseInt(ed.getLang('fullpage.delta_width', 0)),\r
- height : 495 + parseInt(ed.getLang('fullpage.delta_height', 0)),\r
- inline : 1\r
- }, {\r
- plugin_url : url,\r
- head_html : t.head\r
- });\r
- });\r
-\r
- // Register buttons\r
- ed.addButton('fullpage', {title : 'fullpage.desc', cmd : 'mceFullPageProperties'});\r
-\r
- ed.onBeforeSetContent.add(t._setContent, t);\r
- ed.onSetContent.add(t._setBodyAttribs, t);\r
- ed.onGetContent.add(t._getContent, t);\r
- },\r
-\r
- getInfo : function() {\r
- return {\r
- longname : 'Fullpage',\r
- author : 'Moxiecode Systems AB',\r
- authorurl : 'http://tinymce.moxiecode.com',\r
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullpage',\r
- version : tinymce.majorVersion + "." + tinymce.minorVersion\r
- };\r
- },\r
-\r
- // Private plugin internal methods\r
-\r
- _setBodyAttribs : function(ed, o) {\r
- var bdattr, i, len, kv, k, v, t, attr = this.head.match(/body(.*?)>/i);\r
-\r
- if (attr && attr[1]) {\r
- bdattr = attr[1].match(/\s*(\w+\s*=\s*".*?"|\w+\s*=\s*'.*?'|\w+\s*=\s*\w+|\w+)\s*/g);\r
-\r
- for(i = 0, len = bdattr.length; i < len; i++) {\r
- kv = bdattr[i].split('=');\r
- k = kv[0].replace(/\s/,'');\r
- v = kv[1];\r
-\r
- if (v) {\r
- v = v.replace(/^\s+/,'').replace(/\s+$/,'');\r
- t = v.match(/^["'](.*)["']$/);\r
-\r
- if (t)\r
- v = t[1];\r
- } else\r
- v = k;\r
-\r
- ed.dom.setAttrib(ed.getBody(), 'style', v);\r
- }\r
- }\r
- },\r
-\r
- _createSerializer : function() {\r
- return new tinymce.dom.Serializer({\r
- dom : this.editor.dom,\r
- apply_source_formatting : true\r
- });\r
- },\r
-\r
- _setContent : function(ed, o) {\r
- var t = this, sp, ep, c = o.content, v, st = '';\r
-\r
- // Parse out head, body and footer\r
- c = c.replace(/<(\/?)BODY/gi, '<$1body');\r
- sp = c.indexOf('<body');\r
-\r
- if (sp != -1) {\r
- sp = c.indexOf('>', sp);\r
- t.head = c.substring(0, sp + 1);\r
-\r
- ep = c.indexOf('</body', sp);\r
- if (ep == -1)\r
- ep = c.indexOf('</body', ep);\r
-\r
- o.content = c.substring(sp + 1, ep);\r
- t.foot = c.substring(ep);\r
-\r
- function low(s) {\r
- return s.replace(/<\/?[A-Z]+/g, function(a) {\r
- return a.toLowerCase();\r
- })\r
- };\r
-\r
- t.head = low(t.head);\r
- t.foot = low(t.foot);\r
- } else {\r
- t.head = '';\r
- if (ed.getParam('fullpage_default_xml_pi'))\r
- t.head += '<?xml version="1.0" encoding="' + ed.getParam('fullpage_default_encoding', 'ISO-8859-1') + '" ?>\n';\r
-\r
- t.head += ed.getParam('fullpage_default_doctype', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">');\r
- t.head += '\n<html>\n<head>\n<title>' + ed.getParam('fullpage_default_title', 'Untitled document') + '</title>\n';\r
-\r
- if (v = ed.getParam('fullpage_default_encoding'))\r
- t.head += '<meta http-equiv="Content-Type" content="' + v + '" />\n';\r
-\r
- if (v = ed.getParam('fullpage_default_font_family'))\r
- st += 'font-family: ' + v + ';';\r
-\r
- if (v = ed.getParam('fullpage_default_font_size'))\r
- st += 'font-size: ' + v + ';';\r
-\r
- if (v = ed.getParam('fullpage_default_text_color'))\r
- st += 'color: ' + v + ';';\r
-\r
- t.head += '</head>\n<body' + (st ? ' style="' + st + '"' : '') + '>\n';\r
- t.foot = '\n</body>\n</html>';\r
- }\r
- },\r
-\r
- _getContent : function(ed, o) {\r
- var t = this;\r
-\r
- o.content = tinymce.trim(t.head) + '\n' + tinymce.trim(o.content) + '\n' + tinymce.trim(t.foot);\r
- }\r
- });\r
-\r
- // Register plugin\r
- tinymce.PluginManager.add('fullpage', tinymce.plugins.FullPagePlugin);\r
-})();
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
- <title>{#fullpage_dlg.title}</title>\r
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
- <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
- <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
- <script type="text/javascript" src="js/fullpage.js"></script>\r
- <link href="css/fullpage.css" rel="stylesheet" type="text/css" />\r
- <base target="_self" />\r
-</head>\r
-<body id="advlink" style="display: none">\r
- <form onsubmit="updateAction();return false;" name="fullpage" action="#">\r
- <div class="tabs">\r
- <ul>\r
- <li id="meta_tab" class="current"><span><a href="javascript:mcTabs.displayTab('meta_tab','meta_panel');" onmousedown="return false;">{#fullpage_dlg.meta_tab}</a></span></li>\r
- <li id="appearance_tab"><span><a href="javascript:mcTabs.displayTab('appearance_tab','appearance_panel');" onmousedown="return false;">{#fullpage_dlg.appearance_tab}</a></span></li>\r
- <li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#fullpage_dlg.advanced_tab}</a></span></li>\r
- </ul>\r
- </div>\r
-\r
- <div class="panel_wrapper">\r
- <div id="meta_panel" class="panel current">\r
- <fieldset>\r
- <legend>{#fullpage_dlg.meta_props}</legend>\r
-\r
- <table border="0" cellpadding="4" cellspacing="0">\r
- <tr>\r
- <td nowrap="nowrap"><label for="metatitle">{#fullpage_dlg.meta_title}</label> </td>\r
- <td><input type="text" id="metatitle" name="metatitle" value="" class="mceFocus" /></td>\r
- </tr>\r
- <tr>\r
- <td nowrap="nowrap"><label for="metakeywords">{#fullpage_dlg.meta_keywords}</label> </td>\r
- <td><textarea id="metakeywords" name="metakeywords" rows="4"></textarea></td>\r
- </tr>\r
- <tr>\r
- <td nowrap="nowrap"><label for="metadescription">{#fullpage_dlg.meta_description}</label> </td>\r
- <td><textarea id="metadescription" name="metadescription" rows="4"></textarea></td>\r
- </tr>\r
- <tr>\r
- <td nowrap="nowrap"><label for="metaauthor">{#fullpage_dlg.author}</label> </td>\r
- <td><input type="text" id="metaauthor" name="metaauthor" value="" /></td>\r
- </tr>\r
- <tr>\r
- <td nowrap="nowrap"><label for="metacopyright">{#fullpage_dlg.copyright}</label> </td>\r
- <td><input type="text" id="metacopyright" name="metacopyright" value="" /></td>\r
- </tr>\r
- <tr>\r
- <td nowrap="nowrap"><label for="metarobots">{#fullpage_dlg.meta_robots}</label> </td>\r
- <td>\r
- <select id="metarobots" name="metarobots">\r
- <option value="">{#not_set}</option> \r
- <option value="index,follow">{#fullpage_dlg.meta_index_follow}</option>\r
- <option value="index,nofollow">{#fullpage_dlg.meta_index_nofollow}</option>\r
- <option value="noindex,follow">{#fullpage_dlg.meta_noindex_follow}</option>\r
- <option value="noindex,nofollow">{#fullpage_dlg.meta_noindex_nofollow}</option>\r
- </select>\r
- </td>\r
- </tr>\r
- </table>\r
- </fieldset>\r
-\r
- <fieldset>\r
- <legend>{#fullpage_dlg.langprops}</legend>\r
-\r
- <table border="0" cellpadding="4" cellspacing="0">\r
- <tr>\r
- <td class="column1"><label for="docencoding">{#fullpage_dlg.encoding}</label></td> \r
- <td>\r
- <select id="docencoding" name="docencoding"> \r
- <option value="">{#not_set}</option>\r
- </select>\r
- </td> \r
- </tr>\r
- <tr>\r
- <td nowrap="nowrap"><label for="doctypes">{#fullpage_dlg.doctypes}</label> </td>\r
- <td>\r
- <select id="doctypes" name="doctypes">\r
- <option value="">{#not_set}</option>\r
- </select>\r
- </td>\r
- </tr>\r
- <tr>\r
- <td nowrap="nowrap"><label for="langcode">{#fullpage_dlg.langcode}</label> </td>\r
- <td><input type="text" id="langcode" name="langcode" value="" /></td>\r
- </tr>\r
- <tr>\r
- <td class="column1"><label for="langdir">{#fullpage_dlg.langdir}</label></td> \r
- <td>\r
- <select id="langdir" name="langdir"> \r
- <option value="">{#not_set}</option> \r
- <option value="ltr">{#fullpage_dlg.ltr}</option> \r
- <option value="rtl">{#fullpage_dlg.rtl}</option> \r
- </select>\r
- </td> \r
- </tr>\r
- <tr>\r
- <td nowrap="nowrap"><label for="xml_pi">{#fullpage_dlg.xml_pi}</label> </td>\r
- <td><input type="checkbox" id="xml_pi" name="xml_pi" class="checkbox" /></td>\r
- </tr>\r
- </table>\r
- </fieldset>\r
- </div>\r
-\r
- <div id="appearance_panel" class="panel">\r
- <fieldset>\r
- <legend>{#fullpage_dlg.appearance_textprops}</legend>\r
-\r
- <table border="0" cellpadding="4" cellspacing="0">\r
- <tr>\r
- <td class="column1"><label for="fontface">{#fullpage_dlg.fontface}</label></td> \r
- <td>\r
- <select id="fontface" name="fontface" onchange="changedStyleField(this);">\r
- <option value="">{#not_set}</option>\r
- </select>\r
- </td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="column1"><label for="fontsize">{#fullpage_dlg.fontsize}</label></td> \r
- <td>\r
- <select id="fontsize" name="fontsize" onchange="changedStyleField(this);">\r
- <option value="">{#not_set}</option>\r
- </select>\r
- </td>\r
- </tr>\r
-\r
- <tr>\r
- <td class="column1"><label for="textcolor">{#fullpage_dlg.textcolor}</label></td> \r
- <td>\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input id="textcolor" name="textcolor" type="text" value="" size="9" onchange="updateColor('textcolor_pick','textcolor');changedStyleField(this);" /></td>\r
- <td id="textcolor_pickcontainer"> </td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
- </table>\r
- </fieldset>\r
-\r
- <fieldset>\r
- <legend>{#fullpage_dlg.appearance_bgprops}</legend>\r
-\r
- <table border="0" cellpadding="4" cellspacing="0">\r
- <tr>\r
- <td class="column1"><label for="bgimage">{#fullpage_dlg.bgimage}</label></td> \r
- <td>\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input id="bgimage" name="bgimage" type="text" value="" onchange="changedStyleField(this);" /></td>\r
- <td id="bgimage_pickcontainer"> </td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
- <tr>\r
- <td class="column1"><label for="bgcolor">{#fullpage_dlg.bgcolor}</label></td> \r
- <td>\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');changedStyleField(this);" /></td>\r
- <td id="bgcolor_pickcontainer"> </td>\r
- </tr>\r
- </table>\r
- </td> \r
- </tr>\r
- </table>\r
- </fieldset>\r
-\r
- <fieldset>\r
- <legend>{#fullpage_dlg.appearance_marginprops}</legend>\r
-\r
- <table border="0" cellpadding="4" cellspacing="0">\r
- <tr>\r
- <td class="column1"><label for="leftmargin">{#fullpage_dlg.left_margin}</label></td> \r
- <td><input id="leftmargin" name="leftmargin" type="text" value="" onchange="changedStyleField(this);" /></td>\r
- <td class="column1"><label for="rightmargin">{#fullpage_dlg.right_margin}</label></td> \r
- <td><input id="rightmargin" name="rightmargin" type="text" value="" onchange="changedStyleField(this);" /></td>\r
- </tr>\r
- <tr>\r
- <td class="column1"><label for="topmargin">{#fullpage_dlg.top_margin}</label></td> \r
- <td><input id="topmargin" name="topmargin" type="text" value="" onchange="changedStyleField(this);" /></td>\r
- <td class="column1"><label for="bottommargin">{#fullpage_dlg.bottom_margin}</label></td> \r
- <td><input id="bottommargin" name="bottommargin" type="text" value="" onchange="changedStyleField(this);" /></td>\r
- </tr>\r
- </table>\r
- </fieldset>\r
-\r
- <fieldset>\r
- <legend>{#fullpage_dlg.appearance_linkprops}</legend>\r
-\r
- <table border="0" cellpadding="4" cellspacing="0">\r
- <tr>\r
- <td class="column1"><label for="link_color">{#fullpage_dlg.link_color}</label></td> \r
- <td>\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input id="link_color" name="link_color" type="text" value="" size="9" onchange="updateColor('link_color_pick','link_color');changedStyleField(this);" /></td>\r
- <td id="link_color_pickcontainer"> </td>\r
- </tr>\r
- </table>\r
- </td>\r
-\r
- <td class="column1"><label for="visited_color">{#fullpage_dlg.visited_color}</label></td> \r
- <td>\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input id="visited_color" name="visited_color" type="text" value="" size="9" onchange="updateColor('visited_color_pick','visited_color');changedStyleField(this);" /></td>\r
- <td id="visited_color_pickcontainer"> </td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
-\r
- <tr>\r
- <td class="column1"><label for="active_color">{#fullpage_dlg.active_color}</label></td> \r
- <td>\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input id="active_color" name="active_color" type="text" value="" size="9" onchange="updateColor('active_color_pick','active_color');changedStyleField(this);" /></td>\r
- <td id="active_color_pickcontainer"> </td>\r
- </tr>\r
- </table>\r
- </td>\r
-\r
- <td> </td>\r
- <td> </td>\r
-\r
-<!-- <td class="column1"><label for="hover_color">{#fullpage_dlg.hover_color}</label></td> \r
- <td>\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input id="hover_color" name="hover_color" type="text" value="" size="9" onchange="changedStyleField(this);" /></td>\r
- <td id="hover_color_pickcontainer"> </td>\r
- </tr>\r
- </table>\r
- </td> -->\r
- </tr>\r
- </table>\r
- </fieldset>\r
-\r
- <fieldset>\r
- <legend>{#fullpage_dlg.appearance_style}</legend>\r
-\r
- <table border="0" cellpadding="4" cellspacing="0">\r
- <tr>\r
- <td class="column1"><label for="stylesheet">{#fullpage_dlg.stylesheet}</label></td> \r
- <td><table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input id="stylesheet" name="stylesheet" type="text" value="" /></td>\r
- <td id="stylesheet_browsercontainer"> </td>\r
- </tr>\r
- </table></td>\r
- </tr>\r
- <tr>\r
- <td class="column1"><label for="style">{#fullpage_dlg.style}</label></td> \r
- <td><input id="style" name="style" type="text" value="" onchange="changedStyleField(this);" /></td>\r
- </tr>\r
- </table>\r
- </fieldset>\r
- </div>\r
-\r
- <div id="advanced_panel" class="panel">\r
- <div id="addmenu">\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr><td><a href="javascript:addHeadElm('title');" onmousedown="return false;"><span>{#fullpage_dlg.add_title}</span></a></td></tr>\r
- <tr><td><a href="javascript:addHeadElm('meta');" onmousedown="return false;"><span>{#fullpage_dlg.add_meta}</span></a></td></tr>\r
- <tr><td><a href="javascript:addHeadElm('script');" onmousedown="return false;"><span>{#fullpage_dlg.add_script}</span></a></td></tr>\r
- <tr><td><a href="javascript:addHeadElm('style');" onmousedown="return false;"><span>{#fullpage_dlg.add_style}</span></a></td></tr>\r
- <tr><td><a href="javascript:addHeadElm('link');" onmousedown="return false;"><span>{#fullpage_dlg.add_link}</span></a></td></tr>\r
- <tr><td><a href="javascript:addHeadElm('base');" onmousedown="return false;"><span>{#fullpage_dlg.add_base}</span></a></td></tr>\r
- <tr><td><a href="javascript:addHeadElm('comment');" onmousedown="return false;"><span>{#fullpage_dlg.add_comment}</span></a></td></tr>\r
- </table>\r
- </div>\r
-\r
- <fieldset>\r
- <legend>{#fullpage_dlg.head_elements}</legend>\r
-\r
- <div class="headlistwrapper">\r
- <div class="toolbar">\r
- <div style="float: left">\r
- <a id="addbutton" href="javascript:showAddMenu();" onmousedown="return false;" class="addbutton" title="{#fullpage_dlg.add}"></a>\r
- <a href="#" onmousedown="return false;" class="removebutton" title="{#fullpage_dlg.remove}"></a>\r
- </div>\r
- <div style="float: right">\r
- <a href="#" onmousedown="return false;" class="moveupbutton" title="{#fullpage_dlg.moveup}"></a>\r
- <a href="#" onmousedown="return false;" class="movedownbutton" title="{#fullpage_dlg.movedown}"></a>\r
- </div>\r
- <br style="clear: both" />\r
- </div>\r
- <select id="headlist" size="26" onchange="updateHeadElm(this.options[this.selectedIndex].value);">\r
- <option value="title_0"><title>Some title bla bla bla</title></option>\r
- <option value="meta_1"><meta name="keywords">Some bla bla bla</meta></option>\r
- <option value="meta_2"><meta name="description">Some bla bla bla bla bla bla bla bla bla</meta></option>\r
- <option value="script_3"><script language="javascript">...</script></option>\r
- <option value="style_4"><style>...</style></option>\r
- <option value="base_5"><base href="." /></option>\r
- <option value="comment_6"><!-- ... --></option>\r
- <option value="link_7"><link href="." /></option>\r
- </select>\r
- </div>\r
- </fieldset>\r
-\r
- <fieldset id="meta_element">\r
- <legend>{#fullpage_dlg.meta_element}</legend>\r
-\r
- <table border="0" cellpadding="4" cellspacing="0">\r
- <tr>\r
- <td class="column1"><label for="element_meta_type">{#fullpage_dlg.type}</label></td> \r
- <td><select id="element_meta_type">\r
- <option value="name">name</option>\r
- <option value="http-equiv">http-equiv</option>\r
- </select></td>\r
- </tr>\r
- <tr>\r
- <td class="column1"><label for="element_meta_name">{#fullpage_dlg.name}</label></td> \r
- <td><input id="element_meta_name" name="element_meta_name" type="text" value="" /></td>\r
- </tr>\r
- <tr>\r
- <td class="column1"><label for="element_meta_content">{#fullpage_dlg.content}</label></td> \r
- <td><input id="element_meta_content" name="element_meta_content" type="text" value="" /></td>\r
- </tr>\r
- </table>\r
-\r
- <input type="button" id="meta_updateelement" class="updateElementButton" name="update" value="{#update}" onclick="updateElement();" />\r
- </fieldset>\r
-\r
- <fieldset id="title_element">\r
- <legend>{#fullpage_dlg.title_element}</legend>\r
-\r
- <table border="0" cellpadding="4" cellspacing="0">\r
- <tr>\r
- <td class="column1"><label for="element_title">{#fullpage_dlg.meta_title}</label></td> \r
- <td><input id="element_title" name="element_title" type="text" value="" /></td>\r
- </tr>\r
- </table>\r
-\r
- <input type="button" id="title_updateelement" class="updateElementButton" name="update" value="{#update}" onclick="updateElement();" />\r
- </fieldset>\r
-\r
- <fieldset id="script_element">\r
- <legend>{#fullpage_dlg.script_element}</legend>\r
-\r
- <div class="tabs">\r
- <ul>\r
- <li id="script_props_tab" class="current"><span><a href="javascript:mcTabs.displayTab('script_props_tab','script_props_panel');" onmousedown="return false;">{#fullpage_dlg.properties}</a></span></li>\r
- <li id="script_value_tab"><span><a href="javascript:mcTabs.displayTab('script_value_tab','script_value_panel');" onmousedown="return false;">{#fullpage_dlg.value}</a></span></li>\r
- </ul>\r
- </div>\r
-\r
- <br style="clear: both" />\r
-\r
- <div class="panel_wrapper">\r
- <div id="script_props_panel" class="panel current">\r
- <table border="0" cellpadding="4" cellspacing="0">\r
- <tr>\r
- <td class="column1"><label for="element_script_type">{#fullpage_dlg.type}</label></td> \r
- <td><select id="element_script_type">\r
- <option value="text/javascript">text/javascript</option>\r
- <option value="text/jscript">text/jscript</option>\r
- <option value="text/vbscript">text/vbscript</option>\r
- <option value="text/vbs">text/vbs</option>\r
- <option value="text/ecmascript">text/ecmascript</option>\r
- <option value="text/xml">text/xml</option>\r
- </select></td>\r
- </tr>\r
- <tr>\r
- <td class="column1"><label for="element_script_src">{#fullpage_dlg.src}</label></td> \r
- <td><table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input id="element_script_src" name="element_script_src" type="text" value="" /></td>\r
- <td id="script_src_pickcontainer"> </td>\r
- </tr>\r
- </table></td>\r
- </tr>\r
- <tr>\r
- <td class="column1"><label for="element_script_charset">{#fullpage_dlg.charset}</label></td> \r
- <td><select id="element_script_charset"><option value="">{#not_set}</option></select></td>\r
- </tr>\r
- <tr>\r
- <td class="column1"><label for="element_script_defer">{#fullpage_dlg.defer}</label></td> \r
- <td><input type="checkbox" id="element_script_defer" name="element_script_defer" class="checkbox" /></td>\r
- </tr>\r
- </table>\r
- </div>\r
-\r
- <div id="script_value_panel" class="panel">\r
- <textarea id="element_script_value"></textarea>\r
- </div>\r
- </div>\r
-\r
- <input type="button" id="script_updateelement" class="updateElementButton" name="update" value="{#update}" onclick="updateElement();" />\r
- </fieldset>\r
-\r
- <fieldset id="style_element">\r
- <legend>{#fullpage_dlg.style_element}</legend>\r
-\r
- <div class="tabs">\r
- <ul>\r
- <li id="style_props_tab" class="current"><span><a href="javascript:mcTabs.displayTab('style_props_tab','style_props_panel');" onmousedown="return false;">{#fullpage_dlg.properties}</a></span></li>\r
- <li id="style_value_tab"><span><a href="javascript:mcTabs.displayTab('style_value_tab','style_value_panel');" onmousedown="return false;">{#fullpage_dlg.value}</a></span></li>\r
- </ul>\r
- </div>\r
-\r
- <br style="clear: both" />\r
-\r
- <div class="panel_wrapper">\r
- <div id="style_props_panel" class="panel current">\r
- <table border="0" cellpadding="4" cellspacing="0">\r
- <tr>\r
- <td class="column1"><label for="element_style_type">{#fullpage_dlg.type}</label></td> \r
- <td><select id="element_style_type">\r
- <option value="text/css">text/css</option>\r
- </select></td>\r
- </tr>\r
- <tr>\r
- <td class="column1"><label for="element_style_media">{#fullpage_dlg.media}</label></td> \r
- <td><select id="element_style_media"></select></td>\r
- </tr>\r
- </table>\r
- </div>\r
-\r
- <div id="style_value_panel" class="panel">\r
- <textarea id="element_style_value"></textarea>\r
- </div>\r
- </div>\r
-\r
- <input type="button" id="style_updateelement" class="updateElementButton" name="update" value="{#update}" onclick="updateElement();" />\r
- </fieldset>\r
-\r
- <fieldset id="base_element">\r
- <legend>{#fullpage_dlg.base_element}</legend>\r
-\r
- <table border="0" cellpadding="4" cellspacing="0">\r
- <tr>\r
- <td class="column1"><label for="element_base_href">{#fullpage_dlg.href}</label></td> \r
- <td><input id="element_base_href" name="element_base_href" type="text" value="" /></td>\r
- </tr>\r
- <tr>\r
- <td class="column1"><label for="element_base_target">{#fullpage_dlg.target}</label></td> \r
- <td><input id="element_base_target" name="element_base_target" type="text" value="" /></td>\r
- </tr>\r
- </table>\r
-\r
- <input type="button" id="base_updateelement" class="updateElementButton" name="update" value="{#update}" onclick="updateElement();" />\r
- </fieldset>\r
-\r
- <fieldset id="link_element">\r
- <legend>{#fullpage_dlg.link_element}</legend>\r
-\r
- <div class="tabs">\r
- <ul>\r
- <li id="link_general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('link_general_tab','link_general_panel');" onmousedown="return false;">{#fullpage_dlg.general_props}</a></span></li>\r
- <li id="link_advanced_tab"><span><a href="javascript:mcTabs.displayTab('link_advanced_tab','link_advanced_panel');" onmousedown="return false;">{#fullpage_dlg.advanced_props}</a></span></li>\r
- </ul>\r
- </div>\r
-\r
- <br style="clear: both" />\r
-\r
- <div class="panel_wrapper">\r
- <div id="link_general_panel" class="panel current">\r
- <table border="0" cellpadding="4" cellspacing="0">\r
- <tr>\r
- <td class="column1"><label for="element_link_href">{#fullpage_dlg.href}</label></td> \r
- <td><table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input id="element_link_href" name="element_link_href" type="text" value="" /></td>\r
- <td id="link_href_pickcontainer"> </td>\r
- </tr>\r
- </table></td>\r
- </tr>\r
- <tr>\r
- <td class="column1"><label for="element_link_title">{#fullpage_dlg.meta_title}</label></td> \r
- <td><input id="element_link_title" name="element_link_title" type="text" value="" /></td>\r
- </tr>\r
- <tr>\r
- <td class="column1"><label for="element_link_type">{#fullpage_dlg.type}</label></td> \r
- <td><select id="element_link_type" name="element_link_type">\r
- <option value="text/css">text/css</option>\r
- <option value="text/javascript">text/javascript</option>\r
- </select></td>\r
- </tr>\r
- <tr>\r
- <td class="column1"><label for="element_link_media">{#fullpage_dlg.media}</label></td> \r
- <td><select id="element_link_media" name="element_link_media"></select></td>\r
- </tr>\r
- <tr>\r
- <td><label for="element_style_rel">{#fullpage_dlg.rel}</label></td>\r
- <td><select id="element_style_rel" name="element_style_rel"> \r
- <option value="">{#not_set}</option> \r
- <option value="stylesheet">Stylesheet</option>\r
- <option value="alternate">Alternate</option>\r
- <option value="designates">Designates</option>\r
- <option value="start">Start</option>\r
- <option value="next">Next</option>\r
- <option value="prev">Prev</option>\r
- <option value="contents">Contents</option>\r
- <option value="index">Index</option>\r
- <option value="glossary">Glossary</option>\r
- <option value="copyright">Copyright</option>\r
- <option value="chapter">Chapter</option>\r
- <option value="subsection">Subsection</option>\r
- <option value="appendix">Appendix</option>\r
- <option value="help">Help</option>\r
- <option value="bookmark">Bookmark</option>\r
- </select> \r
- </td>\r
- </tr>\r
- </table>\r
- </div>\r
-\r
- <div id="link_advanced_panel" class="panel">\r
- <table border="0" cellpadding="4" cellspacing="0">\r
- <tr>\r
- <td class="column1"><label for="element_link_charset">{#fullpage_dlg.charset}</label></td> \r
- <td><select id="element_link_charset"><option value="">{#not_set}</option></select></td>\r
- </tr>\r
- <tr>\r
- <td class="column1"><label for="element_link_hreflang">{#fullpage_dlg.hreflang}</label></td> \r
- <td><input id="element_link_hreflang" name="element_link_hreflang" type="text" value="" /></td>\r
- </tr>\r
- <tr>\r
- <td class="column1"><label for="element_link_target">{#fullpage_dlg.target}</label></td> \r
- <td><input id="element_link_target" name="element_link_target" type="text" value="" /></td>\r
- </tr>\r
- <tr>\r
- <td><label for="element_style_rev">{#fullpage_dlg.rev}</label></td>\r
- <td><select id="element_style_rev" name="element_style_rev"> \r
- <option value="">{#not_set}</option> \r
- <option value="alternate">Alternate</option> \r
- <option value="designates">Designates</option> \r
- <option value="stylesheet">Stylesheet</option> \r
- <option value="start">Start</option> \r
- <option value="next">Next</option> \r
- <option value="prev">Prev</option> \r
- <option value="contents">Contents</option> \r
- <option value="index">Index</option> \r
- <option value="glossary">Glossary</option> \r
- <option value="copyright">Copyright</option> \r
- <option value="chapter">Chapter</option> \r
- <option value="subsection">Subsection</option> \r
- <option value="appendix">Appendix</option> \r
- <option value="help">Help</option> \r
- <option value="bookmark">Bookmark</option> \r
- </select> \r
- </td>\r
- </tr>\r
- </table>\r
- </div>\r
- </div>\r
-\r
- <input type="button" id="link_updateelement" class="updateElementButton" name="update" value="{#update}" onclick="updateElement();" />\r
- </fieldset>\r
-\r
- <fieldset id="comment_element">\r
- <legend>{#fullpage_dlg.comment_element}</legend>\r
-\r
- <textarea id="element_comment_value"></textarea>\r
-\r
- <input type="button" id="comment_updateelement" class="updateElementButton" name="update" value="{#update}" onclick="updateElement();" />\r
- </fieldset>\r
- </div>\r
- </div>\r
-\r
- <div class="mceActionPanel">\r
- <div style="float: left">\r
- <input type="submit" id="insert" name="update" value="{#update}" />\r
- </div>\r
-\r
- <div style="float: right">\r
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
- </div>\r
- </div>\r
- </form>\r
-</body>\r
-</html>\r
+++ /dev/null
-tinyMCEPopup.requireLangPack();\r
-\r
-var doc;\r
-\r
-var defaultDocTypes = \r
- 'XHTML 1.0 Transitional=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">,' +\r
- 'XHTML 1.0 Frameset=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">,' +\r
- 'XHTML 1.0 Strict=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">,' +\r
- 'XHTML 1.1=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">,' +\r
- 'HTML 4.01 Transitional=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">,' +\r
- 'HTML 4.01 Strict=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">,' +\r
- 'HTML 4.01 Frameset=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">';\r
-\r
-var defaultEncodings = \r
- 'Western european (iso-8859-1)=iso-8859-1,' +\r
- 'Central European (iso-8859-2)=iso-8859-2,' +\r
- 'Unicode (UTF-8)=utf-8,' +\r
- 'Chinese traditional (Big5)=big5,' +\r
- 'Cyrillic (iso-8859-5)=iso-8859-5,' +\r
- 'Japanese (iso-2022-jp)=iso-2022-jp,' +\r
- 'Greek (iso-8859-7)=iso-8859-7,' +\r
- 'Korean (iso-2022-kr)=iso-2022-kr,' +\r
- 'ASCII (us-ascii)=us-ascii';\r
-\r
-var defaultMediaTypes = \r
- 'all=all,' +\r
- 'screen=screen,' +\r
- 'print=print,' +\r
- 'tty=tty,' +\r
- 'tv=tv,' +\r
- 'projection=projection,' +\r
- 'handheld=handheld,' +\r
- 'braille=braille,' +\r
- 'aural=aural';\r
-\r
-var defaultFontNames = 'Arial=arial,helvetica,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,times new roman,times,serif;Tahoma=tahoma,arial,helvetica,sans-serif;Times New Roman=times new roman,times,serif;Verdana=verdana,arial,helvetica,sans-serif;Impact=impact;WingDings=wingdings';\r
-var defaultFontSizes = '10px,11px,12px,13px,14px,15px,16px';\r
-\r
-function init() {\r
- var f = document.forms['fullpage'], el = f.elements, e, i, p, doctypes, encodings, mediaTypes, fonts, ed = tinyMCEPopup.editor, dom = tinyMCEPopup.dom, style;\r
-\r
- // Setup doctype select box\r
- doctypes = ed.getParam("fullpage_doctypes", defaultDocTypes).split(',');\r
- for (i=0; i<doctypes.length; i++) {\r
- p = doctypes[i].split('=');\r
-\r
- if (p.length > 1)\r
- addSelectValue(f, 'doctypes', p[0], p[1]);\r
- }\r
-\r
- // Setup fonts select box\r
- fonts = ed.getParam("fullpage_fonts", defaultFontNames).split(';');\r
- for (i=0; i<fonts.length; i++) {\r
- p = fonts[i].split('=');\r
-\r
- if (p.length > 1)\r
- addSelectValue(f, 'fontface', p[0], p[1]);\r
- }\r
-\r
- // Setup fontsize select box\r
- fonts = ed.getParam("fullpage_fontsizes", defaultFontSizes).split(',');\r
- for (i=0; i<fonts.length; i++)\r
- addSelectValue(f, 'fontsize', fonts[i], fonts[i]);\r
-\r
- // Setup mediatype select boxs\r
- mediaTypes = ed.getParam("fullpage_media_types", defaultMediaTypes).split(',');\r
- for (i=0; i<mediaTypes.length; i++) {\r
- p = mediaTypes[i].split('=');\r
-\r
- if (p.length > 1) {\r
- addSelectValue(f, 'element_style_media', p[0], p[1]);\r
- addSelectValue(f, 'element_link_media', p[0], p[1]);\r
- }\r
- }\r
-\r
- // Setup encodings select box\r
- encodings = ed.getParam("fullpage_encodings", defaultEncodings).split(',');\r
- for (i=0; i<encodings.length; i++) {\r
- p = encodings[i].split('=');\r
-\r
- if (p.length > 1) {\r
- addSelectValue(f, 'docencoding', p[0], p[1]);\r
- addSelectValue(f, 'element_script_charset', p[0], p[1]);\r
- addSelectValue(f, 'element_link_charset', p[0], p[1]);\r
- }\r
- }\r
-\r
- document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');\r
- document.getElementById('link_color_pickcontainer').innerHTML = getColorPickerHTML('link_color_pick','link_color');\r
- //document.getElementById('hover_color_pickcontainer').innerHTML = getColorPickerHTML('hover_color_pick','hover_color');\r
- document.getElementById('visited_color_pickcontainer').innerHTML = getColorPickerHTML('visited_color_pick','visited_color');\r
- document.getElementById('active_color_pickcontainer').innerHTML = getColorPickerHTML('active_color_pick','active_color');\r
- document.getElementById('textcolor_pickcontainer').innerHTML = getColorPickerHTML('textcolor_pick','textcolor');\r
- document.getElementById('stylesheet_browsercontainer').innerHTML = getBrowserHTML('stylesheetbrowser','stylesheet','file','fullpage');\r
- document.getElementById('link_href_pickcontainer').innerHTML = getBrowserHTML('link_href_browser','element_link_href','file','fullpage');\r
- document.getElementById('script_src_pickcontainer').innerHTML = getBrowserHTML('script_src_browser','element_script_src','file','fullpage');\r
- document.getElementById('bgimage_pickcontainer').innerHTML = getBrowserHTML('bgimage_browser','bgimage','image','fullpage');\r
-\r
- // Resize some elements\r
- if (isVisible('stylesheetbrowser'))\r
- document.getElementById('stylesheet').style.width = '220px';\r
-\r
- if (isVisible('link_href_browser'))\r
- document.getElementById('element_link_href').style.width = '230px';\r
-\r
- if (isVisible('bgimage_browser'))\r
- document.getElementById('bgimage').style.width = '210px';\r
-\r
- // Add iframe\r
- dom.add(document.body, 'iframe', {id : 'documentIframe', src : 'javascript:""', style : {display : 'none'}});\r
- doc = dom.get('documentIframe').contentWindow.document;\r
- h = tinyMCEPopup.getWindowArg('head_html');\r
-\r
- // Preprocess the HTML disable scripts and urls\r
- h = h.replace(/<script>/gi, '<script type="text/javascript">');\r
- h = h.replace(/type=([\"\'])?/gi, 'type=$1-mce-');\r
- h = h.replace(/(src=|href=)/g, 'mce_$1');\r
-\r
- // Write in the content in the iframe\r
- doc.write(h + '</body></html>');\r
- doc.close();\r
-\r
- // Parse xml and doctype\r
- xmlVer = getReItem(/<\?\s*?xml.*?version\s*?=\s*?"(.*?)".*?\?>/gi, h, 1);\r
- xmlEnc = getReItem(/<\?\s*?xml.*?encoding\s*?=\s*?"(.*?)".*?\?>/gi, h, 1);\r
- docType = getReItem(/<\!DOCTYPE.*?>/gi, h, 0);\r
- f.langcode.value = getReItem(/lang="(.*?)"/gi, h, 1);\r
-\r
- // Parse title\r
- if (e = doc.getElementsByTagName('title')[0])\r
- el.metatitle.value = e.textContent || e.text;\r
-\r
- // Parse meta\r
- tinymce.each(doc.getElementsByTagName('meta'), function(n) {\r
- var na = (n.getAttribute('name', 2) || '').toLowerCase(), va = n.getAttribute('content', 2), eq = n.getAttribute('httpEquiv', 2) || '';\r
-\r
- e = el['meta' + na];\r
-\r
- if (na == 'robots') {\r
- selectByValue(f, 'metarobots', tinymce.trim(va), true, true);\r
- return;\r
- }\r
-\r
- switch (eq.toLowerCase()) {\r
- case "content-type":\r
- tmp = getReItem(/charset\s*=\s*(.*)\s*/gi, va, 1);\r
-\r
- // Override XML encoding\r
- if (tmp != "")\r
- xmlEnc = tmp;\r
-\r
- return;\r
- }\r
-\r
- if (e)\r
- e.value = va;\r
- });\r
-\r
- selectByValue(f, 'doctypes', docType, true, true);\r
- selectByValue(f, 'docencoding', xmlEnc, true, true);\r
- selectByValue(f, 'langdir', doc.body.getAttribute('dir', 2) || '', true, true);\r
-\r
- if (xmlVer != '')\r
- el.xml_pi.checked = true;\r
-\r
- // Parse appearance\r
-\r
- // Parse primary stylesheet\r
- tinymce.each(doc.getElementsByTagName("link"), function(l) {\r
- var m = l.getAttribute('media', 2) || '', t = l.getAttribute('type', 2) || '';\r
-\r
- if (t == "-mce-text/css" && (m == "" || m == "screen" || m == "all") && (l.getAttribute('rel', 2) || '') == "stylesheet") {\r
- f.stylesheet.value = l.getAttribute('mce_href', 2) || '';\r
- return false;\r
- }\r
- });\r
-\r
- // Get from style elements\r
- tinymce.each(doc.getElementsByTagName("style"), function(st) {\r
- var tmp = parseStyleElement(st);\r
-\r
- for (x=0; x<tmp.length; x++) {\r
- if (tmp[x].rule.indexOf('a:visited') != -1 && tmp[x].data['color'])\r
- f.visited_color.value = tmp[x].data['color'];\r
-\r
- if (tmp[x].rule.indexOf('a:link') != -1 && tmp[x].data['color'])\r
- f.link_color.value = tmp[x].data['color'];\r
-\r
- if (tmp[x].rule.indexOf('a:active') != -1 && tmp[x].data['color'])\r
- f.active_color.value = tmp[x].data['color'];\r
- }\r
- });\r
-\r
- f.textcolor.value = tinyMCEPopup.dom.getAttrib(doc.body, "text");\r
- f.active_color.value = tinyMCEPopup.dom.getAttrib(doc.body, "alink");\r
- f.link_color.value = tinyMCEPopup.dom.getAttrib(doc.body, "link");\r
- f.visited_color.value = tinyMCEPopup.dom.getAttrib(doc.body, "vlink");\r
- f.bgcolor.value = tinyMCEPopup.dom.getAttrib(doc.body, "bgcolor");\r
- f.bgimage.value = tinyMCEPopup.dom.getAttrib(doc.body, "background");\r
-\r
- // Get from style info\r
- style = tinyMCEPopup.dom.parseStyle(tinyMCEPopup.dom.getAttrib(doc.body, 'style'));\r
-\r
- if (style['font-family'])\r
- selectByValue(f, 'fontface', style['font-family'], true, true);\r
- else\r
- selectByValue(f, 'fontface', ed.getParam("fullpage_default_fontface", ""), true, true);\r
-\r
- if (style['font-size'])\r
- selectByValue(f, 'fontsize', style['font-size'], true, true);\r
- else\r
- selectByValue(f, 'fontsize', ed.getParam("fullpage_default_fontsize", ""), true, true);\r
-\r
- if (style['color'])\r
- f.textcolor.value = convertRGBToHex(style['color']);\r
-\r
- if (style['background-image'])\r
- f.bgimage.value = style['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");\r
-\r
- if (style['background-color'])\r
- f.bgcolor.value = style['background-color'];\r
-\r
- if (style['margin']) {\r
- tmp = style['margin'].replace(/[^0-9 ]/g, '');\r
- tmp = tmp.split(/ +/);\r
- f.topmargin.value = tmp.length > 0 ? tmp[0] : '';\r
- f.rightmargin.value = tmp.length > 1 ? tmp[1] : tmp[0];\r
- f.bottommargin.value = tmp.length > 2 ? tmp[2] : tmp[0];\r
- f.leftmargin.value = tmp.length > 3 ? tmp[3] : tmp[0];\r
- }\r
-\r
- if (style['margin-left'])\r
- f.leftmargin.value = style['margin-left'].replace(/[^0-9]/g, '');\r
-\r
- if (style['margin-right'])\r
- f.rightmargin.value = style['margin-right'].replace(/[^0-9]/g, '');\r
-\r
- if (style['margin-top'])\r
- f.topmargin.value = style['margin-top'].replace(/[^0-9]/g, '');\r
-\r
- if (style['margin-bottom'])\r
- f.bottommargin.value = style['margin-bottom'].replace(/[^0-9]/g, '');\r
-\r
- f.style.value = tinyMCEPopup.dom.serializeStyle(style);\r
-\r
- // Update colors\r
- updateColor('textcolor_pick', 'textcolor');\r
- updateColor('bgcolor_pick', 'bgcolor');\r
- updateColor('visited_color_pick', 'visited_color');\r
- updateColor('active_color_pick', 'active_color');\r
- updateColor('link_color_pick', 'link_color');\r
-}\r
-\r
-function getReItem(r, s, i) {\r
- var c = r.exec(s);\r
-\r
- if (c && c.length > i)\r
- return c[i];\r
-\r
- return '';\r
-}\r
-\r
-function updateAction() {\r
- var f = document.forms[0], nl, i, h, v, s, head, html, l, tmp, addlink = true, ser;\r
-\r
- head = doc.getElementsByTagName('head')[0];\r
-\r
- // Fix scripts without a type\r
- nl = doc.getElementsByTagName('script');\r
- for (i=0; i<nl.length; i++) {\r
- if (tinyMCEPopup.dom.getAttrib(nl[i], 'mce_type') == '')\r
- nl[i].setAttribute('mce_type', 'text/javascript');\r
- }\r
-\r
- // Get primary stylesheet\r
- nl = doc.getElementsByTagName("link");\r
- for (i=0; i<nl.length; i++) {\r
- l = nl[i];\r
-\r
- tmp = tinyMCEPopup.dom.getAttrib(l, 'media');\r
-\r
- if (tinyMCEPopup.dom.getAttrib(l, 'mce_type') == "text/css" && (tmp == "" || tmp == "screen" || tmp == "all") && tinyMCEPopup.dom.getAttrib(l, 'rel') == "stylesheet") {\r
- addlink = false;\r
-\r
- if (f.stylesheet.value == '')\r
- l.parentNode.removeChild(l);\r
- else\r
- l.setAttribute('mce_href', f.stylesheet.value);\r
-\r
- break;\r
- }\r
- }\r
-\r
- // Add new link\r
- if (f.stylesheet.value != '') {\r
- l = doc.createElement('link');\r
-\r
- l.setAttribute('type', 'text/css');\r
- l.setAttribute('mce_href', f.stylesheet.value);\r
- l.setAttribute('rel', 'stylesheet');\r
-\r
- head.appendChild(l);\r
- }\r
-\r
- setMeta(head, 'keywords', f.metakeywords.value);\r
- setMeta(head, 'description', f.metadescription.value);\r
- setMeta(head, 'author', f.metaauthor.value);\r
- setMeta(head, 'copyright', f.metacopyright.value);\r
- setMeta(head, 'robots', getSelectValue(f, 'metarobots'));\r
- setMeta(head, 'Content-Type', getSelectValue(f, 'docencoding'));\r
-\r
- doc.body.dir = getSelectValue(f, 'langdir');\r
- doc.body.style.cssText = f.style.value;\r
-\r
- doc.body.setAttribute('vLink', f.visited_color.value);\r
- doc.body.setAttribute('link', f.link_color.value);\r
- doc.body.setAttribute('text', f.textcolor.value);\r
- doc.body.setAttribute('aLink', f.active_color.value);\r
-\r
- doc.body.style.fontFamily = getSelectValue(f, 'fontface');\r
- doc.body.style.fontSize = getSelectValue(f, 'fontsize');\r
- doc.body.style.backgroundColor = f.bgcolor.value;\r
-\r
- if (f.leftmargin.value != '')\r
- doc.body.style.marginLeft = f.leftmargin.value + 'px';\r
-\r
- if (f.rightmargin.value != '')\r
- doc.body.style.marginRight = f.rightmargin.value + 'px';\r
-\r
- if (f.bottommargin.value != '')\r
- doc.body.style.marginBottom = f.bottommargin.value + 'px';\r
-\r
- if (f.topmargin.value != '')\r
- doc.body.style.marginTop = f.topmargin.value + 'px';\r
-\r
- html = doc.getElementsByTagName('html')[0];\r
- html.setAttribute('lang', f.langcode.value);\r
- html.setAttribute('xml:lang', f.langcode.value);\r
-\r
- if (f.bgimage.value != '')\r
- doc.body.style.backgroundImage = "url('" + f.bgimage.value + "')";\r
- else\r
- doc.body.style.backgroundImage = '';\r
-\r
- ser = tinyMCEPopup.editor.plugins.fullpage._createSerializer();\r
- ser.setRules('-title,meta[http-equiv|name|content],base[href|target],link[href|rel|type|title|media],style[type],script[type|language|src],html[lang|xml::lang|xmlns],body[style|dir|vlink|link|text|alink],head');\r
-\r
- h = ser.serialize(doc.documentElement);\r
- h = h.substring(0, h.lastIndexOf('</body>'));\r
-\r
- if (h.indexOf('<title>') == -1)\r
- h = h.replace(/<head.*?>/, '$&\n' + '<title>' + tinyMCEPopup.dom.encode(f.metatitle.value) + '</title>');\r
- else\r
- h = h.replace(/<title>(.*?)<\/title>/, '<title>' + tinyMCEPopup.dom.encode(f.metatitle.value) + '</title>');\r
-\r
- if ((v = getSelectValue(f, 'doctypes')) != '')\r
- h = v + '\n' + h;\r
-\r
- if (f.xml_pi.checked) {\r
- s = '<?xml version="1.0"';\r
-\r
- if ((v = getSelectValue(f, 'docencoding')) != '')\r
- s += ' encoding="' + v + '"';\r
-\r
- s += '?>\n';\r
- h = s + h;\r
- }\r
-\r
- h = h.replace(/type=\"\-mce\-/gi, 'type="');\r
-\r
- tinyMCEPopup.editor.plugins.fullpage.head = h;\r
- tinyMCEPopup.editor.plugins.fullpage._setBodyAttribs(tinyMCEPopup.editor, {});\r
- tinyMCEPopup.close();\r
-}\r
-\r
-function changedStyleField(field) {\r
-}\r
-\r
-function setMeta(he, k, v) {\r
- var nl, i, m;\r
-\r
- nl = he.getElementsByTagName('meta');\r
- for (i=0; i<nl.length; i++) {\r
- if (k == 'Content-Type' && tinyMCEPopup.dom.getAttrib(nl[i], 'http-equiv') == k) {\r
- if (v == '')\r
- nl[i].parentNode.removeChild(nl[i]);\r
- else\r
- nl[i].setAttribute('content', "text/html; charset=" + v);\r
-\r
- return;\r
- }\r
-\r
- if (tinyMCEPopup.dom.getAttrib(nl[i], 'name') == k) {\r
- if (v == '')\r
- nl[i].parentNode.removeChild(nl[i]);\r
- else\r
- nl[i].setAttribute('content', v);\r
- return;\r
- }\r
- }\r
-\r
- if (v == '')\r
- return;\r
-\r
- m = doc.createElement('meta');\r
-\r
- if (k == 'Content-Type')\r
- m.httpEquiv = k;\r
- else\r
- m.setAttribute('name', k);\r
-\r
- m.setAttribute('content', v);\r
- he.appendChild(m);\r
-}\r
-\r
-function parseStyleElement(e) {\r
- var v = e.innerHTML;\r
- var p, i, r;\r
-\r
- v = v.replace(/<!--/gi, '');\r
- v = v.replace(/-->/gi, '');\r
- v = v.replace(/[\n\r]/gi, '');\r
- v = v.replace(/\s+/gi, ' ');\r
-\r
- r = [];\r
- p = v.split(/{|}/);\r
-\r
- for (i=0; i<p.length; i+=2) {\r
- if (p[i] != "")\r
- r[r.length] = {rule : tinymce.trim(p[i]), data : tinyMCEPopup.dom.parseStyle(p[i+1])};\r
- }\r
-\r
- return r;\r
-}\r
-\r
-function serializeStyleElement(d) {\r
- var i, s, st;\r
-\r
- s = '<!--\n';\r
-\r
- for (i=0; i<d.length; i++) {\r
- s += d[i].rule + ' {\n';\r
-\r
- st = tinyMCE.serializeStyle(d[i].data);\r
-\r
- if (st != '')\r
- st += ';';\r
-\r
- s += st.replace(/;/g, ';\n');\r
- s += '}\n';\r
-\r
- if (i != d.length - 1)\r
- s += '\n';\r
- }\r
-\r
- s += '\n-->';\r
-\r
- return s;\r
-}\r
-\r
-tinyMCEPopup.onInit.add(init);\r
+++ /dev/null
-tinyMCE.addI18n('en.fullpage_dlg',{\r
-title:"Document properties",\r
-meta_tab:"General",\r
-appearance_tab:"Appearance",\r
-advanced_tab:"Advanced",\r
-meta_props:"Meta information",\r
-langprops:"Language and encoding",\r
-meta_title:"Title",\r
-meta_keywords:"Keywords",\r
-meta_description:"Description",\r
-meta_robots:"Robots",\r
-doctypes:"Doctype",\r
-langcode:"Language code",\r
-langdir:"Language direction",\r
-ltr:"Left to right",\r
-rtl:"Right to left",\r
-xml_pi:"XML declaration",\r
-encoding:"Character encoding",\r
-appearance_bgprops:"Background properties",\r
-appearance_marginprops:"Body margins",\r
-appearance_linkprops:"Link colors",\r
-appearance_textprops:"Text properties",\r
-bgcolor:"Background color",\r
-bgimage:"Background image",\r
-left_margin:"Left margin",\r
-right_margin:"Right margin",\r
-top_margin:"Top margin",\r
-bottom_margin:"Bottom margin",\r
-text_color:"Text color",\r
-font_size:"Font size",\r
-font_face:"Font face",\r
-link_color:"Link color",\r
-hover_color:"Hover color",\r
-visited_color:"Visited color",\r
-active_color:"Active color",\r
-textcolor:"Color",\r
-fontsize:"Font size",\r
-fontface:"Font family",\r
-meta_index_follow:"Index and follow the links",\r
-meta_index_nofollow:"Index and don't follow the links",\r
-meta_noindex_follow:"Do not index but follow the links",\r
-meta_noindex_nofollow:"Do not index and don\'t follow the links",\r
-appearance_style:"Stylesheet and style properties",\r
-stylesheet:"Stylesheet",\r
-style:"Style",\r
-author:"Author",\r
-copyright:"Copyright",\r
-add:"Add new element",\r
-remove:"Remove selected element",\r
-moveup:"Move selected element up",\r
-movedown:"Move selected element down",\r
-head_elements:"Head elements",\r
-info:"Information",\r
-add_title:"Title element",\r
-add_meta:"Meta element",\r
-add_script:"Script element",\r
-add_style:"Style element",\r
-add_link:"Link element",\r
-add_base:"Base element",\r
-add_comment:"Comment node",\r
-title_element:"Title element",\r
-script_element:"Script element",\r
-style_element:"Style element",\r
-base_element:"Base element",\r
-link_element:"Link element",\r
-meta_element:"Meta element",\r
-comment_element:"Comment",\r
-src:"Src",\r
-language:"Language",\r
-href:"Href",\r
-target:"Target",\r
-type:"Type",\r
-charset:"Charset",\r
-defer:"Defer",\r
-media:"Media",\r
-properties:"Properties",\r
-name:"Name",\r
-value:"Value",\r
-content:"Content",\r
-rel:"Rel",\r
-rev:"Rev",\r
-hreflang:"Href lang",\r
-general_props:"General",\r
-advanced_props:"Advanced"\r
-});
\ No newline at end of file
+++ /dev/null
-(function(){var DOM=tinymce.DOM;tinymce.create('tinymce.plugins.FullScreenPlugin',{init:function(ed,url){var t=this,s={},vp;t.editor=ed;ed.addCommand('mceFullScreen',function(){var win,de=DOM.doc.documentElement;if(ed.getParam('fullscreen_is_enabled')){if(ed.getParam('fullscreen_new_window'))closeFullscreen();else{DOM.win.setTimeout(function(){tinymce.dom.Event.remove(DOM.win,'resize',t.resizeFunc);tinyMCE.get(ed.getParam('fullscreen_editor_id')).setContent(ed.getContent({format:'raw'}),{format:'raw'});tinyMCE.remove(ed);DOM.remove('mce_fullscreen_container');de.style.overflow=ed.getParam('fullscreen_html_overflow');DOM.setStyle(DOM.doc.body,'overflow',ed.getParam('fullscreen_overflow'));DOM.win.scrollTo(ed.getParam('fullscreen_scrollx'),ed.getParam('fullscreen_scrolly'));tinyMCE.settings=tinyMCE.oldSettings;},10);}return;}if(ed.getParam('fullscreen_new_window')){win=DOM.win.open(url+"/fullscreen.htm","mceFullScreenPopup","fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width="+screen.availWidth+",height="+screen.availHeight);try{win.resizeTo(screen.availWidth,screen.availHeight);}catch(e){}}else{tinyMCE.oldSettings=tinyMCE.settings;s.fullscreen_overflow=DOM.getStyle(DOM.doc.body,'overflow',1)||'auto';s.fullscreen_html_overflow=DOM.getStyle(de,'overflow',1);vp=DOM.getViewPort();s.fullscreen_scrollx=vp.x;s.fullscreen_scrolly=vp.y;if(tinymce.isOpera&&s.fullscreen_overflow=='visible')s.fullscreen_overflow='auto';if(tinymce.isIE&&s.fullscreen_overflow=='scroll')s.fullscreen_overflow='auto';if(s.fullscreen_overflow=='0px')s.fullscreen_overflow='';DOM.setStyle(DOM.doc.body,'overflow','hidden');de.style.overflow='hidden';vp=DOM.getViewPort();DOM.win.scrollTo(0,0);if(tinymce.isIE)vp.h-=1;n=DOM.add(DOM.doc.body,'div',{id:'mce_fullscreen_container',style:'position:'+(tinymce.isIE6||(tinymce.isIE&&!DOM.boxModel)?'absolute':'fixed')+';top:0;left:0;width:'+vp.w+'px;height:'+vp.h+'px;z-index:200000;'});DOM.add(n,'div',{id:'mce_fullscreen'});tinymce.each(ed.settings,function(v,n){s[n]=v;});s.id='mce_fullscreen';s.width=n.clientWidth;s.height=n.clientHeight-15;s.fullscreen_is_enabled=true;s.fullscreen_editor_id=ed.id;s.theme_advanced_resizing=false;s.save_onsavecallback=function(){ed.setContent(tinyMCE.get(s.id).getContent({format:'raw'}),{format:'raw'});ed.execCommand('mceSave');};tinymce.each(ed.getParam('fullscreen_settings'),function(v,k){s[k]=v;});if(s.theme_advanced_toolbar_location==='external')s.theme_advanced_toolbar_location='top';t.fullscreenEditor=new tinymce.Editor('mce_fullscreen',s);t.fullscreenEditor.onInit.add(function(){t.fullscreenEditor.setContent(ed.getContent());t.fullscreenEditor.focus();});t.fullscreenEditor.render();tinyMCE.add(t.fullscreenEditor);t.fullscreenElement=new tinymce.dom.Element('mce_fullscreen_container');t.fullscreenElement.update();t.resizeFunc=tinymce.dom.Event.add(DOM.win,'resize',function(){var vp=tinymce.DOM.getViewPort();t.fullscreenEditor.theme.resizeTo(vp.w,vp.h);});}});ed.addButton('fullscreen',{title:'fullscreen.desc',cmd:'mceFullScreen'});ed.onNodeChange.add(function(ed,cm){cm.setActive('fullscreen',ed.getParam('fullscreen_is_enabled'));});},getInfo:function(){return{longname:'Fullscreen',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('fullscreen',tinymce.plugins.FullScreenPlugin);})();
\ No newline at end of file
+++ /dev/null
-/**\r
- * $Id: editor_plugin_src.js 885 2008-06-22 19:23:20Z spocke $\r
- *\r
- * @author Moxiecode\r
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-(function() {\r
- var DOM = tinymce.DOM;\r
-\r
- tinymce.create('tinymce.plugins.FullScreenPlugin', {\r
- init : function(ed, url) {\r
- var t = this, s = {}, vp;\r
-\r
- t.editor = ed;\r
-\r
- // Register commands\r
- ed.addCommand('mceFullScreen', function() {\r
- var win, de = DOM.doc.documentElement;\r
-\r
- if (ed.getParam('fullscreen_is_enabled')) {\r
- if (ed.getParam('fullscreen_new_window'))\r
- closeFullscreen(); // Call to close in new window\r
- else {\r
- DOM.win.setTimeout(function() {\r
- tinymce.dom.Event.remove(DOM.win, 'resize', t.resizeFunc);\r
- tinyMCE.get(ed.getParam('fullscreen_editor_id')).setContent(ed.getContent({format : 'raw'}), {format : 'raw'});\r
- tinyMCE.remove(ed);\r
- DOM.remove('mce_fullscreen_container');\r
- de.style.overflow = ed.getParam('fullscreen_html_overflow');\r
- DOM.setStyle(DOM.doc.body, 'overflow', ed.getParam('fullscreen_overflow'));\r
- DOM.win.scrollTo(ed.getParam('fullscreen_scrollx'), ed.getParam('fullscreen_scrolly'));\r
- tinyMCE.settings = tinyMCE.oldSettings; // Restore old settings\r
- }, 10);\r
- }\r
-\r
- return;\r
- }\r
-\r
- if (ed.getParam('fullscreen_new_window')) {\r
- win = DOM.win.open(url + "/fullscreen.htm", "mceFullScreenPopup", "fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width=" + screen.availWidth + ",height=" + screen.availHeight);\r
- try {\r
- win.resizeTo(screen.availWidth, screen.availHeight);\r
- } catch (e) {\r
- // Ignore\r
- }\r
- } else {\r
- tinyMCE.oldSettings = tinyMCE.settings; // Store old settings\r
- s.fullscreen_overflow = DOM.getStyle(DOM.doc.body, 'overflow', 1) || 'auto';\r
- s.fullscreen_html_overflow = DOM.getStyle(de, 'overflow', 1);\r
- vp = DOM.getViewPort();\r
- s.fullscreen_scrollx = vp.x;\r
- s.fullscreen_scrolly = vp.y;\r
-\r
- // Fixes an Opera bug where the scrollbars doesn't reappear\r
- if (tinymce.isOpera && s.fullscreen_overflow == 'visible')\r
- s.fullscreen_overflow = 'auto';\r
-\r
- // Fixes an IE bug where horizontal scrollbars would appear\r
- if (tinymce.isIE && s.fullscreen_overflow == 'scroll')\r
- s.fullscreen_overflow = 'auto';\r
-\r
- if (s.fullscreen_overflow == '0px')\r
- s.fullscreen_overflow = '';\r
-\r
- DOM.setStyle(DOM.doc.body, 'overflow', 'hidden');\r
- de.style.overflow = 'hidden'; //Fix for IE6/7\r
- vp = DOM.getViewPort();\r
- DOM.win.scrollTo(0, 0);\r
-\r
- if (tinymce.isIE)\r
- vp.h -= 1;\r
-\r
- n = DOM.add(DOM.doc.body, 'div', {id : 'mce_fullscreen_container', style : 'position:' + (tinymce.isIE6 || (tinymce.isIE && !DOM.boxModel) ? 'absolute' : 'fixed') + ';top:0;left:0;width:' + vp.w + 'px;height:' + vp.h + 'px;z-index:200000;'});\r
- DOM.add(n, 'div', {id : 'mce_fullscreen'});\r
-\r
- tinymce.each(ed.settings, function(v, n) {\r
- s[n] = v;\r
- });\r
-\r
- s.id = 'mce_fullscreen';\r
- s.width = n.clientWidth;\r
- s.height = n.clientHeight - 15;\r
- s.fullscreen_is_enabled = true;\r
- s.fullscreen_editor_id = ed.id;\r
- s.theme_advanced_resizing = false;\r
- s.save_onsavecallback = function() {\r
- ed.setContent(tinyMCE.get(s.id).getContent({format : 'raw'}), {format : 'raw'});\r
- ed.execCommand('mceSave');\r
- };\r
-\r
- tinymce.each(ed.getParam('fullscreen_settings'), function(v, k) {\r
- s[k] = v;\r
- });\r
-\r
- if (s.theme_advanced_toolbar_location === 'external')\r
- s.theme_advanced_toolbar_location = 'top';\r
-\r
- t.fullscreenEditor = new tinymce.Editor('mce_fullscreen', s);\r
- t.fullscreenEditor.onInit.add(function() {\r
- t.fullscreenEditor.setContent(ed.getContent());\r
- t.fullscreenEditor.focus();\r
- });\r
-\r
- t.fullscreenEditor.render();\r
- tinyMCE.add(t.fullscreenEditor);\r
-\r
- t.fullscreenElement = new tinymce.dom.Element('mce_fullscreen_container');\r
- t.fullscreenElement.update();\r
- //document.body.overflow = 'hidden';\r
-\r
- t.resizeFunc = tinymce.dom.Event.add(DOM.win, 'resize', function() {\r
- var vp = tinymce.DOM.getViewPort();\r
-\r
- t.fullscreenEditor.theme.resizeTo(vp.w, vp.h);\r
- });\r
- }\r
- });\r
-\r
- // Register buttons\r
- ed.addButton('fullscreen', {title : 'fullscreen.desc', cmd : 'mceFullScreen'});\r
-\r
- ed.onNodeChange.add(function(ed, cm) {\r
- cm.setActive('fullscreen', ed.getParam('fullscreen_is_enabled'));\r
- });\r
- },\r
-\r
- getInfo : function() {\r
- return {\r
- longname : 'Fullscreen',\r
- author : 'Moxiecode Systems AB',\r
- authorurl : 'http://tinymce.moxiecode.com',\r
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen',\r
- version : tinymce.majorVersion + "." + tinymce.minorVersion\r
- };\r
- }\r
- });\r
-\r
- // Register plugin\r
- tinymce.PluginManager.add('fullscreen', tinymce.plugins.FullScreenPlugin);\r
-})();
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
- <title></title>\r
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />\r
- <script type="text/javascript" src="../../tiny_mce.js"></script>\r
- <script type="text/javascript">\r
- function patchCallback(settings, key) {\r
- if (settings[key])\r
- settings[key] = "window.opener." + settings[key];\r
- }\r
-\r
- var settings = {}, paSe = window.opener.tinyMCE.activeEditor.settings, oeID = window.opener.tinyMCE.activeEditor.id;\r
-\r
- // Clone array\r
- for (var n in paSe)\r
- settings[n] = paSe[n];\r
-\r
- // Override options for fullscreen\r
- for (var n in paSe.fullscreen_settings)\r
- settings[n] = paSe.fullscreen_settings[n];\r
-\r
- // Patch callbacks, make them point to window.opener\r
- patchCallback(settings, 'urlconverter_callback');\r
- patchCallback(settings, 'insertlink_callback');\r
- patchCallback(settings, 'insertimage_callback');\r
- patchCallback(settings, 'setupcontent_callback');\r
- patchCallback(settings, 'save_callback');\r
- patchCallback(settings, 'onchange_callback');\r
- patchCallback(settings, 'init_instance_callback');\r
- patchCallback(settings, 'file_browser_callback');\r
- patchCallback(settings, 'cleanup_callback');\r
- patchCallback(settings, 'execcommand_callback');\r
- patchCallback(settings, 'oninit');\r
-\r
- // Set options\r
- delete settings.id;\r
- settings['mode'] = 'exact';\r
- settings['elements'] = 'fullscreenarea';\r
- settings['add_unload_trigger'] = false;\r
- settings['ask'] = false;\r
- settings['document_base_url'] = window.opener.tinyMCE.activeEditor.documentBaseURI.getURI();\r
- settings['fullscreen_is_enabled'] = true;\r
- settings['fullscreen_editor_id'] = oeID;\r
- settings['theme_advanced_resizing'] = false;\r
- settings['strict_loading_mode'] = true;\r
-\r
- settings.save_onsavecallback = function() {\r
- window.opener.tinyMCE.get(oeID).setContent(tinyMCE.get('fullscreenarea').getContent({format : 'raw'}), {format : 'raw'});\r
- window.opener.tinyMCE.get(oeID).execCommand('mceSave');\r
- window.close();\r
- };\r
-\r
- function unloadHandler(e) {\r
- moveContent();\r
- }\r
-\r
- function moveContent() {\r
- window.opener.tinyMCE.get(oeID).setContent(tinyMCE.activeEditor.getContent());\r
- }\r
-\r
- function closeFullscreen() {\r
- moveContent();\r
- window.close();\r
- }\r
-\r
- function doParentSubmit() {\r
- moveContent();\r
-\r
- if (window.opener.tinyMCE.selectedInstance.formElement.form)\r
- window.opener.tinyMCE.selectedInstance.formElement.form.submit();\r
-\r
- window.close();\r
-\r
- return false;\r
- }\r
-\r
- function render() {\r
- var e = document.getElementById('fullscreenarea'), vp, ed, ow, oh, dom = tinymce.DOM;\r
-\r
- e.value = window.opener.tinyMCE.get(oeID).getContent();\r
-\r
- vp = dom.getViewPort();\r
- settings.width = vp.w;\r
- settings.height = vp.h - 15;\r
-\r
- tinymce.dom.Event.add(window, 'resize', function() {\r
- var vp = dom.getViewPort();\r
-\r
- tinyMCE.activeEditor.theme.resizeTo(vp.w, vp.h);\r
- });\r
-\r
- tinyMCE.init(settings);\r
- }\r
-\r
- // Add onunload\r
- tinymce.dom.Event.add(window, "beforeunload", unloadHandler);\r
- </script>\r
- <base target="_self" />\r
-</head>\r
-<body style="margin:0;overflow:hidden;width:100%;height:100%" scrolling="no" scroll="no">\r
-<form onsubmit="doParentSubmit();">\r
-<textarea id="fullscreenarea" style="width:100%; height:100%"></textarea>\r
-</form>\r
-\r
-<script type="text/javascript">\r
- render();\r
-</script>\r
-\r
-</body>\r
-</html>\r
+++ /dev/null
-(function(){tinymce.create('tinymce.plugins.IESpell',{init:function(ed,url){var t=this,sp;if(!tinymce.isIE)return;t.editor=ed;ed.addCommand('mceIESpell',function(){try{sp=new ActiveXObject("ieSpell.ieSpellExtension");sp.CheckDocumentNode(ed.getDoc().documentElement);}catch(e){if(e.number==-2146827859){ed.windowManager.confirm(ed.getLang("iespell.download"),function(s){if(s)window.open('http://www.iespell.com/download.php','ieSpellDownload','');});}else ed.windowManager.alert("Error Loading ieSpell: Exception "+e.number);}});ed.addButton('iespell',{title:'iespell.iespell_desc',cmd:'mceIESpell'});},getInfo:function(){return{longname:'IESpell (IE Only)',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/iespell',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('iespell',tinymce.plugins.IESpell);})();
\ No newline at end of file
+++ /dev/null
-/**\r
- * $Id: editor_plugin_src.js 520 2008-01-07 16:30:32Z spocke $\r
- *\r
- * @author Moxiecode\r
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-(function() {\r
- tinymce.create('tinymce.plugins.IESpell', {\r
- init : function(ed, url) {\r
- var t = this, sp;\r
-\r
- if (!tinymce.isIE)\r
- return;\r
-\r
- t.editor = ed;\r
-\r
- // Register commands\r
- ed.addCommand('mceIESpell', function() {\r
- try {\r
- sp = new ActiveXObject("ieSpell.ieSpellExtension");\r
- sp.CheckDocumentNode(ed.getDoc().documentElement);\r
- } catch (e) {\r
- if (e.number == -2146827859) {\r
- ed.windowManager.confirm(ed.getLang("iespell.download"), function(s) {\r
- if (s)\r
- window.open('http://www.iespell.com/download.php', 'ieSpellDownload', '');\r
- });\r
- } else\r
- ed.windowManager.alert("Error Loading ieSpell: Exception " + e.number);\r
- }\r
- });\r
-\r
- // Register buttons\r
- ed.addButton('iespell', {title : 'iespell.iespell_desc', cmd : 'mceIESpell'});\r
- },\r
-\r
- getInfo : function() {\r
- return {\r
- longname : 'IESpell (IE Only)',\r
- author : 'Moxiecode Systems AB',\r
- authorurl : 'http://tinymce.moxiecode.com',\r
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/iespell',\r
- version : tinymce.majorVersion + "." + tinymce.minorVersion\r
- };\r
- }\r
- });\r
-\r
- // Register plugin\r
- tinymce.PluginManager.add('iespell', tinymce.plugins.IESpell);\r
-})();
\ No newline at end of file
+++ /dev/null
-.all {\r
- width:100%;\r
- height:100%;\r
-}\r
-html, body { height:99%; }\r
-html, body, td, th {\r
- padding:0px;\r
- margin:0px;\r
- vertical-align:top;\r
- font-family:Verdana,Arial,Helvetica,sans-serif;\r
- font-size:10px;\r
-}\r
-img { border:none; }\r
-\r
-.header {\r
- height:50px;\r
-}\r
-\r
-.header .path {\r
- margin-bottom:3px;\r
- padding:2px;\r
- font-size:14px;\r
- border-left: #888 solid 1px;\r
- border-top: #888 solid 1px;\r
- border-right: #ccc solid 1px;\r
- border-bottom: #ccc solid 1px;\r
-}\r
-.header .path a {\r
- background: transparent url(../images/arrow.gif) left center no-repeat;\r
- padding: 2px 10px 3px 15px;\r
- text-decoration:none;\r
-}\r
-.header .path a:hover { background-color:#cfe1fc; }\r
-\r
-.header img { vertical-align:middle; }\r
-.header .path .first { background:none; padding:0px 10px 0px 0px; }\r
-\r
-.panel { background:#468da0 url(../images/back/back.gif) top repeat-x; height:32px; }\r
-.p1 { background:transparent url(../images/back/left.gif) left no-repeat; height:32px; }\r
-.p2 { background:transparent url(../images/back/right.gif) right no-repeat; height:32px; }\r
-.panel .btns a {\r
- color: white;\r
- height:32px;\r
- text-decoration:none;\r
- margin:0 5px 0 10px;\r
-}\r
-.panel .btns img { vertical-align:middle; }\r
-\r
-.left {\r
- border-right:1px solid #ddd;\r
- width:150px;\r
-}\r
-\r
-.content {\r
- \r
-}\r
-\r
-h1.blue_header {\r
- font-size:16px;\r
- font-weight:normal;\r
- color:#6FA8DC;\r
- margin-bottom:10px;\r
-}\r
-\r
-.folder {\r
- background: transparent url(../images/folder.gif) left center no-repeat;\r
- margin: 1px 10px 1px 5px;\r
- padding:1px;\r
- height:16px;\r
- font-size:12px;\r
-}\r
-\r
-.folder a {\r
- padding:0 0 0 20px;\r
- text-decoration:none;\r
- outline: none;\r
-}\r
-\r
-\r
-.item {\r
- width:120px;\r
- height:150px;\r
- margin:5px 0 0 5px;\r
- float:left;\r
- overflow:hidden;\r
-}\r
-.item:hover { background-color:#deecff; }\r
-.item img { width:100px; height:100px; margin:10px; }\r
-.item .labels { color:#0a4d76; text-align:center; }\r
-.item_ {\r
- background-color:#cfe1fc;\r
-}\r
-.item_:hover {\r
- background-color:#bfd9ff;\r
-}\r
-\r
-.upload {\r
- background:transparent url(../images/upload_back.gif) top repeat-x;\r
- text-align: center;\r
-}\r
-.upload input {\r
- font-size: 20px;\r
- font-family: serif;\r
- margin: 10px 0 10px 0;\r
- width: 150px;\r
-}\r
-\r
-#mainfield {\r
- width:530px;\r
- height:475px;\r
- overflow:scroll;\r
-}\r
-\r
-\r
-\r
-/* Fancy */\r
-#demo-status\r
-{\r
- /*background-color: #F9F7ED;*/\r
- padding: 10px 15px;\r
- width: 420px;\r
-}\r
- \r
-#demo-status fieldset\r
-{\r
- padding: 0.5em 1em;\r
- border: none;\r
-}\r
- \r
-#demo-status legend\r
-{\r
- display: block;\r
- font: 1.2em bold Verdana, Geneva, Arial, Helvetica, sans-serif;\r
-}\r
- \r
-#demo-status .progress\r
-{\r
- background: white url(../images/progress.gif) no-repeat;\r
- background-position: +50% 0;\r
- margin-right: 0.5em;\r
-}\r
- \r
-#demo-status .progress-text\r
-{\r
- font-size: 0.9em;\r
- font-weight: bold;\r
-}\r
- \r
-#demo-list\r
-{\r
- list-style: none;\r
- width: 450px;\r
- /*overflow: auto;*/\r
- margin: 0;\r
-}\r
- \r
-#demo-list li.file\r
-{\r
- border-bottom: 1px solid #eee;\r
- /*overflow: auto;*/\r
- background: url(../images/file.png) no-repeat 4px 4px;\r
-}\r
-#demo-list li.file.file-uploading\r
-{\r
- background-image: url(../images/uploading.png);\r
- background-color: #D9DDE9;\r
-}\r
-#demo-list li.file.file-success\r
-{\r
- background-image: url(../images/success.png);\r
-}\r
-#demo-list li.file.file-failed\r
-{\r
- background-image: url(../images/failed.png);\r
-}\r
- \r
-#demo-list li.file .file-name\r
-{\r
- font-size: 1.2em;\r
- margin-left: 44px;\r
- display: block;\r
- line-height: 40px;\r
- height: 40px;\r
- font-weight: bold;\r
-}\r
-#demo-list li.file .file-size\r
-{\r
- line-height: 20px;\r
- float: right;\r
-}\r
-#demo-list li.file .file-info\r
-{\r
- display: block;\r
- margin-left: 44px;\r
-}\r
-#demo-list li.file .file-remove\r
-{\r
- clear: right;\r
- float: right;\r
- line-height: 20px;\r
-}\r
-.overall-title {\r
- font-size: 16px;\r
- margin: 0 0 3px 5px;\r
-}\r
-.current-title {\r
- font-size: 16px;\r
- margin: 8px 0 3px 5px;\r
-}\r
-.current-text {\r
- position: absolute;\r
- right:10px;\r
- top: 65px;\r
- width:320px;\r
- font-size: 15px;\r
-}
\ No newline at end of file
+++ /dev/null
-[ViewState]\r
-Mode=\r
-Vid=\r
-FolderType=NotSpecified\r
+++ /dev/null
-(function(){tinymce.create('tinymce.plugins.Images',{init:function(ed,url){ed.addCommand('mceImages',function(){ed.windowManager.open({file:url+'/images.htm',width:700,height:550,inline:1},{plugin_url:url})});ed.addButton('images',{title:'images.desc',cmd:'mceImages',image:url+'/images/icon.gif'});ed.onNodeChange.add(function(ed,cm,n){cm.setActive('images',n.nodeName=='IMG')})},getInfo:function(){return{longname:'Images',author:'Antonov Andrey',authorurl:'http://dustweb.ru/',infourl:'http://dustweb.ru/log/projects/tinymce_images/',version:"1.0"}}});tinymce.PluginManager.add('images',tinymce.plugins.Images)})();
\ No newline at end of file
+++ /dev/null
-(function() {\r
- tinymce.create('tinymce.plugins.Images', {\r
- init : function(ed, url) {\r
- ed.addCommand('mceImages', function() {\r
- ed.windowManager.open({\r
- file : url + '/images.htm',\r
- width : 700,\r
- height : 550,\r
- inline : 1\r
- }, {\r
- plugin_url : url\r
- });\r
- });\r
- \r
- ed.addButton('images', {\r
- title : 'images.desc',\r
- cmd : 'mceImages',\r
- image : url + '/images/icon.gif'\r
- });\r
- \r
- ed.onNodeChange.add(function(ed, cm, n) {\r
- cm.setActive('images', n.nodeName == 'IMG');\r
- });\r
- },\r
- \r
- getInfo : function() {\r
- return {\r
- longname : 'Images',\r
- author : 'Antonov Andrey',\r
- authorurl : 'http://dustweb.ru/',\r
- infourl : 'http://dustweb.ru/log/projects/tinymce_images/',\r
- version : "1.0"\r
- };\r
- }\r
- });\r
- \r
- tinymce.PluginManager.add('images', tinymce.plugins.Images);\r
-})();
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
- <title>{#images_dlg.fancy_title}</title>\r
- <link href="css/default.css" rel="stylesheet" type="text/css"/>\r
- \r
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
- <script type="text/javascript" src="js/mootools.js"></script>\r
- <script type="text/javascript" src="js/Swiff.Uploader.js"></script>\r
- <script type="text/javascript" src="js/Fx.ProgressBar.js"></script>\r
- <script type="text/javascript" src="js/FancyUpload2.js"></script>\r
- <script type="text/javascript">\r
-\r
-function getURLParam(strParamName) {\r
- var strReturn = "";\r
- var strHref = window.location.href;\r
- if ( strHref.indexOf("?") > -1 ){\r
- var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase();\r
- var aQueryString = strQueryString.split("&");\r
- for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){\r
- if (\r
-aQueryString[iParam].indexOf(strParamName.toLowerCase() + "=") > -1 ){\r
- var aParam = aQueryString[iParam].split("=");\r
- strReturn = aParam[1];\r
- break;\r
- }\r
- }\r
- }\r
- return unescape(strReturn);\r
-}\r
-\r
-\r
-var allcookies = document.cookie;\r
-var pos = allcookies.indexOf("PHPSESSID=");\r
-if(pos != -1) {\r
- var start = pos + 10;\r
- var end = allcookies.indexOf(";", start);\r
- if(end == -1) end = allcookies.length;\r
- var value = allcookies.substring(start, end);\r
- value = unescape(value);\r
-}\r
-\r
-var urlregexp = /([\s\S]*)\/fancy\.htm\?/im;\r
-var urlmatch = urlregexp.exec(window.location.href);\r
-var urlpart = urlmatch[1];\r
-\r
-window.addEvent('load', function() {\r
- var swiffy = new FancyUpload2($('demo-status'), $('demo-list'), {\r
- 'url': urlpart + '/server_connector/files_conn.php?uri=' + getURLParam('uri') + '&PHPSESSID=' + value + '&lng=' + tinyMCEPopup.editor.settings.language,\r
- 'fieldName': 'photoupload',\r
- 'path': 'js/Swiff.Uploader.swf'\r
- });\r
- /**\r
- * Various interactions\r
- */\r
- $('link-2').addEvent('click', function() {\r
- swiffy.browse({'Images (*.jpg, *.jpeg, *.gif, *.png)': '*.jpg; *.jpeg; *.gif; *.png'});\r
- return false;\r
- });\r
- $('link-22').addEvent('click', function() {\r
- swiffy.browse({'Images (*.jpg, *.jpeg, *.gif, *.png)': '*.jpg; *.jpeg; *.gif; *.png'});\r
- return false;\r
- });\r
- $('link-3').addEvent('click', function() {\r
- swiffy.removeFile();\r
- return false;\r
- });\r
- $('link-4').addEvent('click', function() {\r
- swiffy.upload();\r
- return false;\r
- });\r
-});\r
-</script>\r
- <base target="_self"/>\r
-</head>\r
-<body> \r
-\r
-<div class="panel" style="margin:5px;">\r
- <div class="p1">\r
- <div class="p2">\r
- <div class="btns">\r
- <a href="#" onclick="document.location = 'images.htm?uri=' + getURLParam('uri'); return false;"><img src="images/back/larr.gif" width="16" height="32" alt="{#images_dlg.fancy_back_alt}" /> {#images_dlg.fancy_back}</a>\r
- <a href="#" id="link-2"><img src="images/back/browse.gif" width="16" height="32" alt="{#images_dlg.fancy_browse}" /> {#images_dlg.fancy_browse}</a>\r
- <a href="#" id="link-4"><img src="images/back/ok.gif" width="16" height="32" alt="{#images_dlg.fancy_begin_upload}"/> {#images_dlg.fancy_upload_files}</a>\r
- <a href="#" id="link-3"><img src="images/back/clean.gif" width="13" height="32" alt="{#images_dlg.fancy_clear}"/> {#images_dlg.fancy_clear}</a>\r
- </div>\r
- </div>\r
- </div>\r
-</div>\r
-\r
-<form action="/admin/files" method="post" enctype="multipart/form-data" id="form-demo">\r
- <div id="demo-browse" style="display:block; padding:12px 0 0 22px; font-size:16px;"><a style="color:black; text-decoration: none;" href="#" id="link-22">{#images_dlg.fancy_begin_upload_files}</a></div>\r
- <div id="demo-status" style="display:none;">\r
- <div>\r
- <div class="overall-title">{#images_dlg.fancy_general_status}</div>\r
- <img src="images/bar.gif" class="progress overall-progress" />\r
- </div>\r
- <div>\r
- <div class="current-title">{#images_dlg.fancy_file_status}</div>\r
- <img src="images/bar.gif" class="progress current-progress" />\r
- </div>\r
- <div class="current-text"></div>\r
- </div>\r
- \r
- <ul id="demo-list"></ul>\r
- \r
-</form>\r
-\r
-</body>\r
-</html>\r
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml">\r
- <head>\r
- <title>{#images_dlg.title}</title>\r
- <link href="css/default.css" rel="stylesheet" type="text/css"/>\r
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
- <script type="text/javascript" src="js/images.js"></script>\r
- \r
- <script type="text/javascript" src="js/mootools.js"></script>\r
- \r
- <base target="_self" />\r
- <script src="js/JsHttpRequest.js" type="text/javascript"></script>\r
- </head>\r
- <body style="display:none;" onKeyDown="setCtrl(event)" onKeyUp="resetCtrl()">\r
- \r
- <div style="display: none;">\r
- <div id="l1">{#images_dlg.del_sel_folder}</div>\r
- <div id="l2">{#images_dlg.sel_files_for_del}</div>\r
- <div id="l3">{#images_dlg.files_to_del}</div>\r
- <div id="l4">{#images_dlg.delete_str}</div>\r
- </div>\r
- \r
-<script type="text/javascript">\r
-function getURLParam(strParamName) {\r
- var strReturn = "";\r
- var strHref = window.location.href;\r
- if ( strHref.indexOf("?") > -1 ){\r
- var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase();\r
- var aQueryString = strQueryString.split("&");\r
- for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){\r
- if (\r
-aQueryString[iParam].indexOf(strParamName.toLowerCase() + "=") > -1 ){\r
- var aParam = aQueryString[iParam].split("=");\r
- strReturn = aParam[1];\r
- break;\r
- }\r
- }\r
- }\r
- return unescape(strReturn);\r
-}\r
-\r
-\r
-var current = '';\r
-var current_file = new Array();\r
-var i=0;\r
-\r
-function activateItem(obj,src) {\r
- \r
- if(ctrlState==1) {\r
- obj.className = 'item item_';\r
- current = obj.childNodes[1].src;\r
- \r
- if(current_file.indexOf(src)==-1) current_file.push(src);\r
- \r
- } else {\r
- \r
- current_file = [src];\r
- \r
- var list = obj.parentNode.childNodes;\r
- for(var i=0; i<list.length; i++) {\r
- list[i].className = 'item';\r
- }\r
- \r
- obj.className = 'item item_';\r
- current = obj.childNodes[1].src;\r
- }\r
-}\r
-\r
-var current_dir = '';\r
-function activateDir(obj, dir) {\r
- var list = obj.parentNode.parentNode.childNodes;\r
- \r
- for(var i=0; i<list.length; i++) {\r
- list[i].style.backgroundColor = 'transparent';\r
- }\r
- \r
- obj.parentNode.style.backgroundColor = '#BFD9FF';\r
- current_dir = dir;\r
-}\r
-\r
-var themiraclevar = '';\r
-function changeFolder(uri) {\r
- JsHttpRequest.query('server_connector/ajax.php', { 'm': 'tinyimages->ChangeDir', 'uri': uri, 'lng': tinyMCEPopup.editor.settings.language },\r
- function(result, errors) {\r
- \r
- if (result) {\r
- document.getElementById('leftpanel').innerHTML = result['leftpanel']; \r
- document.getElementById('addressbar').innerHTML = result['addressbar'];\r
- document.getElementById('mainfield').innerHTML = result['mainfield'];\r
- themiraclevar = result['uri'];\r
- current_file = new Array();\r
- current_dir = '';\r
- }\r
- },\r
- true \r
- );\r
-}\r
-\r
-var new_folder_state = false;\r
-function createFolder() {\r
- if(new_folder_state == false) {\r
- $('leftpanel').innerHTML = $('leftpanel').innerHTML + '<div class="folder"><form onsubmit="submitFolder(); return false;" style="margin-left:20px;"><input type="text" name="new_folder" onblur="submitFolder();" id="new_folder" /></form></div>';\r
- new_folder_state = true;\r
- $('new_folder').focus();\r
- } else {\r
- $('new_folder').focus();\r
- }\r
-}\r
-\r
-function submitFolder() {\r
- JsHttpRequest.query('server_connector/ajax.php', { 'm': 'tinyimages->MakeFolder', 'uri': themiraclevar, 'name': $('new_folder').value, 'lng': tinyMCEPopup.editor.settings.language },\r
- function(result, errors) {\r
- \r
- if (result) {\r
- if(!result['error']) {\r
- new_folder_state = false;\r
- changeFolder(themiraclevar);\r
- } else {\r
- alert(result['error']);\r
- }\r
- }\r
- },\r
- true \r
- );\r
-}\r
-\r
-function deleteFile() {\r
-\r
- if (current_file.length==0 && current_dir != '') {\r
- if (!confirm(document.getElementById('l1').innerHTML)) return false;\r
- \r
- JsHttpRequest.query('server_connector/ajax.php', { 'm': 'tinyimages->DelDir', 'dir': current_dir, 'lng': tinyMCEPopup.editor.settings.language },\r
- function(result, errors) {\r
- if (result) {\r
- if(!result['error']) {\r
- changeFolder(themiraclevar);\r
- } else {\r
- alert(result['error']);\r
- }\r
- }\r
- },\r
- true \r
- );\r
- \r
- \r
- return true;\r
- }\r
-\r
- \r
- if(current_file.length == 0) { alert(document.getElementById('l2').innerHTML); return false; }\r
-\r
- if (!confirm(document.getElementById('l3').innerHTML+': ' + current_file.length+ '. '+document.getElementById('l4').innerHTML+'?')) return false;\r
-\r
- JsHttpRequest.query('server_connector/ajax.php', { 'm': 'tinyimages->DelFile', 'src': current_file, 'lng': tinyMCEPopup.editor.settings.language },\r
- function(result, errors) {\r
- if (result) {\r
- if(!result['error']) {\r
- changeFolder(themiraclevar);\r
- } else {\r
- alert(result['error']);\r
- }\r
- }\r
- },\r
- true \r
- );\r
-}\r
-\r
-function uploadImagesBtn() {\r
- document.location = 'fancy.htm?uri='+ themiraclevar;\r
-}\r
-\r
-function addImage(obj,path,width) {\r
- ImagesDialog.insert(path, obj.childNodes[0].alt, width);\r
-}\r
-\r
-\r
-ctrlState = 0;\r
-function setCtrl(tmp) {\r
- var isIE = navigator.appName.indexOf("Microsoft") != -1;\r
- if(isIE) {\r
- if(!window.event) window.event=tmp;\r
- tmp=window.event.keyCode;\r
- } else {\r
- event=tmp;\r
- tmp=event.keyCode;\r
- }\r
- if(tmp==17) ctrlState = 1;\r
-}\r
-\r
-function resetCtrl() { ctrlState = 0; }\r
-\r
-\r
-\r
-if(window.opera) document.onkeydown=setCtrl;\r
-\r
-if(window.opera) document.onkeyup=resetCtrl;\r
-</script>\r
- <table class="all" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td class="header">\r
- <div class="path" id="addressbar">\r
- <!-- Àäðåñíàÿ ñòðîêà -->\r
- </div>\r
- <div class="panel">\r
- <div class="p1">\r
- <div class="p2">\r
- <div class="btns">\r
- <a href="#" onclick="createFolder(); return false;"><img src="images/back/new_folder.gif" width="16" height="32" alt="{#images_dlg.create_new_fld}"/> {#images_dlg.create_fld}</a><a href="#" onclick="uploadImagesBtn(); return false;"><img src="images/back/files.gif" width="19" height="32" alt="{#images_dlg.upload_files}" /> {#images_dlg.upload_files}</a><a href="#" onclick="deleteFile(); return false;"><img src="images/back/del_file.gif" width="16" height="32" alt="{#images_dlg.delete_file}"/> {#images_dlg.delete_file}</a>\r
- </div>\r
- </div>\r
- </div>\r
- </div>\r
- </td>\r
- </tr>\r
- <tr>\r
- <td valign="top">\r
- <table cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td class="left" width="150" id="leftpanel" style="padding-top:15px;">\r
- <!-- Ñïèñîê ïàïîê â òåêóùåé äèðåêòîðèè -->\r
- </td>\r
- <td>\r
- <div id="mainfield">\r
-\r
- </div>\r
- </td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
- </table>\r
- \r
- \r
- <script type="text/javascript">\r
- changeFolder(getURLParam('uri'));\r
- </script>\r
- \r
- </body>\r
-</html>\r
+++ /dev/null
-/**\r
- * FancyUpload - Flash meets Ajax for simply working uploads\r
- *\r
- * @version 2.0 beta 2\r
- *\r
- * @license MIT License\r
- *\r
- * @author Harald Kirschner <mail [at] digitarald [dot] de>\r
- * @copyright Authors\r
- */\r
-\r
-if(tinyMCEPopup.editor.settings.language != 'ru'){\r
-var FancyUpload2 = new Class({\r
-\r
- Extends: Swiff.Uploader,\r
-\r
- options: {\r
- createElement: null,\r
- updateElement: null,\r
- removeElement: null\r
- },\r
-\r
- initialize: function(status, list, options) {\r
- this.status = $(status);\r
- this.list = $(list);\r
-\r
- this.files = [];\r
-\r
- this.overallTitle = this.status.getElement('.overall-title');\r
- this.currentTitle = this.status.getElement('.current-title');\r
- this.currentText = this.status.getElement('.current-text');\r
-\r
- var progress = this.status.getElement('.overall-progress');\r
- this.overallProgress = new Fx.ProgressBar(progress, {\r
- text: new Element('span', {'class': 'progress-text'}).inject(progress, 'after')\r
- });\r
- progress = this.status.getElement('.current-progress')\r
- this.currentProgress = new Fx.ProgressBar(progress, {\r
- text: new Element('span', {'class': 'progress-text'}).inject(progress, 'after')\r
- });\r
-\r
- this.parent(options);\r
- },\r
-\r
- onLoad: function() {\r
- this.log('Uploader ready!');\r
- },\r
-\r
- onBeforeOpen: function(file) {\r
- this.log('Initialize upload for "{name}".', file);\r
- },\r
-\r
- onOpen: function(file, overall) {\r
- this.log('Starting upload "{name}".', file);\r
- file = this.getFile(file);\r
- file.element.addClass('file-uploading');\r
- this.currentProgress.cancel().set(0);\r
- this.currentTitle.set('html', 'File Progress "{name}"'.substitute(file) );\r
- },\r
-\r
- onProgress: function(file, current, overall) {\r
- this.overallProgress.start(overall.bytesLoaded, overall.bytesTotal);\r
- var units = Date.parseIntervals(current.timeLeft || 0), timeLeft = [];\r
- for (var unit in units) timeLeft.push(units[unit] + ' ' + unit);\r
- this.currentText.set('html', 'Upload with {rate}/s. Est. time left: {timeLeft}'.substitute({\r
- rate: (current.rate) ? this.sizeToKB(current.rate) : '- B',\r
- timeLeft: timeLeft.join(', ')\r
- }));\r
- this.currentProgress.start(current.bytesLoaded, current.bytesTotal);\r
- },\r
-\r
- onSelect: function(file, index, length) {\r
- this.log('Checked in file ' + index + '/' + length + ' "' + file.name + '" with ' + file.size + ' bytes.');\r
- },\r
-\r
- onAllSelect: function(files, current, overall) {\r
- $('demo-status').style.display = 'block';\r
- $('demo-browse').style.display = 'none';\r
- this.log('Added ' + files.length + ' files, now we have (' + current.bytesTotal + ' bytes).', arguments);\r
- this.overallTitle.set('html', 'Overall Progress ({size})'.substitute({size: this.sizeToKB(current.bytesTotal)}));\r
- files.each(function(file) {\r
- this.createFileElement(file);\r
- this.files.push(file);\r
- }, this);\r
- this.status.removeClass('status-browsing');\r
- },\r
-\r
- onComplete: function(file, response) {\r
- this.log('Completed upload "' + file.name + '".', arguments);\r
- this.currentText.set('html', 'Upload complete!');\r
- this.currentProgress.start(100);\r
- file = this.getFile(file);\r
- file.element.removeClass('file-uploading');\r
- var json = $H(JSON.decode(response, true));\r
- if (json.get('result') == 'success') {\r
- file.element.addClass('file-success');\r
- file.info.set('html', json.get('size'));\r
- } else {\r
- file.element.addClass('file-failed');\r
- file.info.set('html', json.get('error') || response);\r
- }\r
- },\r
-\r
- onError: function(file, error, info) {\r
- this.log('Upload "' + file.name + '" failed. "{1}": "{2}".', arguments);\r
- file = this.finishFile(file);\r
- file.element.addClass('file-failed');\r
- file.info.set('html', '<strong>' + error + '</strong><br />' + info);\r
- },\r
-\r
- onCancel: function() {\r
- this.log('Filebrowser cancelled.', arguments);\r
- this.status.removeClass('file-browsing');\r
- },\r
-\r
- onAllComplete: function(current) {\r
- this.log('Completed all files, ' + current.bytesTotal + ' bytes.', arguments);\r
- this.overallTitle.set('html', 'Overall Progress (' + this.sizeToKB(current.bytesTotal) + ')');\r
- this.overallProgress.start(100);\r
- this.status.removeClass('file-uploading');\r
- },\r
-\r
- browse: function(fileList) {\r
- var ret = this.parent(fileList);\r
- if (ret !== true){\r
- this.log('Browse in progress.');\r
- if (ret) alert(ret);\r
- } else {\r
- this.log('Browse started.');\r
- this.status.addClass('file-browsing');\r
- }\r
- },\r
-\r
- upload: function(options) {\r
- var ret = this.parent(options);\r
- if (ret !== true) {\r
- this.log('Upload in progress or nothing to upload.');\r
- if (ret) alert(ret);\r
- } else {\r
- this.log('Upload started.');\r
- this.status.addClass('file-uploading');\r
- this.overallProgress.set(0);\r
- }\r
- },\r
-\r
- removeFile: function(file) {\r
- if (!file) {\r
- this.files.each(this.removeFileElement, this);\r
- this.files.empty();\r
- } else {\r
- if (!file.element) file = this.getFile(file);\r
- this.files.erase(file);\r
- this.removeFileElement(file);\r
- }\r
- this.parent(file);\r
- },\r
-\r
- getFile: function(file) {\r
- var ret = null;\r
- this.files.some(function(value) {\r
- if ((value.name != file.name) || (value.size != file.size)) return false;\r
- ret = value;\r
- return true;\r
- });\r
- return ret;\r
- },\r
-\r
- removeFileElement: function(file) {\r
- file.element.fade('out').retrieve('tween').chain(Element.destroy.bind(Element, file.element));\r
- },\r
-\r
- finishFile: function(file) {\r
- file = this.getFile(file);\r
- file.element.removeClass('file-uploading');\r
- file.finished = true;\r
- return file;\r
- },\r
-\r
- createFileElement: function(file) {\r
- file.info = new Element('span', {'class': 'file-info'});\r
- file.element = new Element('li', {'class': 'file'}).adopt(\r
- new Element('span', {'class': 'file-size', 'html': this.sizeToKB(file.size)}),\r
- new Element('a', {\r
- 'class': 'file-remove',\r
- 'href': '#',\r
- 'html': 'Remove',\r
- 'events': {\r
- 'click': function() {\r
- this.removeFile(file);\r
- return false;\r
- }.bind(this)\r
- }\r
- }),\r
- new Element('span', {'class': 'file-name', 'html': file.name}),\r
- file.info\r
- ).inject(this.list);\r
- },\r
-\r
- sizeToKB: function(size) {\r
- var unit = 'B';\r
- if ((size / 1048576) > 1) {\r
- unit = 'MB';\r
- size /= 1048576;\r
- } else if ((size / 1024) > 1) {\r
- unit = 'kB';\r
- size /= 1024;\r
- }\r
- return size.round(1) + ' ' + unit;\r
- },\r
-\r
- log: function(text, args) {\r
- if (window.console) console.log(text.substitute(args || {}));\r
- }\r
-\r
-});\r
-\r
-Date.parseIntervals = function(sec, max) {\r
- var units = {}, conv = Date.durations, count = 0;\r
- for (var unit in conv) {\r
- var value = Math.floor(sec / conv[unit]);\r
- if (value) {\r
- units[unit] = value;\r
- if ((max && max <= ++count) || !(sec -= value * conv[unit])) break;\r
- }\r
- }\r
- return units;\r
-};\r
-\r
-Date.intervals = {y: 31556926, mo: 2629743.83, d: 86400, h: 3600, mi: 60, s: 1, ms: 0.001};\r
-}\r
-else {\r
-var FancyUpload2 = new Class({\r
-\r
- Extends: Swiff.Uploader,\r
-\r
- options: {\r
- createElement: null,\r
- updateElement: null,\r
- removeElement: null\r
- },\r
-\r
- initialize: function(status, list, options) {\r
- this.status = $(status);\r
- this.list = $(list);\r
-\r
- this.files = [];\r
-\r
- this.overallTitle = this.status.getElement('.overall-title');\r
- this.currentTitle = this.status.getElement('.current-title');\r
- this.currentText = this.status.getElement('.current-text');\r
-\r
- var progress = this.status.getElement('.overall-progress');\r
- this.overallProgress = new Fx.ProgressBar(progress, {\r
- text: new Element('span', {'class': 'progress-text'}).inject(progress, 'after')\r
- });\r
- progress = this.status.getElement('.current-progress')\r
- this.currentProgress = new Fx.ProgressBar(progress, {\r
- text: new Element('span', {'class': 'progress-text'}).inject(progress, 'after')\r
- });\r
-\r
- this.parent(options);\r
- },\r
-\r
- onLoad: function() {\r
- this.log('Uploader ready!');\r
- },\r
-\r
- onBeforeOpen: function(file) {\r
- this.log('Initialize upload for "{name}".', file);\r
- },\r
-\r
- onOpen: function(file, overall) {\r
- this.log('Starting upload "{name}".', file);\r
- file = this.getFile(file);\r
- file.element.addClass('file-uploading');\r
- this.currentProgress.cancel().set(0);\r
- this.currentTitle.set('html', 'Ñòàòóñ ôàéëà "{name}"'.substitute(file) );\r
- },\r
-\r
- onProgress: function(file, current, overall) {\r
- this.overallProgress.start(overall.bytesLoaded, overall.bytesTotal);\r
- var units = Date.parseIntervals(current.timeLeft || 0), timeLeft = [];\r
- for (var unit in units) timeLeft.push(units[unit] + ' ' + unit);\r
- this.currentText.set('html', 'Ñêîðîñòü çàãðóçêè {rate}/ñ. '.substitute({\r
- rate: (current.rate) ? this.sizeToKB(current.rate) : '- B',\r
- timeLeft: timeLeft.join(', ')\r
- }));\r
- this.currentProgress.start(current.bytesLoaded, current.bytesTotal);\r
- },\r
-\r
- onSelect: function(file, index, length) {\r
- this.log('Checked in file ' + index + '/' + length + ' "' + file.name + '" with ' + file.size + ' bytes.');\r
- },\r
-\r
- onAllSelect: function(files, current, overall) {\r
- $('demo-status').style.display = 'block';\r
- $('demo-browse').style.display = 'none';\r
- this.log('Added ' + files.length + ' files, now we have (' + current.bytesTotal + ' bytes).', arguments);\r
- this.overallTitle.set('html', 'Îáùèé ñòàòóñ ({size})'.substitute({size: this.sizeToKB(current.bytesTotal)}));\r
- files.each(function(file) {\r
- this.createFileElement(file);\r
- this.files.push(file);\r
- }, this);\r
- this.status.removeClass('status-browsing');\r
- },\r
-\r
- onComplete: function(file, response) {\r
- this.log('Completed upload "' + file.name + '".', arguments);\r
- this.currentText.set('html', 'Çàãðóçêà çàâåðøåíà!');\r
- this.currentProgress.start(100);\r
- file = this.getFile(file);\r
- file.element.removeClass('file-uploading');\r
- var json = $H(JSON.decode(response, true));\r
- if (json.get('result') == 'success') {\r
- file.element.addClass('file-success');\r
- file.info.set('html', json.get('size'));\r
- } else {\r
- file.element.addClass('file-failed');\r
- file.info.set('html', json.get('error') || response);\r
- }\r
- },\r
-\r
- onError: function(file, error, info) {\r
- this.log('Çàãðóçêà "' + file.name + '" íå óäàëàñü. "{1}": "{2}".', arguments);\r
- file = this.finishFile(file);\r
- file.element.addClass('file-failed');\r
- file.info.set('html', '<strong>' + error + '</strong><br />' + info);\r
- },\r
-\r
- onCancel: function() {\r
- this.log('Filebrowser cancelled.', arguments);\r
- this.status.removeClass('file-browsing');\r
- },\r
-\r
- onAllComplete: function(current) {\r
- this.log('Completed all files, ' + current.bytesTotal + ' bytes.', arguments);\r
- this.overallTitle.set('html', 'Îáùèé ñòàòóñ (' + this.sizeToKB(current.bytesTotal) + ')');\r
- this.overallProgress.start(100);\r
- this.status.removeClass('file-uploading');\r
- },\r
-\r
- browse: function(fileList) {\r
- var ret = this.parent(fileList);\r
- if (ret !== true){\r
- this.log('Browse in progress.');\r
- if (ret) alert(ret);\r
- } else {\r
- this.log('Browse started.');\r
- this.status.addClass('file-browsing');\r
- }\r
- },\r
-\r
- upload: function(options) {\r
- var ret = this.parent(options);\r
- if (ret !== true) {\r
- this.log('Upload in progress or nothing to upload.');\r
- if (ret) alert(ret);\r
- } else {\r
- this.log('Upload started.');\r
- this.status.addClass('file-uploading');\r
- this.overallProgress.set(0);\r
- }\r
- },\r
-\r
- removeFile: function(file) {\r
- if (!file) {\r
- this.files.each(this.removeFileElement, this);\r
- this.files.empty();\r
- } else {\r
- if (!file.element) file = this.getFile(file);\r
- this.files.erase(file);\r
- this.removeFileElement(file);\r
- }\r
- this.parent(file);\r
- },\r
-\r
- getFile: function(file) {\r
- var ret = null;\r
- this.files.some(function(value) {\r
- if ((value.name != file.name) || (value.size != file.size)) return false;\r
- ret = value;\r
- return true;\r
- });\r
- return ret;\r
- },\r
-\r
- removeFileElement: function(file) {\r
- file.element.fade('out').retrieve('tween').chain(Element.destroy.bind(Element, file.element));\r
- },\r
-\r
- finishFile: function(file) {\r
- file = this.getFile(file);\r
- file.element.removeClass('file-uploading');\r
- file.finished = true;\r
- return file;\r
- },\r
-\r
- createFileElement: function(file) {\r
- file.info = new Element('span', {'class': 'file-info'});\r
- file.element = new Element('li', {'class': 'file'}).adopt(\r
- new Element('span', {'class': 'file-size', 'html': this.sizeToKB(file.size)}),\r
- new Element('a', {\r
- 'class': 'file-remove',\r
- 'href': '#',\r
- 'html': 'Óáðàòü',\r
- 'events': {\r
- 'click': function() {\r
- this.removeFile(file);\r
- return false;\r
- }.bind(this)\r
- }\r
- }),\r
- new Element('span', {'class': 'file-name', 'html': file.name}),\r
- file.info\r
- ).inject(this.list);\r
- },\r
-\r
- sizeToKB: function(size) {\r
- var unit = 'B';\r
- if ((size / 1048576) > 1) {\r
- unit = 'MB';\r
- size /= 1048576;\r
- } else if ((size / 1024) > 1) {\r
- unit = 'kB';\r
- size /= 1024;\r
- }\r
- return size.round(1) + ' ' + unit;\r
- },\r
-\r
- log: function(text, args) {\r
- if (window.console) console.log(text.substitute(args || {}));\r
- }\r
-\r
-});\r
-\r
-Date.parseIntervals = function(sec, max) {\r
- var units = {}, conv = Date.durations, count = 0;\r
- for (var unit in conv) {\r
- var value = Math.floor(sec / conv[unit]);\r
- if (value) {\r
- units[unit] = value;\r
- if ((max && max <= ++count) || !(sec -= value * conv[unit])) break;\r
- }\r
- }\r
- return units;\r
-};\r
-\r
-Date.intervals = {y: 31556926, mo: 2629743.83, d: 86400, h: 3600, mi: 60, s: 1, ms: 0.001};\r
-}
\ No newline at end of file
+++ /dev/null
-/**\r
- * FancyUpload - Flash meets Ajax for simply working uploads\r
- *\r
- * @version 1.0\r
- *\r
- * @license MIT License\r
- *\r
- * @author Harald Kirschner <mail [at] digitarald [dot] de>\r
- * @copyright Authors\r
- */\r
-\r
-Fx.ProgressBar = new Class({\r
-\r
- Extends: Fx,\r
-\r
- options: {\r
- text: null,\r
- transition: Fx.Transitions.Circ.easeOut,\r
- link: 'cancel'\r
- },\r
-\r
- initialize: function(element, options) {\r
- this.element = $(element);\r
- this.parent(options);\r
- this.text = $(this.options.text);\r
- this.set(0);\r
- },\r
-\r
- start: function(to, total) {\r
- return this.parent(this.now, (arguments.length == 1) ? to.limit(0, 100) : to / total * 100);\r
- },\r
-\r
- set: function(to) {\r
- this.now = to;\r
- this.element.setStyle('backgroundPosition', (100 - to) + '% 0px');\r
- if (this.text) this.text.set('text', Math.round(to) + '%');\r
- return this;\r
- }\r
-\r
-});
\ No newline at end of file
+++ /dev/null
-/**\r
- * JsHttpRequest: JavaScript "AJAX" data loader\r
- * Minimized version: see debug directory for the complete one.\r
- *\r
- * @license LGPL\r
- * @author Dmitry Koterov, http://en.dklab.ru/lib/JsHttpRequest/\r
- * @version 5.x $Id$\r
- */\r
-function JsHttpRequest(){\r
-var t=this;\r
-t.onreadystatechange=null;\r
-t.readyState=0;\r
-t.responseText=null;\r
-t.responseXML=null;\r
-t.status=200;\r
-t.statusText="OK";\r
-t.responseJS=null;\r
-t.caching=false;\r
-t.loader=null;\r
-t.session_name="PHPSESSID";\r
-t._ldObj=null;\r
-t._reqHeaders=[];\r
-t._openArgs=null;\r
-t._errors={inv_form_el:"Invalid FORM element detected: name=%, tag=%",must_be_single_el:"If used, <form> must be a single HTML element in the list.",js_invalid:"JavaScript code generated by backend is invalid!\n%",url_too_long:"Cannot use so long query with GET request (URL is larger than % bytes)",unk_loader:"Unknown loader: %",no_loaders:"No loaders registered at all, please check JsHttpRequest.LOADERS array",no_loader_matched:"Cannot find a loader which may process the request. Notices are:\n%"};\r
-t.abort=function(){\r
-with(this){\r
-if(_ldObj&&_ldObj.abort){\r
-_ldObj.abort();\r
-}\r
-_cleanup();\r
-if(readyState==0){\r
-return;\r
-}\r
-if(readyState==1&&!_ldObj){\r
-readyState=0;\r
-return;\r
-}\r
-_changeReadyState(4,true);\r
-}\r
-};\r
-t.open=function(_2,_3,_4,_5,_6){\r
-with(this){\r
-if(_3.match(/^((\w+)\.)?(GET|POST)\s+(.*)/i)){\r
-this.loader=RegExp.$2?RegExp.$2:null;\r
-_2=RegExp.$3;\r
-_3=RegExp.$4;\r
-}\r
-try{\r
-if(document.location.search.match(new RegExp("[&?]"+session_name+"=([^&?]*)"))||document.cookie.match(new RegExp("(?:;|^)\\s*"+session_name+"=([^;]*)"))){\r
-_3+=(_3.indexOf("?")>=0?"&":"?")+session_name+"="+this.escape(RegExp.$1);\r
-}\r
-}\r
-catch(e){\r
-}\r
-_openArgs={method:(_2||"").toUpperCase(),url:_3,asyncFlag:_4,username:_5!=null?_5:"",password:_6!=null?_6:""};\r
-_ldObj=null;\r
-_changeReadyState(1,true);\r
-return true;\r
-}\r
-};\r
-t.send=function(_7){\r
-if(!this.readyState){\r
-return;\r
-}\r
-this._changeReadyState(1,true);\r
-this._ldObj=null;\r
-var _8=[];\r
-var _9=[];\r
-if(!this._hash2query(_7,null,_8,_9)){\r
-return;\r
-}\r
-var _a=null;\r
-if(this.caching&&!_9.length){\r
-_a=this._openArgs.username+":"+this._openArgs.password+"@"+this._openArgs.url+"|"+_8+"#"+this._openArgs.method;\r
-var _b=JsHttpRequest.CACHE[_a];\r
-if(_b){\r
-this._dataReady(_b[0],_b[1]);\r
-return false;\r
-}\r
-}\r
-var _c=(this.loader||"").toLowerCase();\r
-if(_c&&!JsHttpRequest.LOADERS[_c]){\r
-return this._error("unk_loader",_c);\r
-}\r
-var _d=[];\r
-var _e=JsHttpRequest.LOADERS;\r
-for(var _f in _e){\r
-var ldr=_e[_f].loader;\r
-if(!ldr){\r
-continue;\r
-}\r
-if(_c&&_f!=_c){\r
-continue;\r
-}\r
-var _11=new ldr(this);\r
-JsHttpRequest.extend(_11,this._openArgs);\r
-JsHttpRequest.extend(_11,{queryText:_8.join("&"),queryElem:_9,id:(new Date().getTime())+""+JsHttpRequest.COUNT++,hash:_a,span:null});\r
-var _12=_11.load();\r
-if(!_12){\r
-this._ldObj=_11;\r
-JsHttpRequest.PENDING[_11.id]=this;\r
-return true;\r
-}\r
-if(!_c){\r
-_d[_d.length]="- "+_f.toUpperCase()+": "+this._l(_12);\r
-}else{\r
-return this._error(_12);\r
-}\r
-}\r
-return _f?this._error("no_loader_matched",_d.join("\n")):this._error("no_loaders");\r
-};\r
-t.getAllResponseHeaders=function(){\r
-with(this){\r
-return _ldObj&&_ldObj.getAllResponseHeaders?_ldObj.getAllResponseHeaders():[];\r
-}\r
-};\r
-t.getResponseHeader=function(_13){\r
-with(this){\r
-return _ldObj&&_ldObj.getResponseHeader?_ldObj.getResponseHeader(_13):null;\r
-}\r
-};\r
-t.setRequestHeader=function(_14,_15){\r
-with(this){\r
-_reqHeaders[_reqHeaders.length]=[_14,_15];\r
-}\r
-};\r
-t._dataReady=function(_16,js){\r
-with(this){\r
-if(caching&&_ldObj){\r
-JsHttpRequest.CACHE[_ldObj.hash]=[_16,js];\r
-}\r
-responseText=responseXML=_16;\r
-responseJS=js;\r
-if(js!==null){\r
-status=200;\r
-statusText="OK";\r
-}else{\r
-status=500;\r
-statusText="Internal Server Error";\r
-}\r
-_changeReadyState(2);\r
-_changeReadyState(3);\r
-_changeReadyState(4);\r
-_cleanup();\r
-}\r
-};\r
-t._l=function(_18){\r
-var i=0,p=0,msg=this._errors[_18[0]];\r
-while((p=msg.indexOf("%",p))>=0){\r
-var a=_18[++i]+"";\r
-msg=msg.substring(0,p)+a+msg.substring(p+1,msg.length);\r
-p+=1+a.length;\r
-}\r
-return msg;\r
-};\r
-t._error=function(msg){\r
-msg=this._l(typeof (msg)=="string"?arguments:msg);\r
-msg="JsHttpRequest: "+msg;\r
-if(!window.Error){\r
-throw msg;\r
-}else{\r
-if((new Error(1,"test")).description=="test"){\r
-throw new Error(1,msg);\r
-}else{\r
-throw new Error(msg);\r
-}\r
-}\r
-};\r
-t._hash2query=function(_1e,_1f,_20,_21){\r
-if(_1f==null){\r
-_1f="";\r
-}\r
-if((""+typeof (_1e)).toLowerCase()=="object"){\r
-var _22=false;\r
-if(_1e&&_1e.parentNode&&_1e.parentNode.appendChild&&_1e.tagName&&_1e.tagName.toUpperCase()=="FORM"){\r
-_1e={form:_1e};\r
-}\r
-for(var k in _1e){\r
-var v=_1e[k];\r
-if(v instanceof Function){\r
-continue;\r
-}\r
-var _25=_1f?_1f+"["+this.escape(k)+"]":this.escape(k);\r
-var _26=v&&v.parentNode&&v.parentNode.appendChild&&v.tagName;\r
-if(_26){\r
-var tn=v.tagName.toUpperCase();\r
-if(tn=="FORM"){\r
-_22=true;\r
-}else{\r
-if(tn=="INPUT"||tn=="TEXTAREA"||tn=="SELECT"){\r
-}else{\r
-return this._error("inv_form_el",(v.name||""),v.tagName);\r
-}\r
-}\r
-_21[_21.length]={name:_25,e:v};\r
-}else{\r
-if(v instanceof Object){\r
-this._hash2query(v,_25,_20,_21);\r
-}else{\r
-if(v===null){\r
-continue;\r
-}\r
-if(v===true){\r
-v=1;\r
-}\r
-if(v===false){\r
-v="";\r
-}\r
-_20[_20.length]=_25+"="+this.escape(""+v);\r
-}\r
-}\r
-if(_22&&_21.length>1){\r
-return this._error("must_be_single_el");\r
-}\r
-}\r
-}else{\r
-_20[_20.length]=_1e;\r
-}\r
-return true;\r
-};\r
-t._cleanup=function(){\r
-var _28=this._ldObj;\r
-if(!_28){\r
-return;\r
-}\r
-JsHttpRequest.PENDING[_28.id]=false;\r
-var _29=_28.span;\r
-if(!_29){\r
-return;\r
-}\r
-_28.span=null;\r
-var _2a=function(){\r
-_29.parentNode.removeChild(_29);\r
-};\r
-JsHttpRequest.setTimeout(_2a,50);\r
-};\r
-t._changeReadyState=function(s,_2c){\r
-with(this){\r
-if(_2c){\r
-status=statusText=responseJS=null;\r
-responseText="";\r
-}\r
-readyState=s;\r
-if(onreadystatechange){\r
-onreadystatechange();\r
-}\r
-}\r
-};\r
-t.escape=function(s){\r
-return escape(s).replace(new RegExp("\\+","g"),"%2B");\r
-};\r
-}\r
-JsHttpRequest.COUNT=0;\r
-JsHttpRequest.MAX_URL_LEN=2000;\r
-JsHttpRequest.CACHE={};\r
-JsHttpRequest.PENDING={};\r
-JsHttpRequest.LOADERS={};\r
-JsHttpRequest._dummy=function(){\r
-};\r
-JsHttpRequest.TIMEOUTS={s:window.setTimeout,c:window.clearTimeout};\r
-JsHttpRequest.setTimeout=function(_2e,dt){\r
-window.JsHttpRequest_tmp=JsHttpRequest.TIMEOUTS.s;\r
-if(typeof (_2e)=="string"){\r
-id=window.JsHttpRequest_tmp(_2e,dt);\r
-}else{\r
-var id=null;\r
-var _31=function(){\r
-_2e();\r
-delete JsHttpRequest.TIMEOUTS[id];\r
-};\r
-id=window.JsHttpRequest_tmp(_31,dt);\r
-JsHttpRequest.TIMEOUTS[id]=_31;\r
-}\r
-window.JsHttpRequest_tmp=null;\r
-return id;\r
-};\r
-JsHttpRequest.clearTimeout=function(id){\r
-window.JsHttpRequest_tmp=JsHttpRequest.TIMEOUTS.c;\r
-delete JsHttpRequest.TIMEOUTS[id];\r
-var r=window.JsHttpRequest_tmp(id);\r
-window.JsHttpRequest_tmp=null;\r
-return r;\r
-};\r
-JsHttpRequest.query=function(url,_35,_36,_37){\r
-var req=new this();\r
-req.caching=!_37;\r
-req.onreadystatechange=function(){\r
-if(req.readyState==4){\r
-_36(req.responseJS,req.responseText);\r
-}\r
-};\r
-req.open(null,url,true);\r
-req.send(_35);\r
-};\r
-JsHttpRequest.dataReady=function(d){\r
-var th=this.PENDING[d.id];\r
-delete this.PENDING[d.id];\r
-if(th){\r
-th._dataReady(d.text,d.js);\r
-}else{\r
-if(th!==false){\r
-throw "dataReady(): unknown pending id: "+d.id;\r
-}\r
-}\r
-};\r
-JsHttpRequest.extend=function(_3b,src){\r
-for(var k in src){\r
-_3b[k]=src[k];\r
-}\r
-};\r
-JsHttpRequest.LOADERS.xml={loader:function(req){\r
-JsHttpRequest.extend(req._errors,{xml_no:"Cannot use XMLHttpRequest or ActiveX loader: not supported",xml_no_diffdom:"Cannot use XMLHttpRequest to load data from different domain %",xml_no_headers:"Cannot use XMLHttpRequest loader or ActiveX loader, POST method: headers setting is not supported, needed to work with encodings correctly",xml_no_form_upl:"Cannot use XMLHttpRequest loader: direct form elements using and uploading are not implemented"});\r
-this.load=function(){\r
-if(this.queryElem.length){\r
-return ["xml_no_form_upl"];\r
-}\r
-if(this.url.match(new RegExp("^([a-z]+://[^\\/]+)(.*)","i"))){\r
-if(RegExp.$1.toLowerCase()!=document.location.protocol+"//"+document.location.hostname.toLowerCase()){\r
-return ["xml_no_diffdom",RegExp.$1];\r
-}\r
-}\r
-var xr=null;\r
-if(window.XMLHttpRequest){\r
-try{\r
-xr=new XMLHttpRequest();\r
-}\r
-catch(e){\r
-}\r
-}else{\r
-if(window.ActiveXObject){\r
-try{\r
-xr=new ActiveXObject("Microsoft.XMLHTTP");\r
-}\r
-catch(e){\r
-}\r
-if(!xr){\r
-try{\r
-xr=new ActiveXObject("Msxml2.XMLHTTP");\r
-}\r
-catch(e){\r
-}\r
-}\r
-}\r
-}\r
-if(!xr){\r
-return ["xml_no"];\r
-}\r
-var _40=window.ActiveXObject||xr.setRequestHeader;\r
-if(!this.method){\r
-this.method=_40&&this.queryText.length?"POST":"GET";\r
-}\r
-if(this.method=="GET"){\r
-if(this.queryText){\r
-this.url+=(this.url.indexOf("?")>=0?"&":"?")+this.queryText;\r
-}\r
-this.queryText="";\r
-if(this.url.length>JsHttpRequest.MAX_URL_LEN){\r
-return ["url_too_long",JsHttpRequest.MAX_URL_LEN];\r
-}\r
-}else{\r
-if(this.method=="POST"&&!_40){\r
-return ["xml_no_headers"];\r
-}\r
-}\r
-this.url+=(this.url.indexOf("?")>=0?"&":"?")+"JsHttpRequest="+(req.caching?"0":this.id)+"-xml";\r
-var id=this.id;\r
-xr.onreadystatechange=function(){\r
-if(xr.readyState!=4){\r
-return;\r
-}\r
-xr.onreadystatechange=JsHttpRequest._dummy;\r
-req.status=null;\r
-try{\r
-req.status=xr.status;\r
-req.responseText=xr.responseText;\r
-}\r
-catch(e){\r
-}\r
-if(!req.status){\r
-return;\r
-}\r
-try{\r
-eval("JsHttpRequest._tmp = function(id) { var d = "+req.responseText+"; d.id = id; JsHttpRequest.dataReady(d); }");\r
-}\r
-catch(e){\r
-return req._error("js_invalid",req.responseText);\r
-}\r
-JsHttpRequest._tmp(id);\r
-JsHttpRequest._tmp=null;\r
-};\r
-xr.open(this.method,this.url,true,this.username,this.password);\r
-if(_40){\r
-for(var i=0;i<req._reqHeaders.length;i++){\r
-xr.setRequestHeader(req._reqHeaders[i][0],req._reqHeaders[i][1]);\r
-}\r
-xr.setRequestHeader("Content-Type","application/octet-stream");\r
-}\r
-xr.send(this.queryText);\r
-this.span=null;\r
-this.xr=xr;\r
-return null;\r
-};\r
-this.getAllResponseHeaders=function(){\r
-return this.xr.getAllResponseHeaders();\r
-};\r
-this.getResponseHeader=function(_43){\r
-return this.xr.getResponseHeader(_43);\r
-};\r
-this.abort=function(){\r
-this.xr.abort();\r
-this.xr=null;\r
-};\r
-}};\r
-JsHttpRequest.LOADERS.script={loader:function(req){\r
-JsHttpRequest.extend(req._errors,{script_only_get:"Cannot use SCRIPT loader: it supports only GET method",script_no_form:"Cannot use SCRIPT loader: direct form elements using and uploading are not implemented"});\r
-this.load=function(){\r
-if(this.queryText){\r
-this.url+=(this.url.indexOf("?")>=0?"&":"?")+this.queryText;\r
-}\r
-this.url+=(this.url.indexOf("?")>=0?"&":"?")+"JsHttpRequest="+this.id+"-"+"script";\r
-this.queryText="";\r
-if(!this.method){\r
-this.method="GET";\r
-}\r
-if(this.method!=="GET"){\r
-return ["script_only_get"];\r
-}\r
-if(this.queryElem.length){\r
-return ["script_no_form"];\r
-}\r
-if(this.url.length>JsHttpRequest.MAX_URL_LEN){\r
-return ["url_too_long",JsHttpRequest.MAX_URL_LEN];\r
-}\r
-var th=this,d=document,s=null,b=d.body;\r
-if(!window.opera){\r
-this.span=s=d.createElement("SCRIPT");\r
-var _49=function(){\r
-s.language="JavaScript";\r
-if(s.setAttribute){\r
-s.setAttribute("src",th.url);\r
-}else{\r
-s.src=th.url;\r
-}\r
-b.insertBefore(s,b.lastChild);\r
-};\r
-}else{\r
-this.span=s=d.createElement("SPAN");\r
-s.style.display="none";\r
-b.insertBefore(s,b.lastChild);\r
-s.innerHTML="Workaround for IE.<s"+"cript></"+"script>";\r
-var _49=function(){\r
-s=s.getElementsByTagName("SCRIPT")[0];\r
-s.language="JavaScript";\r
-if(s.setAttribute){\r
-s.setAttribute("src",th.url);\r
-}else{\r
-s.src=th.url;\r
-}\r
-};\r
-}\r
-JsHttpRequest.setTimeout(_49,10);\r
-return null;\r
-};\r
-}};\r
-JsHttpRequest.LOADERS.form={loader:function(req){\r
-JsHttpRequest.extend(req._errors,{form_el_not_belong:"Element \"%\" does not belong to any form!",form_el_belong_diff:"Element \"%\" belongs to a different form. All elements must belong to the same form!",form_el_inv_enctype:"Attribute \"enctype\" of the form must be \"%\" (for IE), \"%\" given."});\r
-this.load=function(){\r
-var th=this;\r
-if(!th.method){\r
-th.method="POST";\r
-}\r
-th.url+=(th.url.indexOf("?")>=0?"&":"?")+"JsHttpRequest="+th.id+"-"+"form";\r
-if(th.method=="GET"){\r
-if(th.queryText){\r
-th.url+=(th.url.indexOf("?")>=0?"&":"?")+th.queryText;\r
-}\r
-if(th.url.length>JsHttpRequest.MAX_URL_LEN){\r
-return ["url_too_long",JsHttpRequest.MAX_URL_LEN];\r
-}\r
-var p=th.url.split("?",2);\r
-th.url=p[0];\r
-th.queryText=p[1]||"";\r
-}\r
-var _4d=null;\r
-var _4e=false;\r
-if(th.queryElem.length){\r
-if(th.queryElem[0].e.tagName.toUpperCase()=="FORM"){\r
-_4d=th.queryElem[0].e;\r
-_4e=true;\r
-th.queryElem=[];\r
-}else{\r
-_4d=th.queryElem[0].e.form;\r
-for(var i=0;i<th.queryElem.length;i++){\r
-var e=th.queryElem[i].e;\r
-if(!e.form){\r
-return ["form_el_not_belong",e.name];\r
-}\r
-if(e.form!=_4d){\r
-return ["form_el_belong_diff",e.name];\r
-}\r
-}\r
-}\r
-if(th.method=="POST"){\r
-var _51="multipart/form-data";\r
-var _52=(_4d.attributes.encType&&_4d.attributes.encType.nodeValue)||(_4d.attributes.enctype&&_4d.attributes.enctype.value)||_4d.enctype;\r
-if(_52!=_51){\r
-return ["form_el_inv_enctype",_51,_52];\r
-}\r
-}\r
-}\r
-var d=_4d&&(_4d.ownerDocument||_4d.document)||document;\r
-var _54="jshr_i_"+th.id;\r
-var s=th.span=d.createElement("DIV");\r
-s.style.position="absolute";\r
-s.style.display="none";\r
-s.style.visibility="hidden";\r
-s.innerHTML=(_4d?"":"<form"+(th.method=="POST"?" enctype=\"multipart/form-data\" method=\"post\"":"")+"></form>")+"<iframe name=\""+_54+"\" id=\""+_54+"\" style=\"width:0px; height:0px; overflow:hidden; border:none\"></iframe>";\r
-if(!_4d){\r
-_4d=th.span.firstChild;\r
-}\r
-d.body.insertBefore(s,d.body.lastChild);\r
-var _56=function(e,_58){\r
-var sv=[];\r
-var _5a=e;\r
-if(e.mergeAttributes){\r
-var _5a=d.createElement("form");\r
-_5a.mergeAttributes(e,false);\r
-}\r
-for(var i=0;i<_58.length;i++){\r
-var k=_58[i][0],v=_58[i][1];\r
-sv[sv.length]=[k,_5a.getAttribute(k)];\r
-_5a.setAttribute(k,v);\r
-}\r
-if(e.mergeAttributes){\r
-e.mergeAttributes(_5a,false);\r
-}\r
-return sv;\r
-};\r
-var _5e=function(){\r
-top.JsHttpRequestGlobal=JsHttpRequest;\r
-var _5f=[];\r
-if(!_4e){\r
-for(var i=0,n=_4d.elements.length;i<n;i++){\r
-_5f[i]=_4d.elements[i].name;\r
-_4d.elements[i].name="";\r
-}\r
-}\r
-var qt=th.queryText.split("&");\r
-for(var i=qt.length-1;i>=0;i--){\r
-var _63=qt[i].split("=",2);\r
-var e=d.createElement("INPUT");\r
-e.type="hidden";\r
-e.name=unescape(_63[0]);\r
-e.value=_63[1]!=null?unescape(_63[1]):"";\r
-_4d.appendChild(e);\r
-}\r
-for(var i=0;i<th.queryElem.length;i++){\r
-th.queryElem[i].e.name=th.queryElem[i].name;\r
-}\r
-var sv=_56(_4d,[["action",th.url],["method",th.method],["onsubmit",null],["target",_54]]);\r
-_4d.submit();\r
-_56(_4d,sv);\r
-for(var i=0;i<qt.length;i++){\r
-_4d.lastChild.parentNode.removeChild(_4d.lastChild);\r
-}\r
-if(!_4e){\r
-for(var i=0,n=_4d.elements.length;i<n;i++){\r
-_4d.elements[i].name=_5f[i];\r
-}\r
-}\r
-};\r
-JsHttpRequest.setTimeout(_5e,100);\r
-return null;\r
-};\r
-}};\r
-\r
+++ /dev/null
-/**\r
- * Swiff.Uploader - Flash FileReference Control\r
- *\r
- * @version 1.1\r
- *\r
- * @license MIT License\r
- *\r
- * @author Harald Kirschner <mail [at] digitarald [dot] de>\r
- * @copyright Authors\r
- */\r
-\r
-Swiff.Uploader = new Class({\r
-\r
- Extends: Swiff,\r
-\r
- Implements: Events,\r
-\r
- options: {\r
- path: 'Swiff.Uploader.swf',\r
- multiple: true,\r
- queued: true,\r
- typeFilter: null,\r
- url: null,\r
- method: 'post',\r
- data: null,\r
- fieldName: 'Filedata',\r
- callBacks: null\r
- },\r
-\r
- initialize: function(options){\r
- if (Browser.Plugins.Flash.version < 9) return false;\r
- this.setOptions(options);\r
-\r
- var callBacks = this.options.callBacks || this;\r
- if (callBacks.onLoad) this.addEvent('onLoad', callBacks.onLoad);\r
-\r
- var prepare = {}, self = this;\r
- ['onSelect', 'onAllSelect', 'onCancel', 'onBeforeOpen', 'onOpen', 'onProgress', 'onComplete', 'onError', 'onAllComplete'].each(function(index) {\r
- var fn = (callBacks[index]) ? callBacks[index] : $empty;\r
- prepare[index] = function() {\r
- return fn.apply(self, arguments);\r
- };\r
- }, this);\r
-\r
- prepare.onLoad = this.load.create({delay: 10, bind: this});\r
- this.options.callBacks = prepare;\r
-\r
- var path = this.options.path;\r
- if (!path.contains('?')) path += '?noCache=' + $time(); // quick fix\r
-\r
- delete this.options.params.wMode;\r
- this.parent(path);\r
-\r
- if (!this.options.container) document.body.appendChild(this.object);\r
- return this;\r
- },\r
-\r
- load: function(){\r
- this.remote('register', this.instance, this.options.multiple, this.options.queued);\r
- this.fireEvent('onLoad');\r
- },\r
-\r
- /*\r
- Method: browse\r
- Open the file browser.\r
- */\r
-\r
- browse: function(typeFilter){\r
- return this.remote('browse', $pick(typeFilter, this.options.typeFilter));\r
- },\r
-\r
- /*\r
- Method: upload\r
- Starts the upload of all selected files.\r
- */\r
-\r
- upload: function(options){\r
- var current = this.options;\r
- options = $extend({data: current.data, url: current.url, method: current.method, fieldName: current.fieldName}, options);\r
- if ($type(options.data) == 'element') options.data = $(options.data).toQueryString();\r
- return this.remote('upload', options);\r
- },\r
-\r
- /*\r
- Method: removeFile\r
- For multiple uploads cancels and removes the given file from queue.\r
-\r
- Arguments:\r
- name - (string) Filename\r
- name - (string) Filesize in byte\r
- */\r
-\r
- removeFile: function(file){\r
- if (file) file = {name: file.name, size: file.size};\r
- return this.remote('removeFile', file);\r
- },\r
-\r
- /*\r
- Method: getFileList\r
- Returns one Array with with arrays containing name and size of the file.\r
-\r
- Returns:\r
- (array) An array with files\r
- */\r
-\r
- getFileList: function(){\r
- return this.remote('getFileList');\r
- }\r
-\r
-});\r
+++ /dev/null
-tinyMCEPopup.requireLangPack();\r
-\r
-var ImagesDialog = {\r
- init : function(ed) {\r
- tinyMCEPopup.resizeToInnerSize();\r
- },\r
-\r
- insert : function(file, title, width) {\r
- var ed = tinyMCEPopup.editor, dom = ed.dom;\r
-\r
- tinyMCEPopup.execCommand('mceInsertContent', false, dom.createHTML('img', {\r
- src : file,\r
- alt : title,\r
- title : title,\r
- width : width,\r
- /*height : 0,*/\r
- border : 0\r
- }));\r
-\r
- tinyMCEPopup.close();\r
- }\r
-};\r
-\r
-tinyMCEPopup.onInit.add(ImagesDialog.init, ImagesDialog);
\ No newline at end of file
+++ /dev/null
-/*\r
-Script: Core.js\r
- MooTools - My Object Oriented JavaScript Tools.\r
-\r
-License:\r
- MIT-style license.\r
-\r
-Copyright:\r
- Copyright (c) 2006-2007 [Valerio Proietti](http://mad4milk.net/).\r
-\r
-Code & Documentation:\r
- [The MooTools production team](http://mootools.net/developers/).\r
-\r
-Inspiration:\r
- - Class implementation inspired by [Base.js](http://dean.edwards.name/weblog/2006/03/base/) Copyright (c) 2006 Dean Edwards, [GNU Lesser General Public License](http://opensource.org/licenses/lgpl-license.php)\r
- - Some functionality inspired by [Prototype.js](http://prototypejs.org) Copyright (c) 2005-2007 Sam Stephenson, [MIT License](http://opensource.org/licenses/mit-license.php)\r
-*/\r
-\r
-var MooTools = {\r
- 'version': '1.2dev',\r
- 'build': '%build%'\r
-};\r
- \r
-var Native = function(options){\r
- options = options || {};\r
-\r
- var afterImplement = options.afterImplement || function(){};\r
- var generics = options.generics;\r
- generics = (generics !== false);\r
- var legacy = options.legacy;\r
- var initialize = options.initialize;\r
- var protect = options.protect;\r
- var name = options.name;\r
-\r
- var object = initialize || legacy;\r
-\r
- object.constructor = Native;\r
- object.$family = {name: 'native'};\r
- if (legacy && initialize) object.prototype = legacy.prototype;\r
- object.prototype.constructor = object;\r
-\r
- if (name){\r
- var family = name.toLowerCase();\r
- object.prototype.$family = {name: family};\r
- Native.typize(object, family);\r
- }\r
-\r
- var add = function(obj, name, method, force){\r
- if (!protect || force || !obj.prototype[name]) obj.prototype[name] = method;\r
- if (generics) Native.genericize(obj, name, protect);\r
- afterImplement.call(obj, name, method);\r
- return obj;\r
- };\r
- \r
- object.implement = function(a1, a2, a3){\r
- if (typeof a1 == 'string') return add(this, a1, a2, a3);\r
- for (var p in a1) add(this, p, a1[p], a2);\r
- return this;\r
- };\r
- \r
- object.alias = function(a1, a2, a3){\r
- if (typeof a1 == 'string'){\r
- a1 = this.prototype[a1];\r
- if (a1) add(this, a2, a1, a3);\r
- } else {\r
- for (var a in a1) this.alias(a, a1[a], a2);\r
- }\r
- return this;\r
- };\r
-\r
- return object;\r
-};\r
-\r
-Native.implement = function(objects, properties){\r
- for (var i = 0, l = objects.length; i < l; i++) objects[i].implement(properties);\r
-};\r
-\r
-Native.genericize = function(object, property, check){\r
- if ((!check || !object[property]) && typeof object.prototype[property] == 'function') object[property] = function(){\r
- var args = Array.prototype.slice.call(arguments);\r
- return object.prototype[property].apply(args.shift(), args);\r
- };\r
-};\r
-\r
-Native.typize = function(object, family){\r
- if (!object.type) object.type = function(item){\r
- return ($type(item) === family);\r
- };\r
-};\r
-\r
-Native.alias = function(objects, a1, a2, a3){\r
- for (var i = 0, j = objects.length; i < j; i++) objects[i].alias(a1, a2, a3);\r
-};\r
-\r
-(function(objects){\r
- for (var name in objects) Native.typize(objects[name], name.toLowerCase());\r
-})({'Boolean': Boolean, 'Native': Native, 'Object': Object});\r
-\r
-(function(objects){\r
- for (var name in objects) new Native({name: name, initialize: objects[name], protect: true});\r
-})({'String': String, 'Function': Function, 'Number': Number, 'Array': Array, 'RegExp': RegExp, 'Date': Date});\r
-\r
-(function(object, methods){\r
- for (var i = 0, l = methods.length; i < l; i++) Native.genericize(object, methods[i], true);\r
- return arguments.callee;\r
-})\r
-(Array, ['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift', 'concat', 'join', 'slice', 'toString', 'valueOf', 'indexOf', 'lastIndexOf'])\r
-(String, ['charAt', 'charCodeAt', 'concat', 'indexOf', 'lastIndexOf', 'match', 'replace', 'search', 'slice', 'split', 'substr', 'substring', 'toLowerCase', 'toUpperCase', 'valueOf']);\r
-\r
-function $chk(obj){\r
- return !!(obj || obj === 0);\r
-};\r
-\r
-function $clear(timer){\r
- clearTimeout(timer);\r
- clearInterval(timer);\r
- return null;\r
-};\r
-\r
-function $defined(obj){\r
- return (obj != undefined);\r
-};\r
-\r
-function $empty(){};\r
-\r
-function $arguments(i){\r
- return function(){\r
- return arguments[i];\r
- };\r
-};\r
-\r
-function $lambda(value){\r
- return (typeof value == 'function') ? value : function(){\r
- return value;\r
- };\r
-};\r
-\r
-function $extend(original, extended){\r
- for (var key in (extended || {})) original[key] = extended[key];\r
- return original;\r
-};\r
-\r
-function $unlink(object){\r
- var unlinked = null;\r
- \r
- switch ($type(object)){\r
- case 'object':\r
- unlinked = {};\r
- for (var p in object) unlinked[p] = $unlink(object[p]);\r
- break;\r
- case 'hash':\r
- unlinked = $unlink(object.getClean());\r
- break;\r
- case 'array':\r
- unlinked = [];\r
- for (var i = 0, l = object.length; i < l; i++) unlinked[i] = $unlink(object[i]);\r
- break;\r
- default: return object;\r
- }\r
- \r
- return unlinked;\r
-};\r
-\r
-function $merge(){\r
- var mix = {};\r
- for (var i = 0, l = arguments.length; i < l; i++){\r
- var object = arguments[i];\r
- if ($type(object) != 'object') continue;\r
- for (var key in object){\r
- var op = object[key], mp = mix[key];\r
- mix[key] = (mp && $type(op) == 'object' && $type(mp) == 'object') ? $merge(mp, op) : $unlink(op);\r
- }\r
- }\r
- return mix;\r
-};\r
-\r
-function $pick(){\r
- for (var i = 0, l = arguments.length; i < l; i++){\r
- if (arguments[i] != undefined) return arguments[i];\r
- }\r
- return null;\r
-};\r
-\r
-function $random(min, max){\r
- return Math.floor(Math.random() * (max - min + 1) + min);\r
-};\r
-\r
-function $splat(obj){\r
- var type = $type(obj);\r
- return (type) ? ((type != 'array' && type != 'arguments') ? [obj] : obj) : [];\r
-};\r
-\r
-var $time = Date.now || function(){\r
- return new Date().getTime();\r
-};\r
-\r
-function $try(){\r
- for (var i = 0, l = arguments.length; i < l; i++){\r
- try {\r
- return arguments[i]();\r
- } catch(e){}\r
- }\r
- return null;\r
-};\r
-\r
-function $type(obj){\r
- if (obj == undefined) return false;\r
- if (obj.$family) return (obj.$family.name == 'number' && !isFinite(obj)) ? false : obj.$family.name;\r
- if (obj.nodeName){\r
- switch (obj.nodeType){\r
- case 1: return 'element';\r
- case 3: return (/\S/).test(obj.nodeValue) ? 'textnode' : 'whitespace';\r
- }\r
- } else if (typeof obj.length == 'number'){\r
- if (obj.callee) return 'arguments';\r
- else if (obj.item) return 'collection';\r
- }\r
- return typeof obj;\r
-};\r
-\r
-var Hash = new Native({\r
-\r
- name: 'Hash',\r
-\r
- initialize: function(object){\r
- if ($type(object) == 'hash') object = $unlink(object.getClean());\r
- for (var key in object) this[key] = object[key];\r
- return this;\r
- }\r
-\r
-});\r
-\r
-Hash.implement({\r
- \r
- getLength: function(){\r
- var length = 0;\r
- for (var key in this){\r
- if (this.hasOwnProperty(key)) length++;\r
- }\r
- return length;\r
- },\r
-\r
- forEach: function(fn, bind){\r
- for (var key in this){\r
- if (this.hasOwnProperty(key)) fn.call(bind, this[key], key, this);\r
- }\r
- },\r
- \r
- getClean: function(){\r
- var clean = {};\r
- for (var key in this){\r
- if (this.hasOwnProperty(key)) clean[key] = this[key];\r
- }\r
- return clean;\r
- }\r
-\r
-});\r
-\r
-Hash.alias('forEach', 'each');\r
-\r
-function $H(object){\r
- return new Hash(object);\r
-};\r
-\r
-Array.implement({\r
-\r
- forEach: function(fn, bind){\r
- for (var i = 0, l = this.length; i < l; i++) fn.call(bind, this[i], i, this);\r
- }\r
-\r
-});\r
-\r
-Array.alias('forEach', 'each');\r
-\r
-function $A(iterable){\r
- if (iterable.item){\r
- var array = [];\r
- for (var i = 0, l = iterable.length; i < l; i++) array[i] = iterable[i];\r
- return array;\r
- }\r
- return Array.prototype.slice.call(iterable);\r
-};\r
-\r
-function $each(iterable, fn, bind){\r
- var type = $type(iterable);\r
- ((type == 'arguments' || type == 'collection' || type == 'array') ? Array : Hash).each(iterable, fn, bind);\r
-};\r
-/*\r
-Script: Browser.js\r
- The Browser Core. Contains Browser initialization, Window and Document, and the Browser Hash.\r
-\r
-License:\r
- MIT-style license.\r
-*/\r
-\r
-var Browser = new Hash({\r
- Engine: {name: 'unknown', version: ''},\r
- Platform: {name: (navigator.platform.match(/mac|win|linux/i) || ['other'])[0].toLowerCase()},\r
- Features: {xpath: !!(document.evaluate), air: !!(window.runtime)},\r
- Plugins: {}\r
-});\r
-\r
-if (window.opera) Browser.Engine = {name: 'presto', version: (document.getElementsByClassName) ? 950 : 925};\r
-else if (window.ActiveXObject) Browser.Engine = {name: 'trident', version: (window.XMLHttpRequest) ? 5 : 4};\r
-else if (!navigator.taintEnabled) Browser.Engine = {name: 'webkit', version: (Browser.Features.xpath) ? 420 : 419};\r
-else if (document.getBoxObjectFor != null) Browser.Engine = {name: 'gecko', version: (document.getElementsByClassName) ? 19 : 18};\r
-Browser.Engine[Browser.Engine.name] = Browser.Engine[Browser.Engine.name + Browser.Engine.version] = true;\r
-\r
-if (window.orientation != undefined) Browser.Platform.name = 'ipod';\r
-\r
-Browser.Platform[Browser.Platform.name] = true;\r
-\r
-Browser.Request = function(){\r
- return $try(function(){\r
- return new XMLHttpRequest();\r
- }, function(){\r
- return new ActiveXObject('MSXML2.XMLHTTP');\r
- });\r
-};\r
-\r
-Browser.Features.xhr = !!(Browser.Request());\r
-\r
-Browser.Plugins.Flash = (function(){\r
- var version = ($try(function(){\r
- return navigator.plugins['Shockwave Flash'].description;\r
- }, function(){\r
- return new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version');\r
- }) || '0 r0').match(/\d+/g);\r
- return {version: parseInt(version[0] || 0 + '.' + version[1] || 0), build: parseInt(version[2] || 0)};\r
-})();\r
-\r
-function $exec(text){\r
- if (!text) return text;\r
- if (window.execScript){\r
- window.execScript(text);\r
- } else {\r
- var script = document.createElement('script');\r
- script.setAttribute('type', 'text/javascript');\r
- script.text = text;\r
- document.head.appendChild(script);\r
- document.head.removeChild(script);\r
- }\r
- return text;\r
-};\r
-\r
-Native.UID = 1;\r
-\r
-var $uid = (Browser.Engine.trident) ? function(item){\r
- return (item.uid || (item.uid = [Native.UID++]))[0];\r
-} : function(item){\r
- return item.uid || (item.uid = Native.UID++);\r
-};\r
-\r
-var Window = new Native({\r
-\r
- name: 'Window',\r
-\r
- legacy: (Browser.Engine.trident) ? null: window.Window,\r
-\r
- initialize: function(win){\r
- $uid(win);\r
- if (!win.Element){\r
- win.Element = $empty;\r
- if (Browser.Engine.webkit) win.document.createElement("iframe"); //fixes safari 2\r
- win.Element.prototype = (Browser.Engine.webkit) ? window["[[DOMElement.prototype]]"] : {};\r
- }\r
- return $extend(win, Window.Prototype);\r
- },\r
-\r
- afterImplement: function(property, value){\r
- window[property] = Window.Prototype[property] = value;\r
- }\r
-\r
-});\r
-\r
-Window.Prototype = {$family: {name: 'window'}};\r
-\r
-new Window(window);\r
-\r
-var Document = new Native({\r
-\r
- name: 'Document',\r
-\r
- legacy: (Browser.Engine.trident) ? null: window.Document,\r
-\r
- initialize: function(doc){\r
- $uid(doc);\r
- doc.head = doc.getElementsByTagName('head')[0];\r
- doc.html = doc.getElementsByTagName('html')[0];\r
- doc.window = doc.defaultView || doc.parentWindow;\r
- if (Browser.Engine.trident4) $try(function(){\r
- doc.execCommand("BackgroundImageCache", false, true);\r
- });\r
- return $extend(doc, Document.Prototype);\r
- },\r
-\r
- afterImplement: function(property, value){\r
- document[property] = Document.Prototype[property] = value;\r
- }\r
-\r
-});\r
-\r
-Document.Prototype = {$family: {name: 'document'}};\r
-\r
-new Document(document);/*\r
-Script: Array.js\r
- Contains Array Prototypes like copy, each, contains, and remove.\r
-\r
-License:\r
- MIT-style license.\r
-*/\r
-\r
-Array.implement({\r
-\r
- every: function(fn, bind){\r
- for (var i = 0, l = this.length; i < l; i++){\r
- if (!fn.call(bind, this[i], i, this)) return false;\r
- }\r
- return true;\r
- },\r
-\r
- filter: function(fn, bind){\r
- var results = [];\r
- for (var i = 0, l = this.length; i < l; i++){\r
- if (fn.call(bind, this[i], i, this)) results.push(this[i]);\r
- }\r
- return results;\r
- },\r
- \r
- clean: function() {\r
- return this.filter($defined);\r
- },\r
-\r
- indexOf: function(item, from){\r
- var len = this.length;\r
- for (var i = (from < 0) ? Math.max(0, len + from) : from || 0; i < len; i++){\r
- if (this[i] === item) return i;\r
- }\r
- return -1;\r
- },\r
-\r
- map: function(fn, bind){\r
- var results = [];\r
- for (var i = 0, l = this.length; i < l; i++) results[i] = fn.call(bind, this[i], i, this);\r
- return results;\r
- },\r
-\r
- some: function(fn, bind){\r
- for (var i = 0, l = this.length; i < l; i++){\r
- if (fn.call(bind, this[i], i, this)) return true;\r
- }\r
- return false;\r
- },\r
-\r
- associate: function(keys){\r
- var obj = {}, length = Math.min(this.length, keys.length);\r
- for (var i = 0; i < length; i++) obj[keys[i]] = this[i];\r
- return obj;\r
- },\r
-\r
- link: function(object){\r
- var result = {};\r
- for (var i = 0, l = this.length; i < l; i++){\r
- for (var key in object){\r
- if (object[key](this[i])){\r
- result[key] = this[i];\r
- delete object[key];\r
- break;\r
- }\r
- }\r
- }\r
- return result;\r
- },\r
-\r
- contains: function(item, from){\r
- return this.indexOf(item, from) != -1;\r
- },\r
-\r
- extend: function(array){\r
- for (var i = 0, j = array.length; i < j; i++) this.push(array[i]);\r
- return this;\r
- },\r
-\r
- getLast: function(){\r
- return (this.length) ? this[this.length - 1] : null;\r
- },\r
-\r
- getRandom: function(){\r
- return (this.length) ? this[$random(0, this.length - 1)] : null;\r
- },\r
-\r
- include: function(item){\r
- if (!this.contains(item)) this.push(item);\r
- return this;\r
- },\r
-\r
- combine: function(array){\r
- for (var i = 0, l = array.length; i < l; i++) this.include(array[i]);\r
- return this;\r
- },\r
-\r
- erase: function(item){\r
- for (var i = this.length; i--; i){\r
- if (this[i] === item) this.splice(i, 1);\r
- }\r
- return this;\r
- },\r
-\r
- empty: function(){\r
- this.length = 0;\r
- return this;\r
- },\r
-\r
- flatten: function(){\r
- var array = [];\r
- for (var i = 0, l = this.length; i < l; i++){\r
- var type = $type(this[i]);\r
- if (!type) continue;\r
- array = array.concat((type == 'array' || type == 'collection' || type == 'arguments') ? Array.flatten(this[i]) : this[i]);\r
- }\r
- return array;\r
- },\r
-\r
- hexToRgb: function(array){\r
- if (this.length != 3) return null;\r
- var rgb = this.map(function(value){\r
- if (value.length == 1) value += value;\r
- return value.toInt(16);\r
- });\r
- return (array) ? rgb : 'rgb(' + rgb + ')';\r
- },\r
-\r
- rgbToHex: function(array){\r
- if (this.length < 3) return null;\r
- if (this.length == 4 && this[3] == 0 && !array) return 'transparent';\r
- var hex = [];\r
- for (var i = 0; i < 3; i++){\r
- var bit = (this[i] - 0).toString(16);\r
- hex.push((bit.length == 1) ? '0' + bit : bit);\r
- }\r
- return (array) ? hex : '#' + hex.join('');\r
- }\r
-\r
-});/*\r
-Script: Function.js\r
- Contains Function Prototypes like create, bind, pass, and delay.\r
-\r
-License:\r
- MIT-style license.\r
-*/\r
-\r
-Function.implement({\r
-\r
- extend: function(properties){\r
- for (var property in properties) this[property] = properties[property];\r
- return this;\r
- },\r
-\r
- create: function(options){\r
- var self = this;\r
- options = options || {};\r
- return function(event){\r
- var args = options.arguments;\r
- args = (args != undefined) ? $splat(args) : Array.slice(arguments, (options.event) ? 1 : 0);\r
- if (options.event) args = [event || window.event].extend(args);\r
- var returns = function(){\r
- return self.apply(options.bind || null, args);\r
- };\r
- if (options.delay) return setTimeout(returns, options.delay);\r
- if (options.periodical) return setInterval(returns, options.periodical);\r
- if (options.attempt) return $try(returns);\r
- return returns();\r
- };\r
- },\r
-\r
- pass: function(args, bind){\r
- return this.create({arguments: args, bind: bind});\r
- },\r
-\r
- attempt: function(args, bind){\r
- return this.create({arguments: args, bind: bind, attempt: true})();\r
- },\r
-\r
- bind: function(bind, args){\r
- return this.create({bind: bind, arguments: args});\r
- },\r
-\r
- bindWithEvent: function(bind, args){\r
- return this.create({bind: bind, event: true, arguments: args});\r
- },\r
-\r
- delay: function(delay, bind, args){\r
- return this.create({delay: delay, bind: bind, arguments: args})();\r
- },\r
-\r
- periodical: function(interval, bind, args){\r
- return this.create({periodical: interval, bind: bind, arguments: args})();\r
- },\r
-\r
- run: function(args, bind){\r
- return this.apply(bind, $splat(args));\r
- }\r
-\r
-});/*\r
-Script: Number.js\r
- Contains Number Prototypes like limit, round, times, and ceil.\r
-\r
-License:\r
- MIT-style license.\r
-*/\r
-\r
-Number.implement({\r
-\r
- limit: function(min, max){\r
- return Math.min(max, Math.max(min, this));\r
- },\r
-\r
- round: function(precision){\r
- precision = Math.pow(10, precision || 0);\r
- return Math.round(this * precision) / precision;\r
- },\r
-\r
- times: function(fn, bind){\r
- for (var i = 0; i < this; i++) fn.call(bind, i, this);\r
- },\r
-\r
- toFloat: function(){\r
- return parseFloat(this);\r
- },\r
-\r
- toInt: function(base){\r
- return parseInt(this, base || 10);\r
- }\r
-\r
-});\r
-\r
-Number.alias('times', 'each');\r
-\r
-(function(math){\r
- var methods = {};\r
- math.each(function(name){\r
- if (!Number[name]) methods[name] = function(){\r
- return Math[name].apply(null, [this].concat($A(arguments)));\r
- };\r
- });\r
- Number.implement(methods);\r
-})(['abs', 'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'exp', 'floor', 'log', 'max', 'min', 'pow', 'sin', 'sqrt', 'tan']);/*\r
-Script: String.js\r
- Contains String Prototypes like camelCase, capitalize, test, and toInt.\r
-\r
-License:\r
- MIT-style license.\r
-*/\r
-\r
-String.implement({\r
-\r
- test: function(regex, params){\r
- return ((typeof regex == 'string') ? new RegExp(regex, params) : regex).test(this);\r
- },\r
-\r
- contains: function(string, separator){\r
- return (separator) ? (separator + this + separator).indexOf(separator + string + separator) > -1 : this.indexOf(string) > -1;\r
- },\r
-\r
- trim: function(){\r
- return this.replace(/^\s+|\s+$/g, '');\r
- },\r
-\r
- clean: function(){\r
- return this.replace(/\s+/g, ' ').trim();\r
- },\r
-\r
- camelCase: function(){\r
- return this.replace(/-\D/g, function(match){\r
- return match.charAt(1).toUpperCase();\r
- });\r
- },\r
-\r
- hyphenate: function(){\r
- return this.replace(/[A-Z]/g, function(match){\r
- return ('-' + match.charAt(0).toLowerCase());\r
- });\r
- },\r
-\r
- capitalize: function(){\r
- return this.replace(/\b[a-z]/g, function(match){\r
- return match.toUpperCase();\r
- });\r
- },\r
-\r
- escapeRegExp: function(){\r
- return this.replace(/([-.*+?^${}()|[\]\/\\])/g, '\\$1');\r
- },\r
-\r
- toInt: function(base){\r
- return parseInt(this, base || 10);\r
- },\r
-\r
- toFloat: function(){\r
- return parseFloat(this);\r
- },\r
-\r
- hexToRgb: function(array){\r
- var hex = this.match(/^#?(\w{1,2})(\w{1,2})(\w{1,2})$/);\r
- return (hex) ? hex.slice(1).hexToRgb(array) : null;\r
- },\r
-\r
- rgbToHex: function(array){\r
- var rgb = this.match(/\d{1,3}/g);\r
- return (rgb) ? rgb.rgbToHex(array) : null;\r
- },\r
-\r
- stripScripts: function(option){\r
- var scripts = '';\r
- var text = this.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi, function(){\r
- scripts += arguments[1] + '\n';\r
- return '';\r
- });\r
- if (option === true) $exec(scripts);\r
- else if ($type(option) == 'function') option(scripts, text);\r
- return text;\r
- },\r
-\r
- substitute: function(object, regexp){\r
- return this.replace(regexp || (/\\?\{([^}]+)\}/g), function(match, name){\r
- if (match.charAt(0) == '\\') return match.slice(1);\r
- return (object[name] != undefined) ? object[name] : '';\r
- });\r
- }\r
-\r
-});/*\r
-Script: Hash.js\r
- Contains Hash Prototypes. Provides a means for overcoming the JavaScript practical impossibility of extending native Objects.\r
-\r
-License:\r
- MIT-style license.\r
-*/\r
-\r
-Hash.implement({\r
-\r
- has: Object.prototype.hasOwnProperty,\r
-\r
- keyOf: function(value){\r
- for (var key in this){\r
- if (this.hasOwnProperty(key) && this[key] === value) return key;\r
- }\r
- return null;\r
- },\r
-\r
- hasValue: function(value){\r
- return (Hash.keyOf(this, value) !== null);\r
- },\r
-\r
- extend: function(properties){\r
- Hash.each(properties, function(value, key){\r
- Hash.set(this, key, value);\r
- }, this);\r
- return this;\r
- },\r
-\r
- combine: function(properties){\r
- Hash.each(properties, function(value, key){\r
- Hash.include(this, key, value);\r
- }, this);\r
- return this;\r
- },\r
-\r
- erase: function(key){\r
- if (this.hasOwnProperty(key)) delete this[key];\r
- return this;\r
- },\r
-\r
- get: function(key){\r
- return (this.hasOwnProperty(key)) ? this[key] : null;\r
- },\r
-\r
- set: function(key, value){\r
- if (!this[key] || this.hasOwnProperty(key)) this[key] = value;\r
- return this;\r
- },\r
-\r
- empty: function(){\r
- Hash.each(this, function(value, key){\r
- delete this[key];\r
- }, this);\r
- return this;\r
- },\r
-\r
- include: function(key, value){\r
- var k = this[key];\r
- if (k == undefined) this[key] = value;\r
- return this;\r
- },\r
-\r
- map: function(fn, bind){\r
- var results = new Hash;\r
- Hash.each(this, function(value, key){\r
- results.set(key, fn.call(bind, value, key, this));\r
- }, this);\r
- return results;\r
- },\r
-\r
- filter: function(fn, bind){\r
- var results = new Hash;\r
- Hash.each(this, function(value, key){\r
- if (fn.call(bind, value, key, this)) results.set(key, value);\r
- }, this);\r
- return results;\r
- },\r
-\r
- every: function(fn, bind){\r
- for (var key in this){\r
- if (this.hasOwnProperty(key) && !fn.call(bind, this[key], key)) return false;\r
- }\r
- return true;\r
- },\r
-\r
- some: function(fn, bind){\r
- for (var key in this){\r
- if (this.hasOwnProperty(key) && fn.call(bind, this[key], key)) return true;\r
- }\r
- return false;\r
- },\r
-\r
- getKeys: function(){\r
- var keys = [];\r
- Hash.each(this, function(value, key){\r
- keys.push(key);\r
- });\r
- return keys;\r
- },\r
-\r
- getValues: function(){\r
- var values = [];\r
- Hash.each(this, function(value){\r
- values.push(value);\r
- });\r
- return values;\r
- },\r
- \r
- toQueryString: function(base){\r
- var queryString = [];\r
- Hash.each(this, function(value, key){\r
- if (base) key = base + '[' + key + ']';\r
- var result;\r
- switch ($type(value)){\r
- case 'object': result = Hash.toQueryString(value, key); break;\r
- case 'array':\r
- var qs = {};\r
- value.each(function(val, i){\r
- qs[i] = val;\r
- });\r
- result = Hash.toQueryString(qs, key);\r
- break;\r
- default: result = key + '=' + encodeURIComponent(value);\r
- }\r
- if (value != undefined) queryString.push(result);\r
- });\r
- \r
- return queryString.join('&');\r
- }\r
-\r
-});\r
-\r
-Hash.alias({keyOf: 'indexOf', hasValue: 'contains'});/*\r
-Script: Event.js\r
- Contains the Event Native, to make the event object completely crossbrowser.\r
-\r
-License:\r
- MIT-style license.\r
-*/\r
-\r
-var Event = new Native({\r
-\r
- name: 'Event',\r
-\r
- initialize: function(event, win){\r
- win = win || window;\r
- var doc = win.document;\r
- event = event || win.event;\r
- if (event.$extended) return event;\r
- this.$extended = true;\r
- var type = event.type;\r
- var target = event.target || event.srcElement;\r
- while (target && target.nodeType == 3) target = target.parentNode;\r
- \r
- if (type.test(/key/)){\r
- var code = event.which || event.keyCode;\r
- var key = Event.Keys.keyOf(code);\r
- if (type == 'keydown'){\r
- var fKey = code - 111;\r
- if (fKey > 0 && fKey < 13) key = 'f' + fKey;\r
- }\r
- key = key || String.fromCharCode(code).toLowerCase();\r
- } else if (type.match(/(click|mouse|menu)/i)){\r
- doc = (!doc.compatMode || doc.compatMode == 'CSS1Compat') ? doc.html : doc.body;\r
- var page = {\r
- x: event.pageX || event.clientX + doc.scrollLeft,\r
- y: event.pageY || event.clientY + doc.scrollTop\r
- };\r
- var client = {\r
- x: (event.pageX) ? event.pageX - win.pageXOffset : event.clientX,\r
- y: (event.pageY) ? event.pageY - win.pageYOffset : event.clientY\r
- };\r
- if (type.match(/DOMMouseScroll|mousewheel/)){\r
- var wheel = (event.wheelDelta) ? event.wheelDelta / 120 : -(event.detail || 0) / 3;\r
- }\r
- var rightClick = (event.which == 3) || (event.button == 2);\r
- var related = null;\r
- if (type.match(/over|out/)){\r
- switch (type){\r
- case 'mouseover': related = event.relatedTarget || event.fromElement; break;\r
- case 'mouseout': related = event.relatedTarget || event.toElement;\r
- }\r
- if (!(function(){\r
- while (related && related.nodeType == 3) related = related.parentNode;\r
- return true;\r
- }).create({attempt: Browser.Engine.gecko})()) related = false;\r
- }\r
- }\r
-\r
- return $extend(this, {\r
- event: event,\r
- type: type,\r
- \r
- page: page,\r
- client: client,\r
- rightClick: rightClick,\r
- \r
- wheel: wheel,\r
- \r
- relatedTarget: related,\r
- target: target,\r
- \r
- code: code,\r
- key: key,\r
- \r
- shift: event.shiftKey,\r
- control: event.ctrlKey,\r
- alt: event.altKey,\r
- meta: event.metaKey\r
- });\r
- }\r
-\r
-});\r
-\r
-Event.Keys = new Hash({\r
- 'enter': 13,\r
- 'up': 38,\r
- 'down': 40,\r
- 'left': 37,\r
- 'right': 39,\r
- 'esc': 27,\r
- 'space': 32,\r
- 'backspace': 8,\r
- 'tab': 9,\r
- 'delete': 46\r
-});\r
-\r
-Event.implement({\r
-\r
- stop: function(){\r
- return this.stopPropagation().preventDefault();\r
- },\r
-\r
- stopPropagation: function(){\r
- if (this.event.stopPropagation) this.event.stopPropagation();\r
- else this.event.cancelBubble = true;\r
- return this;\r
- },\r
-\r
- preventDefault: function(){\r
- if (this.event.preventDefault) this.event.preventDefault();\r
- else this.event.returnValue = false;\r
- return this;\r
- }\r
-\r
-});/*\r
-Script: Class.js\r
- Contains the Class Function for easily creating, extending, and implementing reusable Classes.\r
-\r
-License:\r
- MIT-style license.\r
-*/\r
-\r
-var Class = new Native({\r
-\r
- name: 'Class',\r
-\r
- initialize: function(properties){\r
-\r
- properties = properties || {};\r
-\r
- var klass = function(empty){\r
- \r
- for (var key in this) this[key] = $unlink(this[key]);\r
-\r
- for (var mutator in Class.Mutators){\r
- if (!this[mutator]) continue;\r
- Class.Mutators[mutator](this, this[mutator]);\r
- delete this[mutator];\r
- }\r
-\r
- this.constructor = klass;\r
- \r
- if (empty === $empty) return this;\r
- \r
- var self = (this.initialize) ? this.initialize.apply(this, arguments) : this;\r
- if (this.options && this.options.initialize) this.options.initialize.call(this);\r
-\r
- return self;\r
- };\r
-\r
- $extend(klass, this);\r
- klass.constructor = Class;\r
- klass.prototype = properties;\r
- return klass;\r
- }\r
-\r
-});\r
-\r
-Class.implement({\r
-\r
- implement: function(){\r
- Class.Mutators.Implements(this.prototype, Array.slice(arguments));\r
- return this;\r
- }\r
-\r
-});\r
-\r
-Class.Mutators = {};\r
-\r
-Class.Mutators.Implements = function(self, klasses){\r
- $splat(klasses).each(function(klass){\r
- $extend(self, ($type(klass) == 'class') ? new klass($empty) : klass);\r
- });\r
-};\r
-\r
-Class.Mutators.Extends = function(self, klass){\r
- \r
- var instance = new klass($empty);\r
- \r
- delete instance.parent;\r
- delete instance.parentOf;\r
- \r
- for (var key in instance){\r
-\r
- var current = self[key], previous = instance[key];\r
- \r
- if (current == undefined){\r
- self[key] = previous;\r
- continue;\r
- }\r
-\r
- var ctype = $type(current), ptype = $type(previous);\r
- \r
- if (ctype != ptype) continue;\r
- \r
- switch (ctype){\r
- case 'function': \r
- \r
- // opera does not support function.caller, so we replace the function code with brute force. Not pretty, but its just for opera.\r
- // if future opera versions will support function.caller, this code wont be executed anymore.\r
- // this code will be only executed if the current browser does not support function.caller (only opera).\r
- // there is also a fix for an opera bug where in the function string, parentheses around numbers are ignored, and an error is thrown.\r
- \r
- if (!arguments.callee.caller) self[key] = eval('(' + String(current).replace(/\bthis\.parent\(\s*(\))?/g, function(full, close){\r
- return 'arguments.callee._parent_.call(this' + (close || ', ');\r
- }).replace(/(\d+)\.([A-Za-z_])/g, '($1).$2') + ')');\r
- \r
- // end "opera" code\r
- \r
- self[key]._parent_ = previous;\r
- break;\r
- case 'object': self[key] = $merge(previous, current);\r
- }\r
- \r
- }\r
- \r
- self.parent = function(){\r
- return arguments.callee.caller._parent_.apply(this, arguments);\r
- };\r
- \r
- self.parentOf = function(descendant){\r
- return descendant._parent_.apply(this, Array.slice(arguments, 1));\r
- };\r
-\r
-};/*\r
-Script: Class.Extras.js\r
- Contains Utility Classes that can be implemented into your own Classes to ease the execution of many common tasks.\r
-\r
-License:\r
- MIT-style license.\r
-*/\r
-\r
-var Chain = new Class({\r
-\r
- chain: function(){\r
- this.$chain = (this.$chain || []).extend(arguments);\r
- return this;\r
- },\r
-\r
- callChain: function(){\r
- return (this.$chain && this.$chain.length) ? this.$chain.shift().apply(this, arguments) : false;\r
- },\r
-\r
- clearChain: function(){\r
- if (this.$chain) this.$chain.empty();\r
- return this;\r
- }\r
-\r
-});\r
-\r
-var Events = new Class({\r
-\r
- addEvent: function(type, fn, internal){\r
- if (fn != $empty){\r
- this.$events = this.$events || {};\r
- this.$events[type] = this.$events[type] || [];\r
- this.$events[type].include(fn);\r
- if (internal) fn.internal = true;\r
- }\r
- return this;\r
- },\r
-\r
- addEvents: function(events){\r
- for (var type in events) this.addEvent(type, events[type]);\r
- return this;\r
- },\r
-\r
- fireEvent: function(type, args, delay){\r
- if (!this.$events || !this.$events[type]) return this;\r
- this.$events[type].each(function(fn){\r
- fn.create({'bind': this, 'delay': delay, 'arguments': args})();\r
- }, this);\r
- return this;\r
- },\r
-\r
- removeEvent: function(type, fn){\r
- if (!this.$events || !this.$events[type]) return this;\r
- if (!fn.internal) this.$events[type].erase(fn);\r
- return this;\r
- },\r
-\r
- removeEvents: function(type){\r
- for (var e in this.$events){\r
- if (type && type != e) continue;\r
- var fns = this.$events[e];\r
- for (var i = fns.length; i--; i) this.removeEvent(e, fns[i]);\r
- }\r
- return this;\r
- }\r
-\r
-});\r
-\r
-var Options = new Class({\r
-\r
- setOptions: function(){\r
- this.options = $merge.run([this.options].extend(arguments));\r
- if (!this.addEvent) return this;\r
- for (var option in this.options){\r
- if ($type(this.options[option]) != 'function' || !(/^on[A-Z]/).test(option)) continue;\r
- this.addEvent(option, this.options[option]);\r
- delete this.options[option];\r
- }\r
- return this;\r
- }\r
-\r
-});/*\r
-Script: Element.js\r
- One of the most important items in MooTools. Contains the dollar function, the dollars function, and an handful of cross-browser,\r
- time-saver methods to let you easily work with HTML Elements.\r
-\r
-License:\r
- MIT-style license.\r
-*/\r
-\r
-Document.implement({\r
-\r
- newElement: function(tag, props){\r
- if (Browser.Engine.trident && props){\r
- ['name', 'type', 'checked'].each(function(attribute){\r
- if (!props[attribute]) return;\r
- tag += ' ' + attribute + '="' + props[attribute] + '"';\r
- if (attribute != 'checked') delete props[attribute];\r
- });\r
- tag = '<' + tag + '>';\r
- }\r
- return $.element(this.createElement(tag)).set(props);\r
- },\r
-\r
- newTextNode: function(text){\r
- return this.createTextNode(text);\r
- },\r
-\r
- getDocument: function(){\r
- return this;\r
- },\r
-\r
- getWindow: function(){\r
- return this.defaultView || this.parentWindow;\r
- },\r
-\r
- purge: function(){\r
- var elements = this.getElementsByTagName('*');\r
- for (var i = 0, l = elements.length; i < l; i++) Browser.freeMem(elements[i]);\r
- }\r
-\r
-});\r
-\r
-var Element = new Native({\r
-\r
- name: 'Element',\r
-\r
- legacy: window.Element,\r
-\r
- initialize: function(tag, props){\r
- var konstructor = Element.Constructors.get(tag);\r
- if (konstructor) return konstructor(props);\r
- if (typeof tag == 'string') return document.newElement(tag, props);\r
- return $(tag).set(props);\r
- },\r
-\r
- afterImplement: function(key, value){\r
- if (!Array[key]) Elements.implement(key, Elements.multi(key));\r
- Element.Prototype[key] = value;\r
- }\r
-\r
-});\r
-\r
-Element.Prototype = {$family: {name: 'element'}};\r
-\r
-Element.Constructors = new Hash;\r
-\r
-var IFrame = new Native({\r
-\r
- name: 'IFrame',\r
-\r
- generics: false,\r
-\r
- initialize: function(){\r
- var params = Array.link(arguments, {properties: Object.type, iframe: $defined});\r
- var props = params.properties || {};\r
- var iframe = $(params.iframe) || false;\r
- var onload = props.onload || $empty;\r
- delete props.onload;\r
- props.id = props.name = $pick(props.id, props.name, iframe.id, iframe.name, 'IFrame_' + $time());\r
- iframe = new Element(iframe || 'iframe', props);\r
- var onFrameLoad = function(){\r
- var host = $try(function(){\r
- return iframe.contentWindow.location.host;\r
- });\r
- if (host && host == window.location.host){\r
- var win = new Window(iframe.contentWindow);\r
- var doc = new Document(iframe.contentWindow.document);\r
- $extend(win.Element.prototype, Element.Prototype);\r
- }\r
- onload.call(iframe.contentWindow, iframe.contentWindow.document);\r
- };\r
- (!window.frames[props.id]) ? iframe.addListener('load', onFrameLoad) : onFrameLoad();\r
- return iframe;\r
- }\r
-\r
-});\r
-\r
-var Elements = new Native({\r
-\r
- initialize: function(elements, options){\r
- options = $extend({ddup: true, cash: true}, options);\r
- elements = elements || [];\r
- if (options.ddup || options.cash){\r
- var uniques = {}, returned = [];\r
- for (var i = 0, l = elements.length; i < l; i++){\r
- var el = $.element(elements[i], !options.cash);\r
- if (options.ddup){\r
- if (uniques[el.uid]) continue;\r
- uniques[el.uid] = true;\r
- }\r
- returned.push(el);\r
- }\r
- elements = returned;\r
- }\r
- return (options.cash) ? $extend(elements, this) : elements;\r
- }\r
-\r
-});\r
-\r
-Elements.implement({\r
-\r
- filter: function(filter, bind){\r
- if (!filter) return this;\r
- return new Elements(Array.filter(this, (typeof filter == 'string') ? function(item){\r
- return item.match(filter);\r
- } : filter, bind));\r
- }\r
-\r
-});\r
-\r
-Elements.multi = function(property){\r
- return function(){\r
- var items = [];\r
- var elements = true;\r
- for (var i = 0, j = this.length; i < j; i++){\r
- var returns = this[i][property].apply(this[i], arguments);\r
- items.push(returns);\r
- if (elements) elements = ($type(returns) == 'element');\r
- }\r
- return (elements) ? new Elements(items) : items;\r
- };\r
-};\r
-\r
-Window.implement({\r
-\r
- $: function(el, nocash){\r
- if (el && el.$family && el.uid) return el;\r
- var type = $type(el);\r
- return ($[type]) ? $[type](el, nocash, this.document) : null;\r
- },\r
-\r
- $$: function(selector){\r
- if (arguments.length == 1 && typeof selector == 'string') return this.document.getElements(selector);\r
- var elements = [];\r
- var args = Array.flatten(arguments);\r
- for (var i = 0, l = args.length; i < l; i++){\r
- var item = args[i];\r
- switch ($type(item)){\r
- case 'element': item = [item]; break;\r
- case 'string': item = this.document.getElements(item, true); break;\r
- default: item = false;\r
- }\r
- if (item) elements.extend(item);\r
- }\r
- return new Elements(elements);\r
- },\r
-\r
- getDocument: function(){\r
- return this.document;\r
- },\r
-\r
- getWindow: function(){\r
- return this;\r
- }\r
-\r
-});\r
-\r
-$.string = function(id, nocash, doc){\r
- id = doc.getElementById(id);\r
- return (id) ? $.element(id, nocash) : null;\r
-};\r
-\r
-$.element = function(el, nocash){\r
- $uid(el);\r
- if (!nocash && !el.$family && !(/^object|embed$/i).test(el.tagName)){\r
- var proto = Element.Prototype;\r
- for (var p in proto) el[p] = proto[p];\r
- };\r
- return el;\r
-};\r
-\r
-$.object = function(obj, nocash, doc){\r
- if (obj.toElement) return $.element(obj.toElement(doc), nocash);\r
- return null;\r
-};\r
-\r
-$.textnode = $.whitespace = $.window = $.document = $arguments(0);\r
-\r
-Native.implement([Element, Document], {\r
-\r
- getElement: function(selector, nocash){\r
- return $(this.getElements(selector, true)[0] || null, nocash);\r
- },\r
-\r
- getElements: function(tags, nocash){\r
- tags = tags.split(',');\r
- var elements = [];\r
- var ddup = (tags.length > 1);\r
- tags.each(function(tag){\r
- var partial = this.getElementsByTagName(tag.trim());\r
- (ddup) ? elements.extend(partial) : elements = partial;\r
- }, this);\r
- return new Elements(elements, {ddup: ddup, cash: !nocash});\r
- }\r
-\r
-});\r
-\r
-Element.Storage = {\r
-\r
- get: function(uid){\r
- return (this[uid] || (this[uid] = {}));\r
- }\r
-\r
-};\r
-\r
-Element.Inserters = new Hash({\r
-\r
- before: function(context, element){\r
- if (element.parentNode) element.parentNode.insertBefore(context, element);\r
- },\r
-\r
- after: function(context, element){\r
- if (!element.parentNode) return;\r
- var next = element.nextSibling;\r
- (next) ? element.parentNode.insertBefore(context, next) : element.parentNode.appendChild(context);\r
- },\r
-\r
- bottom: function(context, element){\r
- element.appendChild(context);\r
- },\r
-\r
- top: function(context, element){\r
- var first = element.firstChild;\r
- (first) ? element.insertBefore(context, first) : element.appendChild(context);\r
- }\r
-\r
-});\r
-\r
-Element.Inserters.inside = Element.Inserters.bottom;\r
-\r
-Element.Inserters.each(function(value, key){\r
-\r
- var Key = key.capitalize();\r
-\r
- Element.implement('inject' + Key, function(el){\r
- value(this, $(el, true));\r
- return this;\r
- });\r
-\r
- Element.implement('grab' + Key, function(el){\r
- value($(el, true), this);\r
- return this;\r
- });\r
-\r
-});\r
-\r
-Element.implement({\r
-\r
- getDocument: function(){\r
- return this.ownerDocument;\r
- },\r
-\r
- getWindow: function(){\r
- return this.ownerDocument.getWindow();\r
- },\r
-\r
- getElementById: function(id, nocash){\r
- var el = this.ownerDocument.getElementById(id);\r
- if (!el) return null;\r
- for (var parent = el.parentNode; parent != this; parent = parent.parentNode){\r
- if (!parent) return null;\r
- }\r
- return $.element(el, nocash);\r
- },\r
-\r
- set: function(prop, value){\r
- switch ($type(prop)){\r
- case 'object':\r
- for (var p in prop) this.set(p, prop[p]);\r
- break;\r
- case 'string':\r
- var property = Element.Properties.get(prop);\r
- (property && property.set) ? property.set.apply(this, Array.slice(arguments, 1)) : this.setProperty(prop, value);\r
- }\r
- return this;\r
- },\r
-\r
- get: function(prop){\r
- var property = Element.Properties.get(prop);\r
- return (property && property.get) ? property.get.apply(this, Array.slice(arguments, 1)) : this.getProperty(prop);\r
- },\r
-\r
- erase: function(prop){\r
- var property = Element.Properties.get(prop);\r
- (property && property.erase) ? property.erase.apply(this, Array.slice(arguments, 1)) : this.removeProperty(prop);\r
- return this;\r
- },\r
-\r
- match: function(tag){\r
- return (!tag || Element.get(this, 'tag') == tag);\r
- },\r
-\r
- inject: function(el, where){\r
- Element.Inserters.get(where || 'bottom')(this, $(el, true));\r
- return this;\r
- },\r
-\r
- wraps: function(el, where){\r
- el = $(el, true);\r
- return this.replaces(el).grab(el, where);\r
- },\r
-\r
- grab: function(el, where){\r
- Element.Inserters.get(where || 'bottom')($(el, true), this);\r
- return this;\r
- },\r
-\r
- appendText: function(text, where){\r
- return this.grab(this.getDocument().newTextNode(text), where);\r
- },\r
-\r
- adopt: function(){\r
- Array.flatten(arguments).each(function(element){\r
- element = $(element, true);\r
- if (element) this.appendChild(element);\r
- }, this);\r
- return this;\r
- },\r
-\r
- dispose: function(){\r
- return (this.parentNode) ? this.parentNode.removeChild(this) : this;\r
- },\r
-\r
- clone: function(contents, keepid){\r
- switch ($type(this)){\r
- case 'element':\r
- var attributes = {};\r
- for (var j = 0, l = this.attributes.length; j < l; j++){\r
- var attribute = this.attributes[j], key = attribute.nodeName.toLowerCase();\r
- var value = (key == 'style' && this.style) ? this.style.cssText : attribute.nodeValue;\r
- if (!$chk(value) || key == 'uid' || (key == 'id' && !keepid)) continue;\r
- if (value != 'inherit' && ['string', 'number'].contains($type(value))) attributes[key] = value;\r
- }\r
- var element = new Element(this.nodeName.toLowerCase(), attributes);\r
- if (contents !== false){\r
- for (var i = 0, k = this.childNodes.length; i < k; i++){\r
- var child = Element.clone(this.childNodes[i], true, keepid);\r
- if (child) element.grab(child);\r
- }\r
- }\r
- return element;\r
- case 'textnode': return document.newTextNode(this.nodeValue);\r
- }\r
- return null;\r
- },\r
-\r
- replaces: function(el){\r
- el = $(el, true);\r
- el.parentNode.replaceChild(this, el);\r
- return this;\r
- },\r
-\r
- hasClass: function(className){\r
- return this.className.contains(className, ' ');\r
- },\r
-\r
- addClass: function(className){\r
- if (!this.hasClass(className)) this.className = (this.className + ' ' + className).clean();\r
- return this;\r
- },\r
-\r
- removeClass: function(className){\r
- this.className = this.className.replace(new RegExp('(^|\\s)' + className + '(?:\\s|$)'), '$1').clean();\r
- return this;\r
- },\r
-\r
- toggleClass: function(className){\r
- return this.hasClass(className) ? this.removeClass(className) : this.addClass(className);\r
- },\r
-\r
- getComputedStyle: function(property){\r
- if (this.currentStyle) return this.currentStyle[property.camelCase()];\r
- var computed = this.getWindow().getComputedStyle(this, null);\r
- return (computed) ? computed.getPropertyValue([property.hyphenate()]) : null;\r
- },\r
-\r
- empty: function(){\r
- $A(this.childNodes).each(function(node){\r
- Browser.freeMem(node);\r
- Element.empty(node);\r
- Element.dispose(node);\r
- }, this);\r
- return this;\r
- },\r
-\r
- destroy: function(){\r
- Browser.freeMem(this.empty().dispose());\r
- return null;\r
- },\r
-\r
- getSelected: function(){\r
- return new Elements($A(this.options).filter(function(option){\r
- return option.selected;\r
- }));\r
- },\r
-\r
- toQueryString: function(){\r
- var queryString = [];\r
- this.getElements('input, select, textarea').each(function(el){\r
- if (!el.name || el.disabled) return;\r
- var value = (el.tagName.toLowerCase() == 'select') ? Element.getSelected(el).map(function(opt){\r
- return opt.value;\r
- }) : ((el.type == 'radio' || el.type == 'checkbox') && !el.checked) ? null : el.value;\r
- $splat(value).each(function(val){\r
- if (val) queryString.push(el.name + '=' + encodeURIComponent(val));\r
- });\r
- });\r
- return queryString.join('&');\r
- },\r
-\r
- getProperty: function(attribute){\r
- var EA = Element.Attributes, key = EA.Props[attribute];\r
- var value = (key) ? this[key] : this.getAttribute(attribute, 2);\r
- return (EA.Bools[attribute]) ? !!value : (key) ? value : value || null;\r
- },\r
-\r
- getProperties: function(){\r
- var args = $A(arguments);\r
- return args.map(function(attr){\r
- return this.getProperty(attr);\r
- }, this).associate(args);\r
- },\r
-\r
- setProperty: function(attribute, value){\r
- var EA = Element.Attributes, key = EA.Props[attribute], hasValue = $defined(value);\r
- if (key && EA.Bools[attribute]) value = (value || !hasValue) ? true : false;\r
- else if (!hasValue) return this.removeProperty(attribute);\r
- (key) ? this[key] = value : this.setAttribute(attribute, value);\r
- return this;\r
- },\r
-\r
- setProperties: function(attributes){\r
- for (var attribute in attributes) this.setProperty(attribute, attributes[attribute]);\r
- return this;\r
- },\r
-\r
- removeProperty: function(attribute){\r
- var EA = Element.Attributes, key = EA.Props[attribute], isBool = (key && EA.Bools[attribute]);\r
- (key) ? this[key] = (isBool) ? false : '' : this.removeAttribute(attribute);\r
- return this;\r
- },\r
-\r
- removeProperties: function(){\r
- Array.each(arguments, this.removeProperty, this);\r
- return this;\r
- }\r
-\r
-});\r
-\r
-(function(){\r
-\r
-var walk = function(element, walk, start, match, all, nocash){\r
- var el = element[start || walk];\r
- var elements = [];\r
- while (el){\r
- if (el.nodeType == 1 && (!match || Element.match(el, match))){\r
- elements.push(el);\r
- if (!all) break;\r
- }\r
- el = el[walk];\r
- }\r
- return (all) ? new Elements(elements, {ddup: false, cash: !nocash}) : $(elements[0], nocash);\r
-};\r
-\r
-Element.implement({\r
-\r
- getPrevious: function(match, nocash){\r
- return walk(this, 'previousSibling', null, match, false, nocash);\r
- },\r
-\r
- getAllPrevious: function(match, nocash){\r
- return walk(this, 'previousSibling', null, match, true, nocash);\r
- },\r
-\r
- getNext: function(match, nocash){\r
- return walk(this, 'nextSibling', null, match, false, nocash);\r
- },\r
-\r
- getAllNext: function(match, nocash){\r
- return walk(this, 'nextSibling', null, match, true, nocash);\r
- },\r
-\r
- getFirst: function(match, nocash){\r
- return walk(this, 'nextSibling', 'firstChild', match, false, nocash);\r
- },\r
-\r
- getLast: function(match, nocash){\r
- return walk(this, 'previousSibling', 'lastChild', match, false, nocash);\r
- },\r
-\r
- getParent: function(match, nocash){\r
- return walk(this, 'parentNode', null, match, false, nocash);\r
- },\r
-\r
- getParents: function(match, nocash){\r
- return walk(this, 'parentNode', null, match, true, nocash);\r
- },\r
-\r
- getChildren: function(match, nocash){\r
- return walk(this, 'nextSibling', 'firstChild', match, true, nocash);\r
- },\r
-\r
- hasChild: function(el){\r
- el = $(el, true);\r
- return (!!el && $A(this.getElementsByTagName(el.tagName)).contains(el));\r
- }\r
-\r
-});\r
-\r
-})();\r
-\r
-Element.Properties = new Hash;\r
-\r
-Element.Properties.style = {\r
-\r
- set: function(style){\r
- this.style.cssText = style;\r
- },\r
-\r
- get: function(){\r
- return this.style.cssText;\r
- },\r
-\r
- erase: function(){\r
- this.style.cssText = '';\r
- }\r
-\r
-};\r
-\r
-Element.Properties.tag = {get: function(){\r
- return this.tagName.toLowerCase();\r
-}};\r
-\r
-Element.Properties.href = {get: function(){\r
- return (!this.href) ? null : this.href.replace(new RegExp('^' + document.location.protocol + '\/\/' + document.location.host), '');\r
-}};\r
-\r
-Element.Properties.html = {set: function(){\r
- return this.innerHTML = Array.flatten(arguments).join('');\r
-}};\r
-\r
-Native.implement([Element, Window, Document], {\r
-\r
- addListener: function(type, fn){\r
- if (this.addEventListener) this.addEventListener(type, fn, false);\r
- else this.attachEvent('on' + type, fn);\r
- return this;\r
- },\r
-\r
- removeListener: function(type, fn){\r
- if (this.removeEventListener) this.removeEventListener(type, fn, false);\r
- else this.detachEvent('on' + type, fn);\r
- return this;\r
- },\r
-\r
- retrieve: function(property, dflt){\r
- var storage = Element.Storage.get(this.uid);\r
- var prop = storage[property];\r
- if ($defined(dflt) && !$defined(prop)) prop = storage[property] = dflt;\r
- return $pick(prop);\r
- },\r
-\r
- store: function(property, value){\r
- var storage = Element.Storage.get(this.uid);\r
- storage[property] = value;\r
- return this;\r
- },\r
-\r
- eliminate: function(property){\r
- var storage = Element.Storage.get(this.uid);\r
- delete storage[property];\r
- return this;\r
- }\r
-\r
-});\r
-\r
-Element.Attributes = new Hash({\r
- Props: {'html': 'innerHTML', 'class': 'className', 'for': 'htmlFor', 'text': (Browser.Engine.trident) ? 'innerText' : 'textContent'},\r
- Bools: ['compact', 'nowrap', 'ismap', 'declare', 'noshade', 'checked', 'disabled', 'readonly', 'multiple', 'selected', 'noresize', 'defer'],\r
- Camels: ['value', 'accessKey', 'cellPadding', 'cellSpacing', 'colSpan', 'frameBorder', 'maxLength', 'readOnly', 'rowSpan', 'tabIndex', 'useMap']\r
-});\r
-\r
-Browser.freeMem = function(item){\r
- if (!item) return;\r
- if (Browser.Engine.trident && (/object/i).test(item.tagName)){\r
- for (var p in item){\r
- if (typeof item[p] == 'function') item[p] = $empty;\r
- }\r
- Element.dispose(item);\r
- }\r
- if (item.uid && item.removeEvents) item.removeEvents();\r
-};\r
-\r
-(function(EA){\r
-\r
- var EAB = EA.Bools, EAC = EA.Camels;\r
- EA.Bools = EAB = EAB.associate(EAB);\r
- Hash.extend(Hash.combine(EA.Props, EAB), EAC.associate(EAC.map(function(v){\r
- return v.toLowerCase();\r
- })));\r
- EA.erase('Camels');\r
-\r
-})(Element.Attributes);\r
-\r
-window.addListener('unload', function(){\r
- window.removeListener('unload', arguments.callee);\r
- document.purge();\r
- if (Browser.Engine.trident) CollectGarbage();\r
-});/*\r
-Script: Element.Event.js\r
- Contains Element methods for dealing with events, and custom Events.\r
-\r
-License:\r
- MIT-style license.\r
-*/\r
-\r
-Element.Properties.events = {set: function(events){\r
- this.addEvents(events);\r
-}};\r
-\r
-Native.implement([Element, Window, Document], {\r
-\r
- addEvent: function(type, fn){\r
- var events = this.retrieve('events', {});\r
- events[type] = events[type] || {'keys': [], 'values': []};\r
- if (events[type].keys.contains(fn)) return this;\r
- events[type].keys.push(fn);\r
- var realType = type, custom = Element.Events.get(type), condition = fn, self = this;\r
- if (custom){\r
- if (custom.onAdd) custom.onAdd.call(this, fn);\r
- if (custom.condition){\r
- condition = function(event){\r
- if (custom.condition.call(this, event)) return fn.call(this, event);\r
- return false;\r
- };\r
- }\r
- realType = custom.base || realType;\r
- }\r
- var defn = function(){\r
- return fn.call(self);\r
- };\r
- var nativeEvent = Element.NativeEvents[realType] || 0;\r
- if (nativeEvent){\r
- if (nativeEvent == 2){\r
- defn = function(event){\r
- event = new Event(event, self.getWindow());\r
- if (condition.call(self, event) === false) event.stop();\r
- };\r
- }\r
- this.addListener(realType, defn);\r
- }\r
- events[type].values.push(defn);\r
- return this;\r
- },\r
-\r
- removeEvent: function(type, fn){\r
- var events = this.retrieve('events');\r
- if (!events || !events[type]) return this;\r
- var pos = events[type].keys.indexOf(fn);\r
- if (pos == -1) return this;\r
- var key = events[type].keys.splice(pos, 1)[0];\r
- var value = events[type].values.splice(pos, 1)[0];\r
- var custom = Element.Events.get(type);\r
- if (custom){\r
- if (custom.onRemove) custom.onRemove.call(this, fn);\r
- type = custom.base || type;\r
- }\r
- return (Element.NativeEvents[type]) ? this.removeListener(type, value) : this;\r
- },\r
-\r
- addEvents: function(events){\r
- for (var event in events) this.addEvent(event, events[event]);\r
- return this;\r
- },\r
-\r
- removeEvents: function(type){\r
- var events = this.retrieve('events');\r
- if (!events) return this;\r
- if (!type){\r
- for (var evType in events) this.removeEvents(evType);\r
- events = null;\r
- } else if (events[type]){\r
- while (events[type].keys[0]) this.removeEvent(type, events[type].keys[0]);\r
- events[type] = null;\r
- }\r
- return this;\r
- },\r
-\r
- fireEvent: function(type, args, delay){\r
- var events = this.retrieve('events');\r
- if (!events || !events[type]) return this;\r
- events[type].keys.each(function(fn){\r
- fn.create({'bind': this, 'delay': delay, 'arguments': args})();\r
- }, this);\r
- return this;\r
- },\r
-\r
- cloneEvents: function(from, type){\r
- from = $(from);\r
- var fevents = from.retrieve('events');\r
- if (!fevents) return this;\r
- if (!type){\r
- for (var evType in fevents) this.cloneEvents(from, evType);\r
- } else if (fevents[type]){\r
- fevents[type].keys.each(function(fn){\r
- this.addEvent(type, fn);\r
- }, this);\r
- }\r
- return this;\r
- }\r
-\r
-});\r
-\r
-Element.NativeEvents = {\r
- click: 2, dblclick: 2, mouseup: 2, mousedown: 2, contextmenu: 2, //mouse buttons\r
- mousewheel: 2, DOMMouseScroll: 2, //mouse wheel\r
- mouseover: 2, mouseout: 2, mousemove: 2, selectstart: 2, selectend: 2, //mouse movement\r
- keydown: 2, keypress: 2, keyup: 2, //keyboard\r
- focus: 2, blur: 2, change: 2, reset: 2, select: 2, submit: 2, //form elements\r
- load: 1, unload: 1, beforeunload: 2, resize: 1, move: 1, DOMContentLoaded: 1, readystatechange: 1, //window\r
- error: 1, abort: 1, scroll: 1 //misc\r
-};\r
-\r
-(function(){\r
-\r
-var $check = function(event){\r
- var related = event.relatedTarget;\r
- if (related == undefined) return true;\r
- if (related === false) return false;\r
- return ($type(this) != 'document' && related != this && related.prefix != 'xul' && !this.hasChild(related));\r
-};\r
-\r
-Element.Events = new Hash({\r
-\r
- mouseenter: {\r
- base: 'mouseover',\r
- condition: $check\r
- },\r
-\r
- mouseleave: {\r
- base: 'mouseout',\r
- condition: $check\r
- },\r
-\r
- mousewheel: {\r
- base: (Browser.Engine.gecko) ? 'DOMMouseScroll' : 'mousewheel'\r
- }\r
-\r
-});\r
-\r
-})();/*\r
-Script: Element.Style.js\r
- Contains methods for interacting with the styles of Elements in a fashionable way.\r
-\r
-License:\r
- MIT-style license.\r
-*/\r
-\r
-Element.Properties.styles = {set: function(styles){\r
- this.setStyles(styles);\r
-}};\r
-\r
-Element.Properties.opacity = {\r
-\r
- set: function(opacity, novisibility){\r
- if (!novisibility){\r
- if (opacity == 0){\r
- if (this.style.visibility != 'hidden') this.style.visibility = 'hidden';\r
- } else {\r
- if (this.style.visibility != 'visible') this.style.visibility = 'visible';\r
- }\r
- }\r
- if (!this.currentStyle || !this.currentStyle.hasLayout) this.style.zoom = 1;\r
- if (Browser.Engine.trident) this.style.filter = (opacity == 1) ? '' : 'alpha(opacity=' + opacity * 100 + ')';\r
- this.style.opacity = opacity;\r
- this.store('opacity', opacity);\r
- },\r
-\r
- get: function(){\r
- return this.retrieve('opacity', 1);\r
- }\r
-\r
-};\r
-\r
-Element.implement({\r
- \r
- setOpacity: function(value){\r
- return this.set('opacity', value, true);\r
- },\r
- \r
- getOpacity: function(){\r
- return this.get('opacity');\r
- },\r
-\r
- setStyle: function(property, value){\r
- switch (property){\r
- case 'opacity': return this.set('opacity', parseFloat(value));\r
- case 'float': property = (Browser.Engine.trident) ? 'styleFloat' : 'cssFloat';\r
- }\r
- property = property.camelCase();\r
- if ($type(value) != 'string'){\r
- var map = (Element.Styles.get(property) || '@').split(' ');\r
- value = $splat(value).map(function(val, i){\r
- if (!map[i]) return '';\r
- return ($type(val) == 'number') ? map[i].replace('@', Math.round(val)) : val;\r
- }).join(' ');\r
- } else if (value == String(Number(value))){\r
- value = Math.round(value);\r
- }\r
- this.style[property] = value;\r
- return this;\r
- },\r
-\r
- getStyle: function(property){\r
- switch (property){\r
- case 'opacity': return this.get('opacity');\r
- case 'float': property = (Browser.Engine.trident) ? 'styleFloat' : 'cssFloat';\r
- }\r
- property = property.camelCase();\r
- var result = this.style[property];\r
- if (!$chk(result)){\r
- result = [];\r
- for (var style in Element.ShortStyles){\r
- if (property != style) continue;\r
- for (var s in Element.ShortStyles[style]) result.push(this.getStyle(s));\r
- return result.join(' ');\r
- }\r
- result = this.getComputedStyle(property);\r
- }\r
- if (result){\r
- result = String(result);\r
- var color = result.match(/rgba?\([\d\s,]+\)/);\r
- if (color) result = result.replace(color[0], color[0].rgbToHex());\r
- }\r
- if (Browser.Engine.presto || (Browser.Engine.trident && !$chk(parseInt(result)))){\r
- if (property.test(/^(height|width)$/)){\r
- var values = (property == 'width') ? ['left', 'right'] : ['top', 'bottom'], size = 0;\r
- values.each(function(value){\r
- size += this.getStyle('border-' + value + '-width').toInt() + this.getStyle('padding-' + value).toInt();\r
- }, this);\r
- return this['offset' + property.capitalize()] - size + 'px';\r
- }\r
- if (Browser.Engine.presto && String(result).test('px')) return result;\r
- if (property.test(/(border(.+)Width|margin|padding)/)) return '0px';\r
- }\r
- return result;\r
- },\r
-\r
- setStyles: function(styles){\r
- for (var style in styles) this.setStyle(style, styles[style]);\r
- return this;\r
- },\r
-\r
- getStyles: function(){\r
- var result = {};\r
- Array.each(arguments, function(key){\r
- result[key] = this.getStyle(key);\r
- }, this);\r
- return result;\r
- }\r
-\r
-});\r
-\r
-Element.Styles = new Hash({\r
- left: '@px', top: '@px', bottom: '@px', right: '@px',\r
- width: '@px', height: '@px', maxWidth: '@px', maxHeight: '@px', minWidth: '@px', minHeight: '@px',\r
- backgroundColor: 'rgb(@, @, @)', backgroundPosition: '@px @px', color: 'rgb(@, @, @)',\r
- fontSize: '@px', letterSpacing: '@px', lineHeight: '@px', clip: 'rect(@px @px @px @px)',\r
- margin: '@px @px @px @px', padding: '@px @px @px @px', border: '@px @ rgb(@, @, @) @px @ rgb(@, @, @) @px @ rgb(@, @, @)',\r
- borderWidth: '@px @px @px @px', borderStyle: '@ @ @ @', borderColor: 'rgb(@, @, @) rgb(@, @, @) rgb(@, @, @) rgb(@, @, @)',\r
- zIndex: '@', 'zoom': '@', fontWeight: '@', textIndent: '@px', opacity: '@'\r
-});\r
-\r
-Element.ShortStyles = {margin: {}, padding: {}, border: {}, borderWidth: {}, borderStyle: {}, borderColor: {}};\r
-\r
-['Top', 'Right', 'Bottom', 'Left'].each(function(direction){\r
- var Short = Element.ShortStyles;\r
- var All = Element.Styles;\r
- ['margin', 'padding'].each(function(style){\r
- var sd = style + direction;\r
- Short[style][sd] = All[sd] = '@px';\r
- });\r
- var bd = 'border' + direction;\r
- Short.border[bd] = All[bd] = '@px @ rgb(@, @, @)';\r
- var bdw = bd + 'Width', bds = bd + 'Style', bdc = bd + 'Color';\r
- Short[bd] = {};\r
- Short.borderWidth[bdw] = Short[bd][bdw] = All[bdw] = '@px';\r
- Short.borderStyle[bds] = Short[bd][bds] = All[bds] = '@';\r
- Short.borderColor[bdc] = Short[bd][bdc] = All[bdc] = 'rgb(@, @, @)';\r
-});\r
-/*\r
-Script: Element.Dimensions.js\r
- Contains methods to work with size, scroll, or positioning of Elements and the window object.\r
-\r
-License:\r
- MIT-style license.\r
-\r
-Credits:\r
- - Element positioning based on the [qooxdoo](http://qooxdoo.org/) code and smart browser fixes, [LGPL License](http://www.gnu.org/licenses/lgpl.html).\r
- - Viewport dimensions based on [YUI](http://developer.yahoo.com/yui/) code, [BSD License](http://developer.yahoo.com/yui/license.html).\r
-*/\r
-\r
-(function(){\r
-\r
-Element.implement({\r
-\r
- scrollTo: function(x, y){\r
- if (isBody(this)){\r
- this.getWindow().scrollTo(x, y);\r
- } else {\r
- this.scrollLeft = x;\r
- this.scrollTop = y;\r
- }\r
- return this;\r
- },\r
-\r
- getSize: function(){\r
- if (isBody(this)) return this.getWindow().getSize();\r
- return {x: this.offsetWidth, y: this.offsetHeight};\r
- },\r
-\r
- getScrollSize: function(){\r
- if (isBody(this)) return this.getWindow().getScrollSize();\r
- return {x: this.scrollWidth, y: this.scrollHeight};\r
- },\r
-\r
- getScroll: function(){\r
- if (isBody(this)) return this.getWindow().getScroll();\r
- return {x: this.scrollLeft, y: this.scrollTop};\r
- },\r
-\r
- getScrolls: function(){\r
- var element = this, position = {x: 0, y: 0};\r
- while (element && !isBody(element)){\r
- position.x += element.scrollLeft;\r
- position.y += element.scrollTop;\r
- element = element.parentNode;\r
- }\r
- return position;\r
- },\r
-\r
- getOffsets: function(){\r
- var element = this, position = {x: 0, y: 0};\r
- if (isBody(this)) return position;\r
-\r
- while (element && !isBody(element)){\r
- position.x += element.offsetLeft;\r
- position.y += element.offsetTop;\r
-\r
- if (Browser.Engine.gecko){\r
- if (!borderBox(element)){\r
- position.x += leftBorder(element);\r
- position.y += topBorder(element);\r
- }\r
- var parent = element.parentNode;\r
- if (parent && styleString(parent, 'overflow') != 'visible'){\r
- position.x += leftBorder(parent);\r
- position.y += topBorder(parent);\r
- }\r
- } else if (element != this && (Browser.Engine.trident || Browser.Engine.webkit)){\r
- position.x += leftBorder(element);\r
- position.y += topBorder(element);\r
- }\r
-\r
- element = element.offsetParent;\r
- if (Browser.Engine.trident){\r
- while (element && !element.currentStyle.hasLayout) element = element.offsetParent;\r
- }\r
- }\r
- if (Browser.Engine.gecko && !borderBox(this)){\r
- position.x -= leftBorder(this);\r
- position.y -= topBorder(this);\r
- }\r
- return position;\r
- },\r
-\r
- getPosition: function(relative){\r
- if (isBody(this)) return {x: 0, y: 0};\r
- var offset = this.getOffsets(), scroll = this.getScrolls();\r
- var position = {x: offset.x - scroll.x, y: offset.y - scroll.y};\r
- var relativePosition = (relative && (relative = $(relative))) ? relative.getPosition() : {x: 0, y: 0};\r
- return {x: position.x - relativePosition.x, y: position.y - relativePosition.y};\r
- },\r
-\r
- getCoordinates: function(element){\r
- if (isBody(this)) return this.getWindow().getCoordinates();\r
- var position = this.getPosition(element), size = this.getSize();\r
- var obj = {left: position.x, top: position.y, width: size.x, height: size.y};\r
- obj.right = obj.left + obj.width;\r
- obj.bottom = obj.top + obj.height;\r
- return obj;\r
- },\r
-\r
- computePosition: function(obj){\r
- return {left: obj.x - styleNumber(this, 'margin-left'), top: obj.y - styleNumber(this, 'margin-top')};\r
- },\r
-\r
- position: function(obj){\r
- return this.setStyles(this.computePosition(obj));\r
- }\r
-\r
-});\r
-\r
-Native.implement([Document, Window], {\r
-\r
- getSize: function(){\r
- var win = this.getWindow();\r
- if (Browser.Engine.presto || Browser.Engine.webkit) return {x: win.innerWidth, y: win.innerHeight};\r
- var doc = getCompatElement(this);\r
- return {x: doc.clientWidth, y: doc.clientHeight};\r
- },\r
-\r
- getScroll: function(){\r
- var win = this.getWindow();\r
- var doc = getCompatElement(this);\r
- return {x: win.pageXOffset || doc.scrollLeft, y: win.pageYOffset || doc.scrollTop};\r
- },\r
-\r
- getScrollSize: function(){\r
- var doc = getCompatElement(this);\r
- var min = this.getSize();\r
- return {x: Math.max(doc.scrollWidth, min.x), y: Math.max(doc.scrollHeight, min.y)};\r
- },\r
-\r
- getPosition: function(){\r
- return {x: 0, y: 0};\r
- },\r
-\r
- getCoordinates: function(){\r
- var size = this.getSize();\r
- return {top: 0, left: 0, bottom: size.y, right: size.x, height: size.y, width: size.x};\r
- }\r
-\r
-});\r
-\r
-// private methods\r
-\r
-var styleString = Element.getComputedStyle;\r
-\r
-function styleNumber(element, style){\r
- return styleString(element, style).toInt() || 0;\r
-};\r
-\r
-function borderBox(element){\r
- return styleString(element, '-moz-box-sizing') == 'border-box';\r
-};\r
-\r
-function topBorder(element){\r
- return styleNumber(element, 'border-top-width');\r
-};\r
-\r
-function leftBorder(element){\r
- return styleNumber(element, 'border-left-width');\r
-};\r
-\r
-function isBody(element){\r
- return (/^(?:body|html)$/i).test(element.tagName);\r
-};\r
-\r
-function getCompatElement(element){\r
- var doc = element.getDocument();\r
- return (!doc.compatMode || doc.compatMode == 'CSS1Compat') ? doc.html : doc.body;\r
-};\r
-\r
-})();\r
-\r
-//aliases\r
-\r
-Native.implement([Window, Document, Element], {\r
-\r
- getHeight: function(){\r
- return this.getSize().y;\r
- },\r
-\r
- getWidth: function(){\r
- return this.getSize().x;\r
- },\r
-\r
- getScrollTop: function(){\r
- return this.getScroll().y;\r
- },\r
-\r
- getScrollLeft: function(){\r
- return this.getScroll().x;\r
- },\r
-\r
- getScrollHeight: function(){\r
- return this.getScrollSize().y;\r
- },\r
-\r
- getScrollWidth: function(){\r
- return this.getScrollSize().x;\r
- },\r
-\r
- getTop: function(){\r
- return this.getPosition().y;\r
- },\r
-\r
- getLeft: function(){\r
- return this.getPosition().x;\r
- }\r
-\r
-});/*\r
-Script: Selectors.js\r
- Adds advanced CSS Querying capabilities for targeting elements. Also includes pseudoselectors support.\r
-\r
-License:\r
- MIT-style license.\r
-*/\r
-\r
-Native.implement([Document, Element], {\r
- \r
- getElements: function(expression, nocash){\r
- expression = expression.split(',');\r
- var items, local = {};\r
- for (var i = 0, l = expression.length; i < l; i++){\r
- var selector = expression[i], elements = Selectors.Utils.search(this, selector, local);\r
- if (i != 0 && elements.item) elements = $A(elements);\r
- items = (i == 0) ? elements : (items.item) ? $A(items).concat(elements) : items.concat(elements);\r
- }\r
- return new Elements(items, {ddup: (expression.length > 1), cash: !nocash});\r
- }\r
- \r
-});\r
-\r
-Element.implement({\r
- \r
- match: function(selector){\r
- if (!selector) return true;\r
- var tagid = Selectors.Utils.parseTagAndID(selector);\r
- var tag = tagid[0], id = tagid[1];\r
- if (!Selectors.Filters.byID(this, id) || !Selectors.Filters.byTag(this, tag)) return false;\r
- var parsed = Selectors.Utils.parseSelector(selector);\r
- return (parsed) ? Selectors.Utils.filter(this, parsed, {}) : true;\r
- }\r
- \r
-});\r
-\r
-var Selectors = {Cache: {nth: {}, parsed: {}}};\r
-\r
-Selectors.RegExps = {\r
- id: (/#([\w-]+)/),\r
- tag: (/^(\w+|\*)/),\r
- quick: (/^(\w+|\*)$/),\r
- splitter: (/\s*([+>~\s])\s*([a-zA-Z#.*:\[])/g),\r
- combined: (/\.([\w-]+)|\[(\w+)(?:([!*^$~|]?=)["']?(.*?)["']?)?\]|:([\w-]+)(?:\(["']?(.*?)?["']?\)|$)/g)\r
-};\r
-\r
-Selectors.Utils = {\r
- \r
- chk: function(item, uniques){\r
- if (!uniques) return true;\r
- var uid = $uid(item);\r
- if (!uniques[uid]) return uniques[uid] = true;\r
- return false;\r
- },\r
- \r
- parseNthArgument: function(argument){\r
- if (Selectors.Cache.nth[argument]) return Selectors.Cache.nth[argument];\r
- var parsed = argument.match(/^([+-]?\d*)?([a-z]+)?([+-]?\d*)?$/);\r
- if (!parsed) return false;\r
- var inta = parseInt(parsed[1]);\r
- var a = (inta || inta === 0) ? inta : 1;\r
- var special = parsed[2] || false;\r
- var b = parseInt(parsed[3]) || 0;\r
- if (a != 0){\r
- b--;\r
- while (b < 1) b += a;\r
- while (b >= a) b -= a;\r
- } else {\r
- a = b;\r
- special = 'index';\r
- }\r
- switch (special){\r
- case 'n': parsed = {a: a, b: b, special: 'n'}; break;\r
- case 'odd': parsed = {a: 2, b: 0, special: 'n'}; break;\r
- case 'even': parsed = {a: 2, b: 1, special: 'n'}; break;\r
- case 'first': parsed = {a: 0, special: 'index'}; break;\r
- case 'last': parsed = {special: 'last-child'}; break;\r
- case 'only': parsed = {special: 'only-child'}; break;\r
- default: parsed = {a: (a - 1), special: 'index'};\r
- }\r
- \r
- return Selectors.Cache.nth[argument] = parsed;\r
- },\r
- \r
- parseSelector: function(selector){\r
- if (Selectors.Cache.parsed[selector]) return Selectors.Cache.parsed[selector];\r
- var m, parsed = {classes: [], pseudos: [], attributes: []};\r
- while ((m = Selectors.RegExps.combined.exec(selector))){\r
- var cn = m[1], an = m[2], ao = m[3], av = m[4], pn = m[5], pa = m[6];\r
- if (cn){\r
- parsed.classes.push(cn);\r
- } else if (pn){\r
- var parser = Selectors.Pseudo.get(pn);\r
- if (parser) parsed.pseudos.push({parser: parser, argument: pa});\r
- else parsed.attributes.push({name: pn, operator: '=', value: pa});\r
- } else if (an){\r
- parsed.attributes.push({name: an, operator: ao, value: av});\r
- }\r
- }\r
- if (!parsed.classes.length) delete parsed.classes;\r
- if (!parsed.attributes.length) delete parsed.attributes;\r
- if (!parsed.pseudos.length) delete parsed.pseudos;\r
- if (!parsed.classes && !parsed.attributes && !parsed.pseudos) parsed = null;\r
- return Selectors.Cache.parsed[selector] = parsed;\r
- },\r
- \r
- parseTagAndID: function(selector){\r
- var tag = selector.match(Selectors.RegExps.tag);\r
- var id = selector.match(Selectors.RegExps.id);\r
- return [(tag) ? tag[1] : '*', (id) ? id[1] : false];\r
- },\r
- \r
- filter: function(item, parsed, local){\r
- var i;\r
- if (parsed.classes){\r
- for (i = parsed.classes.length; i--; i){\r
- var cn = parsed.classes[i];\r
- if (!Selectors.Filters.byClass(item, cn)) return false;\r
- }\r
- }\r
- if (parsed.attributes){\r
- for (i = parsed.attributes.length; i--; i){\r
- var att = parsed.attributes[i];\r
- if (!Selectors.Filters.byAttribute(item, att.name, att.operator, att.value)) return false;\r
- }\r
- }\r
- if (parsed.pseudos){\r
- for (i = parsed.pseudos.length; i--; i){\r
- var psd = parsed.pseudos[i];\r
- if (!Selectors.Filters.byPseudo(item, psd.parser, psd.argument, local)) return false;\r
- }\r
- }\r
- return true;\r
- },\r
- \r
- getByTagAndID: function(ctx, tag, id){\r
- if (id){\r
- var item = ctx.getElementById(id, true);\r
- return (item && Selectors.Filters.byTag(item, tag)) ? [item] : [];\r
- } else {\r
- return ctx.getElementsByTagName(tag);\r
- }\r
- },\r
- \r
- search: function(self, expression, local){\r
- var splitters = [];\r
- \r
- var selectors = expression.trim().replace(Selectors.RegExps.splitter, function(m0, m1, m2){\r
- splitters.push(m1);\r
- return ':)' + m2;\r
- }).split(':)');\r
- \r
- var items, match, filtered, item;\r
- \r
- for (var i = 0, l = selectors.length; i < l; i++){\r
- \r
- var selector = selectors[i];\r
- \r
- if (i == 0 && Selectors.RegExps.quick.test(selector)){\r
- items = self.getElementsByTagName(selector);\r
- continue;\r
- }\r
- \r
- var splitter = splitters[i - 1];\r
- \r
- var tagid = Selectors.Utils.parseTagAndID(selector);\r
- var tag = tagid[0], id = tagid[1];\r
-\r
- if (i == 0){\r
- items = Selectors.Utils.getByTagAndID(self, tag, id);\r
- } else {\r
- var uniques = {}, found = [];\r
- for (var j = 0, k = items.length; j < k; j++) found = Selectors.Getters[splitter](found, items[j], tag, id, uniques);\r
- items = found;\r
- }\r
- \r
- var parsed = Selectors.Utils.parseSelector(selector);\r
- \r
- if (parsed){\r
- filtered = [];\r
- for (var m = 0, n = items.length; m < n; m++){\r
- item = items[m];\r
- if (Selectors.Utils.filter(item, parsed, local)) filtered.push(item);\r
- }\r
- items = filtered;\r
- }\r
- \r
- }\r
- \r
- return items;\r
- \r
- }\r
- \r
-};\r
-\r
-Selectors.Getters = {\r
- \r
- ' ': function(found, self, tag, id, uniques){\r
- var items = Selectors.Utils.getByTagAndID(self, tag, id);\r
- for (var i = 0, l = items.length; i < l; i++){\r
- var item = items[i];\r
- if (Selectors.Utils.chk(item, uniques)) found.push(item);\r
- }\r
- return found;\r
- },\r
- \r
- '>': function(found, self, tag, id, uniques){\r
- var children = Selectors.Utils.getByTagAndID(self, tag, id);\r
- for (var i = 0, l = children.length; i < l; i++){\r
- var child = children[i];\r
- if (child.parentNode == self && Selectors.Utils.chk(child, uniques)) found.push(child);\r
- }\r
- return found;\r
- },\r
- \r
- '+': function(found, self, tag, id, uniques){\r
- while ((self = self.nextSibling)){\r
- if (self.nodeType == 1){\r
- if (Selectors.Utils.chk(self, uniques) && Selectors.Filters.byTag(self, tag) && Selectors.Filters.byID(self, id)) found.push(self);\r
- break;\r
- }\r
- }\r
- return found;\r
- },\r
- \r
- '~': function(found, self, tag, id, uniques){\r
- \r
- while ((self = self.nextSibling)){\r
- if (self.nodeType == 1){\r
- if (!Selectors.Utils.chk(self, uniques)) break;\r
- if (Selectors.Filters.byTag(self, tag) && Selectors.Filters.byID(self, id)) found.push(self);\r
- } \r
- }\r
- return found;\r
- }\r
- \r
-};\r
-\r
-Selectors.Filters = {\r
- \r
- byTag: function(self, tag){\r
- return (tag == '*' || (self.tagName && self.tagName.toLowerCase() == tag));\r
- },\r
- \r
- byID: function(self, id){\r
- return (!id || (self.id && self.id == id));\r
- },\r
- \r
- byClass: function(self, klass){\r
- return (self.className && self.className.contains(klass, ' '));\r
- },\r
- \r
- byPseudo: function(self, parser, argument, local){\r
- return parser.call(self, argument, local);\r
- },\r
- \r
- byAttribute: function(self, name, operator, value){\r
- var result = Element.prototype.getProperty.call(self, name);\r
- if (!result) return false;\r
- if (!operator || value == undefined) return true;\r
- switch (operator){\r
- case '=': return (result == value);\r
- case '*=': return (result.contains(value));\r
- case '^=': return (result.substr(0, value.length) == value);\r
- case '$=': return (result.substr(result.length - value.length) == value);\r
- case '!=': return (result != value);\r
- case '~=': return result.contains(value, ' ');\r
- case '|=': return result.contains(value, '-');\r
- }\r
- return false;\r
- }\r
- \r
-};\r
-\r
-Selectors.Pseudo = new Hash({\r
- \r
- // w3c pseudo selectors\r
- \r
- empty: function(){\r
- return !(this.innerText || this.textContent || '').length;\r
- },\r
- \r
- not: function(selector){\r
- return !Element.match(this, selector);\r
- },\r
- \r
- contains: function(text){\r
- return (this.innerText || this.textContent || '').contains(text);\r
- },\r
- \r
- 'first-child': function(){\r
- return Selectors.Pseudo.index.call(this, 0);\r
- },\r
- \r
- 'last-child': function(){\r
- var element = this;\r
- while ((element = element.nextSibling)){\r
- if (element.nodeType == 1) return false;\r
- }\r
- return true;\r
- },\r
- \r
- 'only-child': function(){\r
- var prev = this;\r
- while ((prev = prev.previousSibling)){\r
- if (prev.nodeType == 1) return false;\r
- }\r
- var next = this;\r
- while ((next = next.nextSibling)){\r
- if (next.nodeType == 1) return false;\r
- }\r
- return true;\r
- },\r
- \r
- 'nth-child': function(argument, local){\r
- argument = (argument == undefined) ? 'n' : argument;\r
- var parsed = Selectors.Utils.parseNthArgument(argument);\r
- if (parsed.special != 'n') return Selectors.Pseudo[parsed.special].call(this, parsed.a, local);\r
- var count = 0;\r
- local.positions = local.positions || {};\r
- var uid = $uid(this);\r
- if (!local.positions[uid]){\r
- var self = this;\r
- while ((self = self.previousSibling)){\r
- if (self.nodeType != 1) continue;\r
- count ++;\r
- var position = local.positions[$uid(self)];\r
- if (position != undefined){\r
- count = position + count;\r
- break;\r
- }\r
- }\r
- local.positions[uid] = count;\r
- }\r
- return (local.positions[uid] % parsed.a == parsed.b);\r
- },\r
- \r
- // custom pseudo selectors\r
- \r
- index: function(index){\r
- var element = this, count = 0;\r
- while ((element = element.previousSibling)){\r
- if (element.nodeType == 1 && ++count > index) return false;\r
- }\r
- return (count == index);\r
- },\r
- \r
- even: function(argument, local){\r
- return Selectors.Pseudo['nth-child'].call(this, '2n+1', local);\r
- },\r
-\r
- odd: function(argument, local){\r
- return Selectors.Pseudo['nth-child'].call(this, '2n', local);\r
- }\r
- \r
-});/*\r
-Script: Domready.js\r
- Contains the domready custom event.\r
-\r
-License:\r
- MIT-style license.\r
-*/\r
-\r
-Element.Events.domready = {\r
-\r
- onAdd: function(fn){\r
- if (Browser.loaded) fn.call(this);\r
- }\r
-\r
-};\r
-\r
-(function(){\r
- \r
- var domready = function(){\r
- if (Browser.loaded) return;\r
- Browser.loaded = true;\r
- window.fireEvent('domready');\r
- document.fireEvent('domready');\r
- };\r
- \r
- switch (Browser.Engine.name){\r
-\r
- case 'webkit': (function(){\r
- (['loaded', 'complete'].contains(document.readyState)) ? domready() : arguments.callee.delay(50);\r
- })(); break;\r
-\r
- case 'trident':\r
- var temp = document.createElement('div');\r
- (function(){\r
- ($try(function(){\r
- temp.doScroll('left');\r
- return $(temp).inject(document.body).set('html', 'temp').dispose();\r
- })) ? domready() : arguments.callee.delay(50);\r
- })();\r
- break;\r
- \r
- default:\r
- window.addEvent('load', domready);\r
- document.addEvent('DOMContentLoaded', domready);\r
-\r
- }\r
- \r
-})();/*\r
-Script: JSON.js\r
- JSON encoder and decoder.\r
-\r
-License:\r
- MIT-style license.\r
-\r
-See Also:\r
- <http://www.json.org/>\r
-*/\r
-\r
-var JSON = new Hash({\r
-\r
- encode: function(obj){\r
- switch ($type(obj)){\r
- case 'string':\r
- return '"' + obj.replace(/[\x00-\x1f\\"]/g, JSON.$replaceChars) + '"';\r
- case 'array':\r
- return '[' + String(obj.map(JSON.encode).filter($defined)) + ']';\r
- case 'object': case 'hash':\r
- var string = [];\r
- Hash.each(obj, function(value, key){\r
- var json = JSON.encode(value);\r
- if (json) string.push(JSON.encode(key) + ':' + json);\r
- });\r
- return '{' + string + '}';\r
- case 'number': case 'boolean': return String(obj);\r
- case false: return 'null';\r
- }\r
- return null;\r
- },\r
-\r
- $specialChars: {'\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '"' : '\\"', '\\': '\\\\'},\r
-\r
- $replaceChars: function(chr){\r
- return JSON.$specialChars[chr] || '\\u00' + Math.floor(chr.charCodeAt() / 16).toString(16) + (chr.charCodeAt() % 16).toString(16);\r
- },\r
-\r
- decode: function(string, secure){\r
- if ($type(string) != 'string' || !string.length) return null;\r
- if (secure && !(/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(string.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, ''))) return null;\r
- return eval('(' + string + ')');\r
- }\r
-\r
-});\r
-\r
-Native.implement([Hash, Array, String, Number], {\r
-\r
- toJSON: function(){\r
- return JSON.encode(this);\r
- }\r
-\r
-});\r
-/*\r
-Script: Cookie.js\r
- Class for creating, loading, and saving browser Cookies.\r
-\r
-License:\r
- MIT-style license.\r
-\r
-Credits:\r
- Based on the functions by Peter-Paul Koch (http://quirksmode.org).\r
-*/\r
-\r
-var Cookie = new Class({\r
-\r
- Implements: Options,\r
-\r
- options: {\r
- path: false,\r
- domain: false,\r
- duration: false,\r
- secure: false,\r
- document: document\r
- },\r
-\r
- initialize: function(key, options){\r
- this.key = key;\r
- this.setOptions(options);\r
- },\r
-\r
- write: function(value){\r
- value = encodeURIComponent(value);\r
- if (this.options.domain) value += '; domain=' + this.options.domain;\r
- if (this.options.path) value += '; path=' + this.options.path;\r
- if (this.options.duration){\r
- var date = new Date();\r
- date.setTime(date.getTime() + this.options.duration * 24 * 60 * 60 * 1000);\r
- value += '; expires=' + date.toGMTString();\r
- }\r
- if (this.options.secure) value += '; secure';\r
- this.options.document.cookie = this.key + '=' + value;\r
- return this;\r
- },\r
-\r
- read: function(){\r
- var value = this.options.document.cookie.match('(?:^|;)\\s*' + this.key.escapeRegExp() + '=([^;]*)');\r
- return (value) ? decodeURIComponent(value[1]) : null;\r
- },\r
-\r
- dispose: function(){\r
- new Cookie(this.key, $merge(this.options, {duration: -1})).write('');\r
- return this;\r
- }\r
-\r
-});\r
-\r
-Cookie.write = function(key, value, options){\r
- return new Cookie(key, options).write(value);\r
-};\r
-\r
-Cookie.read = function(key){\r
- return new Cookie(key).read();\r
-};\r
-\r
-Cookie.dispose = function(key, options){\r
- return new Cookie(key, options).dispose();\r
-};/*\r
-Script: Swiff.js\r
- Wrapper for embedding SWF movies. Supports (and fixes) External Interface Communication.\r
-\r
-License:\r
- MIT-style license.\r
-\r
-Credits:\r
- Flash detection & Internet Explorer + Flash Player 9 fix inspired by SWFObject.\r
-*/\r
-\r
-var Swiff = new Class({\r
-\r
- Implements: [Options],\r
-\r
- options: {\r
- id: null,\r
- height: 1,\r
- width: 1,\r
- container: null,\r
- properties: {},\r
- params: {\r
- quality: 'high',\r
- allowScriptAccess: 'always',\r
- wMode: 'transparent',\r
- swLiveConnect: true\r
- },\r
- callBacks: {},\r
- vars: {}\r
- },\r
-\r
- toElement: function(){\r
- return this.object;\r
- },\r
-\r
- initialize: function(path, options){\r
- this.instance = 'Swiff_' + $time();\r
-\r
- this.setOptions(options);\r
- options = this.options;\r
- var id = this.id = options.id || this.instance;\r
- var container = $(options.container);\r
-\r
- Swiff.CallBacks[this.instance] = {};\r
-\r
- var params = options.params, vars = options.vars, callBacks = options.callBacks;\r
- var properties = $extend({height: options.height, width: options.width}, options.properties);\r
-\r
- var self = this;\r
-\r
- for (var callBack in callBacks){\r
- Swiff.CallBacks[this.instance][callBack] = (function(option){\r
- return function(){\r
- return option.apply(self.object, arguments);\r
- };\r
- })(callBacks[callBack]);\r
- vars[callBack] = 'Swiff.CallBacks.' + this.instance + '.' + callBack;\r
- }\r
-\r
- params.flashVars = Hash.toQueryString(vars);\r
- if (Browser.Engine.trident){\r
- properties.classid = 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000';\r
- params.movie = path;\r
- } else {\r
- properties.type = 'application/x-shockwave-flash';\r
- properties.data = path;\r
- }\r
- var build = '<object id="' + id + '"';\r
- for (var property in properties) build += ' ' + property + '="' + properties[property] + '"';\r
- build += '>';\r
- for (var param in params){\r
- if (params[param]) build += '<param name="' + param + '" value="' + params[param] + '" />';\r
- }\r
- build += '</object>';\r
- this.object = ((container) ? container.empty() : new Element('div')).set('html', build).firstChild;\r
- },\r
-\r
- replaces: function(element){\r
- element = $(element, true);\r
- element.parentNode.replaceChild(this.toElement(), element);\r
- return this;\r
- },\r
-\r
- inject: function(element){\r
- $(element, true).appendChild(this.toElement());\r
- return this;\r
- },\r
-\r
- remote: function(){\r
- return Swiff.remote.apply(Swiff, [this.toElement()].extend(arguments));\r
- }\r
-\r
-});\r
-\r
-Swiff.CallBacks = {};\r
-\r
-Swiff.remote = function(obj, fn){\r
- var rs = obj.CallFunction('<invoke name="' + fn + '" returntype="javascript">' + __flash__argumentsToXML(arguments, 2) + '</invoke>');\r
- return eval(rs);\r
-};/*\r
-Script: Fx.js\r
- Contains the basic animation logic to be extended by all other Fx Classes.\r
-\r
-License:\r
- MIT-style license.\r
-*/\r
-\r
-var Fx = new Class({\r
-\r
- Implements: [Chain, Events, Options],\r
-\r
- options: {\r
- /*\r
- onStart: $empty,\r
- onCancel: $empty,\r
- onComplete: $empty,\r
- */\r
- fps: 50,\r
- unit: false,\r
- duration: 500,\r
- link: 'ignore',\r
- transition: function(p){\r
- return -(Math.cos(Math.PI * p) - 1) / 2;\r
- }\r
- },\r
-\r
- initialize: function(options){\r
- this.subject = this.subject || this;\r
- this.setOptions(options);\r
- this.options.duration = Fx.Durations[this.options.duration] || this.options.duration.toInt();\r
- var wait = this.options.wait;\r
- if (wait === false) this.options.link = 'cancel';\r
- },\r
-\r
- step: function(){\r
- var time = $time();\r
- if (time < this.time + this.options.duration){\r
- var delta = this.options.transition((time - this.time) / this.options.duration);\r
- this.set(this.compute(this.from, this.to, delta));\r
- } else {\r
- this.set(this.compute(this.from, this.to, 1));\r
- this.complete();\r
- }\r
- },\r
-\r
- set: function(now){\r
- return now;\r
- },\r
-\r
- compute: function(from, to, delta){\r
- return Fx.compute(from, to, delta);\r
- },\r
-\r
- check: function(caller){\r
- if (!this.timer) return true;\r
- switch (this.options.link){\r
- case 'cancel': this.cancel(); return true;\r
- case 'chain': this.chain(caller.bind(this, Array.slice(arguments, 1))); return false;\r
- }\r
- return false;\r
- },\r
-\r
- start: function(from, to){\r
- if (!this.check(arguments.callee, from, to)) return this;\r
- this.from = from;\r
- this.to = to;\r
- this.time = 0;\r
- this.startTimer();\r
- this.onStart();\r
- return this;\r
- },\r
-\r
- complete: function(){\r
- if (this.stopTimer()) this.onComplete();\r
- return this;\r
- },\r
-\r
- cancel: function(){\r
- if (this.stopTimer()) this.onCancel();\r
- return this;\r
- },\r
-\r
- onStart: function(){\r
- this.fireEvent('onStart', this.subject);\r
- },\r
-\r
- onComplete: function(){\r
- this.fireEvent('onComplete', this.subject);\r
- if (!this.callChain()) this.fireEvent('onChainComplete', this.subject);\r
- },\r
-\r
- onCancel: function(){\r
- this.fireEvent('onCancel', this.subject).clearChain();\r
- },\r
-\r
- pause: function(){\r
- this.stopTimer();\r
- return this;\r
- },\r
-\r
- resume: function(){\r
- this.startTimer();\r
- return this;\r
- },\r
-\r
- stopTimer: function(){\r
- if (!this.timer) return false;\r
- this.time = $time() - this.time;\r
- this.timer = $clear(this.timer);\r
- return true;\r
- },\r
-\r
- startTimer: function(){\r
- if (this.timer) return false;\r
- this.time = $time() - this.time;\r
- this.timer = this.step.periodical(Math.round(1000 / this.options.fps), this);\r
- return true;\r
- }\r
-\r
-});\r
-\r
-Fx.compute = function(from, to, delta){\r
- return (to - from) * delta + from;\r
-};\r
-\r
-Fx.Durations = {'short': 250, 'normal': 500, 'long': 1000};\r
-/*\r
-Script: Fx.CSS.js\r
- Contains the CSS animation logic. Used by Fx.Tween, Fx.Morph, Fx.Elements.\r
-\r
-License:\r
- MIT-style license.\r
-*/\r
-\r
-Fx.CSS = new Class({\r
-\r
- Extends: Fx,\r
-\r
- //prepares the base from/to object\r
-\r
- prepare: function(element, property, values){\r
- values = $splat(values);\r
- var values1 = values[1];\r
- if (!$chk(values1)){\r
- values[1] = values[0];\r
- values[0] = element.getStyle(property);\r
- }\r
- var parsed = values.map(this.parse);\r
- return {from: parsed[0], to: parsed[1]};\r
- },\r
-\r
- //parses a value into an array\r
-\r
- parse: function(value){\r
- value = $lambda(value)();\r
- value = (typeof value == 'string') ? value.split(' ') : $splat(value);\r
- return value.map(function(val){\r
- val = String(val);\r
- var found = false;\r
- Fx.CSS.Parsers.each(function(parser, key){\r
- if (found) return;\r
- var parsed = parser.parse(val);\r
- if ($chk(parsed)) found = {value: parsed, parser: parser};\r
- });\r
- found = found || {value: val, parser: Fx.CSS.Parsers.String};\r
- return found;\r
- });\r
- },\r
-\r
- //computes by a from and to prepared objects, using their parsers.\r
-\r
- compute: function(from, to, delta){\r
- var computed = [];\r
- (Math.min(from.length, to.length)).times(function(i){\r
- computed.push({value: from[i].parser.compute(from[i].value, to[i].value, delta), parser: from[i].parser});\r
- });\r
- computed.$family = {name: 'fx:css:value'};\r
- return computed;\r
- },\r
-\r
- //serves the value as settable\r
-\r
- serve: function(value, unit){\r
- if ($type(value) != 'fx:css:value') value = this.parse(value);\r
- var returned = [];\r
- value.each(function(bit){\r
- returned = returned.concat(bit.parser.serve(bit.value, unit));\r
- });\r
- return returned;\r
- },\r
-\r
- //renders the change to an element\r
-\r
- render: function(element, property, value, unit){\r
- element.setStyle(property, this.serve(value, unit));\r
- },\r
-\r
- //searches inside the page css to find the values for a selector\r
-\r
- search: function(selector){\r
- if (Fx.CSS.Cache[selector]) return Fx.CSS.Cache[selector];\r
- var to = {};\r
- Array.each(document.styleSheets, function(sheet, j){\r
- var href = sheet.href;\r
- if (href && href.contains('://') && !href.contains(document.domain)) return;\r
- var rules = sheet.rules || sheet.cssRules;\r
- Array.each(rules, function(rule, i){\r
- if (!rule.style) return;\r
- var selectorText = (rule.selectorText) ? rule.selectorText.replace(/^\w+/, function(m){\r
- return m.toLowerCase();\r
- }) : null;\r
- if (!selectorText || !selectorText.test('^' + selector + '$')) return;\r
- Element.Styles.each(function(value, style){\r
- if (!rule.style[style] || Element.ShortStyles[style]) return;\r
- value = String(rule.style[style]);\r
- to[style] = (value.test(/^rgb/)) ? value.rgbToHex() : value;\r
- });\r
- });\r
- });\r
- return Fx.CSS.Cache[selector] = to;\r
- }\r
-\r
-});\r
-\r
-Fx.CSS.Cache = {};\r
-\r
-Fx.CSS.Parsers = new Hash({\r
-\r
- Color: {\r
- parse: function(value){\r
- if (value.match(/^#[0-9a-f]{3,6}$/i)) return value.hexToRgb(true);\r
- return ((value = value.match(/(\d+),\s*(\d+),\s*(\d+)/))) ? [value[1], value[2], value[3]] : false;\r
- },\r
- compute: function(from, to, delta){\r
- return from.map(function(value, i){\r
- return Math.round(Fx.compute(from[i], to[i], delta));\r
- });\r
- },\r
- serve: function(value){\r
- return value.map(Number);\r
- }\r
- },\r
-\r
- Number: {\r
- parse: parseFloat,\r
- compute: Fx.compute,\r
- serve: function(value, unit){\r
- return (unit) ? value + unit : value;\r
- }\r
- },\r
-\r
- String: {\r
- parse: $lambda(false),\r
- compute: $arguments(1),\r
- serve: $arguments(0)\r
- }\r
-\r
-});\r
-/*\r
-Script: Fx.Tween.js\r
- Formerly Fx.Style, effect to transition any CSS property for an element.\r
-\r
-License:\r
- MIT-style license.\r
-*/\r
-\r
-Fx.Tween = new Class({\r
-\r
- Extends: Fx.CSS,\r
-\r
- initialize: function(element, options){\r
- this.element = this.subject = $(element);\r
- this.parent(options);\r
- },\r
-\r
- set: function(property, now){\r
- if (arguments.length == 1){\r
- now = property;\r
- property = this.property || this.options.property;\r
- }\r
- this.render(this.element, property, now, this.options.unit);\r
- return this;\r
- },\r
-\r
- start: function(property, from, to){\r
- if (!this.check(arguments.callee, property, from, to)) return this;\r
- var args = Array.flatten(arguments);\r
- this.property = this.options.property || args.shift();\r
- var parsed = this.prepare(this.element, this.property, args);\r
- return this.parent(parsed.from, parsed.to);\r
- }\r
-\r
-});\r
-\r
-Element.Properties.tween = {\r
-\r
- set: function(options){\r
- var tween = this.retrieve('tween');\r
- if (tween) tween.cancel();\r
- return this.eliminate('tween').store('tween:options', $extend({link: 'cancel'}, options));\r
- },\r
-\r
- get: function(options){\r
- if (options || !this.retrieve('tween')){\r
- if (options || !this.retrieve('tween:options')) this.set('tween', options);\r
- this.store('tween', new Fx.Tween(this, this.retrieve('tween:options')));\r
- }\r
- return this.retrieve('tween');\r
- }\r
-\r
-};\r
-\r
-Element.implement({\r
-\r
- tween: function(property, from, to){\r
- this.get('tween').start(arguments);\r
- return this;\r
- },\r
-\r
- fade: function(how){\r
- var fade = this.get('tween'), o = 'opacity', toggle;\r
- how = $pick(how, 'toggle');\r
- switch (how){\r
- case 'in': fade.start(o, 1); break;\r
- case 'out': fade.start(o, 0); break;\r
- case 'show': fade.set(o, 1); break;\r
- case 'hide': fade.set(o, 0); break;\r
- case 'toggle':\r
- var flag = this.retrieve('fade:flag', this.get('opacity') == 1);\r
- fade.start(o, (flag) ? 0 : 1);\r
- this.store('fade:flag', !flag);\r
- toggle = true;\r
- break;\r
- default: fade.start(o, arguments);\r
- }\r
- if (!toggle) this.eliminate('fade:flag');\r
- return this;\r
- },\r
-\r
- highlight: function(start, end){\r
- if (!end){\r
- end = this.retrieve('highlight:original', this.getStyle('background-color'));\r
- end = (end == 'transparent') ? '#fff' : end;\r
- }\r
- var tween = this.get('tween');\r
- tween.start('background-color', start || '#ffff88', end).chain(function(){\r
- this.setStyle('background-color', this.retrieve('highlight:original'));\r
- tween.callChain();\r
- }.bind(this));\r
- return this;\r
- }\r
-\r
-});\r
-/*\r
-Script: Fx.Morph.js\r
- Formerly Fx.Styles, effect to transition any number of CSS properties for an element using an object of rules, or CSS based selector rules.\r
-\r
-License:\r
- MIT-style license.\r
-*/\r
-\r
-Fx.Morph = new Class({\r
-\r
- Extends: Fx.CSS,\r
-\r
- initialize: function(element, options){\r
- this.element = this.subject = $(element);\r
- this.parent(options);\r
- },\r
-\r
- set: function(now){\r
- if (typeof now == 'string') now = this.search(now);\r
- for (var p in now) this.render(this.element, p, now[p], this.options.unit);\r
- return this;\r
- },\r
-\r
- compute: function(from, to, delta){\r
- var now = {};\r
- for (var p in from) now[p] = this.parent(from[p], to[p], delta);\r
- return now;\r
- },\r
-\r
- start: function(properties){\r
- if (!this.check(arguments.callee, properties)) return this;\r
- if (typeof properties == 'string') properties = this.search(properties);\r
- var from = {}, to = {};\r
- for (var p in properties){\r
- var parsed = this.prepare(this.element, p, properties[p]);\r
- from[p] = parsed.from;\r
- to[p] = parsed.to;\r
- }\r
- return this.parent(from, to);\r
- }\r
-\r
-});\r
-\r
-Element.Properties.morph = {\r
-\r
- set: function(options){\r
- var morph = this.retrieve('morph');\r
- if (morph) morph.cancel();\r
- return this.eliminate('morph').store('morph:options', $extend({link: 'cancel'}, options));\r
- },\r
-\r
- get: function(options){\r
- if (options || !this.retrieve('morph')){\r
- if (options || !this.retrieve('morph:options')) this.set('morph', options);\r
- this.store('morph', new Fx.Morph(this, this.retrieve('morph:options')));\r
- }\r
- return this.retrieve('morph');\r
- }\r
-\r
-};\r
-\r
-Element.implement({\r
-\r
- morph: function(props){\r
- this.get('morph').start(props);\r
- return this;\r
- }\r
-\r
-});/*\r
-Script: Fx.Transitions.js\r
- Contains a set of advanced transitions to be used with any of the Fx Classes.\r
-\r
-License:\r
- MIT-style license.\r
-\r
-Credits:\r
- Easing Equations by Robert Penner, <http://www.robertpenner.com/easing/>, modified and optimized to be used with MooTools.\r
-*/\r
-\r
-(function(){\r
-\r
- var old = Fx.prototype.initialize;\r
-\r
- Fx.prototype.initialize = function(options){\r
- old.call(this, options);\r
- var trans = this.options.transition;\r
- if (typeof trans == 'string' && (trans = trans.split(':'))){\r
- var base = Fx.Transitions;\r
- base = base[trans[0]] || base[trans[0].capitalize()];\r
- if (trans[1]) base = base['ease' + trans[1].capitalize() + (trans[2] ? trans[2].capitalize() : '')];\r
- this.options.transition = base;\r
- }\r
- };\r
-\r
-})();\r
-\r
-Fx.Transition = function(transition, params){\r
- params = $splat(params);\r
- return $extend(transition, {\r
- easeIn: function(pos){\r
- return transition(pos, params);\r
- },\r
- easeOut: function(pos){\r
- return 1 - transition(1 - pos, params);\r
- },\r
- easeInOut: function(pos){\r
- return (pos <= 0.5) ? transition(2 * pos, params) / 2 : (2 - transition(2 * (1 - pos), params)) / 2;\r
- }\r
- });\r
-};\r
-\r
-Fx.Transitions = new Hash({\r
-\r
- linear: $arguments(0)\r
-\r
-});\r
-\r
-Fx.Transitions.extend = function(transitions){\r
- for (var transition in transitions) Fx.Transitions[transition] = new Fx.Transition(transitions[transition]);\r
-};\r
-\r
-Fx.Transitions.extend({\r
-\r
- Pow: function(p, x){\r
- return Math.pow(p, x[0] || 6);\r
- },\r
-\r
- Expo: function(p){\r
- return Math.pow(2, 8 * (p - 1));\r
- },\r
-\r
- Circ: function(p){\r
- return 1 - Math.sin(Math.acos(p));\r
- },\r
-\r
- Sine: function(p){\r
- return 1 - Math.sin((1 - p) * Math.PI / 2);\r
- },\r
-\r
- Back: function(p, x){\r
- x = x[0] || 1.618;\r
- return Math.pow(p, 2) * ((x + 1) * p - x);\r
- },\r
-\r
- Bounce: function(p){\r
- var value;\r
- for (var a = 0, b = 1; 1; a += b, b /= 2){\r
- if (p >= (7 - 4 * a) / 11){\r
- value = - Math.pow((11 - 6 * a - 11 * p) / 4, 2) + b * b;\r
- break;\r
- }\r
- }\r
- return value;\r
- },\r
-\r
- Elastic: function(p, x){\r
- return Math.pow(2, 10 * --p) * Math.cos(20 * p * Math.PI * (x[0] || 1) / 3);\r
- }\r
-\r
-});\r
-\r
-['Quad', 'Cubic', 'Quart', 'Quint'].each(function(transition, i){\r
- Fx.Transitions[transition] = new Fx.Transition(function(p){\r
- return Math.pow(p, [i + 2]);\r
- });\r
-});\r
-/*\r
-Script: Request.js\r
- Powerful all purpose Request Class. Uses XMLHTTPRequest.\r
-\r
-License:\r
- MIT-style license.\r
-*/\r
-\r
-var Request = new Class({\r
-\r
- Implements: [Chain, Events, Options],\r
-\r
- options: {\r
- /*onRequest: $empty,\r
- onSuccess: $empty,\r
- onFailure: $empty,\r
- onException: $empty,*/\r
- url: '',\r
- data: '',\r
- headers: {\r
- 'X-Requested-With': 'XMLHttpRequest',\r
- 'Accept': 'text/javascript, text/html, application/xml, text/xml, */*'\r
- },\r
- async: true,\r
- method: 'post',\r
- link: 'ignore',\r
- isSuccess: null,\r
- emulation: true,\r
- urlEncoded: true,\r
- encoding: 'utf-8',\r
- evalScripts: false,\r
- evalResponse: false\r
- },\r
-\r
- initialize: function(options){\r
- this.xhr = new Browser.Request();\r
- this.setOptions(options);\r
- this.options.isSuccess = this.options.isSuccess || this.isSuccess;\r
- this.headers = new Hash(this.options.headers);\r
- },\r
-\r
- onStateChange: function(){\r
- if (this.xhr.readyState != 4 || !this.running) return;\r
- this.running = false;\r
- this.status = 0;\r
- $try(function(){\r
- this.status = this.xhr.status;\r
- }.bind(this));\r
- if (this.options.isSuccess.call(this, this.status)){\r
- this.response = {text: this.xhr.responseText, xml: this.xhr.responseXML};\r
- this.success(this.response.text, this.response.xml);\r
- } else {\r
- this.response = {text: null, xml: null};\r
- this.failure();\r
- }\r
- this.xhr.onreadystatechange = $empty;\r
- },\r
-\r
- isSuccess: function(){\r
- return ((this.status >= 200) && (this.status < 300));\r
- },\r
-\r
- processScripts: function(text){\r
- if (this.options.evalResponse || (/(ecma|java)script/).test(this.getHeader('Content-type'))) return $exec(text);\r
- return text.stripScripts(this.options.evalScripts);\r
- },\r
-\r
- success: function(text, xml){\r
- this.onSuccess(this.processScripts(text), xml);\r
- },\r
- \r
- onSuccess: function(){\r
- this.fireEvent('onComplete', arguments).fireEvent('onSuccess', arguments).callChain();\r
- },\r
- \r
- failure: function(){\r
- this.onFailure();\r
- },\r
-\r
- onFailure: function(){\r
- this.fireEvent('onComplete').fireEvent('onFailure', this.xhr);\r
- },\r
-\r
- setHeader: function(name, value){\r
- this.headers.set(name, value);\r
- return this;\r
- },\r
-\r
- getHeader: function(name){\r
- return $try(function(){\r
- return this.xhr.getResponseHeader(name);\r
- }.bind(this));\r
- },\r
-\r
- check: function(caller){\r
- if (!this.running) return true;\r
- switch (this.options.link){\r
- case 'cancel': this.cancel(); return true;\r
- case 'chain': this.chain(caller.bind(this, Array.slice(arguments, 1))); return false;\r
- }\r
- return false;\r
- },\r
-\r
- send: function(options){\r
- if (!this.check(arguments.callee, options)) return this;\r
- this.running = true;\r
-\r
- var type = $type(options);\r
- if (type == 'string' || type == 'element') options = {data: options};\r
-\r
- var old = this.options;\r
- options = $extend({data: old.data, url: old.url, method: old.method}, options);\r
- var data = options.data, url = options.url, method = options.method;\r
-\r
- switch ($type(data)){\r
- case 'element': data = $(data).toQueryString(); break;\r
- case 'object': case 'hash': data = Hash.toQueryString(data);\r
- }\r
-\r
- if (this.options.emulation && ['put', 'delete'].contains(method)){\r
- var _method = '_method=' + method;\r
- data = (data) ? _method + '&' + data : _method;\r
- method = 'post';\r
- }\r
-\r
- if (this.options.urlEncoded && method == 'post'){\r
- var encoding = (this.options.encoding) ? '; charset=' + this.options.encoding : '';\r
- this.headers.set('Content-type', 'application/x-www-form-urlencoded' + encoding);\r
- }\r
-\r
- if (data && method == 'get'){\r
- url = url + (url.contains('?') ? '&' : '?') + data;\r
- data = null;\r
- }\r
-\r
- this.xhr.open(method.toUpperCase(), url, this.options.async);\r
-\r
- this.xhr.onreadystatechange = this.onStateChange.bind(this);\r
-\r
- this.headers.each(function(value, key){\r
- if (!$try(function(){\r
- this.xhr.setRequestHeader(key, value);\r
- return true;\r
- }.bind(this))) this.fireEvent('onException', [key, value]);\r
- }, this);\r
-\r
- this.fireEvent('onRequest');\r
- this.xhr.send(data);\r
- if (!this.options.async) this.onStateChange();\r
- return this;\r
- },\r
-\r
- cancel: function(){\r
- if (!this.running) return this;\r
- this.running = false;\r
- this.xhr.abort();\r
- this.xhr.onreadystatechange = $empty;\r
- this.xhr = new Browser.Request();\r
- this.fireEvent('onCancel');\r
- return this;\r
- }\r
-\r
-});\r
-\r
-(function(){\r
-\r
-var methods = {};\r
-['get', 'post', 'GET', 'POST', 'PUT', 'DELETE'].each(function(method){\r
- methods[method] = function(){\r
- var params = Array.link(arguments, {url: String.type, data: $defined});\r
- return this.send($extend(params, {method: method.toLowerCase()}));\r
- };\r
-});\r
-\r
-Request.implement(methods);\r
-\r
-})();\r
-\r
-Element.Properties.send = {\r
- \r
- set: function(options){\r
- var send = this.retrieve('send');\r
- if (send) send.cancel();\r
- return this.eliminate('send').store('send:options', $extend({\r
- data: this, link: 'cancel', method: this.get('method') || 'post', url: this.get('action')\r
- }, options));\r
- },\r
-\r
- get: function(options){\r
- if (options || !this.retrieve('send')){\r
- if (options || !this.retrieve('send:options')) this.set('send', options);\r
- this.store('send', new Request(this.retrieve('send:options')));\r
- }\r
- return this.retrieve('send');\r
- }\r
-\r
-};\r
-\r
-Element.implement({\r
-\r
- send: function(url){\r
- var sender = this.get('send');\r
- sender.send({data: this, url: url || sender.options.url});\r
- return this;\r
- }\r
-\r
-});\r
-/*\r
-Script: Request.HTML.js\r
- Extends the basic Request Class with additional methods for interacting with HTML responses.\r
-\r
-License:\r
- MIT-style license.\r
-*/\r
-\r
-Request.HTML = new Class({\r
-\r
- Extends: Request,\r
-\r
- options: {\r
- update: false,\r
- evalScripts: true,\r
- filter: false\r
- },\r
-\r
- processHTML: function(text){\r
- var match = text.match(/<body[^>]*>([\s\S]*?)<\/body>/i);\r
- text = (match) ? match[1] : text;\r
- \r
- var container = new Element('div');\r
- \r
- return $try(function(){\r
- var root = '<root>' + text + '</root>', doc;\r
- if (Browser.Engine.trident){\r
- doc = new ActiveXObject('Microsoft.XMLDOM');\r
- doc.async = false;\r
- doc.loadXML(root);\r
- } else {\r
- doc = new DOMParser().parseFromString(root, 'text/xml');\r
- }\r
- root = doc.getElementsByTagName('root')[0];\r
- for (var i = 0, k = root.childNodes.length; i < k; i++){\r
- var child = Element.clone(root.childNodes[i], true, true);\r
- if (child) container.grab(child);\r
- }\r
- return container;\r
- }) || container.set('html', text);\r
- },\r
-\r
- success: function(text){\r
- var options = this.options, response = this.response;\r
- \r
- response.html = text.stripScripts(function(script){\r
- response.javascript = script;\r
- });\r
- \r
- var temp = this.processHTML(response.html);\r
- \r
- response.tree = temp.childNodes;\r
- response.elements = temp.getElements('*');\r
- \r
- if (options.filter) response.tree = response.elements.filter(options.filter);\r
- if (options.update) $(options.update).empty().adopt(response.tree);\r
- if (options.evalScripts) $exec(response.javascript);\r
- \r
- this.onSuccess(response.tree, response.elements, response.html, response.javascript);\r
- }\r
-\r
-});\r
-\r
-Element.Properties.load = {\r
- \r
- set: function(options){\r
- var load = this.retrieve('load');\r
- if (load) send.cancel();\r
- return this.eliminate('load').store('load:options', $extend({data: this, link: 'cancel', update: this, method: 'get'}, options));\r
- },\r
-\r
- get: function(options){\r
- if (options || ! this.retrieve('load')){\r
- if (options || !this.retrieve('load:options')) this.set('load', options);\r
- this.store('load', new Request.HTML(this.retrieve('load:options')));\r
- }\r
- return this.retrieve('load');\r
- }\r
-\r
-};\r
-\r
-Element.implement({\r
- \r
- load: function(){\r
- this.get('load').send(Array.link(arguments, {data: Object.type, url: String.type}));\r
- return this;\r
- }\r
-\r
-});\r
-/*\r
-Script: Request.JSON.js\r
- Extends the basic Request Class with additional methods for sending and receiving JSON data.\r
-\r
-License:\r
- MIT-style license.\r
-*/\r
-\r
-Request.JSON = new Class({\r
-\r
- Extends: Request,\r
-\r
- options: {\r
- secure: true\r
- },\r
-\r
- initialize: function(options){\r
- this.parent(options);\r
- this.headers.extend({'Accept': 'application/json', 'X-Request': 'JSON'});\r
- },\r
-\r
- success: function(text){\r
- this.response.json = JSON.decode(text, this.options.secure);\r
- this.onSuccess(this.response.json, text);\r
- }\r
-\r
-});/*\r
-Script: Fx.Slide.js\r
- Effect to slide an element in and out of view.\r
-\r
-License:\r
- MIT-style license.\r
-*/\r
-\r
-Fx.Slide = new Class({\r
-\r
- Extends: Fx,\r
-\r
- options: {\r
- mode: 'vertical'\r
- },\r
-\r
- initialize: function(element, options){\r
- this.addEvent('onComplete', function(){\r
- this.open = (this.wrapper['offset' + this.layout.capitalize()] != 0);\r
- if (this.open && Browser.Engine.webkit419) this.element.dispose().inject(this.wrapper);\r
- }, true);\r
- this.element = this.subject = $(element);\r
- this.parent(options);\r
- var wrapper = this.element.retrieve('wrapper');\r
- this.wrapper = wrapper || new Element('div', {\r
- styles: $extend(this.element.getStyles('margin', 'position'), {'overflow': 'hidden'})\r
- }).wraps(this.element);\r
- this.element.store('wrapper', this.wrapper).setStyle('margin', 0);\r
- this.now = [];\r
- this.open = true;\r
- },\r
-\r
- vertical: function(){\r
- this.margin = 'margin-top';\r
- this.layout = 'height';\r
- this.offset = this.element.offsetHeight;\r
- },\r
-\r
- horizontal: function(){\r
- this.margin = 'margin-left';\r
- this.layout = 'width';\r
- this.offset = this.element.offsetWidth;\r
- },\r
-\r
- set: function(now){\r
- this.element.setStyle(this.margin, now[0]);\r
- this.wrapper.setStyle(this.layout, now[1]);\r
- return this;\r
- },\r
-\r
- compute: function(from, to, delta){\r
- var now = [];\r
- (2).times(function(i){\r
- now[i] = Fx.compute(from[i], to[i], delta);\r
- });\r
- return now;\r
- },\r
-\r
- start: function(how, mode){\r
- if (!this.check(arguments.callee, how, mode)) return this;\r
- this[mode || this.options.mode]();\r
- var margin = this.element.getStyle(this.margin).toInt();\r
- var layout = this.wrapper.getStyle(this.layout).toInt();\r
- var caseIn = [[margin, layout], [0, this.offset]];\r
- var caseOut = [[margin, layout], [-this.offset, 0]];\r
- var start;\r
- switch (how){\r
- case 'in': start = caseIn; break;\r
- case 'out': start = caseOut; break;\r
- case 'toggle': start = (this.wrapper['offset' + this.layout.capitalize()] == 0) ? caseIn : caseOut;\r
- }\r
- return this.parent(start[0], start[1]);\r
- },\r
-\r
- slideIn: function(mode){\r
- return this.start('in', mode);\r
- },\r
-\r
- slideOut: function(mode){\r
- return this.start('out', mode);\r
- },\r
-\r
- hide: function(mode){\r
- this[mode || this.options.mode]();\r
- this.open = false;\r
- return this.set([-this.offset, 0]);\r
- },\r
-\r
- show: function(mode){\r
- this[mode || this.options.mode]();\r
- this.open = true;\r
- return this.set([0, this.offset]);\r
- },\r
-\r
- toggle: function(mode){\r
- return this.start('toggle', mode);\r
- }\r
-\r
-});\r
-\r
-Element.Properties.slide = {\r
-\r
- set: function(options){\r
- var slide = this.retrieve('slide');\r
- if (slide) slide.cancel();\r
- return this.eliminate('slide').store('slide:options', $extend({link: 'cancel'}, options));\r
- },\r
- \r
- get: function(options){\r
- if (options || !this.retrieve('slide')){\r
- if (options || !this.retrieve('slide:options')) this.set('slide', options);\r
- this.store('slide', new Fx.Slide(this, this.retrieve('slide:options')));\r
- }\r
- return this.retrieve('slide');\r
- }\r
-\r
-};\r
-\r
-Element.implement({\r
-\r
- slide: function(how, mode){\r
- how = how || 'toggle';\r
- var slide = this.get('slide'), toggle;\r
- switch (how){\r
- case 'hide': slide.hide(mode); break;\r
- case 'show': slide.show(mode); break;\r
- case 'toggle':\r
- var flag = this.retrieve('slide:flag', slide.open);\r
- slide[(flag) ? 'slideOut' : 'slideIn'](mode);\r
- this.store('slide:flag', !flag);\r
- toggle = true;\r
- break;\r
- default: slide.start(how, mode);\r
- }\r
- if (!toggle) this.eliminate('slide:flag');\r
- return this;\r
- }\r
-\r
-});\r
-/*\r
-Script: Fx.Scroll.js\r
- Effect to smoothly scroll any element, including the window.\r
-\r
-License:\r
- MIT-style license.\r
-*/\r
-\r
-Fx.Scroll = new Class({\r
-\r
- Extends: Fx,\r
-\r
- options: {\r
- offset: {'x': 0, 'y': 0},\r
- wheelStops: true\r
- },\r
-\r
- initialize: function(element, options){\r
- this.element = this.subject = $(element);\r
- this.parent(options);\r
- var cancel = this.cancel.bind(this, false);\r
-\r
- if ($type(this.element) != 'element') this.element = $(this.element.getDocument().body);\r
-\r
- var stopper = this.element;\r
-\r
- if (this.options.wheelStops){\r
- this.addEvent('onStart', function(){\r
- stopper.addEvent('mousewheel', cancel);\r
- }, true);\r
- this.addEvent('onComplete', function(){\r
- stopper.removeEvent('mousewheel', cancel);\r
- }, true);\r
- }\r
- },\r
-\r
- set: function(){\r
- var now = Array.flatten(arguments);\r
- this.element.scrollTo(now[0], now[1]);\r
- },\r
-\r
- compute: function(from, to, delta){\r
- var now = [];\r
- (2).times(function(i){\r
- now.push(Fx.compute(from[i], to[i], delta));\r
- });\r
- return now;\r
- },\r
-\r
- start: function(x, y){\r
- if (!this.check(arguments.callee, x, y)) return this;\r
- var offsetSize = this.element.getSize(), scrollSize = this.element.getScrollSize();\r
- var scroll = this.element.getScroll(), values = {x: x, y: y};\r
- for (var z in values){\r
- var max = scrollSize[z] - offsetSize[z];\r
- if ($chk(values[z])) values[z] = ($type(values[z]) == 'number') ? values[z].limit(0, max) : max;\r
- else values[z] = scroll[z];\r
- values[z] += this.options.offset[z];\r
- }\r
- return this.parent([scroll.x, scroll.y], [values.x, values.y]);\r
- },\r
-\r
- toTop: function(){\r
- return this.start(false, 0);\r
- },\r
-\r
- toLeft: function(){\r
- return this.start(0, false);\r
- },\r
-\r
- toRight: function(){\r
- return this.start('right', false);\r
- },\r
-\r
- toBottom: function(){\r
- return this.start(false, 'bottom');\r
- },\r
-\r
- toElement: function(el){\r
- var position = $(el).getPosition(this.element);\r
- return this.start(position.x, position.y);\r
- }\r
-\r
-});\r
-/*\r
-Script: Fx.Elements.js\r
- Effect to change any number of CSS properties of any number of Elements.\r
-\r
-License:\r
- MIT-style license.\r
-*/\r
-\r
-Fx.Elements = new Class({\r
-\r
- Extends: Fx.CSS,\r
-\r
- initialize: function(elements, options){\r
- this.elements = this.subject = $$(elements);\r
- this.parent(options);\r
- },\r
-\r
- compute: function(from, to, delta){\r
- var now = {};\r
- for (var i in from){\r
- var iFrom = from[i], iTo = to[i], iNow = now[i] = {};\r
- for (var p in iFrom) iNow[p] = this.parent(iFrom[p], iTo[p], delta);\r
- }\r
- return now;\r
- },\r
-\r
- set: function(now){\r
- for (var i in now){\r
- var iNow = now[i];\r
- for (var p in iNow) this.render(this.elements[i], p, iNow[p], this.options.unit);\r
- }\r
- return this;\r
- },\r
-\r
- start: function(obj){\r
- if (!this.check(arguments.callee, obj)) return this;\r
- var from = {}, to = {};\r
- for (var i in obj){\r
- var iProps = obj[i], iFrom = from[i] = {}, iTo = to[i] = {};\r
- for (var p in iProps){\r
- var parsed = this.prepare(this.elements[i], p, iProps[p]);\r
- iFrom[p] = parsed.from;\r
- iTo[p] = parsed.to;\r
- }\r
- }\r
- return this.parent(from, to);\r
- }\r
-\r
-});/*\r
-Script: Drag.js\r
- The base Drag Class. Can be used to drag and resize Elements using mouse events.\r
-\r
-License:\r
- MIT-style license.\r
-*/\r
-\r
-var Drag = new Class({\r
-\r
- Implements: [Events, Options],\r
-\r
- options: {/*\r
- onBeforeStart: $empty,\r
- onStart: $empty,\r
- onDrag: $empty,\r
- onCancel: $empty,\r
- onComplete: $empty,*/\r
- snap: 6,\r
- unit: 'px',\r
- grid: false,\r
- style: true,\r
- limit: false,\r
- handle: false,\r
- invert: false,\r
- preventDefault: false,\r
- modifiers: {x: 'left', y: 'top'}\r
- },\r
-\r
- initialize: function(){\r
- var params = Array.link(arguments, {'options': Object.type, 'element': $defined});\r
- this.element = $(params.element);\r
- this.document = this.element.getDocument();\r
- this.setOptions(params.options || {});\r
- var htype = $type(this.options.handle);\r
- this.handles = (htype == 'array' || htype == 'collection') ? $$(this.options.handle) : $(this.options.handle) || this.element;\r
- this.mouse = {'now': {}, 'pos': {}};\r
- this.value = {'start': {}, 'now': {}};\r
- \r
- this.selection = (Browser.Engine.trident) ? 'selectstart' : 'mousedown';\r
- \r
- this.bound = {\r
- start: this.start.bind(this),\r
- check: this.check.bind(this),\r
- drag: this.drag.bind(this),\r
- stop: this.stop.bind(this),\r
- cancel: this.cancel.bind(this),\r
- eventStop: $lambda(false)\r
- };\r
- this.attach();\r
- },\r
-\r
- attach: function(){\r
- this.handles.addEvent('mousedown', this.bound.start);\r
- return this;\r
- },\r
-\r
- detach: function(){\r
- this.handles.removeEvent('mousedown', this.bound.start);\r
- return this;\r
- },\r
-\r
- start: function(event){\r
- if (this.options.preventDefault) event.preventDefault();\r
- this.fireEvent('onBeforeStart', this.element);\r
- this.mouse.start = event.page;\r
- var limit = this.options.limit;\r
- this.limit = {'x': [], 'y': []};\r
- for (var z in this.options.modifiers){\r
- if (!this.options.modifiers[z]) continue;\r
- if (this.options.style) this.value.now[z] = this.element.getStyle(this.options.modifiers[z]).toInt();\r
- else this.value.now[z] = this.element[this.options.modifiers[z]];\r
- if (this.options.invert) this.value.now[z] *= -1;\r
- this.mouse.pos[z] = event.page[z] - this.value.now[z];\r
- if (limit && limit[z]){\r
- for (var i = 2; i--; i){\r
- if ($chk(limit[z][i])) this.limit[z][i] = $lambda(limit[z][i])();\r
- }\r
- }\r
- }\r
- if ($type(this.options.grid) == 'number') this.options.grid = {'x': this.options.grid, 'y': this.options.grid};\r
- this.document.addEvents({mousemove: this.bound.check, mouseup: this.bound.cancel});\r
- this.document.addEvent(this.selection, this.bound.eventStop);\r
- },\r
-\r
- check: function(event){\r
- if (this.options.preventDefault) event.preventDefault();\r
- var distance = Math.round(Math.sqrt(Math.pow(event.page.x - this.mouse.start.x, 2) + Math.pow(event.page.y - this.mouse.start.y, 2)));\r
- if (distance > this.options.snap){\r
- this.cancel();\r
- this.document.addEvents({\r
- mousemove: this.bound.drag,\r
- mouseup: this.bound.stop\r
- });\r
- this.fireEvent('onStart', this.element).fireEvent('onSnap', this.element);\r
- }\r
- },\r
-\r
- drag: function(event){\r
- if (this.options.preventDefault) event.preventDefault();\r
- this.mouse.now = event.page;\r
- for (var z in this.options.modifiers){\r
- if (!this.options.modifiers[z]) continue;\r
- this.value.now[z] = this.mouse.now[z] - this.mouse.pos[z];\r
- if (this.options.invert) this.value.now[z] *= -1;\r
- if (this.options.limit && this.limit[z]){\r
- if ($chk(this.limit[z][1]) && (this.value.now[z] > this.limit[z][1])){\r
- this.value.now[z] = this.limit[z][1];\r
- } else if ($chk(this.limit[z][0]) && (this.value.now[z] < this.limit[z][0])){\r
- this.value.now[z] = this.limit[z][0];\r
- }\r
- }\r
- if (this.options.grid[z]) this.value.now[z] -= (this.value.now[z] % this.options.grid[z]);\r
- if (this.options.style) this.element.setStyle(this.options.modifiers[z], this.value.now[z] + this.options.unit);\r
- else this.element[this.options.modifiers[z]] = this.value.now[z];\r
- }\r
- this.fireEvent('onDrag', this.element);\r
- },\r
-\r
- cancel: function(event){\r
- this.document.removeEvent('mousemove', this.bound.check);\r
- this.document.removeEvent('mouseup', this.bound.cancel);\r
- if (event){\r
- this.document.removeEvent(this.selection, this.bound.eventStop);\r
- this.fireEvent('onCancel', this.element);\r
- }\r
- },\r
-\r
- stop: function(event){\r
- this.document.removeEvent(this.selection, this.bound.eventStop);\r
- this.document.removeEvent('mousemove', this.bound.drag);\r
- this.document.removeEvent('mouseup', this.bound.stop);\r
- if (event) this.fireEvent('onComplete', this.element);\r
- }\r
-\r
-});\r
-\r
-Element.implement({\r
- \r
- makeResizable: function(options){\r
- return new Drag(this, $merge({modifiers: {'x': 'width', 'y': 'height'}}, options));\r
- }\r
-\r
-});/*\r
-Script: Drag.Move.js\r
- A Drag extension that provides support for the constraining of draggables to containers and droppables.\r
-\r
-License:\r
- MIT-style license.\r
-*/\r
-\r
-Drag.Move = new Class({\r
-\r
- Extends: Drag,\r
-\r
- options: {\r
- droppables: [],\r
- container: false\r
- },\r
-\r
- initialize: function(element, options){\r
- this.parent(element, options);\r
- this.droppables = $$(this.options.droppables);\r
- this.container = $(this.options.container);\r
- if (this.container && $type(this.container) != 'element') this.container = $(this.container.getDocument().body);\r
- element = this.element;\r
- \r
- var current = element.getStyle('position');\r
- var position = (current != 'static') ? current : 'absolute';\r
- if (element.getStyle('left') == 'auto' || element.getStyle('top') == 'auto') element.position(element.getPosition(element.offsetParent));\r
- \r
- element.setStyle('position', position);\r
- \r
- this.addEvent('onStart', function(){\r
- this.checkDroppables();\r
- }, true);\r
- },\r
-\r
- start: function(event){\r
- if (this.container){\r
- var el = this.element, cont = this.container, ccoo = cont.getCoordinates(el.offsetParent), cps = {}, ems = {};\r
-\r
- ['top', 'right', 'bottom', 'left'].each(function(pad){\r
- cps[pad] = cont.getStyle('padding-' + pad).toInt();\r
- ems[pad] = el.getStyle('margin-' + pad).toInt();\r
- }, this);\r
-\r
- var width = el.offsetWidth + ems.left + ems.right, height = el.offsetHeight + ems.top + ems.bottom;\r
- var x = [ccoo.left + cps.left, ccoo.right - cps.right - width];\r
- var y = [ccoo.top + cps.top, ccoo.bottom - cps.bottom - height];\r
-\r
- this.options.limit = {x: x, y: y};\r
- }\r
- this.parent(event);\r
- },\r
-\r
- checkAgainst: function(el){\r
- el = el.getCoordinates();\r
- var now = this.mouse.now;\r
- return (now.x > el.left && now.x < el.right && now.y < el.bottom && now.y > el.top);\r
- },\r
-\r
- checkDroppables: function(){\r
- var overed = this.droppables.filter(this.checkAgainst, this).getLast();\r
- if (this.overed != overed){\r
- if (this.overed) this.fireEvent('onLeave', [this.element, this.overed]);\r
- if (overed){\r
- this.overed = overed;\r
- this.fireEvent('onEnter', [this.element, overed]);\r
- } else {\r
- this.overed = null;\r
- }\r
- }\r
- },\r
-\r
- drag: function(event){\r
- this.parent(event);\r
- if (this.droppables.length) this.checkDroppables();\r
- },\r
-\r
- stop: function(event){\r
- this.checkDroppables();\r
- this.fireEvent('onDrop', [this.element, this.overed]);\r
- this.overed = null;\r
- return this.parent(event);\r
- }\r
-\r
-});\r
-\r
-Element.implement({\r
-\r
- makeDraggable: function(options){\r
- return new Drag.Move(this, options);\r
- }\r
-\r
-});\r
-/*\r
-Script: Color.js\r
- Class for creating and manipulating colors in JavaScript. Supports HSB -> RGB Conversions and vice versa.\r
-\r
-License:\r
- MIT-style license.\r
-*/\r
-\r
-var Color = new Native({\r
- \r
- initialize: function(color, type){\r
- if (arguments.length >= 3){\r
- type = "rgb"; color = Array.slice(arguments, 0, 3);\r
- } else if (typeof color == 'string'){\r
- if (color.match(/rgb/)) color = color.rgbToHex().hexToRgb(true);\r
- else if (color.match(/hsb/)) color = color.hsbToRgb();\r
- else color = color.hexToRgb(true);\r
- }\r
- type = type || 'rgb';\r
- switch (type){\r
- case 'hsb':\r
- var old = color;\r
- color = color.hsbToRgb();\r
- color.hsb = old;\r
- break;\r
- case 'hex': color = color.hexToRgb(true); break;\r
- }\r
- color.rgb = color.slice(0, 3);\r
- color.hsb = color.hsb || color.rgbToHsb();\r
- color.hex = color.rgbToHex();\r
- return $extend(color, this);\r
- }\r
-\r
-});\r
-\r
-Color.implement({\r
-\r
- mix: function(){\r
- var colors = Array.slice(arguments);\r
- var alpha = ($type(colors.getLast()) == 'number') ? colors.pop() : 50;\r
- var rgb = this.slice();\r
- colors.each(function(color){\r
- color = new Color(color);\r
- for (var i = 0; i < 3; i++) rgb[i] = Math.round((rgb[i] / 100 * (100 - alpha)) + (color[i] / 100 * alpha));\r
- });\r
- return new Color(rgb, 'rgb');\r
- },\r
-\r
- invert: function(){\r
- return new Color(this.map(function(value){\r
- return 255 - value;\r
- }));\r
- },\r
-\r
- setHue: function(value){\r
- return new Color([value, this.hsb[1], this.hsb[2]], 'hsb');\r
- },\r
-\r
- setSaturation: function(percent){\r
- return new Color([this.hsb[0], percent, this.hsb[2]], 'hsb');\r
- },\r
-\r
- setBrightness: function(percent){\r
- return new Color([this.hsb[0], this.hsb[1], percent], 'hsb');\r
- }\r
-\r
-});\r
-\r
-function $RGB(r, g, b){\r
- return new Color([r, g, b], 'rgb');\r
-};\r
-\r
-function $HSB(h, s, b){\r
- return new Color([h, s, b], 'hsb');\r
-};\r
-\r
-function $HEX(hex){\r
- return new Color(hex, 'hex');\r
-};\r
-\r
-Array.implement({\r
-\r
- rgbToHsb: function(){\r
- var red = this[0], green = this[1], blue = this[2];\r
- var hue, saturation, brightness;\r
- var max = Math.max(red, green, blue), min = Math.min(red, green, blue);\r
- var delta = max - min;\r
- brightness = max / 255;\r
- saturation = (max != 0) ? delta / max : 0;\r
- if (saturation == 0){\r
- hue = 0;\r
- } else {\r
- var rr = (max - red) / delta;\r
- var gr = (max - green) / delta;\r
- var br = (max - blue) / delta;\r
- if (red == max) hue = br - gr;\r
- else if (green == max) hue = 2 + rr - br;\r
- else hue = 4 + gr - rr;\r
- hue /= 6;\r
- if (hue < 0) hue++;\r
- }\r
- return [Math.round(hue * 360), Math.round(saturation * 100), Math.round(brightness * 100)];\r
- },\r
-\r
- hsbToRgb: function(){\r
- var br = Math.round(this[2] / 100 * 255);\r
- if (this[1] == 0){\r
- return [br, br, br];\r
- } else {\r
- var hue = this[0] % 360;\r
- var f = hue % 60;\r
- var p = Math.round((this[2] * (100 - this[1])) / 10000 * 255);\r
- var q = Math.round((this[2] * (6000 - this[1] * f)) / 600000 * 255);\r
- var t = Math.round((this[2] * (6000 - this[1] * (60 - f))) / 600000 * 255);\r
- switch (Math.floor(hue / 60)){\r
- case 0: return [br, t, p];\r
- case 1: return [q, br, p];\r
- case 2: return [p, br, t];\r
- case 3: return [p, q, br];\r
- case 4: return [t, p, br];\r
- case 5: return [br, p, q];\r
- }\r
- }\r
- return false;\r
- }\r
-\r
-});\r
-\r
-String.implement({\r
-\r
- rgbToHsb: function(){\r
- var rgb = this.match(/\d{1,3}/g);\r
- return (rgb) ? hsb.rgbToHsb() : null;\r
- },\r
- \r
- hsbToRgb: function(){\r
- var hsb = this.match(/\d{1,3}/g);\r
- return (hsb) ? hsb.hsbToRgb() : null;\r
- }\r
-\r
-});\r
-/*\r
-Script: Group.js\r
- Class for monitoring collections of events\r
-\r
-License:\r
- MIT-style license.\r
-*/\r
-\r
-var Group = new Class({\r
-\r
- initialize: function(){\r
- this.instances = Array.flatten(arguments);\r
- this.events = {};\r
- this.checker = {};\r
- },\r
-\r
- addEvent: function(type, fn){\r
- this.checker[type] = this.checker[type] || {};\r
- this.events[type] = this.events[type] || [];\r
- if (this.events[type].contains(fn)) return false;\r
- else this.events[type].push(fn);\r
- this.instances.each(function(instance, i){\r
- instance.addEvent(type, this.check.bind(this, [type, instance, i]));\r
- }, this);\r
- return this;\r
- },\r
-\r
- check: function(type, instance, i){\r
- this.checker[type][i] = true;\r
- var every = this.instances.every(function(current, j){\r
- return this.checker[type][j] || false;\r
- }, this);\r
- if (!every) return;\r
- this.checker[type] = {};\r
- this.events[type].each(function(event){\r
- event.call(this, this.instances, instance);\r
- }, this);\r
- }\r
-\r
-});\r
-/*\r
-Script: Hash.Cookie.js\r
- Class for creating, reading, and deleting Cookies in JSON format.\r
-\r
-License:\r
- MIT-style license.\r
-*/\r
-\r
-Hash.Cookie = new Class({\r
-\r
- Extends: Cookie,\r
-\r
- options: {\r
- autoSave: true\r
- },\r
-\r
- initialize: function(name, options){\r
- this.parent(name, options);\r
- this.load();\r
- },\r
-\r
- save: function(){\r
- var value = JSON.encode(this.hash);\r
- if (!value || value.length > 4096) return false; //cookie would be truncated!\r
- if (value == '{}') this.dispose();\r
- else this.write(value);\r
- return true;\r
- },\r
-\r
- load: function(){\r
- this.hash = new Hash(JSON.decode(this.read(), true));\r
- return this;\r
- }\r
-\r
-});\r
-\r
-Hash.Cookie.implement((function(){\r
- \r
- var methods = {};\r
- \r
- Hash.each(Hash.prototype, function(method, name){\r
- methods[name] = function(){\r
- var value = method.apply(this.hash, arguments);\r
- if (this.options.autoSave) this.save();\r
- return value;\r
- };\r
- });\r
- \r
- return methods;\r
- \r
-})());/*\r
-Script: Sortables.js\r
- Class for creating a drag and drop sorting interface for lists of items.\r
-\r
-License:\r
- MIT-style license.\r
-*/\r
-\r
-var Sortables = new Class({\r
-\r
- Implements: [Events, Options],\r
-\r
- options: {/*\r
- onSort: $empty,\r
- onStart: $empty,\r
- onComplete: $empty,*/\r
- snap: 4,\r
- opacity: 1,\r
- clone: false,\r
- revert: false,\r
- handle: false,\r
- constrain: false\r
- },\r
-\r
- initialize: function(lists, options){\r
- this.setOptions(options);\r
- this.elements = [];\r
- this.lists = [];\r
- this.idle = true;\r
- \r
- this.addLists($$($(lists) || lists));\r
- if (!this.options.clone) this.options.revert = false;\r
- if (this.options.revert) this.effect = new Fx.Morph(null, $merge({duration: 250, link: 'cancel'}, this.options.revert));\r
- },\r
-\r
- attach: function(){\r
- this.addLists(this.lists);\r
- return this;\r
- },\r
-\r
- detach: function(){\r
- this.lists = this.removeLists(this.lists);\r
- return this;\r
- },\r
-\r
- addItems: function(){\r
- Array.flatten(arguments).each(function(element){\r
- this.elements.push(element);\r
- var start = element.retrieve('sortables:start', this.start.bindWithEvent(this, element));\r
- (this.options.handle ? element.getElement(this.options.handle) || element : element).addEvent('mousedown', start);\r
- }, this);\r
- return this;\r
- },\r
-\r
- addLists: function(){\r
- Array.flatten(arguments).each(function(list){\r
- this.lists.push(list);\r
- this.addItems(list.getChildren());\r
- }, this);\r
- return this;\r
- },\r
-\r
- removeItems: function(){\r
- var elements = [];\r
- Array.flatten(arguments).each(function(element){\r
- elements.push(element);\r
- this.elements.erase(element);\r
- var start = element.retrieve('sortables:start');\r
- (this.options.handle ? element.getElement(this.options.handle) || element : element).removeEvent('mousedown', start);\r
- }, this);\r
- return $$(elements);\r
- },\r
-\r
- removeLists: function(){\r
- var lists = [];\r
- Array.flatten(arguments).each(function(list){\r
- lists.push(list);\r
- this.lists.erase(list);\r
- this.removeItems(list.getChildren());\r
- }, this);\r
- return $$(lists);\r
- },\r
-\r
- getClone: function(event, element){\r
- if (!this.options.clone) return new Element('div').inject(document.body);\r
- if ($type(this.options.clone) == 'function') return this.options.clone.call(this, event, element, this.list);\r
- return element.clone(true).setStyles({\r
- 'margin': '0px',\r
- 'position': 'absolute',\r
- 'visibility': 'hidden',\r
- 'width': element.getStyle('width')\r
- }).inject(this.list).position(element.getPosition(element.offsetParent));\r
- },\r
-\r
- getDroppables: function(){\r
- var droppables = this.list.getChildren();\r
- if (!this.options.constrain) droppables = this.lists.concat(droppables).erase(this.list);\r
- return droppables.erase(this.clone).erase(this.element);\r
- },\r
-\r
- insert: function(dragging, element){\r
- var where = 'inside';\r
- if (this.lists.contains(element)){\r
- this.list = element;\r
- this.drag.droppables = this.getDroppables();\r
- } else {\r
- where = this.element.getAllPrevious().contains(element) ? 'before' : 'after';\r
- }\r
- this.element.inject(element, where);\r
- this.fireEvent('onSort', [this.element, this.clone]);\r
- },\r
-\r
- start: function(event, element){\r
- if (!this.idle) return;\r
- this.idle = false;\r
- this.element = element;\r
- this.opacity = element.get('opacity');\r
- this.list = element.getParent();\r
- this.clone = this.getClone(event, element);\r
- \r
- this.drag = new Drag.Move(this.clone, {\r
- snap: this.options.snap,\r
- container: this.options.constrain && this.element.getParent(),\r
- droppables: this.getDroppables(),\r
- onSnap: function(){\r
- event.stop();\r
- this.clone.setStyle('visibility', 'visible');\r
- this.element.set('opacity', this.options.opacity || 0);\r
- this.fireEvent('onStart', [this.element, this.clone]);\r
- }.bind(this),\r
- onEnter: this.insert.bind(this),\r
- onCancel: this.reset.bind(this),\r
- onComplete: this.end.bind(this)\r
- });\r
- \r
- this.clone.inject(this.element, 'before');\r
- this.drag.start(event);\r
- },\r
-\r
- end: function(){\r
- this.drag.detach();\r
- this.element.set('opacity', this.opacity);\r
- if (this.effect){\r
- var dim = this.element.getStyles('width', 'height');\r
- var pos = this.clone.computePosition(this.element.getPosition(this.clone.offsetParent));\r
- this.effect.element = this.clone;\r
- this.effect.start({\r
- top: pos.top,\r
- left: pos.left,\r
- width: dim.width,\r
- height: dim.height,\r
- opacity: 0.25\r
- }).chain(this.reset.bind(this));\r
- } else {\r
- this.reset();\r
- }\r
- },\r
-\r
- reset: function(){\r
- this.idle = true;\r
- this.clone.destroy();\r
- this.fireEvent('onComplete', this.element);\r
- },\r
-\r
- serialize: function(){\r
- var params = Array.link(arguments, {modifier: Function.type, index: $defined});\r
- var serial = this.lists.map(function(list){\r
- return list.getChildren().map(params.modifier || function(element){\r
- return element.get('id');\r
- }, this);\r
- }, this);\r
- \r
- var index = params.index;\r
- if (this.lists.length == 1) index = 0;\r
- return $chk(index) && index >= 0 && index < this.lists.length ? serial[index] : serial;\r
- }\r
-\r
-});/*\r
-Script: Tips.js\r
- Class for creating nice tips that follow the mouse cursor when hovering an element.\r
-\r
-License:\r
- MIT-style license.\r
-*/\r
-\r
-var Tips = new Class({\r
-\r
- Implements: [Events, Options],\r
-\r
- options: {\r
- onShow: function(tip){\r
- tip.setStyle('visibility', 'visible');\r
- },\r
- onHide: function(tip){\r
- tip.setStyle('visibility', 'hidden');\r
- },\r
- showDelay: 100,\r
- hideDelay: 100,\r
- className: null,\r
- offsets: {x: 16, y: 16},\r
- fixed: false\r
- },\r
-\r
- initialize: function(){\r
- var params = Array.link(arguments, {options: Object.type, elements: $defined});\r
- this.setOptions(params.options || null);\r
- \r
- this.tip = new Element('div').inject(document.body);\r
- \r
- if (this.options.className) this.tip.addClass(this.options.className);\r
- \r
- var top = new Element('div', {'class': 'tip-top'}).inject(this.tip);\r
- this.container = new Element('div', {'class': 'tip'}).inject(this.tip);\r
- var bottom = new Element('div', {'class': 'tip-bottom'}).inject(this.tip);\r
-\r
- this.tip.setStyles({position: 'absolute', top: 0, left: 0, visibility: 'hidden'});\r
- \r
- if (params.elements) this.attach(params.elements);\r
- },\r
- \r
- attach: function(elements){\r
- $$(elements).each(function(element){\r
- var title = element.retrieve('tip:title', element.get('title'));\r
- var text = element.retrieve('tip:text', element.get('rel') || element.get('href'));\r
- var enter = element.retrieve('tip:enter', this.elementEnter.bindWithEvent(this, element));\r
- var leave = element.retrieve('tip:leave', this.elementLeave.bindWithEvent(this, element));\r
- element.addEvents({mouseenter: enter, mouseleave: leave});\r
- if (!this.options.fixed){\r
- var move = element.retrieve('tip:move', this.elementMove.bindWithEvent(this, element));\r
- element.addEvent('mousemove', move);\r
- }\r
- element.store('tip:native', element.get('title'));\r
- element.erase('title');\r
- }, this);\r
- return this;\r
- },\r
- \r
- detach: function(elements){\r
- $$(elements).each(function(element){\r
- element.removeEvent('mouseenter', element.retrieve('tip:enter') || $empty);\r
- element.removeEvent('mouseleave', element.retrieve('tip:leave') || $empty);\r
- element.removeEvent('mousemove', element.retrieve('tip:move') || $empty);\r
- element.eliminate('tip:enter').eliminate('tip:leave').eliminate('tip:move');\r
- var original = element.retrieve('tip:native');\r
- if (original) element.set('title', original);\r
- });\r
- return this;\r
- },\r
- \r
- elementEnter: function(event, element){\r
- \r
- $A(this.container.childNodes).each(Element.dispose);\r
- \r
- var title = element.retrieve('tip:title');\r
- \r
- if (title){\r
- this.titleElement = new Element('div', {'class': 'tip-title'}).inject(this.container);\r
- this.fill(this.titleElement, title);\r
- }\r
- \r
- var text = element.retrieve('tip:text');\r
- if (text){\r
- this.textElement = new Element('div', {'class': 'tip-text'}).inject(this.container);\r
- this.fill(this.textElement, text);\r
- }\r
- \r
- this.timer = $clear(this.timer);\r
- this.timer = this.show.delay(this.options.showDelay, this);\r
-\r
- this.position((!this.options.fixed) ? event : {page: element.getPosition()});\r
- },\r
- \r
- elementLeave: function(event){\r
- $clear(this.timer);\r
- this.timer = this.hide.delay(this.options.hideDelay, this);\r
- },\r
- \r
- elementMove: function(event){\r
- this.position(event);\r
- },\r
- \r
- position: function(event){\r
- var size = window.getSize(), scroll = window.getScroll();\r
- var tip = {x: this.tip.offsetWidth, y: this.tip.offsetHeight};\r
- var props = {x: 'left', y: 'top'};\r
- for (var z in props){\r
- var pos = event.page[z] + this.options.offsets[z];\r
- if ((pos + tip[z] - scroll[z]) > size[z]) pos = event.page[z] - this.options.offsets[z] - tip[z];\r
- this.tip.setStyle(props[z], pos);\r
- }\r
- },\r
- \r
- fill: function(element, contents){\r
- (typeof contents == 'string') ? element.set('html', contents) : element.adopt(contents);\r
- },\r
-\r
- show: function(){\r
- this.fireEvent('onShow', this.tip);\r
- },\r
-\r
- hide: function(){\r
- this.fireEvent('onHide', this.tip);\r
- }\r
-\r
-});/*\r
-Script: SmoothScroll.js\r
- Class for creating a smooth scrolling effect to all internal links on the page.\r
-\r
-License:\r
- MIT-style license.\r
-*/\r
-\r
-var SmoothScroll = new Class({\r
-\r
- Extends: Fx.Scroll,\r
-\r
- initialize: function(options, context){\r
- context = context || document;\r
- var doc = context.getDocument(), win = context.getWindow();\r
- this.parent(doc, options);\r
- this.links = (this.options.links) ? $$(this.options.links) : $$(doc.links);\r
- var location = win.location.href.match(/^[^#]*/)[0] + '#';\r
- this.links.each(function(link){\r
- if (link.href.indexOf(location) != 0) return;\r
- var anchor = link.href.substr(location.length);\r
- if (anchor && $(anchor)) this.useLink(link, anchor);\r
- }, this);\r
- if (!Browser.Engine.webkit419) this.addEvent('onComplete', function(){\r
- win.location.hash = this.anchor;\r
- }, true);\r
- },\r
-\r
- useLink: function(link, anchor){\r
- link.addEvent('click', function(event){\r
- this.anchor = anchor;\r
- this.toElement(anchor);\r
- event.stop();\r
- }.bind(this));\r
- }\r
-\r
-});/*\r
-Script: Slider.js\r
- Class for creating horizontal and vertical slider controls.\r
-\r
-License:\r
- MIT-style license.\r
-*/\r
-\r
-var Slider = new Class({\r
-\r
- Implements: [Events, Options],\r
-\r
- options: {/*\r
- onChange: $empty,\r
- onComplete: $empty,*/\r
- onTick: function(position){\r
- if(this.options.snap) position = this.toPosition(this.step);\r
- this.knob.setStyle(this.property, position);\r
- },\r
- snap: false,\r
- offset: 0,\r
- range: false,\r
- wheel: false,\r
- steps: 100,\r
- mode: 'horizontal'\r
- },\r
-\r
- initialize: function(element, knob, options){\r
- this.setOptions(options);\r
- this.element = $(element);\r
- this.knob = $(knob);\r
- this.previousChange = this.previousEnd = this.step = -1;\r
- this.element.addEvent('mousedown', this.clickedElement.bind(this));\r
- if (this.options.wheel) this.element.addEvent('mousewheel', this.scrolledElement.bindWithEvent(this));\r
- var offset, limit = {}, modifiers = {'x': false, 'y': false};\r
- switch (this.options.mode){\r
- case 'vertical':\r
- this.axis = 'y';\r
- this.property = 'top';\r
- offset = 'offsetHeight';\r
- break;\r
- case 'horizontal':\r
- this.axis = 'x';\r
- this.property = 'left';\r
- offset = 'offsetWidth';\r
- }\r
- this.half = this.knob[offset] / 2;\r
- this.full = this.element[offset] - this.knob[offset] + (this.options.offset * 2);\r
- this.min = $chk(this.options.range[0]) ? this.options.range[0] : 0;\r
- this.max = $chk(this.options.range[1]) ? this.options.range[1] : this.options.steps;\r
- this.range = this.max - this.min;\r
- this.steps = this.options.steps || this.full;\r
- this.stepSize = Math.abs(this.range) / this.steps;\r
- this.stepWidth = this.stepSize * this.full / Math.abs(this.range) ;\r
- \r
- this.knob.setStyle('position', 'relative').setStyle(this.property, - this.options.offset);\r
- modifiers[this.axis] = this.property;\r
- limit[this.axis] = [- this.options.offset, this.full - this.options.offset];\r
- this.drag = new Drag(this.knob, {\r
- snap: 0,\r
- limit: limit,\r
- modifiers: modifiers,\r
- onDrag: this.draggedKnob.bind(this),\r
- onStart: this.draggedKnob.bind(this),\r
- onComplete: function(){\r
- this.draggedKnob();\r
- this.end();\r
- }.bind(this)\r
- });\r
- if (this.options.snap) {\r
- this.drag.options.grid = Math.ceil(this.stepWidth);\r
- this.drag.options.limit[this.axis][1] = this.full;\r
- }\r
- },\r
-\r
- set: function(step){\r
- if (!((this.range > 0) ^ (step < this.min))) step = this.min;\r
- if (!((this.range > 0) ^ (step > this.max))) step = this.max;\r
- \r
- this.step = Math.round(step);\r
- this.checkStep();\r
- this.end();\r
- this.fireEvent('onTick', this.toPosition(this.step));\r
- return this;\r
- },\r
-\r
- clickedElement: function(event){\r
- var dir = this.range < 0 ? -1 : 1;\r
- var position = event.page[this.axis] - this.element.getPosition()[this.axis] - this.half;\r
- position = position.limit(-this.options.offset, this.full -this.options.offset);\r
- \r
- this.step = Math.round(this.min + dir * this.toStep(position));\r
- this.checkStep();\r
- this.end();\r
- this.fireEvent('onTick', position);\r
- },\r
- \r
- scrolledElement: function(event){\r
- var mode = (this.options.mode == 'horizontal') ? (event.wheel < 0) : (event.wheel > 0);\r
- this.set(mode ? this.step - this.stepSize : this.step + this.stepSize);\r
- event.stop();\r
- },\r
-\r
- draggedKnob: function(){\r
- var dir = this.range < 0 ? -1 : 1;\r
- var position = this.drag.value.now[this.axis];\r
- position = position.limit(-this.options.offset, this.full -this.options.offset);\r
- this.step = Math.round(this.min + dir * this.toStep(position));\r
- this.checkStep();\r
- },\r
-\r
- checkStep: function(){\r
- if (this.previousChange != this.step){\r
- this.previousChange = this.step;\r
- this.fireEvent('onChange', this.step);\r
- }\r
- },\r
-\r
- end: function(){\r
- if (this.previousEnd !== this.step){\r
- this.previousEnd = this.step;\r
- this.fireEvent('onComplete', this.step + '');\r
- }\r
- },\r
-\r
- toStep: function(position){\r
- var step = (position + this.options.offset) * this.stepSize / this.full * this.steps;\r
- return this.options.steps ? Math.round(step -= step % this.stepSize) : step;\r
- },\r
-\r
- toPosition: function(step){\r
- return (this.full * Math.abs(this.min - step)) / (this.steps * this.stepSize) - this.options.offset;\r
- }\r
-\r
-});/*\r
-Script: Scroller.js\r
- Class which scrolls the contents of any Element (including the window) when the mouse reaches the Element's boundaries.\r
-\r
-License:\r
- MIT-style license.\r
-*/\r
-\r
-var Scroller = new Class({\r
-\r
- Implements: [Events, Options],\r
-\r
- options: {\r
- area: 20,\r
- velocity: 1,\r
- onChange: function(x, y){\r
- this.element.scrollTo(x, y);\r
- }\r
- },\r
-\r
- initialize: function(element, options){\r
- this.setOptions(options);\r
- this.element = $(element);\r
- this.listener = ($type(this.element) != 'element') ? $(this.element.getDocument().body) : this.element;\r
- this.timer = null;\r
- },\r
-\r
- start: function(){\r
- this.coord = this.getCoords.bind(this);\r
- this.listener.addEvent('mousemove', this.coord);\r
- },\r
-\r
- stop: function(){\r
- this.listener.removeEvent('mousemove', this.coord);\r
- this.timer = $clear(this.timer);\r
- },\r
-\r
- getCoords: function(event){\r
- this.page = (this.listener.get('tag') == 'body') ? event.client : event.page;\r
- if (!this.timer) this.timer = this.scroll.periodical(50, this);\r
- },\r
-\r
- scroll: function(){\r
- var size = this.element.getSize(), scroll = this.element.getScroll(), pos = this.element.getPosition(), change = {'x': 0, 'y': 0};\r
- for (var z in this.page){\r
- if (this.page[z] < (this.options.area + pos[z]) && scroll[z] != 0)\r
- change[z] = (this.page[z] - this.options.area - pos[z]) * this.options.velocity;\r
- else if (this.page[z] + this.options.area > (size[z] + pos[z]) && size[z] + size[z] != scroll[z])\r
- change[z] = (this.page[z] - size[z] + this.options.area - pos[z]) * this.options.velocity;\r
- }\r
- if (change.y || change.x) this.fireEvent('onChange', [scroll.x + change.x, scroll.y + change.y]);\r
- }\r
-\r
-});/*\r
-Script: Assets.js\r
- Provides methods to dynamically load JavaScript, CSS, and Image files into the document.\r
-\r
-License:\r
- MIT-style license.\r
-*/\r
-\r
-var Asset = new Hash({\r
-\r
- javascript: function(source, properties){\r
- properties = $extend({\r
- onload: $empty,\r
- document: document,\r
- check: $lambda(true)\r
- }, properties);\r
- \r
- var script = new Element('script', {'src': source, 'type': 'text/javascript'});\r
- \r
- var load = properties.onload.bind(script), check = properties.check, doc = properties.document;\r
- delete properties.onload; delete properties.check; delete properties.document;\r
- \r
- script.addEvents({\r
- load: load,\r
- readystatechange: function(){\r
- if (['loaded', 'complete'].contains(this.readyState)) load();\r
- }\r
- }).setProperties(properties);\r
- \r
- \r
- if (Browser.Engine.webkit419) var checker = (function(){\r
- if (!$try(check)) return;\r
- $clear(checker);\r
- load();\r
- }).periodical(50);\r
- \r
- return script.inject(doc.head);\r
- },\r
-\r
- css: function(source, properties){\r
- return new Element('link', $merge({\r
- 'rel': 'stylesheet', 'media': 'screen', 'type': 'text/css', 'href': source\r
- }, properties)).inject(document.head);\r
- },\r
-\r
- image: function(source, properties){\r
- properties = $merge({\r
- 'onload': $empty,\r
- 'onabort': $empty,\r
- 'onerror': $empty\r
- }, properties);\r
- var image = new Image();\r
- var element = $(image) || new Element('img');\r
- ['load', 'abort', 'error'].each(function(name){\r
- var type = 'on' + name;\r
- var event = properties[type];\r
- delete properties[type];\r
- image[type] = function(){\r
- if (!image) return;\r
- if (!element.parentNode){\r
- element.width = image.width;\r
- element.height = image.height;\r
- }\r
- image = image.onload = image.onabort = image.onerror = null;\r
- event.delay(1, element, element);\r
- element.fireEvent(name, element, 1);\r
- };\r
- });\r
- image.src = element.src = source;\r
- if (image && image.complete) image.onload.delay(1);\r
- return element.setProperties(properties);\r
- },\r
-\r
- images: function(sources, options){\r
- options = $merge({\r
- onComplete: $empty,\r
- onProgress: $empty\r
- }, options);\r
- if (!sources.push) sources = [sources];\r
- var images = [];\r
- var counter = 0;\r
- sources.each(function(source){\r
- var img = new Asset.image(source, {\r
- 'onload': function(){\r
- options.onProgress.call(this, counter, sources.indexOf(source));\r
- counter++;\r
- if (counter == sources.length) options.onComplete();\r
- }\r
- });\r
- images.push(img);\r
- });\r
- return new Elements(images);\r
- }\r
-\r
-});/*\r
-Script: Accordion.js\r
- An Fx.Elements extension which allows you to easily create accordion type controls.\r
-\r
-License:\r
- MIT-style license.\r
-*/\r
-\r
-var Accordion = new Class({\r
-\r
- Extends: Fx.Elements,\r
-\r
- options: {/*\r
- onActive: $empty,\r
- onBackground: $empty,*/\r
- display: 0,\r
- show: false,\r
- height: true,\r
- width: false,\r
- opacity: true,\r
- fixedHeight: false,\r
- fixedWidth: false,\r
- wait: false,\r
- alwaysHide: false\r
- },\r
-\r
- initialize: function(){\r
- var params = Array.link(arguments, {'container': Element.type, 'options': Object.type, 'togglers': $defined, 'elements': $defined});\r
- this.parent(params.elements, params.options);\r
- this.togglers = $$(params.togglers);\r
- this.container = $(params.container);\r
- this.previous = -1;\r
- if (this.options.alwaysHide) this.options.wait = true;\r
- if ($chk(this.options.show)){\r
- this.options.display = false;\r
- this.previous = this.options.show;\r
- }\r
- if (this.options.start){\r
- this.options.display = false;\r
- this.options.show = false;\r
- }\r
- this.effects = {};\r
- if (this.options.opacity) this.effects.opacity = 'fullOpacity';\r
- if (this.options.width) this.effects.width = this.options.fixedWidth ? 'fullWidth' : 'offsetWidth';\r
- if (this.options.height) this.effects.height = this.options.fixedHeight ? 'fullHeight' : 'scrollHeight';\r
- for (var i = 0, l = this.togglers.length; i < l; i++) this.addSection(this.togglers[i], this.elements[i]);\r
- this.elements.each(function(el, i){\r
- if (this.options.show === i){\r
- this.fireEvent('onActive', [this.togglers[i], el]);\r
- } else {\r
- for (var fx in this.effects) el.setStyle(fx, 0);\r
- }\r
- }, this);\r
- if ($chk(this.options.display)) this.display(this.options.display);\r
- },\r
-\r
- addSection: function(toggler, element, pos){\r
- toggler = $(toggler);\r
- element = $(element);\r
- var test = this.togglers.contains(toggler);\r
- var len = this.togglers.length;\r
- this.togglers.include(toggler);\r
- this.elements.include(element);\r
- if (len && (!test || pos)){\r
- pos = $pick(pos, len - 1);\r
- toggler.inject(this.togglers[pos], 'before');\r
- element.inject(toggler, 'after');\r
- } else if (this.container && !test){\r
- toggler.inject(this.container);\r
- element.inject(this.container);\r
- }\r
- var idx = this.togglers.indexOf(toggler);\r
- toggler.addEvent('click', this.display.bind(this, idx));\r
- if (this.options.height) element.setStyles({'padding-top': 0, 'border-top': 'none', 'padding-bottom': 0, 'border-bottom': 'none'});\r
- if (this.options.width) element.setStyles({'padding-left': 0, 'border-left': 'none', 'padding-right': 0, 'border-right': 'none'});\r
- element.fullOpacity = 1;\r
- if (this.options.fixedWidth) element.fullWidth = this.options.fixedWidth;\r
- if (this.options.fixedHeight) element.fullHeight = this.options.fixedHeight;\r
- element.setStyle('overflow', 'hidden');\r
- if (!test){\r
- for (var fx in this.effects) element.setStyle(fx, 0);\r
- }\r
- return this;\r
- },\r
-\r
- display: function(index){\r
- index = ($type(index) == 'element') ? this.elements.indexOf(index) : index;\r
- if ((this.timer && this.options.wait) || (index === this.previous && !this.options.alwaysHide)) return this;\r
- this.previous = index;\r
- var obj = {};\r
- this.elements.each(function(el, i){\r
- obj[i] = {};\r
- var hide = (i != index) || (this.options.alwaysHide && (el.offsetHeight > 0));\r
- this.fireEvent(hide ? 'onBackground' : 'onActive', [this.togglers[i], el]);\r
- for (var fx in this.effects) obj[i][fx] = hide ? 0 : el[this.effects[fx]];\r
- }, this);\r
- return this.start(obj);\r
- }\r
-\r
-});
\ No newline at end of file
+++ /dev/null
-tinyMCE.addI18n('en.images',{\r
- desc : 'Upload and insert picture'\r
-});
\ No newline at end of file
+++ /dev/null
-tinyMCE.addI18n('en.images_dlg',{\r
-title:"Pictures",\r
-del_sel_folder:"Remove selected folder?",\r
-sel_files_for_del:"Select files for removal.\n\nYou can remove several files simultaneously by selecting it with Ctrl.",\r
-files_to_del:"Files for removal",\r
-delete_str:"Remove",\r
-create_new_fld:"Create new folder",\r
-create_fld:"Create folder",\r
-upload_files:"Upload files",\r
-delete_file:"Delete file",\r
-\r
-fancy_title:"Image uploading",\r
-fancy_back_alt:"Back to files list",\r
-fancy_back:"Back to files",\r
-fancy_browse:"Browse",\r
-fancy_begin_upload:"Start upload",\r
-fancy_upload_files:"Upload files",\r
-fancy_clear:"Clear list",\r
-fancy_begin_upload_files:"Start files upload",\r
-fancy_general_status:"General status",\r
-fancy_file_status:"File status"\r
-});
\ No newline at end of file
+++ /dev/null
-tinyMCE.addI18n('ru.images',{\r
- desc : '\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430\u0020\u0438\u0020\u0432\u0441\u0442\u0430\u0432\u043A\u0430\u0020\u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0439'\r
-});
\ No newline at end of file
+++ /dev/null
-tinyMCE.addI18n('ru.images_dlg',{\r
-title:"\u041A\u0430\u0440\u0442\u0438\u043D\u043A\u0438",\r
-del_sel_folder:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C\u0020\u0432\u044B\u0431\u0440\u0430\u043D\u043D\u0443\u044E\u0020\u043F\u0430\u043F\u043A\u0443?",\r
-sel_files_for_del:"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435\u0020\u0444\u0430\u0439\u043B\u044B\u0020\u0434\u043B\u044F\u0020\u0443\u0434\u0430\u043B\u0435\u043D\u0438\u044F\u002E\u005C\u006E\u005C\u006E\u0414\u043B\u044F\u0020\u0443\u0434\u0430\u043B\u0435\u043D\u0438\u044F\u0020\u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u0438\u0445\u0020\u0444\u0430\u0439\u043B\u043E\u0432\u0020\u0432\u044B\u0434\u0435\u043B\u0438\u0442\u0435\u0020\u0438\u0445\u0020\u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044F\u0020\u0043\u0074\u0072\u006C\u002E",\r
-files_to_del:"\u0424\u0430\u0439\u043B\u043E\u0432\u0020\u043A\u0020\u0443\u0434\u0430\u043B\u0435\u043D\u0438\u044E",\r
-delete_str:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C",\r
-create_new_fld:"\u0421\u043E\u0437\u0434\u0430\u0442\u044C\u0020\u043D\u043E\u0432\u0443\u044E\u0020\u043F\u0430\u043F\u043A\u0443",\r
-create_fld:"\u0421\u043E\u0437\u0434\u0430\u0442\u044C\u0020\u043F\u0430\u043F\u043A\u0443",\r
-upload_files:"\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C\u0020\u0444\u0430\u0439\u043B\u044B",\r
-delete_file:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C\u0020\u0444\u0430\u0439\u043B",\r
-\r
-fancy_title:"\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430\u0020\u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0439",\r
-fancy_back_alt:"\u0412\u0435\u0440\u043D\u0443\u0442\u044C\u0441\u044F\u0020\u043A\u0020\u0441\u043F\u0438\u0441\u043A\u0443\u0020\u0444\u0430\u0439\u043B\u043E\u0432",\r
-fancy_back:"\u0412\u0435\u0440\u043D\u0443\u0442\u044C\u0441\u044F\u0020\u043A\u0020\u0444\u0430\u0439\u043B\u0430\u043C",\r
-fancy_browse:"\u041E\u0431\u0437\u043E\u0440",\r
-fancy_begin_upload:"\u041D\u0430\u0447\u0430\u0442\u044C\u0020\u0437\u0430\u0433\u0440\u0443\u0437\u043A\u0443",\r
-fancy_upload_files:"\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C\u0020\u0444\u0430\u0439\u043B\u044B",\r
-fancy_clear:"\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C\u0020\u0441\u043F\u0438\u0441\u043E\u043A",\r
-fancy_begin_upload_files:"\u041D\u0430\u0447\u0430\u0442\u044C\u0020\u0437\u0430\u0433\u0440\u0443\u0437\u043A\u0443\u0020\u0444\u0430\u0439\u043B\u043E\u0432",\r
-fancy_general_status:"\u041E\u0431\u0449\u0438\u0439\u0020\u0441\u0442\u0430\u0442\u0443\u0441",\r
-fancy_file_status:"\u0421\u0442\u0430\u0442\u0443\u0441\u0020\u0444\u0430\u0439\u043B\u0430"\r
-});
\ No newline at end of file
+++ /dev/null
-TinyMCE Images Plugin\r
-\r
-Ñàéò àâòîðà: http://dustweb.ru/log/projects/tinymce_images/
\ No newline at end of file
+++ /dev/null
-<?php\r
-/**\r
- * JsHttpRequest: PHP backend for JavaScript DHTML loader.\r
- * (C) Dmitry Koterov, http://en.dklab.ru\r
- *\r
- * This library is free software; you can redistribute it and/or\r
- * modify it under the terms of the GNU Lesser General Public\r
- * License as published by the Free Software Foundation; either\r
- * version 2.1 of the License, or (at your option) any later version.\r
- * See http://www.gnu.org/copyleft/lesser.html\r
- *\r
- * Do not remove this comment if you want to use the script!\r
- * Íå óäàëÿéòå äàííûé êîììåíòàðèé, åñëè âû õîòèòå èñïîëüçîâàòü ñêðèïò!\r
- *\r
- * This backend library also supports POST requests additionally to GET.\r
- *\r
- * @author Dmitry Koterov \r
- * @version 5.x $Id$\r
- */\r
-\r
-class JsHttpRequest\r
-{\r
- var $SCRIPT_ENCODING = "windows-1251";\r
- var $SCRIPT_DECODE_MODE = '';\r
- var $LOADER = null;\r
- var $ID = null; \r
- var $RESULT = null;\r
- \r
- // Internal; uniq value.\r
- var $_uniqHash;\r
- // Magic number for display_error checking.\r
- var $_magic = 14623;\r
- // Previous display_errors value.\r
- var $_prevDisplayErrors = null; \r
- // Internal: response content-type depending on loader type.\r
- var $_contentTypes = array(\r
- "script" => "text/javascript",\r
- "xml" => "text/plain", // In XMLHttpRequest mode we must return text/plain - stupid Opera 8.0. :(\r
- "form" => "text/html",\r
- "" => "text/plain", // for unknown loader\r
- );\r
- // Internal: conversion to UTF-8 JSON cancelled because of non-ascii key.\r
- var $_toUtfFailed = false;\r
- // Internal: list of characters 128...255 (for strpbrk() ASCII check).\r
- var $_nonAsciiChars = '';\r
- // Which Unicode conversion function is available?\r
- var $_unicodeConvMethod = null;\r
- // Emergency memory buffer to be freed on memory_limit error.\r
- var $_emergBuffer = null;\r
-\r
- \r
- /**\r
- * Constructor.\r
- * \r
- * Create new JsHttpRequest backend object and attach it\r
- * to script output buffer. As a result - script will always return\r
- * correct JavaScript code, even in case of fatal errors.\r
- *\r
- * QUERY_STRING is in form of: PHPSESSID=<sid>&a=aaa&b=bbb&JsHttpRequest=<id>-<loader>\r
- * where <id> is a request ID, <loader> is a loader name, <sid> - a session ID (if present), \r
- * PHPSESSID - session parameter name (by default = "PHPSESSID").\r
- * \r
- * If an object is created WITHOUT an active AJAX query, it is simply marked as\r
- * non-active. Use statuc method isActive() to check.\r
- */\r
- function JsHttpRequest($enc)\r
- {\r
- global $JsHttpRequest_Active;\r
- \r
- // To be on a safe side - do not allow to drop reference counter on ob processing.\r
- $GLOBALS['_RESULT'] =& $this->RESULT; \r
- \r
- // Parse QUERY_STRING.\r
- if (preg_match('/^(.*)(?:&|^)JsHttpRequest=(?:(\d+)-)?([^&]+)((?:&|$).*)$/s', @$_SERVER['QUERY_STRING'], $m)) {\r
- $this->ID = $m[2];\r
- $this->LOADER = strtolower($m[3]);\r
- $_SERVER['QUERY_STRING'] = preg_replace('/^&+|&+$/s', '', preg_replace('/(^|&)'.session_name().'=[^&]*&?/s', '&', $m[1] . $m[4]));\r
- unset(\r
- $_GET['JsHttpRequest'],\r
- $_REQUEST['JsHttpRequest'],\r
- $_GET[session_name()],\r
- $_POST[session_name()],\r
- $_REQUEST[session_name()]\r
- );\r
- // Detect Unicode conversion method.\r
- $this->_unicodeConvMethod = function_exists('mb_convert_encoding')? 'mb' : (function_exists('iconv')? 'iconv' : null);\r
- \r
- // Fill an emergency buffer. We erase it at the first line of OB processor\r
- // to free some memory. This memory may be used on memory_limit error.\r
- $this->_emergBuffer = str_repeat('a', 1024 * 200);\r
-\r
- // Intercept fatal errors via display_errors (seems it is the only way). \r
- $this->_uniqHash = md5('JsHttpRequest' . microtime() . getmypid());\r
- $this->_prevDisplayErrors = ini_get('display_errors');\r
- ini_set('display_errors', $this->_magic); //\r
- ini_set('error_prepend_string', $this->_uniqHash . ini_get('error_prepend_string'));\r
- ini_set('error_append_string', ini_get('error_append_string') . $this->_uniqHash);\r
-\r
- // Start OB handling early.\r
- ob_start(array(&$this, "_obHandler"));\r
- $JsHttpRequest_Active = true;\r
- \r
- // Set up the encoding.\r
- $this->setEncoding($enc);\r
- \r
- // Check if headers are already sent (see Content-Type library usage).\r
- // If true - generate a debug message and exit.\r
- $file = $line = null;\r
- $headersSent = version_compare(PHP_VERSION, "4.3.0") < 0? headers_sent() : headers_sent($file, $line);\r
- if ($headersSent) {\r
- trigger_error(\r
- "HTTP headers are already sent" . ($line !== null? " in $file on line $line" : " somewhere in the script") . ". "\r
- . "Possibly you have an extra space (or a newline) before the first line of the script or any library. "\r
- . "Please note that JsHttpRequest uses its own Content-Type header and fails if "\r
- . "this header cannot be set. See header() function documentation for more details",\r
- E_USER_ERROR\r
- );\r
- exit();\r
- }\r
- } else {\r
- $this->ID = 0;\r
- $this->LOADER = 'unknown';\r
- $JsHttpRequest_Active = false;\r
- }\r
- }\r
- \r
-\r
- /**\r
- * Static function.\r
- * Returns true if JsHttpRequest output processor is currently active.\r
- * \r
- * @return boolean True if the library is active, false otherwise.\r
- */\r
- function isActive()\r
- {\r
- return !empty($GLOBALS['JsHttpRequest_Active']);\r
- }\r
- \r
-\r
- /**\r
- * string getJsCode()\r
- * \r
- * Return JavaScript part of the library.\r
- */\r
- function getJsCode()\r
- {\r
- return file_get_contents(dirname(__FILE__) . '/JsHttpRequest.js');\r
- }\r
-\r
-\r
- /**\r
- * void setEncoding(string $encoding)\r
- * \r
- * Set an active script encoding & correct QUERY_STRING according to it.\r
- * Examples:\r
- * "windows-1251" - set plain encoding (non-windows characters, \r
- * e.g. hieroglyphs, are totally ignored)\r
- * "windows-1251 entities" - set windows encoding, BUT additionally replace:\r
- * "&" -> "&" \r
- * hieroglyph -> &#XXXX; entity\r
- */\r
- function setEncoding($enc)\r
- {\r
- // Parse an encoding.\r
- preg_match('/^(\S*)(?:\s+(\S*))$/', $enc, $p);\r
- $this->SCRIPT_ENCODING = strtolower(!empty($p[1])? $p[1] : $enc);\r
- $this->SCRIPT_DECODE_MODE = !empty($p[2])? $p[2] : '';\r
- // Manually parse QUERY_STRING because of damned Unicode's %uXXXX.\r
- $this->_correctSuperglobals();\r
- }\r
-\r
- \r
- /**\r
- * string quoteInput(string $input)\r
- * \r
- * Quote a string according to the input decoding mode.\r
- * If entities are used (see setEncoding()), no '&' character is quoted,\r
- * only '"', '>' and '<' (we presume that '&' is already quoted by\r
- * an input reader function).\r
- *\r
- * Use this function INSTEAD of htmlspecialchars() for $_GET data \r
- * in your scripts.\r
- */\r
- function quoteInput($s)\r
- {\r
- if ($this->SCRIPT_DECODE_MODE == 'entities')\r
- return str_replace(array('"', '<', '>'), array('"', '<', '>'), $s);\r
- else\r
- return htmlspecialchars($s);\r
- }\r
- \r
-\r
- /**\r
- * Convert a PHP scalar, array or hash to JS scalar/array/hash. This function is \r
- * an analog of json_encode(), but it can work with a non-UTF8 input and does not \r
- * analyze the passed data. Output format must be fully JSON compatible.\r
- * \r
- * @param mixed $a Any structure to convert to JS.\r
- * @return string JavaScript equivalent structure.\r
- */\r
- function php2js($a=false)\r
- {\r
- if (is_null($a)) return 'null';\r
- if ($a === false) return 'false';\r
- if ($a === true) return 'true';\r
- if (is_scalar($a)) {\r
- if (is_float($a)) {\r
- // Always use "." for floats.\r
- $a = str_replace(",", ".", strval($a));\r
- }\r
- // All scalars are converted to strings to avoid indeterminism.\r
- // PHP's "1" and 1 are equal for all PHP operators, but \r
- // JS's "1" and 1 are not. So if we pass "1" or 1 from the PHP backend,\r
- // we should get the same result in the JS frontend (string).\r
- // Character replacements for JSON.\r
- static $jsonReplaces = array(\r
- array("\\", "/", "\n", "\t", "\r", "\b", "\f", '"'),\r
- array('\\\\', '\\/', '\\n', '\\t', '\\r', '\\b', '\\f', '\"')\r
- );\r
- return '"' . str_replace($jsonReplaces[0], $jsonReplaces[1], $a) . '"';\r
- }\r
- $isList = true;\r
- for ($i = 0, reset($a); $i < count($a); $i++, next($a)) {\r
- if (key($a) !== $i) { \r
- $isList = false; \r
- break; \r
- }\r
- }\r
- $result = array();\r
- if ($isList) {\r
- foreach ($a as $v) {\r
- $result[] = JsHttpRequest::php2js($v);\r
- }\r
- return '[ ' . join(', ', $result) . ' ]';\r
- } else {\r
- foreach ($a as $k => $v) {\r
- $result[] = JsHttpRequest::php2js($k) . ': ' . JsHttpRequest::php2js($v);\r
- }\r
- return '{ ' . join(', ', $result) . ' }';\r
- }\r
- }\r
- \r
- \r
- /**\r
- * Internal methods.\r
- */\r
-\r
- /**\r
- * Parse & decode QUERY_STRING.\r
- */\r
- function _correctSuperglobals()\r
- {\r
- // In case of FORM loader we may go to nirvana, everything is already parsed by PHP.\r
- if ($this->LOADER == 'form') return;\r
- \r
- // ATTENTION!!!\r
- // HTTP_RAW_POST_DATA is only accessible when Content-Type of POST request\r
- // is NOT default "application/x-www-form-urlencoded"!!!\r
- // Library frontend sets "application/octet-stream" for that purpose,\r
- // see JavaScript code. In PHP 5.2.2.HTTP_RAW_POST_DATA is not set sometimes; \r
- // in such cases - read the POST data manually from the STDIN stream.\r
- $rawPost = strcasecmp($_SERVER['REQUEST_METHOD'], 'POST') == 0? (isset($GLOBALS['HTTP_RAW_POST_DATA'])? $GLOBALS['HTTP_RAW_POST_DATA'] : @file_get_contents("php://input")) : null;\r
- $source = array(\r
- '_GET' => !empty($_SERVER['QUERY_STRING'])? $_SERVER['QUERY_STRING'] : null, \r
- '_POST'=> $rawPost,\r
- );\r
- foreach ($source as $dst=>$src) {\r
- // First correct all 2-byte entities.\r
- $s = preg_replace('/%(?!5B)(?!5D)([0-9a-f]{2})/si', '%u00\\1', $src);\r
- // Now we can use standard parse_str() with no worry!\r
- $data = null;\r
- parse_str($s, $data);\r
- $GLOBALS[$dst] = $this->_ucs2EntitiesDecode($data);\r
- }\r
- $GLOBALS['HTTP_GET_VARS'] = $_GET; // deprecated vars\r
- $GLOBALS['HTTP_POST_VARS'] = $_POST;\r
- $_REQUEST = \r
- (isset($_COOKIE)? $_COOKIE : array()) + \r
- (isset($_POST)? $_POST : array()) + \r
- (isset($_GET)? $_GET : array());\r
- if (ini_get('register_globals')) {\r
- // TODO?\r
- }\r
- }\r
-\r
-\r
- /**\r
- * Called in case of error too!\r
- */\r
- function _obHandler($text)\r
- {\r
- unset($this->_emergBuffer); // free a piece of memory for memory_limit error\r
- unset($GLOBALS['JsHttpRequest_Active']);\r
- \r
- // Check for error & fetch a resulting data.\r
- if (preg_match("/{$this->_uniqHash}(.*?){$this->_uniqHash}/sx", $text, $m)) {\r
- if (!ini_get('display_errors') || (!$this->_prevDisplayErrors && ini_get('display_errors') == $this->_magic)) {\r
- // Display_errors:\r
- // 1. disabled manually after the library initialization, or\r
- // 2. was initially disabled and is not changed\r
- $text = str_replace($m[0], '', $text); // strip whole error message\r
- } else {\r
- $text = str_replace($this->_uniqHash, '', $text);\r
- }\r
- }\r
- if ($m && preg_match('/\bFatal error(<.*?>)?:/i', $m[1])) {\r
- // On fatal errors - force null result (generate 500 error).\r
- $this->RESULT = null;\r
- } else {\r
- // Make a resulting hash.\r
- if (!isset($this->RESULT)) {\r
- global $_RESULT;\r
- $this->RESULT = $_RESULT;\r
- }\r
- }\r
- \r
- $result = array(\r
- 'id' => $this->ID,\r
- 'js' => $this->RESULT,\r
- 'text' => $text,\r
- );\r
- $text = null;\r
- $encoding = $this->SCRIPT_ENCODING;\r
- $status = $this->RESULT !== null? 200 : 500;\r
-\r
- // Try to use very fast json_encode: 3-4 times faster than a manual encoding.\r
- if (function_exists('array_walk_recursive') && function_exists('json_encode') && $this->_unicodeConvMethod) {\r
- $this->_nonAsciiChars = join("", array_map('chr', range(128, 255)));\r
- $this->_toUtfFailed = false;\r
- $resultUtf8 = $result;\r
- array_walk_recursive($resultUtf8, array(&$this, '_toUtf8_callback'), $this->SCRIPT_ENCODING);\r
- if (!$this->_toUtfFailed) {\r
- // If some key contains non-ASCII character, convert everything manually.\r
- $text = json_encode($resultUtf8);\r
- $encoding = "UTF-8";\r
- }\r
- }\r
- \r
- // On failure, use manual encoding.\r
- if ($text === null) {\r
- $text = $this->php2js($result);\r
- }\r
-\r
- if ($this->LOADER != "xml") {\r
- // In non-XML mode we cannot use plain JSON. So - wrap with JS function call.\r
- // If top.JsHttpRequestGlobal is not defined, loading is aborted and \r
- // iframe is removed, so - do not call dataReady().\r
- $text = "" \r
- . ($this->LOADER == "form"? 'top && top.JsHttpRequestGlobal && top.JsHttpRequestGlobal' : 'JsHttpRequest') \r
- . ".dataReady(" . $text . ")\n"\r
- . "";\r
- if ($this->LOADER == "form") {\r
- $text = '<script type="text/javascript" language="JavaScript"><!--' . "\n$text" . '//--></script>';\r
- }\r
- \r
- // Always return 200 code in non-XML mode (else SCRIPT does not work in FF).\r
- // For XML mode, 500 code is okay.\r
- $status = 200;\r
- }\r
-\r
- // Status header. To be safe, display it only in error mode. In case of success \r
- // termination, do not modify the status (""HTTP/1.1 ..." header seems to be not\r
- // too cross-platform).\r
- if ($this->RESULT === null) {\r
- if (php_sapi_name() == "cgi") {\r
- header("Status: $status");\r
- } else {\r
- header("HTTP/1.1 $status");\r
- }\r
- }\r
-\r
- // In XMLHttpRequest mode we must return text/plain - damned stupid Opera 8.0. :(\r
- $ctype = !empty($this->_contentTypes[$this->LOADER])? $this->_contentTypes[$this->LOADER] : $this->_contentTypes[''];\r
- header("Content-type: $ctype; charset=$encoding");\r
-\r
- return $text;\r
- }\r
-\r
-\r
- /**\r
- * Internal function, used in array_walk_recursive() before json_encode() call.\r
- * If a key contains non-ASCII characters, this function sets $this->_toUtfFailed = true,\r
- * becaues array_walk_recursive() cannot modify array keys.\r
- */\r
- function _toUtf8_callback(&$v, $k, $fromEnc)\r
- {\r
- if ($v === null || is_bool($v)) return;\r
- if ($this->_toUtfFailed || !is_scalar($v) || strpbrk($k, $this->_nonAsciiChars) !== false) {\r
- $this->_toUtfFailed = true;\r
- } else {\r
- $v = $this->_unicodeConv($fromEnc, 'UTF-8', $v);\r
- }\r
- }\r
- \r
-\r
- /**\r
- * Decode all %uXXXX entities in string or array (recurrent).\r
- * String must not contain %XX entities - they are ignored!\r
- */\r
- function _ucs2EntitiesDecode($data)\r
- {\r
- if (is_array($data)) {\r
- $d = array();\r
- foreach ($data as $k=>$v) {\r
- $d[$this->_ucs2EntitiesDecode($k)] = $this->_ucs2EntitiesDecode($v);\r
- }\r
- return $d;\r
- } else {\r
- if (strpos($data, '%u') !== false) { // improve speed\r
- $data = preg_replace_callback('/%u([0-9A-F]{1,4})/si', array(&$this, '_ucs2EntitiesDecodeCallback'), $data);\r
- }\r
- return $data;\r
- }\r
- }\r
-\r
-\r
- /**\r
- * Decode one %uXXXX entity (RE callback).\r
- */\r
- function _ucs2EntitiesDecodeCallback($p)\r
- {\r
- $hex = $p[1];\r
- $dec = hexdec($hex);\r
- if ($dec === "38" && $this->SCRIPT_DECODE_MODE == 'entities') {\r
- // Process "&" separately in "entities" decode mode.\r
- $c = "&";\r
- } else {\r
- if ($this->_unicodeConvMethod) {\r
- $c = @$this->_unicodeConv('UCS-2BE', $this->SCRIPT_ENCODING, pack('n', $dec));\r
- } else {\r
- $c = $this->_decUcs2Decode($dec, $this->SCRIPT_ENCODING);\r
- }\r
- if (!strlen($c)) {\r
- if ($this->SCRIPT_DECODE_MODE == 'entities') {\r
- $c = '&#' . $dec . ';';\r
- } else {\r
- $c = '?';\r
- }\r
- }\r
- }\r
- return $c;\r
- }\r
-\r
-\r
- /**\r
- * Wrapper for iconv() or mb_convert_encoding() functions.\r
- * This function will generate fatal error if none of these functons available!\r
- * \r
- * @see iconv()\r
- */\r
- function _unicodeConv($fromEnc, $toEnc, $v)\r
- {\r
- if ($this->_unicodeConvMethod == 'iconv') {\r
- return iconv($fromEnc, $toEnc, $v);\r
- } \r
- return mb_convert_encoding($v, $toEnc, $fromEnc);\r
- }\r
-\r
-\r
- /**\r
- * If there is no ICONV, try to decode 1-byte characters manually\r
- * (for most popular charsets only).\r
- */\r
- \r
- /**\r
- * Convert from UCS-2BE decimal to $toEnc.\r
- */\r
- function _decUcs2Decode($code, $toEnc)\r
- {\r
- if ($code < 128) return chr($code);\r
- if (isset($this->_encTables[$toEnc])) {\r
- // TODO: possible speedup by using array_flip($this->_encTables) and later hash access in the constructor.\r
- $p = array_search($code, $this->_encTables[$toEnc]);\r
- if ($p !== false) return chr(128 + $p);\r
- }\r
- return "";\r
- }\r
- \r
-\r
- /**\r
- * UCS-2BE -> 1-byte encodings (from #128).\r
- */\r
- var $_encTables = array(\r
- 'windows-1251' => array(\r
- 0x0402, 0x0403, 0x201A, 0x0453, 0x201E, 0x2026, 0x2020, 0x2021,\r
- 0x20AC, 0x2030, 0x0409, 0x2039, 0x040A, 0x040C, 0x040B, 0x040F,\r
- 0x0452, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,\r
- 0x0098, 0x2122, 0x0459, 0x203A, 0x045A, 0x045C, 0x045B, 0x045F,\r
- 0x00A0, 0x040E, 0x045E, 0x0408, 0x00A4, 0x0490, 0x00A6, 0x00A7,\r
- 0x0401, 0x00A9, 0x0404, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x0407,\r
- 0x00B0, 0x00B1, 0x0406, 0x0456, 0x0491, 0x00B5, 0x00B6, 0x00B7,\r
- 0x0451, 0x2116, 0x0454, 0x00BB, 0x0458, 0x0405, 0x0455, 0x0457,\r
- 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,\r
- 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F,\r
- 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,\r
- 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F,\r
- 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,\r
- 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F,\r
- 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,\r
- 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F,\r
- ),\r
- 'koi8-r' => array(\r
- 0x2500, 0x2502, 0x250C, 0x2510, 0x2514, 0x2518, 0x251C, 0x2524,\r
- 0x252C, 0x2534, 0x253C, 0x2580, 0x2584, 0x2588, 0x258C, 0x2590,\r
- 0x2591, 0x2592, 0x2593, 0x2320, 0x25A0, 0x2219, 0x221A, 0x2248,\r
- 0x2264, 0x2265, 0x00A0, 0x2321, 0x00B0, 0x00B2, 0x00B7, 0x00F7,\r
- 0x2550, 0x2551, 0x2552, 0x0451, 0x2553, 0x2554, 0x2555, 0x2556,\r
- 0x2557, 0x2558, 0x2559, 0x255A, 0x255B, 0x255C, 0x255d, 0x255E,\r
- 0x255F, 0x2560, 0x2561, 0x0401, 0x2562, 0x2563, 0x2564, 0x2565,\r
- 0x2566, 0x2567, 0x2568, 0x2569, 0x256A, 0x256B, 0x256C, 0x00A9,\r
- 0x044E, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433,\r
- 0x0445, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043d, 0x043E,\r
- 0x043F, 0x044F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432,\r
- 0x044C, 0x044B, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044A,\r
- 0x042E, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413,\r
- 0x0425, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041d, 0x041E,\r
- 0x041F, 0x042F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412,\r
- 0x042C, 0x042B, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042A \r
- ),\r
- );\r
-}\r
+++ /dev/null
-<?php\r
-require_once 'JsHttpRequest.php';\r
-require_once 'tinyimages.php';\r
-\r
-$JsHttpRequest =& new JsHttpRequest('windows-1251');\r
-\r
-if(!isset($_REQUEST['m'])) {\r
- $GLOBALS['_RESULT'] = array( 'error' => 'Íå çàäàí ìåòîä');\r
- exit();\r
-}\r
-list($module, $method) = explode('->',$_REQUEST['m']);\r
-if(empty($method)) {\r
- list($module, $method) = explode('-%3E',$_REQUEST['m']);\r
-}\r
-$method = 'ajax'.$method;\r
-\r
-$timgs = new tinyimages();\r
-\r
-$GLOBALS['_RESULT'] = $timgs->$method($_REQUEST);\r
-exit();
\ No newline at end of file
+++ /dev/null
-<?php\r
-//session_start();\r
-\r
-include 'tinyimages.php';\r
-\r
-$images = new tinyimages();\r
-$images->UploadFiles();\r
-?>
\ No newline at end of file
+++ /dev/null
-<?php\r
-class tinyimages {\r
- \r
- var $folder = '/media/upload/editor';\r
- \r
- function __construct() {\r
- define(DIR, $_SERVER['DOCUMENT_ROOT'].'/');\r
- \r
- // ATTENTION!\r
- // You need to check the session here, because methods of this class can be danger to security!\r
- //if(!isset($_SESSION['user']['type'])) return false;\r
- \r
- $this->folder = $this->folder;\r
- $this->restrict = $this->folder;\r
- }\r
- \r
- private function leftPanel() {\r
- $ret = array();\r
- if ($handle = opendir ( DIR.$this->folder )) {\r
- while (false !== ($file = readdir ( $handle ))) {\r
- if (is_dir(DIR.$this->folder.'/'.$file) && $file != '.') {\r
- $ret[] = array(\r
- 'path' => $file,\r
- 'name' => $file\r
- );\r
- }\r
- }\r
- closedir ($handle);\r
- }\r
- \r
- if(count($ret) > 0) {\r
- $return = '';\r
- foreach ($ret as $val) {\r
- if($val['path'] == '.thumbs') continue;\r
- if($val['path'] == '..') {\r
- $act = '';\r
- if($this->folder == $this->restrict) continue;\r
- $path = substr($this->folder,0,strrpos($this->folder,'/'));\r
- if($path == '') continue;\r
- }\r
- else { $path = $this->folder.'/'.$val['path']; $act = 'onclick="activateDir(this, \''.$path.'\'); return false;"'; }\r
- $return .= '<div class="folder"><a href="#" '.$act.' ondblclick="changeFolder(\''.$path.'\'); return false;">'.$val['name'].'</a></div>';\r
- }\r
- \r
- $name = '';\r
- \r
- return $return;\r
- }\r
- }\r
- \r
- private function addressBar() {\r
- $way = explode('/',str_replace($this->restrict, '', $this->folder));\r
- $way = array_filter($way);\r
- $ret = $link = '';\r
- foreach ($way as $val) {\r
- $link = $link.'/'.$val;\r
- $ret .= '<a href="#" onclick="changeFolder(\''.$this->restrict.$link.'\'); return false;">'.$val.'</a>';\r
- }\r
- return '<a href="#" onclick="changeFolder(\''.$this->restrict.'\'); return false;" class="first"><img src="images/folder.gif" width="16" height="16" /></a>'.$ret;\r
- }\r
- \r
- private function mainField() {\r
- $ret = array();\r
- if ($handle = opendir ( DIR.$this->folder )) {\r
- while (false !== ($file = readdir ( $handle ))) {\r
- if (is_file(DIR.$this->folder.'/'.$file)) {\r
- \r
- list($width, $height, $type, $attr) = getimagesize(DIR.$this->folder.'/'.$file);\r
- \r
- $size = number_format((filesize(DIR.$this->folder.'/'.$file)/1024),2,',',' ').' KB';\r
- \r
- $ret[] = array(\r
- 'src' => $this->folder.'/.thumbs/100x100_'.$file,\r
- 'attr' => $attr,\r
- 'path' => $this->folder.'/'.$file,\r
- 'name' => $file,\r
- 'width' => $width,\r
- 'height'=> $height,\r
- 'size' => $size\r
- );\r
- }\r
- }\r
- closedir ($handle);\r
- }\r
- \r
- \r
- if(count($ret) > 0) {\r
- $return = '';\r
- foreach ($ret as $val) {\r
- $width_for_insert = $val['width']>500?500:$val['width'];\r
- $return .= '<div class="item" ondblclick="addImage(this,\''.$val['path'].'\','.$width_for_insert.');" onclick="activateItem(this,\''.$val['path'].'\');"><img src="'.$val['src'].'" width="100" height="100" alt=" " /><div class="labels">'.$val['width'].'x'.$val['height'].'</div><div class="labels">'.$val['size'].'</div></div>';\r
- }\r
- \r
- $name = '';\r
- \r
- return $return.'<div style="clear:both;"></div>';\r
- }\r
- }\r
- \r
- function ajaxChangeDir($input) {\r
- \r
- $our_folder = $this->folder;\r
- \r
- if($input['uri'] != '') {\r
- $this->folder = $input['uri'];\r
- \r
- $realpath1 = realpath(DIR.$our_folder);\r
- $realpath2 = realpath(DIR.$input['uri']);\r
- \r
- $strlen1 = strlen($realpath1);\r
- $strlen2 = strlen($realpath2);\r
- if($strlen1 > $strlen2) { page404(); exit(); }\r
- for($i=0;$i<$strlen1;$i++) {\r
- if($realpath1[$i] != $realpath2[$i]) { page404(); exit(); }\r
- }\r
- }elseif(isset($_SESSION['tiny_folder'])) {\r
- if($_SESSION['tiny_folder'] != '') {\r
- $this->folder = $_SESSION['tiny_folder'];\r
- }\r
- }\r
- \r
- \r
- $_SESSION['tiny_folder'] = $this->folder;\r
- return array(\r
- 'leftpanel' => $this->leftPanel(),\r
- 'addressbar' => $this->addressBar(),\r
- 'mainfield' => $this->mainField(),\r
- 'uri' => $this->folder\r
- );\r
- }\r
- \r
- \r
- \r
- function ajaxDelDir($input) {\r
- $our_folder = $this->folder;\r
- \r
- if($input['dir'] != '') {\r
- $this->folder = $input['dir'];\r
- \r
- $realpath1 = realpath(DIR.$our_folder);\r
- $realpath2 = realpath(DIR.$input['dir']);\r
- \r
- $strlen1 = strlen($realpath1);\r
- $strlen2 = strlen($realpath2);\r
- if($strlen1 > $strlen2) { page404(); exit(); }\r
- for($i=0;$i<$strlen1;$i++) {\r
- if($realpath1[$i] != $realpath2[$i]) { page404(); exit(); }\r
- }\r
- } else { page404(); exit(); }\r
- \r
- if ($handle = opendir ( DIR.$input['dir'] )) {\r
- while (false !== ($file = readdir ( $handle ))) {\r
- if (is_file(DIR.$input['dir'].'/'.$file)) {\r
- \r
- $thumb_info = pathinfo(DIR.$input['dir'].'/'.$file);\r
- $thumb = $thumb_info['dirname'].'/.thumbs/100x100_'.$thumb_info['basename'];\r
- unlink($thumb);\r
- unlink(DIR.$input['dir'].'/'.$file);\r
- }\r
- }\r
- closedir ($handle);\r
- }\r
- \r
- if ($handle = opendir ( DIR.$input['dir'].'/.thumbs' )) {\r
- while (false !== ($file = readdir ( $handle ))) {\r
- if (is_file(DIR.$input['dir'].'/.thumbs'.'/'.$file)) {\r
- \r
- $thumb_info = pathinfo(DIR.$input['dir'].'/.thumbs'.'/'.$file);\r
- $thumb = $thumb_info['dirname'].'/.thumbs/100x100_'.$thumb_info['basename'];\r
- unlink($thumb);\r
- unlink(DIR.$input['dir'].'/.thumbs'.'/'.$file);\r
- }\r
- }\r
- closedir ($handle);\r
- }\r
- rmdir(DIR.$input['dir'].'/.thumbs');\r
- \r
- if(!rmdir(DIR.$input['dir'])) {\r
- if($input['lng']=='ru') {\r
- return array('error'=>'Îøèáêà óäàëåíèÿ ïàïêè, âîçìîæíî îíà ñîäåðæèò íå óäàëåííûå êàòàëîãè!');\r
- } else {\r
- return array('error'=>'Error delete a folder, perhaps it has not deleted directories!');\r
- }\r
- } else return array();\r
- \r
- }\r
- \r
- \r
- function ajaxDelFile($input) {\r
- \r
- $error = array();\r
- \r
- $input['src'] = array_filter($input['src']);\r
- \r
- $input['src'] = array_unique($input['src']);\r
- \r
- foreach ($input['src'] as $key=>$val) {\r
- if(!is_numeric($key)) continue;\r
- $our_folder = $this->folder;\r
- $pi = pathinfo($val);\r
- $input['uri'] = $pi['dirname'];\r
- \r
- if($input['uri'] != '') {\r
- $this->folder = $input['uri'];\r
- \r
- $realpath1 = realpath(DIR.$our_folder);\r
- $realpath2 = realpath(DIR.$input['uri']);\r
- \r
- $strlen1 = strlen($realpath1);\r
- $strlen2 = strlen($realpath2);\r
- if($strlen1 > $strlen2) { page404(); exit(); }\r
- for($i=0;$i<$strlen1;$i++) {\r
- if($realpath1[$i] != $realpath2[$i]) { page404(); exit(); }\r
- }\r
- } else { page404(); exit(); }\r
- \r
- if(is_file(DIR.$input['src'][$key])) {\r
- $thumb_info = pathinfo(DIR.$input['src'][$key]);\r
- $thumb = $thumb_info['dirname'].'/.thumbs/100x100_'.$thumb_info['basename'];\r
- unlink($thumb);\r
- unlink(DIR.$input['src'][$key]);\r
- } else {\r
- if($input['lng']=='ru') { \r
- $error[] = 'Ôàéë '.$val.' íå íàéäåí!';\r
- } else {\r
- $error[] = 'File '.$val.' not found!';\r
- }\r
- }\r
- \r
- }\r
- \r
- if(count($error) > 0) return array('error'=>implode(', ',$error));\r
- else return array();\r
- }\r
- \r
- \r
- function UploadFiles() {\r
- $our_folder = $this->folder;\r
- \r
- if($_GET['uri'] != '') {\r
- $this->folder = $_GET['uri'];\r
- \r
- $realpath1 = realpath(DIR.$our_folder);\r
- $realpath2 = realpath(DIR.$_GET['uri']);\r
- \r
- $strlen1 = strlen($realpath1);\r
- $strlen2 = strlen($realpath2);\r
- \r
- if($strlen1 > $strlen2) { page404(); exit(); }\r
- for($i=0;$i<$strlen1;$i++) {\r
- if($realpath1[$i] != $realpath2[$i]) { page404(); exit(); }\r
- }\r
- }\r
- \r
- $result = array();\r
-\r
- if (isset($_FILES['photoupload'])) {\r
- $file = $_FILES['photoupload']['tmp_name'];\r
- $error = false;\r
- $size = false;\r
-\r
- if (!is_uploaded_file($file) || ($_FILES['photoupload']['size'] > 2 * 1024 * 1024) ) {\r
- if($_GET['lng']=='ru') {\r
- $error = 'Ïîæàëóéñòà, çàãðóæàéòå ôàéëû íå áîëåå 2Ìá!';\r
- } else {\r
- $error = 'Please do not upload files over 2Mb!';\r
- }\r
- } else\r
- if (!$error && !($size = @getimagesize($file) ) ) {\r
- if($_GET['lng']=='ru') {\r
- $error = 'Îøèáêà, íå âåðíûé òèï ôàéëà';\r
- } else {\r
- $error = 'Error, unsupported type of file';\r
- }\r
- } else\r
- if (!$error && !in_array($size[2], array(1, 2, 3, 7, 8) ) ) {\r
- if($_GET['lng']=='ru') {\r
- $error = 'Îøèáêà òèïà ôàéëà, ðåêîìåíäóåòñÿ çàãðóæàòü ôàéëû JPEG';\r
- } else {\r
- $error = 'Error type of file, recommend upload JPEG files';\r
- }\r
- } else\r
- if (!$error && ($size[0] < 5) || ($size[1] < 5)) {\r
- if($_GET['lng']=='ru') {\r
- $error = 'Ïîæàëóéñòà, çàãðóæàéòå êàðòèíêè ðàçìåðîì áîëåå 5px.';\r
- } else {\r
- $error = 'Please upload pictures larger than 5px.';\r
- }\r
- }\r
- if ($error) {\r
- $result['result'] = 'failed';\r
- $result['error'] = $error;\r
- }\r
- else {\r
- $ext = substr($_FILES['photoupload']['name'],strrpos($_FILES['photoupload']['name'],'.')+1);\r
- $name = md5_file($_FILES['photoupload']['tmp_name']);\r
- $source = DIR.$this->folder.'/'.$name.'.'.$ext;\r
- \r
- if(!copy($_FILES['photoupload']['tmp_name'], $source)) {\r
- $result['result'] = 'error';\r
- if($_GET['lng']=='ru') {\r
- $result['error'] = 'Îøèáêà ïðè êîïèðîâàíèè ôàéëà!';\r
- } else {\r
- $result['error'] = 'Failed to copy a file!';\r
- }\r
- } else {\r
- \r
- if(!file_exists(DIR.$this->folder.'/.thumbs')) mkdir(DIR.$this->folder.'/.thumbs');\r
- $thumb = DIR.$this->folder.'/.thumbs/100x100_'.$name.'.'.$ext;\r
- \r
- //$image = new files('tinyimages');\r
- $this->Resize($source,$thumb,100,100,'back-ffffff');\r
- \r
- $result['result'] = 'success';\r
- if($_GET['lng']=='ru') {\r
- $result['size'] = "Çàãðóæåíî èçîáðàæåíèå ({$size['mime']}) ðàçìåðîì {$size[0]}px/{$size[1]}px.";\r
- } else {\r
- $result['size'] = "Uploaded image ({$size['mime']}) size {$size[0]}px/{$size[1]}px.";\r
- }\r
- }\r
- }\r
- }\r
- else {\r
- $result['result'] = 'error';\r
- if($_GET['lng']=='ru') {\r
- $result['error'] = 'Íåò ôàéëà èëè âíóòðåííÿÿ îøèáêà!';\r
- } else {\r
- $result['error'] = 'No file or an internal error!';\r
- }\r
- }\r
- if (!headers_sent() ) {\r
- header('Content-type: application/json');\r
- }\r
- \r
- foreach ($result as $key=>$val) {
- $return[$key] = iconv("windows-1251", "utf-8", $val);
- }
- \r
- \r
- header("Content-Type: text/plain; charset=UTF-8");\r
- echo json_encode($return);\r
- exit();\r
- }\r
- \r
- function ajaxMakeFolder($input) {\r
- \r
- if($input['lng']=='ru') {\r
- if(trim($input['name']) == '') return array('error' => 'Íå çàäàíî èìÿ');\r
- } else {\r
- if(trim($input['name']) == '') return array('error' => 'Not a name');\r
- }\r
- \r
- if($input['uri'] != '') {\r
- $this->folder = $input['uri'];\r
- \r
- $realpath1 = realpath(DIR.$our_folder);\r
- $realpath2 = realpath(DIR.$input['uri']);\r
- \r
- $strlen1 = strlen($realpath1);\r
- $strlen2 = strlen($realpath2);\r
- \r
- if($strlen1 > $strlen2) { page404(); exit(); }\r
- for($i=0;$i<$strlen1;$i++) {\r
- if($realpath1[$i] != $realpath2[$i]) { page404(); exit(); }\r
- }\r
- }\r
- \r
- if(mkdir(DIR.$this->folder.'/'.$input['name'])) { return array(); }\r
- else {\r
- if($input['lng']=='ru') {\r
- array('error' => 'Íå óäàëîñü ñîçäàòü ïàïêó');\r
- } else {\r
- array('error' => 'Unable to create a folder');\r
- }\r
- }\r
- }\r
- \r
- \r
- function Resize($filename, $dest, $width, $height, $pictype = "") {\r
- $format = strtolower(substr(strrchr($filename,"."),1));\r
- switch($format)\r
- {\r
- case 'gif' :\r
- $type ="gif";\r
- $img = ImageCreateFromGif($filename);\r
- break;\r
- case 'png' :\r
- $type ="png";\r
- $img = ImageCreateFromPng($filename);\r
- break;\r
- case 'jpg' :\r
- $type ="jpg";\r
- $img = ImageCreateFromJpeg($filename);\r
- break;\r
- case 'jpeg' :\r
- $type ="jpg";\r
- $img = ImageCreateFromJpeg($filename);\r
- break;\r
- default :\r
- return false;\r
- break;\r
- }\r
-\r
- list($org_width, $org_height) = getimagesize($filename);\r
- $xoffset = 0;\r
- $yoffset = 0;\r
- if ($pictype == "thumb") // To minimize destortion\r
- {\r
- if ($org_width / $width > $org_height/ $height)\r
- {\r
- $xtmp = $org_width;\r
- $xratio = 1-((($org_width/$org_height)-($width/$height))/2);\r
- $org_width = $org_width * $xratio;\r
- $xoffset = ($xtmp - $org_width)/2;\r
- }\r
- elseif ($org_height/ $height > $org_width / $width)\r
- {\r
- $ytmp = $org_height;\r
- $yratio = 1-((($width/$height)-($org_width/$org_height))/2);\r
- $org_height = $org_height * $yratio;\r
- $yoffset = ($ytmp - $org_height)/2;\r
- }\r
- //Added this else part -------------\r
- } elseif(substr($pictype,0,4) == "back") {\r
- $xtmp = $org_width/$width;\r
- $new_width = $width;\r
- $new_height = $org_height/$xtmp;\r
- if ($new_height > $org_height && $new_width > $org_width) {\r
- $new_height = $org_height;\r
- $new_width = $org_width;\r
- } elseif ($new_height > $height){\r
- $ytmp = $org_height/$height;\r
- $new_height = $height;\r
- $new_width = $org_width/$ytmp;\r
- }\r
- $width_d = round($new_width)<$width?$width:round($new_width);\r
- $height_d = round($new_height)<$height?$height:round($new_height);\r
- \r
- $width = round($new_width);\r
- $height = round($new_height);\r
- \r
- $width_diff = $width_d - $width;\r
- $height_diff = $height_d - $height;\r
- } else {\r
- $xtmp = $org_width/$width;\r
- $new_width = $width;\r
- $new_height = $org_height/$xtmp;\r
- if ($new_height > $height){\r
- $ytmp = $org_height/$height;\r
- $new_height = $height;\r
- $new_width = $org_width/$ytmp;\r
- }\r
- $width = round($new_width);\r
- $height = round($new_height);\r
- }\r
-\r
- if(substr($pictype,0,4) == "back") {\r
- $img_n=imagecreatetruecolor ($width+$width_diff, $height+$height_diff);\r
- $r = hexdec(substr($pictype,5,2));\r
- $g = hexdec(substr($pictype,7,2));\r
- $b = hexdec(substr($pictype,9,2));\r
- $back = imagecolorallocate($img_n, $r, $g, $b);\r
- imagefill($img_n, 0, 0, $back);\r
- imagecopyresampled($img_n, $img, round($width_diff/2), round($height_diff/2), $xoffset, $yoffset, $width, $height, $org_width, $org_height);\r
- } else {\r
- $img_n=imagecreatetruecolor ($width, $height);\r
- imagecopyresampled($img_n, $img, 0, 0, $xoffset, $yoffset, $width, $height, $org_width, $org_height);\r
- }\r
-\r
- if($type=="gif")\r
- {\r
- imagegif($img_n, $dest);\r
- }\r
- elseif($type=="jpg")\r
- {\r
- imagejpeg($img_n, $dest, 100);\r
- }\r
- elseif($type=="png")\r
- {\r
- imagepng($img_n, $dest);\r
- }\r
- elseif($type=="bmp")\r
- {\r
- imagewbmp($img_n, $dest);\r
- }\r
- return true;\r
- }\r
-}\r
-\r
-?>
\ No newline at end of file
+++ /dev/null
-(function(){var DOM=tinymce.DOM,Element=tinymce.dom.Element,Event=tinymce.dom.Event,each=tinymce.each,is=tinymce.is;tinymce.create('tinymce.plugins.InlinePopups',{init:function(ed,url){ed.onBeforeRenderUI.add(function(){ed.windowManager=new tinymce.InlineWindowManager(ed);DOM.loadCSS(url+'/skins/'+(ed.settings.inlinepopups_skin||'clearlooks2')+"/window.css");});},getInfo:function(){return{longname:'InlinePopups',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/inlinepopups',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.create('tinymce.InlineWindowManager:tinymce.WindowManager',{InlineWindowManager:function(ed){var t=this;t.parent(ed);t.zIndex=300000;t.count=0;},open:function(f,p){var t=this,id,opt='',ed=t.editor,dw=0,dh=0,vp,po,mdf,clf,we,w,u;f=f||{};p=p||{};if(!f.inline)return t.parent(f,p);if(!f.type)t.bookmark=ed.selection.getBookmark('simple');id=DOM.uniqueId();vp=DOM.getViewPort();f.width=parseInt(f.width||320);f.height=parseInt(f.height||240)+(tinymce.isIE?8:0);f.min_width=parseInt(f.min_width||150);f.min_height=parseInt(f.min_height||100);f.max_width=parseInt(f.max_width||2000);f.max_height=parseInt(f.max_height||2000);f.left=f.left||Math.round(Math.max(vp.x,vp.x+(vp.w/ 2.0) - (f.width /2.0)));f.top=f.top||Math.round(Math.max(vp.y,vp.y+(vp.h/ 2.0) - (f.height /2.0)));f.movable=f.resizable=true;p.mce_width=f.width;p.mce_height=f.height;p.mce_inline=true;p.mce_window_id=id;p.mce_auto_focus=f.auto_focus;t.features=f;t.params=p;t.onOpen.dispatch(t,f,p);if(f.type){opt+=' mceModal';if(f.type)opt+=' mce'+f.type.substring(0,1).toUpperCase()+f.type.substring(1);f.resizable=false;}if(f.statusbar)opt+=' mceStatusbar';if(f.resizable)opt+=' mceResizable';if(f.minimizable)opt+=' mceMinimizable';if(f.maximizable)opt+=' mceMaximizable';if(f.movable)opt+=' mceMovable';t._addAll(DOM.doc.body,['div',{id:id,'class':ed.settings.inlinepopups_skin||'clearlooks2',style:'width:100px;height:100px'},['div',{id:id+'_wrapper','class':'mceWrapper'+opt},['div',{id:id+'_top','class':'mceTop'},['div',{'class':'mceLeft'}],['div',{'class':'mceCenter'}],['div',{'class':'mceRight'}],['span',{id:id+'_title'},f.title||'']],['div',{id:id+'_middle','class':'mceMiddle'},['div',{id:id+'_left','class':'mceLeft'}],['span',{id:id+'_content'}],['div',{id:id+'_right','class':'mceRight'}]],['div',{id:id+'_bottom','class':'mceBottom'},['div',{'class':'mceLeft'}],['div',{'class':'mceCenter'}],['div',{'class':'mceRight'}],['span',{id:id+'_status'},'Content']],['a',{'class':'mceMove',tabindex:'-1',href:'javascript:;'}],['a',{'class':'mceMin',tabindex:'-1',href:'javascript:;',onmousedown:'return false;'}],['a',{'class':'mceMax',tabindex:'-1',href:'javascript:;',onmousedown:'return false;'}],['a',{'class':'mceMed',tabindex:'-1',href:'javascript:;',onmousedown:'return false;'}],['a',{'class':'mceClose',tabindex:'-1',href:'javascript:;',onmousedown:'return false;'}],['a',{id:id+'_resize_n','class':'mceResize mceResizeN',tabindex:'-1',href:'javascript:;'}],['a',{id:id+'_resize_s','class':'mceResize mceResizeS',tabindex:'-1',href:'javascript:;'}],['a',{id:id+'_resize_w','class':'mceResize mceResizeW',tabindex:'-1',href:'javascript:;'}],['a',{id:id+'_resize_e','class':'mceResize mceResizeE',tabindex:'-1',href:'javascript:;'}],['a',{id:id+'_resize_nw','class':'mceResize mceResizeNW',tabindex:'-1',href:'javascript:;'}],['a',{id:id+'_resize_ne','class':'mceResize mceResizeNE',tabindex:'-1',href:'javascript:;'}],['a',{id:id+'_resize_sw','class':'mceResize mceResizeSW',tabindex:'-1',href:'javascript:;'}],['a',{id:id+'_resize_se','class':'mceResize mceResizeSE',tabindex:'-1',href:'javascript:;'}]]]);DOM.setStyles(id,{top:-10000,left:-10000});if(tinymce.isGecko)DOM.setStyle(id,'overflow','auto');if(!f.type){dw+=DOM.get(id+'_left').clientWidth;dw+=DOM.get(id+'_right').clientWidth;dh+=DOM.get(id+'_top').clientHeight;dh+=DOM.get(id+'_bottom').clientHeight;}DOM.setStyles(id,{top:f.top,left:f.left,width:f.width+dw,height:f.height+dh});u=f.url||f.file;if(u){if(tinymce.relaxedDomain)u+=(u.indexOf('?')==-1?'?':'&')+'mce_rdomain='+tinymce.relaxedDomain;u=tinymce._addVer(u);}if(!f.type){DOM.add(id+'_content','iframe',{id:id+'_ifr',src:'javascript:""',frameBorder:0,style:'border:0;width:10px;height:10px'});DOM.setStyles(id+'_ifr',{width:f.width,height:f.height});DOM.setAttrib(id+'_ifr','src',u);}else{DOM.add(id+'_wrapper','a',{id:id+'_ok','class':'mceButton mceOk',href:'javascript:;',onmousedown:'return false;'},'Ok');if(f.type=='confirm')DOM.add(id+'_wrapper','a',{'class':'mceButton mceCancel',href:'javascript:;',onmousedown:'return false;'},'Cancel');DOM.add(id+'_middle','div',{'class':'mceIcon'});DOM.setHTML(id+'_content',f.content.replace('\n','<br />'));}mdf=Event.add(id,'mousedown',function(e){var n=e.target,w,vp;w=t.windows[id];t.focus(id);if(n.nodeName=='A'||n.nodeName=='a'){if(n.className=='mceMax'){w.oldPos=w.element.getXY();w.oldSize=w.element.getSize();vp=DOM.getViewPort();vp.w-=2;vp.h-=2;w.element.moveTo(vp.x,vp.y);w.element.resizeTo(vp.w,vp.h);DOM.setStyles(id+'_ifr',{width:vp.w-w.deltaWidth,height:vp.h-w.deltaHeight});DOM.addClass(id+'_wrapper','mceMaximized');}else if(n.className=='mceMed'){w.element.moveTo(w.oldPos.x,w.oldPos.y);w.element.resizeTo(w.oldSize.w,w.oldSize.h);w.iframeElement.resizeTo(w.oldSize.w-w.deltaWidth,w.oldSize.h-w.deltaHeight);DOM.removeClass(id+'_wrapper','mceMaximized');}else if(n.className=='mceMove')return t._startDrag(id,e,n.className);else if(DOM.hasClass(n,'mceResize'))return t._startDrag(id,e,n.className.substring(13));}});clf=Event.add(id,'click',function(e){var n=e.target;t.focus(id);if(n.nodeName=='A'||n.nodeName=='a'){switch(n.className){case'mceClose':t.close(null,id);return Event.cancel(e);case'mceButton mceOk':case'mceButton mceCancel':f.button_func(n.className=='mceButton mceOk');return Event.cancel(e);}}});t.windows=t.windows||{};w=t.windows[id]={id:id,mousedown_func:mdf,click_func:clf,element:new Element(id,{blocker:1,container:ed.getContainer()}),iframeElement:new Element(id+'_ifr'),features:f,deltaWidth:dw,deltaHeight:dh};w.iframeElement.on('focus',function(){t.focus(id);});if(t.count==0&&t.editor.getParam('dialog_type','modal')=='modal'){DOM.add(DOM.doc.body,'div',{id:'mceModalBlocker','class':(t.editor.settings.inlinepopups_skin||'clearlooks2')+'_modalBlocker',style:{left:vp.x,top:vp.y,zIndex:t.zIndex-1}});DOM.show('mceModalBlocker');}else DOM.setStyle('mceModalBlocker','z-index',t.zIndex-1);if(tinymce.isIE6||(tinymce.isIE&&!DOM.boxModel))DOM.setStyles('mceModalBlocker',{position:'absolute',width:vp.w-2,height:vp.h-2});t.focus(id);t._fixIELayout(id,1);if(DOM.get(id+'_ok'))DOM.get(id+'_ok').focus();t.count++;return w;},focus:function(id){var t=this,w=t.windows[id];w.zIndex=this.zIndex++;w.element.setStyle('zIndex',w.zIndex);w.element.update();id=id+'_wrapper';DOM.removeClass(t.lastId,'mceFocus');DOM.addClass(id,'mceFocus');t.lastId=id;},_addAll:function(te,ne){var i,n,t=this,dom=tinymce.DOM;if(is(ne,'string'))te.appendChild(dom.doc.createTextNode(ne));else if(ne.length){te=te.appendChild(dom.create(ne[0],ne[1]));for(i=2;i<ne.length;i++)t._addAll(te,ne[i]);}},_startDrag:function(id,se,ac){var t=this,mu,mm,d=DOM.doc,eb,w=t.windows[id],we=w.element,sp=we.getXY(),p,sz,ph,cp,vp,sx,sy,sex,sey,dx,dy,dw,dh;cp={x:0,y:0};vp=DOM.getViewPort();vp.w-=2;vp.h-=2;sex=se.screenX;sey=se.screenY;dx=dy=dw=dh=0;mu=Event.add(d,'mouseup',function(e){Event.remove(d,'mouseup',mu);Event.remove(d,'mousemove',mm);if(eb)eb.remove();we.moveBy(dx,dy);we.resizeBy(dw,dh);sz=we.getSize();DOM.setStyles(id+'_ifr',{width:sz.w-w.deltaWidth,height:sz.h-w.deltaHeight});t._fixIELayout(id,1);return Event.cancel(e);});if(ac!='Move')startMove();function startMove(){if(eb)return;t._fixIELayout(id,0);DOM.add(d.body,'div',{id:'mceEventBlocker','class':'mceEventBlocker '+(t.editor.settings.inlinepopups_skin||'clearlooks2'),style:{left:vp.x,top:vp.y,zIndex:t.zIndex+1}});if(tinymce.isIE6||(tinymce.isIE&&!DOM.boxModel))DOM.setStyles('mceEventBlocker',{position:'absolute',width:vp.w-2,height:vp.h-2});eb=new Element('mceEventBlocker');eb.update();p=we.getXY();sz=we.getSize();sx=cp.x+p.x-vp.x;sy=cp.y+p.y-vp.y;DOM.add(eb.get(),'div',{id:'mcePlaceHolder','class':'mcePlaceHolder',style:{left:sx,top:sy,width:sz.w,height:sz.h}});ph=new Element('mcePlaceHolder');};mm=Event.add(d,'mousemove',function(e){var x,y,v;startMove();x=e.screenX-sex;y=e.screenY-sey;switch(ac){case'ResizeW':dx=x;dw=0-x;break;case'ResizeE':dw=x;break;case'ResizeN':case'ResizeNW':case'ResizeNE':if(ac=="ResizeNW"){dx=x;dw=0-x;}else if(ac=="ResizeNE")dw=x;dy=y;dh=0-y;break;case'ResizeS':case'ResizeSW':case'ResizeSE':if(ac=="ResizeSW"){dx=x;dw=0-x;}else if(ac=="ResizeSE")dw=x;dh=y;break;case'mceMove':dx=x;dy=y;break;}if(dw<(v=w.features.min_width-sz.w)){if(dx!==0)dx+=dw-v;dw=v;}if(dh<(v=w.features.min_height-sz.h)){if(dy!==0)dy+=dh-v;dh=v;}dw=Math.min(dw,w.features.max_width-sz.w);dh=Math.min(dh,w.features.max_height-sz.h);dx=Math.max(dx,vp.x-(sx+vp.x));dy=Math.max(dy,vp.y-(sy+vp.y));dx=Math.min(dx,(vp.w+vp.x)-(sx+sz.w+vp.x));dy=Math.min(dy,(vp.h+vp.y)-(sy+sz.h+vp.y));if(dx+dy!==0){if(sx+dx<0)dx=0;if(sy+dy<0)dy=0;ph.moveTo(sx+dx,sy+dy);}if(dw+dh!==0)ph.resizeTo(sz.w+dw,sz.h+dh);return Event.cancel(e);});return Event.cancel(se);},resizeBy:function(dw,dh,id){var w=this.windows[id];if(w){w.element.resizeBy(dw,dh);w.iframeElement.resizeBy(dw,dh);}},close:function(win,id){var t=this,w,d=DOM.doc,ix=0,fw,id;id=t._findId(id||win);t.count--;if(t.count==0)DOM.remove('mceModalBlocker');if(!id&&win){t.parent(win);return;}if(w=t.windows[id]){t.onClose.dispatch(t);Event.remove(d,'mousedown',w.mousedownFunc);Event.remove(d,'click',w.clickFunc);Event.clear(id);Event.clear(id+'_ifr');DOM.setAttrib(id+'_ifr','src','javascript:""');w.element.remove();delete t.windows[id];each(t.windows,function(w){if(w.zIndex>ix){fw=w;ix=w.zIndex;}});if(fw)t.focus(fw.id);}},setTitle:function(w,ti){var e;w=this._findId(w);if(e=DOM.get(w+'_title'))e.innerHTML=DOM.encode(ti);},alert:function(txt,cb,s){var t=this,w;w=t.open({title:t,type:'alert',button_func:function(s){if(cb)cb.call(s||t,s);t.close(null,w.id);},content:DOM.encode(t.editor.getLang(txt,txt)),inline:1,width:400,height:130});},confirm:function(txt,cb,s){var t=this,w;w=t.open({title:t,type:'confirm',button_func:function(s){if(cb)cb.call(s||t,s);t.close(null,w.id);},content:DOM.encode(t.editor.getLang(txt,txt)),inline:1,width:400,height:130});},_findId:function(w){var t=this;if(typeof(w)=='string')return w;each(t.windows,function(wo){var ifr=DOM.get(wo.id+'_ifr');if(ifr&&w==ifr.contentWindow){w=wo.id;return false;}});return w;},_fixIELayout:function(id,s){var w,img;if(!tinymce.isIE6)return;each(['n','s','w','e','nw','ne','sw','se'],function(v){var e=DOM.get(id+'_resize_'+v);DOM.setStyles(e,{width:s?e.clientWidth:'',height:s?e.clientHeight:'',cursor:DOM.getStyle(e,'cursor',1)});DOM.setStyle(id+"_bottom",'bottom','-1px');e=0;});if(w=this.windows[id]){w.element.hide();w.element.show();each(DOM.select('div,a',id),function(e,i){if(e.currentStyle.backgroundImage!='none'){img=new Image();img.src=e.currentStyle.backgroundImage.replace(/url\(\"(.+)\"\)/,'$1');}});DOM.get(id).style.filter='';}}});tinymce.PluginManager.add('inlinepopups',tinymce.plugins.InlinePopups);})();
\ No newline at end of file
+++ /dev/null
-/**\r
- * $Id: editor_plugin_src.js 898 2008-07-12 15:01:39Z spocke $\r
- *\r
- * @author Moxiecode\r
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-(function() {\r
- var DOM = tinymce.DOM, Element = tinymce.dom.Element, Event = tinymce.dom.Event, each = tinymce.each, is = tinymce.is;\r
-\r
- tinymce.create('tinymce.plugins.InlinePopups', {\r
- init : function(ed, url) {\r
- // Replace window manager\r
- ed.onBeforeRenderUI.add(function() {\r
- ed.windowManager = new tinymce.InlineWindowManager(ed);\r
- DOM.loadCSS(url + '/skins/' + (ed.settings.inlinepopups_skin || 'clearlooks2') + "/window.css");\r
- });\r
- },\r
-\r
- getInfo : function() {\r
- return {\r
- longname : 'InlinePopups',\r
- author : 'Moxiecode Systems AB',\r
- authorurl : 'http://tinymce.moxiecode.com',\r
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/inlinepopups',\r
- version : tinymce.majorVersion + "." + tinymce.minorVersion\r
- };\r
- }\r
- });\r
-\r
- tinymce.create('tinymce.InlineWindowManager:tinymce.WindowManager', {\r
- InlineWindowManager : function(ed) {\r
- var t = this;\r
-\r
- t.parent(ed);\r
- t.zIndex = 300000;\r
- t.count = 0;\r
- },\r
-\r
- open : function(f, p) {\r
- var t = this, id, opt = '', ed = t.editor, dw = 0, dh = 0, vp, po, mdf, clf, we, w, u;\r
-\r
- f = f || {};\r
- p = p || {};\r
-\r
- // Run native windows\r
- if (!f.inline)\r
- return t.parent(f, p);\r
-\r
- // Only store selection if the type is a normal window\r
- if (!f.type)\r
- t.bookmark = ed.selection.getBookmark('simple');\r
-\r
- id = DOM.uniqueId();\r
- vp = DOM.getViewPort();\r
- f.width = parseInt(f.width || 320);\r
- f.height = parseInt(f.height || 240) + (tinymce.isIE ? 8 : 0);\r
- f.min_width = parseInt(f.min_width || 150);\r
- f.min_height = parseInt(f.min_height || 100);\r
- f.max_width = parseInt(f.max_width || 2000);\r
- f.max_height = parseInt(f.max_height || 2000);\r
- f.left = f.left || Math.round(Math.max(vp.x, vp.x + (vp.w / 2.0) - (f.width / 2.0)));\r
- f.top = f.top || Math.round(Math.max(vp.y, vp.y + (vp.h / 2.0) - (f.height / 2.0)));\r
- f.movable = f.resizable = true;\r
- p.mce_width = f.width;\r
- p.mce_height = f.height;\r
- p.mce_inline = true;\r
- p.mce_window_id = id;\r
- p.mce_auto_focus = f.auto_focus;\r
-\r
- // Transpose\r
-// po = DOM.getPos(ed.getContainer());\r
-// f.left -= po.x;\r
-// f.top -= po.y;\r
-\r
- t.features = f;\r
- t.params = p;\r
- t.onOpen.dispatch(t, f, p);\r
-\r
- if (f.type) {\r
- opt += ' mceModal';\r
-\r
- if (f.type)\r
- opt += ' mce' + f.type.substring(0, 1).toUpperCase() + f.type.substring(1);\r
-\r
- f.resizable = false;\r
- }\r
-\r
- if (f.statusbar)\r
- opt += ' mceStatusbar';\r
-\r
- if (f.resizable)\r
- opt += ' mceResizable';\r
-\r
- if (f.minimizable)\r
- opt += ' mceMinimizable';\r
-\r
- if (f.maximizable)\r
- opt += ' mceMaximizable';\r
-\r
- if (f.movable)\r
- opt += ' mceMovable';\r
-\r
- // Create DOM objects\r
- t._addAll(DOM.doc.body, \r
- ['div', {id : id, 'class' : ed.settings.inlinepopups_skin || 'clearlooks2', style : 'width:100px;height:100px'}, \r
- ['div', {id : id + '_wrapper', 'class' : 'mceWrapper' + opt},\r
- ['div', {id : id + '_top', 'class' : 'mceTop'}, \r
- ['div', {'class' : 'mceLeft'}],\r
- ['div', {'class' : 'mceCenter'}],\r
- ['div', {'class' : 'mceRight'}],\r
- ['span', {id : id + '_title'}, f.title || '']\r
- ],\r
-\r
- ['div', {id : id + '_middle', 'class' : 'mceMiddle'}, \r
- ['div', {id : id + '_left', 'class' : 'mceLeft'}],\r
- ['span', {id : id + '_content'}],\r
- ['div', {id : id + '_right', 'class' : 'mceRight'}]\r
- ],\r
-\r
- ['div', {id : id + '_bottom', 'class' : 'mceBottom'},\r
- ['div', {'class' : 'mceLeft'}],\r
- ['div', {'class' : 'mceCenter'}],\r
- ['div', {'class' : 'mceRight'}],\r
- ['span', {id : id + '_status'}, 'Content']\r
- ],\r
-\r
- ['a', {'class' : 'mceMove', tabindex : '-1', href : 'javascript:;'}],\r
- ['a', {'class' : 'mceMin', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}],\r
- ['a', {'class' : 'mceMax', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}],\r
- ['a', {'class' : 'mceMed', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}],\r
- ['a', {'class' : 'mceClose', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}],\r
- ['a', {id : id + '_resize_n', 'class' : 'mceResize mceResizeN', tabindex : '-1', href : 'javascript:;'}],\r
- ['a', {id : id + '_resize_s', 'class' : 'mceResize mceResizeS', tabindex : '-1', href : 'javascript:;'}],\r
- ['a', {id : id + '_resize_w', 'class' : 'mceResize mceResizeW', tabindex : '-1', href : 'javascript:;'}],\r
- ['a', {id : id + '_resize_e', 'class' : 'mceResize mceResizeE', tabindex : '-1', href : 'javascript:;'}],\r
- ['a', {id : id + '_resize_nw', 'class' : 'mceResize mceResizeNW', tabindex : '-1', href : 'javascript:;'}],\r
- ['a', {id : id + '_resize_ne', 'class' : 'mceResize mceResizeNE', tabindex : '-1', href : 'javascript:;'}],\r
- ['a', {id : id + '_resize_sw', 'class' : 'mceResize mceResizeSW', tabindex : '-1', href : 'javascript:;'}],\r
- ['a', {id : id + '_resize_se', 'class' : 'mceResize mceResizeSE', tabindex : '-1', href : 'javascript:;'}]\r
- ]\r
- ]\r
- );\r
-\r
- DOM.setStyles(id, {top : -10000, left : -10000});\r
-\r
- // Fix gecko rendering bug, where the editors iframe messed with window contents\r
- if (tinymce.isGecko)\r
- DOM.setStyle(id, 'overflow', 'auto');\r
-\r
- // Measure borders\r
- if (!f.type) {\r
- dw += DOM.get(id + '_left').clientWidth;\r
- dw += DOM.get(id + '_right').clientWidth;\r
- dh += DOM.get(id + '_top').clientHeight;\r
- dh += DOM.get(id + '_bottom').clientHeight;\r
- }\r
-\r
- // Resize window\r
- DOM.setStyles(id, {top : f.top, left : f.left, width : f.width + dw, height : f.height + dh});\r
-\r
- u = f.url || f.file;\r
- if (u) {\r
- if (tinymce.relaxedDomain)\r
- u += (u.indexOf('?') == -1 ? '?' : '&') + 'mce_rdomain=' + tinymce.relaxedDomain;\r
-\r
- u = tinymce._addVer(u);\r
- }\r
-\r
- if (!f.type) {\r
- DOM.add(id + '_content', 'iframe', {id : id + '_ifr', src : 'javascript:""', frameBorder : 0, style : 'border:0;width:10px;height:10px'});\r
- DOM.setStyles(id + '_ifr', {width : f.width, height : f.height});\r
- DOM.setAttrib(id + '_ifr', 'src', u);\r
- } else {\r
- DOM.add(id + '_wrapper', 'a', {id : id + '_ok', 'class' : 'mceButton mceOk', href : 'javascript:;', onmousedown : 'return false;'}, 'Ok');\r
-\r
- if (f.type == 'confirm')\r
- DOM.add(id + '_wrapper', 'a', {'class' : 'mceButton mceCancel', href : 'javascript:;', onmousedown : 'return false;'}, 'Cancel');\r
-\r
- DOM.add(id + '_middle', 'div', {'class' : 'mceIcon'});\r
- DOM.setHTML(id + '_content', f.content.replace('\n', '<br />'));\r
- }\r
-\r
- // Register events\r
- mdf = Event.add(id, 'mousedown', function(e) {\r
- var n = e.target, w, vp;\r
-\r
- w = t.windows[id];\r
- t.focus(id);\r
-\r
- if (n.nodeName == 'A' || n.nodeName == 'a') {\r
- if (n.className == 'mceMax') {\r
- w.oldPos = w.element.getXY();\r
- w.oldSize = w.element.getSize();\r
-\r
- vp = DOM.getViewPort();\r
-\r
- // Reduce viewport size to avoid scrollbars\r
- vp.w -= 2;\r
- vp.h -= 2;\r
-\r
- w.element.moveTo(vp.x, vp.y);\r
- w.element.resizeTo(vp.w, vp.h);\r
- DOM.setStyles(id + '_ifr', {width : vp.w - w.deltaWidth, height : vp.h - w.deltaHeight});\r
- DOM.addClass(id + '_wrapper', 'mceMaximized');\r
- } else if (n.className == 'mceMed') {\r
- // Reset to old size\r
- w.element.moveTo(w.oldPos.x, w.oldPos.y);\r
- w.element.resizeTo(w.oldSize.w, w.oldSize.h);\r
- w.iframeElement.resizeTo(w.oldSize.w - w.deltaWidth, w.oldSize.h - w.deltaHeight);\r
-\r
- DOM.removeClass(id + '_wrapper', 'mceMaximized');\r
- } else if (n.className == 'mceMove')\r
- return t._startDrag(id, e, n.className);\r
- else if (DOM.hasClass(n, 'mceResize'))\r
- return t._startDrag(id, e, n.className.substring(13));\r
- }\r
- });\r
-\r
- clf = Event.add(id, 'click', function(e) {\r
- var n = e.target;\r
-\r
- t.focus(id);\r
-\r
- if (n.nodeName == 'A' || n.nodeName == 'a') {\r
- switch (n.className) {\r
- case 'mceClose':\r
- t.close(null, id);\r
- return Event.cancel(e);\r
-\r
- case 'mceButton mceOk':\r
- case 'mceButton mceCancel':\r
- f.button_func(n.className == 'mceButton mceOk');\r
- return Event.cancel(e);\r
- }\r
- }\r
- });\r
-\r
- // Add window\r
- t.windows = t.windows || {};\r
- w = t.windows[id] = {\r
- id : id,\r
- mousedown_func : mdf,\r
- click_func : clf,\r
- element : new Element(id, {blocker : 1, container : ed.getContainer()}),\r
- iframeElement : new Element(id + '_ifr'),\r
- features : f,\r
- deltaWidth : dw,\r
- deltaHeight : dh\r
- };\r
-\r
- w.iframeElement.on('focus', function() {\r
- t.focus(id);\r
- });\r
-\r
- // Setup blocker\r
- if (t.count == 0 && t.editor.getParam('dialog_type', 'modal') == 'modal') {\r
- DOM.add(DOM.doc.body, 'div', {\r
- id : 'mceModalBlocker',\r
- 'class' : (t.editor.settings.inlinepopups_skin || 'clearlooks2') + '_modalBlocker',\r
- style : {left : vp.x, top : vp.y, zIndex : t.zIndex - 1}\r
- });\r
-\r
- DOM.show('mceModalBlocker'); // Reduces flicker in IE\r
- } else\r
- DOM.setStyle('mceModalBlocker', 'z-index', t.zIndex - 1);\r
-\r
- if (tinymce.isIE6 || (tinymce.isIE && !DOM.boxModel))\r
- DOM.setStyles('mceModalBlocker', {position : 'absolute', width : vp.w - 2, height : vp.h - 2});\r
-\r
- t.focus(id);\r
- t._fixIELayout(id, 1);\r
-\r
- // Focus ok button\r
- if (DOM.get(id + '_ok'))\r
- DOM.get(id + '_ok').focus();\r
-\r
- t.count++;\r
-\r
- return w;\r
- },\r
-\r
- focus : function(id) {\r
- var t = this, w = t.windows[id];\r
-\r
- w.zIndex = this.zIndex++;\r
- w.element.setStyle('zIndex', w.zIndex);\r
- w.element.update();\r
-\r
- id = id + '_wrapper';\r
- DOM.removeClass(t.lastId, 'mceFocus');\r
- DOM.addClass(id, 'mceFocus');\r
- t.lastId = id;\r
- },\r
-\r
- _addAll : function(te, ne) {\r
- var i, n, t = this, dom = tinymce.DOM;\r
-\r
- if (is(ne, 'string'))\r
- te.appendChild(dom.doc.createTextNode(ne));\r
- else if (ne.length) {\r
- te = te.appendChild(dom.create(ne[0], ne[1]));\r
-\r
- for (i=2; i<ne.length; i++)\r
- t._addAll(te, ne[i]);\r
- }\r
- },\r
-\r
- _startDrag : function(id, se, ac) {\r
- var t = this, mu, mm, d = DOM.doc, eb, w = t.windows[id], we = w.element, sp = we.getXY(), p, sz, ph, cp, vp, sx, sy, sex, sey, dx, dy, dw, dh;\r
-\r
- // Get positons and sizes\r
-// cp = DOM.getPos(t.editor.getContainer());\r
- cp = {x : 0, y : 0};\r
- vp = DOM.getViewPort();\r
-\r
- // Reduce viewport size to avoid scrollbars while dragging\r
- vp.w -= 2;\r
- vp.h -= 2;\r
-\r
- sex = se.screenX;\r
- sey = se.screenY;\r
- dx = dy = dw = dh = 0;\r
-\r
- // Handle mouse up\r
- mu = Event.add(d, 'mouseup', function(e) {\r
- Event.remove(d, 'mouseup', mu);\r
- Event.remove(d, 'mousemove', mm);\r
-\r
- if (eb)\r
- eb.remove();\r
-\r
- we.moveBy(dx, dy);\r
- we.resizeBy(dw, dh);\r
- sz = we.getSize();\r
- DOM.setStyles(id + '_ifr', {width : sz.w - w.deltaWidth, height : sz.h - w.deltaHeight});\r
- t._fixIELayout(id, 1);\r
-\r
- return Event.cancel(e);\r
- });\r
-\r
- if (ac != 'Move')\r
- startMove();\r
-\r
- function startMove() {\r
- if (eb)\r
- return;\r
-\r
- t._fixIELayout(id, 0);\r
-\r
- // Setup event blocker\r
- DOM.add(d.body, 'div', {\r
- id : 'mceEventBlocker',\r
- 'class' : 'mceEventBlocker ' + (t.editor.settings.inlinepopups_skin || 'clearlooks2'),\r
- style : {left : vp.x, top : vp.y, zIndex : t.zIndex + 1}\r
- });\r
-\r
- if (tinymce.isIE6 || (tinymce.isIE && !DOM.boxModel))\r
- DOM.setStyles('mceEventBlocker', {position : 'absolute', width : vp.w - 2, height : vp.h - 2});\r
-\r
- eb = new Element('mceEventBlocker');\r
- eb.update();\r
-\r
- // Setup placeholder\r
- p = we.getXY();\r
- sz = we.getSize();\r
- sx = cp.x + p.x - vp.x;\r
- sy = cp.y + p.y - vp.y;\r
- DOM.add(eb.get(), 'div', {id : 'mcePlaceHolder', 'class' : 'mcePlaceHolder', style : {left : sx, top : sy, width : sz.w, height : sz.h}});\r
- ph = new Element('mcePlaceHolder');\r
- };\r
-\r
- // Handle mouse move/drag\r
- mm = Event.add(d, 'mousemove', function(e) {\r
- var x, y, v;\r
-\r
- startMove();\r
-\r
- x = e.screenX - sex;\r
- y = e.screenY - sey;\r
-\r
- switch (ac) {\r
- case 'ResizeW':\r
- dx = x;\r
- dw = 0 - x;\r
- break;\r
-\r
- case 'ResizeE':\r
- dw = x;\r
- break;\r
-\r
- case 'ResizeN':\r
- case 'ResizeNW':\r
- case 'ResizeNE':\r
- if (ac == "ResizeNW") {\r
- dx = x;\r
- dw = 0 - x;\r
- } else if (ac == "ResizeNE")\r
- dw = x;\r
-\r
- dy = y;\r
- dh = 0 - y;\r
- break;\r
-\r
- case 'ResizeS':\r
- case 'ResizeSW':\r
- case 'ResizeSE':\r
- if (ac == "ResizeSW") {\r
- dx = x;\r
- dw = 0 - x;\r
- } else if (ac == "ResizeSE")\r
- dw = x;\r
-\r
- dh = y;\r
- break;\r
-\r
- case 'mceMove':\r
- dx = x;\r
- dy = y;\r
- break;\r
- }\r
-\r
- // Boundary check\r
- if (dw < (v = w.features.min_width - sz.w)) {\r
- if (dx !== 0)\r
- dx += dw - v;\r
-\r
- dw = v;\r
- }\r
- \r
- if (dh < (v = w.features.min_height - sz.h)) {\r
- if (dy !== 0)\r
- dy += dh - v;\r
-\r
- dh = v;\r
- }\r
-\r
- dw = Math.min(dw, w.features.max_width - sz.w);\r
- dh = Math.min(dh, w.features.max_height - sz.h);\r
- dx = Math.max(dx, vp.x - (sx + vp.x));\r
- dy = Math.max(dy, vp.y - (sy + vp.y));\r
- dx = Math.min(dx, (vp.w + vp.x) - (sx + sz.w + vp.x));\r
- dy = Math.min(dy, (vp.h + vp.y) - (sy + sz.h + vp.y));\r
-\r
- // Move if needed\r
- if (dx + dy !== 0) {\r
- if (sx + dx < 0)\r
- dx = 0;\r
- \r
- if (sy + dy < 0)\r
- dy = 0;\r
-\r
- ph.moveTo(sx + dx, sy + dy);\r
- }\r
-\r
- // Resize if needed\r
- if (dw + dh !== 0)\r
- ph.resizeTo(sz.w + dw, sz.h + dh);\r
-\r
- return Event.cancel(e);\r
- });\r
-\r
- return Event.cancel(se);\r
- },\r
-\r
- resizeBy : function(dw, dh, id) {\r
- var w = this.windows[id];\r
-\r
- if (w) {\r
- w.element.resizeBy(dw, dh);\r
- w.iframeElement.resizeBy(dw, dh);\r
- }\r
- },\r
-\r
- close : function(win, id) {\r
- var t = this, w, d = DOM.doc, ix = 0, fw, id;\r
-\r
- id = t._findId(id || win);\r
-\r
- t.count--;\r
-\r
- if (t.count == 0)\r
- DOM.remove('mceModalBlocker');\r
-\r
- // Probably not inline\r
- if (!id && win) {\r
- t.parent(win);\r
- return;\r
- }\r
-\r
- if (w = t.windows[id]) {\r
- t.onClose.dispatch(t);\r
- Event.remove(d, 'mousedown', w.mousedownFunc);\r
- Event.remove(d, 'click', w.clickFunc);\r
- Event.clear(id);\r
- Event.clear(id + '_ifr');\r
-\r
- DOM.setAttrib(id + '_ifr', 'src', 'javascript:""'); // Prevent leak\r
- w.element.remove();\r
- delete t.windows[id];\r
-\r
- // Find front most window and focus that\r
- each (t.windows, function(w) {\r
- if (w.zIndex > ix) {\r
- fw = w;\r
- ix = w.zIndex;\r
- }\r
- });\r
-\r
- if (fw)\r
- t.focus(fw.id);\r
- }\r
- },\r
-\r
- setTitle : function(w, ti) {\r
- var e;\r
-\r
- w = this._findId(w);\r
-\r
- if (e = DOM.get(w + '_title'))\r
- e.innerHTML = DOM.encode(ti);\r
- },\r
-\r
- alert : function(txt, cb, s) {\r
- var t = this, w;\r
-\r
- w = t.open({\r
- title : t,\r
- type : 'alert',\r
- button_func : function(s) {\r
- if (cb)\r
- cb.call(s || t, s);\r
-\r
- t.close(null, w.id);\r
- },\r
- content : DOM.encode(t.editor.getLang(txt, txt)),\r
- inline : 1,\r
- width : 400,\r
- height : 130\r
- });\r
- },\r
-\r
- confirm : function(txt, cb, s) {\r
- var t = this, w;\r
-\r
- w = t.open({\r
- title : t,\r
- type : 'confirm',\r
- button_func : function(s) {\r
- if (cb)\r
- cb.call(s || t, s);\r
-\r
- t.close(null, w.id);\r
- },\r
- content : DOM.encode(t.editor.getLang(txt, txt)),\r
- inline : 1,\r
- width : 400,\r
- height : 130\r
- });\r
- },\r
-\r
- // Internal functions\r
-\r
- _findId : function(w) {\r
- var t = this;\r
-\r
- if (typeof(w) == 'string')\r
- return w;\r
-\r
- each(t.windows, function(wo) {\r
- var ifr = DOM.get(wo.id + '_ifr');\r
-\r
- if (ifr && w == ifr.contentWindow) {\r
- w = wo.id;\r
- return false;\r
- }\r
- });\r
-\r
- return w;\r
- },\r
-\r
- _fixIELayout : function(id, s) {\r
- var w, img;\r
-\r
- if (!tinymce.isIE6)\r
- return;\r
-\r
- // Fixes the bug where hover flickers and does odd things in IE6\r
- each(['n','s','w','e','nw','ne','sw','se'], function(v) {\r
- var e = DOM.get(id + '_resize_' + v);\r
-\r
- DOM.setStyles(e, {\r
- width : s ? e.clientWidth : '',\r
- height : s ? e.clientHeight : '',\r
- cursor : DOM.getStyle(e, 'cursor', 1)\r
- });\r
-\r
- DOM.setStyle(id + "_bottom", 'bottom', '-1px');\r
-\r
- e = 0;\r
- });\r
-\r
- // Fixes graphics glitch\r
- if (w = this.windows[id]) {\r
- // Fixes rendering bug after resize\r
- w.element.hide();\r
- w.element.show();\r
-\r
- // Forced a repaint of the window\r
- //DOM.get(id).style.filter = '';\r
-\r
- // IE has a bug where images used in CSS won't get loaded\r
- // sometimes when the cache in the browser is disabled\r
- // This fix tries to solve it by loading the images using the image object\r
- each(DOM.select('div,a', id), function(e, i) {\r
- if (e.currentStyle.backgroundImage != 'none') {\r
- img = new Image();\r
- img.src = e.currentStyle.backgroundImage.replace(/url\(\"(.+)\"\)/, '$1');\r
- }\r
- });\r
-\r
- DOM.get(id).style.filter = '';\r
- }\r
- }\r
- });\r
-\r
- // Register plugin\r
- tinymce.PluginManager.add('inlinepopups', tinymce.plugins.InlinePopups);\r
-})();\r
-\r
+++ /dev/null
-/* Clearlooks 2 */
-
-/* Reset */
-.clearlooks2, .clearlooks2 div, .clearlooks2 span, .clearlooks2 a {vertical-align:baseline; text-align:left; position:absolute; border:0; padding:0; margin:0; background:transparent; font-family:Arial,Verdana; font-size:11px; color:#000; text-decoration:none; font-weight:normal; width:auto; height:auto; overflow:hidden; display:block}
-
-/* General */
-.clearlooks2 {position:absolute; direction:ltr}
-.clearlooks2 .mceWrapper {position:static}
-.mceEventBlocker {position:fixed; left:0; top:0; background:url(img/horizontal.gif) no-repeat 0 -75px; width:100%; height:100%}
-.clearlooks2 .mcePlaceHolder {border:1px solid #000; background:#888; top:0; left:0; opacity:0.5; filter:alpha(opacity=50)}
-.clearlooks2_modalBlocker {position:fixed; left:0; top:0; width:100%; height:100%; background:#FFF; opacity:0.6; filter:alpha(opacity=60); display:none}
-
-/* Top */
-.clearlooks2 .mceTop, .clearlooks2 .mceTop div {top:0; width:100%; height:23px}
-.clearlooks2 .mceTop .mceLeft {width:6px; background:url(img/corners.gif)}
-.clearlooks2 .mceTop .mceCenter {right:6px; width:100%; height:23px; background:url(img/horizontal.gif) 12px 0; clip:rect(auto auto auto 12px)}
-.clearlooks2 .mceTop .mceRight {right:0; width:6px; height:23px; background:url(img/corners.gif) -12px 0}
-.clearlooks2 .mceTop span {width:100%; text-align:center; vertical-align:middle; line-height:23px; font-weight:bold}
-.clearlooks2 .mceFocus .mceTop .mceLeft {background:url(img/corners.gif) -6px 0}
-.clearlooks2 .mceFocus .mceTop .mceCenter {background:url(img/horizontal.gif) 0 -23px}
-.clearlooks2 .mceFocus .mceTop .mceRight {background:url(img/corners.gif) -18px 0}
-.clearlooks2 .mceFocus .mceTop span {color:#FFF}
-
-/* Middle */
-.clearlooks2 .mceMiddle, .clearlooks2 .mceMiddle div {top:0}
-.clearlooks2 .mceMiddle {width:100%; height:100%; clip:rect(23px auto auto auto)}
-.clearlooks2 .mceMiddle .mceLeft {left:0; width:5px; height:100%; background:url(img/vertical.gif) -5px 0}
-.clearlooks2 .mceMiddle span {top:23px; left:5px; width:100%; height:100%; background:#FFF}
-.clearlooks2 .mceMiddle .mceRight {right:0; width:5px; height:100%; background:url(img/vertical.gif)}
-
-/* Bottom */
-.clearlooks2 .mceBottom, .clearlooks2 .mceBottom div {height:6px}
-.clearlooks2 .mceBottom {left:0; bottom:0; width:100%}
-.clearlooks2 .mceBottom div {top:0}
-.clearlooks2 .mceBottom .mceLeft {left:0; width:5px; background:url(img/corners.gif) -34px -6px}
-.clearlooks2 .mceBottom .mceCenter {left:5px; width:100%; background:url(img/horizontal.gif) 0 -46px}
-.clearlooks2 .mceBottom .mceRight {right:0; width:5px; background: url(img/corners.gif) -34px 0}
-.clearlooks2 .mceBottom span {display:none}
-.clearlooks2 .mceStatusbar .mceBottom, .clearlooks2 .mceStatusbar .mceBottom div {height:23px}
-.clearlooks2 .mceStatusbar .mceBottom .mceLeft {background:url(img/corners.gif) -29px 0}
-.clearlooks2 .mceStatusbar .mceBottom .mceCenter {background:url(img/horizontal.gif) 0 -52px}
-.clearlooks2 .mceStatusbar .mceBottom .mceRight {background:url(img/corners.gif) -24px 0}
-.clearlooks2 .mceStatusbar .mceBottom span {display:block; left:7px; font-family:Arial, Verdana; font-size:11px; line-height:23px}
-
-/* Actions */
-.clearlooks2 a {width:29px; height:16px; top:3px;}
-.clearlooks2 .mceClose {right:6px; background:url(img/buttons.gif) -87px 0}
-.clearlooks2 .mceMin {display:none; right:68px; background:url(img/buttons.gif) 0 0}
-.clearlooks2 .mceMed {display:none; right:37px; background:url(img/buttons.gif) -29px 0}
-.clearlooks2 .mceMax {display:none; right:37px; background:url(img/buttons.gif) -58px 0}
-.clearlooks2 .mceMove {display:none;width:100%;cursor:move;background:url(img/corners.gif) no-repeat -100px -100px}
-.clearlooks2 .mceMovable .mceMove {display:block}
-.clearlooks2 .mceFocus .mceClose {right:6px; background:url(img/buttons.gif) -87px -16px}
-.clearlooks2 .mceFocus .mceMin {right:68px; background:url(img/buttons.gif) 0 -16px}
-.clearlooks2 .mceFocus .mceMed {right:37px; background:url(img/buttons.gif) -29px -16px}
-.clearlooks2 .mceFocus .mceMax {right:37px; background:url(img/buttons.gif) -58px -16px}
-.clearlooks2 .mceFocus .mceClose:hover {right:6px; background:url(img/buttons.gif) -87px -32px}
-.clearlooks2 .mceFocus .mceClose:hover {right:6px; background:url(img/buttons.gif) -87px -32px}
-.clearlooks2 .mceFocus .mceMin:hover {right:68px; background:url(img/buttons.gif) 0 -32px}
-.clearlooks2 .mceFocus .mceMed:hover {right:37px; background:url(img/buttons.gif) -29px -32px}
-.clearlooks2 .mceFocus .mceMax:hover {right:37px; background:url(img/buttons.gif) -58px -32px}
-
-/* Resize */
-.clearlooks2 .mceResize {top:auto; left:auto; display:none; width:5px; height:5px; background:url(img/horizontal.gif) no-repeat 0 -75px}
-.clearlooks2 .mceResizable .mceResize {display:block}
-.clearlooks2 .mceResizable .mceMin, .clearlooks2 .mceMax {display:none}
-.clearlooks2 .mceMinimizable .mceMin {display:block}
-.clearlooks2 .mceMaximizable .mceMax {display:block}
-.clearlooks2 .mceMaximized .mceMed {display:block}
-.clearlooks2 .mceMaximized .mceMax {display:none}
-.clearlooks2 a.mceResizeN {top:0; left:0; width:100%; cursor:n-resize}
-.clearlooks2 a.mceResizeNW {top:0; left:0; cursor:nw-resize}
-.clearlooks2 a.mceResizeNE {top:0; right:0; cursor:ne-resize}
-.clearlooks2 a.mceResizeW {top:0; left:0; height:100%; cursor:w-resize;}
-.clearlooks2 a.mceResizeE {top:0; right:0; height:100%; cursor:e-resize}
-.clearlooks2 a.mceResizeS {bottom:0; left:0; width:100%; cursor:s-resize}
-.clearlooks2 a.mceResizeSW {bottom:0; left:0; cursor:sw-resize}
-.clearlooks2 a.mceResizeSE {bottom:0; right:0; cursor:se-resize}
-
-/* Alert/Confirm */
-.clearlooks2 .mceButton {font-weight:bold; bottom:10px; width:80px; height:30px; background:url(img/button.gif); line-height:30px; vertical-align:middle; text-align:center; outline:0}
-.clearlooks2 .mceMiddle .mceIcon {left:15px; top:35px; width:32px; height:32px}
-.clearlooks2 .mceAlert .mceMiddle span, .clearlooks2 .mceConfirm .mceMiddle span {background:transparent;left:60px; top:35px; width:320px; height:50px; font-weight:bold; overflow:auto; white-space:normal}
-.clearlooks2 a:hover {font-weight:bold;}
-.clearlooks2 .mceAlert .mceMiddle, .clearlooks2 .mceConfirm .mceMiddle {background:#D6D7D5}
-.clearlooks2 .mceAlert .mceOk {left:50%; top:auto; margin-left: -40px}
-.clearlooks2 .mceAlert .mceIcon {background:url(img/alert.gif)}
-.clearlooks2 .mceConfirm .mceOk {left:50%; top:auto; margin-left: -90px}
-.clearlooks2 .mceConfirm .mceCancel {left:50%; top:auto}
-.clearlooks2 .mceConfirm .mceIcon {background:url(img/confirm.gif)}
\ No newline at end of file
+++ /dev/null
-<!-- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -->\r
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
-<title>Template for dialogs</title>\r
-<link rel="stylesheet" type="text/css" href="skins/clearlooks2/window.css" />\r
-</head>\r
-<body>\r
-\r
-<div class="mceEditor">\r
- <div class="clearlooks2" style="width:400px; height:100px; left:10px;">\r
- <div class="mceWrapper">\r
- <div class="mceTop">\r
- <div class="mceLeft"></div>\r
- <div class="mceCenter"></div>\r
- <div class="mceRight"></div>\r
- <span>Blured</span>\r
- </div>\r
-\r
- <div class="mceMiddle">\r
- <div class="mceLeft"></div>\r
- <span>Content</span>\r
- <div class="mceRight"></div>\r
- </div>\r
-\r
- <div class="mceBottom">\r
- <div class="mceLeft"></div>\r
- <div class="mceCenter"></div>\r
- <div class="mceRight"></div>\r
- <span>Statusbar text.</span>\r
- </div>\r
-\r
- <a class="mceMove" href="#"></a>\r
- <a class="mceMin" href="#"></a>\r
- <a class="mceMax" href="#"></a>\r
- <a class="mceMed" href="#"></a>\r
- <a class="mceClose" href="#"></a>\r
- <a class="mceResize mceResizeN" href="#"></a>\r
- <a class="mceResize mceResizeS" href="#"></a>\r
- <a class="mceResize mceResizeW" href="#"></a>\r
- <a class="mceResize mceResizeE" href="#"></a>\r
- <a class="mceResize mceResizeNW" href="#"></a>\r
- <a class="mceResize mceResizeNE" href="#"></a>\r
- <a class="mceResize mceResizeSW" href="#"></a>\r
- <a class="mceResize mceResizeSE" href="#"></a>\r
- </div>\r
- </div>\r
-\r
- <div class="clearlooks2" style="width:400px; height:100px; left:420px;">\r
- <div class="mceWrapper mceMovable mceFocus">\r
- <div class="mceTop">\r
- <div class="mceLeft"></div>\r
- <div class="mceCenter"></div>\r
- <div class="mceRight"></div>\r
- <span>Focused</span>\r
- </div>\r
-\r
- <div class="mceMiddle">\r
- <div class="mceLeft"></div>\r
- <span>Content</span>\r
- <div class="mceRight"></div>\r
- </div>\r
-\r
- <div class="mceBottom">\r
- <div class="mceLeft"></div>\r
- <div class="mceCenter"></div>\r
- <div class="mceRight"></div>\r
- <span>Statusbar text.</span>\r
- </div>\r
-\r
- <a class="mceMove" href="#"></a>\r
- <a class="mceMin" href="#"></a>\r
- <a class="mceMax" href="#"></a>\r
- <a class="mceMed" href="#"></a>\r
- <a class="mceClose" href="#"></a>\r
- <a class="mceResize mceResizeN" href="#"></a>\r
- <a class="mceResize mceResizeS" href="#"></a>\r
- <a class="mceResize mceResizeW" href="#"></a>\r
- <a class="mceResize mceResizeE" href="#"></a>\r
- <a class="mceResize mceResizeNW" href="#"></a>\r
- <a class="mceResize mceResizeNE" href="#"></a>\r
- <a class="mceResize mceResizeSW" href="#"></a>\r
- <a class="mceResize mceResizeSE" href="#"></a>\r
- </div>\r
- </div>\r
-\r
- <div class="clearlooks2" style="width:400px; height:100px; left:10px; top:120px;">\r
- <div class="mceWrapper mceMovable mceFocus mceStatusbar">\r
- <div class="mceTop">\r
- <div class="mceLeft"></div>\r
- <div class="mceCenter"></div>\r
- <div class="mceRight"></div>\r
- <span>Statusbar</span>\r
- </div>\r
-\r
- <div class="mceMiddle">\r
- <div class="mceLeft"></div>\r
- <span>Content</span>\r
- <div class="mceRight"></div>\r
- </div>\r
-\r
- <div class="mceBottom">\r
- <div class="mceLeft"></div>\r
- <div class="mceCenter"></div>\r
- <div class="mceRight"></div>\r
- <span>Statusbar text.</span>\r
- </div>\r
-\r
- <a class="mceMove" href="#"></a>\r
- <a class="mceMin" href="#"></a>\r
- <a class="mceMax" href="#"></a>\r
- <a class="mceMed" href="#"></a>\r
- <a class="mceClose" href="#"></a>\r
- <a class="mceResize mceResizeN" href="#"></a>\r
- <a class="mceResize mceResizeS" href="#"></a>\r
- <a class="mceResize mceResizeW" href="#"></a>\r
- <a class="mceResize mceResizeE" href="#"></a>\r
- <a class="mceResize mceResizeNW" href="#"></a>\r
- <a class="mceResize mceResizeNE" href="#"></a>\r
- <a class="mceResize mceResizeSW" href="#"></a>\r
- <a class="mceResize mceResizeSE" href="#"></a>\r
- </div>\r
- </div>\r
-\r
- <div class="clearlooks2" style="width:400px; height:100px; left:420px; top:120px;">\r
- <div class="mceWrapper mceMovable mceFocus mceStatusbar mceResizable">\r
- <div class="mceTop">\r
- <div class="mceLeft"></div>\r
- <div class="mceCenter"></div>\r
- <div class="mceRight"></div>\r
- <span>Statusbar, Resizable</span>\r
- </div>\r
-\r
- <div class="mceMiddle">\r
- <div class="mceLeft"></div>\r
- <span>Content</span>\r
- <div class="mceRight"></div>\r
- </div>\r
-\r
- <div class="mceBottom">\r
- <div class="mceLeft"></div>\r
- <div class="mceCenter"></div>\r
- <div class="mceRight"></div>\r
- <span>Statusbar text.</span>\r
- </div>\r
-\r
- <a class="mceMove" href="#"></a>\r
- <a class="mceMin" href="#"></a>\r
- <a class="mceMax" href="#"></a>\r
- <a class="mceMed" href="#"></a>\r
- <a class="mceClose" href="#"></a>\r
- <a class="mceResize mceResizeN" href="#"></a>\r
- <a class="mceResize mceResizeS" href="#"></a>\r
- <a class="mceResize mceResizeW" href="#"></a>\r
- <a class="mceResize mceResizeE" href="#"></a>\r
- <a class="mceResize mceResizeNW" href="#"></a>\r
- <a class="mceResize mceResizeNE" href="#"></a>\r
- <a class="mceResize mceResizeSW" href="#"></a>\r
- <a class="mceResize mceResizeSE" href="#"></a>\r
- </div>\r
- </div>\r
-\r
- <div class="clearlooks2" style="width:400px; height:100px; left:10px; top:230px;">\r
- <div class="mceWrapper mceMovable mceFocus mceResizable mceMaximizable">\r
- <div class="mceTop">\r
- <div class="mceLeft"></div>\r
- <div class="mceCenter"></div>\r
- <div class="mceRight"></div>\r
- <span>Resizable, Maximizable</span>\r
- </div>\r
-\r
- <div class="mceMiddle">\r
- <div class="mceLeft"></div>\r
- <span>Content</span>\r
- <div class="mceRight"></div>\r
- </div>\r
-\r
- <div class="mceBottom">\r
- <div class="mceLeft"></div>\r
- <div class="mceCenter"></div>\r
- <div class="mceRight"></div>\r
- <span>Statusbar text.</span>\r
- </div>\r
-\r
- <a class="mceMove" href="#"></a>\r
- <a class="mceMin" href="#"></a>\r
- <a class="mceMax" href="#"></a>\r
- <a class="mceMed" href="#"></a>\r
- <a class="mceClose" href="#"></a>\r
- <a class="mceResize mceResizeN" href="#"></a>\r
- <a class="mceResize mceResizeS" href="#"></a>\r
- <a class="mceResize mceResizeW" href="#"></a>\r
- <a class="mceResize mceResizeE" href="#"></a>\r
- <a class="mceResize mceResizeNW" href="#"></a>\r
- <a class="mceResize mceResizeNE" href="#"></a>\r
- <a class="mceResize mceResizeSW" href="#"></a>\r
- <a class="mceResize mceResizeSE" href="#"></a>\r
- </div>\r
- </div>\r
-\r
- <div class="clearlooks2" style="width:400px; height:100px; left:420px; top:230px;">\r
- <div class="mceWrapper mceMovable mceStatusbar mceResizable mceMaximizable">\r
- <div class="mceTop">\r
- <div class="mceLeft"></div>\r
- <div class="mceCenter"></div>\r
- <div class="mceRight"></div>\r
- <span>Blurred, Maximizable, Statusbar, Resizable</span>\r
- </div>\r
-\r
- <div class="mceMiddle">\r
- <div class="mceLeft"></div>\r
- <span>Content</span>\r
- <div class="mceRight"></div>\r
- </div>\r
-\r
- <div class="mceBottom">\r
- <div class="mceLeft"></div>\r
- <div class="mceCenter"></div>\r
- <div class="mceRight"></div>\r
- <span>Statusbar text.</span>\r
- </div>\r
-\r
- <a class="mceMove" href="#"></a>\r
- <a class="mceMin" href="#"></a>\r
- <a class="mceMax" href="#"></a>\r
- <a class="mceMed" href="#"></a>\r
- <a class="mceClose" href="#"></a>\r
- <a class="mceResize mceResizeN" href="#"></a>\r
- <a class="mceResize mceResizeS" href="#"></a>\r
- <a class="mceResize mceResizeW" href="#"></a>\r
- <a class="mceResize mceResizeE" href="#"></a>\r
- <a class="mceResize mceResizeNW" href="#"></a>\r
- <a class="mceResize mceResizeNE" href="#"></a>\r
- <a class="mceResize mceResizeSW" href="#"></a>\r
- <a class="mceResize mceResizeSE" href="#"></a>\r
- </div>\r
- </div>\r
-\r
- <div class="clearlooks2" style="width:400px; height:100px; left:10px; top:340px;">\r
- <div class="mceWrapper mceMovable mceFocus mceResizable mceMaximized mceMinimizable mceMaximizable">\r
- <div class="mceTop">\r
- <div class="mceLeft"></div>\r
- <div class="mceCenter"></div>\r
- <div class="mceRight"></div>\r
- <span>Maximized, Maximizable, Minimizable</span>\r
- </div>\r
-\r
- <div class="mceMiddle">\r
- <div class="mceLeft"></div>\r
- <span>Content</span>\r
- <div class="mceRight"></div>\r
- </div>\r
-\r
- <div class="mceBottom">\r
- <div class="mceLeft"></div>\r
- <div class="mceCenter"></div>\r
- <div class="mceRight"></div>\r
- <span>Statusbar text.</span>\r
- </div>\r
-\r
- <a class="mceMove" href="#"></a>\r
- <a class="mceMin" href="#"></a>\r
- <a class="mceMax" href="#"></a>\r
- <a class="mceMed" href="#"></a>\r
- <a class="mceClose" href="#"></a>\r
- <a class="mceResize mceResizeN" href="#"></a>\r
- <a class="mceResize mceResizeS" href="#"></a>\r
- <a class="mceResize mceResizeW" href="#"></a>\r
- <a class="mceResize mceResizeE" href="#"></a>\r
- <a class="mceResize mceResizeNW" href="#"></a>\r
- <a class="mceResize mceResizeNE" href="#"></a>\r
- <a class="mceResize mceResizeSW" href="#"></a>\r
- <a class="mceResize mceResizeSE" href="#"></a>\r
- </div>\r
- </div>\r
-\r
- <div class="clearlooks2" style="width:400px; height:100px; left:420px; top:340px;">\r
- <div class="mceWrapper mceMovable mceStatusbar mceResizable mceMaximized mceMinimizable mceMaximizable">\r
- <div class="mceTop">\r
- <div class="mceLeft"></div>\r
- <div class="mceCenter"></div>\r
- <div class="mceRight"></div>\r
- <span>Blured</span>\r
- </div>\r
-\r
- <div class="mceMiddle">\r
- <div class="mceLeft"></div>\r
- <span>Content</span>\r
- <div class="mceRight"></div>\r
- </div>\r
-\r
- <div class="mceBottom">\r
- <div class="mceLeft"></div>\r
- <div class="mceCenter"></div>\r
- <div class="mceRight"></div>\r
- <span>Statusbar text.</span>\r
- </div>\r
-\r
- <a class="mceMove" href="#"></a>\r
- <a class="mceMin" href="#"></a>\r
- <a class="mceMax" href="#"></a>\r
- <a class="mceMed" href="#"></a>\r
- <a class="mceClose" href="#"></a>\r
- <a class="mceResize mceResizeN" href="#"></a>\r
- <a class="mceResize mceResizeS" href="#"></a>\r
- <a class="mceResize mceResizeW" href="#"></a>\r
- <a class="mceResize mceResizeE" href="#"></a>\r
- <a class="mceResize mceResizeNW" href="#"></a>\r
- <a class="mceResize mceResizeNE" href="#"></a>\r
- <a class="mceResize mceResizeSW" href="#"></a>\r
- <a class="mceResize mceResizeSE" href="#"></a>\r
- </div>\r
- </div>\r
-\r
- <div class="clearlooks2" style="width:400px; height:130px; left:10px; top:450px;">\r
- <div class="mceWrapper mceMovable mceFocus mceModal mceAlert">\r
- <div class="mceTop">\r
- <div class="mceLeft"></div>\r
- <div class="mceCenter"></div>\r
- <div class="mceRight"></div>\r
- <span>Alert</span>\r
- </div>\r
-\r
- <div class="mceMiddle">\r
- <div class="mceLeft"></div>\r
- <span>\r
- This is a very long error message. This is a very long error message.\r
- This is a very long error message. This is a very long error message.\r
- This is a very long error message. This is a very long error message.\r
- This is a very long error message. This is a very long error message.\r
- This is a very long error message. This is a very long error message.\r
- This is a very long error message. This is a very long error message.\r
- </span>\r
- <div class="mceRight"></div>\r
- <div class="mceIcon"></div>\r
- </div>\r
-\r
- <div class="mceBottom">\r
- <div class="mceLeft"></div>\r
- <div class="mceCenter"></div>\r
- <div class="mceRight"></div>\r
- </div>\r
-\r
- <a class="mceMove" href="#"></a>\r
- <a class="mceButton mceOk" href="#">Ok</a>\r
- <a class="mceClose" href="#"></a>\r
- </div>\r
- </div>\r
-\r
- <div class="clearlooks2" style="width:400px; height:130px; left:420px; top:450px;">\r
- <div class="mceWrapper mceMovable mceFocus mceModal mceConfirm">\r
- <div class="mceTop">\r
- <div class="mceLeft"></div>\r
- <div class="mceCenter"></div>\r
- <div class="mceRight"></div>\r
- <span>Confirm</span>\r
- </div>\r
-\r
- <div class="mceMiddle">\r
- <div class="mceLeft"></div>\r
- <span>\r
- This is a very long error message. This is a very long error message.\r
- This is a very long error message. This is a very long error message.\r
- This is a very long error message. This is a very long error message.\r
- This is a very long error message. This is a very long error message.\r
- This is a very long error message. This is a very long error message.\r
- This is a very long error message. This is a very long error message.\r
- </span>\r
- <div class="mceRight"></div>\r
- <div class="mceIcon"></div>\r
- </div>\r
-\r
- <div class="mceBottom">\r
- <div class="mceLeft"></div>\r
- <div class="mceCenter"></div>\r
- <div class="mceRight"></div>\r
- </div>\r
-\r
- <a class="mceMove" href="#"></a>\r
- <a class="mceButton mceOk" href="#">Ok</a>\r
- <a class="mceButton mceCancel" href="#">Cancel</a>\r
- <a class="mceClose" href="#"></a>\r
- </div>\r
- </div>\r
-</div>\r
-\r
-</body>\r
-</html>\r
+++ /dev/null
-(function(){tinymce.create('tinymce.plugins.InsertDateTime',{init:function(ed,url){var t=this;t.editor=ed;ed.addCommand('mceInsertDate',function(){var str=t._getDateTime(new Date(),ed.getParam("plugin_insertdate_dateFormat",ed.getLang('insertdatetime.date_fmt')));ed.execCommand('mceInsertContent',false,str);});ed.addCommand('mceInsertTime',function(){var str=t._getDateTime(new Date(),ed.getParam("plugin_insertdate_timeFormat",ed.getLang('insertdatetime.time_fmt')));ed.execCommand('mceInsertContent',false,str);});ed.addButton('insertdate',{title:'insertdatetime.insertdate_desc',cmd:'mceInsertDate'});ed.addButton('inserttime',{title:'insertdatetime.inserttime_desc',cmd:'mceInsertTime'});},getInfo:function(){return{longname:'Insert date/time',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/insertdatetime',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_getDateTime:function(d,fmt){var ed=this.editor;function addZeros(value,len){value=""+value;if(value.length<len){for(var i=0;i<(len-value.length);i++)value="0"+value;}return value;};fmt=fmt.replace("%D","%m/%d/%y");fmt=fmt.replace("%r","%I:%M:%S %p");fmt=fmt.replace("%Y",""+d.getFullYear());fmt=fmt.replace("%y",""+d.getYear());fmt=fmt.replace("%m",addZeros(d.getMonth()+1,2));fmt=fmt.replace("%d",addZeros(d.getDate(),2));fmt=fmt.replace("%H",""+addZeros(d.getHours(),2));fmt=fmt.replace("%M",""+addZeros(d.getMinutes(),2));fmt=fmt.replace("%S",""+addZeros(d.getSeconds(),2));fmt=fmt.replace("%I",""+((d.getHours()+11)%12+1));fmt=fmt.replace("%p",""+(d.getHours()<12?"AM":"PM"));fmt=fmt.replace("%B",""+ed.getLang("insertdatetime.months_long").split(',')[d.getMonth()]);fmt=fmt.replace("%b",""+ed.getLang("insertdatetime.months_short").split(',')[d.getMonth()]);fmt=fmt.replace("%A",""+ed.getLang("insertdatetime.day_long").split(',')[d.getDay()]);fmt=fmt.replace("%a",""+ed.getLang("insertdatetime.day_short").split(',')[d.getDay()]);fmt=fmt.replace("%%","%");return fmt;}});tinymce.PluginManager.add('insertdatetime',tinymce.plugins.InsertDateTime);})();
\ No newline at end of file
+++ /dev/null
-/**\r
- * $Id: editor_plugin_src.js 520 2008-01-07 16:30:32Z spocke $\r
- *\r
- * @author Moxiecode\r
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-(function() {\r
- tinymce.create('tinymce.plugins.InsertDateTime', {\r
- init : function(ed, url) {\r
- var t = this;\r
-\r
- t.editor = ed;\r
-\r
- ed.addCommand('mceInsertDate', function() {\r
- var str = t._getDateTime(new Date(), ed.getParam("plugin_insertdate_dateFormat", ed.getLang('insertdatetime.date_fmt')));\r
-\r
- ed.execCommand('mceInsertContent', false, str);\r
- });\r
-\r
- ed.addCommand('mceInsertTime', function() {\r
- var str = t._getDateTime(new Date(), ed.getParam("plugin_insertdate_timeFormat", ed.getLang('insertdatetime.time_fmt')));\r
-\r
- ed.execCommand('mceInsertContent', false, str);\r
- });\r
-\r
- ed.addButton('insertdate', {title : 'insertdatetime.insertdate_desc', cmd : 'mceInsertDate'});\r
- ed.addButton('inserttime', {title : 'insertdatetime.inserttime_desc', cmd : 'mceInsertTime'});\r
- },\r
-\r
- getInfo : function() {\r
- return {\r
- longname : 'Insert date/time',\r
- author : 'Moxiecode Systems AB',\r
- authorurl : 'http://tinymce.moxiecode.com',\r
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/insertdatetime',\r
- version : tinymce.majorVersion + "." + tinymce.minorVersion\r
- };\r
- },\r
-\r
- // Private methods\r
-\r
- _getDateTime : function(d, fmt) {\r
- var ed = this.editor;\r
-\r
- function addZeros(value, len) {\r
- value = "" + value;\r
-\r
- if (value.length < len) {\r
- for (var i=0; i<(len-value.length); i++)\r
- value = "0" + value;\r
- }\r
-\r
- return value;\r
- };\r
-\r
- fmt = fmt.replace("%D", "%m/%d/%y");\r
- fmt = fmt.replace("%r", "%I:%M:%S %p");\r
- fmt = fmt.replace("%Y", "" + d.getFullYear());\r
- fmt = fmt.replace("%y", "" + d.getYear());\r
- fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2));\r
- fmt = fmt.replace("%d", addZeros(d.getDate(), 2));\r
- fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2));\r
- fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2));\r
- fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2));\r
- fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1));\r
- fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM"));\r
- fmt = fmt.replace("%B", "" + ed.getLang("insertdatetime.months_long").split(',')[d.getMonth()]);\r
- fmt = fmt.replace("%b", "" + ed.getLang("insertdatetime.months_short").split(',')[d.getMonth()]);\r
- fmt = fmt.replace("%A", "" + ed.getLang("insertdatetime.day_long").split(',')[d.getDay()]);\r
- fmt = fmt.replace("%a", "" + ed.getLang("insertdatetime.day_short").split(',')[d.getDay()]);\r
- fmt = fmt.replace("%%", "%");\r
-\r
- return fmt;\r
- }\r
- });\r
-\r
- // Register plugin\r
- tinymce.PluginManager.add('insertdatetime', tinymce.plugins.InsertDateTime);\r
-})();
\ No newline at end of file
+++ /dev/null
-(function(){tinymce.create('tinymce.plugins.Layer',{init:function(ed,url){var t=this;t.editor=ed;ed.addCommand('mceInsertLayer',t._insertLayer,t);ed.addCommand('mceMoveForward',function(){t._move(1);});ed.addCommand('mceMoveBackward',function(){t._move(-1);});ed.addCommand('mceMakeAbsolute',function(){t._toggleAbsolute();});ed.addButton('moveforward',{title:'layer.forward_desc',cmd:'mceMoveForward'});ed.addButton('movebackward',{title:'layer.backward_desc',cmd:'mceMoveBackward'});ed.addButton('absolute',{title:'layer.absolute_desc',cmd:'mceMakeAbsolute'});ed.addButton('insertlayer',{title:'layer.insertlayer_desc',cmd:'mceInsertLayer'});ed.onInit.add(function(){if(tinymce.isIE)ed.getDoc().execCommand('2D-Position',false,true);});ed.onNodeChange.add(t._nodeChange,t);ed.onVisualAid.add(t._visualAid,t);},getInfo:function(){return{longname:'Layer',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/layer',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_nodeChange:function(ed,cm,n){var le,p;le=this._getParentLayer(n);p=ed.dom.getParent(n,'DIV,P,IMG');if(!p){cm.setDisabled('absolute',1);cm.setDisabled('moveforward',1);cm.setDisabled('movebackward',1);}else{cm.setDisabled('absolute',0);cm.setDisabled('moveforward',!le);cm.setDisabled('movebackward',!le);cm.setActive('absolute',le&&le.style.position.toLowerCase()=="absolute");}},_visualAid:function(ed,e,s){var dom=ed.dom;tinymce.each(dom.select('div,p',e),function(e){if(/^(absolute|relative|static)$/i.test(e.style.position)){if(s)dom.addClass(e,'mceItemVisualAid');else dom.removeClass(e,'mceItemVisualAid');}});},_move:function(d){var ed=this.editor,i,z=[],le=this._getParentLayer(ed.selection.getNode()),ci=-1,fi=-1,nl;nl=[];tinymce.walk(ed.getBody(),function(n){if(n.nodeType==1&&/^(absolute|relative|static)$/i.test(n.style.position))nl.push(n);},'childNodes');for(i=0;i<nl.length;i++){z[i]=nl[i].style.zIndex?parseInt(nl[i].style.zIndex):0;if(ci<0&&nl[i]==le)ci=i;}if(d<0){for(i=0;i<z.length;i++){if(z[i]<z[ci]){fi=i;break;}}if(fi>-1){nl[ci].style.zIndex=z[fi];nl[fi].style.zIndex=z[ci];}else{if(z[ci]>0)nl[ci].style.zIndex=z[ci]-1;}}else{for(i=0;i<z.length;i++){if(z[i]>z[ci]){fi=i;break;}}if(fi>-1){nl[ci].style.zIndex=z[fi];nl[fi].style.zIndex=z[ci];}else nl[ci].style.zIndex=z[ci]+1;}ed.execCommand('mceRepaint');},_getParentLayer:function(n){return this.editor.dom.getParent(n,function(n){return n.nodeType==1&&/^(absolute|relative|static)$/i.test(n.style.position);});},_insertLayer:function(){var ed=this.editor,p=ed.dom.getPos(ed.dom.getParent(ed.selection.getNode(),'*'));ed.dom.add(ed.getBody(),'div',{style:{position:'absolute',left:p.x,top:(p.y>20?p.y:20),width:100,height:100},'class':'mceItemVisualAid'},ed.selection.getContent()||ed.getLang('layer.content'));},_toggleAbsolute:function(){var ed=this.editor,le=this._getParentLayer(ed.selection.getNode());if(!le)le=ed.dom.getParent(ed.selection.getNode(),'DIV,P,IMG');if(le){if(le.style.position.toLowerCase()=="absolute"){ed.dom.setStyles(le,{position:'',left:'',top:'',width:'',height:''});ed.dom.removeClass(le,'mceItemVisualAid');}else{if(le.style.left=="")le.style.left=20+'px';if(le.style.top=="")le.style.top=20+'px';if(le.style.width=="")le.style.width=le.width?(le.width+'px'):'100px';if(le.style.height=="")le.style.height=le.height?(le.height+'px'):'100px';le.style.position="absolute";ed.addVisual(ed.getBody());}ed.execCommand('mceRepaint');ed.nodeChanged();}}});tinymce.PluginManager.add('layer',tinymce.plugins.Layer);})();
\ No newline at end of file
+++ /dev/null
-/**\r
- * $Id: editor_plugin_src.js 652 2008-02-29 13:09:46Z spocke $\r
- *\r
- * @author Moxiecode\r
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-(function() {\r
- tinymce.create('tinymce.plugins.Layer', {\r
- init : function(ed, url) {\r
- var t = this;\r
-\r
- t.editor = ed;\r
-\r
- // Register commands\r
- ed.addCommand('mceInsertLayer', t._insertLayer, t);\r
-\r
- ed.addCommand('mceMoveForward', function() {\r
- t._move(1);\r
- });\r
-\r
- ed.addCommand('mceMoveBackward', function() {\r
- t._move(-1);\r
- });\r
-\r
- ed.addCommand('mceMakeAbsolute', function() {\r
- t._toggleAbsolute();\r
- });\r
-\r
- // Register buttons\r
- ed.addButton('moveforward', {title : 'layer.forward_desc', cmd : 'mceMoveForward'});\r
- ed.addButton('movebackward', {title : 'layer.backward_desc', cmd : 'mceMoveBackward'});\r
- ed.addButton('absolute', {title : 'layer.absolute_desc', cmd : 'mceMakeAbsolute'});\r
- ed.addButton('insertlayer', {title : 'layer.insertlayer_desc', cmd : 'mceInsertLayer'});\r
-\r
- ed.onInit.add(function() {\r
- if (tinymce.isIE)\r
- ed.getDoc().execCommand('2D-Position', false, true);\r
- });\r
-\r
- ed.onNodeChange.add(t._nodeChange, t);\r
- ed.onVisualAid.add(t._visualAid, t);\r
- },\r
-\r
- getInfo : function() {\r
- return {\r
- longname : 'Layer',\r
- author : 'Moxiecode Systems AB',\r
- authorurl : 'http://tinymce.moxiecode.com',\r
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/layer',\r
- version : tinymce.majorVersion + "." + tinymce.minorVersion\r
- };\r
- },\r
-\r
- // Private methods\r
-\r
- _nodeChange : function(ed, cm, n) {\r
- var le, p;\r
-\r
- le = this._getParentLayer(n);\r
- p = ed.dom.getParent(n, 'DIV,P,IMG');\r
-\r
- if (!p) {\r
- cm.setDisabled('absolute', 1);\r
- cm.setDisabled('moveforward', 1);\r
- cm.setDisabled('movebackward', 1);\r
- } else {\r
- cm.setDisabled('absolute', 0);\r
- cm.setDisabled('moveforward', !le);\r
- cm.setDisabled('movebackward', !le);\r
- cm.setActive('absolute', le && le.style.position.toLowerCase() == "absolute");\r
- }\r
- },\r
-\r
- // Private methods\r
-\r
- _visualAid : function(ed, e, s) {\r
- var dom = ed.dom;\r
-\r
- tinymce.each(dom.select('div,p', e), function(e) {\r
- if (/^(absolute|relative|static)$/i.test(e.style.position)) {\r
- if (s)\r
- dom.addClass(e, 'mceItemVisualAid');\r
- else\r
- dom.removeClass(e, 'mceItemVisualAid'); \r
- }\r
- });\r
- },\r
-\r
- _move : function(d) {\r
- var ed = this.editor, i, z = [], le = this._getParentLayer(ed.selection.getNode()), ci = -1, fi = -1, nl;\r
-\r
- nl = [];\r
- tinymce.walk(ed.getBody(), function(n) {\r
- if (n.nodeType == 1 && /^(absolute|relative|static)$/i.test(n.style.position))\r
- nl.push(n); \r
- }, 'childNodes');\r
-\r
- // Find z-indexes\r
- for (i=0; i<nl.length; i++) {\r
- z[i] = nl[i].style.zIndex ? parseInt(nl[i].style.zIndex) : 0;\r
-\r
- if (ci < 0 && nl[i] == le)\r
- ci = i;\r
- }\r
-\r
- if (d < 0) {\r
- // Move back\r
-\r
- // Try find a lower one\r
- for (i=0; i<z.length; i++) {\r
- if (z[i] < z[ci]) {\r
- fi = i;\r
- break;\r
- }\r
- }\r
-\r
- if (fi > -1) {\r
- nl[ci].style.zIndex = z[fi];\r
- nl[fi].style.zIndex = z[ci];\r
- } else {\r
- if (z[ci] > 0)\r
- nl[ci].style.zIndex = z[ci] - 1;\r
- }\r
- } else {\r
- // Move forward\r
-\r
- // Try find a higher one\r
- for (i=0; i<z.length; i++) {\r
- if (z[i] > z[ci]) {\r
- fi = i;\r
- break;\r
- }\r
- }\r
-\r
- if (fi > -1) {\r
- nl[ci].style.zIndex = z[fi];\r
- nl[fi].style.zIndex = z[ci];\r
- } else\r
- nl[ci].style.zIndex = z[ci] + 1;\r
- }\r
-\r
- ed.execCommand('mceRepaint');\r
- },\r
-\r
- _getParentLayer : function(n) {\r
- return this.editor.dom.getParent(n, function(n) {\r
- return n.nodeType == 1 && /^(absolute|relative|static)$/i.test(n.style.position);\r
- });\r
- },\r
-\r
- _insertLayer : function() {\r
- var ed = this.editor, p = ed.dom.getPos(ed.dom.getParent(ed.selection.getNode(), '*'));\r
-\r
- ed.dom.add(ed.getBody(), 'div', {\r
- style : {\r
- position : 'absolute',\r
- left : p.x,\r
- top : (p.y > 20 ? p.y : 20),\r
- width : 100,\r
- height : 100\r
- },\r
- 'class' : 'mceItemVisualAid'\r
- }, ed.selection.getContent() || ed.getLang('layer.content'));\r
- },\r
-\r
- _toggleAbsolute : function() {\r
- var ed = this.editor, le = this._getParentLayer(ed.selection.getNode());\r
-\r
- if (!le)\r
- le = ed.dom.getParent(ed.selection.getNode(), 'DIV,P,IMG');\r
-\r
- if (le) {\r
- if (le.style.position.toLowerCase() == "absolute") {\r
- ed.dom.setStyles(le, {\r
- position : '',\r
- left : '',\r
- top : '',\r
- width : '',\r
- height : ''\r
- });\r
-\r
- ed.dom.removeClass(le, 'mceItemVisualAid');\r
- } else {\r
- if (le.style.left == "")\r
- le.style.left = 20 + 'px';\r
-\r
- if (le.style.top == "")\r
- le.style.top = 20 + 'px';\r
-\r
- if (le.style.width == "")\r
- le.style.width = le.width ? (le.width + 'px') : '100px';\r
-\r
- if (le.style.height == "")\r
- le.style.height = le.height ? (le.height + 'px') : '100px';\r
-\r
- le.style.position = "absolute";\r
- ed.addVisual(ed.getBody());\r
- }\r
-\r
- ed.execCommand('mceRepaint');\r
- ed.nodeChanged();\r
- }\r
- }\r
- });\r
-\r
- // Register plugin\r
- tinymce.PluginManager.add('layer', tinymce.plugins.Layer);\r
-})();
\ No newline at end of file
+++ /dev/null
-.mceItemFlash, .mceItemShockWave, .mceItemQuickTime, .mceItemWindowsMedia, .mceItemRealMedia {border:1px dotted #cc0000; background-position:center; background-repeat:no-repeat; background-color:#ffffcc;}\r
-.mceItemShockWave {background-image: url(../img/shockwave.gif);}\r
-.mceItemFlash {background-image:url(../img/flash.gif);}\r
-.mceItemQuickTime {background-image:url(../img/quicktime.gif);}\r
-.mceItemWindowsMedia {background-image:url(../img/windowsmedia.gif);}\r
-.mceItemRealMedia {background-image:url(../img/realmedia.gif);}\r
+++ /dev/null
-#id, #name, #hspace, #vspace, #class_name, #align { width: 100px }\r
-#hspace, #vspace { width: 50px }\r
-#flash_quality, #flash_align, #flash_scale, #flash_salign, #flash_wmode { width: 100px }\r
-#flash_base, #flash_flashvars { width: 240px }\r
-#width, #height { width: 40px }\r
-#src, #media_type { width: 250px }\r
-#class { width: 120px }\r
-#prev { margin: 0; border: 1px solid black; width: 380px; height: 230px; overflow: auto }\r
-.panel_wrapper div.current { height: 390px; overflow: auto }\r
-#flash_options, #shockwave_options, #qt_options, #wmp_options, #rmp_options { display: none }\r
-.mceAddSelectValue { background-color: #DDDDDD }\r
-#qt_starttime, #qt_endtime, #qt_fov, #qt_href, #qt_moveid, #qt_moviename, #qt_node, #qt_pan, #qt_qtsrc, #qt_qtsrcchokespeed, #qt_target, #qt_tilt, #qt_urlsubstituten, #qt_volume { width: 70px }\r
-#wmp_balance, #wmp_baseurl, #wmp_captioningid, #wmp_currentmarker, #wmp_currentposition, #wmp_defaultframe, #wmp_playcount, #wmp_rate, #wmp_uimode, #wmp_volume { width: 70px }\r
-#rmp_console, #rmp_numloop, #rmp_controls, #rmp_scriptcallbacks { width: 70px }\r
-#shockwave_swvolume, #shockwave_swframe, #shockwave_swurl, #shockwave_swstretchvalign, #shockwave_swstretchhalign, #shockwave_swstretchstyle { width: 90px }\r
-#qt_qtsrc { width: 200px }\r
+++ /dev/null
-(function(){var each=tinymce.each;tinymce.create('tinymce.plugins.MediaPlugin',{init:function(ed,url){var t=this;t.editor=ed;t.url=url;function isMediaElm(n){return/^(mceItemFlash|mceItemShockWave|mceItemWindowsMedia|mceItemQuickTime|mceItemRealMedia)$/.test(n.className);};ed.onPreInit.add(function(){ed.serializer.addRules('param[name|value|_value]');});ed.addCommand('mceMedia',function(){ed.windowManager.open({file:url+'/media.htm',width:430+parseInt(ed.getLang('media.delta_width',0)),height:470+parseInt(ed.getLang('media.delta_height',0)),inline:1},{plugin_url:url});});ed.addButton('media',{title:'media.desc',cmd:'mceMedia'});ed.onNodeChange.add(function(ed,cm,n){cm.setActive('media',n.nodeName=='IMG'&&isMediaElm(n));});ed.onInit.add(function(){var lo={mceItemFlash:'flash',mceItemShockWave:'shockwave',mceItemWindowsMedia:'windowsmedia',mceItemQuickTime:'quicktime',mceItemRealMedia:'realmedia'};if(ed.settings.content_css!==false)ed.dom.loadCSS(url+"/css/content.css");if(ed.theme.onResolveName){ed.theme.onResolveName.add(function(th,o){if(o.name=='img'){each(lo,function(v,k){if(ed.dom.hasClass(o.node,k)){o.name=v;o.title=ed.dom.getAttrib(o.node,'title');return false;}});}});}if(ed&&ed.plugins.contextmenu){ed.plugins.contextmenu.onContextMenu.add(function(th,m,e){if(e.nodeName=='IMG'&&/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(e.className)){m.add({title:'media.edit',icon:'media',cmd:'mceMedia'});}});}});ed.onBeforeSetContent.add(function(ed,o){var h=o.content;h=h.replace(/<script[^>]*>\s*write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\(\{([^\)]*)\}\);\s*<\/script>/gi,function(a,b,c){var o=t._parse(c);return'<img class="mceItem'+b+'" title="'+ed.dom.encode(c)+'" src="'+url+'/img/trans.gif" width="'+o.width+'" height="'+o.height+'" />'});h=h.replace(/<object([^>]*)>/gi,'<span class="mceItemObject" $1>');h=h.replace(/<embed([^>]*)\/?>/gi,'<span class="mceItemEmbed" $1></span>');h=h.replace(/<embed([^>]*)>/gi,'<span class="mceItemEmbed" $1>');h=h.replace(/<\/(object)([^>]*)>/gi,'</span>');h=h.replace(/<\/embed>/gi,'');h=h.replace(/<param([^>]*)>/gi,function(a,b){return'<span '+b.replace(/value=/gi,'_value=')+' class="mceItemParam"></span>'});h=h.replace(/\/ class=\"mceItemParam\"><\/span>/gi,'class="mceItemParam"></span>');o.content=h;});ed.onSetContent.add(function(){t._spansToImgs(ed.getBody());});ed.onPreProcess.add(function(ed,o){var dom=ed.dom;if(o.set){t._spansToImgs(o.node);each(dom.select('IMG',o.node),function(n){var p;if(isMediaElm(n)){p=t._parse(n.title);dom.setAttrib(n,'width',dom.getAttrib(n,'width',p.width||100));dom.setAttrib(n,'height',dom.getAttrib(n,'height',p.height||100));}});}if(o.get){each(dom.select('IMG',o.node),function(n){var ci,cb,mt;if(ed.getParam('media_use_script')){if(isMediaElm(n))n.className=n.className.replace(/mceItem/g,'mceTemp');return;}switch(n.className){case'mceItemFlash':ci='d27cdb6e-ae6d-11cf-96b8-444553540000';cb='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';mt='application/x-shockwave-flash';break;case'mceItemShockWave':ci='166b1bca-3f9c-11cf-8075-444553540000';cb='http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0';mt='application/x-director';break;case'mceItemWindowsMedia':ci=ed.getParam('media_wmp6_compatible')?'05589fa1-c356-11ce-bf01-00aa0055595a':'6bf52a52-394a-11d3-b153-00c04f79faa6';cb='http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701';mt='application/x-mplayer2';break;case'mceItemQuickTime':ci='02bf25d5-8c17-4b23-bc80-d3488abddc6b';cb='http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0';mt='video/quicktime';break;case'mceItemRealMedia':ci='cfcdaa03-8be4-11cf-b84b-0020afbbccfa';cb='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';mt='audio/x-pn-realaudio-plugin';break;}if(ci){dom.replace(t._buildObj({classid:ci,codebase:cb,type:mt},n),n);}});}});ed.onPostProcess.add(function(ed,o){o.content=o.content.replace(/_value=/g,'value=');});if(ed.getParam('media_use_script')){function getAttr(s,n){n=new RegExp(n+'=\"([^\"]+)\"','g').exec(s);return n?ed.dom.decode(n[1]):'';};ed.onPostProcess.add(function(ed,o){o.content=o.content.replace(/<img[^>]+>/g,function(im){var cl=getAttr(im,'class');if(/^(mceTempFlash|mceTempShockWave|mceTempWindowsMedia|mceTempQuickTime|mceTempRealMedia)$/.test(cl)){at=t._parse(getAttr(im,'title'));at.width=getAttr(im,'width');at.height=getAttr(im,'height');im='<script type="text/javascript">write'+cl.substring(7)+'({'+t._serialize(at)+'});</script>';}return im;});});}},getInfo:function(){return{longname:'Media',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/media',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_buildObj:function(o,n){var ob,ed=this.editor,dom=ed.dom,p=this._parse(n.title);p.width=o.width=dom.getAttrib(n,'width')||100;p.height=o.height=dom.getAttrib(n,'height')||100;ob=dom.create('span',{mce_name:'object',classid:"clsid:"+o.classid,codebase:o.codebase,width:o.width,height:o.height});if(p.src)p.src=ed.convertURL(p.src,'src',n);each(p,function(v,k){if(!/^(width|height|codebase|classid)$/.test(k)){if(o.type=='application/x-mplayer2'&&k=='src')k='url';dom.add(ob,'span',{mce_name:'param',name:k,'_value':v});}});dom.add(ob,'span',tinymce.extend({mce_name:'embed',type:o.type},p));return ob;},_spansToImgs:function(p){var t=this,dom=t.editor.dom,im,ci;each(dom.select('span',p),function(n){if(dom.getAttrib(n,'class')=='mceItemObject'){ci=dom.getAttrib(n,"classid").toLowerCase().replace(/\s+/g,'');switch(ci){case'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000':dom.replace(t._createImg('mceItemFlash',n),n);break;case'clsid:166b1bca-3f9c-11cf-8075-444553540000':dom.replace(t._createImg('mceItemShockWave',n),n);break;case'clsid:6bf52a52-394a-11d3-b153-00c04f79faa6':case'clsid:22d6f312-b0f6-11d0-94ab-0080c74c7e95':case'clsid:05589fa1-c356-11ce-bf01-00aa0055595a':dom.replace(t._createImg('mceItemWindowsMedia',n),n);break;case'clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b':dom.replace(t._createImg('mceItemQuickTime',n),n);break;case'clsid:cfcdaa03-8be4-11cf-b84b-0020afbbccfa':dom.replace(t._createImg('mceItemRealMedia',n),n);break;default:dom.replace(t._createImg('mceItemFlash',n),n);}return;}if(dom.getAttrib(n,'class')=='mceItemEmbed'){switch(dom.getAttrib(n,'type')){case'application/x-shockwave-flash':dom.replace(t._createImg('mceItemFlash',n),n);break;case'application/x-director':dom.replace(t._createImg('mceItemShockWave',n),n);break;case'application/x-mplayer2':dom.replace(t._createImg('mceItemWindowsMedia',n),n);break;case'video/quicktime':dom.replace(t._createImg('mceItemQuickTime',n),n);break;case'audio/x-pn-realaudio-plugin':dom.replace(t._createImg('mceItemRealMedia',n),n);break;default:dom.replace(t._createImg('mceItemFlash',n),n);}}});},_createImg:function(cl,n){var im,dom=this.editor.dom,pa={},ti='';im=dom.create('img',{src:this.url+'/img/trans.gif',width:dom.getAttrib(n,'width')||100,height:dom.getAttrib(n,'height')||100,'class':cl});each(['id','name','width','height','bgcolor','align','flashvars','src','wmode'],function(na){var v=dom.getAttrib(n,na);if(v)pa[na]=v;});each(dom.select('span',n),function(n){if(dom.hasClass(n,'mceItemParam'))pa[dom.getAttrib(n,'name')]=dom.getAttrib(n,'_value');});if(pa.movie){pa.src=pa.movie;delete pa.movie;}delete pa.width;delete pa.height;im.title=this._serialize(pa);return im;},_parse:function(s){return tinymce.util.JSON.parse('{'+s+'}');},_serialize:function(o){return tinymce.util.JSON.serialize(o).replace(/[{}]/g,'');}});tinymce.PluginManager.add('media',tinymce.plugins.MediaPlugin);})();
\ No newline at end of file
+++ /dev/null
-/**\r
- * $Id: editor_plugin_src.js 880 2008-06-19 10:14:14Z spocke $\r
- *\r
- * @author Moxiecode\r
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-(function() {\r
- var each = tinymce.each;\r
-\r
- tinymce.create('tinymce.plugins.MediaPlugin', {\r
- init : function(ed, url) {\r
- var t = this;\r
- \r
- t.editor = ed;\r
- t.url = url;\r
-\r
- function isMediaElm(n) {\r
- return /^(mceItemFlash|mceItemShockWave|mceItemWindowsMedia|mceItemQuickTime|mceItemRealMedia)$/.test(n.className);\r
- };\r
-\r
- ed.onPreInit.add(function() {\r
- // Force in _value parameter this extra parameter is required for older Opera versions\r
- ed.serializer.addRules('param[name|value|_value]');\r
- });\r
-\r
- // Register commands\r
- ed.addCommand('mceMedia', function() {\r
- ed.windowManager.open({\r
- file : url + '/media.htm',\r
- width : 430 + parseInt(ed.getLang('media.delta_width', 0)),\r
- height : 470 + parseInt(ed.getLang('media.delta_height', 0)),\r
- inline : 1\r
- }, {\r
- plugin_url : url\r
- });\r
- });\r
-\r
- // Register buttons\r
- ed.addButton('media', {title : 'media.desc', cmd : 'mceMedia'});\r
-\r
- ed.onNodeChange.add(function(ed, cm, n) {\r
- cm.setActive('media', n.nodeName == 'IMG' && isMediaElm(n));\r
- });\r
-\r
- ed.onInit.add(function() {\r
- var lo = {\r
- mceItemFlash : 'flash',\r
- mceItemShockWave : 'shockwave',\r
- mceItemWindowsMedia : 'windowsmedia',\r
- mceItemQuickTime : 'quicktime',\r
- mceItemRealMedia : 'realmedia'\r
- };\r
-\r
- if (ed.settings.content_css !== false)\r
- ed.dom.loadCSS(url + "/css/content.css");\r
-\r
- if (ed.theme.onResolveName) {\r
- ed.theme.onResolveName.add(function(th, o) {\r
- if (o.name == 'img') {\r
- each(lo, function(v, k) {\r
- if (ed.dom.hasClass(o.node, k)) {\r
- o.name = v;\r
- o.title = ed.dom.getAttrib(o.node, 'title');\r
- return false;\r
- }\r
- });\r
- }\r
- });\r
- }\r
-\r
- if (ed && ed.plugins.contextmenu) {\r
- ed.plugins.contextmenu.onContextMenu.add(function(th, m, e) {\r
- if (e.nodeName == 'IMG' && /mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(e.className)) {\r
- m.add({title : 'media.edit', icon : 'media', cmd : 'mceMedia'});\r
- }\r
- });\r
- }\r
- });\r
-\r
- ed.onBeforeSetContent.add(function(ed, o) {\r
- var h = o.content;\r
-\r
- h = h.replace(/<script[^>]*>\s*write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\(\{([^\)]*)\}\);\s*<\/script>/gi, function(a, b, c) {\r
- var o = t._parse(c);\r
-\r
- return '<img class="mceItem' + b + '" title="' + ed.dom.encode(c) + '" src="' + url + '/img/trans.gif" width="' + o.width + '" height="' + o.height + '" />'\r
- });\r
-\r
- h = h.replace(/<object([^>]*)>/gi, '<span class="mceItemObject" $1>');\r
- h = h.replace(/<embed([^>]*)\/?>/gi, '<span class="mceItemEmbed" $1></span>');\r
- h = h.replace(/<embed([^>]*)>/gi, '<span class="mceItemEmbed" $1>');\r
- h = h.replace(/<\/(object)([^>]*)>/gi, '</span>');\r
- h = h.replace(/<\/embed>/gi, '');\r
- h = h.replace(/<param([^>]*)>/gi, function(a, b) {return '<span ' + b.replace(/value=/gi, '_value=') + ' class="mceItemParam"></span>'});\r
- h = h.replace(/\/ class=\"mceItemParam\"><\/span>/gi, 'class="mceItemParam"></span>');\r
-\r
- o.content = h;\r
- });\r
-\r
- ed.onSetContent.add(function() {\r
- t._spansToImgs(ed.getBody());\r
- });\r
-\r
- ed.onPreProcess.add(function(ed, o) {\r
- var dom = ed.dom;\r
-\r
- if (o.set) {\r
- t._spansToImgs(o.node);\r
-\r
- each(dom.select('IMG', o.node), function(n) {\r
- var p;\r
-\r
- if (isMediaElm(n)) {\r
- p = t._parse(n.title);\r
- dom.setAttrib(n, 'width', dom.getAttrib(n, 'width', p.width || 100));\r
- dom.setAttrib(n, 'height', dom.getAttrib(n, 'height', p.height || 100));\r
- }\r
- });\r
- }\r
-\r
- if (o.get) {\r
- each(dom.select('IMG', o.node), function(n) {\r
- var ci, cb, mt;\r
-\r
- if (ed.getParam('media_use_script')) {\r
- if (isMediaElm(n))\r
- n.className = n.className.replace(/mceItem/g, 'mceTemp');\r
-\r
- return;\r
- }\r
-\r
- switch (n.className) {\r
- case 'mceItemFlash':\r
- ci = 'd27cdb6e-ae6d-11cf-96b8-444553540000';\r
- cb = 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';\r
- mt = 'application/x-shockwave-flash';\r
- break;\r
-\r
- case 'mceItemShockWave':\r
- ci = '166b1bca-3f9c-11cf-8075-444553540000';\r
- cb = 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0';\r
- mt = 'application/x-director';\r
- break;\r
-\r
- case 'mceItemWindowsMedia':\r
- ci = ed.getParam('media_wmp6_compatible') ? '05589fa1-c356-11ce-bf01-00aa0055595a' : '6bf52a52-394a-11d3-b153-00c04f79faa6';\r
- cb = 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701';\r
- mt = 'application/x-mplayer2';\r
- break;\r
-\r
- case 'mceItemQuickTime':\r
- ci = '02bf25d5-8c17-4b23-bc80-d3488abddc6b';\r
- cb = 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0';\r
- mt = 'video/quicktime';\r
- break;\r
-\r
- case 'mceItemRealMedia':\r
- ci = 'cfcdaa03-8be4-11cf-b84b-0020afbbccfa';\r
- cb = 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';\r
- mt = 'audio/x-pn-realaudio-plugin';\r
- break;\r
- }\r
-\r
- if (ci) {\r
- dom.replace(t._buildObj({\r
- classid : ci,\r
- codebase : cb,\r
- type : mt\r
- }, n), n);\r
- }\r
- });\r
- }\r
- });\r
-\r
- ed.onPostProcess.add(function(ed, o) {\r
- o.content = o.content.replace(/_value=/g, 'value=');\r
- });\r
-\r
- if (ed.getParam('media_use_script')) {\r
- function getAttr(s, n) {\r
- n = new RegExp(n + '=\"([^\"]+)\"', 'g').exec(s);\r
-\r
- return n ? ed.dom.decode(n[1]) : '';\r
- };\r
-\r
- ed.onPostProcess.add(function(ed, o) {\r
- o.content = o.content.replace(/<img[^>]+>/g, function(im) {\r
- var cl = getAttr(im, 'class');\r
-\r
- if (/^(mceTempFlash|mceTempShockWave|mceTempWindowsMedia|mceTempQuickTime|mceTempRealMedia)$/.test(cl)) {\r
- at = t._parse(getAttr(im, 'title'));\r
- at.width = getAttr(im, 'width');\r
- at.height = getAttr(im, 'height');\r
- im = '<script type="text/javascript">write' + cl.substring(7) + '({' + t._serialize(at) + '});</script>';\r
- }\r
-\r
- return im;\r
- });\r
- });\r
- }\r
- },\r
-\r
- getInfo : function() {\r
- return {\r
- longname : 'Media',\r
- author : 'Moxiecode Systems AB',\r
- authorurl : 'http://tinymce.moxiecode.com',\r
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/media',\r
- version : tinymce.majorVersion + "." + tinymce.minorVersion\r
- };\r
- },\r
-\r
- // Private methods\r
-\r
- _buildObj : function(o, n) {\r
- var ob, ed = this.editor, dom = ed.dom, p = this._parse(n.title);\r
-\r
- p.width = o.width = dom.getAttrib(n, 'width') || 100;\r
- p.height = o.height = dom.getAttrib(n, 'height') || 100;\r
-\r
- ob = dom.create('span', {\r
- mce_name : 'object',\r
- classid : "clsid:" + o.classid,\r
- codebase : o.codebase,\r
- width : o.width,\r
- height : o.height\r
- });\r
-\r
- if (p.src)\r
- p.src = ed.convertURL(p.src, 'src', n);\r
-\r
- each (p, function(v, k) {\r
- if (!/^(width|height|codebase|classid)$/.test(k)) {\r
- // Use url instead of src in IE for Windows media\r
- if (o.type == 'application/x-mplayer2' && k == 'src')\r
- k = 'url';\r
-\r
- dom.add(ob, 'span', {mce_name : 'param', name : k, '_value' : v});\r
- }\r
- });\r
-\r
- dom.add(ob, 'span', tinymce.extend({mce_name : 'embed', type : o.type}, p));\r
-\r
- return ob;\r
- },\r
-\r
- _spansToImgs : function(p) {\r
- var t = this, dom = t.editor.dom, im, ci;\r
-\r
- each(dom.select('span', p), function(n) {\r
- // Convert object into image\r
- if (dom.getAttrib(n, 'class') == 'mceItemObject') {\r
- ci = dom.getAttrib(n, "classid").toLowerCase().replace(/\s+/g, '');\r
-\r
- switch (ci) {\r
- case 'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000':\r
- dom.replace(t._createImg('mceItemFlash', n), n);\r
- break;\r
-\r
- case 'clsid:166b1bca-3f9c-11cf-8075-444553540000':\r
- dom.replace(t._createImg('mceItemShockWave', n), n);\r
- break;\r
-\r
- case 'clsid:6bf52a52-394a-11d3-b153-00c04f79faa6':\r
- case 'clsid:22d6f312-b0f6-11d0-94ab-0080c74c7e95':\r
- case 'clsid:05589fa1-c356-11ce-bf01-00aa0055595a':\r
- dom.replace(t._createImg('mceItemWindowsMedia', n), n);\r
- break;\r
-\r
- case 'clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b':\r
- dom.replace(t._createImg('mceItemQuickTime', n), n);\r
- break;\r
-\r
- case 'clsid:cfcdaa03-8be4-11cf-b84b-0020afbbccfa':\r
- dom.replace(t._createImg('mceItemRealMedia', n), n);\r
- break;\r
-\r
- default:\r
- dom.replace(t._createImg('mceItemFlash', n), n);\r
- }\r
- \r
- return;\r
- }\r
-\r
- // Convert embed into image\r
- if (dom.getAttrib(n, 'class') == 'mceItemEmbed') {\r
- switch (dom.getAttrib(n, 'type')) {\r
- case 'application/x-shockwave-flash':\r
- dom.replace(t._createImg('mceItemFlash', n), n);\r
- break;\r
-\r
- case 'application/x-director':\r
- dom.replace(t._createImg('mceItemShockWave', n), n);\r
- break;\r
-\r
- case 'application/x-mplayer2':\r
- dom.replace(t._createImg('mceItemWindowsMedia', n), n);\r
- break;\r
-\r
- case 'video/quicktime':\r
- dom.replace(t._createImg('mceItemQuickTime', n), n);\r
- break;\r
-\r
- case 'audio/x-pn-realaudio-plugin':\r
- dom.replace(t._createImg('mceItemRealMedia', n), n);\r
- break;\r
-\r
- default:\r
- dom.replace(t._createImg('mceItemFlash', n), n);\r
- }\r
- } \r
- });\r
- },\r
-\r
- _createImg : function(cl, n) {\r
- var im, dom = this.editor.dom, pa = {}, ti = '';\r
-\r
- // Create image\r
- im = dom.create('img', {\r
- src : this.url + '/img/trans.gif',\r
- width : dom.getAttrib(n, 'width') || 100,\r
- height : dom.getAttrib(n, 'height') || 100,\r
- 'class' : cl\r
- });\r
-\r
- // Setup base parameters\r
- each(['id', 'name', 'width', 'height', 'bgcolor', 'align', 'flashvars', 'src', 'wmode'], function(na) {\r
- var v = dom.getAttrib(n, na);\r
-\r
- if (v)\r
- pa[na] = v;\r
- });\r
-\r
- // Add optional parameters\r
- each(dom.select('span', n), function(n) {\r
- if (dom.hasClass(n, 'mceItemParam'))\r
- pa[dom.getAttrib(n, 'name')] = dom.getAttrib(n, '_value');\r
- });\r
-\r
- // Use src not movie\r
- if (pa.movie) {\r
- pa.src = pa.movie;\r
- delete pa.movie;\r
- }\r
-\r
- delete pa.width;\r
- delete pa.height;\r
-\r
- im.title = this._serialize(pa);\r
-\r
- return im;\r
- },\r
-\r
- _parse : function(s) {\r
- return tinymce.util.JSON.parse('{' + s + '}');\r
- },\r
-\r
- _serialize : function(o) {\r
- return tinymce.util.JSON.serialize(o).replace(/[{}]/g, '');\r
- }\r
- });\r
-\r
- // Register plugin\r
- tinymce.PluginManager.add('media', tinymce.plugins.MediaPlugin);\r
-})();
\ No newline at end of file
+++ /dev/null
-/**\r
- * This script contains embed functions for common plugins. This scripts are complety free to use for any purpose.\r
- */\r
-\r
-function writeFlash(p) {\r
- writeEmbed(\r
- 'D27CDB6E-AE6D-11cf-96B8-444553540000',\r
- 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',\r
- 'application/x-shockwave-flash',\r
- p\r
- );\r
-}\r
-\r
-function writeShockWave(p) {\r
- writeEmbed(\r
- '166B1BCA-3F9C-11CF-8075-444553540000',\r
- 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0',\r
- 'application/x-director',\r
- p\r
- );\r
-}\r
-\r
-function writeQuickTime(p) {\r
- writeEmbed(\r
- '02BF25D5-8C17-4B23-BC80-D3488ABDDC6B',\r
- 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0',\r
- 'video/quicktime',\r
- p\r
- );\r
-}\r
-\r
-function writeRealMedia(p) {\r
- writeEmbed(\r
- 'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA',\r
- 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',\r
- 'audio/x-pn-realaudio-plugin',\r
- p\r
- );\r
-}\r
-\r
-function writeWindowsMedia(p) {\r
- p.url = p.src;\r
- writeEmbed(\r
- '6BF52A52-394A-11D3-B153-00C04F79FAA6',\r
- 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701',\r
- 'application/x-mplayer2',\r
- p\r
- );\r
-}\r
-\r
-function writeEmbed(cls, cb, mt, p) {\r
- var h = '', n;\r
-\r
- h += '<object classid="clsid:' + cls + '" codebase="' + cb + '"';\r
- h += typeof(p.id) != "undefined" ? 'id="' + p.id + '"' : '';\r
- h += typeof(p.name) != "undefined" ? 'name="' + p.name + '"' : '';\r
- h += typeof(p.width) != "undefined" ? 'width="' + p.width + '"' : '';\r
- h += typeof(p.height) != "undefined" ? 'height="' + p.height + '"' : '';\r
- h += typeof(p.align) != "undefined" ? 'align="' + p.align + '"' : '';\r
- h += '>';\r
-\r
- for (n in p)\r
- h += '<param name="' + n + '" value="' + p[n] + '">';\r
-\r
- h += '<embed type="' + mt + '"';\r
-\r
- for (n in p)\r
- h += n + '="' + p[n] + '" ';\r
-\r
- h += '></embed></object>';\r
-\r
- document.write(h);\r
-}\r
+++ /dev/null
-tinyMCEPopup.requireLangPack();\r
-\r
-var oldWidth, oldHeight, ed, url;\r
-\r
-if (url = tinyMCEPopup.getParam("media_external_list_url"))\r
- document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>');\r
-\r
-function init() {\r
- var pl = "", f, val;\r
- var type = "flash", fe, i;\r
-\r
- ed = tinyMCEPopup.editor;\r
-\r
- tinyMCEPopup.resizeToInnerSize();\r
- f = document.forms[0]\r
-\r
- fe = ed.selection.getNode();\r
- if (/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(ed.dom.getAttrib(fe, 'class'))) {\r
- pl = fe.title;\r
-\r
- switch (ed.dom.getAttrib(fe, 'class')) {\r
- case 'mceItemFlash':\r
- type = 'flash';\r
- break;\r
-\r
- case 'mceItemFlashVideo':\r
- type = 'flv';\r
- break;\r
-\r
- case 'mceItemShockWave':\r
- type = 'shockwave';\r
- break;\r
-\r
- case 'mceItemWindowsMedia':\r
- type = 'wmp';\r
- break;\r
-\r
- case 'mceItemQuickTime':\r
- type = 'qt';\r
- break;\r
-\r
- case 'mceItemRealMedia':\r
- type = 'rmp';\r
- break;\r
- }\r
-\r
- document.forms[0].insert.value = ed.getLang('update', 'Insert', true); \r
- }\r
-\r
- document.getElementById('filebrowsercontainer').innerHTML = getBrowserHTML('filebrowser','src','media','media');\r
- document.getElementById('qtsrcfilebrowsercontainer').innerHTML = getBrowserHTML('qtsrcfilebrowser','qt_qtsrc','media','media');\r
- document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');\r
-\r
- var html = getMediaListHTML('medialist','src','media','media');\r
- if (html == "")\r
- document.getElementById("linklistrow").style.display = 'none';\r
- else\r
- document.getElementById("linklistcontainer").innerHTML = html;\r
-\r
- // Resize some elements\r
- if (isVisible('filebrowser'))\r
- document.getElementById('src').style.width = '230px';\r
-\r
- // Setup form\r
- if (pl != "") {\r
- pl = tinyMCEPopup.editor.plugins.media._parse(pl);\r
-\r
- switch (type) {\r
- case "flash":\r
- setBool(pl, 'flash', 'play');\r
- setBool(pl, 'flash', 'loop');\r
- setBool(pl, 'flash', 'menu');\r
- setBool(pl, 'flash', 'swliveconnect');\r
- setStr(pl, 'flash', 'quality');\r
- setStr(pl, 'flash', 'scale');\r
- setStr(pl, 'flash', 'salign');\r
- setStr(pl, 'flash', 'wmode');\r
- setStr(pl, 'flash', 'base');\r
- setStr(pl, 'flash', 'flashvars');\r
- break;\r
-\r
- case "qt":\r
- setBool(pl, 'qt', 'loop');\r
- setBool(pl, 'qt', 'autoplay');\r
- setBool(pl, 'qt', 'cache');\r
- setBool(pl, 'qt', 'controller');\r
- setBool(pl, 'qt', 'correction');\r
- setBool(pl, 'qt', 'enablejavascript');\r
- setBool(pl, 'qt', 'kioskmode');\r
- setBool(pl, 'qt', 'autohref');\r
- setBool(pl, 'qt', 'playeveryframe');\r
- setBool(pl, 'qt', 'tarsetcache');\r
- setStr(pl, 'qt', 'scale');\r
- setStr(pl, 'qt', 'starttime');\r
- setStr(pl, 'qt', 'endtime');\r
- setStr(pl, 'qt', 'tarset');\r
- setStr(pl, 'qt', 'qtsrcchokespeed');\r
- setStr(pl, 'qt', 'volume');\r
- setStr(pl, 'qt', 'qtsrc');\r
- break;\r
-\r
- case "shockwave":\r
- setBool(pl, 'shockwave', 'sound');\r
- setBool(pl, 'shockwave', 'progress');\r
- setBool(pl, 'shockwave', 'autostart');\r
- setBool(pl, 'shockwave', 'swliveconnect');\r
- setStr(pl, 'shockwave', 'swvolume');\r
- setStr(pl, 'shockwave', 'swstretchstyle');\r
- setStr(pl, 'shockwave', 'swstretchhalign');\r
- setStr(pl, 'shockwave', 'swstretchvalign');\r
- break;\r
-\r
- case "wmp":\r
- setBool(pl, 'wmp', 'autostart');\r
- setBool(pl, 'wmp', 'enabled');\r
- setBool(pl, 'wmp', 'enablecontextmenu');\r
- setBool(pl, 'wmp', 'fullscreen');\r
- setBool(pl, 'wmp', 'invokeurls');\r
- setBool(pl, 'wmp', 'mute');\r
- setBool(pl, 'wmp', 'stretchtofit');\r
- setBool(pl, 'wmp', 'windowlessvideo');\r
- setStr(pl, 'wmp', 'balance');\r
- setStr(pl, 'wmp', 'baseurl');\r
- setStr(pl, 'wmp', 'captioningid');\r
- setStr(pl, 'wmp', 'currentmarker');\r
- setStr(pl, 'wmp', 'currentposition');\r
- setStr(pl, 'wmp', 'defaultframe');\r
- setStr(pl, 'wmp', 'playcount');\r
- setStr(pl, 'wmp', 'rate');\r
- setStr(pl, 'wmp', 'uimode');\r
- setStr(pl, 'wmp', 'volume');\r
- break;\r
-\r
- case "rmp":\r
- setBool(pl, 'rmp', 'autostart');\r
- setBool(pl, 'rmp', 'loop');\r
- setBool(pl, 'rmp', 'autogotourl');\r
- setBool(pl, 'rmp', 'center');\r
- setBool(pl, 'rmp', 'imagestatus');\r
- setBool(pl, 'rmp', 'maintainaspect');\r
- setBool(pl, 'rmp', 'nojava');\r
- setBool(pl, 'rmp', 'prefetch');\r
- setBool(pl, 'rmp', 'shuffle');\r
- setStr(pl, 'rmp', 'console');\r
- setStr(pl, 'rmp', 'controls');\r
- setStr(pl, 'rmp', 'numloop');\r
- setStr(pl, 'rmp', 'scriptcallbacks');\r
- break;\r
- }\r
-\r
- setStr(pl, null, 'src');\r
- setStr(pl, null, 'id');\r
- setStr(pl, null, 'name');\r
- setStr(pl, null, 'vspace');\r
- setStr(pl, null, 'hspace');\r
- setStr(pl, null, 'bgcolor');\r
- setStr(pl, null, 'align');\r
- setStr(pl, null, 'width');\r
- setStr(pl, null, 'height');\r
-\r
- if ((val = ed.dom.getAttrib(fe, "width")) != "")\r
- pl.width = f.width.value = val;\r
-\r
- if ((val = ed.dom.getAttrib(fe, "height")) != "")\r
- pl.height = f.height.value = val;\r
-\r
- oldWidth = pl.width ? parseInt(pl.width) : 0;\r
- oldHeight = pl.height ? parseInt(pl.height) : 0;\r
- } else\r
- oldWidth = oldHeight = 0;\r
-\r
- selectByValue(f, 'media_type', type);\r
- changedType(type);\r
- updateColor('bgcolor_pick', 'bgcolor');\r
-\r
- TinyMCE_EditableSelects.init();\r
- generatePreview();\r
-}\r
-\r
-function insertMedia() {\r
- var fe, f = document.forms[0], h;\r
-\r
- tinyMCEPopup.restoreSelection();\r
-\r
- if (!AutoValidator.validate(f)) {\r
- tinyMCEPopup.alert(ed.getLang('invalid_data'));\r
- return false;\r
- }\r
-\r
- f.width.value = f.width.value == "" ? 100 : f.width.value;\r
- f.height.value = f.height.value == "" ? 100 : f.height.value;\r
-\r
- fe = ed.selection.getNode();\r
- if (fe != null && /mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(ed.dom.getAttrib(fe, 'class'))) {\r
- switch (f.media_type.options[f.media_type.selectedIndex].value) {\r
- case "flash":\r
- fe.className = "mceItemFlash";\r
- break;\r
-\r
- case "flv":\r
- fe.className = "mceItemFlashVideo";\r
- break;\r
-\r
- case "shockwave":\r
- fe.className = "mceItemShockWave";\r
- break;\r
-\r
- case "qt":\r
- fe.className = "mceItemQuickTime";\r
- break;\r
-\r
- case "wmp":\r
- fe.className = "mceItemWindowsMedia";\r
- break;\r
-\r
- case "rmp":\r
- fe.className = "mceItemRealMedia";\r
- break;\r
- }\r
-\r
- if (fe.width != f.width.value || fe.height != f.height.height)\r
- ed.execCommand('mceRepaint');\r
-\r
- fe.title = serializeParameters();\r
- fe.width = f.width.value;\r
- fe.height = f.height.value;\r
- fe.style.width = f.width.value + (f.width.value.indexOf('%') == -1 ? 'px' : '');\r
- fe.style.height = f.height.value + (f.height.value.indexOf('%') == -1 ? 'px' : '');\r
- fe.align = f.align.options[f.align.selectedIndex].value;\r
- } else {\r
- h = '<img src="' + tinyMCEPopup.getWindowArg("plugin_url") + '/img/trans.gif"' ;\r
-\r
- switch (f.media_type.options[f.media_type.selectedIndex].value) {\r
- case "flash":\r
- h += ' class="mceItemFlash"';\r
- break;\r
-\r
- case "flv":\r
- h += ' class="mceItemFlashVideo"';\r
- break;\r
-\r
- case "shockwave":\r
- h += ' class="mceItemShockWave"';\r
- break;\r
-\r
- case "qt":\r
- h += ' class="mceItemQuickTime"';\r
- break;\r
-\r
- case "wmp":\r
- h += ' class="mceItemWindowsMedia"';\r
- break;\r
-\r
- case "rmp":\r
- h += ' class="mceItemRealMedia"';\r
- break;\r
- }\r
-\r
- h += ' title="' + serializeParameters() + '"';\r
- h += ' width="' + f.width.value + '"';\r
- h += ' height="' + f.height.value + '"';\r
- h += ' align="' + f.align.options[f.align.selectedIndex].value + '"';\r
-\r
- h += ' />';\r
-\r
- ed.execCommand('mceInsertContent', false, h);\r
- }\r
-\r
- tinyMCEPopup.close();\r
-}\r
-\r
-function updatePreview() {\r
- var f = document.forms[0], type;\r
-\r
- f.width.value = f.width.value || '320';\r
- f.height.value = f.height.value || '240';\r
-\r
- type = getType(f.src.value);\r
- selectByValue(f, 'media_type', type);\r
- changedType(type);\r
- generatePreview();\r
-}\r
-\r
-function getMediaListHTML() {\r
- if (typeof(tinyMCEMediaList) != "undefined" && tinyMCEMediaList.length > 0) {\r
- var html = "";\r
-\r
- html += '<select id="linklist" name="linklist" style="width: 250px" onchange="this.form.src.value=this.options[this.selectedIndex].value;updatePreview();">';\r
- html += '<option value="">---</option>';\r
-\r
- for (var i=0; i<tinyMCEMediaList.length; i++)\r
- html += '<option value="' + tinyMCEMediaList[i][1] + '">' + tinyMCEMediaList[i][0] + '</option>';\r
-\r
- html += '</select>';\r
-\r
- return html;\r
- }\r
-\r
- return "";\r
-}\r
-\r
-function getType(v) {\r
- var fo, i, c, el, x, f = document.forms[0];\r
-\r
- fo = ed.getParam("media_types", "flash=swf;flv=flv;shockwave=dcr;qt=mov,qt,mpg,mp3,mp4,mpeg;shockwave=dcr;wmp=avi,wmv,wm,asf,asx,wmx,wvx;rmp=rm,ra,ram").split(';');\r
-\r
- // YouTube\r
- if (v.match(/watch\?v=(.+)(.*)/)) {\r
- f.width.value = '425';\r
- f.height.value = '350';\r
- f.src.value = 'http://www.youtube.com/v/' + v.match(/v=(.*)(.*)/)[0].split('=')[1];\r
- return 'flash';\r
- }\r
-\r
- // Google video\r
- if (v.indexOf('http://video.google.com/videoplay?docid=') == 0) {\r
- f.width.value = '425';\r
- f.height.value = '326';\r
- f.src.value = 'http://video.google.com/googleplayer.swf?docId=' + v.substring('http://video.google.com/videoplay?docid='.length) + '&hl=en';\r
- return 'flash';\r
- }\r
-\r
- for (i=0; i<fo.length; i++) {\r
- c = fo[i].split('=');\r
-\r
- el = c[1].split(',');\r
- for (x=0; x<el.length; x++)\r
- if (v.indexOf('.' + el[x]) != -1)\r
- return c[0];\r
- }\r
-\r
- return null;\r
-}\r
-\r
-function switchType(v) {\r
- var t = getType(v), d = document, f = d.forms[0];\r
-\r
- if (!t)\r
- return;\r
-\r
- selectByValue(d.forms[0], 'media_type', t);\r
- changedType(t);\r
-\r
- // Update qtsrc also\r
- if (t == 'qt' && f.src.value.toLowerCase().indexOf('rtsp://') != -1) {\r
- alert(ed.getLang("media_qt_stream_warn"));\r
-\r
- if (f.qt_qtsrc.value == '')\r
- f.qt_qtsrc.value = f.src.value;\r
- }\r
-}\r
-\r
-function changedType(t) {\r
- var d = document;\r
-\r
- d.getElementById('flash_options').style.display = 'none';\r
- d.getElementById('flv_options').style.display = 'none';\r
- d.getElementById('qt_options').style.display = 'none';\r
- d.getElementById('shockwave_options').style.display = 'none';\r
- d.getElementById('wmp_options').style.display = 'none';\r
- d.getElementById('rmp_options').style.display = 'none';\r
- d.getElementById(t + '_options').style.display = 'block';\r
-}\r
-\r
-function serializeParameters() {\r
- var d = document, f = d.forms[0], s = '';\r
-\r
- switch (f.media_type.options[f.media_type.selectedIndex].value) {\r
- case "flash":\r
- s += getBool('flash', 'play', true);\r
- s += getBool('flash', 'loop', true);\r
- s += getBool('flash', 'menu', true);\r
- s += getBool('flash', 'swliveconnect', false);\r
- s += getStr('flash', 'quality');\r
- s += getStr('flash', 'scale');\r
- s += getStr('flash', 'salign');\r
- s += getStr('flash', 'wmode');\r
- s += getStr('flash', 'base');\r
- s += getStr('flash', 'flashvars');\r
- break;\r
-\r
- case "qt":\r
- s += getBool('qt', 'loop', false);\r
- s += getBool('qt', 'autoplay', true);\r
- s += getBool('qt', 'cache', false);\r
- s += getBool('qt', 'controller', true);\r
- s += getBool('qt', 'correction', false, 'none', 'full');\r
- s += getBool('qt', 'enablejavascript', false);\r
- s += getBool('qt', 'kioskmode', false);\r
- s += getBool('qt', 'autohref', false);\r
- s += getBool('qt', 'playeveryframe', false);\r
- s += getBool('qt', 'targetcache', false);\r
- s += getStr('qt', 'scale');\r
- s += getStr('qt', 'starttime');\r
- s += getStr('qt', 'endtime');\r
- s += getStr('qt', 'target');\r
- s += getStr('qt', 'qtsrcchokespeed');\r
- s += getStr('qt', 'volume');\r
- s += getStr('qt', 'qtsrc');\r
- break;\r
-\r
- case "shockwave":\r
- s += getBool('shockwave', 'sound');\r
- s += getBool('shockwave', 'progress');\r
- s += getBool('shockwave', 'autostart');\r
- s += getBool('shockwave', 'swliveconnect');\r
- s += getStr('shockwave', 'swvolume');\r
- s += getStr('shockwave', 'swstretchstyle');\r
- s += getStr('shockwave', 'swstretchhalign');\r
- s += getStr('shockwave', 'swstretchvalign');\r
- break;\r
-\r
- case "wmp":\r
- s += getBool('wmp', 'autostart', true);\r
- s += getBool('wmp', 'enabled', false);\r
- s += getBool('wmp', 'enablecontextmenu', true);\r
- s += getBool('wmp', 'fullscreen', false);\r
- s += getBool('wmp', 'invokeurls', true);\r
- s += getBool('wmp', 'mute', false);\r
- s += getBool('wmp', 'stretchtofit', false);\r
- s += getBool('wmp', 'windowlessvideo', false);\r
- s += getStr('wmp', 'balance');\r
- s += getStr('wmp', 'baseurl');\r
- s += getStr('wmp', 'captioningid');\r
- s += getStr('wmp', 'currentmarker');\r
- s += getStr('wmp', 'currentposition');\r
- s += getStr('wmp', 'defaultframe');\r
- s += getStr('wmp', 'playcount');\r
- s += getStr('wmp', 'rate');\r
- s += getStr('wmp', 'uimode');\r
- s += getStr('wmp', 'volume');\r
- break;\r
-\r
- case "rmp":\r
- s += getBool('rmp', 'autostart', false);\r
- s += getBool('rmp', 'loop', false);\r
- s += getBool('rmp', 'autogotourl', true);\r
- s += getBool('rmp', 'center', false);\r
- s += getBool('rmp', 'imagestatus', true);\r
- s += getBool('rmp', 'maintainaspect', false);\r
- s += getBool('rmp', 'nojava', false);\r
- s += getBool('rmp', 'prefetch', false);\r
- s += getBool('rmp', 'shuffle', false);\r
- s += getStr('rmp', 'console');\r
- s += getStr('rmp', 'controls');\r
- s += getStr('rmp', 'numloop');\r
- s += getStr('rmp', 'scriptcallbacks');\r
- break;\r
- }\r
-\r
- s += getStr(null, 'id');\r
- s += getStr(null, 'name');\r
- s += getStr(null, 'src');\r
- s += getStr(null, 'align');\r
- s += getStr(null, 'bgcolor');\r
- s += getInt(null, 'vspace');\r
- s += getInt(null, 'hspace');\r
- s += getStr(null, 'width');\r
- s += getStr(null, 'height');\r
-\r
- s = s.length > 0 ? s.substring(0, s.length - 1) : s;\r
-\r
- return s;\r
-}\r
-\r
-function setBool(pl, p, n) {\r
- if (typeof(pl[n]) == "undefined")\r
- return;\r
-\r
- document.forms[0].elements[p + "_" + n].checked = pl[n];\r
-}\r
-\r
-function setStr(pl, p, n) {\r
- var f = document.forms[0], e = f.elements[(p != null ? p + "_" : '') + n];\r
-\r
- if (typeof(pl[n]) == "undefined")\r
- return;\r
-\r
- if (e.type == "text")\r
- e.value = pl[n];\r
- else\r
- selectByValue(f, (p != null ? p + "_" : '') + n, pl[n]);\r
-}\r
-\r
-function getBool(p, n, d, tv, fv) {\r
- var v = document.forms[0].elements[p + "_" + n].checked;\r
-\r
- tv = typeof(tv) == 'undefined' ? 'true' : "'" + jsEncode(tv) + "'";\r
- fv = typeof(fv) == 'undefined' ? 'false' : "'" + jsEncode(fv) + "'";\r
-\r
- return (v == d) ? '' : n + (v ? ':' + tv + ',' : ':' + fv + ',');\r
-}\r
-\r
-function getStr(p, n, d) {\r
- var e = document.forms[0].elements[(p != null ? p + "_" : "") + n];\r
- var v = e.type == "text" ? e.value : e.options[e.selectedIndex].value;\r
-\r
- if (n == 'src')\r
- v = tinyMCEPopup.editor.convertURL(v, 'src', null);\r
-\r
- return ((n == d || v == '') ? '' : n + ":'" + jsEncode(v) + "',");\r
-}\r
-\r
-function getInt(p, n, d) {\r
- var e = document.forms[0].elements[(p != null ? p + "_" : "") + n];\r
- var v = e.type == "text" ? e.value : e.options[e.selectedIndex].value;\r
-\r
- return ((n == d || v == '') ? '' : n + ":" + v.replace(/[^0-9]+/g, '') + ",");\r
-}\r
-\r
-function jsEncode(s) {\r
- s = s.replace(new RegExp('\\\\', 'g'), '\\\\');\r
- s = s.replace(new RegExp('"', 'g'), '\\"');\r
- s = s.replace(new RegExp("'", 'g'), "\\'");\r
-\r
- return s;\r
-}\r
-\r
-function generatePreview(c) {\r
- var f = document.forms[0], p = document.getElementById('prev'), h = '', cls, pl, n, type, codebase, wp, hp, nw, nh;\r
-\r
- p.innerHTML = '<!-- x --->';\r
-\r
- nw = parseInt(f.width.value);\r
- nh = parseInt(f.height.value);\r
-\r
- if (f.width.value != "" && f.height.value != "") {\r
- if (f.constrain.checked) {\r
- if (c == 'width' && oldWidth != 0) {\r
- wp = nw / oldWidth;\r
- nh = Math.round(wp * nh);\r
- f.height.value = nh;\r
- } else if (c == 'height' && oldHeight != 0) {\r
- hp = nh / oldHeight;\r
- nw = Math.round(hp * nw);\r
- f.width.value = nw;\r
- }\r
- }\r
- }\r
-\r
- if (f.width.value != "")\r
- oldWidth = nw;\r
-\r
- if (f.height.value != "")\r
- oldHeight = nh;\r
-\r
- // After constrain\r
- pl = serializeParameters();\r
-\r
- switch (f.media_type.options[f.media_type.selectedIndex].value) {\r
- case "flash":\r
- cls = 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000';\r
- codebase = 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';\r
- type = 'application/x-shockwave-flash';\r
- break;\r
-\r
- case "shockwave":\r
- cls = 'clsid:166B1BCA-3F9C-11CF-8075-444553540000';\r
- codebase = 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0';\r
- type = 'application/x-director';\r
- break;\r
-\r
- case "qt":\r
- cls = 'clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B';\r
- codebase = 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0';\r
- type = 'video/quicktime';\r
- break;\r
-\r
- case "wmp":\r
- cls = ed.getParam('media_wmp6_compatible') ? 'clsid:05589FA1-C356-11CE-BF01-00AA0055595A' : 'clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6';\r
- codebase = 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701';\r
- type = 'application/x-mplayer2';\r
- break;\r
-\r
- case "rmp":\r
- cls = 'clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA';\r
- codebase = 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701';\r
- type = 'audio/x-pn-realaudio-plugin';\r
- break;\r
- }\r
-\r
- if (pl == '') {\r
- p.innerHTML = '';\r
- return;\r
- }\r
-\r
- pl = tinyMCEPopup.editor.plugins.media._parse(pl);\r
-\r
- if (!pl.src) {\r
- p.innerHTML = '';\r
- return;\r
- }\r
-\r
- pl.src = tinyMCEPopup.editor.documentBaseURI.toAbsolute(pl.src);\r
- pl.width = !pl.width ? 100 : pl.width;\r
- pl.height = !pl.height ? 100 : pl.height;\r
- pl.id = !pl.id ? 'obj' : pl.id;\r
- pl.name = !pl.name ? 'eobj' : pl.name;\r
- pl.align = !pl.align ? '' : pl.align;\r
-\r
- // Avoid annoying warning about insecure items\r
- if (!tinymce.isIE || document.location.protocol != 'https:') {\r
- h += '<object classid="clsid:' + cls + '" codebase="' + codebase + '" width="' + pl.width + '" height="' + pl.height + '" id="' + pl.id + '" name="' + pl.name + '" align="' + pl.align + '">';\r
-\r
- for (n in pl) {\r
- h += '<param name="' + n + '" value="' + pl[n] + '">';\r
-\r
- // Add extra url parameter if it's an absolute URL\r
- if (n == 'src' && pl[n].indexOf('://') != -1)\r
- h += '<param name="url" value="' + pl[n] + '" />';\r
- }\r
- }\r
-\r
- h += '<embed type="' + type + '" ';\r
-\r
- for (n in pl)\r
- h += n + '="' + pl[n] + '" ';\r
-\r
- h += '></embed>';\r
-\r
- // Avoid annoying warning about insecure items\r
- if (!tinymce.isIE || document.location.protocol != 'https:')\r
- h += '</object>';\r
-\r
- p.innerHTML = "<!-- x --->" + h;\r
-}\r
-\r
-tinyMCEPopup.onInit.add(init);\r
+++ /dev/null
-tinyMCE.addI18n('en.media_dlg',{\r
-title:"Insert / edit embedded media",\r
-general:"General",\r
-advanced:"Advanced",\r
-file:"File/URL",\r
-list:"List",\r
-size:"Dimensions",\r
-preview:"Preview",\r
-constrain_proportions:"Constrain proportions",\r
-type:"Type",\r
-id:"Id",\r
-name:"Name",\r
-class_name:"Class",\r
-vspace:"V-Space",\r
-hspace:"H-Space",\r
-play:"Auto play",\r
-loop:"Loop",\r
-menu:"Show menu",\r
-quality:"Quality",\r
-scale:"Scale",\r
-align:"Align",\r
-salign:"SAlign",\r
-wmode:"WMode",\r
-bgcolor:"Background",\r
-base:"Base",\r
-flashvars:"Flashvars",\r
-liveconnect:"SWLiveConnect",\r
-autohref:"AutoHREF",\r
-cache:"Cache",\r
-hidden:"Hidden",\r
-controller:"Controller",\r
-kioskmode:"Kiosk mode",\r
-playeveryframe:"Play every frame",\r
-targetcache:"Target cache",\r
-correction:"No correction",\r
-enablejavascript:"Enable JavaScript",\r
-starttime:"Start time",\r
-endtime:"End time",\r
-href:"Href",\r
-qtsrcchokespeed:"Choke speed",\r
-target:"Target",\r
-volume:"Volume",\r
-autostart:"Auto start",\r
-enabled:"Enabled",\r
-fullscreen:"Fullscreen",\r
-invokeurls:"Invoke URLs",\r
-mute:"Mute",\r
-stretchtofit:"Stretch to fit",\r
-windowlessvideo:"Windowless video",\r
-balance:"Balance",\r
-baseurl:"Base URL",\r
-captioningid:"Captioning id",\r
-currentmarker:"Current marker",\r
-currentposition:"Current position",\r
-defaultframe:"Default frame",\r
-playcount:"Play count",\r
-rate:"Rate",\r
-uimode:"UI Mode",\r
-flash_options:"Flash options",\r
-qt_options:"Quicktime options",\r
-wmp_options:"Windows media player options",\r
-rmp_options:"Real media player options",\r
-shockwave_options:"Shockwave options",\r
-autogotourl:"Auto goto URL",\r
-center:"Center",\r
-imagestatus:"Image status",\r
-maintainaspect:"Maintain aspect",\r
-nojava:"No java",\r
-prefetch:"Prefetch",\r
-shuffle:"Shuffle",\r
-console:"Console",\r
-numloop:"Num loops",\r
-controls:"Controls",\r
-scriptcallbacks:"Script callbacks",\r
-swstretchstyle:"Stretch style",\r
-swstretchhalign:"Stretch H-Align",\r
-swstretchvalign:"Stretch V-Align",\r
-sound:"Sound",\r
-progress:"Progress",\r
-qtsrc:"QT Src",\r
-qt_stream_warn:"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\nYou should also add a non streamed version to the Src field..",\r
-align_top:"Top",\r
-align_right:"Right",\r
-align_bottom:"Bottom",\r
-align_left:"Left",\r
-align_center:"Center",\r
-align_top_left:"Top left",\r
-align_top_right:"Top right",\r
-align_bottom_left:"Bottom left",\r
-align_bottom_right:"Bottom right",\r
-flv_options:"Flash video options",\r
-flv_scalemode:"Scale mode",\r
-flv_buffer:"Buffer",\r
-flv_startimage:"Start image",\r
-flv_starttime:"Start time",\r
-flv_defaultvolume:"Default volumne",\r
-flv_hiddengui:"Hidden GUI",\r
-flv_autostart:"Auto start",\r
-flv_loop:"Loop",\r
-flv_showscalemodes:"Show scale modes",\r
-flv_smoothvideo:"Smooth video",\r
-flv_jscallback:"JS Callback"\r
-});
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
- <title>{#media_dlg.title}</title>\r
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
- <script type="text/javascript" src="js/media.js"></script>\r
- <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
- <script type="text/javascript" src="../../utils/validate.js"></script>\r
- <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
- <script type="text/javascript" src="../../utils/editable_selects.js"></script>\r
- <link href="css/media.css" rel="stylesheet" type="text/css" />\r
- <base target="_self" />\r
-</head>\r
-<body style="display: none">\r
- <form onsubmit="insertMedia();return false;" action="#">\r
- <div class="tabs">\r
- <ul>\r
- <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');generatePreview();" onmousedown="return false;">{#media_dlg.general}</a></span></li>\r
- <li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#media_dlg.advanced}</a></span></li>\r
- </ul>\r
- </div>\r
-\r
- <div class="panel_wrapper">\r
- <div id="general_panel" class="panel current">\r
- <fieldset>\r
- <legend>{#media_dlg.general}</legend>\r
-\r
- <table border="0" cellpadding="4" cellspacing="0">\r
- <tr>\r
- <td><label for="media_type">{#media_dlg.type}</label></td>\r
- <td>\r
- <select id="media_type" name="media_type" onchange="changedType(this.value);generatePreview();">\r
- <option value="flash">Flash</option>\r
- <!-- <option value="flv">Flash video (FLV)</option> -->\r
- <option value="qt">Quicktime</option>\r
- <option value="shockwave">Shockwave</option>\r
- <option value="wmp">Windows Media</option>\r
- <option value="rmp">Real Media</option>\r
- </select>\r
- </td>\r
- </tr>\r
- <tr>\r
- <td><label for="src">{#media_dlg.file}</label></td>\r
- <td>\r
- <table border="0" cellspacing="0" cellpadding="0">\r
- <tr>\r
- <td><input id="src" name="src" type="text" value="" class="mceFocus" onchange="switchType(this.value);generatePreview();" /></td>\r
- <td id="filebrowsercontainer"> </td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
- <tr id="linklistrow">\r
- <td><label for="linklist">{#media_dlg.list}</label></td>\r
- <td id="linklistcontainer"> </td>\r
- </tr>\r
- <tr>\r
- <td><label for="width">{#media_dlg.size}</label></td>\r
- <td>\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input type="text" id="width" name="width" value="" class="size" onchange="generatePreview('width');" /> x <input type="text" id="height" name="height" value="" class="size" onchange="generatePreview('height');" /></td>\r
- <td> <input id="constrain" type="checkbox" name="constrain" class="checkbox" /></td>\r
- <td><label id="constrainlabel" for="constrain">{#media_dlg.constrain_proportions}</label></td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
- </table>\r
- </fieldset>\r
-\r
- <fieldset>\r
- <legend>{#media_dlg.preview}</legend>\r
- <div id="prev"></div>\r
- </fieldset>\r
- </div>\r
-\r
- <div id="advanced_panel" class="panel">\r
- <fieldset>\r
- <legend>{#media_dlg.advanced}</legend>\r
-\r
- <table border="0" cellpadding="4" cellspacing="0" width="100%">\r
- <tr>\r
- <td><label for="id">{#media_dlg.id}</label></td>\r
- <td><input type="text" id="id" name="id" onchange="generatePreview();" /></td>\r
- <td><label for="name">{#media_dlg.name}</label></td>\r
- <td><input type="text" id="name" name="name" onchange="generatePreview();" /></td>\r
- </tr>\r
-\r
- <tr>\r
- <td><label for="align">{#media_dlg.align}</label></td>\r
- <td>\r
- <select id="align" name="align" onchange="generatePreview();">\r
- <option value="">{#not_set}</option> \r
- <option value="top">{#media_dlg.align_top}</option>\r
- <option value="right">{#media_dlg.align_right}</option>\r
- <option value="bottom">{#media_dlg.align_bottom}</option>\r
- <option value="left">{#media_dlg.align_left}</option>\r
- </select>\r
- </td>\r
-\r
- <td><label for="bgcolor">{#media_dlg.bgcolor}</label></td>\r
- <td>\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');generatePreview();" /></td>\r
- <td id="bgcolor_pickcontainer"> </td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
-\r
- <tr>\r
- <td><label for="vspace">{#media_dlg.vspace}</label></td>\r
- <td><input type="text" id="vspace" name="vspace" class="number" onchange="generatePreview();" /></td>\r
- <td><label for="hspace">{#media_dlg.hspace}</label></td>\r
- <td><input type="text" id="hspace" name="hspace" class="number" onchange="generatePreview();" /></td>\r
- </tr>\r
- </table>\r
- </fieldset>\r
-\r
- <fieldset id="flash_options">\r
- <legend>{#media_dlg.flash_options}</legend>\r
-\r
- <table border="0" cellpadding="4" cellspacing="0">\r
- <tr>\r
- <td><label for="flash_quality">{#media_dlg.quality}</label></td>\r
- <td>\r
- <select id="flash_quality" name="flash_quality" onchange="generatePreview();">\r
- <option value="">{#not_set}</option> \r
- <option value="high">high</option>\r
- <option value="low">low</option>\r
- <option value="autolow">autolow</option>\r
- <option value="autohigh">autohigh</option>\r
- <option value="best">best</option>\r
- </select>\r
- </td>\r
-\r
- <td><label for="flash_scale">{#media_dlg.scale}</label></td>\r
- <td>\r
- <select id="flash_scale" name="flash_scale" onchange="generatePreview();">\r
- <option value="">{#not_set}</option> \r
- <option value="showall">showall</option>\r
- <option value="noborder">noborder</option>\r
- <option value="exactfit">exactfit</option>\r
- <option value="noscale">noscale</option>\r
- </select>\r
- </td>\r
- </tr>\r
-\r
- <tr>\r
- <td><label for="flash_wmode">{#media_dlg.wmode}</label></td>\r
- <td>\r
- <select id="flash_wmode" name="flash_wmode" onchange="generatePreview();">\r
- <option value="">{#not_set}</option> \r
- <option value="window">window</option>\r
- <option value="opaque">opaque</option>\r
- <option value="transparent">transparent</option>\r
- </select>\r
- </td>\r
-\r
- <td><label for="flash_salign">{#media_dlg.salign}</label></td>\r
- <td>\r
- <select id="flash_salign" name="flash_salign" onchange="generatePreview();">\r
- <option value="">{#not_set}</option> \r
- <option value="l">{#media_dlg.align_left}</option>\r
- <option value="t">{#media_dlg.align_top}</option>\r
- <option value="r">{#media_dlg.align_right}</option>\r
- <option value="b">{#media_dlg.align_bottom}</option>\r
- <option value="tl">{#media_dlg.align_top_left}</option>\r
- <option value="tr">{#media_dlg.align_top_right}</option>\r
- <option value="bl">{#media_dlg.align_bottom_left}</option>\r
- <option value="br">{#media_dlg.align_bottom_right}</option>\r
- </select>\r
- </td>\r
- </tr>\r
-\r
- <tr>\r
- <td colspan="2">\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input type="checkbox" class="checkbox" id="flash_play" name="flash_play" checked="checked" onchange="generatePreview();" /></td>\r
- <td><label for="flash_play">{#media_dlg.play}</label></td>\r
- </tr>\r
- </table>\r
- </td>\r
-\r
- <td colspan="2">\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input type="checkbox" class="checkbox" id="flash_loop" name="flash_loop" checked="checked" onchange="generatePreview();" /></td>\r
- <td><label for="flash_loop">{#media_dlg.loop}</label></td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
-\r
- <tr>\r
- <td colspan="2">\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input type="checkbox" class="checkbox" id="flash_menu" name="flash_menu" checked="checked" onchange="generatePreview();" /></td>\r
- <td><label for="flash_menu">{#media_dlg.menu}</label></td>\r
- </tr>\r
- </table>\r
- </td>\r
-\r
- <td colspan="2">\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input type="checkbox" class="checkbox" id="flash_swliveconnect" name="flash_swliveconnect" onchange="generatePreview();" /></td>\r
- <td><label for="flash_swliveconnect">{#media_dlg.liveconnect}</label></td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
- </table>\r
-\r
- <table>\r
- <tr>\r
- <td><label for="flash_base">{#media_dlg.base}</label></td>\r
- <td><input type="text" id="flash_base" name="flash_base" onchange="generatePreview();" /></td>\r
- </tr>\r
-\r
- <tr>\r
- <td><label for="flash_flashvars">{#media_dlg.flashvars}</label></td>\r
- <td><input type="text" id="flash_flashvars" name="flash_flashvars" onchange="generatePreview();" /></td>\r
- </tr>\r
- </table>\r
- </fieldset>\r
-\r
- <fieldset id="flv_options">\r
- <legend>{#media_dlg.flv_options}</legend>\r
-\r
- <table border="0" cellpadding="4" cellspacing="0">\r
- <tr>\r
- <td><label for="flv_scalemode">{#media_dlg.flv_scalemode}</label></td>\r
- <td>\r
- <select id="flv_scalemode" name="flv_scalemode" onchange="generatePreview();">\r
- <option value="">{#not_set}</option> \r
- <option value="none">none</option>\r
- <option value="double">double</option>\r
- <option value="full">full</option>\r
- </select>\r
- </td>\r
-\r
- <td><label for="flv_buffer">{#media_dlg.flv_buffer}</label></td>\r
- <td><input type="text" id="flv_buffer" name="flv_buffer" onchange="generatePreview();" /></td>\r
- </tr>\r
-\r
- <tr>\r
- <td><label for="flv_startimage">{#media_dlg.flv_startimage}</label></td>\r
- <td><input type="text" id="flv_startimage" name="flv_startimage" onchange="generatePreview();" /></td>\r
-\r
- <td><label for="flv_starttime">{#media_dlg.flv_starttime}</label></td>\r
- <td><input type="text" id="flv_starttime" name="flv_starttime" onchange="generatePreview();" /></td>\r
- </tr>\r
-\r
- <tr>\r
- <td><label for="flv_defaultvolume">{#media_dlg.flv_defaultvolume}</label></td>\r
- <td><input type="text" id="flv_defaultvolume" name="flv_defaultvolume" onchange="generatePreview();" /></td>\r
-\r
- <td><label for="flv_starttime">{#media_dlg.flv_starttime}</label></td>\r
- <td><input type="text" id="flv_starttime" name="flv_starttime" onchange="generatePreview();" /></td>\r
- </tr>\r
-\r
- <tr>\r
- <td colspan="2">\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input type="checkbox" class="checkbox" id="flv_hiddengui" name="flv_hiddengui" checked="checked" onchange="generatePreview();" /></td>\r
- <td><label for="flv_hiddengui">{#media_dlg.flv_hiddengui}</label></td>\r
- </tr>\r
- </table>\r
- </td>\r
-\r
- <td colspan="2">\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input type="checkbox" class="checkbox" id="flv_autostart" name="flv_autostart" checked="checked" onchange="generatePreview();" /></td>\r
- <td><label for="flv_autostart">{#media_dlg.flv_autostart}</label></td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
-\r
- <tr>\r
- <td colspan="2">\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input type="checkbox" class="checkbox" id="flv_loop" name="flv_loop" checked="checked" onchange="generatePreview();" /></td>\r
- <td><label for="flv_loop">{#media_dlg.flv_loop}</label></td>\r
- </tr>\r
- </table>\r
- </td>\r
-\r
- <td colspan="2">\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input type="checkbox" class="checkbox" id="flv_showscalemodes" name="flv_showscalemodes" onchange="generatePreview();" /></td>\r
- <td><label for="flv_showscalemodes">{#media_dlg.flv_showscalemodes}</label></td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
-\r
- <tr>\r
- <td colspan="2">\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input type="checkbox" class="checkbox" id="flv_smoothvideo" name="flash_flv_flv_smoothvideosmoothvideo" checked="checked" onchange="generatePreview();" /></td>\r
- <td><label for="flv_smoothvideo">{#media_dlg.flv_smoothvideo}</label></td>\r
- </tr>\r
- </table>\r
- </td>\r
-\r
- <td colspan="2">\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input type="checkbox" class="checkbox" id="flv_jscallback" name="flv_jscallback" onchange="generatePreview();" /></td>\r
- <td><label for="flv_jscallback">{#media_dlg.flv_jscallback}</label></td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
- </table>\r
- </fieldset>\r
-\r
- <fieldset id="qt_options">\r
- <legend>{#media_dlg.qt_options}</legend>\r
-\r
- <table border="0" cellpadding="4" cellspacing="0">\r
- <tr>\r
- <td colspan="2">\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input type="checkbox" class="checkbox" id="qt_loop" name="qt_loop" onchange="generatePreview();" /></td>\r
- <td><label for="qt_loop">{#media_dlg.loop}</label></td>\r
- </tr>\r
- </table>\r
- </td>\r
-\r
- <td colspan="2">\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input type="checkbox" class="checkbox" id="qt_autoplay" name="qt_autoplay" checked="checked" onchange="generatePreview();" /></td>\r
- <td><label for="qt_autoplay">{#media_dlg.play}</label></td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
-\r
- <tr>\r
- <td colspan="2">\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input type="checkbox" class="checkbox" id="qt_cache" name="qt_cache" onchange="generatePreview();" /></td>\r
- <td><label for="qt_cache">{#media_dlg.cache}</label></td>\r
- </tr>\r
- </table>\r
- </td>\r
-\r
- <td colspan="2">\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input type="checkbox" class="checkbox" id="qt_controller" name="qt_controller" checked="checked" onchange="generatePreview();" /></td>\r
- <td><label for="qt_controller">{#media_dlg.controller}</label></td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
-\r
- <tr>\r
- <td colspan="2">\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input type="checkbox" class="checkbox" id="qt_correction" name="qt_correction" onchange="generatePreview();" /></td>\r
- <td><label for="qt_correction">{#media_dlg.correction}</label></td>\r
- </tr>\r
- </table>\r
- </td>\r
-\r
- <td colspan="2">\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input type="checkbox" class="checkbox" id="qt_enablejavascript" name="qt_enablejavascript" onchange="generatePreview();" /></td>\r
- <td><label for="qt_enablejavascript">{#media_dlg.enablejavascript}</label></td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
-\r
- <tr>\r
- <td colspan="2">\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input type="checkbox" class="checkbox" id="qt_kioskmode" name="qt_kioskmode" onchange="generatePreview();" /></td>\r
- <td><label for="qt_kioskmode">{#media_dlg.kioskmode}</label></td>\r
- </tr>\r
- </table>\r
- </td>\r
-\r
- <td colspan="2">\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input type="checkbox" class="checkbox" id="qt_autohref" name="qt_autohref" onchange="generatePreview();" /></td>\r
- <td><label for="qt_autohref">{#media_dlg.autohref}</label></td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
-\r
- <tr>\r
- <td colspan="2">\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input type="checkbox" class="checkbox" id="qt_playeveryframe" name="qt_playeveryframe" onchange="generatePreview();" /></td>\r
- <td><label for="qt_playeveryframe">{#media_dlg.playeveryframe}</label></td>\r
- </tr>\r
- </table>\r
- </td>\r
-\r
- <td colspan="2">\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input type="checkbox" class="checkbox" id="qt_targetcache" name="qt_targetcache" onchange="generatePreview();" /></td>\r
- <td><label for="qt_targetcache">{#media_dlg.targetcache}</label></td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
-\r
- <tr>\r
- <td><label for="qt_scale">{#media_dlg.scale}</label></td>\r
- <td><select id="qt_scale" name="qt_scale" class="mceEditableSelect" onchange="generatePreview();">\r
- <option value="">{#not_set}</option> \r
- <option value="tofit">tofit</option>\r
- <option value="aspect">aspect</option>\r
- </select>\r
- </td>\r
-\r
- <td colspan="2"> </td>\r
- </tr>\r
-\r
- <tr>\r
- <td><label for="qt_starttime">{#media_dlg.starttime}</label></td>\r
- <td><input type="text" id="qt_starttime" name="qt_starttime" onchange="generatePreview();" /></td>\r
-\r
- <td><label for="qt_endtime">{#media_dlg.endtime}</label></td>\r
- <td><input type="text" id="qt_endtime" name="qt_endtime" onchange="generatePreview();" /></td>\r
- </tr>\r
-\r
- <tr>\r
- <td><label for="qt_target">{#media_dlg.target}</label></td>\r
- <td><input type="text" id="qt_target" name="qt_target" onchange="generatePreview();" /></td>\r
-\r
- <td><label for="qt_href">{#media_dlg.href}</label></td>\r
- <td><input type="text" id="qt_href" name="qt_href" onchange="generatePreview();" /></td>\r
- </tr>\r
-\r
- <tr>\r
- <td><label for="qt_qtsrcchokespeed">{#media_dlg.qtsrcchokespeed}</label></td>\r
- <td><input type="text" id="qt_qtsrcchokespeed" name="qt_qtsrcchokespeed" onchange="generatePreview();" /></td>\r
-\r
- <td><label for="qt_volume">{#media_dlg.volume}</label></td>\r
- <td><input type="text" id="qt_volume" name="qt_volume" onchange="generatePreview();" /></td>\r
- </tr>\r
-\r
- <tr>\r
- <td><label for="qt_qtsrc">{#media_dlg.qtsrc}</label></td>\r
- <td colspan="4">\r
- <table border="0" cellspacing="0" cellpadding="0">\r
- <tr>\r
- <td><input type="text" id="qt_qtsrc" name="qt_qtsrc" onchange="generatePreview();" /></td>\r
- <td id="qtsrcfilebrowsercontainer"> </td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
- </table>\r
- </fieldset>\r
-\r
- <fieldset id="wmp_options">\r
- <legend>{#media_dlg.wmp_options}</legend>\r
-\r
- <table border="0" cellpadding="4" cellspacing="0">\r
- <tr>\r
- <td colspan="2">\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input type="checkbox" class="checkbox" id="wmp_autostart" name="wmp_autostart" checked="checked" onchange="generatePreview();" /></td>\r
- <td><label for="wmp_autostart">{#media_dlg.autostart}</label></td>\r
- </tr>\r
- </table>\r
- </td>\r
-\r
- <td colspan="2">\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input type="checkbox" class="checkbox" id="wmp_enabled" name="wmp_enabled" onchange="generatePreview();" /></td>\r
- <td><label for="wmp_enabled">{#media_dlg.enabled}</label></td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
-\r
- <tr>\r
- <td colspan="2">\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input type="checkbox" class="checkbox" id="wmp_enablecontextmenu" name="wmp_enablecontextmenu" checked="checked" onchange="generatePreview();" /></td>\r
- <td><label for="wmp_enablecontextmenu">{#media_dlg.menu}</label></td>\r
- </tr>\r
- </table>\r
- </td>\r
-\r
- <td colspan="2">\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input type="checkbox" class="checkbox" id="wmp_fullscreen" name="wmp_fullscreen" onchange="generatePreview();" /></td>\r
- <td><label for="wmp_fullscreen">{#media_dlg.fullscreen}</label></td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
-\r
- <tr>\r
- <td colspan="2">\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input type="checkbox" class="checkbox" id="wmp_invokeurls" name="wmp_invokeurls" checked="checked" onchange="generatePreview();" /></td>\r
- <td><label for="wmp_invokeurls">{#media_dlg.invokeurls}</label></td>\r
- </tr>\r
- </table>\r
- </td>\r
-\r
- <td colspan="2">\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input type="checkbox" class="checkbox" id="wmp_mute" name="wmp_mute" onchange="generatePreview();" /></td>\r
- <td><label for="wmp_mute">{#media_dlg.mute}</label></td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
-\r
- <tr>\r
- <td colspan="2">\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input type="checkbox" class="checkbox" id="wmp_stretchtofit" name="wmp_stretchtofit" onchange="generatePreview();" /></td>\r
- <td><label for="wmp_stretchtofit">{#media_dlg.stretchtofit}</label></td>\r
- </tr>\r
- </table>\r
- </td>\r
-\r
- <td colspan="2">\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input type="checkbox" class="checkbox" id="wmp_windowlessvideo" name="wmp_windowlessvideo" onchange="generatePreview();" /></td>\r
- <td><label for="wmp_windowlessvideo">{#media_dlg.windowlessvideo}</label></td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
-\r
- <tr>\r
- <td><label for="wmp_balance">{#media_dlg.balance}</label></td>\r
- <td><input type="text" id="wmp_balance" name="wmp_balance" onchange="generatePreview();" /></td>\r
-\r
- <td><label for="wmp_baseurl">{#media_dlg.baseurl}</label></td>\r
- <td><input type="text" id="wmp_baseurl" name="wmp_baseurl" onchange="generatePreview();" /></td>\r
- </tr>\r
-\r
- <tr>\r
- <td><label for="wmp_captioningid">{#media_dlg.captioningid}</label></td>\r
- <td><input type="text" id="wmp_captioningid" name="wmp_captioningid" onchange="generatePreview();" /></td>\r
-\r
- <td><label for="wmp_currentmarker">{#media_dlg.currentmarker}</label></td>\r
- <td><input type="text" id="wmp_currentmarker" name="wmp_currentmarker" onchange="generatePreview();" /></td>\r
- </tr>\r
-\r
- <tr>\r
- <td><label for="wmp_currentposition">{#media_dlg.currentposition}</label></td>\r
- <td><input type="text" id="wmp_currentposition" name="wmp_currentposition" onchange="generatePreview();" /></td>\r
-\r
- <td><label for="wmp_defaultframe">{#media_dlg.defaultframe}</label></td>\r
- <td><input type="text" id="wmp_defaultframe" name="wmp_defaultframe" onchange="generatePreview();" /></td>\r
- </tr>\r
-\r
- <tr>\r
- <td><label for="wmp_playcount">{#media_dlg.playcount}</label></td>\r
- <td><input type="text" id="wmp_playcount" name="wmp_playcount" onchange="generatePreview();" /></td>\r
-\r
- <td><label for="wmp_rate">{#media_dlg.rate}</label></td>\r
- <td><input type="text" id="wmp_rate" name="wmp_rate" onchange="generatePreview();" /></td>\r
- </tr>\r
-\r
- <tr>\r
- <td><label for="wmp_uimode">{#media_dlg.uimode}</label></td>\r
- <td><input type="text" id="wmp_uimode" name="wmp_uimode" onchange="generatePreview();" /></td>\r
-\r
- <td><label for="wmp_volume">{#media_dlg.volume}</label></td>\r
- <td><input type="text" id="wmp_volume" name="wmp_volume" onchange="generatePreview();" /></td>\r
- </tr>\r
-\r
- </table>\r
- </fieldset>\r
-\r
- <fieldset id="rmp_options">\r
- <legend>{#media_dlg.rmp_options}</legend>\r
-\r
- <table border="0" cellpadding="4" cellspacing="0">\r
- <tr>\r
- <td colspan="2">\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input type="checkbox" class="checkbox" id="rmp_autostart" name="rmp_autostart" onchange="generatePreview();" /></td>\r
- <td><label for="rmp_autostart">{#media_dlg.autostart}</label></td>\r
- </tr>\r
- </table>\r
- </td>\r
-\r
- <td colspan="2">\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input type="checkbox" class="checkbox" id="rmp_loop" name="rmp_loop" onchange="generatePreview();" /></td>\r
- <td><label for="rmp_loop">{#media_dlg.loop}</label></td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
-\r
- <tr>\r
- <td colspan="2">\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input type="checkbox" class="checkbox" id="rmp_autogotourl" name="rmp_autogotourl" checked="checked" onchange="generatePreview();" /></td>\r
- <td><label for="rmp_autogotourl">{#media_dlg.autogotourl}</label></td>\r
- </tr>\r
- </table>\r
- </td>\r
-\r
- <td colspan="2">\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input type="checkbox" class="checkbox" id="rmp_center" name="rmp_center" onchange="generatePreview();" /></td>\r
- <td><label for="rmp_center">{#media_dlg.center}</label></td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
-\r
- <tr>\r
- <td colspan="2">\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input type="checkbox" class="checkbox" id="rmp_imagestatus" name="rmp_imagestatus" checked="checked" onchange="generatePreview();" /></td>\r
- <td><label for="rmp_imagestatus">{#media_dlg.imagestatus}</label></td>\r
- </tr>\r
- </table>\r
- </td>\r
-\r
- <td colspan="2">\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input type="checkbox" class="checkbox" id="rmp_maintainaspect" name="rmp_maintainaspect" onchange="generatePreview();" /></td>\r
- <td><label for="rmp_maintainaspect">{#media_dlg.maintainaspect}</label></td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
-\r
- <tr>\r
- <td colspan="2">\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input type="checkbox" class="checkbox" id="rmp_nojava" name="rmp_nojava" onchange="generatePreview();" /></td>\r
- <td><label for="rmp_nojava">{#media_dlg.nojava}</label></td>\r
- </tr>\r
- </table>\r
- </td>\r
-\r
- <td colspan="2">\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input type="checkbox" class="checkbox" id="rmp_prefetch" name="rmp_prefetch" onchange="generatePreview();" /></td>\r
- <td><label for="rmp_prefetch">{#media_dlg.prefetch}</label></td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
-\r
- <tr>\r
- <td colspan="2">\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input type="checkbox" class="checkbox" id="rmp_shuffle" name="rmp_shuffle" onchange="generatePreview();" /></td>\r
- <td><label for="rmp_shuffle">{#media_dlg.shuffle}</label></td>\r
- </tr>\r
- </table>\r
- </td>\r
-\r
- <td colspan="2">\r
- \r
- </td>\r
- </tr>\r
-\r
- <tr>\r
- <td><label for="rmp_console">{#media_dlg.console}</label></td>\r
- <td><input type="text" id="rmp_console" name="rmp_console" onchange="generatePreview();" /></td>\r
-\r
- <td><label for="rmp_controls">{#media_dlg.controls}</label></td>\r
- <td><input type="text" id="rmp_controls" name="rmp_controls" onchange="generatePreview();" /></td>\r
- </tr>\r
-\r
- <tr>\r
- <td><label for="rmp_numloop">{#media_dlg.numloop}</label></td>\r
- <td><input type="text" id="rmp_numloop" name="rmp_numloop" onchange="generatePreview();" /></td>\r
-\r
- <td><label for="rmp_scriptcallbacks">{#media_dlg.scriptcallbacks}</label></td>\r
- <td><input type="text" id="rmp_scriptcallbacks" name="rmp_scriptcallbacks" onchange="generatePreview();" /></td>\r
- </tr>\r
- </table>\r
- </fieldset>\r
-\r
- <fieldset id="shockwave_options">\r
- <legend>{#media_dlg.shockwave_options}</legend>\r
-\r
- <table border="0" cellpadding="4" cellspacing="0">\r
- <tr>\r
- <td><label for="shockwave_swstretchstyle">{#media_dlg.swstretchstyle}</label></td>\r
- <td>\r
- <select id="shockwave_swstretchstyle" name="shockwave_swstretchstyle" onchange="generatePreview();">\r
- <option value="none">{#not_set}</option>\r
- <option value="meet">Meet</option>\r
- <option value="fill">Fill</option>\r
- <option value="stage">Stage</option>\r
- </select>\r
- </td>\r
-\r
- <td><label for="shockwave_swvolume">{#media_dlg.volume}</label></td>\r
- <td><input type="text" id="shockwave_swvolume" name="shockwave_swvolume" onchange="generatePreview();" /></td>\r
- </tr>\r
-\r
- <tr>\r
- <td><label for="shockwave_swstretchhalign">{#media_dlg.swstretchhalign}</label></td>\r
- <td>\r
- <select id="shockwave_swstretchhalign" name="shockwave_swstretchhalign" onchange="generatePreview();">\r
- <option value="none">{#not_set}</option>\r
- <option value="left">{#media_dlg.align_left}</option>\r
- <option value="center">{#media_dlg.align_center}</option>\r
- <option value="right">{#media_dlg.align_right}</option>\r
- </select>\r
- </td>\r
-\r
- <td><label for="shockwave_swstretchvalign">{#media_dlg.swstretchvalign}</label></td>\r
- <td>\r
- <select id="shockwave_swstretchvalign" name="shockwave_swstretchvalign" onchange="generatePreview();">\r
- <option value="none">{#not_set}</option>\r
- <option value="meet">Meet</option>\r
- <option value="fill">Fill</option>\r
- <option value="stage">Stage</option>\r
- </select>\r
- </td>\r
- </tr>\r
-\r
- <tr>\r
- <td colspan="2">\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input type="checkbox" class="checkbox" id="shockwave_autostart" name="shockwave_autostart" onchange="generatePreview();" checked="checked" /></td>\r
- <td><label for="shockwave_autostart">{#media_dlg.autostart}</label></td>\r
- </tr>\r
- </table>\r
- </td>\r
-\r
- <td colspan="2">\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input type="checkbox" class="checkbox" id="shockwave_sound" name="shockwave_sound" onchange="generatePreview();" checked="checked" /></td>\r
- <td><label for="shockwave_sound">{#media_dlg.sound}</label></td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
-\r
-\r
- <tr>\r
- <td colspan="2">\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input type="checkbox" class="checkbox" id="shockwave_swliveconnect" name="shockwave_swliveconnect" onchange="generatePreview();" /></td>\r
- <td><label for="shockwave_swliveconnect">{#media_dlg.liveconnect}</label></td>\r
- </tr>\r
- </table>\r
- </td>\r
-\r
- <td colspan="2">\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input type="checkbox" class="checkbox" id="shockwave_progress" name="shockwave_progress" onchange="generatePreview();" checked="checked" /></td>\r
- <td><label for="shockwave_progress">{#media_dlg.progress}</label></td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
- </table>\r
- </fieldset>\r
- </div>\r
- </div>\r
-\r
- <div class="mceActionPanel">\r
- <div style="float: left">\r
- <input type="submit" id="insert" name="insert" value="{#insert}" />\r
- </div>\r
-\r
- <div style="float: right">\r
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
- </div>\r
- </div>\r
- </form>\r
-</body>\r
-</html>\r
+++ /dev/null
-(function(){tinymce.create('tinymce.plugins.Nonbreaking',{init:function(ed,url){var t=this;t.editor=ed;ed.addCommand('mceNonBreaking',function(){ed.execCommand('mceInsertContent',false,(ed.plugins.visualchars&&ed.plugins.visualchars.state)?'<span class="mceItemHidden mceVisualNbsp">·</span>':' ');});ed.addButton('nonbreaking',{title:'nonbreaking.nonbreaking_desc',cmd:'mceNonBreaking'});if(ed.getParam('nonbreaking_force_tab')){ed.onKeyDown.add(function(ed,e){if(tinymce.isIE&&e.keyCode==9){ed.execCommand('mceNonBreaking');ed.execCommand('mceNonBreaking');ed.execCommand('mceNonBreaking');tinymce.dom.Event.cancel(e);}});}},getInfo:function(){return{longname:'Nonbreaking space',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/nonbreaking',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('nonbreaking',tinymce.plugins.Nonbreaking);})();
\ No newline at end of file
+++ /dev/null
-/**\r
- * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $\r
- *\r
- * @author Moxiecode\r
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-(function() {\r
- tinymce.create('tinymce.plugins.Nonbreaking', {\r
- init : function(ed, url) {\r
- var t = this;\r
-\r
- t.editor = ed;\r
-\r
- // Register commands\r
- ed.addCommand('mceNonBreaking', function() {\r
- ed.execCommand('mceInsertContent', false, (ed.plugins.visualchars && ed.plugins.visualchars.state) ? '<span class="mceItemHidden mceVisualNbsp">·</span>' : ' ');\r
- });\r
-\r
- // Register buttons\r
- ed.addButton('nonbreaking', {title : 'nonbreaking.nonbreaking_desc', cmd : 'mceNonBreaking'});\r
-\r
- if (ed.getParam('nonbreaking_force_tab')) {\r
- ed.onKeyDown.add(function(ed, e) {\r
- if (tinymce.isIE && e.keyCode == 9) {\r
- ed.execCommand('mceNonBreaking');\r
- ed.execCommand('mceNonBreaking');\r
- ed.execCommand('mceNonBreaking');\r
- tinymce.dom.Event.cancel(e);\r
- }\r
- });\r
- }\r
- },\r
-\r
- getInfo : function() {\r
- return {\r
- longname : 'Nonbreaking space',\r
- author : 'Moxiecode Systems AB',\r
- authorurl : 'http://tinymce.moxiecode.com',\r
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/nonbreaking',\r
- version : tinymce.majorVersion + "." + tinymce.minorVersion\r
- };\r
- }\r
-\r
- // Private methods\r
- });\r
-\r
- // Register plugin\r
- tinymce.PluginManager.add('nonbreaking', tinymce.plugins.Nonbreaking);\r
-})();
\ No newline at end of file
+++ /dev/null
-(function(){var Event=tinymce.dom.Event;tinymce.create('tinymce.plugins.NonEditablePlugin',{init:function(ed,url){var t=this,editClass,nonEditClass;t.editor=ed;editClass=ed.getParam("noneditable_editable_class","mceEditable");nonEditClass=ed.getParam("noneditable_noneditable_class","mceNonEditable");ed.onNodeChange.addToTop(function(ed,cm,n){var sc,ec;sc=ed.dom.getParent(ed.selection.getStart(),function(n){return ed.dom.hasClass(n,nonEditClass);});ec=ed.dom.getParent(ed.selection.getEnd(),function(n){return ed.dom.hasClass(n,nonEditClass);});if(sc||ec){t._setDisabled(1);return false;}else t._setDisabled(0);});},getInfo:function(){return{longname:'Non editable elements',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/noneditable',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_block:function(ed,e){var k=e.keyCode;if((k>32&&k<41)||(k>111&&k<124))return;return Event.cancel(e);},_setDisabled:function(s){var t=this,ed=t.editor;tinymce.each(ed.controlManager.controls,function(c){c.setDisabled(s);});if(s!==t.disabled){if(s){ed.onKeyDown.addToTop(t._block);ed.onKeyPress.addToTop(t._block);ed.onKeyUp.addToTop(t._block);ed.onPaste.addToTop(t._block);}else{ed.onKeyDown.remove(t._block);ed.onKeyPress.remove(t._block);ed.onKeyUp.remove(t._block);ed.onPaste.remove(t._block);}t.disabled=s;}}});tinymce.PluginManager.add('noneditable',tinymce.plugins.NonEditablePlugin);})();
\ No newline at end of file
+++ /dev/null
-/**\r
- * $Id: editor_plugin_src.js 743 2008-03-23 17:47:33Z spocke $\r
- *\r
- * @author Moxiecode\r
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-(function() {\r
- var Event = tinymce.dom.Event;\r
-\r
- tinymce.create('tinymce.plugins.NonEditablePlugin', {\r
- init : function(ed, url) {\r
- var t = this, editClass, nonEditClass;\r
-\r
- t.editor = ed;\r
- editClass = ed.getParam("noneditable_editable_class", "mceEditable");\r
- nonEditClass = ed.getParam("noneditable_noneditable_class", "mceNonEditable");\r
-\r
- ed.onNodeChange.addToTop(function(ed, cm, n) {\r
- var sc, ec;\r
-\r
- // Block if start or end is inside a non editable element\r
- sc = ed.dom.getParent(ed.selection.getStart(), function(n) {\r
- return ed.dom.hasClass(n, nonEditClass);\r
- });\r
-\r
- ec = ed.dom.getParent(ed.selection.getEnd(), function(n) {\r
- return ed.dom.hasClass(n, nonEditClass);\r
- });\r
-\r
- // Block or unblock\r
- if (sc || ec) {\r
- t._setDisabled(1);\r
- return false;\r
- } else\r
- t._setDisabled(0);\r
- });\r
- },\r
-\r
- getInfo : function() {\r
- return {\r
- longname : 'Non editable elements',\r
- author : 'Moxiecode Systems AB',\r
- authorurl : 'http://tinymce.moxiecode.com',\r
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/noneditable',\r
- version : tinymce.majorVersion + "." + tinymce.minorVersion\r
- };\r
- },\r
-\r
- _block : function(ed, e) {\r
- var k = e.keyCode;\r
-\r
- // Don't block arrow keys, pg up/down, and F1-F12\r
- if ((k > 32 && k < 41) || (k > 111 && k < 124))\r
- return;\r
-\r
- return Event.cancel(e);\r
- },\r
-\r
- _setDisabled : function(s) {\r
- var t = this, ed = t.editor;\r
-\r
- tinymce.each(ed.controlManager.controls, function(c) {\r
- c.setDisabled(s);\r
- });\r
-\r
- if (s !== t.disabled) {\r
- if (s) {\r
- ed.onKeyDown.addToTop(t._block);\r
- ed.onKeyPress.addToTop(t._block);\r
- ed.onKeyUp.addToTop(t._block);\r
- ed.onPaste.addToTop(t._block);\r
- } else {\r
- ed.onKeyDown.remove(t._block);\r
- ed.onKeyPress.remove(t._block);\r
- ed.onKeyUp.remove(t._block);\r
- ed.onPaste.remove(t._block);\r
- }\r
-\r
- t.disabled = s;\r
- }\r
- }\r
- });\r
-\r
- // Register plugin\r
- tinymce.PluginManager.add('noneditable', tinymce.plugins.NonEditablePlugin);\r
-})();
\ No newline at end of file
+++ /dev/null
-.mcePageBreak {display:block;border:0;width:100%;height:12px;border-top:1px dotted #ccc;margin-top:15px;background:#fff url(../img/pagebreak.gif) no-repeat center top;}
+++ /dev/null
-(function(){tinymce.create('tinymce.plugins.PageBreakPlugin',{init:function(ed,url){var pb='<img src="'+url+'/img/trans.gif" class="mcePageBreak mceItemNoResize" />',cls='mcePageBreak',sep=ed.getParam('pagebreak_separator','<!-- pagebreak -->'),pbRE;pbRE=new RegExp(sep.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g,function(a){return'\\'+a;}),'g');ed.addCommand('mcePageBreak',function(){ed.execCommand('mceInsertContent',0,pb);});ed.addButton('pagebreak',{title:'pagebreak.desc',cmd:cls});ed.onInit.add(function(){if(ed.settings.content_css!==false)ed.dom.loadCSS(url+"/css/content.css");if(ed.theme.onResolveName){ed.theme.onResolveName.add(function(th,o){if(o.node.nodeName=='IMG'&&ed.dom.hasClass(o.node,cls))o.name='pagebreak';});}});ed.onClick.add(function(ed,e){e=e.target;if(e.nodeName==='IMG'&&ed.dom.hasClass(e,cls))ed.selection.select(e);});ed.onNodeChange.add(function(ed,cm,n){cm.setActive('pagebreak',n.nodeName==='IMG'&&ed.dom.hasClass(n,cls));});ed.onBeforeSetContent.add(function(ed,o){o.content=o.content.replace(pbRE,pb);});ed.onPostProcess.add(function(ed,o){if(o.get)o.content=o.content.replace(/<img[^>]+>/g,function(im){if(im.indexOf('class="mcePageBreak')!==-1)im=sep;return im;});});},getInfo:function(){return{longname:'PageBreak',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/pagebreak',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('pagebreak',tinymce.plugins.PageBreakPlugin);})();
\ No newline at end of file
+++ /dev/null
-/**\r
- * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $\r
- *\r
- * @author Moxiecode\r
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-(function() {\r
- tinymce.create('tinymce.plugins.PageBreakPlugin', {\r
- init : function(ed, url) {\r
- var pb = '<img src="' + url + '/img/trans.gif" class="mcePageBreak mceItemNoResize" />', cls = 'mcePageBreak', sep = ed.getParam('pagebreak_separator', '<!-- pagebreak -->'), pbRE;\r
-\r
- pbRE = new RegExp(sep.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g, function(a) {return '\\' + a;}), 'g');\r
-\r
- // Register commands\r
- ed.addCommand('mcePageBreak', function() {\r
- ed.execCommand('mceInsertContent', 0, pb);\r
- });\r
-\r
- // Register buttons\r
- ed.addButton('pagebreak', {title : 'pagebreak.desc', cmd : cls});\r
-\r
- ed.onInit.add(function() {\r
- if (ed.settings.content_css !== false)\r
- ed.dom.loadCSS(url + "/css/content.css");\r
-\r
- if (ed.theme.onResolveName) {\r
- ed.theme.onResolveName.add(function(th, o) {\r
- if (o.node.nodeName == 'IMG' && ed.dom.hasClass(o.node, cls))\r
- o.name = 'pagebreak';\r
- });\r
- }\r
- });\r
-\r
- ed.onClick.add(function(ed, e) {\r
- e = e.target;\r
-\r
- if (e.nodeName === 'IMG' && ed.dom.hasClass(e, cls))\r
- ed.selection.select(e);\r
- });\r
-\r
- ed.onNodeChange.add(function(ed, cm, n) {\r
- cm.setActive('pagebreak', n.nodeName === 'IMG' && ed.dom.hasClass(n, cls));\r
- });\r
-\r
- ed.onBeforeSetContent.add(function(ed, o) {\r
- o.content = o.content.replace(pbRE, pb);\r
- });\r
-\r
- ed.onPostProcess.add(function(ed, o) {\r
- if (o.get)\r
- o.content = o.content.replace(/<img[^>]+>/g, function(im) {\r
- if (im.indexOf('class="mcePageBreak') !== -1)\r
- im = sep;\r
-\r
- return im;\r
- });\r
- });\r
- },\r
-\r
- getInfo : function() {\r
- return {\r
- longname : 'PageBreak',\r
- author : 'Moxiecode Systems AB',\r
- authorurl : 'http://tinymce.moxiecode.com',\r
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/pagebreak',\r
- version : tinymce.majorVersion + "." + tinymce.minorVersion\r
- };\r
- }\r
- });\r
-\r
- // Register plugin\r
- tinymce.PluginManager.add('pagebreak', tinymce.plugins.PageBreakPlugin);\r
-})();
\ No newline at end of file
+++ /dev/null
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
-<title>blank_page</title>\r
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
-<link href="css/blank.css" rel="stylesheet" type="text/css" />\r
-<base target="_self" />\r
-<script type="text/javascript">\r
-function init() {\r
- if (parent.tinymce.isIE)\r
- document.body.contentEditable = true;\r
- else\r
- document.designMode = 'on';\r
-\r
- parent.initIframe(document);\r
- window.focus();\r
-}\r
-</script>\r
-</head>\r
-<body onload="init();">\r
-\r
-</body>\r
-</html>\r
+++ /dev/null
-html, body {height:98%}\r
-body {\r
-background-color: #FFFFFF;\r
-font-family: Verdana, Arial, Helvetica, sans-serif;\r
-font-size: 10px;\r
-scrollbar-3dlight-color: #F0F0EE;\r
-scrollbar-arrow-color: #676662;\r
-scrollbar-base-color: #F0F0EE;\r
-scrollbar-darkshadow-color: #DDDDDD;\r
-scrollbar-face-color: #E0E0DD;\r
-scrollbar-highlight-color: #F0F0EE;\r
-scrollbar-shadow-color: #F0F0EE;\r
-scrollbar-track-color: #F5F5F5;\r
-}\r
+++ /dev/null
-.sourceIframe {\r
- border: 1px solid #808080;\r
-}\r
+++ /dev/null
-(function(){var Event=tinymce.dom.Event;tinymce.create('tinymce.plugins.PastePlugin',{init:function(ed,url){var t=this;t.editor=ed;ed.addCommand('mcePasteText',function(ui,v){if(ui){if((ed.getParam('paste_use_dialog',true))||(!tinymce.isIE)){ed.windowManager.open({file:url+'/pastetext.htm',width:450,height:400,inline:1},{plugin_url:url});}else t._insertText(clipboardData.getData("Text"),true);}else t._insertText(v.html,v.linebreaks);});ed.addCommand('mcePasteWord',function(ui,v){if(ui){if((ed.getParam('paste_use_dialog',true))||(!tinymce.isIE)){ed.windowManager.open({file:url+'/pasteword.htm',width:450,height:400,inline:1},{plugin_url:url});}else t._insertText(t._clipboardHTML());}else t._insertWordContent(v);});ed.addCommand('mceSelectAll',function(){ed.execCommand('selectall');});ed.addButton('pastetext',{title:'paste.paste_text_desc',cmd:'mcePasteText',ui:true});ed.addButton('pasteword',{title:'paste.paste_word_desc',cmd:'mcePasteWord',ui:true});ed.addButton('selectall',{title:'paste.selectall_desc',cmd:'mceSelectAll'});if(ed.getParam("paste_auto_cleanup_on_paste",false)){ed.onPaste.add(function(ed,e){return t._handlePasteEvent(e)});}if(!tinymce.isIE&&ed.getParam("paste_auto_cleanup_on_paste",false)){ed.onKeyDown.add(function(ed,e){if(e.ctrlKey&&e.keyCode==86){window.setTimeout(function(){ed.execCommand("mcePasteText",true);},1);Event.cancel(e);}});}},getInfo:function(){return{longname:'Paste text/word',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_handlePasteEvent:function(e){var html=this._clipboardHTML(),ed=this.editor,sel=ed.selection,r;if(ed&&(r=sel.getRng())&&r.text.length>0)ed.execCommand('delete');if(html&&html.length>0)ed.execCommand('mcePasteWord',false,html);return Event.cancel(e);},_insertText:function(content,bLinebreaks){content=this.editor.dom.encode(content);if(content&&content.length>0){if(bLinebreaks){if(this.editor.getParam("paste_create_paragraphs",true)){var rl=this.editor.getParam("paste_replace_list",'\u2122,<sup>TM</sup>,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(',');for(var i=0;i<rl.length;i+=2)content=content.replace(new RegExp(rl[i],'gi'),rl[i+1]);content=content.replace(/\r\n\r\n/g,'</p><p>');content=content.replace(/\r\r/g,'</p><p>');content=content.replace(/\n\n/g,'</p><p>');if((pos=content.indexOf('</p><p>'))!=-1){this.editor.execCommand("Delete");var node=this.editor.selection.getNode();var breakElms=[];do{if(node.nodeType==1){if(node.nodeName=="TD"||node.nodeName=="BODY")break;breakElms[breakElms.length]=node;}}while(node=node.parentNode);var before="",after="</p>";before+=content.substring(0,pos);for(var i=0;i<breakElms.length;i++){before+="</"+breakElms[i].nodeName+">";after+="<"+breakElms[(breakElms.length-1)-i].nodeName+">";}before+="<p>";content=before+content.substring(pos+7)+after;}}if(this.editor.getParam("paste_create_linebreaks",true)){content=content.replace(/\r\n/g,'<br />');content=content.replace(/\r/g,'<br />');content=content.replace(/\n/g,'<br />');}}this.editor.execCommand("mceInsertRawHTML",false,content);}},_insertWordContent:function(content){var t=this,ed=t.editor;if(content&&content.length>0){var bull=String.fromCharCode(8226);var middot=String.fromCharCode(183);if(ed.getParam('paste_insert_word_content_callback'))content=ed.execCallback('paste_insert_word_content_callback','before',content);var rl=ed.getParam("paste_replace_list",'\u2122,<sup>TM</sup>,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(',');for(var i=0;i<rl.length;i+=2)content=content.replace(new RegExp(rl[i],'gi'),rl[i+1]);if(this.editor.getParam("paste_convert_headers_to_strong",false)){content=content.replace(new RegExp('<p class=MsoHeading.*?>(.*?)<\/p>','gi'),'<p><b>$1</b></p>');}content=content.replace(new RegExp('tab-stops: list [0-9]+.0pt">','gi'),'">'+"--list--");content=content.replace(new RegExp(bull+"(.*?)<BR>","gi"),"<p>"+middot+"$1</p>");content=content.replace(new RegExp('<SPAN style="mso-list: Ignore">','gi'),"<span>"+bull);content=content.replace(/<o:p><\/o:p>/gi,"");content=content.replace(new RegExp('<br style="page-break-before: always;.*>','gi'),'-- page break --');content=content.replace(new RegExp('<(!--)([^>]*)(--)>','g'),"");if(this.editor.getParam("paste_remove_spans",true))content=content.replace(/<\/?span[^>]*>/gi,"");if(this.editor.getParam("paste_remove_styles",true))content=content.replace(new RegExp('<(\\w[^>]*) style="([^"]*)"([^>]*)','gi'),"<$1$3");content=content.replace(/<\/?font[^>]*>/gi,"");switch(this.editor.getParam("paste_strip_class_attributes","all")){case"all":content=content.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi,"<$1$3");break;case"mso":content=content.replace(new RegExp('<(\\w[^>]*) class="?mso([^ |>]*)([^>]*)','gi'),"<$1$3");break;}content=content.replace(new RegExp('href="?'+this._reEscape(""+document.location)+'','gi'),'href="'+this.editor.documentBaseURI.getURI());content=content.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi,"<$1$3");content=content.replace(/<\\?\?xml[^>]*>/gi,"");content=content.replace(/<\/?\w+:[^>]*>/gi,"");content=content.replace(/-- page break --\s*<p> <\/p>/gi,"");content=content.replace(/-- page break --/gi,"");if(!this.editor.getParam('force_p_newlines')){content=content.replace('','','gi');content=content.replace('</p>','<br /><br />','gi');}if(!tinymce.isIE&&!this.editor.getParam('force_p_newlines')){content=content.replace(/<\/?p[^>]*>/gi,"");}content=content.replace(/<\/?div[^>]*>/gi,"");if(this.editor.getParam("paste_convert_middot_lists",true)){var div=ed.dom.create("div",null,content);var className=this.editor.getParam("paste_unindented_list_class","unIndentedList");while(this._convertMiddots(div,"--list--"));while(this._convertMiddots(div,middot,className));while(this._convertMiddots(div,bull));content=div.innerHTML;}if(this.editor.getParam("paste_convert_headers_to_strong",false)){content=content.replace(/<h[1-6]> <\/h[1-6]>/gi,'<p> </p>');content=content.replace(/<h[1-6]>/gi,'<p><b>');content=content.replace(/<\/h[1-6]>/gi,'</b></p>');content=content.replace(/<b> <\/b>/gi,'<b> </b>');content=content.replace(/^( )*/gi,'');}content=content.replace(/--list--/gi,"");if(ed.getParam('paste_insert_word_content_callback'))content=ed.execCallback('paste_insert_word_content_callback','after',content);this.editor.execCommand("mceInsertContent",false,content);if(this.editor.getParam('paste_force_cleanup_wordpaste',true)){var ed=this.editor;window.setTimeout(function(){ed.execCommand("mceCleanup");},1);}}},_reEscape:function(s){var l="?.\\*[](){}+^$:";var o="";for(var i=0;i<s.length;i++){var c=s.charAt(i);if(l.indexOf(c)!=-1)o+='\\'+c;else o+=c;}return o;},_convertMiddots:function(div,search,class_name){var ed=this.editor,mdot=String.fromCharCode(183),bull=String.fromCharCode(8226);var nodes,prevul,i,p,ul,li,np,cp,li;nodes=div.getElementsByTagName("p");for(i=0;i<nodes.length;i++){p=nodes[i];if(p.innerHTML.indexOf(search)==0){ul=ed.dom.create("ul");if(class_name)ul.className=class_name;li=ed.dom.create("li");li.innerHTML=p.innerHTML.replace(new RegExp(''+mdot+'|'+bull+'|--list--| ',"gi"),'');ul.appendChild(li);np=p.nextSibling;while(np){if(np.nodeType==3&&new RegExp('^\\s$','m').test(np.nodeValue)){np=np.nextSibling;continue;}if(search==mdot){if(np.nodeType==1&&new RegExp('^o(\\s+| )').test(np.innerHTML)){if(!prevul){prevul=ul;ul=ed.dom.create("ul");prevul.appendChild(ul);}np.innerHTML=np.innerHTML.replace(/^o/,'');}else{if(prevul){ul=prevul;prevul=null;}if(np.nodeType!=1||np.innerHTML.indexOf(search)!=0)break;}}else{if(np.nodeType!=1||np.innerHTML.indexOf(search)!=0)break;}cp=np.nextSibling;li=ed.dom.create("li");li.innerHTML=np.innerHTML.replace(new RegExp(''+mdot+'|'+bull+'|--list--| ',"gi"),'');np.parentNode.removeChild(np);ul.appendChild(li);np=cp;}p.parentNode.replaceChild(ul,p);return true;}}return false;},_clipboardHTML:function(){var div=document.getElementById('_TinyMCE_clipboardHTML');if(!div){var div=document.createElement('DIV');div.id='_TinyMCE_clipboardHTML';with(div.style){visibility='hidden';overflow='hidden';position='absolute';width=1;height=1;}document.body.appendChild(div);}div.innerHTML='';var rng=document.body.createTextRange();rng.moveToElementText(div);rng.execCommand('Paste');var html=div.innerHTML;div.innerHTML='';return html;}});tinymce.PluginManager.add('paste',tinymce.plugins.PastePlugin);})();
\ No newline at end of file
+++ /dev/null
-/**\r
- * $Id: editor_plugin_src.js 862 2008-06-02 20:09:06Z spocke $\r
- *\r
- * @author Moxiecode\r
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-(function() {\r
- var Event = tinymce.dom.Event;\r
-\r
- tinymce.create('tinymce.plugins.PastePlugin', {\r
- init : function(ed, url) {\r
- var t = this;\r
-\r
- t.editor = ed; \r
-\r
- // Register commands\r
- ed.addCommand('mcePasteText', function(ui, v) {\r
- if (ui) {\r
- if ((ed.getParam('paste_use_dialog', true)) || (!tinymce.isIE)) {\r
- ed.windowManager.open({\r
- file : url + '/pastetext.htm',\r
- width : 450,\r
- height : 400,\r
- inline : 1\r
- }, {\r
- plugin_url : url\r
- });\r
- } else\r
- t._insertText(clipboardData.getData("Text"), true);\r
- } else\r
- t._insertText(v.html, v.linebreaks);\r
- });\r
-\r
- ed.addCommand('mcePasteWord', function(ui, v) {\r
- if (ui) {\r
- if ((ed.getParam('paste_use_dialog', true)) || (!tinymce.isIE)) {\r
- ed.windowManager.open({\r
- file : url + '/pasteword.htm',\r
- width : 450,\r
- height : 400,\r
- inline : 1\r
- }, {\r
- plugin_url : url\r
- });\r
- } else\r
- t._insertText(t._clipboardHTML());\r
- } else\r
- t._insertWordContent(v);\r
- });\r
-\r
- ed.addCommand('mceSelectAll', function() {\r
- ed.execCommand('selectall'); \r
- });\r
-\r
- // Register buttons\r
- ed.addButton('pastetext', {title : 'paste.paste_text_desc', cmd : 'mcePasteText', ui : true});\r
- ed.addButton('pasteword', {title : 'paste.paste_word_desc', cmd : 'mcePasteWord', ui : true});\r
- ed.addButton('selectall', {title : 'paste.selectall_desc', cmd : 'mceSelectAll'});\r
-\r
- if (ed.getParam("paste_auto_cleanup_on_paste", false)) {\r
- ed.onPaste.add(function(ed, e) {\r
- return t._handlePasteEvent(e)\r
- });\r
- }\r
-\r
- if (!tinymce.isIE && ed.getParam("paste_auto_cleanup_on_paste", false)) {\r
- // Force paste dialog if non IE browser\r
- ed.onKeyDown.add(function(ed, e) {\r
- if (e.ctrlKey && e.keyCode == 86) {\r
- window.setTimeout(function() {\r
- ed.execCommand("mcePasteText", true);\r
- }, 1);\r
-\r
- Event.cancel(e);\r
- }\r
- });\r
- }\r
- },\r
-\r
- getInfo : function() {\r
- return {\r
- longname : 'Paste text/word',\r
- author : 'Moxiecode Systems AB',\r
- authorurl : 'http://tinymce.moxiecode.com',\r
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste',\r
- version : tinymce.majorVersion + "." + tinymce.minorVersion\r
- };\r
- },\r
-\r
- // Private methods\r
-\r
- _handlePasteEvent : function(e) {\r
- var html = this._clipboardHTML(), ed = this.editor, sel = ed.selection, r;\r
-\r
- // Removes italic, strong etc, the if was needed due to bug #1437114\r
- if (ed && (r = sel.getRng()) && r.text.length > 0)\r
- ed.execCommand('delete');\r
-\r
- if (html && html.length > 0)\r
- ed.execCommand('mcePasteWord', false, html);\r
-\r
- return Event.cancel(e);\r
- },\r
-\r
- _insertText : function(content, bLinebreaks) {\r
- content = this.editor.dom.encode(content);\r
-\r
- if (content && content.length > 0) {\r
- if (bLinebreaks) { \r
- // Special paragraph treatment \r
- if (this.editor.getParam("paste_create_paragraphs", true)) {\r
- var rl = this.editor.getParam("paste_replace_list", '\u2122,<sup>TM</sup>,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(',');\r
- for (var i=0; i<rl.length; i+=2)\r
- content = content.replace(new RegExp(rl[i], 'gi'), rl[i+1]);\r
-\r
- content = content.replace(/\r\n\r\n/g, '</p><p>');\r
- content = content.replace(/\r\r/g, '</p><p>');\r
- content = content.replace(/\n\n/g, '</p><p>');\r
-\r
- // Has paragraphs \r
- if ((pos = content.indexOf('</p><p>')) != -1) { \r
- this.editor.execCommand("Delete"); \r
-\r
- var node = this.editor.selection.getNode(); \r
-\r
- // Get list of elements to break \r
- var breakElms = [];\r
-\r
- do { \r
- if (node.nodeType == 1) { \r
- // Don't break tables and break at body \r
- if (node.nodeName == "TD" || node.nodeName == "BODY") \r
- break; \r
- \r
- breakElms[breakElms.length] = node; \r
- } \r
- } while(node = node.parentNode); \r
-\r
- var before = "", after = "</p>"; \r
- before += content.substring(0, pos); \r
-\r
- for (var i=0; i<breakElms.length; i++) { \r
- before += "</" + breakElms[i].nodeName + ">"; \r
- after += "<" + breakElms[(breakElms.length-1)-i].nodeName + ">"; \r
- } \r
-\r
- before += "<p>"; \r
- content = before + content.substring(pos+7) + after; \r
- } \r
- } \r
-\r
- if (this.editor.getParam("paste_create_linebreaks", true)) {\r
- content = content.replace(/\r\n/g, '<br />');\r
- content = content.replace(/\r/g, '<br />');\r
- content = content.replace(/\n/g, '<br />');\r
- }\r
- } \r
-\r
- this.editor.execCommand("mceInsertRawHTML", false, content); \r
- }\r
- },\r
-\r
- _insertWordContent : function(content) { \r
- var t = this, ed = t.editor;\r
-\r
- if (content && content.length > 0) {\r
- // Cleanup Word content\r
- var bull = String.fromCharCode(8226);\r
- var middot = String.fromCharCode(183);\r
-\r
- if (ed.getParam('paste_insert_word_content_callback'))\r
- content = ed.execCallback('paste_insert_word_content_callback', 'before', content);\r
-\r
- var rl = ed.getParam("paste_replace_list", '\u2122,<sup>TM</sup>,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(',');\r
- for (var i=0; i<rl.length; i+=2)\r
- content = content.replace(new RegExp(rl[i], 'gi'), rl[i+1]);\r
-\r
- if (this.editor.getParam("paste_convert_headers_to_strong", false)) {\r
- content = content.replace(new RegExp('<p class=MsoHeading.*?>(.*?)<\/p>', 'gi'), '<p><b>$1</b></p>');\r
- }\r
-\r
- content = content.replace(new RegExp('tab-stops: list [0-9]+.0pt">', 'gi'), '">' + "--list--");\r
- content = content.replace(new RegExp(bull + "(.*?)<BR>", "gi"), "<p>" + middot + "$1</p>");\r
- content = content.replace(new RegExp('<SPAN style="mso-list: Ignore">', 'gi'), "<span>" + bull); // Covert to bull list\r
- content = content.replace(/<o:p><\/o:p>/gi, "");\r
- content = content.replace(new RegExp('<br style="page-break-before: always;.*>', 'gi'), '-- page break --'); // Replace pagebreaks\r
- content = content.replace(new RegExp('<(!--)([^>]*)(--)>', 'g'), ""); // Word comments\r
-\r
- if (this.editor.getParam("paste_remove_spans", true))\r
- content = content.replace(/<\/?span[^>]*>/gi, "");\r
-\r
- if (this.editor.getParam("paste_remove_styles", true))\r
- content = content.replace(new RegExp('<(\\w[^>]*) style="([^"]*)"([^>]*)', 'gi'), "<$1$3");\r
-\r
- content = content.replace(/<\/?font[^>]*>/gi, "");\r
-\r
- // Strips class attributes.\r
- switch (this.editor.getParam("paste_strip_class_attributes", "all")) {\r
- case "all":\r
- content = content.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi, "<$1$3");\r
- break;\r
-\r
- case "mso":\r
- content = content.replace(new RegExp('<(\\w[^>]*) class="?mso([^ |>]*)([^>]*)', 'gi'), "<$1$3");\r
- break;\r
- }\r
-\r
- content = content.replace(new RegExp('href="?' + this._reEscape("" + document.location) + '', 'gi'), 'href="' + this.editor.documentBaseURI.getURI());\r
- content = content.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3");\r
- content = content.replace(/<\\?\?xml[^>]*>/gi, "");\r
- content = content.replace(/<\/?\w+:[^>]*>/gi, "");\r
- content = content.replace(/-- page break --\s*<p> <\/p>/gi, ""); // Remove pagebreaks\r
- content = content.replace(/-- page break --/gi, ""); // Remove pagebreaks\r
-\r
- // content = content.replace(/\/? */gi, ""); \r
- // content = content.replace(/<p> <\/p>/gi, '');\r
-\r
- if (!this.editor.getParam('force_p_newlines')) {\r
- content = content.replace('', '' ,'gi');\r
- content = content.replace('</p>', '<br /><br />' ,'gi');\r
- }\r
-\r
- if (!tinymce.isIE && !this.editor.getParam('force_p_newlines')) {\r
- content = content.replace(/<\/?p[^>]*>/gi, "");\r
- }\r
-\r
- content = content.replace(/<\/?div[^>]*>/gi, "");\r
-\r
- // Convert all middlot lists to UL lists\r
- if (this.editor.getParam("paste_convert_middot_lists", true)) {\r
- var div = ed.dom.create("div", null, content);\r
-\r
- // Convert all middot paragraphs to li elements\r
- var className = this.editor.getParam("paste_unindented_list_class", "unIndentedList");\r
-\r
- while (this._convertMiddots(div, "--list--")) ; // bull\r
- while (this._convertMiddots(div, middot, className)) ; // Middot\r
- while (this._convertMiddots(div, bull)) ; // bull\r
-\r
- content = div.innerHTML;\r
- }\r
-\r
- // Replace all headers with strong and fix some other issues\r
- if (this.editor.getParam("paste_convert_headers_to_strong", false)) {\r
- content = content.replace(/<h[1-6]> <\/h[1-6]>/gi, '<p> </p>');\r
- content = content.replace(/<h[1-6]>/gi, '<p><b>');\r
- content = content.replace(/<\/h[1-6]>/gi, '</b></p>');\r
- content = content.replace(/<b> <\/b>/gi, '<b> </b>');\r
- content = content.replace(/^( )*/gi, '');\r
- }\r
-\r
- content = content.replace(/--list--/gi, ""); // Remove --list--\r
-\r
- if (ed.getParam('paste_insert_word_content_callback'))\r
- content = ed.execCallback('paste_insert_word_content_callback', 'after', content);\r
-\r
- // Insert cleaned content\r
- this.editor.execCommand("mceInsertContent", false, content);\r
-\r
- if (this.editor.getParam('paste_force_cleanup_wordpaste', true)) {\r
- var ed = this.editor;\r
-\r
- window.setTimeout(function() {\r
- ed.execCommand("mceCleanup");\r
- }, 1); // Do normal cleanup detached from this thread\r
- }\r
- }\r
- },\r
-\r
- _reEscape : function(s) {\r
- var l = "?.\\*[](){}+^$:";\r
- var o = "";\r
-\r
- for (var i=0; i<s.length; i++) {\r
- var c = s.charAt(i);\r
-\r
- if (l.indexOf(c) != -1)\r
- o += '\\' + c;\r
- else\r
- o += c;\r
- }\r
-\r
- return o;\r
- },\r
-\r
- _convertMiddots : function(div, search, class_name) {\r
- var ed = this.editor, mdot = String.fromCharCode(183), bull = String.fromCharCode(8226);\r
- var nodes, prevul, i, p, ul, li, np, cp, li;\r
-\r
- nodes = div.getElementsByTagName("p");\r
- for (i=0; i<nodes.length; i++) {\r
- p = nodes[i];\r
-\r
- // Is middot\r
- if (p.innerHTML.indexOf(search) == 0) {\r
- ul = ed.dom.create("ul");\r
-\r
- if (class_name)\r
- ul.className = class_name;\r
-\r
- // Add the first one\r
- li = ed.dom.create("li");\r
- li.innerHTML = p.innerHTML.replace(new RegExp('' + mdot + '|' + bull + '|--list--| ', "gi"), '');\r
- ul.appendChild(li);\r
-\r
- // Add the rest\r
- np = p.nextSibling;\r
- while (np) {\r
- // If the node is whitespace, then\r
- // ignore it and continue on.\r
- if (np.nodeType == 3 && new RegExp('^\\s$', 'm').test(np.nodeValue)) {\r
- np = np.nextSibling;\r
- continue;\r
- }\r
-\r
- if (search == mdot) {\r
- if (np.nodeType == 1 && new RegExp('^o(\\s+| )').test(np.innerHTML)) {\r
- // Second level of nesting\r
- if (!prevul) {\r
- prevul = ul;\r
- ul = ed.dom.create("ul");\r
- prevul.appendChild(ul);\r
- }\r
- np.innerHTML = np.innerHTML.replace(/^o/, '');\r
- } else {\r
- // Pop the stack if we're going back up to the first level\r
- if (prevul) {\r
- ul = prevul;\r
- prevul = null;\r
- }\r
- // Not element or middot paragraph\r
- if (np.nodeType != 1 || np.innerHTML.indexOf(search) != 0)\r
- break;\r
- }\r
- } else {\r
- // Not element or middot paragraph\r
- if (np.nodeType != 1 || np.innerHTML.indexOf(search) != 0)\r
- break;\r
- }\r
-\r
- cp = np.nextSibling;\r
- li = ed.dom.create("li");\r
- li.innerHTML = np.innerHTML.replace(new RegExp('' + mdot + '|' + bull + '|--list--| ', "gi"), '');\r
- np.parentNode.removeChild(np);\r
- ul.appendChild(li);\r
- np = cp;\r
- }\r
-\r
- p.parentNode.replaceChild(ul, p);\r
-\r
- return true;\r
- }\r
- }\r
-\r
- return false;\r
- },\r
-\r
- _clipboardHTML : function() {\r
- var div = document.getElementById('_TinyMCE_clipboardHTML');\r
-\r
- if (!div) {\r
- var div = document.createElement('DIV');\r
- div.id = '_TinyMCE_clipboardHTML';\r
-\r
- with (div.style) {\r
- visibility = 'hidden';\r
- overflow = 'hidden';\r
- position = 'absolute';\r
- width = 1;\r
- height = 1;\r
- }\r
-\r
- document.body.appendChild(div);\r
- }\r
-\r
- div.innerHTML = '';\r
- var rng = document.body.createTextRange();\r
- rng.moveToElementText(div);\r
- rng.execCommand('Paste');\r
- var html = div.innerHTML;\r
- div.innerHTML = '';\r
- return html;\r
- }\r
- });\r
-\r
- // Register plugin\r
- tinymce.PluginManager.add('paste', tinymce.plugins.PastePlugin);\r
-})();
\ No newline at end of file
+++ /dev/null
-tinyMCEPopup.requireLangPack();\r
-\r
-function saveContent() {\r
- if (document.forms[0].htmlSource.value == '') {\r
- tinyMCEPopup.close();\r
- return false;\r
- }\r
-\r
- tinyMCEPopup.execCommand('mcePasteText', false, {\r
- html : document.forms[0].htmlSource.value,\r
- linebreaks : document.forms[0].linebreaks.checked\r
- });\r
-\r
- tinyMCEPopup.close();\r
-}\r
-\r
-function onLoadInit() {\r
- tinyMCEPopup.resizeToInnerSize();\r
-\r
- // Remove Gecko spellchecking\r
- if (tinymce.isGecko)\r
- document.body.spellcheck = tinyMCEPopup.getParam("gecko_spellcheck");\r
-\r
- resizeInputs();\r
-}\r
-\r
-var wHeight=0, wWidth=0, owHeight=0, owWidth=0;\r
-\r
-function resizeInputs() {\r
- if (!tinymce.isIE) {\r
- wHeight = self.innerHeight-80;\r
- wWidth = self.innerWidth-17;\r
- } else {\r
- wHeight = document.body.clientHeight-80;\r
- wWidth = document.body.clientWidth-17;\r
- }\r
-\r
- document.forms[0].htmlSource.style.height = Math.abs(wHeight) + 'px';\r
- document.forms[0].htmlSource.style.width = Math.abs(wWidth) + 'px';\r
-}\r
-\r
-tinyMCEPopup.onInit.add(onLoadInit);
\ No newline at end of file
+++ /dev/null
-tinyMCEPopup.requireLangPack();\r
-\r
-function saveContent() {\r
- var html = document.getElementById("frmData").contentWindow.document.body.innerHTML;\r
-\r
- if (html == ''){\r
- tinyMCEPopup.close();\r
- return false;\r
- }\r
-\r
- tinyMCEPopup.execCommand('mcePasteWord', false, html);\r
- tinyMCEPopup.close();\r
-}\r
-\r
-function onLoadInit() {\r
- tinyMCEPopup.resizeToInnerSize();\r
-\r
- // Fix for endless reloading in FF\r
- window.setTimeout(createIFrame, 10);\r
-}\r
-\r
-function createIFrame() {\r
- document.getElementById('iframecontainer').innerHTML = '<iframe id="frmData" name="frmData" class="sourceIframe" src="blank.htm" height="280" width="400" frameborder="0" style="background-color:#FFFFFF; width:100%;" dir="ltr" wrap="soft"></iframe>';\r
-}\r
-\r
-var wHeight=0, wWidth=0, owHeight=0, owWidth=0;\r
-\r
-function initIframe(doc) {\r
- var dir = tinyMCEPopup.editor.settings.directionality;\r
-\r
- doc.body.dir = dir;\r
-\r
- // Remove Gecko spellchecking\r
- if (tinymce.isGecko)\r
- doc.body.spellcheck = tinyMCEPopup.getParam("gecko_spellcheck");\r
-\r
- resizeInputs();\r
-}\r
-\r
-function resizeInputs() {\r
- if (!tinymce.isIE) {\r
- wHeight = self.innerHeight - 80;\r
- wWidth = self.innerWidth - 18;\r
- } else {\r
- wHeight = document.body.clientHeight - 80;\r
- wWidth = document.body.clientWidth - 18;\r
- }\r
-\r
- var elm = document.getElementById('frmData');\r
- if (elm) {\r
- elm.style.height = Math.abs(wHeight) + 'px';\r
- elm.style.width = Math.abs(wWidth) + 'px';\r
- }\r
-}\r
-\r
-tinyMCEPopup.onInit.add(onLoadInit);\r
+++ /dev/null
-tinyMCE.addI18n('en.paste_dlg',{\r
-text_title:"Use CTRL+V on your keyboard to paste the text into the window.",\r
-text_linebreaks:"Keep linebreaks",\r
-word_title:"Use CTRL+V on your keyboard to paste the text into the window."\r
-});
\ No newline at end of file
+++ /dev/null
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
- <title>{#paste.paste_text_desc}</title>\r
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />\r
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
- <script type="text/javascript" src="js/pastetext.js"></script>\r
- <base target="_self" />\r
-</head>\r
-<body onresize="resizeInputs();" style="display:none; overflow:hidden;">\r
-<form name="source" onsubmit="saveContent();return false;" action="#">\r
- <div style="float: left" class="title">{#paste.paste_text_desc}</div>\r
-\r
- <div style="float: right">\r
- <input type="checkbox" name="linebreaks" id="linebreaks" class="wordWrapCode" checked="checked" /><label for="linebreaks">{#paste_dlg.text_linebreaks}</label>\r
- </div>\r
-\r
- <br style="clear: both" />\r
-\r
- <div>{#paste_dlg.text_title}</div>\r
-\r
- <textarea name="htmlSource" id="htmlSource" rows="15" cols="100" style="width: 100%; height: 100%; font-family: 'Courier New',Courier,mono; font-size: 12px;" dir="ltr" wrap="soft" class="mceFocus"></textarea>\r
-\r
- <div class="mceActionPanel">\r
- <div style="float: left">\r
- <input type="submit" name="insert" value="{#insert}" id="insert" />\r
- </div>\r
-\r
- <div style="float: right">\r
- <input type="button" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" id="cancel" />\r
- </div>\r
- </div>\r
-</form>\r
-</body> \r
-</html>
\ No newline at end of file
+++ /dev/null
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />\r
- <title>{#paste.paste_word_desc}</title>\r
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
- <script type="text/javascript" src="js/pasteword.js"></script>\r
- <link href="css/pasteword.css" rel="stylesheet" type="text/css" />\r
- <base target="_self" />\r
-</head>\r
-<body onresize="resizeInputs();" style="display:none; overflow:hidden;">\r
- <form name="source" onsubmit="saveContent();" action="#">\r
- <div class="title">{#paste.paste_word_desc}</div>\r
-\r
- <div>{#paste_dlg.word_title}</div>\r
-\r
- <div id="iframecontainer"></div>\r
-\r
- <div class="mceActionPanel">\r
- <div style="float: left">\r
- <input type="button" id="insert" name="insert" value="{#insert}" onclick="saveContent();" />\r
- </div>\r
-\r
- <div style="float: right">\r
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
- </div>\r
- </div>\r
- </form>\r
-</body>\r
-</html>\r
+++ /dev/null
-(function(){tinymce.create('tinymce.plugins.Preview',{init:function(ed,url){var t=this,css=tinymce.explode(ed.settings.content_css);t.editor=ed;tinymce.each(css,function(u,k){css[k]=ed.documentBaseURI.toAbsolute(u);});ed.addCommand('mcePreview',function(){ed.windowManager.open({file:ed.getParam("plugin_preview_pageurl",url+"/preview.html"),width:parseInt(ed.getParam("plugin_preview_width","550")),height:parseInt(ed.getParam("plugin_preview_height","600")),resizable:"yes",scrollbars:"yes",popup_css:css.join(','),inline:ed.getParam("plugin_preview_inline",1)},{base:ed.documentBaseURI.getURI()});});ed.addButton('preview',{title:'preview.preview_desc',cmd:'mcePreview'});},getInfo:function(){return{longname:'Preview',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/preview',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('preview',tinymce.plugins.Preview);})();
\ No newline at end of file
+++ /dev/null
-/**
- * $Id: editor_plugin_src.js 895 2008-07-10 14:34:23Z spocke $
- *
- * @author Moxiecode
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.
- */
-
-(function() {
- tinymce.create('tinymce.plugins.Preview', {
- init : function(ed, url) {
- var t = this, css = tinymce.explode(ed.settings.content_css);
-
- t.editor = ed;
-
- // Force absolute CSS urls
- tinymce.each(css, function(u, k) {
- css[k] = ed.documentBaseURI.toAbsolute(u);
- });
-
- ed.addCommand('mcePreview', function() {
- ed.windowManager.open({
- file : ed.getParam("plugin_preview_pageurl", url + "/preview.html"),
- width : parseInt(ed.getParam("plugin_preview_width", "550")),
- height : parseInt(ed.getParam("plugin_preview_height", "600")),
- resizable : "yes",
- scrollbars : "yes",
- popup_css : css.join(','),
- inline : ed.getParam("plugin_preview_inline", 1)
- }, {
- base : ed.documentBaseURI.getURI()
- });
- });
-
- ed.addButton('preview', {title : 'preview.preview_desc', cmd : 'mcePreview'});
- },
-
- getInfo : function() {
- return {
- longname : 'Preview',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/preview',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('preview', tinymce.plugins.Preview);
-})();
\ No newline at end of file
+++ /dev/null
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
-<script language="javascript" src="../../tiny_mce_popup.js"></script>\r
-<script type="text/javascript" src="jscripts/embed.js"></script>\r
-<script type="text/javascript">\r
-tinyMCEPopup.onInit.add(function(ed) {\r
- var dom = tinyMCEPopup.dom;\r
-\r
- // Load editor content_css\r
- tinymce.each(ed.settings.content_css.split(','), function(u) {\r
- dom.loadCSS(ed.documentBaseURI.toAbsolute(u));\r
- });\r
-\r
- // Place contents inside div container\r
- dom.setHTML('content', ed.getContent());\r
-});\r
-</script>\r
-<title>Example of a custom preview page</title>\r
-</head>\r
-<body>\r
-\r
-Editor contents: <br />\r
-<div id="content">\r
-<!-- Gets filled with editor contents -->\r
-</div>\r
-\r
-</body>\r
-</html>\r
+++ /dev/null
-/**\r
- * This script contains embed functions for common plugins. This scripts are complety free to use for any purpose.\r
- */\r
-\r
-function writeFlash(p) {\r
- writeEmbed(\r
- 'D27CDB6E-AE6D-11cf-96B8-444553540000',\r
- 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',\r
- 'application/x-shockwave-flash',\r
- p\r
- );\r
-}\r
-\r
-function writeShockWave(p) {\r
- writeEmbed(\r
- '166B1BCA-3F9C-11CF-8075-444553540000',\r
- 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0',\r
- 'application/x-director',\r
- p\r
- );\r
-}\r
-\r
-function writeQuickTime(p) {\r
- writeEmbed(\r
- '02BF25D5-8C17-4B23-BC80-D3488ABDDC6B',\r
- 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0',\r
- 'video/quicktime',\r
- p\r
- );\r
-}\r
-\r
-function writeRealMedia(p) {\r
- writeEmbed(\r
- 'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA',\r
- 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',\r
- 'audio/x-pn-realaudio-plugin',\r
- p\r
- );\r
-}\r
-\r
-function writeWindowsMedia(p) {\r
- p.url = p.src;\r
- writeEmbed(\r
- '6BF52A52-394A-11D3-B153-00C04F79FAA6',\r
- 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701',\r
- 'application/x-mplayer2',\r
- p\r
- );\r
-}\r
-\r
-function writeEmbed(cls, cb, mt, p) {\r
- var h = '', n;\r
-\r
- h += '<object classid="clsid:' + cls + '" codebase="' + cb + '"';\r
- h += typeof(p.id) != "undefined" ? 'id="' + p.id + '"' : '';\r
- h += typeof(p.name) != "undefined" ? 'name="' + p.name + '"' : '';\r
- h += typeof(p.width) != "undefined" ? 'width="' + p.width + '"' : '';\r
- h += typeof(p.height) != "undefined" ? 'height="' + p.height + '"' : '';\r
- h += typeof(p.align) != "undefined" ? 'align="' + p.align + '"' : '';\r
- h += '>';\r
-\r
- for (n in p)\r
- h += '<param name="' + n + '" value="' + p[n] + '">';\r
-\r
- h += '<embed type="' + mt + '"';\r
-\r
- for (n in p)\r
- h += n + '="' + p[n] + '" ';\r
-\r
- h += '></embed></object>';\r
-\r
- document.write(h);\r
-}\r
+++ /dev/null
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
-<script language="javascript" src="../../tiny_mce_popup.js"></script>\r
-<script type="text/javascript" src="jscripts/embed.js"></script>\r
-<script type="text/javascript">\r
-tinyMCEPopup.onInit.add(function(ed) {\r
- var dom = tinyMCEPopup.dom;\r
-\r
- dom.setHTML('content', ed.getContent());\r
-});\r
-\r
-document.write('<base href="' + tinyMCEPopup.getWindowArg("base") + '">');\r
-</script>\r
-<title>{#preview.preview_desc}</title>\r
-</head>\r
-<body id="content">\r
-<!-- Gets filled with editor contents -->\r
-</body>\r
-</html>\r
+++ /dev/null
-(function(){tinymce.create('tinymce.plugins.Print',{init:function(ed,url){ed.addCommand('mcePrint',function(){ed.getWin().print();});ed.addButton('print',{title:'print.print_desc',cmd:'mcePrint'});},getInfo:function(){return{longname:'Print',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/print',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('print',tinymce.plugins.Print);})();
\ No newline at end of file
+++ /dev/null
-/**\r
- * $Id: editor_plugin_src.js 520 2008-01-07 16:30:32Z spocke $\r
- *\r
- * @author Moxiecode\r
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-(function() {\r
- tinymce.create('tinymce.plugins.Print', {\r
- init : function(ed, url) {\r
- ed.addCommand('mcePrint', function() {\r
- ed.getWin().print();\r
- });\r
-\r
- ed.addButton('print', {title : 'print.print_desc', cmd : 'mcePrint'});\r
- },\r
-\r
- getInfo : function() {\r
- return {\r
- longname : 'Print',\r
- author : 'Moxiecode Systems AB',\r
- authorurl : 'http://tinymce.moxiecode.com',\r
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/print',\r
- version : tinymce.majorVersion + "." + tinymce.minorVersion\r
- };\r
- }\r
- });\r
-\r
- // Register plugin\r
- tinymce.PluginManager.add('print', tinymce.plugins.Print);\r
-})();\r
+++ /dev/null
-<!-- WebKit -->
\ No newline at end of file
+++ /dev/null
-(function(){var Event=tinymce.dom.Event,grep=tinymce.grep,each=tinymce.each,inArray=tinymce.inArray,isOldWebKit=tinymce.isOldWebKit;tinymce.create('tinymce.plugins.Safari',{init:function(ed){var t=this,dom;if(!tinymce.isWebKit)return;t.editor=ed;t.webKitFontSizes=['x-small','small','medium','large','x-large','xx-large','-webkit-xxx-large'];t.namedFontSizes=['xx-small','x-small','small','medium','large','x-large','xx-large'];ed.addCommand('CreateLink',function(u,v){var n=ed.selection.getNode(),dom=ed.dom,a;if(n&&(/^(left|right)$/i.test(dom.getStyle(n,'float',1))||/^(left|right)$/i.test(dom.getAttrib(n,'align')))){a=dom.create('a',{href:v},n.cloneNode());n.parentNode.replaceChild(a,n);ed.selection.select(a);}else ed.getDoc().execCommand("CreateLink",false,v);});ed.onPaste.add(function(ed,e){function removeStyles(e){e=e.target;if(e.nodeType==1){e.style.cssText='';each(ed.dom.select('*',e),function(e){e.style.cssText='';});}};Event.add(ed.getDoc(),'DOMNodeInserted',removeStyles);window.setTimeout(function(){Event.remove(ed.getDoc(),'DOMNodeInserted',removeStyles);},0);});ed.onKeyUp.add(function(ed,e){var h,b;if(e.keyCode==46||e.keyCode==8){b=ed.getBody();h=b.innerHTML;if(b.childNodes.length==1&&!/<(img|hr)/.test(h)&&tinymce.trim(h.replace(/<[^>]+>/g,'')).length==0)ed.setContent('',{format:'raw'});}});ed.addCommand('FormatBlock',function(u,v){var dom=ed.dom,e=dom.getParent(ed.selection.getNode(),dom.isBlock);if(e)dom.replace(dom.create(v),e,1);else ed.getDoc().execCommand("FormatBlock",false,v);});ed.addCommand('mceInsertContent',function(u,v){ed.getDoc().execCommand("InsertText",false,'mce_marker');ed.getBody().innerHTML=ed.getBody().innerHTML.replace(/mce_marker/g,v+'<span id="_mce_tmp">XX</span>');ed.selection.select(ed.dom.get('_mce_tmp'));ed.getDoc().execCommand("Delete",false,' ');});ed.onKeyPress.add(function(ed,e){if(e.keyCode==13&&(e.shiftKey||ed.settings.force_br_newlines&&ed.selection.getNode().nodeName!='LI')){t._insertBR(ed);Event.cancel(e);}});ed.addQueryValueHandler('FontSize',function(u,v){var e,v;if((e=ed.dom.getParent(ed.selection.getStart(),'span'))&&(v=e.style.fontSize))return tinymce.inArray(t.namedFontSizes,v)+1;if((e=ed.dom.getParent(ed.selection.getEnd(),'span'))&&(v=e.style.fontSize))return tinymce.inArray(t.namedFontSizes,v)+1;return ed.getDoc().queryCommandValue('FontSize');});ed.addQueryValueHandler('FontName',function(u,v){var e,v;if((e=ed.dom.getParent(ed.selection.getStart(),'span'))&&(v=e.style.fontFamily))return v.replace(/, /g,',');if((e=ed.dom.getParent(ed.selection.getEnd(),'span'))&&(v=e.style.fontFamily))return v.replace(/, /g,',');return ed.getDoc().queryCommandValue('FontName');});ed.onClick.add(function(ed,e){e=e.target;if(e.nodeName=='IMG'){t.selElm=e;ed.selection.select(e);}else t.selElm=null;});ed.onInit.add(function(){t._fixWebKitSpans();if(isOldWebKit)t._patchSafari2x(ed);});ed.onSetContent.add(function(){dom=ed.dom;each(['strong','b','em','u','strike','sub','sup','a'],function(v){each(grep(dom.select(v)).reverse(),function(n){var nn=n.nodeName.toLowerCase(),st;if(nn=='a'){if(n.name)dom.replace(dom.create('img',{mce_name:'a',name:n.name,'class':'mceItemAnchor'}),n);return;}switch(nn){case'b':case'strong':if(nn=='b')nn='strong';st='font-weight: bold;';break;case'em':st='font-style: italic;';break;case'u':st='text-decoration: underline;';break;case'sub':st='vertical-align: sub;';break;case'sup':st='vertical-align: super;';break;case'strike':st='text-decoration: line-through;';break;}dom.replace(dom.create('span',{mce_name:nn,style:st,'class':'Apple-style-span'}),n,1);});});});ed.onPreProcess.add(function(ed,o){dom=ed.dom;each(grep(o.node.getElementsByTagName('span')).reverse(),function(n){var v,bg;if(o.get){if(dom.hasClass(n,'Apple-style-span')){bg=n.style.backgroundColor;switch(dom.getAttrib(n,'mce_name')){case'font':if(!ed.settings.convert_fonts_to_spans)dom.setAttrib(n,'style','');break;case'strong':case'em':case'sub':case'sup':dom.setAttrib(n,'style','');break;case'strike':case'u':if(!ed.settings.inline_styles)dom.setAttrib(n,'style','');else dom.setAttrib(n,'mce_name','');break;default:if(!ed.settings.inline_styles)dom.setAttrib(n,'style','');}if(bg)n.style.backgroundColor=bg;}}if(dom.hasClass(n,'mceItemRemoved'))dom.remove(n,1);});});ed.onPostProcess.add(function(ed,o){o.content=o.content.replace(/<br \/><\/(h[1-6]|div|p|address|pre)>/g,'</$1>');o.content=o.content.replace(/ id=\"undefined\"/g,'');});},getInfo:function(){return{longname:'Safari compatibility',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/safari',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_fixWebKitSpans:function(){var t=this,ed=t.editor;if(!isOldWebKit){Event.add(ed.getDoc(),'DOMNodeInserted',function(e){e=e.target;if(e&&e.nodeType==1)t._fixAppleSpan(e);});}else{ed.onExecCommand.add(function(){each(ed.dom.select('span'),function(n){t._fixAppleSpan(n);});ed.nodeChanged();});}},_fixAppleSpan:function(e){var ed=this.editor,dom=ed.dom,fz=this.webKitFontSizes,fzn=this.namedFontSizes,s=ed.settings,st,p;if(dom.getAttrib(e,'mce_fixed'))return;if(e.nodeName=='SPAN'&&e.className=='Apple-style-span'){st=e.style;if(!s.convert_fonts_to_spans){if(st.fontSize){dom.setAttrib(e,'mce_name','font');dom.setAttrib(e,'size',inArray(fz,st.fontSize)+1);}if(st.fontFamily){dom.setAttrib(e,'mce_name','font');dom.setAttrib(e,'face',st.fontFamily);}if(st.color){dom.setAttrib(e,'mce_name','font');dom.setAttrib(e,'color',dom.toHex(st.color));}if(st.backgroundColor){dom.setAttrib(e,'mce_name','font');dom.setStyle(e,'background-color',st.backgroundColor);}}else{if(st.fontSize)dom.setStyle(e,'fontSize',fzn[inArray(fz,st.fontSize)]);}if(st.fontWeight=='bold')dom.setAttrib(e,'mce_name','strong');if(st.fontStyle=='italic')dom.setAttrib(e,'mce_name','em');if(st.textDecoration=='underline')dom.setAttrib(e,'mce_name','u');if(st.textDecoration=='line-through')dom.setAttrib(e,'mce_name','strike');if(st.verticalAlign=='super')dom.setAttrib(e,'mce_name','sup');if(st.verticalAlign=='sub')dom.setAttrib(e,'mce_name','sub');dom.setAttrib(e,'mce_fixed','1');}},_patchSafari2x:function(ed){var t=this,setContent,getNode,dom=ed.dom,lr;if(ed.windowManager.onBeforeOpen){ed.windowManager.onBeforeOpen.add(function(){r=ed.selection.getRng();});}ed.selection.select=function(n){this.getSel().setBaseAndExtent(n,0,n,1);};getNode=ed.selection.getNode;ed.selection.getNode=function(){return t.selElm||getNode.call(this);};ed.selection.getRng=function(){var t=this,s=t.getSel(),d=ed.getDoc(),r,rb,ra,di;if(s.anchorNode){r=d.createRange();try{rb=d.createRange();rb.setStart(s.anchorNode,s.anchorOffset);rb.collapse(1);ra=d.createRange();ra.setStart(s.focusNode,s.focusOffset);ra.collapse(1);di=rb.compareBoundaryPoints(rb.START_TO_END,ra)<0;r.setStart(di?s.anchorNode:s.focusNode,di?s.anchorOffset:s.focusOffset);r.setEnd(di?s.focusNode:s.anchorNode,di?s.focusOffset:s.anchorOffset);lr=r;}catch(ex){}}return r||lr;};setContent=ed.selection.setContent;ed.selection.setContent=function(h,s){var r=this.getRng(),b;try{setContent.call(this,h,s);}catch(ex){b=dom.create('body');b.innerHTML=h;each(b.childNodes,function(n){r.insertNode(n.cloneNode(true));});}};},_insertBR:function(ed){var dom=ed.dom,s=ed.selection,r=s.getRng(),br;r.insertNode(br=dom.create('br'));r.setStartAfter(br);r.setEndAfter(br);s.setRng(r);if(s.getSel().focusNode==br.previousSibling){s.select(dom.insertAfter(dom.doc.createTextNode('\u00a0'),br));s.collapse(1);}ed.getWin().scrollTo(0,dom.getPos(s.getRng().startContainer).y);}});tinymce.PluginManager.add('safari',tinymce.plugins.Safari);})();
\ No newline at end of file
+++ /dev/null
-/**\r
- * $Id: editor_plugin_src.js 264 2007-04-26 20:53:09Z spocke $\r
- *\r
- * @author Moxiecode\r
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-(function() {\r
- var Event = tinymce.dom.Event, grep = tinymce.grep, each = tinymce.each, inArray = tinymce.inArray, isOldWebKit = tinymce.isOldWebKit;\r
-\r
- tinymce.create('tinymce.plugins.Safari', {\r
- init : function(ed) {\r
- var t = this, dom;\r
-\r
- // Ignore on non webkit\r
- if (!tinymce.isWebKit)\r
- return;\r
-\r
- t.editor = ed;\r
- t.webKitFontSizes = ['x-small', 'small', 'medium', 'large', 'x-large', 'xx-large', '-webkit-xxx-large'];\r
- t.namedFontSizes = ['xx-small', 'x-small','small','medium','large','x-large', 'xx-large'];\r
-\r
- // Safari CreateLink command will not work correctly on images that is aligned\r
- ed.addCommand('CreateLink', function(u, v) {\r
- var n = ed.selection.getNode(), dom = ed.dom, a;\r
-\r
- if (n && (/^(left|right)$/i.test(dom.getStyle(n, 'float', 1)) || /^(left|right)$/i.test(dom.getAttrib(n, 'align')))) {\r
- a = dom.create('a', {href : v}, n.cloneNode());\r
- n.parentNode.replaceChild(a, n);\r
- ed.selection.select(a);\r
- } else\r
- ed.getDoc().execCommand("CreateLink", false, v);\r
- });\r
-\r
- ed.onPaste.add(function(ed, e) {\r
- function removeStyles(e) {\r
- e = e.target;\r
-\r
- if (e.nodeType == 1) {\r
- e.style.cssText = '';\r
-\r
- each(ed.dom.select('*', e), function(e) {\r
- e.style.cssText = '';\r
- });\r
- }\r
- };\r
-\r
- Event.add(ed.getDoc(), 'DOMNodeInserted', removeStyles);\r
-\r
- window.setTimeout(function() {\r
- Event.remove(ed.getDoc(), 'DOMNodeInserted', removeStyles);\r
- }, 0);\r
- });\r
-\r
- ed.onKeyUp.add(function(ed, e) {\r
- var h, b;\r
-\r
- // If backspace or delete key\r
- if (e.keyCode == 46 || e.keyCode == 8) {\r
- b = ed.getBody();\r
- h = b.innerHTML;\r
-\r
- // If there is no text content or images or hr elements then remove everything\r
- if (b.childNodes.length == 1 && !/<(img|hr)/.test(h) && tinymce.trim(h.replace(/<[^>]+>/g, '')).length == 0)\r
- ed.setContent('', {format : 'raw'});\r
- }\r
- });\r
-\r
- // Workaround for FormatBlock bug, http://bugs.webkit.org/show_bug.cgi?id=16004\r
- ed.addCommand('FormatBlock', function(u, v) {\r
- var dom = ed.dom, e = dom.getParent(ed.selection.getNode(), dom.isBlock);\r
-\r
- if (e)\r
- dom.replace(dom.create(v), e, 1);\r
- else\r
- ed.getDoc().execCommand("FormatBlock", false, v);\r
- });\r
-\r
- // Workaround for InsertHTML bug, http://bugs.webkit.org/show_bug.cgi?id=16382\r
- ed.addCommand('mceInsertContent', function(u, v) {\r
- ed.getDoc().execCommand("InsertText", false, 'mce_marker');\r
- ed.getBody().innerHTML = ed.getBody().innerHTML.replace(/mce_marker/g, v + '<span id="_mce_tmp">XX</span>');\r
- ed.selection.select(ed.dom.get('_mce_tmp'));\r
- ed.getDoc().execCommand("Delete", false, ' ');\r
- });\r
-\r
- // Workaround for missing shift+enter support, http://bugs.webkit.org/show_bug.cgi?id=16973\r
- ed.onKeyPress.add(function(ed, e) {\r
- if (e.keyCode == 13 && (e.shiftKey || ed.settings.force_br_newlines && ed.selection.getNode().nodeName != 'LI')) {\r
- t._insertBR(ed);\r
- Event.cancel(e);\r
- }\r
- });\r
-\r
- // Safari returns incorrect values\r
- ed.addQueryValueHandler('FontSize', function(u, v) {\r
- var e, v;\r
-\r
- // Check for the real font size at the start of selection\r
- if ((e = ed.dom.getParent(ed.selection.getStart(), 'span')) && (v = e.style.fontSize))\r
- return tinymce.inArray(t.namedFontSizes, v) + 1;\r
-\r
- // Check for the real font size at the end of selection\r
- if ((e = ed.dom.getParent(ed.selection.getEnd(), 'span')) && (v = e.style.fontSize))\r
- return tinymce.inArray(t.namedFontSizes, v) + 1;\r
-\r
- // Return default value it's better than nothing right!\r
- return ed.getDoc().queryCommandValue('FontSize');\r
- });\r
-\r
- // Safari returns incorrect values\r
- ed.addQueryValueHandler('FontName', function(u, v) {\r
- var e, v;\r
-\r
- // Check for the real font name at the start of selection\r
- if ((e = ed.dom.getParent(ed.selection.getStart(), 'span')) && (v = e.style.fontFamily))\r
- return v.replace(/, /g, ',');\r
-\r
- // Check for the real font name at the end of selection\r
- if ((e = ed.dom.getParent(ed.selection.getEnd(), 'span')) && (v = e.style.fontFamily))\r
- return v.replace(/, /g, ',');\r
-\r
- // Return default value it's better than nothing right!\r
- return ed.getDoc().queryCommandValue('FontName');\r
- });\r
-\r
- // Workaround for bug, http://bugs.webkit.org/show_bug.cgi?id=12250\r
- ed.onClick.add(function(ed, e) {\r
- e = e.target;\r
-\r
- if (e.nodeName == 'IMG') {\r
- t.selElm = e;\r
- ed.selection.select(e);\r
- } else\r
- t.selElm = null;\r
- });\r
-\r
-/* ed.onBeforeExecCommand.add(function(ed, c, b) {\r
- var r = t.bookmarkRng;\r
-\r
- // Restore selection\r
- if (r) {\r
- ed.selection.setRng(r);\r
- t.bookmarkRng = null;\r
- //console.debug('restore', r.startContainer, r.startOffset, r.endContainer, r.endOffset);\r
- }\r
- });*/\r
-\r
- ed.onInit.add(function() {\r
- t._fixWebKitSpans();\r
-\r
-/* ed.windowManager.onOpen.add(function() {\r
- var r = ed.selection.getRng();\r
-\r
- // Store selection if valid\r
- if (r.startContainer != ed.getDoc()) {\r
- t.bookmarkRng = r.cloneRange();\r
- //console.debug('store', r.startContainer, r.startOffset, r.endContainer, r.endOffset);\r
- }\r
- });\r
-\r
- ed.windowManager.onClose.add(function() {\r
- t.bookmarkRng = null;\r
- });*/\r
-\r
- if (isOldWebKit)\r
- t._patchSafari2x(ed);\r
- });\r
-\r
- ed.onSetContent.add(function() {\r
- dom = ed.dom;\r
-\r
- // Convert strong,b,em,u,strike to spans\r
- each(['strong','b','em','u','strike','sub','sup','a'], function(v) {\r
- each(grep(dom.select(v)).reverse(), function(n) {\r
- var nn = n.nodeName.toLowerCase(), st;\r
-\r
- // Convert anchors into images\r
- if (nn == 'a') {\r
- if (n.name)\r
- dom.replace(dom.create('img', {mce_name : 'a', name : n.name, 'class' : 'mceItemAnchor'}), n);\r
-\r
- return;\r
- }\r
-\r
- switch (nn) {\r
- case 'b':\r
- case 'strong':\r
- if (nn == 'b')\r
- nn = 'strong';\r
-\r
- st = 'font-weight: bold;';\r
- break;\r
-\r
- case 'em':\r
- st = 'font-style: italic;';\r
- break;\r
-\r
- case 'u':\r
- st = 'text-decoration: underline;';\r
- break;\r
-\r
- case 'sub':\r
- st = 'vertical-align: sub;';\r
- break;\r
-\r
- case 'sup':\r
- st = 'vertical-align: super;';\r
- break;\r
-\r
- case 'strike':\r
- st = 'text-decoration: line-through;';\r
- break;\r
- }\r
-\r
- dom.replace(dom.create('span', {mce_name : nn, style : st, 'class' : 'Apple-style-span'}), n, 1);\r
- });\r
- });\r
- });\r
-\r
- ed.onPreProcess.add(function(ed, o) {\r
- dom = ed.dom;\r
-\r
- each(grep(o.node.getElementsByTagName('span')).reverse(), function(n) {\r
- var v, bg;\r
-\r
- if (o.get) {\r
- if (dom.hasClass(n, 'Apple-style-span')) {\r
- bg = n.style.backgroundColor;\r
-\r
- switch (dom.getAttrib(n, 'mce_name')) {\r
- case 'font':\r
- if (!ed.settings.convert_fonts_to_spans)\r
- dom.setAttrib(n, 'style', '');\r
- break;\r
-\r
- case 'strong':\r
- case 'em':\r
- case 'sub':\r
- case 'sup':\r
- dom.setAttrib(n, 'style', '');\r
- break;\r
-\r
- case 'strike':\r
- case 'u':\r
- if (!ed.settings.inline_styles)\r
- dom.setAttrib(n, 'style', '');\r
- else\r
- dom.setAttrib(n, 'mce_name', '');\r
-\r
- break;\r
-\r
- default:\r
- if (!ed.settings.inline_styles)\r
- dom.setAttrib(n, 'style', '');\r
- }\r
-\r
-\r
- if (bg)\r
- n.style.backgroundColor = bg;\r
- }\r
- }\r
-\r
- if (dom.hasClass(n, 'mceItemRemoved'))\r
- dom.remove(n, 1);\r
- });\r
- });\r
-\r
- ed.onPostProcess.add(function(ed, o) {\r
- // Safari adds BR at end of all block elements\r
- o.content = o.content.replace(/<br \/><\/(h[1-6]|div|p|address|pre)>/g, '</$1>');\r
-\r
- // Safari adds id="undefined" to HR elements\r
- o.content = o.content.replace(/ id=\"undefined\"/g, '');\r
- });\r
- },\r
-\r
- getInfo : function() {\r
- return {\r
- longname : 'Safari compatibility',\r
- author : 'Moxiecode Systems AB',\r
- authorurl : 'http://tinymce.moxiecode.com',\r
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/safari',\r
- version : tinymce.majorVersion + "." + tinymce.minorVersion\r
- };\r
- },\r
-\r
- // Internal methods\r
-\r
- _fixWebKitSpans : function() {\r
- var t = this, ed = t.editor;\r
-\r
- if (!isOldWebKit) {\r
- // Use mutator events on new WebKit\r
- Event.add(ed.getDoc(), 'DOMNodeInserted', function(e) {\r
- e = e.target;\r
-\r
- if (e && e.nodeType == 1)\r
- t._fixAppleSpan(e);\r
- });\r
- } else {\r
- // Do post command processing in old WebKit since the browser crashes on Mutator events :(\r
- ed.onExecCommand.add(function() {\r
- each(ed.dom.select('span'), function(n) {\r
- t._fixAppleSpan(n);\r
- });\r
-\r
- ed.nodeChanged();\r
- });\r
- }\r
- },\r
-\r
- _fixAppleSpan : function(e) {\r
- var ed = this.editor, dom = ed.dom, fz = this.webKitFontSizes, fzn = this.namedFontSizes, s = ed.settings, st, p;\r
-\r
- if (dom.getAttrib(e, 'mce_fixed'))\r
- return;\r
-\r
- // Handle Apple style spans\r
- if (e.nodeName == 'SPAN' && e.className == 'Apple-style-span') {\r
- st = e.style;\r
-\r
- if (!s.convert_fonts_to_spans) {\r
- if (st.fontSize) {\r
- dom.setAttrib(e, 'mce_name', 'font');\r
- dom.setAttrib(e, 'size', inArray(fz, st.fontSize) + 1);\r
- }\r
-\r
- if (st.fontFamily) {\r
- dom.setAttrib(e, 'mce_name', 'font');\r
- dom.setAttrib(e, 'face', st.fontFamily);\r
- }\r
-\r
- if (st.color) {\r
- dom.setAttrib(e, 'mce_name', 'font');\r
- dom.setAttrib(e, 'color', dom.toHex(st.color));\r
- }\r
-\r
- if (st.backgroundColor) {\r
- dom.setAttrib(e, 'mce_name', 'font');\r
- dom.setStyle(e, 'background-color', st.backgroundColor);\r
- }\r
- } else {\r
- if (st.fontSize)\r
- dom.setStyle(e, 'fontSize', fzn[inArray(fz, st.fontSize)]);\r
- }\r
-\r
- if (st.fontWeight == 'bold')\r
- dom.setAttrib(e, 'mce_name', 'strong');\r
-\r
- if (st.fontStyle == 'italic')\r
- dom.setAttrib(e, 'mce_name', 'em');\r
-\r
- if (st.textDecoration == 'underline')\r
- dom.setAttrib(e, 'mce_name', 'u');\r
-\r
- if (st.textDecoration == 'line-through')\r
- dom.setAttrib(e, 'mce_name', 'strike');\r
-\r
- if (st.verticalAlign == 'super')\r
- dom.setAttrib(e, 'mce_name', 'sup');\r
-\r
- if (st.verticalAlign == 'sub')\r
- dom.setAttrib(e, 'mce_name', 'sub');\r
-\r
- dom.setAttrib(e, 'mce_fixed', '1');\r
- }\r
- },\r
-\r
- _patchSafari2x : function(ed) {\r
- var t = this, setContent, getNode, dom = ed.dom, lr;\r
-\r
- // Inline dialogs\r
- if (ed.windowManager.onBeforeOpen) {\r
- ed.windowManager.onBeforeOpen.add(function() {\r
- r = ed.selection.getRng();\r
- });\r
- }\r
-\r
- // Fake select on 2.x\r
- ed.selection.select = function(n) {\r
- this.getSel().setBaseAndExtent(n, 0, n, 1);\r
- };\r
-\r
- getNode = ed.selection.getNode;\r
- ed.selection.getNode = function() {\r
- return t.selElm || getNode.call(this);\r
- };\r
-\r
- // Fake range on Safari 2.x\r
- ed.selection.getRng = function() {\r
- var t = this, s = t.getSel(), d = ed.getDoc(), r, rb, ra, di;\r
-\r
- // Fake range on Safari 2.x\r
- if (s.anchorNode) {\r
- r = d.createRange();\r
-\r
- try {\r
- // Setup before range\r
- rb = d.createRange();\r
- rb.setStart(s.anchorNode, s.anchorOffset);\r
- rb.collapse(1);\r
-\r
- // Setup after range\r
- ra = d.createRange();\r
- ra.setStart(s.focusNode, s.focusOffset);\r
- ra.collapse(1);\r
-\r
- // Setup start/end points by comparing locations\r
- di = rb.compareBoundaryPoints(rb.START_TO_END, ra) < 0;\r
- r.setStart(di ? s.anchorNode : s.focusNode, di ? s.anchorOffset : s.focusOffset);\r
- r.setEnd(di ? s.focusNode : s.anchorNode, di ? s.focusOffset : s.anchorOffset);\r
-\r
- lr = r;\r
- } catch (ex) {\r
- // Sometimes fails, at least we tried to do it by the book. I hope Safari 2.x will go disappear soooon!!!\r
- }\r
- }\r
-\r
- return r || lr;\r
- };\r
-\r
- // Fix setContent so it works\r
- setContent = ed.selection.setContent;\r
- ed.selection.setContent = function(h, s) {\r
- var r = this.getRng(), b;\r
-\r
- try {\r
- setContent.call(this, h, s);\r
- } catch (ex) {\r
- // Workaround for Safari 2.x\r
- b = dom.create('body');\r
- b.innerHTML = h;\r
-\r
- each(b.childNodes, function(n) {\r
- r.insertNode(n.cloneNode(true));\r
- });\r
- }\r
- };\r
- },\r
-\r
- _insertBR : function(ed) {\r
- var dom = ed.dom, s = ed.selection, r = s.getRng(), br;\r
-\r
- // Insert BR element\r
- r.insertNode(br = dom.create('br'));\r
-\r
- // Place caret after BR\r
- r.setStartAfter(br);\r
- r.setEndAfter(br);\r
- s.setRng(r);\r
-\r
- // Could not place caret after BR then insert an nbsp entity and move the caret\r
- if (s.getSel().focusNode == br.previousSibling) {\r
- s.select(dom.insertAfter(dom.doc.createTextNode('\u00a0'), br));\r
- s.collapse(1);\r
- }\r
-\r
- // Scroll to new position, scrollIntoView can't be used due to bug: http://bugs.webkit.org/show_bug.cgi?id=16117\r
- ed.getWin().scrollTo(0, dom.getPos(s.getRng().startContainer).y);\r
- }\r
- });\r
-\r
- // Register plugin\r
- tinymce.PluginManager.add('safari', tinymce.plugins.Safari);\r
-})();\r
-\r
+++ /dev/null
-(function(){tinymce.create('tinymce.plugins.Save',{init:function(ed,url){var t=this;t.editor=ed;ed.addCommand('mceSave',t._save,t);ed.addCommand('mceCancel',t._cancel,t);ed.addButton('save',{title:'save.save_desc',cmd:'mceSave'});ed.addButton('cancel',{title:'save.cancel_desc',cmd:'mceCancel'});ed.onNodeChange.add(t._nodeChange,t);ed.addShortcut('ctrl+s',ed.getLang('save.save_desc'),'mceSave');},getInfo:function(){return{longname:'Save',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/save',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_nodeChange:function(ed,cm,n){var ed=this.editor;if(ed.getParam('save_enablewhendirty')){cm.setDisabled('save',!ed.isDirty());cm.setDisabled('cancel',!ed.isDirty());}},_save:function(){var ed=this.editor,formObj,os,i,elementId;formObj=tinymce.DOM.get(ed.id).form||tinymce.DOM.getParent(ed.id,'form');if(ed.getParam("save_enablewhendirty")&&!ed.isDirty())return;tinyMCE.triggerSave();if(os=ed.getParam("save_onsavecallback")){if(ed.execCallback('save_onsavecallback',ed)){ed.startContent=tinymce.trim(ed.getContent({format:'raw'}));ed.nodeChanged();}return;}if(formObj){ed.isNotDirty=true;if(formObj.onsubmit==null||formObj.onsubmit()!=false)formObj.submit();ed.nodeChanged();}else ed.windowManager.alert("Error: No form element found.");},_cancel:function(){var ed=this.editor,os,h=tinymce.trim(ed.startContent);if(os=ed.getParam("save_oncancelcallback")){ed.execCallback('save_oncancelcallback',ed);return;}ed.setContent(h);ed.undoManager.clear();ed.nodeChanged();}});tinymce.PluginManager.add('save',tinymce.plugins.Save);})();
\ No newline at end of file
+++ /dev/null
-/**\r
- * $Id: editor_plugin_src.js 851 2008-05-26 15:38:49Z spocke $\r
- *\r
- * @author Moxiecode\r
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-(function() {\r
- tinymce.create('tinymce.plugins.Save', {\r
- init : function(ed, url) {\r
- var t = this;\r
-\r
- t.editor = ed;\r
-\r
- // Register commands\r
- ed.addCommand('mceSave', t._save, t);\r
- ed.addCommand('mceCancel', t._cancel, t);\r
-\r
- // Register buttons\r
- ed.addButton('save', {title : 'save.save_desc', cmd : 'mceSave'});\r
- ed.addButton('cancel', {title : 'save.cancel_desc', cmd : 'mceCancel'});\r
-\r
- ed.onNodeChange.add(t._nodeChange, t);\r
- ed.addShortcut('ctrl+s', ed.getLang('save.save_desc'), 'mceSave');\r
- },\r
-\r
- getInfo : function() {\r
- return {\r
- longname : 'Save',\r
- author : 'Moxiecode Systems AB',\r
- authorurl : 'http://tinymce.moxiecode.com',\r
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/save',\r
- version : tinymce.majorVersion + "." + tinymce.minorVersion\r
- };\r
- },\r
-\r
- // Private methods\r
-\r
- _nodeChange : function(ed, cm, n) {\r
- var ed = this.editor;\r
-\r
- if (ed.getParam('save_enablewhendirty')) {\r
- cm.setDisabled('save', !ed.isDirty());\r
- cm.setDisabled('cancel', !ed.isDirty());\r
- }\r
- },\r
-\r
- // Private methods\r
-\r
- _save : function() {\r
- var ed = this.editor, formObj, os, i, elementId;\r
-\r
- formObj = tinymce.DOM.get(ed.id).form || tinymce.DOM.getParent(ed.id, 'form');\r
-\r
- if (ed.getParam("save_enablewhendirty") && !ed.isDirty())\r
- return;\r
-\r
- tinyMCE.triggerSave();\r
-\r
- // Use callback instead\r
- if (os = ed.getParam("save_onsavecallback")) {\r
- if (ed.execCallback('save_onsavecallback', ed)) {\r
- ed.startContent = tinymce.trim(ed.getContent({format : 'raw'}));\r
- ed.nodeChanged();\r
- }\r
-\r
- return;\r
- }\r
-\r
- if (formObj) {\r
- ed.isNotDirty = true;\r
-\r
- if (formObj.onsubmit == null || formObj.onsubmit() != false)\r
- formObj.submit();\r
-\r
- ed.nodeChanged();\r
- } else\r
- ed.windowManager.alert("Error: No form element found.");\r
- },\r
-\r
- _cancel : function() {\r
- var ed = this.editor, os, h = tinymce.trim(ed.startContent);\r
-\r
- // Use callback instead\r
- if (os = ed.getParam("save_oncancelcallback")) {\r
- ed.execCallback('save_oncancelcallback', ed);\r
- return;\r
- }\r
-\r
- ed.setContent(h);\r
- ed.undoManager.clear();\r
- ed.nodeChanged();\r
- }\r
- });\r
-\r
- // Register plugin\r
- tinymce.PluginManager.add('save', tinymce.plugins.Save);\r
-})();
\ No newline at end of file
+++ /dev/null
-.panel_wrapper {height:85px;}\r
-.panel_wrapper div.current {height:85px;}\r
-\r
-/* IE */\r
-* html .panel_wrapper {height:100px;}\r
-* html .panel_wrapper div.current {height:100px;}\r
+++ /dev/null
-(function(){tinymce.create('tinymce.plugins.SearchReplacePlugin',{init:function(ed,url){function open(m){ed.windowManager.open({file:url+'/searchreplace.htm',width:420+parseInt(ed.getLang('searchreplace.delta_width',0)),height:160+parseInt(ed.getLang('searchreplace.delta_height',0)),inline:1,auto_focus:0},{mode:m,search_string:ed.selection.getContent({format:'text'}),plugin_url:url});};ed.addCommand('mceSearch',function(){open('search');});ed.addCommand('mceReplace',function(){open('replace');});ed.addButton('search',{title:'searchreplace.search_desc',cmd:'mceSearch'});ed.addButton('replace',{title:'searchreplace.replace_desc',cmd:'mceReplace'});ed.addShortcut('ctrl+f','searchreplace.search_desc','mceSearch');},getInfo:function(){return{longname:'Search/Replace',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/searchreplace',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('searchreplace',tinymce.plugins.SearchReplacePlugin);})();
\ No newline at end of file
+++ /dev/null
-/**\r
- * $Id: editor_plugin_src.js 686 2008-03-09 18:13:49Z spocke $\r
- *\r
- * @author Moxiecode\r
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-(function() {\r
- tinymce.create('tinymce.plugins.SearchReplacePlugin', {\r
- init : function(ed, url) {\r
- function open(m) {\r
- ed.windowManager.open({\r
- file : url + '/searchreplace.htm',\r
- width : 420 + parseInt(ed.getLang('searchreplace.delta_width', 0)),\r
- height : 160 + parseInt(ed.getLang('searchreplace.delta_height', 0)),\r
- inline : 1,\r
- auto_focus : 0\r
- }, {\r
- mode : m,\r
- search_string : ed.selection.getContent({format : 'text'}),\r
- plugin_url : url\r
- });\r
- };\r
-\r
- // Register commands\r
- ed.addCommand('mceSearch', function() {\r
- open('search');\r
- });\r
-\r
- ed.addCommand('mceReplace', function() {\r
- open('replace');\r
- });\r
-\r
- // Register buttons\r
- ed.addButton('search', {title : 'searchreplace.search_desc', cmd : 'mceSearch'});\r
- ed.addButton('replace', {title : 'searchreplace.replace_desc', cmd : 'mceReplace'});\r
-\r
- ed.addShortcut('ctrl+f', 'searchreplace.search_desc', 'mceSearch');\r
- },\r
-\r
- getInfo : function() {\r
- return {\r
- longname : 'Search/Replace',\r
- author : 'Moxiecode Systems AB',\r
- authorurl : 'http://tinymce.moxiecode.com',\r
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/searchreplace',\r
- version : tinymce.majorVersion + "." + tinymce.minorVersion\r
- };\r
- }\r
- });\r
-\r
- // Register plugin\r
- tinymce.PluginManager.add('searchreplace', tinymce.plugins.SearchReplacePlugin);\r
-})();
\ No newline at end of file
+++ /dev/null
-tinyMCEPopup.requireLangPack();\r
-\r
-var SearchReplaceDialog = {\r
- init : function(ed) {\r
- var f = document.forms[0], m = tinyMCEPopup.getWindowArg("mode");\r
-\r
- this.switchMode(m);\r
-\r
- f[m + '_panel_searchstring'].value = tinyMCEPopup.getWindowArg("search_string");\r
-\r
- // Focus input field\r
- f[m + '_panel_searchstring'].focus();\r
- },\r
-\r
- switchMode : function(m) {\r
- var f, lm = this.lastMode;\r
-\r
- if (lm != m) {\r
- f = document.forms[0];\r
-\r
- if (lm) {\r
- f[m + '_panel_searchstring'].value = f[lm + '_panel_searchstring'].value;\r
- f[m + '_panel_backwardsu'].checked = f[lm + '_panel_backwardsu'].checked;\r
- f[m + '_panel_backwardsd'].checked = f[lm + '_panel_backwardsd'].checked;\r
- f[m + '_panel_casesensitivebox'].checked = f[lm + '_panel_casesensitivebox'].checked;\r
- }\r
-\r
- mcTabs.displayTab(m + '_tab', m + '_panel');\r
- document.getElementById("replaceBtn").style.display = (m == "replace") ? "inline" : "none";\r
- document.getElementById("replaceAllBtn").style.display = (m == "replace") ? "inline" : "none";\r
- this.lastMode = m;\r
- }\r
- },\r
-\r
- searchNext : function(a) {\r
- var ed = tinyMCEPopup.editor, se = ed.selection, r = se.getRng(), f, m = this.lastMode, s, b, fl = 0, w = ed.getWin(), wm = ed.windowManager, fo = 0;\r
-\r
- // Get input\r
- f = document.forms[0];\r
- s = f[m + '_panel_searchstring'].value;\r
- b = f[m + '_panel_backwardsu'].checked;\r
- ca = f[m + '_panel_casesensitivebox'].checked;\r
- rs = f['replace_panel_replacestring'].value;\r
-\r
- function fix() {\r
- // Correct Firefox graphics glitches\r
- r = se.getRng().cloneRange();\r
- ed.getDoc().execCommand('SelectAll', false, null);\r
- se.setRng(r);\r
- };\r
-\r
- function replace() {\r
- if (tinymce.isIE)\r
- ed.selection.getRng().duplicate().pasteHTML(rs); // Needs to be duplicated due to selection bug in IE\r
- else\r
- ed.getDoc().execCommand('InsertHTML', false, rs);\r
- };\r
-\r
- // IE flags\r
- if (ca)\r
- fl = fl | 4;\r
-\r
- switch (a) {\r
- case 'all':\r
- // Move caret to beginning of text\r
- ed.execCommand('SelectAll');\r
- ed.selection.collapse(true);\r
-\r
- if (tinymce.isIE) {\r
- while (r.findText(s, b ? -1 : 1, fl)) {\r
- r.scrollIntoView();\r
- r.select();\r
- replace();\r
- fo = 1;\r
- }\r
-\r
- tinyMCEPopup.storeSelection();\r
- } else {\r
- while (w.find(s, ca, b, false, false, false, false)) {\r
- replace();\r
- fo = 1;\r
- }\r
- }\r
-\r
- if (fo)\r
- tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.allreplaced'));\r
- else\r
- tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));\r
-\r
- return;\r
-\r
- case 'current':\r
- if (!ed.selection.isCollapsed())\r
- replace();\r
-\r
- break;\r
- }\r
-\r
- se.collapse(b);\r
- r = se.getRng();\r
-\r
- // Whats the point\r
- if (!s)\r
- return;\r
-\r
- if (tinymce.isIE) {\r
- if (r.findText(s, b ? -1 : 1, fl)) {\r
- r.scrollIntoView();\r
- r.select();\r
- } else\r
- tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));\r
-\r
- tinyMCEPopup.storeSelection();\r
- } else {\r
- if (!w.find(s, ca, b, false, false, false, false))\r
- tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));\r
- else\r
- fix();\r
- }\r
- }\r
-};\r
-\r
-tinyMCEPopup.onInit.add(SearchReplaceDialog.init, SearchReplaceDialog);\r
+++ /dev/null
-tinyMCE.addI18n('en.searchreplace_dlg',{\r
-searchnext_desc:"Find again",\r
-notfound:"The search has been completed. The search string could not be found.",\r
-search_title:"Find",\r
-replace_title:"Find/Replace",\r
-allreplaced:"All occurrences of the search string were replaced.",\r
-findwhat:"Find what",\r
-replacewith:"Replace with",\r
-direction:"Direction",\r
-up:"Up",\r
-down:"Down",\r
-mcase:"Match case",\r
-findnext:"Find next",\r
-replace:"Replace",\r
-replaceall:"Replace all"\r
-});
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
- <title>{#searchreplace_dlg.replace_title}</title>\r
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
- <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
- <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
- <script type="text/javascript" src="js/searchreplace.js"></script>\r
- <link rel="stylesheet" type="text/css" href="css/searchreplace.css" />\r
- <base target="_self" />\r
-</head>\r
-<body style="display:none;">\r
-<form onsubmit="SearchReplaceDialog.searchNext('none');return false;" action="#">\r
- <div class="tabs">\r
- <ul>\r
- <li id="search_tab"><span><a href="javascript:SearchReplaceDialog.switchMode('search');" onmousedown="return false;">{#searchreplace.search_desc}</a></span></li>\r
- <li id="replace_tab"><span><a href="javascript:SearchReplaceDialog.switchMode('replace');" onmousedown="return false;">{#searchreplace_dlg.replace}</a></span></li>\r
- </ul>\r
- </div>\r
-\r
- <div class="panel_wrapper">\r
- <div id="search_panel" class="panel">\r
- <table border="0" cellspacing="0" cellpadding="2">\r
- <tr>\r
- <td><label for="search_panel_searchstring">{#searchreplace_dlg.findwhat}</label></td>\r
- <td><input type="text" id="search_panel_searchstring" name="search_panel_searchstring" style="width: 200px" /></td>\r
- </tr>\r
- <tr>\r
- <td colspan="2">\r
- <table border="0" cellspacing="0" cellpadding="0" class="direction">\r
- <tr>\r
- <td><label>{#searchreplace_dlg.direction}</label></td>\r
- <td><input id="search_panel_backwardsu" name="search_panel_backwards" class="radio" type="radio" /></td>\r
- <td><label for="search_panel_backwardsu">{#searchreplace_dlg.up}</label></td>\r
- <td><input id="search_panel_backwardsd" name="search_panel_backwards" class="radio" type="radio" checked="checked" /></td>\r
- <td><label for="search_panel_backwardsd">{#searchreplace_dlg.down}</label></td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
- <tr>\r
- <td colspan="2">\r
- <table border="0" cellspacing="0" cellpadding="0">\r
- <tr>\r
- <td><input id="search_panel_casesensitivebox" name="search_panel_casesensitivebox" class="checkbox" type="checkbox" /></td>\r
- <td><label for="search_panel_casesensitivebox">{#searchreplace_dlg.mcase}</label></td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
- </table>\r
- </div>\r
-\r
- <div id="replace_panel" class="panel">\r
- <table border="0" cellspacing="0" cellpadding="2">\r
- <tr>\r
- <td><label for="replace_panel_searchstring">{#searchreplace_dlg.findwhat}</label></td>\r
- <td><input type="text" id="replace_panel_searchstring" name="replace_panel_searchstring" style="width: 200px" /></td>\r
- </tr>\r
- <tr>\r
- <td><label for="replace_panel_replacestring">{#searchreplace_dlg.replacewith}</label></td>\r
- <td><input type="text" id="replace_panel_replacestring" name="replace_panel_replacestring" style="width: 200px" /></td>\r
- </tr>\r
- <tr>\r
- <td colspan="2">\r
- <table border="0" cellspacing="0" cellpadding="0" class="direction">\r
- <tr>\r
- <td><label>{#searchreplace_dlg.direction}</label></td>\r
- <td><input id="replace_panel_backwardsu" name="replace_panel_backwards" class="radio" type="radio" /></td>\r
- <td><label for="replace_panel_backwardsu">{#searchreplace_dlg.up}</label></td>\r
- <td><input id="replace_panel_backwardsd" name="replace_panel_backwards" class="radio" type="radio" checked="checked" /></td>\r
- <td><label for="replace_panel_backwardsd">{#searchreplace_dlg.down}</label></td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
- <tr>\r
- <td colspan="2">\r
- <table border="0" cellspacing="0" cellpadding="0">\r
- <tr>\r
- <td><input id="replace_panel_casesensitivebox" name="replace_panel_casesensitivebox" class="checkbox" type="checkbox" /></td>\r
- <td><label for="replace_panel_casesensitivebox">{#searchreplace_dlg.mcase}</label></td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
- </table>\r
- </div>\r
-\r
- </div>\r
-\r
- <div class="mceActionPanel">\r
- <div style="float: left">\r
- <input type="submit" id="insert" name="insert" value="{#searchreplace_dlg.findnext}" />\r
- <input type="button" class="button" id="replaceBtn" name="replaceBtn" value="{#searchreplace_dlg.replace}" onclick="SearchReplaceDialog.searchNext('current');" />\r
- <input type="button" class="button" id="replaceAllBtn" name="replaceAllBtn" value="{#searchreplace_dlg.replaceall}" onclick="SearchReplaceDialog.searchNext('all');" />\r
- </div>\r
-\r
- <div style="float: right"> \r
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
- </div>\r
- </div>\r
-</form>\r
-</body>\r
-</html>\r
+++ /dev/null
-.mceItemHiddenSpellWord {background:url(../img/wline.gif) repeat-x bottom left; cursor:default;}\r
+++ /dev/null
-(function(){var JSONRequest=tinymce.util.JSONRequest,each=tinymce.each,DOM=tinymce.DOM;tinymce.create('tinymce.plugins.SpellcheckerPlugin',{getInfo:function(){return{longname:'Spellchecker',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/spellchecker',version:tinymce.majorVersion+"."+tinymce.minorVersion};},init:function(ed,url){var t=this,cm;t.url=url;t.editor=ed;ed.addCommand('mceSpellCheck',function(){if(!t.active){ed.setProgressState(1);t._sendRPC('checkWords',[t.selectedLang,t._getWords()],function(r){if(r.length>0){t.active=1;t._markWords(r);ed.setProgressState(0);ed.nodeChanged();}else{ed.setProgressState(0);ed.windowManager.alert('spellchecker.no_mpell');}});}else t._done();});ed.onInit.add(function(){if(ed.settings.content_css!==false)ed.dom.loadCSS(url+'/css/content.css');});ed.onClick.add(t._showMenu,t);ed.onContextMenu.add(t._showMenu,t);ed.onBeforeGetContent.add(function(){if(t.active)t._removeWords();});ed.onNodeChange.add(function(ed,cm){cm.setActive('spellchecker',t.active);});ed.onSetContent.add(function(){t._done();});ed.onBeforeGetContent.add(function(){t._done();});ed.onBeforeExecCommand.add(function(ed,cmd){if(cmd=='mceFullScreen')t._done();});t.languages={};each(ed.getParam('spellchecker_languages','+English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv','hash'),function(v,k){if(k.indexOf('+')===0){k=k.substring(1);t.selectedLang=v;}t.languages[k]=v;});},createControl:function(n,cm){var t=this,c,ed=t.editor;if(n=='spellchecker'){c=cm.createSplitButton(n,{title:'spellchecker.desc',cmd:'mceSpellCheck',scope:t});c.onRenderMenu.add(function(c,m){m.add({title:'spellchecker.langs','class':'mceMenuItemTitle'}).setDisabled(1);each(t.languages,function(v,k){var o={icon:1},mi;o.onclick=function(){mi.setSelected(1);t.selectedItem.setSelected(0);t.selectedItem=mi;t.selectedLang=v;};o.title=k;mi=m.add(o);mi.setSelected(v==t.selectedLang);if(v==t.selectedLang)t.selectedItem=mi;})});return c;}},_walk:function(n,f){var d=this.editor.getDoc(),w;if(d.createTreeWalker){w=d.createTreeWalker(n,NodeFilter.SHOW_TEXT,null,false);while((n=w.nextNode())!=null)f.call(this,n);}else tinymce.walk(n,f,'childNodes');},_getSeparators:function(){var re='',i,str=this.editor.getParam('spellchecker_word_separator_chars','\\s!"#$%&()*+,-./:;<=>?@[\]^_{|}����������������\u201d\u201c');for(i=0;i<str.length;i++)re+='\\'+str.charAt(i);return re;},_getWords:function(){var ed=this.editor,wl=[],tx='',lo={};this._walk(ed.getBody(),function(n){if(n.nodeType==3)tx+=n.nodeValue+' ';});tx=tx.replace(new RegExp('([0-9]|['+this._getSeparators()+'])','g'),' ');tx=tinymce.trim(tx.replace(/(\s+)/g,' '));each(tx.split(' '),function(v){if(!lo[v]){wl.push(v);lo[v]=1;}});return wl;},_removeWords:function(w){var ed=this.editor,dom=ed.dom,se=ed.selection,b=se.getBookmark();each(dom.select('span').reverse(),function(n){if(n&&(dom.hasClass(n,'mceItemHiddenSpellWord')||dom.hasClass(n,'mceItemHidden'))){if(!w||dom.decode(n.innerHTML)==w)dom.remove(n,1);}});se.moveToBookmark(b);},_markWords:function(wl){var r1,r2,r3,r4,r5,w='',ed=this.editor,re=this._getSeparators(),dom=ed.dom,nl=[];var se=ed.selection,b=se.getBookmark();each(wl,function(v){w+=(w?'|':'')+v;});r1=new RegExp('(['+re+'])('+w+')(['+re+'])','g');r2=new RegExp('^('+w+')','g');r3=new RegExp('('+w+')(['+re+']?)$','g');r4=new RegExp('^('+w+')(['+re+']?)$','g');r5=new RegExp('('+w+')(['+re+'])','g');this._walk(this.editor.getBody(),function(n){if(n.nodeType==3){nl.push(n);}});each(nl,function(n){var v;if(n.nodeType==3){v=n.nodeValue;if(r1.test(v)||r2.test(v)||r3.test(v)||r4.test(v)){v=dom.encode(v);v=v.replace(r5,'<span class="mceItemHiddenSpellWord">$1</span>$2');v=v.replace(r3,'<span class="mceItemHiddenSpellWord">$1</span>$2');dom.replace(dom.create('span',{'class':'mceItemHidden'},v),n);}}});se.moveToBookmark(b);},_showMenu:function(ed,e){var t=this,ed=t.editor,m=t._menu,p1,dom=ed.dom,vp=dom.getViewPort(ed.getWin());if(!m){p1=DOM.getPos(ed.getContentAreaContainer());m=ed.controlManager.createDropMenu('spellcheckermenu',{offset_x:p1.x,offset_y:p1.y,'class':'mceNoIcons'});t._menu=m;}if(dom.hasClass(e.target,'mceItemHiddenSpellWord')){m.removeAll();m.add({title:'spellchecker.wait','class':'mceMenuItemTitle'}).setDisabled(1);t._sendRPC('getSuggestions',[t.selectedLang,dom.decode(e.target.innerHTML)],function(r){m.removeAll();if(r.length>0){m.add({title:'spellchecker.sug','class':'mceMenuItemTitle'}).setDisabled(1);each(r,function(v){m.add({title:v,onclick:function(){dom.replace(ed.getDoc().createTextNode(v),e.target);t._checkDone();}});});m.addSeparator();}else m.add({title:'spellchecker.no_sug','class':'mceMenuItemTitle'}).setDisabled(1);m.add({title:'spellchecker.ignore_word',onclick:function(){dom.remove(e.target,1);t._checkDone();}});m.add({title:'spellchecker.ignore_words',onclick:function(){t._removeWords(dom.decode(e.target.innerHTML));t._checkDone();}});m.update();});ed.selection.select(e.target);p1=dom.getPos(e.target);m.showMenu(p1.x,p1.y+e.target.offsetHeight-vp.y);return tinymce.dom.Event.cancel(e);}else m.hideMenu();},_checkDone:function(){var t=this,ed=t.editor,dom=ed.dom,o;each(dom.select('span'),function(n){if(n&&dom.hasClass(n,'mceItemHiddenSpellWord')){o=true;return false;}});if(!o)t._done();},_done:function(){var t=this,la=t.active;if(t.active){t.active=0;t._removeWords();if(t._menu)t._menu.hideMenu();if(la)t.editor.nodeChanged();}},_sendRPC:function(m,p,cb){var t=this,url=t.editor.getParam("spellchecker_rpc_url","{backend}");if(url=='{backend}'){t.editor.setProgressState(0);alert('Please specify: spellchecker_rpc_url');return;}JSONRequest.sendRPC({url:url,method:m,params:p,success:cb,error:function(e,x){t.editor.setProgressState(0);t.editor.windowManager.alert(e.errstr||('Error response: '+x.responseText));}});}});tinymce.PluginManager.add('spellchecker',tinymce.plugins.SpellcheckerPlugin);})();
\ No newline at end of file
+++ /dev/null
-/**\r
- * $Id: editor_plugin_src.js 425 2007-11-21 15:17:39Z spocke $\r
- *\r
- * @author Moxiecode\r
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-(function() {\r
- var JSONRequest = tinymce.util.JSONRequest, each = tinymce.each, DOM = tinymce.DOM;\r
-\r
- tinymce.create('tinymce.plugins.SpellcheckerPlugin', {\r
- getInfo : function() {\r
- return {\r
- longname : 'Spellchecker',\r
- author : 'Moxiecode Systems AB',\r
- authorurl : 'http://tinymce.moxiecode.com',\r
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/spellchecker',\r
- version : tinymce.majorVersion + "." + tinymce.minorVersion\r
- };\r
- },\r
-\r
- init : function(ed, url) {\r
- var t = this, cm;\r
-\r
- t.url = url;\r
- t.editor = ed;\r
-\r
- // Register commands\r
- ed.addCommand('mceSpellCheck', function() {\r
- if (!t.active) {\r
- ed.setProgressState(1);\r
- t._sendRPC('checkWords', [t.selectedLang, t._getWords()], function(r) {\r
- if (r.length > 0) {\r
- t.active = 1;\r
- t._markWords(r);\r
- ed.setProgressState(0);\r
- ed.nodeChanged();\r
- } else {\r
- ed.setProgressState(0);\r
- ed.windowManager.alert('spellchecker.no_mpell');\r
- }\r
- });\r
- } else\r
- t._done();\r
- });\r
-\r
- ed.onInit.add(function() {\r
- if (ed.settings.content_css !== false)\r
- ed.dom.loadCSS(url + '/css/content.css');\r
- });\r
-\r
- ed.onClick.add(t._showMenu, t);\r
- ed.onContextMenu.add(t._showMenu, t);\r
- ed.onBeforeGetContent.add(function() {\r
- if (t.active)\r
- t._removeWords();\r
- });\r
-\r
- ed.onNodeChange.add(function(ed, cm) {\r
- cm.setActive('spellchecker', t.active);\r
- });\r
-\r
- ed.onSetContent.add(function() {\r
- t._done();\r
- });\r
-\r
- ed.onBeforeGetContent.add(function() {\r
- t._done();\r
- });\r
-\r
- ed.onBeforeExecCommand.add(function(ed, cmd) {\r
- if (cmd == 'mceFullScreen')\r
- t._done();\r
- });\r
-\r
- // Find selected language\r
- t.languages = {};\r
- each(ed.getParam('spellchecker_languages', '+English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv', 'hash'), function(v, k) {\r
- if (k.indexOf('+') === 0) {\r
- k = k.substring(1);\r
- t.selectedLang = v;\r
- }\r
-\r
- t.languages[k] = v;\r
- });\r
- },\r
-\r
- createControl : function(n, cm) {\r
- var t = this, c, ed = t.editor;\r
-\r
- if (n == 'spellchecker') {\r
- c = cm.createSplitButton(n, {title : 'spellchecker.desc', cmd : 'mceSpellCheck', scope : t});\r
-\r
- c.onRenderMenu.add(function(c, m) {\r
- m.add({title : 'spellchecker.langs', 'class' : 'mceMenuItemTitle'}).setDisabled(1);\r
- each(t.languages, function(v, k) {\r
- var o = {icon : 1}, mi;\r
-\r
- o.onclick = function() {\r
- mi.setSelected(1);\r
- t.selectedItem.setSelected(0);\r
- t.selectedItem = mi;\r
- t.selectedLang = v;\r
- };\r
-\r
- o.title = k;\r
- mi = m.add(o);\r
- mi.setSelected(v == t.selectedLang);\r
-\r
- if (v == t.selectedLang)\r
- t.selectedItem = mi;\r
- })\r
- });\r
-\r
- return c;\r
- }\r
- },\r
-\r
- // Internal functions\r
-\r
- _walk : function(n, f) {\r
- var d = this.editor.getDoc(), w;\r
-\r
- if (d.createTreeWalker) {\r
- w = d.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, false);\r
-\r
- while ((n = w.nextNode()) != null)\r
- f.call(this, n);\r
- } else\r
- tinymce.walk(n, f, 'childNodes');\r
- },\r
-\r
- _getSeparators : function() {\r
- var re = '', i, str = this.editor.getParam('spellchecker_word_separator_chars', '\\s!"#$%&()*+,-./:;<=>?@[\]^_{|}§©«®±¶·¸»¼½¾¿×÷¤\u201d\u201c');\r
-\r
- // Build word separator regexp\r
- for (i=0; i<str.length; i++)\r
- re += '\\' + str.charAt(i);\r
-\r
- return re;\r
- },\r
-\r
- _getWords : function() {\r
- var ed = this.editor, wl = [], tx = '', lo = {};\r
-\r
- // Get area text\r
- this._walk(ed.getBody(), function(n) {\r
- if (n.nodeType == 3)\r
- tx += n.nodeValue + ' ';\r
- });\r
-\r
- // Split words by separator\r
- tx = tx.replace(new RegExp('([0-9]|[' + this._getSeparators() + '])', 'g'), ' ');\r
- tx = tinymce.trim(tx.replace(/(\s+)/g, ' '));\r
-\r
- // Build word array and remove duplicates\r
- each(tx.split(' '), function(v) {\r
- if (!lo[v]) {\r
- wl.push(v);\r
- lo[v] = 1;\r
- }\r
- });\r
-\r
- return wl;\r
- },\r
-\r
- _removeWords : function(w) {\r
- var ed = this.editor, dom = ed.dom, se = ed.selection, b = se.getBookmark();\r
-\r
- each(dom.select('span').reverse(), function(n) {\r
- if (n && (dom.hasClass(n, 'mceItemHiddenSpellWord') || dom.hasClass(n, 'mceItemHidden'))) {\r
- if (!w || dom.decode(n.innerHTML) == w)\r
- dom.remove(n, 1);\r
- }\r
- });\r
-\r
- se.moveToBookmark(b);\r
- },\r
-\r
- _markWords : function(wl) {\r
- var r1, r2, r3, r4, r5, w = '', ed = this.editor, re = this._getSeparators(), dom = ed.dom, nl = [];\r
- var se = ed.selection, b = se.getBookmark();\r
-\r
- each(wl, function(v) {\r
- w += (w ? '|' : '') + v;\r
- });\r
-\r
- r1 = new RegExp('([' + re + '])(' + w + ')([' + re + '])', 'g');\r
- r2 = new RegExp('^(' + w + ')', 'g');\r
- r3 = new RegExp('(' + w + ')([' + re + ']?)$', 'g');\r
- r4 = new RegExp('^(' + w + ')([' + re + ']?)$', 'g');\r
- r5 = new RegExp('(' + w + ')([' + re + '])', 'g');\r
-\r
- // Collect all text nodes\r
- this._walk(this.editor.getBody(), function(n) {\r
- if (n.nodeType == 3) {\r
- nl.push(n);\r
- }\r
- });\r
-\r
- // Wrap incorrect words in spans\r
- each(nl, function(n) {\r
- var v;\r
-\r
- if (n.nodeType == 3) {\r
- v = n.nodeValue;\r
-\r
- if (r1.test(v) || r2.test(v) || r3.test(v) || r4.test(v)) {\r
- v = dom.encode(v);\r
- v = v.replace(r5, '<span class="mceItemHiddenSpellWord">$1</span>$2');\r
- v = v.replace(r3, '<span class="mceItemHiddenSpellWord">$1</span>$2');\r
-\r
- dom.replace(dom.create('span', {'class' : 'mceItemHidden'}, v), n);\r
- }\r
- }\r
- });\r
-\r
- se.moveToBookmark(b);\r
- },\r
-\r
- _showMenu : function(ed, e) {\r
- var t = this, ed = t.editor, m = t._menu, p1, dom = ed.dom, vp = dom.getViewPort(ed.getWin());\r
-\r
- if (!m) {\r
- p1 = DOM.getPos(ed.getContentAreaContainer());\r
- //p2 = DOM.getPos(ed.getContainer());\r
-\r
- m = ed.controlManager.createDropMenu('spellcheckermenu', {\r
- offset_x : p1.x,\r
- offset_y : p1.y,\r
- 'class' : 'mceNoIcons'\r
- });\r
-\r
- t._menu = m;\r
- }\r
-\r
- if (dom.hasClass(e.target, 'mceItemHiddenSpellWord')) {\r
- m.removeAll();\r
- m.add({title : 'spellchecker.wait', 'class' : 'mceMenuItemTitle'}).setDisabled(1);\r
-\r
- t._sendRPC('getSuggestions', [t.selectedLang, dom.decode(e.target.innerHTML)], function(r) {\r
- m.removeAll();\r
-\r
- if (r.length > 0) {\r
- m.add({title : 'spellchecker.sug', 'class' : 'mceMenuItemTitle'}).setDisabled(1);\r
- each(r, function(v) {\r
- m.add({title : v, onclick : function() {\r
- dom.replace(ed.getDoc().createTextNode(v), e.target);\r
- t._checkDone();\r
- }});\r
- });\r
-\r
- m.addSeparator();\r
- } else\r
- m.add({title : 'spellchecker.no_sug', 'class' : 'mceMenuItemTitle'}).setDisabled(1);\r
-\r
- m.add({\r
- title : 'spellchecker.ignore_word',\r
- onclick : function() {\r
- dom.remove(e.target, 1);\r
- t._checkDone();\r
- }\r
- });\r
-\r
- m.add({\r
- title : 'spellchecker.ignore_words',\r
- onclick : function() {\r
- t._removeWords(dom.decode(e.target.innerHTML));\r
- t._checkDone();\r
- }\r
- });\r
-\r
- m.update();\r
- });\r
-\r
- ed.selection.select(e.target);\r
- p1 = dom.getPos(e.target);\r
- m.showMenu(p1.x, p1.y + e.target.offsetHeight - vp.y);\r
-\r
- return tinymce.dom.Event.cancel(e);\r
- } else\r
- m.hideMenu();\r
- },\r
-\r
- _checkDone : function() {\r
- var t = this, ed = t.editor, dom = ed.dom, o;\r
-\r
- each(dom.select('span'), function(n) {\r
- if (n && dom.hasClass(n, 'mceItemHiddenSpellWord')) {\r
- o = true;\r
- return false;\r
- }\r
- });\r
-\r
- if (!o)\r
- t._done();\r
- },\r
-\r
- _done : function() {\r
- var t = this, la = t.active;\r
-\r
- if (t.active) {\r
- t.active = 0;\r
- t._removeWords();\r
-\r
- if (t._menu)\r
- t._menu.hideMenu();\r
-\r
- if (la)\r
- t.editor.nodeChanged();\r
- }\r
- },\r
-\r
- _sendRPC : function(m, p, cb) {\r
- var t = this, url = t.editor.getParam("spellchecker_rpc_url", "{backend}");\r
-\r
- if (url == '{backend}') {\r
- t.editor.setProgressState(0);\r
- alert('Please specify: spellchecker_rpc_url');\r
- return;\r
- }\r
-\r
- JSONRequest.sendRPC({\r
- url : url,\r
- method : m,\r
- params : p,\r
- success : cb,\r
- error : function(e, x) {\r
- t.editor.setProgressState(0);\r
- t.editor.windowManager.alert(e.errstr || ('Error response: ' + x.responseText));\r
- }\r
- });\r
- }\r
- });\r
-\r
- // Register plugin\r
- tinymce.PluginManager.add('spellchecker', tinymce.plugins.SpellcheckerPlugin);\r
-})();
\ No newline at end of file
+++ /dev/null
-#text_font {width:250px;}\r
-#text_size {width:70px;}\r
-.mceAddSelectValue {background:#DDD;}\r
-select, #block_text_indent, #box_width, #box_height, #box_padding_top, #box_padding_right, #box_padding_bottom, #box_padding_left {width:70px;}\r
-#box_margin_top, #box_margin_right, #box_margin_bottom, #box_margin_left, #positioning_width, #positioning_height, #positioning_zindex {width:70px;}\r
-#positioning_placement_top, #positioning_placement_right, #positioning_placement_bottom, #positioning_placement_left {width:70px;}\r
-#positioning_clip_top, #positioning_clip_right, #positioning_clip_bottom, #positioning_clip_left {width:70px;}\r
-.panel_wrapper div.current {padding-top:10px;height:230px;}\r
-.delim {border-left:1px solid gray;}\r
-.tdelim {border-bottom:1px solid gray;}\r
-#block_display {width:145px;}\r
-#list_type {width:115px;}\r
-.disabled {background:#EEE;}\r
+++ /dev/null
-(function(){tinymce.create('tinymce.plugins.StylePlugin',{init:function(ed,url){ed.addCommand('mceStyleProps',function(){ed.windowManager.open({file:url+'/props.htm',width:480+parseInt(ed.getLang('style.delta_width',0)),height:320+parseInt(ed.getLang('style.delta_height',0)),inline:1},{plugin_url:url,style_text:ed.selection.getNode().style.cssText});});ed.addCommand('mceSetElementStyle',function(ui,v){if(e=ed.selection.getNode()){ed.dom.setAttrib(e,'style',v);ed.execCommand('mceRepaint');}});ed.onNodeChange.add(function(ed,cm,n){cm.setDisabled('styleprops',n.nodeName==='BODY');});ed.addButton('styleprops',{title:'style.desc',cmd:'mceStyleProps'});},getInfo:function(){return{longname:'Style',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/style',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('style',tinymce.plugins.StylePlugin);})();
\ No newline at end of file
+++ /dev/null
-/**\r
- * $Id: editor_plugin_src.js 787 2008-04-10 11:40:57Z spocke $\r
- *\r
- * @author Moxiecode\r
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-(function() {\r
- tinymce.create('tinymce.plugins.StylePlugin', {\r
- init : function(ed, url) {\r
- // Register commands\r
- ed.addCommand('mceStyleProps', function() {\r
- ed.windowManager.open({\r
- file : url + '/props.htm',\r
- width : 480 + parseInt(ed.getLang('style.delta_width', 0)),\r
- height : 320 + parseInt(ed.getLang('style.delta_height', 0)),\r
- inline : 1\r
- }, {\r
- plugin_url : url,\r
- style_text : ed.selection.getNode().style.cssText\r
- });\r
- });\r
-\r
- ed.addCommand('mceSetElementStyle', function(ui, v) {\r
- if (e = ed.selection.getNode()) {\r
- ed.dom.setAttrib(e, 'style', v);\r
- ed.execCommand('mceRepaint');\r
- }\r
- });\r
-\r
- ed.onNodeChange.add(function(ed, cm, n) {\r
- cm.setDisabled('styleprops', n.nodeName === 'BODY');\r
- });\r
-\r
- // Register buttons\r
- ed.addButton('styleprops', {title : 'style.desc', cmd : 'mceStyleProps'});\r
- },\r
-\r
- getInfo : function() {\r
- return {\r
- longname : 'Style',\r
- author : 'Moxiecode Systems AB',\r
- authorurl : 'http://tinymce.moxiecode.com',\r
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/style',\r
- version : tinymce.majorVersion + "." + tinymce.minorVersion\r
- };\r
- }\r
- });\r
-\r
- // Register plugin\r
- tinymce.PluginManager.add('style', tinymce.plugins.StylePlugin);\r
-})();
\ No newline at end of file
+++ /dev/null
-tinyMCEPopup.requireLangPack();\r
-\r
-var defaultFonts = "" + \r
- "Arial, Helvetica, sans-serif=Arial, Helvetica, sans-serif;" + \r
- "Times New Roman, Times, serif=Times New Roman, Times, serif;" + \r
- "Courier New, Courier, mono=Courier New, Courier, mono;" + \r
- "Times New Roman, Times, serif=Times New Roman, Times, serif;" + \r
- "Georgia, Times New Roman, Times, serif=Georgia, Times New Roman, Times, serif;" + \r
- "Verdana, Arial, Helvetica, sans-serif=Verdana, Arial, Helvetica, sans-serif;" + \r
- "Geneva, Arial, Helvetica, sans-serif=Geneva, Arial, Helvetica, sans-serif";\r
-\r
-var defaultSizes = "9;10;12;14;16;18;24;xx-small;x-small;small;medium;large;x-large;xx-large;smaller;larger";\r
-var defaultMeasurement = "+pixels=px;points=pt;em;in;cm;mm;picas;ems;exs;%";\r
-var defaultSpacingMeasurement = "pixels=px;points=pt;in;cm;mm;picas;+ems;exs;%";\r
-var defaultIndentMeasurement = "pixels=px;+points=pt;in;cm;mm;picas;ems;exs;%";\r
-var defaultWeight = "normal;bold;bolder;lighter;100;200;300;400;500;600;700;800;900";\r
-var defaultTextStyle = "normal;italic;oblique";\r
-var defaultVariant = "normal;small-caps";\r
-var defaultLineHeight = "normal";\r
-var defaultAttachment = "fixed;scroll";\r
-var defaultRepeat = "no-repeat;repeat;repeat-x;repeat-y";\r
-var defaultPosH = "left;center;right";\r
-var defaultPosV = "top;center;bottom";\r
-var defaultVAlign = "baseline;sub;super;top;text-top;middle;bottom;text-bottom";\r
-var defaultDisplay = "inline;block;list-item;run-in;compact;marker;table;inline-table;table-row-group;table-header-group;table-footer-group;table-row;table-column-group;table-column;table-cell;table-caption;none";\r
-var defaultBorderStyle = "none;solid;dashed;dotted;double;groove;ridge;inset;outset";\r
-var defaultBorderWidth = "thin;medium;thick";\r
-var defaultListType = "disc;circle;square;decimal;lower-roman;upper-roman;lower-alpha;upper-alpha;none";\r
-\r
-function init() {\r
- var ce = document.getElementById('container'), h;\r
-\r
- ce.style.cssText = tinyMCEPopup.getWindowArg('style_text');\r
-\r
- h = getBrowserHTML('background_image_browser','background_image','image','advimage');\r
- document.getElementById("background_image_browser").innerHTML = h;\r
-\r
- document.getElementById('text_color_pickcontainer').innerHTML = getColorPickerHTML('text_color_pick','text_color');\r
- document.getElementById('background_color_pickcontainer').innerHTML = getColorPickerHTML('background_color_pick','background_color');\r
- document.getElementById('border_color_top_pickcontainer').innerHTML = getColorPickerHTML('border_color_top_pick','border_color_top');\r
- document.getElementById('border_color_right_pickcontainer').innerHTML = getColorPickerHTML('border_color_right_pick','border_color_right');\r
- document.getElementById('border_color_bottom_pickcontainer').innerHTML = getColorPickerHTML('border_color_bottom_pick','border_color_bottom');\r
- document.getElementById('border_color_left_pickcontainer').innerHTML = getColorPickerHTML('border_color_left_pick','border_color_left');\r
-\r
- fillSelect(0, 'text_font', 'style_font', defaultFonts, ';', true);\r
- fillSelect(0, 'text_size', 'style_font_size', defaultSizes, ';', true);\r
- fillSelect(0, 'text_size_measurement', 'style_font_size_measurement', defaultMeasurement, ';', true);\r
- fillSelect(0, 'text_case', 'style_text_case', "capitalize;uppercase;lowercase", ';', true);\r
- fillSelect(0, 'text_weight', 'style_font_weight', defaultWeight, ';', true);\r
- fillSelect(0, 'text_style', 'style_font_style', defaultTextStyle, ';', true);\r
- fillSelect(0, 'text_variant', 'style_font_variant', defaultVariant, ';', true);\r
- fillSelect(0, 'text_lineheight', 'style_font_line_height', defaultLineHeight, ';', true);\r
- fillSelect(0, 'text_lineheight_measurement', 'style_font_line_height_measurement', defaultMeasurement, ';', true);\r
-\r
- fillSelect(0, 'background_attachment', 'style_background_attachment', defaultAttachment, ';', true);\r
- fillSelect(0, 'background_repeat', 'style_background_repeat', defaultRepeat, ';', true);\r
-\r
- fillSelect(0, 'background_hpos_measurement', 'style_background_hpos_measurement', defaultMeasurement, ';', true);\r
- fillSelect(0, 'background_vpos_measurement', 'style_background_vpos_measurement', defaultMeasurement, ';', true);\r
-\r
- fillSelect(0, 'background_hpos', 'style_background_hpos', defaultPosH, ';', true);\r
- fillSelect(0, 'background_vpos', 'style_background_vpos', defaultPosV, ';', true);\r
-\r
- fillSelect(0, 'block_wordspacing', 'style_wordspacing', 'normal', ';', true);\r
- fillSelect(0, 'block_wordspacing_measurement', 'style_wordspacing_measurement', defaultSpacingMeasurement, ';', true);\r
- fillSelect(0, 'block_letterspacing', 'style_letterspacing', 'normal', ';', true);\r
- fillSelect(0, 'block_letterspacing_measurement', 'style_letterspacing_measurement', defaultSpacingMeasurement, ';', true);\r
- fillSelect(0, 'block_vertical_alignment', 'style_vertical_alignment', defaultVAlign, ';', true);\r
- fillSelect(0, 'block_text_align', 'style_text_align', "left;right;center;justify", ';', true);\r
- fillSelect(0, 'block_whitespace', 'style_whitespace', "normal;pre;nowrap", ';', true);\r
- fillSelect(0, 'block_display', 'style_display', defaultDisplay, ';', true);\r
- fillSelect(0, 'block_text_indent_measurement', 'style_text_indent_measurement', defaultIndentMeasurement, ';', true);\r
-\r
- fillSelect(0, 'box_width_measurement', 'style_box_width_measurement', defaultMeasurement, ';', true);\r
- fillSelect(0, 'box_height_measurement', 'style_box_height_measurement', defaultMeasurement, ';', true);\r
- fillSelect(0, 'box_float', 'style_float', 'left;right;none', ';', true);\r
- fillSelect(0, 'box_clear', 'style_clear', 'left;right;both;none', ';', true);\r
- fillSelect(0, 'box_padding_left_measurement', 'style_padding_left_measurement', defaultMeasurement, ';', true);\r
- fillSelect(0, 'box_padding_top_measurement', 'style_padding_top_measurement', defaultMeasurement, ';', true);\r
- fillSelect(0, 'box_padding_bottom_measurement', 'style_padding_bottom_measurement', defaultMeasurement, ';', true);\r
- fillSelect(0, 'box_padding_right_measurement', 'style_padding_right_measurement', defaultMeasurement, ';', true);\r
- fillSelect(0, 'box_margin_left_measurement', 'style_margin_left_measurement', defaultMeasurement, ';', true);\r
- fillSelect(0, 'box_margin_top_measurement', 'style_margin_top_measurement', defaultMeasurement, ';', true);\r
- fillSelect(0, 'box_margin_bottom_measurement', 'style_margin_bottom_measurement', defaultMeasurement, ';', true);\r
- fillSelect(0, 'box_margin_right_measurement', 'style_margin_right_measurement', defaultMeasurement, ';', true);\r
-\r
- fillSelect(0, 'border_style_top', 'style_border_style_top', defaultBorderStyle, ';', true);\r
- fillSelect(0, 'border_style_right', 'style_border_style_right', defaultBorderStyle, ';', true);\r
- fillSelect(0, 'border_style_bottom', 'style_border_style_bottom', defaultBorderStyle, ';', true);\r
- fillSelect(0, 'border_style_left', 'style_border_style_left', defaultBorderStyle, ';', true);\r
-\r
- fillSelect(0, 'border_width_top', 'style_border_width_top', defaultBorderWidth, ';', true);\r
- fillSelect(0, 'border_width_right', 'style_border_width_right', defaultBorderWidth, ';', true);\r
- fillSelect(0, 'border_width_bottom', 'style_border_width_bottom', defaultBorderWidth, ';', true);\r
- fillSelect(0, 'border_width_left', 'style_border_width_left', defaultBorderWidth, ';', true);\r
-\r
- fillSelect(0, 'border_width_top_measurement', 'style_border_width_top_measurement', defaultMeasurement, ';', true);\r
- fillSelect(0, 'border_width_right_measurement', 'style_border_width_right_measurement', defaultMeasurement, ';', true);\r
- fillSelect(0, 'border_width_bottom_measurement', 'style_border_width_bottom_measurement', defaultMeasurement, ';', true);\r
- fillSelect(0, 'border_width_left_measurement', 'style_border_width_left_measurement', defaultMeasurement, ';', true);\r
-\r
- fillSelect(0, 'list_type', 'style_list_type', defaultListType, ';', true);\r
- fillSelect(0, 'list_position', 'style_list_position', "inside;outside", ';', true);\r
-\r
- fillSelect(0, 'positioning_type', 'style_positioning_type', "absolute;relative;static", ';', true);\r
- fillSelect(0, 'positioning_visibility', 'style_positioning_visibility', "inherit;visible;hidden", ';', true);\r
-\r
- fillSelect(0, 'positioning_width_measurement', 'style_positioning_width_measurement', defaultMeasurement, ';', true);\r
- fillSelect(0, 'positioning_height_measurement', 'style_positioning_height_measurement', defaultMeasurement, ';', true);\r
- fillSelect(0, 'positioning_overflow', 'style_positioning_overflow', "visible;hidden;scroll;auto", ';', true);\r
-\r
- fillSelect(0, 'positioning_placement_top_measurement', 'style_positioning_placement_top_measurement', defaultMeasurement, ';', true);\r
- fillSelect(0, 'positioning_placement_right_measurement', 'style_positioning_placement_right_measurement', defaultMeasurement, ';', true);\r
- fillSelect(0, 'positioning_placement_bottom_measurement', 'style_positioning_placement_bottom_measurement', defaultMeasurement, ';', true);\r
- fillSelect(0, 'positioning_placement_left_measurement', 'style_positioning_placement_left_measurement', defaultMeasurement, ';', true);\r
-\r
- fillSelect(0, 'positioning_clip_top_measurement', 'style_positioning_clip_top_measurement', defaultMeasurement, ';', true);\r
- fillSelect(0, 'positioning_clip_right_measurement', 'style_positioning_clip_right_measurement', defaultMeasurement, ';', true);\r
- fillSelect(0, 'positioning_clip_bottom_measurement', 'style_positioning_clip_bottom_measurement', defaultMeasurement, ';', true);\r
- fillSelect(0, 'positioning_clip_left_measurement', 'style_positioning_clip_left_measurement', defaultMeasurement, ';', true);\r
-\r
- TinyMCE_EditableSelects.init();\r
- setupFormData();\r
- showDisabledControls();\r
-}\r
-\r
-function setupFormData() {\r
- var ce = document.getElementById('container'), f = document.forms[0], s, b, i;\r
-\r
- // Setup text fields\r
-\r
- selectByValue(f, 'text_font', ce.style.fontFamily, true, true);\r
- selectByValue(f, 'text_size', getNum(ce.style.fontSize), true, true);\r
- selectByValue(f, 'text_size_measurement', getMeasurement(ce.style.fontSize));\r
- selectByValue(f, 'text_weight', ce.style.fontWeight, true, true);\r
- selectByValue(f, 'text_style', ce.style.fontStyle, true, true);\r
- selectByValue(f, 'text_lineheight', getNum(ce.style.lineHeight), true, true);\r
- selectByValue(f, 'text_lineheight_measurement', getMeasurement(ce.style.lineHeight));\r
- selectByValue(f, 'text_case', ce.style.textTransform, true, true);\r
- selectByValue(f, 'text_variant', ce.style.fontVariant, true, true);\r
- f.text_color.value = tinyMCEPopup.editor.dom.toHex(ce.style.color);\r
- updateColor('text_color_pick', 'text_color');\r
- f.text_underline.checked = inStr(ce.style.textDecoration, 'underline');\r
- f.text_overline.checked = inStr(ce.style.textDecoration, 'overline');\r
- f.text_linethrough.checked = inStr(ce.style.textDecoration, 'line-through');\r
- f.text_blink.checked = inStr(ce.style.textDecoration, 'blink');\r
-\r
- // Setup background fields\r
-\r
- f.background_color.value = tinyMCEPopup.editor.dom.toHex(ce.style.backgroundColor);\r
- updateColor('background_color_pick', 'background_color');\r
- f.background_image.value = ce.style.backgroundImage.replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");\r
- selectByValue(f, 'background_repeat', ce.style.backgroundRepeat, true, true);\r
- selectByValue(f, 'background_attachment', ce.style.backgroundAttachment, true, true);\r
- selectByValue(f, 'background_hpos', getNum(getVal(ce.style.backgroundPosition, 0)), true, true);\r
- selectByValue(f, 'background_hpos_measurement', getMeasurement(getVal(ce.style.backgroundPosition, 0)));\r
- selectByValue(f, 'background_vpos', getNum(getVal(ce.style.backgroundPosition, 1)), true, true);\r
- selectByValue(f, 'background_vpos_measurement', getMeasurement(getVal(ce.style.backgroundPosition, 1)));\r
-\r
- // Setup block fields\r
-\r
- selectByValue(f, 'block_wordspacing', getNum(ce.style.wordSpacing), true, true);\r
- selectByValue(f, 'block_wordspacing_measurement', getMeasurement(ce.style.wordSpacing));\r
- selectByValue(f, 'block_letterspacing', getNum(ce.style.letterSpacing), true, true);\r
- selectByValue(f, 'block_letterspacing_measurement', getMeasurement(ce.style.letterSpacing));\r
- selectByValue(f, 'block_vertical_alignment', ce.style.verticalAlign, true, true);\r
- selectByValue(f, 'block_text_align', ce.style.textAlign, true, true);\r
- f.block_text_indent.value = getNum(ce.style.textIndent);\r
- selectByValue(f, 'block_text_indent_measurement', getMeasurement(ce.style.textIndent));\r
- selectByValue(f, 'block_whitespace', ce.style.whiteSpace, true, true);\r
- selectByValue(f, 'block_display', ce.style.display, true, true);\r
-\r
- // Setup box fields\r
-\r
- f.box_width.value = getNum(ce.style.width);\r
- selectByValue(f, 'box_width_measurement', getMeasurement(ce.style.width));\r
-\r
- f.box_height.value = getNum(ce.style.height);\r
- selectByValue(f, 'box_height_measurement', getMeasurement(ce.style.height));\r
-\r
- if (tinymce.isGecko)\r
- selectByValue(f, 'box_float', ce.style.cssFloat, true, true);\r
- else\r
- selectByValue(f, 'box_float', ce.style.styleFloat, true, true);\r
-\r
- selectByValue(f, 'box_clear', ce.style.clear, true, true);\r
-\r
- setupBox(f, ce, 'box_padding', 'padding', '');\r
- setupBox(f, ce, 'box_margin', 'margin', '');\r
-\r
- // Setup border fields\r
-\r
- setupBox(f, ce, 'border_style', 'border', 'Style');\r
- setupBox(f, ce, 'border_width', 'border', 'Width');\r
- setupBox(f, ce, 'border_color', 'border', 'Color');\r
-\r
- updateColor('border_color_top_pick', 'border_color_top');\r
- updateColor('border_color_right_pick', 'border_color_right');\r
- updateColor('border_color_bottom_pick', 'border_color_bottom');\r
- updateColor('border_color_left_pick', 'border_color_left');\r
-\r
- f.elements.border_color_top.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_top.value);\r
- f.elements.border_color_right.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_right.value);\r
- f.elements.border_color_bottom.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_bottom.value);\r
- f.elements.border_color_left.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_left.value);\r
-\r
- // Setup list fields\r
-\r
- selectByValue(f, 'list_type', ce.style.listStyleType, true, true);\r
- selectByValue(f, 'list_position', ce.style.listStylePosition, true, true);\r
- f.list_bullet_image.value = ce.style.listStyleImage.replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");\r
-\r
- // Setup box fields\r
-\r
- selectByValue(f, 'positioning_type', ce.style.position, true, true);\r
- selectByValue(f, 'positioning_visibility', ce.style.visibility, true, true);\r
- selectByValue(f, 'positioning_overflow', ce.style.overflow, true, true);\r
- f.positioning_zindex.value = ce.style.zIndex ? ce.style.zIndex : "";\r
-\r
- f.positioning_width.value = getNum(ce.style.width);\r
- selectByValue(f, 'positioning_width_measurement', getMeasurement(ce.style.width));\r
-\r
- f.positioning_height.value = getNum(ce.style.height);\r
- selectByValue(f, 'positioning_height_measurement', getMeasurement(ce.style.height));\r
-\r
- setupBox(f, ce, 'positioning_placement', '', '', ['top', 'right', 'bottom', 'left']);\r
-\r
- s = ce.style.clip.replace(new RegExp("rect\\('?([^']*)'?\\)", 'gi'), "$1");\r
- s = s.replace(/,/g, ' ');\r
-\r
- if (!hasEqualValues([getVal(s, 0), getVal(s, 1), getVal(s, 2), getVal(s, 3)])) {\r
- f.positioning_clip_top.value = getNum(getVal(s, 0));\r
- selectByValue(f, 'positioning_clip_top_measurement', getMeasurement(getVal(s, 0)));\r
- f.positioning_clip_right.value = getNum(getVal(s, 1));\r
- selectByValue(f, 'positioning_clip_right_measurement', getMeasurement(getVal(s, 1)));\r
- f.positioning_clip_bottom.value = getNum(getVal(s, 2));\r
- selectByValue(f, 'positioning_clip_bottom_measurement', getMeasurement(getVal(s, 2)));\r
- f.positioning_clip_left.value = getNum(getVal(s, 3));\r
- selectByValue(f, 'positioning_clip_left_measurement', getMeasurement(getVal(s, 3)));\r
- } else {\r
- f.positioning_clip_top.value = getNum(getVal(s, 0));\r
- selectByValue(f, 'positioning_clip_top_measurement', getMeasurement(getVal(s, 0)));\r
- f.positioning_clip_right.value = f.positioning_clip_bottom.value = f.positioning_clip_left.value;\r
- }\r
-\r
-// setupBox(f, ce, '', 'border', 'Color');\r
-}\r
-\r
-function getMeasurement(s) {\r
- return s.replace(/^([0-9]+)(.*)$/, "$2");\r
-}\r
-\r
-function getNum(s) {\r
- if (new RegExp('^[0-9]+[a-z%]+$', 'gi').test(s))\r
- return s.replace(/[^0-9]/g, '');\r
-\r
- return s;\r
-}\r
-\r
-function inStr(s, n) {\r
- return new RegExp(n, 'gi').test(s);\r
-}\r
-\r
-function getVal(s, i) {\r
- var a = s.split(' ');\r
-\r
- if (a.length > 1)\r
- return a[i];\r
-\r
- return "";\r
-}\r
-\r
-function setValue(f, n, v) {\r
- if (f.elements[n].type == "text")\r
- f.elements[n].value = v;\r
- else\r
- selectByValue(f, n, v, true, true);\r
-}\r
-\r
-function setupBox(f, ce, fp, pr, sf, b) {\r
- if (typeof(b) == "undefined")\r
- b = ['Top', 'Right', 'Bottom', 'Left'];\r
-\r
- if (isSame(ce, pr, sf, b)) {\r
- f.elements[fp + "_same"].checked = true;\r
-\r
- setValue(f, fp + "_top", getNum(ce.style[pr + b[0] + sf]));\r
- f.elements[fp + "_top"].disabled = false;\r
-\r
- f.elements[fp + "_right"].value = "";\r
- f.elements[fp + "_right"].disabled = true;\r
- f.elements[fp + "_bottom"].value = "";\r
- f.elements[fp + "_bottom"].disabled = true;\r
- f.elements[fp + "_left"].value = "";\r
- f.elements[fp + "_left"].disabled = true;\r
-\r
- if (f.elements[fp + "_top_measurement"]) {\r
- selectByValue(f, fp + '_top_measurement', getMeasurement(ce.style[pr + b[0] + sf]));\r
- f.elements[fp + "_left_measurement"].disabled = true;\r
- f.elements[fp + "_bottom_measurement"].disabled = true;\r
- f.elements[fp + "_right_measurement"].disabled = true;\r
- }\r
- } else {\r
- f.elements[fp + "_same"].checked = false;\r
-\r
- setValue(f, fp + "_top", getNum(ce.style[pr + b[0] + sf]));\r
- f.elements[fp + "_top"].disabled = false;\r
-\r
- setValue(f, fp + "_right", getNum(ce.style[pr + b[1] + sf]));\r
- f.elements[fp + "_right"].disabled = false;\r
-\r
- setValue(f, fp + "_bottom", getNum(ce.style[pr + b[2] + sf]));\r
- f.elements[fp + "_bottom"].disabled = false;\r
-\r
- setValue(f, fp + "_left", getNum(ce.style[pr + b[3] + sf]));\r
- f.elements[fp + "_left"].disabled = false;\r
-\r
- if (f.elements[fp + "_top_measurement"]) {\r
- selectByValue(f, fp + '_top_measurement', getMeasurement(ce.style[pr + b[0] + sf]));\r
- selectByValue(f, fp + '_right_measurement', getMeasurement(ce.style[pr + b[1] + sf]));\r
- selectByValue(f, fp + '_bottom_measurement', getMeasurement(ce.style[pr + b[2] + sf]));\r
- selectByValue(f, fp + '_left_measurement', getMeasurement(ce.style[pr + b[3] + sf]));\r
- f.elements[fp + "_left_measurement"].disabled = false;\r
- f.elements[fp + "_bottom_measurement"].disabled = false;\r
- f.elements[fp + "_right_measurement"].disabled = false;\r
- }\r
- }\r
-}\r
-\r
-function isSame(e, pr, sf, b) {\r
- var a = [], i, x;\r
-\r
- if (typeof(b) == "undefined")\r
- b = ['Top', 'Right', 'Bottom', 'Left'];\r
-\r
- if (typeof(sf) == "undefined" || sf == null)\r
- sf = "";\r
-\r
- a[0] = e.style[pr + b[0] + sf];\r
- a[1] = e.style[pr + b[1] + sf];\r
- a[2] = e.style[pr + b[2] + sf];\r
- a[3] = e.style[pr + b[3] + sf];\r
-\r
- for (i=0; i<a.length; i++) {\r
- if (a[i] == null)\r
- return false;\r
-\r
- for (x=0; x<a.length; x++) {\r
- if (a[x] != a[i])\r
- return false;\r
- }\r
- }\r
-\r
- return true;\r
-};\r
-\r
-function hasEqualValues(a) {\r
- var i, x;\r
-\r
- for (i=0; i<a.length; i++) {\r
- if (a[i] == null)\r
- return false;\r
-\r
- for (x=0; x<a.length; x++) {\r
- if (a[x] != a[i])\r
- return false;\r
- }\r
- }\r
-\r
- return true;\r
-}\r
-\r
-function applyAction() {\r
- var ce = document.getElementById('container'), ed = tinyMCEPopup.editor;\r
-\r
- generateCSS();\r
-\r
- tinyMCEPopup.restoreSelection();\r
- ed.dom.setAttrib(ed.selection.getNode(), 'style', tinyMCEPopup.editor.dom.serializeStyle(tinyMCEPopup.editor.dom.parseStyle(ce.style.cssText)));\r
-}\r
-\r
-function updateAction() {\r
- applyAction();\r
- tinyMCEPopup.close();\r
-}\r
-\r
-function generateCSS() {\r
- var ce = document.getElementById('container'), f = document.forms[0], num = new RegExp('[0-9]+', 'g'), s, t;\r
-\r
- ce.style.cssText = "";\r
-\r
- // Build text styles\r
- ce.style.fontFamily = f.text_font.value;\r
- ce.style.fontSize = f.text_size.value + (isNum(f.text_size.value) ? (f.text_size_measurement.value || 'px') : "");\r
- ce.style.fontStyle = f.text_style.value;\r
- ce.style.lineHeight = f.text_lineheight.value + (isNum(f.text_lineheight.value) ? f.text_lineheight_measurement.value : "");\r
- ce.style.textTransform = f.text_case.value;\r
- ce.style.fontWeight = f.text_weight.value;\r
- ce.style.fontVariant = f.text_variant.value;\r
- ce.style.color = f.text_color.value;\r
-\r
- s = "";\r
- s += f.text_underline.checked ? " underline" : "";\r
- s += f.text_overline.checked ? " overline" : "";\r
- s += f.text_linethrough.checked ? " line-through" : "";\r
- s += f.text_blink.checked ? " blink" : "";\r
- s = s.length > 0 ? s.substring(1) : s;\r
-\r
- if (f.text_none.checked)\r
- s = "none";\r
-\r
- ce.style.textDecoration = s;\r
-\r
- // Build background styles\r
-\r
- ce.style.backgroundColor = f.background_color.value;\r
- ce.style.backgroundImage = f.background_image.value != "" ? "url(" + f.background_image.value + ")" : "";\r
- ce.style.backgroundRepeat = f.background_repeat.value;\r
- ce.style.backgroundAttachment = f.background_attachment.value;\r
-\r
- if (f.background_hpos.value != "") {\r
- s = "";\r
- s += f.background_hpos.value + (isNum(f.background_hpos.value) ? f.background_hpos_measurement.value : "") + " ";\r
- s += f.background_vpos.value + (isNum(f.background_vpos.value) ? f.background_vpos_measurement.value : "");\r
- ce.style.backgroundPosition = s;\r
- }\r
-\r
- // Build block styles\r
-\r
- ce.style.wordSpacing = f.block_wordspacing.value + (isNum(f.block_wordspacing.value) ? f.block_wordspacing_measurement.value : "");\r
- ce.style.letterSpacing = f.block_letterspacing.value + (isNum(f.block_letterspacing.value) ? f.block_letterspacing_measurement.value : "");\r
- ce.style.verticalAlign = f.block_vertical_alignment.value;\r
- ce.style.textAlign = f.block_text_align.value;\r
- ce.style.textIndent = f.block_text_indent.value + (isNum(f.block_text_indent.value) ? f.block_text_indent_measurement.value : "");\r
- ce.style.whiteSpace = f.block_whitespace.value;\r
- ce.style.display = f.block_display.value;\r
-\r
- // Build box styles\r
-\r
- ce.style.width = f.box_width.value + (isNum(f.box_width.value) ? f.box_width_measurement.value : "");\r
- ce.style.height = f.box_height.value + (isNum(f.box_height.value) ? f.box_height_measurement.value : "");\r
- ce.style.styleFloat = f.box_float.value;\r
-\r
- if (tinymce.isGecko)\r
- ce.style.cssFloat = f.box_float.value;\r
-\r
- ce.style.clear = f.box_clear.value;\r
-\r
- if (!f.box_padding_same.checked) {\r
- ce.style.paddingTop = f.box_padding_top.value + (isNum(f.box_padding_top.value) ? f.box_padding_top_measurement.value : "");\r
- ce.style.paddingRight = f.box_padding_right.value + (isNum(f.box_padding_right.value) ? f.box_padding_right_measurement.value : "");\r
- ce.style.paddingBottom = f.box_padding_bottom.value + (isNum(f.box_padding_bottom.value) ? f.box_padding_bottom_measurement.value : "");\r
- ce.style.paddingLeft = f.box_padding_left.value + (isNum(f.box_padding_left.value) ? f.box_padding_left_measurement.value : "");\r
- } else\r
- ce.style.padding = f.box_padding_top.value + (isNum(f.box_padding_top.value) ? f.box_padding_top_measurement.value : ""); \r
-\r
- if (!f.box_margin_same.checked) {\r
- ce.style.marginTop = f.box_margin_top.value + (isNum(f.box_margin_top.value) ? f.box_margin_top_measurement.value : "");\r
- ce.style.marginRight = f.box_margin_right.value + (isNum(f.box_margin_right.value) ? f.box_margin_right_measurement.value : "");\r
- ce.style.marginBottom = f.box_margin_bottom.value + (isNum(f.box_margin_bottom.value) ? f.box_margin_bottom_measurement.value : "");\r
- ce.style.marginLeft = f.box_margin_left.value + (isNum(f.box_margin_left.value) ? f.box_margin_left_measurement.value : "");\r
- } else\r
- ce.style.margin = f.box_margin_top.value + (isNum(f.box_margin_top.value) ? f.box_margin_top_measurement.value : ""); \r
-\r
- // Build border styles\r
-\r
- if (!f.border_style_same.checked) {\r
- ce.style.borderTopStyle = f.border_style_top.value;\r
- ce.style.borderRightStyle = f.border_style_right.value;\r
- ce.style.borderBottomStyle = f.border_style_bottom.value;\r
- ce.style.borderLeftStyle = f.border_style_left.value;\r
- } else\r
- ce.style.borderStyle = f.border_style_top.value;\r
-\r
- if (!f.border_width_same.checked) {\r
- ce.style.borderTopWidth = f.border_width_top.value + (isNum(f.border_width_top.value) ? f.border_width_top_measurement.value : "");\r
- ce.style.borderRightWidth = f.border_width_right.value + (isNum(f.border_width_right.value) ? f.border_width_right_measurement.value : "");\r
- ce.style.borderBottomWidth = f.border_width_bottom.value + (isNum(f.border_width_bottom.value) ? f.border_width_bottom_measurement.value : "");\r
- ce.style.borderLeftWidth = f.border_width_left.value + (isNum(f.border_width_left.value) ? f.border_width_left_measurement.value : "");\r
- } else\r
- ce.style.borderWidth = f.border_width_top.value;\r
-\r
- if (!f.border_color_same.checked) {\r
- ce.style.borderTopColor = f.border_color_top.value;\r
- ce.style.borderRightColor = f.border_color_right.value;\r
- ce.style.borderBottomColor = f.border_color_bottom.value;\r
- ce.style.borderLeftColor = f.border_color_left.value;\r
- } else\r
- ce.style.borderColor = f.border_color_top.value;\r
-\r
- // Build list styles\r
-\r
- ce.style.listStyleType = f.list_type.value;\r
- ce.style.listStylePosition = f.list_position.value;\r
- ce.style.listStyleImage = f.list_bullet_image.value != "" ? "url(" + f.list_bullet_image.value + ")" : "";\r
-\r
- // Build positioning styles\r
-\r
- ce.style.position = f.positioning_type.value;\r
- ce.style.visibility = f.positioning_visibility.value;\r
-\r
- if (ce.style.width == "")\r
- ce.style.width = f.positioning_width.value + (isNum(f.positioning_width.value) ? f.positioning_width_measurement.value : "");\r
-\r
- if (ce.style.height == "")\r
- ce.style.height = f.positioning_height.value + (isNum(f.positioning_height.value) ? f.positioning_height_measurement.value : "");\r
-\r
- ce.style.zIndex = f.positioning_zindex.value;\r
- ce.style.overflow = f.positioning_overflow.value;\r
-\r
- if (!f.positioning_placement_same.checked) {\r
- ce.style.top = f.positioning_placement_top.value + (isNum(f.positioning_placement_top.value) ? f.positioning_placement_top_measurement.value : "");\r
- ce.style.right = f.positioning_placement_right.value + (isNum(f.positioning_placement_right.value) ? f.positioning_placement_right_measurement.value : "");\r
- ce.style.bottom = f.positioning_placement_bottom.value + (isNum(f.positioning_placement_bottom.value) ? f.positioning_placement_bottom_measurement.value : "");\r
- ce.style.left = f.positioning_placement_left.value + (isNum(f.positioning_placement_left.value) ? f.positioning_placement_left_measurement.value : "");\r
- } else {\r
- s = f.positioning_placement_top.value + (isNum(f.positioning_placement_top.value) ? f.positioning_placement_top_measurement.value : "");\r
- ce.style.top = s;\r
- ce.style.right = s;\r
- ce.style.bottom = s;\r
- ce.style.left = s;\r
- }\r
-\r
- if (!f.positioning_clip_same.checked) {\r
- s = "rect(";\r
- s += (isNum(f.positioning_clip_top.value) ? f.positioning_clip_top.value + f.positioning_clip_top_measurement.value : "auto") + " ";\r
- s += (isNum(f.positioning_clip_right.value) ? f.positioning_clip_right.value + f.positioning_clip_right_measurement.value : "auto") + " ";\r
- s += (isNum(f.positioning_clip_bottom.value) ? f.positioning_clip_bottom.value + f.positioning_clip_bottom_measurement.value : "auto") + " ";\r
- s += (isNum(f.positioning_clip_left.value) ? f.positioning_clip_left.value + f.positioning_clip_left_measurement.value : "auto");\r
- s += ")";\r
-\r
- if (s != "rect(auto auto auto auto)")\r
- ce.style.clip = s;\r
- } else {\r
- s = "rect(";\r
- t = isNum(f.positioning_clip_top.value) ? f.positioning_clip_top.value + f.positioning_clip_top_measurement.value : "auto";\r
- s += t + " ";\r
- s += t + " ";\r
- s += t + " ";\r
- s += t + ")";\r
-\r
- if (s != "rect(auto auto auto auto)")\r
- ce.style.clip = s;\r
- }\r
-\r
- ce.style.cssText = ce.style.cssText;\r
-}\r
-\r
-function isNum(s) {\r
- return new RegExp('[0-9]+', 'g').test(s);\r
-}\r
-\r
-function showDisabledControls() {\r
- var f = document.forms, i, a;\r
-\r
- for (i=0; i<f.length; i++) {\r
- for (a=0; a<f[i].elements.length; a++) {\r
- if (f[i].elements[a].disabled)\r
- tinyMCEPopup.editor.dom.addClass(f[i].elements[a], "disabled");\r
- else\r
- tinyMCEPopup.editor.dom.removeClass(f[i].elements[a], "disabled");\r
- }\r
- }\r
-}\r
-\r
-function fillSelect(f, s, param, dval, sep, em) {\r
- var i, ar, p, se;\r
-\r
- f = document.forms[f];\r
- sep = typeof(sep) == "undefined" ? ";" : sep;\r
-\r
- if (em)\r
- addSelectValue(f, s, "", "");\r
-\r
- ar = tinyMCEPopup.getParam(param, dval).split(sep);\r
- for (i=0; i<ar.length; i++) {\r
- se = false;\r
-\r
- if (ar[i].charAt(0) == '+') {\r
- ar[i] = ar[i].substring(1);\r
- se = true;\r
- }\r
-\r
- p = ar[i].split('=');\r
-\r
- if (p.length > 1) {\r
- addSelectValue(f, s, p[0], p[1]);\r
-\r
- if (se)\r
- selectByValue(f, s, p[1]);\r
- } else {\r
- addSelectValue(f, s, p[0], p[0]);\r
-\r
- if (se)\r
- selectByValue(f, s, p[0]);\r
- }\r
- }\r
-}\r
-\r
-function toggleSame(ce, pre) {\r
- var el = document.forms[0].elements, i;\r
-\r
- if (ce.checked) {\r
- el[pre + "_top"].disabled = false;\r
- el[pre + "_right"].disabled = true;\r
- el[pre + "_bottom"].disabled = true;\r
- el[pre + "_left"].disabled = true;\r
-\r
- if (el[pre + "_top_measurement"]) {\r
- el[pre + "_top_measurement"].disabled = false;\r
- el[pre + "_right_measurement"].disabled = true;\r
- el[pre + "_bottom_measurement"].disabled = true;\r
- el[pre + "_left_measurement"].disabled = true;\r
- }\r
- } else {\r
- el[pre + "_top"].disabled = false;\r
- el[pre + "_right"].disabled = false;\r
- el[pre + "_bottom"].disabled = false;\r
- el[pre + "_left"].disabled = false;\r
-\r
- if (el[pre + "_top_measurement"]) {\r
- el[pre + "_top_measurement"].disabled = false;\r
- el[pre + "_right_measurement"].disabled = false;\r
- el[pre + "_bottom_measurement"].disabled = false;\r
- el[pre + "_left_measurement"].disabled = false;\r
- }\r
- }\r
-\r
- showDisabledControls();\r
-}\r
-\r
-function synch(fr, to) {\r
- var f = document.forms[0];\r
-\r
- f.elements[to].value = f.elements[fr].value;\r
-\r
- if (f.elements[fr + "_measurement"])\r
- selectByValue(f, to + "_measurement", f.elements[fr + "_measurement"].value);\r
-}\r
-\r
-tinyMCEPopup.onInit.add(init);\r
+++ /dev/null
-tinyMCE.addI18n('en.style_dlg',{\r
-title:"Edit CSS Style",\r
-apply:"Apply",\r
-text_tab:"Text",\r
-background_tab:"Background",\r
-block_tab:"Block",\r
-box_tab:"Box",\r
-border_tab:"Border",\r
-list_tab:"List",\r
-positioning_tab:"Positioning",\r
-text_props:"Text",\r
-text_font:"Font",\r
-text_size:"Size",\r
-text_weight:"Weight",\r
-text_style:"Style",\r
-text_variant:"Variant",\r
-text_lineheight:"Line height",\r
-text_case:"Case",\r
-text_color:"Color",\r
-text_decoration:"Decoration",\r
-text_overline:"overline",\r
-text_underline:"underline",\r
-text_striketrough:"strikethrough",\r
-text_blink:"blink",\r
-text_none:"none",\r
-background_color:"Background color",\r
-background_image:"Background image",\r
-background_repeat:"Repeat",\r
-background_attachment:"Attachment",\r
-background_hpos:"Horizontal position",\r
-background_vpos:"Vertical position",\r
-block_wordspacing:"Word spacing",\r
-block_letterspacing:"Letter spacing",\r
-block_vertical_alignment:"Vertical alignment",\r
-block_text_align:"Text align",\r
-block_text_indent:"Text indent",\r
-block_whitespace:"Whitespace",\r
-block_display:"Display",\r
-box_width:"Width",\r
-box_height:"Height",\r
-box_float:"Float",\r
-box_clear:"Clear",\r
-padding:"Padding",\r
-same:"Same for all",\r
-top:"Top",\r
-right:"Right",\r
-bottom:"Bottom",\r
-left:"Left",\r
-margin:"Margin",\r
-style:"Style",\r
-width:"Width",\r
-height:"Height",\r
-color:"Color",\r
-list_type:"Type",\r
-bullet_image:"Bullet image",\r
-position:"Position",\r
-positioning_type:"Type",\r
-visibility:"Visibility",\r
-zindex:"Z-index",\r
-overflow:"Overflow",\r
-placement:"Placement",\r
-clip:"Clip"\r
-});
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#style_dlg.title}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="../../utils/mctabs.js"></script>
- <script type="text/javascript" src="../../utils/editable_selects.js"></script>
- <script type="text/javascript" src="../../utils/form_utils.js"></script>
- <script type="text/javascript" src="js/props.js"></script>
- <link href="css/props.css" rel="stylesheet" type="text/css" />
- <base target="_self" />
-</head>
-
-<body id="styleprops" style="display: none">
-<form onsubmit="updateAction();return false;" action="#">
-<div class="tabs">
- <ul>
- <li id="text_tab" class="current"><span><a href="javascript:mcTabs.displayTab('text_tab','text_panel');" onMouseDown="return false;">{#style_dlg.text_tab}</a></span></li>
- <li id="background_tab"><span><a href="javascript:mcTabs.displayTab('background_tab','background_panel');" onMouseDown="return false;">{#style_dlg.background_tab}</a></span></li>
- <li id="block_tab"><span><a href="javascript:mcTabs.displayTab('block_tab','block_panel');" onMouseDown="return false;">{#style_dlg.block_tab}</a></span></li>
- <li id="box_tab"><span><a href="javascript:mcTabs.displayTab('box_tab','box_panel');" onMouseDown="return false;">{#style_dlg.box_tab}</a></span></li>
- <li id="border_tab"><span><a href="javascript:mcTabs.displayTab('border_tab','border_panel');" onMouseDown="return false;">{#style_dlg.border_tab}</a></span></li>
- <li id="list_tab"><span><a href="javascript:mcTabs.displayTab('list_tab','list_panel');" onMouseDown="return false;">{#style_dlg.list_tab}</a></span></li>
- <li id="positioning_tab"><span><a href="javascript:mcTabs.displayTab('positioning_tab','positioning_panel');" onMouseDown="return false;">{#style_dlg.positioning_tab}</a></span></li>
- </ul>
-</div>
-
-<div class="panel_wrapper">
-<div id="text_panel" class="panel current">
- <table border="0" width="100%">
- <tr>
- <td><label for="text_font">{#style_dlg.text_font}</label></td>
- <td colspan="3">
- <select id="text_font" name="text_font" class="mceEditableSelect mceFocus"></select>
- </td>
- </tr>
- <tr>
- <td><label for="text_size">{#style_dlg.text_size}</label></td>
- <td>
- <table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><select id="text_size" name="text_size" class="mceEditableSelect"></select></td>
- <td> </td>
- <td><select id="text_size_measurement" name="text_size_measurement"></select></td>
- </tr>
- </table>
- </td>
- <td><label for="text_weight">{#style_dlg.text_weight}</label></td>
- <td>
- <select id="text_weight" name="text_weight"></select>
- </td>
- </tr>
- <tr>
- <td><label for="text_style">{#style_dlg.text_style}</label></td>
- <td>
- <select id="text_style" name="text_style" class="mceEditableSelect"></select>
- </td>
- <td><label for="text_variant">{#style_dlg.text_variant}</label></td>
- <td>
- <select id="text_variant" name="text_variant"></select>
- </td>
- </tr>
- <tr>
- <td><label for="text_lineheight">{#style_dlg.text_lineheight}</label></td>
- <td>
- <table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td>
- <select id="text_lineheight" name="text_lineheight" class="mceEditableSelect"></select>
- </td>
- <td> </td>
- <td><select id="text_lineheight_measurement" name="text_lineheight_measurement"></select></td>
- </tr>
- </table>
- </td>
- <td><label for="text_case">{#style_dlg.text_case}</label></td>
- <td>
- <select id="text_case" name="text_case"></select>
- </td>
- </tr>
- <tr>
- <td><label for="text_color">{#style_dlg.text_color}</label></td>
- <td colspan="2">
- <table border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="text_color" name="text_color" type="text" value="" size="9" onChange="updateColor('text_color_pick','text_color');" /></td>
- <td id="text_color_pickcontainer"> </td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td valign="top" style="vertical-align: top; padding-top: 3px;">{#style_dlg.text_decoration}</td>
- <td colspan="2">
- <table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input id="text_underline" name="text_underline" class="checkbox" type="checkbox" /></td>
- <td><label for="text_underline">{#style_dlg.text_underline}</label></td>
- </tr>
- <tr>
- <td><input id="text_overline" name="text_overline" class="checkbox" type="checkbox" /></td>
- <td><label for="text_overline">{#style_dlg.text_overline}</label></td>
- </tr>
- <tr>
- <td><input id="text_linethrough" name="text_linethrough" class="checkbox" type="checkbox" /></td>
- <td><label for="text_linethrough">{#style_dlg.text_striketrough}</label></td>
- </tr>
- <tr>
- <td><input id="text_blink" name="text_blink" class="checkbox" type="checkbox" /></td>
- <td><label for="text_blink">{#style_dlg.text_blink}</label></td>
- </tr>
- <tr>
- <td><input id="text_none" name="text_none" class="checkbox" type="checkbox" /></td>
- <td><label for="text_none">{#style_dlg.text_none}</label></td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
-</div>
-
-<div id="background_panel" class="panel">
- <table border="0">
- <tr>
- <td><label for="background_color">{#style_dlg.background_color}</label></td>
- <td>
- <table border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="background_color" name="background_color" type="text" value="" size="9" onChange="updateColor('background_color_pick','background_color');" /></td>
- <td id="background_color_pickcontainer"> </td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td><label for="background_image">{#style_dlg.background_image}</label></td>
- <td><table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input id="background_image" name="background_image" type="text" /></td>
- <td id="background_image_browser"> </td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td><label for="background_repeat">{#style_dlg.background_repeat}</label></td>
- <td><select id="background_repeat" name="background_repeat" class="mceEditableSelect"></select></td>
- </tr>
-
- <tr>
- <td><label for="background_attachment">{#style_dlg.background_attachment}</label></td>
- <td><select id="background_attachment" name="background_attachment" class="mceEditableSelect"></select></td>
- </tr>
-
- <tr>
- <td><label for="background_hpos">{#style_dlg.background_hpos}</label></td>
- <td>
- <table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><select id="background_hpos" name="background_hpos" class="mceEditableSelect"></select></td>
- <td> </td>
- <td><select id="background_hpos_measurement" name="background_hpos_measurement"></select></td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td><label for="background_vpos">{#style_dlg.background_vpos}</label></td>
- <td>
- <table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><select id="background_vpos" name="background_vpos" class="mceEditableSelect"></select></td>
- <td> </td>
- <td><select id="background_vpos_measurement" name="background_vpos_measurement"></select></td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
-</div>
-
-<div id="block_panel" class="panel">
- <table border="0">
- <tr>
- <td><label for="block_wordspacing">{#style_dlg.block_wordspacing}</label></td>
- <td>
- <table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><select id="block_wordspacing" name="block_wordspacing" class="mceEditableSelect"></select></td>
- <td> </td>
- <td><select id="block_wordspacing_measurement" name="block_wordspacing_measurement"></select></td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td><label for="block_letterspacing">{#style_dlg.block_letterspacing}</label></td>
- <td>
- <table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><select id="block_letterspacing" name="block_letterspacing" class="mceEditableSelect"></select></td>
- <td> </td>
- <td><select id="block_letterspacing_measurement" name="block_letterspacing_measurement"></select></td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td><label for="block_vertical_alignment">{#style_dlg.block_vertical_alignment}</label></td>
- <td><select id="block_vertical_alignment" name="block_vertical_alignment" class="mceEditableSelect"></select></td>
- </tr>
-
- <tr>
- <td><label for="block_text_align">{#style_dlg.block_text_align}</label></td>
- <td><select id="block_text_align" name="block_text_align" class="mceEditableSelect"></select></td>
- </tr>
-
- <tr>
- <td><label for="block_text_indent">{#style_dlg.block_text_indent}</label></td>
- <td>
- <table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="block_text_indent" name="block_text_indent" /></td>
- <td> </td>
- <td><select id="block_text_indent_measurement" name="block_text_indent_measurement"></select></td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td><label for="block_whitespace">{#style_dlg.block_whitespace}</label></td>
- <td><select id="block_whitespace" name="block_whitespace" class="mceEditableSelect"></select></td>
- </tr>
-
- <tr>
- <td><label for="block_display">{#style_dlg.block_display}</label></td>
- <td><select id="block_display" name="block_display" class="mceEditableSelect"></select></td>
- </tr>
- </table>
-</div>
-
-<div id="box_panel" class="panel">
-<table border="0">
- <tr>
- <td><label for="box_width">{#style_dlg.box_width}</label></td>
- <td>
- <table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="box_width" name="box_width" class="mceEditableSelect" onChange="synch('box_width','positioning_width');" /></td>
- <td> </td>
- <td><select id="box_width_measurement" name="box_width_measurement"></select></td>
- </tr>
- </table>
- </td>
- <td> <label for="box_float">{#style_dlg.box_float}</label></td>
- <td><select id="box_float" name="box_float" class="mceEditableSelect"></select></td>
- </tr>
-
- <tr>
- <td><label for="box_height">{#style_dlg.box_height}</label></td>
- <td>
- <table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="box_height" name="box_height" class="mceEditableSelect" onChange="synch('box_height','positioning_height');" /></td>
- <td> </td>
- <td><select id="box_height_measurement" name="box_height_measurement"></select></td>
- </tr>
- </table>
- </td>
- <td> <label for="box_clear">{#style_dlg.box_clear}</label></td>
- <td><select id="box_clear" name="box_clear" class="mceEditableSelect"></select></td>
- </tr>
-</table>
-<div style="float: left; width: 49%">
- <fieldset>
- <legend>{#style_dlg.padding}</legend>
-
- <table border="0">
- <tr>
- <td> </td>
- <td><input type="checkbox" id="box_padding_same" name="box_padding_same" class="checkbox" checked="checked" onClick="toggleSame(this,'box_padding');" /> <label for="box_padding_same">{#style_dlg.same}</label></td>
- </tr>
- <tr>
- <td><label for="box_padding_top">{#style_dlg.top}</label></td>
- <td>
- <table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="box_padding_top" name="box_padding_top" class="mceEditableSelect" /></td>
- <td> </td>
- <td><select id="box_padding_top_measurement" name="box_padding_top_measurement"></select></td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td><label for="box_padding_right">{#style_dlg.right}</label></td>
- <td>
- <table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="box_padding_right" name="box_padding_right" class="mceEditableSelect" disabled="disabled" /></td>
- <td> </td>
- <td><select id="box_padding_right_measurement" name="box_padding_right_measurement" disabled="disabled"></select></td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td><label for="box_padding_bottom">{#style_dlg.bottom}</label></td>
- <td>
- <table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="box_padding_bottom" name="box_padding_bottom" class="mceEditableSelect" disabled="disabled" /></td>
- <td> </td>
- <td><select id="box_padding_bottom_measurement" name="box_padding_bottom_measurement" disabled="disabled"></select></td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td><label for="box_padding_left">{#style_dlg.left}</label></td>
- <td>
- <table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="box_padding_left" name="box_padding_left" class="mceEditableSelect" disabled="disabled" /></td>
- <td> </td>
- <td><select id="box_padding_left_measurement" name="box_padding_left_measurement" disabled="disabled"></select></td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </fieldset>
-</div>
-
-<div style="float: right; width: 49%">
- <fieldset>
- <legend>{#style_dlg.margin}</legend>
-
- <table border="0">
- <tr>
- <td> </td>
- <td><input type="checkbox" id="box_margin_same" name="box_margin_same" class="checkbox" checked="checked" onClick="toggleSame(this,'box_margin');" /> <label for="box_margin_same">{#style_dlg.same}</label></td>
- </tr>
- <tr>
- <td><label for="box_margin_top">{#style_dlg.top}</label></td>
- <td>
- <table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="box_margin_top" name="box_margin_top" class="mceEditableSelect" /></td>
- <td> </td>
- <td><select id="box_margin_top_measurement" name="box_margin_top_measurement"></select></td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td><label for="box_margin_right">{#style_dlg.right}</label></td>
- <td>
- <table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="box_margin_right" name="box_margin_right" class="mceEditableSelect" disabled="disabled" /></td>
- <td> </td>
- <td><select id="box_margin_right_measurement" name="box_margin_right_measurement" disabled="disabled"></select></td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td><label for="box_margin_bottom">{#style_dlg.bottom}</label></td>
- <td>
- <table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="box_margin_bottom" name="box_margin_bottom" class="mceEditableSelect" disabled="disabled" /></td>
- <td> </td>
- <td><select id="box_margin_bottom_measurement" name="box_margin_bottom_measurement" disabled="disabled"></select></td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td><label for="box_margin_left">{#style_dlg.left}</label></td>
- <td>
- <table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="box_margin_left" name="box_margin_left" class="mceEditableSelect" disabled="disabled" /></td>
- <td> </td>
- <td><select id="box_margin_left_measurement" name="box_margin_left_measurement" disabled="disabled"></select></td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </fieldset>
-</div>
-<br style="clear: both" />
-</div>
-
-<div id="border_panel" class="panel">
-<table border="0" cellspacing="0" cellpadding="0" width="100%">
-<tr>
- <td class="tdelim"> </td>
- <td class="tdelim delim"> </td>
- <td class="tdelim">{#style_dlg.style}</td>
- <td class="tdelim delim"> </td>
- <td class="tdelim">{#style_dlg.width}</td>
- <td class="tdelim delim"> </td>
- <td class="tdelim">{#style_dlg.color}</td>
-</tr>
-
-<tr>
- <td> </td>
- <td class="delim"> </td>
- <td><input type="checkbox" id="border_style_same" name="border_style_same" class="checkbox" checked="checked" onClick="toggleSame(this,'border_style');" /> <label for="border_style_same">{#style_dlg.same}</label></td>
- <td class="delim"> </td>
- <td><input type="checkbox" id="border_width_same" name="border_width_same" class="checkbox" checked="checked" onClick="toggleSame(this,'border_width');" /> <label for="border_width_same">{#style_dlg.same}</label></td>
- <td class="delim"> </td>
- <td><input type="checkbox" id="border_color_same" name="border_color_same" class="checkbox" checked="checked" onClick="toggleSame(this,'border_color');" /> <label for="border_color_same">{#style_dlg.same}</label></td>
-</tr>
-
-<tr>
- <td>{#style_dlg.top}</td>
- <td class="delim"> </td>
- <td><select id="border_style_top" name="border_style_top" class="mceEditableSelect"></select></td>
- <td class="delim"> </td>
- <td>
- <table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><select id="border_width_top" name="border_width_top" class="mceEditableSelect"></select></td>
- <td> </td>
- <td><select id="border_width_top_measurement" name="border_width_top_measurement"></select></td>
- </tr>
- </table>
- </td>
- <td class="delim"> </td>
- <td>
- <table border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="border_color_top" name="border_color_top" type="text" value="" size="9" onChange="updateColor('border_color_top_pick','border_color_top');" /></td>
- <td id="border_color_top_pickcontainer"> </td>
- </tr>
- </table>
- </td>
-</tr>
-
-<tr>
- <td>{#style_dlg.right}</td>
- <td class="delim"> </td>
- <td><select id="border_style_right" name="border_style_right" class="mceEditableSelect" disabled="disabled"></select></td>
- <td class="delim"> </td>
- <td>
- <table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><select id="border_width_right" name="border_width_right" class="mceEditableSelect" disabled="disabled"></select></td>
- <td> </td>
- <td><select id="border_width_right_measurement" name="border_width_right_measurement" disabled="disabled"></select></td>
- </tr>
- </table>
- </td>
- <td class="delim"> </td>
- <td>
- <table border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="border_color_right" name="border_color_right" type="text" value="" size="9" onChange="updateColor('border_color_right_pick','border_color_right');" disabled="disabled" /></td>
- <td id="border_color_right_pickcontainer"> </td>
- </tr>
- </table>
- </td>
-</tr>
-
-<tr>
- <td>{#style_dlg.bottom}</td>
- <td class="delim"> </td>
- <td><select id="border_style_bottom" name="border_style_bottom" class="mceEditableSelect" disabled="disabled"></select></td>
- <td class="delim"> </td>
- <td>
- <table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><select id="border_width_bottom" name="border_width_bottom" class="mceEditableSelect" disabled="disabled"></select></td>
- <td> </td>
- <td><select id="border_width_bottom_measurement" name="border_width_bottom_measurement" disabled="disabled"></select></td>
- </tr>
- </table>
- </td>
- <td class="delim"> </td>
- <td>
- <table border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="border_color_bottom" name="border_color_bottom" type="text" value="" size="9" onChange="updateColor('border_color_bottom_pick','border_color_bottom');" disabled="disabled" /></td>
- <td id="border_color_bottom_pickcontainer"> </td>
- </tr>
- </table>
- </td>
-</tr>
-
-<tr>
- <td>{#style_dlg.left}</td>
- <td class="delim"> </td>
- <td><select id="border_style_left" name="border_style_left" class="mceEditableSelect" disabled="disabled"></select></td>
- <td class="delim"> </td>
- <td>
- <table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><select id="border_width_left" name="border_width_left" class="mceEditableSelect" disabled="disabled"></select></td>
- <td> </td>
- <td><select id="border_width_left_measurement" name="border_width_left_measurement" disabled="disabled"></select></td>
- </tr>
- </table>
- </td>
- <td class="delim"> </td>
- <td>
- <table border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="border_color_left" name="border_color_left" type="text" value="" size="9" onChange="updateColor('border_color_left_pick','border_color_left');" disabled="disabled" /></td>
- <td id="border_color_left_pickcontainer"> </td>
- </tr>
- </table>
- </td>
-</tr>
-</table>
-</div>
-
-<div id="list_panel" class="panel">
- <table border="0">
- <tr>
- <td><label for="list_type">{#style_dlg.list_type}</label></td>
- <td><select id="list_type" name="list_type" class="mceEditableSelect"></select></td>
- </tr>
-
- <tr>
- <td><label for="list_bullet_image">{#style_dlg.bullet_image}</label></td>
- <td><input id="list_bullet_image" name="list_bullet_image" type="text" /></td>
- </tr>
-
- <tr>
- <td><label for="list_position">{#style_dlg.position}</label></td>
- <td><select id="list_position" name="list_position" class="mceEditableSelect"></select></td>
- </tr>
- </table>
-</div>
-
-<div id="positioning_panel" class="panel">
-<table border="0">
- <tr>
- <td><label for="positioning_type">{#style_dlg.positioning_type}</label></td>
- <td><select id="positioning_type" name="positioning_type" class="mceEditableSelect"></select></td>
- <td> <label for="positioning_visibility">{#style_dlg.visibility}</label></td>
- <td><select id="positioning_visibility" name="positioning_visibility" class="mceEditableSelect"></select></td>
- </tr>
-
- <tr>
- <td><label for="positioning_width">{#style_dlg.width}</label></td>
- <td>
- <table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="positioning_width" name="positioning_width" onChange="synch('positioning_width','box_width');" /></td>
- <td> </td>
- <td><select id="positioning_width_measurement" name="positioning_width_measurement"></select></td>
- </tr>
- </table>
- </td>
- <td> <label for="positioning_zindex">{#style_dlg.zindex}</label></td>
- <td><input type="text" id="positioning_zindex" name="positioning_zindex" /></td>
- </tr>
-
- <tr>
- <td><label for="positioning_height">{#style_dlg.height}</label></td>
- <td>
- <table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="positioning_height" name="positioning_height" onChange="synch('positioning_height','box_height');" /></td>
- <td> </td>
- <td><select id="positioning_height_measurement" name="positioning_height_measurement"></select></td>
- </tr>
- </table>
- </td>
- <td> <label for="positioning_overflow">{#style_dlg.overflow}</label></td>
- <td><select id="positioning_overflow" name="positioning_overflow" class="mceEditableSelect"></select></td>
- </tr>
-</table>
-
-<div style="float: left; width: 49%">
- <fieldset>
- <legend>{#style_dlg.placement}</legend>
-
- <table border="0">
- <tr>
- <td> </td>
- <td><input type="checkbox" id="positioning_placement_same" name="positioning_placement_same" class="checkbox" checked="checked" onClick="toggleSame(this,'positioning_placement');" /> <label for="positioning_placement_same">{#style_dlg.same}</label></td>
- </tr>
- <tr>
- <td>{#style_dlg.top}</td>
- <td>
- <table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="positioning_placement_top" name="positioning_placement_top" /></td>
- <td> </td>
- <td><select id="positioning_placement_top_measurement" name="positioning_placement_top_measurement"></select></td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td>{#style_dlg.right}</td>
- <td>
- <table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="positioning_placement_right" name="positioning_placement_right" disabled="disabled" /></td>
- <td> </td>
- <td><select id="positioning_placement_right_measurement" name="positioning_placement_right_measurement" disabled="disabled"></select></td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td>{#style_dlg.bottom}</td>
- <td>
- <table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="positioning_placement_bottom" name="positioning_placement_bottom" disabled="disabled" /></td>
- <td> </td>
- <td><select id="positioning_placement_bottom_measurement" name="positioning_placement_bottom_measurement" disabled="disabled"></select></td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td>{#style_dlg.left}</td>
- <td>
- <table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="positioning_placement_left" name="positioning_placement_left" disabled="disabled" /></td>
- <td> </td>
- <td><select id="positioning_placement_left_measurement" name="positioning_placement_left_measurement" disabled="disabled"></select></td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </fieldset>
-</div>
-
-<div style="float: right; width: 49%">
- <fieldset>
- <legend>{#style_dlg.clip}</legend>
-
- <table border="0">
- <tr>
- <td> </td>
- <td><input type="checkbox" id="positioning_clip_same" name="positioning_clip_same" class="checkbox" checked="checked" onClick="toggleSame(this,'positioning_clip');" /> <label for="positioning_clip_same">{#style_dlg.same}</label></td>
- </tr>
- <tr>
- <td>{#style_dlg.top}</td>
- <td>
- <table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="positioning_clip_top" name="positioning_clip_top" /></td>
- <td> </td>
- <td><select id="positioning_clip_top_measurement" name="positioning_clip_top_measurement"></select></td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td>{#style_dlg.right}</td>
- <td>
- <table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="positioning_clip_right" name="positioning_clip_right" disabled="disabled" /></td>
- <td> </td>
- <td><select id="positioning_clip_right_measurement" name="positioning_clip_right_measurement" disabled="disabled"></select></td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td>{#style_dlg.bottom}</td>
- <td>
- <table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="positioning_clip_bottom" name="positioning_clip_bottom" disabled="disabled" /></td>
- <td> </td>
- <td><select id="positioning_clip_bottom_measurement" name="positioning_clip_bottom_measurement" disabled="disabled"></select></td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td>{#style_dlg.left}</td>
- <td>
- <table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="positioning_clip_left" name="positioning_clip_left" disabled="disabled" /></td>
- <td> </td>
- <td><select id="positioning_clip_left_measurement" name="positioning_clip_left_measurement" disabled="disabled"></select></td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </fieldset>
-</div>
-<br style="clear: both" />
-</div>
-</div>
-
-<div class="mceActionPanel">
- <div style="float: left">
- <div style="float: left"><input type="submit" id="insert" name="insert" value="{#update}" /></div>
-
- <div style="float: left"> <input type="button" class="button" id="apply" name="apply" value="{#style_dlg.apply}" onClick="applyAction();" /></div>
- <br style="clear: both" />
- </div>
-
- <div style="float: right">
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onClick="tinyMCEPopup.close();" />
- </div>
-</div>
-</form>
-
-<div style="display: none">
- <div id="container"></div>
-</div>
-
-</body>
-</html>
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
- <title>{#table_dlg.cell_title}</title>\r
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
- <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
- <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
- <script type="text/javascript" src="../../utils/editable_selects.js"></script>\r
- <script type="text/javascript" src="js/cell.js"></script>\r
- <link href="css/cell.css" rel="stylesheet" type="text/css" />\r
- <base target="_self" />\r
-</head>\r
-<body id="tablecell" style="display: none">\r
- <form onsubmit="updateAction();return false;" action="#">\r
- <div class="tabs">\r
- <ul>\r
- <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#table_dlg.general_tab}</a></span></li>\r
- <li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#table_dlg.advanced_tab}</a></span></li>\r
- </ul>\r
- </div>\r
-\r
- <div class="panel_wrapper">\r
- <div id="general_panel" class="panel current">\r
- <fieldset>\r
- <legend>{#table_dlg.general_props}</legend>\r
-\r
- <table border="0" cellpadding="4" cellspacing="0">\r
- <tr>\r
- <td><label for="align">{#table_dlg.align}</label></td>\r
- <td>\r
- <select id="align" name="align" class="mceFocus">\r
- <option value="">{#not_set}</option>\r
- <option value="center">{#table_dlg.align_middle}</option>\r
- <option value="left">{#table_dlg.align_left}</option>\r
- <option value="right">{#table_dlg.align_right}</option>\r
- </select>\r
- </td>\r
- \r
- <td><label for="celltype">{#table_dlg.cell_type}</label></td>\r
- <td>\r
- <select id="celltype" name="celltype">\r
- <option value="td">{#table_dlg.td}</option>\r
- <option value="th">{#table_dlg.th}</option>\r
- </select>\r
- </td>\r
- </tr>\r
-\r
- <tr>\r
- <td><label for="valign">{#table_dlg.valign}</label></td>\r
- <td>\r
- <select id="valign" name="valign">\r
- <option value="">{#not_set}</option>\r
- <option value="top">{#table_dlg.align_top}</option>\r
- <option value="middle">{#table_dlg.align_middle}</option>\r
- <option value="bottom">{#table_dlg.align_bottom}</option>\r
- </select>\r
- </td>\r
-\r
- <td><label for="scope">{#table_dlg.scope}</label></td>\r
- <td>\r
- <select id="scope" name="scope">\r
- <option value="">{#not_set}</option>\r
- <option value="col">{#table.col}</option>\r
- <option value="row">{#table.row}</option>\r
- <option value="rowgroup">{#table_dlg.rowgroup}</option>\r
- <option value="colgroup">{#table_dlg.colgroup}</option>\r
- </select>\r
- </td>\r
-\r
- </tr>\r
-\r
- <tr>\r
- <td><label for="width">{#table_dlg.width}</label></td>\r
- <td><input id="width" name="width" type="text" value="" size="4" maxlength="4" onchange="changedSize();" /></td>\r
-\r
- <td><label for="height">{#table_dlg.height}</label></td>\r
- <td><input id="height" name="height" type="text" value="" size="4" maxlength="4" onchange="changedSize();" /></td>\r
- </tr>\r
-\r
- <tr id="styleSelectRow">\r
- <td><label for="class">{#class_name}</label></td>\r
- <td colspan="3">\r
- <select id="class" name="class" class="mceEditableSelect">\r
- <option value="" selected="selected">{#not_set}</option>\r
- </select>\r
- </td>\r
- </tr>\r
- </table>\r
- </fieldset>\r
- </div>\r
-\r
- <div id="advanced_panel" class="panel">\r
- <fieldset>\r
- <legend>{#table_dlg.advanced_props}</legend>\r
-\r
- <table border="0" cellpadding="0" cellspacing="4">\r
- <tr>\r
- <td class="column1"><label for="id">{#table_dlg.id}</label></td> \r
- <td><input id="id" name="id" type="text" value="" style="width: 200px" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td><label for="style">{#table_dlg.style}</label></td>\r
- <td><input type="text" id="style" name="style" value="" style="width: 200px;" onchange="changedStyle();" /></td>\r
- </tr>\r
-\r
- <tr>\r
- <td class="column1"><label for="dir">{#table_dlg.langdir}</label></td> \r
- <td>\r
- <select id="dir" name="dir" style="width: 200px"> \r
- <option value="">{#not_set}</option> \r
- <option value="ltr">{#table_dlg.ltr}</option> \r
- <option value="rtl">{#table_dlg.rtl}</option> \r
- </select>\r
- </td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="column1"><label for="lang">{#table_dlg.langcode}</label></td> \r
- <td>\r
- <input id="lang" name="lang" type="text" value="" style="width: 200px" />\r
- </td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="column1"><label for="backgroundimage">{#table_dlg.bgimage}</label></td> \r
- <td>\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input id="backgroundimage" name="backgroundimage" type="text" value="" style="width: 200px" onchange="changedBackgroundImage();" /></td>\r
- <td id="backgroundimagebrowsercontainer"> </td>\r
- </tr>\r
- </table>\r
- </td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="column1"><label for="bordercolor">{#table_dlg.bordercolor}</label></td> \r
- <td>\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input id="bordercolor" name="bordercolor" type="text" value="" size="9" onchange="updateColor('bordercolor_pick','bordercolor');changedColor();" /></td>\r
- <td id="bordercolor_pickcontainer"> </td>\r
- </tr>\r
- </table>\r
- </td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="column1"><label for="bgcolor">{#table_dlg.bgcolor}</label></td> \r
- <td>\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');changedColor();" /></td>\r
- <td id="bgcolor_pickcontainer"> </td>\r
- </tr>\r
- </table>\r
- </td> \r
- </tr>\r
- </table>\r
- </fieldset>\r
- </div>\r
- </div>\r
-\r
- <div class="mceActionPanel">\r
- <div>\r
- <select id="action" name="action">\r
- <option value="cell">{#table_dlg.cell_cell}</option>\r
- <option value="row">{#table_dlg.cell_row}</option>\r
- <option value="all">{#table_dlg.cell_all}</option>\r
- </select>\r
- </div>\r
-\r
- <div style="float: left">\r
- <div><input type="submit" id="insert" name="insert" value="{#update}" /></div>\r
- </div>\r
-\r
- <div style="float: right">\r
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
- </div>\r
- </div>\r
- </form>\r
-</body>\r
-</html>\r
+++ /dev/null
-/* CSS file for cell dialog in the table plugin */\r
-\r
-.panel_wrapper div.current {\r
- height: 200px;\r
-}\r
-\r
-.advfield {\r
- width: 200px;\r
-}\r
-\r
-#action {\r
- margin-bottom: 3px;\r
-}\r
-\r
-#class {\r
- width: 150px;\r
-}
\ No newline at end of file
+++ /dev/null
-/* CSS file for row dialog in the table plugin */\r
-\r
-.panel_wrapper div.current {\r
- height: 200px;\r
-}\r
-\r
-.advfield {\r
- width: 200px;\r
-}\r
-\r
-#action {\r
- margin-bottom: 3px;\r
-}\r
-\r
-#rowtype,#align,#valign,#class,#height {\r
- width: 150px;\r
-}\r
-\r
-#height {\r
- width: 50px; \r
-}\r
-\r
-.col2 {\r
- padding-left: 20px;\r
-}\r
+++ /dev/null
-/* CSS file for table dialog in the table plugin */\r
-\r
-.panel_wrapper div.current {\r
- height: 245px;\r
-}\r
-\r
-.advfield {\r
- width: 200px;\r
-}\r
-\r
-#class {\r
- width: 150px;\r
-}\r
+++ /dev/null
-(function(){var each=tinymce.each;tinymce.create('tinymce.plugins.TablePlugin',{init:function(ed,url){var t=this;t.editor=ed;t.url=url;each([['table','table.desc','mceInsertTable',true],['delete_table','table.del','mceTableDelete'],['delete_col','table.delete_col_desc','mceTableDeleteCol'],['delete_row','table.delete_row_desc','mceTableDeleteRow'],['col_after','table.col_after_desc','mceTableInsertColAfter'],['col_before','table.col_before_desc','mceTableInsertColBefore'],['row_after','table.row_after_desc','mceTableInsertRowAfter'],['row_before','table.row_before_desc','mceTableInsertRowBefore'],['row_props','table.row_desc','mceTableRowProps',true],['cell_props','table.cell_desc','mceTableCellProps',true],['split_cells','table.split_cells_desc','mceTableSplitCells',true],['merge_cells','table.merge_cells_desc','mceTableMergeCells',true]],function(c){ed.addButton(c[0],{title:c[1],cmd:c[2],ui:c[3]});});ed.onInit.add(function(){if(ed&&ed.plugins.contextmenu){ed.plugins.contextmenu.onContextMenu.add(function(th,m,e){var sm,se=ed.selection,el=se.getNode()||ed.getBody();if(ed.dom.getParent(e,'td')||ed.dom.getParent(e,'th')){m.removeAll();if(el.nodeName=='A'&&!ed.dom.getAttrib(el,'name')){m.add({title:'advanced.link_desc',icon:'link',cmd:ed.plugins.advlink?'mceAdvLink':'mceLink',ui:true});m.add({title:'advanced.unlink_desc',icon:'unlink',cmd:'UnLink'});m.addSeparator();}if(el.nodeName=='IMG'&&el.className.indexOf('mceItem')==-1){m.add({title:'advanced.image_desc',icon:'image',cmd:ed.plugins.advimage?'mceAdvImage':'mceImage',ui:true});m.addSeparator();}m.add({title:'table.desc',icon:'table',cmd:'mceInsertTable',ui:true,value:{action:'insert'}});m.add({title:'table.props_desc',icon:'table_props',cmd:'mceInsertTable',ui:true});m.add({title:'table.del',icon:'delete_table',cmd:'mceTableDelete',ui:true});m.addSeparator();sm=m.addMenu({title:'table.cell'});sm.add({title:'table.cell_desc',icon:'cell_props',cmd:'mceTableCellProps',ui:true});sm.add({title:'table.split_cells_desc',icon:'split_cells',cmd:'mceTableSplitCells',ui:true});sm.add({title:'table.merge_cells_desc',icon:'merge_cells',cmd:'mceTableMergeCells',ui:true});sm=m.addMenu({title:'table.row'});sm.add({title:'table.row_desc',icon:'row_props',cmd:'mceTableRowProps',ui:true});sm.add({title:'table.row_before_desc',icon:'row_before',cmd:'mceTableInsertRowBefore'});sm.add({title:'table.row_after_desc',icon:'row_after',cmd:'mceTableInsertRowAfter'});sm.add({title:'table.delete_row_desc',icon:'delete_row',cmd:'mceTableDeleteRow'});sm.addSeparator();sm.add({title:'table.cut_row_desc',icon:'cut',cmd:'mceTableCutRow'});sm.add({title:'table.copy_row_desc',icon:'copy',cmd:'mceTableCopyRow'});sm.add({title:'table.paste_row_before_desc',icon:'paste',cmd:'mceTablePasteRowBefore'});sm.add({title:'table.paste_row_after_desc',icon:'paste',cmd:'mceTablePasteRowAfter'});sm=m.addMenu({title:'table.col'});sm.add({title:'table.col_before_desc',icon:'col_before',cmd:'mceTableInsertColBefore'});sm.add({title:'table.col_after_desc',icon:'col_after',cmd:'mceTableInsertColAfter'});sm.add({title:'table.delete_col_desc',icon:'delete_col',cmd:'mceTableDeleteCol'});}else m.add({title:'table.desc',icon:'table',cmd:'mceInsertTable',ui:true});});}});ed.onKeyDown.add(function(ed,e){if(e.keyCode==9&&ed.dom.getParent(ed.selection.getNode(),'TABLE')){if(!tinymce.isGecko&&!tinymce.isOpera){tinyMCE.execInstanceCommand(ed.editorId,"mceTableMoveToNextRow",true);return tinymce.dom.Event.cancel(e);}ed.undoManager.add();}});if(!tinymce.isIE){if(ed.getParam('table_selection',true)){ed.onClick.add(function(ed,e){e=e.target;if(e.nodeName==='TABLE')ed.selection.select(e);});}}ed.onNodeChange.add(function(ed,cm,n){var p=ed.dom.getParent(n,'td,th,caption');cm.setActive('table',n.nodeName==='TABLE'||!!p);if(p&&p.nodeName==='CAPTION')p=null;cm.setDisabled('delete_table',!p);cm.setDisabled('delete_col',!p);cm.setDisabled('delete_table',!p);cm.setDisabled('delete_row',!p);cm.setDisabled('col_after',!p);cm.setDisabled('col_before',!p);cm.setDisabled('row_after',!p);cm.setDisabled('row_before',!p);cm.setDisabled('row_props',!p);cm.setDisabled('cell_props',!p);cm.setDisabled('split_cells',!p||(parseInt(ed.dom.getAttrib(p,'colspan','1'))<2&&parseInt(ed.dom.getAttrib(p,'rowspan','1'))<2));cm.setDisabled('merge_cells',!p);});if(!tinymce.isIE){ed.onBeforeSetContent.add(function(ed,o){if(o.initial)o.content=o.content.replace(/<(td|th)([^>]+|)>\s*<\/(td|th)>/g,tinymce.isOpera?'<$1$2> </$1>':'<$1$2><br mce_bogus="1" /></$1>');});}},execCommand:function(cmd,ui,val){var ed=this.editor,b;switch(cmd){case"mceTableMoveToNextRow":case"mceInsertTable":case"mceTableRowProps":case"mceTableCellProps":case"mceTableSplitCells":case"mceTableMergeCells":case"mceTableInsertRowBefore":case"mceTableInsertRowAfter":case"mceTableDeleteRow":case"mceTableInsertColBefore":case"mceTableInsertColAfter":case"mceTableDeleteCol":case"mceTableCutRow":case"mceTableCopyRow":case"mceTablePasteRowBefore":case"mceTablePasteRowAfter":case"mceTableDelete":ed.execCommand('mceBeginUndoLevel');this._doExecCommand(cmd,ui,val);ed.execCommand('mceEndUndoLevel');return true;}return false;},getInfo:function(){return{longname:'Tables',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/table',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_doExecCommand:function(command,user_interface,value){var inst=this.editor,ed=inst,url=this.url;var focusElm=inst.selection.getNode();var trElm=inst.dom.getParent(focusElm,"tr");var tdElm=inst.dom.getParent(focusElm,"td,th");var tableElm=inst.dom.getParent(focusElm,"table");var doc=inst.contentWindow.document;var tableBorder=tableElm?tableElm.getAttribute("border"):"";if(trElm&&tdElm==null)tdElm=trElm.cells[0];function inArray(ar,v){for(var i=0;i<ar.length;i++){if(ar[i].length>0&&inArray(ar[i],v))return true;if(ar[i]==v)return true;}return false;}function select(dx,dy){var td;grid=getTableGrid(tableElm);dx=dx||0;dy=dy||0;dx=Math.max(cpos.cellindex+dx,0);dy=Math.max(cpos.rowindex+dy,0);inst.execCommand('mceRepaint');td=getCell(grid,dy,dx);if(td){inst.selection.select(td.firstChild||td);inst.selection.collapse(1);}};function makeTD(){var newTD=doc.createElement("td");if(!tinymce.isIE)newTD.innerHTML='<br mce_bogus="1"/>';}function getColRowSpan(td){var colspan=inst.dom.getAttrib(td,"colspan");var rowspan=inst.dom.getAttrib(td,"rowspan");colspan=colspan==""?1:parseInt(colspan);rowspan=rowspan==""?1:parseInt(rowspan);return{colspan:colspan,rowspan:rowspan};}function getCellPos(grid,td){var x,y;for(y=0;y<grid.length;y++){for(x=0;x<grid[y].length;x++){if(grid[y][x]==td)return{cellindex:x,rowindex:y};}}return null;}function getCell(grid,row,col){if(grid[row]&&grid[row][col])return grid[row][col];return null;}function getNextCell(table,cell){var cells=[],x=0,i,j,cell,nextCell;for(i=0;i<table.rows.length;i++)for(j=0;j<table.rows[i].cells.length;j++,x++)cells[x]=table.rows[i].cells[j];for(i=0;i<cells.length;i++)if(cells[i]==cell)if(nextCell=cells[i+1])return nextCell;}function getTableGrid(table){var grid=[],rows=table.rows,x,y,td,sd,xstart,x2,y2;for(y=0;y<rows.length;y++){for(x=0;x<rows[y].cells.length;x++){td=rows[y].cells[x];sd=getColRowSpan(td);for(xstart=x;grid[y]&&grid[y][xstart];xstart++);for(y2=y;y2<y+sd['rowspan'];y2++){if(!grid[y2])grid[y2]=[];for(x2=xstart;x2<xstart+sd['colspan'];x2++)grid[y2][x2]=td;}}}return grid;}function trimRow(table,tr,td,new_tr){var grid=getTableGrid(table),cpos=getCellPos(grid,td);var cells,lastElm;if(new_tr.cells.length!=tr.childNodes.length){cells=tr.childNodes;lastElm=null;for(var x=0;td=getCell(grid,cpos.rowindex,x);x++){var remove=true;var sd=getColRowSpan(td);if(inArray(cells,td)){new_tr.childNodes[x]._delete=true;}else if((lastElm==null||td!=lastElm)&&sd.colspan>1){for(var i=x;i<x+td.colSpan;i++)new_tr.childNodes[i]._delete=true;}if((lastElm==null||td!=lastElm)&&sd.rowspan>1)td.rowSpan=sd.rowspan+1;lastElm=td;}deleteMarked(tableElm);}}function prevElm(node,name){while((node=node.previousSibling)!=null){if(node.nodeName==name)return node;}return null;}function nextElm(node,names){var namesAr=names.split(',');while((node=node.nextSibling)!=null){for(var i=0;i<namesAr.length;i++){if(node.nodeName.toLowerCase()==namesAr[i].toLowerCase())return node;}}return null;}function deleteMarked(tbl){if(tbl.rows==0)return;var tr=tbl.rows[0];do{var next=nextElm(tr,"TR");if(tr._delete){tr.parentNode.removeChild(tr);continue;}var td=tr.cells[0];if(td.cells>1){do{var nexttd=nextElm(td,"TD,TH");if(td._delete)td.parentNode.removeChild(td);}while((td=nexttd)!=null);}}while((tr=next)!=null);}function addRows(td_elm,tr_elm,rowspan){td_elm.rowSpan=1;var trNext=nextElm(tr_elm,"TR");for(var i=1;i<rowspan&&trNext;i++){var newTD=doc.createElement("td");if(!tinymce.isIE)newTD.innerHTML='<br mce_bogus="1"/>';if(tinymce.isIE)trNext.insertBefore(newTD,trNext.cells(td_elm.cellIndex));else trNext.insertBefore(newTD,trNext.cells[td_elm.cellIndex]);trNext=nextElm(trNext,"TR");}}function copyRow(doc,table,tr){var grid=getTableGrid(table);var newTR=tr.cloneNode(false);var cpos=getCellPos(grid,tr.cells[0]);var lastCell=null;var tableBorder=inst.dom.getAttrib(table,"border");var tdElm=null;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){var newTD=null;if(lastCell!=tdElm){for(var i=0;i<tr.cells.length;i++){if(tdElm==tr.cells[i]){newTD=tdElm.cloneNode(true);break;}}}if(newTD==null){newTD=doc.createElement("td");if(!tinymce.isIE)newTD.innerHTML='<br mce_bogus="1"/>';}newTD.colSpan=1;newTD.rowSpan=1;newTR.appendChild(newTD);lastCell=tdElm;}return newTR;}switch(command){case"mceTableMoveToNextRow":var nextCell=getNextCell(tableElm,tdElm);if(!nextCell){inst.execCommand("mceTableInsertRowAfter",tdElm);nextCell=getNextCell(tableElm,tdElm);}inst.selection.select(nextCell);inst.selection.collapse(true);return true;case"mceTableRowProps":if(trElm==null)return true;if(user_interface){inst.windowManager.open({url:url+'/row.htm',width:400+parseInt(inst.getLang('table.rowprops_delta_width',0)),height:295+parseInt(inst.getLang('table.rowprops_delta_height',0)),inline:1},{plugin_url:url});}return true;case"mceTableCellProps":if(tdElm==null)return true;if(user_interface){inst.windowManager.open({url:url+'/cell.htm',width:400+parseInt(inst.getLang('table.cellprops_delta_width',0)),height:295+parseInt(inst.getLang('table.cellprops_delta_height',0)),inline:1},{plugin_url:url});}return true;case"mceInsertTable":if(user_interface){inst.windowManager.open({url:url+'/table.htm',width:400+parseInt(inst.getLang('table.table_delta_width',0)),height:320+parseInt(inst.getLang('table.table_delta_height',0)),inline:1},{plugin_url:url,action:value?value.action:0});}return true;case"mceTableDelete":var table=inst.dom.getParent(inst.selection.getNode(),"table");if(table){table.parentNode.removeChild(table);inst.execCommand('mceRepaint');}return true;case"mceTableSplitCells":case"mceTableMergeCells":case"mceTableInsertRowBefore":case"mceTableInsertRowAfter":case"mceTableDeleteRow":case"mceTableInsertColBefore":case"mceTableInsertColAfter":case"mceTableDeleteCol":case"mceTableCutRow":case"mceTableCopyRow":case"mceTablePasteRowBefore":case"mceTablePasteRowAfter":if(!tableElm)return true;if(trElm&&tableElm!=trElm.parentNode)tableElm=trElm.parentNode;if(tableElm&&trElm){switch(command){case"mceTableCutRow":if(!trElm||!tdElm)return true;inst.tableRowClipboard=copyRow(doc,tableElm,trElm);inst.execCommand("mceTableDeleteRow");break;case"mceTableCopyRow":if(!trElm||!tdElm)return true;inst.tableRowClipboard=copyRow(doc,tableElm,trElm);break;case"mceTablePasteRowBefore":if(!trElm||!tdElm)return true;var newTR=inst.tableRowClipboard.cloneNode(true);var prevTR=prevElm(trElm,"TR");if(prevTR!=null)trimRow(tableElm,prevTR,prevTR.cells[0],newTR);trElm.parentNode.insertBefore(newTR,trElm);break;case"mceTablePasteRowAfter":if(!trElm||!tdElm)return true;var nextTR=nextElm(trElm,"TR");var newTR=inst.tableRowClipboard.cloneNode(true);trimRow(tableElm,trElm,tdElm,newTR);if(nextTR==null)trElm.parentNode.appendChild(newTR);else nextTR.parentNode.insertBefore(newTR,nextTR);break;case"mceTableInsertRowBefore":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var newTR=doc.createElement("tr");var lastTDElm=null;cpos.rowindex--;if(cpos.rowindex<0)cpos.rowindex=0;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['rowspan']==1){var newTD=doc.createElement("td");if(!tinymce.isIE)newTD.innerHTML='<br mce_bogus="1"/>';newTD.colSpan=tdElm.colSpan;newTR.appendChild(newTD);}else tdElm.rowSpan=sd['rowspan']+1;lastTDElm=tdElm;}}trElm.parentNode.insertBefore(newTR,trElm);select(0,1);break;case"mceTableInsertRowAfter":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var newTR=doc.createElement("tr");var lastTDElm=null;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['rowspan']==1){var newTD=doc.createElement("td");if(!tinymce.isIE)newTD.innerHTML='<br mce_bogus="1"/>';newTD.colSpan=tdElm.colSpan;newTR.appendChild(newTD);}else tdElm.rowSpan=sd['rowspan']+1;lastTDElm=tdElm;}}if(newTR.hasChildNodes()){var nextTR=nextElm(trElm,"TR");if(nextTR)nextTR.parentNode.insertBefore(newTR,nextTR);else tableElm.appendChild(newTR);}select(0,1);break;case"mceTableDeleteRow":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);if(grid.length==1&&tableElm.nodeName=='TBODY'){inst.dom.remove(inst.dom.getParent(tableElm,"table"));return true;}var cells=trElm.cells;var nextTR=nextElm(trElm,"TR");for(var x=0;x<cells.length;x++){if(cells[x].rowSpan>1){var newTD=cells[x].cloneNode(true);var sd=getColRowSpan(cells[x]);newTD.rowSpan=sd.rowspan-1;var nextTD=nextTR.cells[x];if(nextTD==null)nextTR.appendChild(newTD);else nextTR.insertBefore(newTD,nextTD);}}var lastTDElm=null;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd.rowspan>1){tdElm.rowSpan=sd.rowspan-1;}else{trElm=tdElm.parentNode;if(trElm.parentNode)trElm._delete=true;}lastTDElm=tdElm;}}deleteMarked(tableElm);select(0,-1);break;case"mceTableInsertColBefore":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var lastTDElm=null;for(var y=0;tdElm=getCell(grid,y,cpos.cellindex);y++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['colspan']==1){var newTD=doc.createElement(tdElm.nodeName);if(!tinymce.isIE)newTD.innerHTML='<br mce_bogus="1"/>';newTD.rowSpan=tdElm.rowSpan;tdElm.parentNode.insertBefore(newTD,tdElm);}else tdElm.colSpan++;lastTDElm=tdElm;}}select();break;case"mceTableInsertColAfter":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var lastTDElm=null;for(var y=0;tdElm=getCell(grid,y,cpos.cellindex);y++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['colspan']==1){var newTD=doc.createElement(tdElm.nodeName);if(!tinymce.isIE)newTD.innerHTML='<br mce_bogus="1"/>';newTD.rowSpan=tdElm.rowSpan;var nextTD=nextElm(tdElm,"TD,TH");if(nextTD==null)tdElm.parentNode.appendChild(newTD);else nextTD.parentNode.insertBefore(newTD,nextTD);}else tdElm.colSpan++;lastTDElm=tdElm;}}select(1);break;case"mceTableDeleteCol":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var lastTDElm=null;if((grid.length>1&&grid[0].length<=1)&&tableElm.nodeName=='TBODY'){inst.dom.remove(inst.dom.getParent(tableElm,"table"));return true;}for(var y=0;tdElm=getCell(grid,y,cpos.cellindex);y++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['colspan']>1)tdElm.colSpan=sd['colspan']-1;else{if(tdElm.parentNode)tdElm.parentNode.removeChild(tdElm);}lastTDElm=tdElm;}}select(-1);break;case"mceTableSplitCells":if(!trElm||!tdElm)return true;var spandata=getColRowSpan(tdElm);var colspan=spandata["colspan"];var rowspan=spandata["rowspan"];if(colspan>1||rowspan>1){tdElm.colSpan=1;for(var i=1;i<colspan;i++){var newTD=doc.createElement("td");if(!tinymce.isIE)newTD.innerHTML='<br mce_bogus="1"/>';trElm.insertBefore(newTD,nextElm(tdElm,"TD,TH"));if(rowspan>1)addRows(newTD,trElm,rowspan);}addRows(tdElm,trElm,rowspan);}tableElm=inst.dom.getParent(inst.selection.getNode(),"table");break;case"mceTableMergeCells":var rows=[];var sel=inst.selection.getSel();var grid=getTableGrid(tableElm);if(tinymce.isIE||sel.rangeCount==1){if(user_interface){var sp=getColRowSpan(tdElm);inst.windowManager.open({url:url+'/merge_cells.htm',width:240+parseInt(inst.getLang('table.merge_cells_delta_width',0)),height:110+parseInt(inst.getLang('table.merge_cells_delta_height',0)),inline:1},{action:"update",numcols:sp.colspan,numrows:sp.rowspan,plugin_url:url});return true;}else{var numRows=parseInt(value['numrows']);var numCols=parseInt(value['numcols']);var cpos=getCellPos(grid,tdElm);if((""+numRows)=="NaN")numRows=1;if((""+numCols)=="NaN")numCols=1;var tRows=tableElm.rows;for(var y=cpos.rowindex;y<grid.length;y++){var rowCells=[];for(var x=cpos.cellindex;x<grid[y].length;x++){var td=getCell(grid,y,x);if(td&&!inArray(rows,td)&&!inArray(rowCells,td)){var cp=getCellPos(grid,td);if(cp.cellindex<cpos.cellindex+numCols&&cp.rowindex<cpos.rowindex+numRows)rowCells[rowCells.length]=td;}}if(rowCells.length>0)rows[rows.length]=rowCells;var td=getCell(grid,cpos.rowindex,cpos.cellindex);each(ed.dom.select('br',td),function(e,i){if(i>0&&ed.dom.getAttrib('mce_bogus'))ed.dom.remove(e);});}}}else{var cells=[];var sel=inst.selection.getSel();var lastTR=null;var curRow=null;var x1=-1,y1=-1,x2,y2;if(sel.rangeCount<2)return true;for(var i=0;i<sel.rangeCount;i++){var rng=sel.getRangeAt(i);var tdElm=rng.startContainer.childNodes[rng.startOffset];if(!tdElm)break;if(tdElm.nodeName=="TD"||tdElm.nodeName=="TH")cells[cells.length]=tdElm;}var tRows=tableElm.rows;for(var y=0;y<tRows.length;y++){var rowCells=[];for(var x=0;x<tRows[y].cells.length;x++){var td=tRows[y].cells[x];for(var i=0;i<cells.length;i++){if(td==cells[i]){rowCells[rowCells.length]=td;}}}if(rowCells.length>0)rows[rows.length]=rowCells;}var curRow=[];var lastTR=null;for(var y=0;y<grid.length;y++){for(var x=0;x<grid[y].length;x++){grid[y][x]._selected=false;for(var i=0;i<cells.length;i++){if(grid[y][x]==cells[i]){if(x1==-1){x1=x;y1=y;}x2=x;y2=y;grid[y][x]._selected=true;}}}}for(var y=y1;y<=y2;y++){for(var x=x1;x<=x2;x++){if(!grid[y][x]._selected){alert("Invalid selection for merge.");return true;}}}}var rowSpan=1,colSpan=1;var lastRowSpan=-1;for(var y=0;y<rows.length;y++){var rowColSpan=0;for(var x=0;x<rows[y].length;x++){var sd=getColRowSpan(rows[y][x]);rowColSpan+=sd['colspan'];if(lastRowSpan!=-1&&sd['rowspan']!=lastRowSpan){alert("Invalid selection for merge.");return true;}lastRowSpan=sd['rowspan'];}if(rowColSpan>colSpan)colSpan=rowColSpan;lastRowSpan=-1;}var lastColSpan=-1;for(var x=0;x<rows[0].length;x++){var colRowSpan=0;for(var y=0;y<rows.length;y++){var sd=getColRowSpan(rows[y][x]);colRowSpan+=sd['rowspan'];if(lastColSpan!=-1&&sd['colspan']!=lastColSpan){alert("Invalid selection for merge.");return true;}lastColSpan=sd['colspan'];}if(colRowSpan>rowSpan)rowSpan=colRowSpan;lastColSpan=-1;}tdElm=rows[0][0];tdElm.rowSpan=rowSpan;tdElm.colSpan=colSpan;for(var y=0;y<rows.length;y++){for(var x=0;x<rows[y].length;x++){var html=rows[y][x].innerHTML;var chk=html.replace(/[ \t\r\n]/g,"");if(chk!="<br/>"&&chk!="<br>"&&chk!='<br mce_bogus="1"/>'&&(x+y>0))tdElm.innerHTML+=html;if(rows[y][x]!=tdElm&&!rows[y][x]._deleted){var cpos=getCellPos(grid,rows[y][x]);var tr=rows[y][x].parentNode;tr.removeChild(rows[y][x]);rows[y][x]._deleted=true;if(!tr.hasChildNodes()){tr.parentNode.removeChild(tr);var lastCell=null;for(var x=0;cellElm=getCell(grid,cpos.rowindex,x);x++){if(cellElm!=lastCell&&cellElm.rowSpan>1)cellElm.rowSpan--;lastCell=cellElm;}if(tdElm.rowSpan>1)tdElm.rowSpan--;}}}}each(ed.dom.select('br',tdElm),function(e,i){if(i>0&&ed.dom.getAttrib(e,'mce_bogus'))ed.dom.remove(e);});break;}tableElm=inst.dom.getParent(inst.selection.getNode(),"table");inst.addVisual(tableElm);inst.nodeChanged();}return true;}return false;}});tinymce.PluginManager.add('table',tinymce.plugins.TablePlugin);})();
\ No newline at end of file
+++ /dev/null
-/**\r
- * $Id: editor_plugin_src.js 853 2008-05-27 08:05:35Z spocke $\r
- *\r
- * @author Moxiecode\r
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-(function() {\r
- var each = tinymce.each;\r
-\r
- tinymce.create('tinymce.plugins.TablePlugin', {\r
- init : function(ed, url) {\r
- var t = this;\r
-\r
- t.editor = ed;\r
- t.url = url;\r
-\r
- // Register buttons\r
- each([\r
- ['table', 'table.desc', 'mceInsertTable', true],\r
- ['delete_table', 'table.del', 'mceTableDelete'],\r
- ['delete_col', 'table.delete_col_desc', 'mceTableDeleteCol'],\r
- ['delete_row', 'table.delete_row_desc', 'mceTableDeleteRow'],\r
- ['col_after', 'table.col_after_desc', 'mceTableInsertColAfter'],\r
- ['col_before', 'table.col_before_desc', 'mceTableInsertColBefore'],\r
- ['row_after', 'table.row_after_desc', 'mceTableInsertRowAfter'],\r
- ['row_before', 'table.row_before_desc', 'mceTableInsertRowBefore'],\r
- ['row_props', 'table.row_desc', 'mceTableRowProps', true],\r
- ['cell_props', 'table.cell_desc', 'mceTableCellProps', true],\r
- ['split_cells', 'table.split_cells_desc', 'mceTableSplitCells', true],\r
- ['merge_cells', 'table.merge_cells_desc', 'mceTableMergeCells', true]\r
- ], function(c) {\r
- ed.addButton(c[0], {title : c[1], cmd : c[2], ui : c[3]});\r
- });\r
-\r
- ed.onInit.add(function() {\r
- if (ed && ed.plugins.contextmenu) {\r
- ed.plugins.contextmenu.onContextMenu.add(function(th, m, e) {\r
- var sm, se = ed.selection, el = se.getNode() || ed.getBody();\r
-\r
- if (ed.dom.getParent(e, 'td') || ed.dom.getParent(e, 'th')) {\r
- m.removeAll();\r
-\r
- if (el.nodeName == 'A' && !ed.dom.getAttrib(el, 'name')) {\r
- m.add({title : 'advanced.link_desc', icon : 'link', cmd : ed.plugins.advlink ? 'mceAdvLink' : 'mceLink', ui : true});\r
- m.add({title : 'advanced.unlink_desc', icon : 'unlink', cmd : 'UnLink'});\r
- m.addSeparator();\r
- }\r
-\r
- if (el.nodeName == 'IMG' && el.className.indexOf('mceItem') == -1) {\r
- m.add({title : 'advanced.image_desc', icon : 'image', cmd : ed.plugins.advimage ? 'mceAdvImage' : 'mceImage', ui : true});\r
- m.addSeparator();\r
- }\r
-\r
- m.add({title : 'table.desc', icon : 'table', cmd : 'mceInsertTable', ui : true, value : {action : 'insert'}});\r
- m.add({title : 'table.props_desc', icon : 'table_props', cmd : 'mceInsertTable', ui : true});\r
- m.add({title : 'table.del', icon : 'delete_table', cmd : 'mceTableDelete', ui : true});\r
- m.addSeparator();\r
-\r
- // Cell menu\r
- sm = m.addMenu({title : 'table.cell'});\r
- sm.add({title : 'table.cell_desc', icon : 'cell_props', cmd : 'mceTableCellProps', ui : true});\r
- sm.add({title : 'table.split_cells_desc', icon : 'split_cells', cmd : 'mceTableSplitCells', ui : true});\r
- sm.add({title : 'table.merge_cells_desc', icon : 'merge_cells', cmd : 'mceTableMergeCells', ui : true});\r
-\r
- // Row menu\r
- sm = m.addMenu({title : 'table.row'});\r
- sm.add({title : 'table.row_desc', icon : 'row_props', cmd : 'mceTableRowProps', ui : true});\r
- sm.add({title : 'table.row_before_desc', icon : 'row_before', cmd : 'mceTableInsertRowBefore'});\r
- sm.add({title : 'table.row_after_desc', icon : 'row_after', cmd : 'mceTableInsertRowAfter'});\r
- sm.add({title : 'table.delete_row_desc', icon : 'delete_row', cmd : 'mceTableDeleteRow'});\r
- sm.addSeparator();\r
- sm.add({title : 'table.cut_row_desc', icon : 'cut', cmd : 'mceTableCutRow'});\r
- sm.add({title : 'table.copy_row_desc', icon : 'copy', cmd : 'mceTableCopyRow'});\r
- sm.add({title : 'table.paste_row_before_desc', icon : 'paste', cmd : 'mceTablePasteRowBefore'});\r
- sm.add({title : 'table.paste_row_after_desc', icon : 'paste', cmd : 'mceTablePasteRowAfter'});\r
-\r
- // Column menu\r
- sm = m.addMenu({title : 'table.col'});\r
- sm.add({title : 'table.col_before_desc', icon : 'col_before', cmd : 'mceTableInsertColBefore'});\r
- sm.add({title : 'table.col_after_desc', icon : 'col_after', cmd : 'mceTableInsertColAfter'});\r
- sm.add({title : 'table.delete_col_desc', icon : 'delete_col', cmd : 'mceTableDeleteCol'});\r
- } else\r
- m.add({title : 'table.desc', icon : 'table', cmd : 'mceInsertTable', ui : true});\r
- });\r
- }\r
- });\r
-\r
- // Add undo level when new rows are created using the tab key\r
- ed.onKeyDown.add(function(ed, e) {\r
- if (e.keyCode == 9 && ed.dom.getParent(ed.selection.getNode(), 'TABLE')) {\r
- if (!tinymce.isGecko && !tinymce.isOpera) {\r
- tinyMCE.execInstanceCommand(ed.editorId, "mceTableMoveToNextRow", true);\r
- return tinymce.dom.Event.cancel(e);\r
- }\r
-\r
- ed.undoManager.add();\r
- }\r
- });\r
-\r
- // Select whole table is a table border is clicked\r
- if (!tinymce.isIE) {\r
- if (ed.getParam('table_selection', true)) {\r
- ed.onClick.add(function(ed, e) {\r
- e = e.target;\r
-\r
- if (e.nodeName === 'TABLE')\r
- ed.selection.select(e);\r
- });\r
- }\r
- }\r
-\r
- ed.onNodeChange.add(function(ed, cm, n) {\r
- var p = ed.dom.getParent(n, 'td,th,caption');\r
-\r
- cm.setActive('table', n.nodeName === 'TABLE' || !!p);\r
- if (p && p.nodeName === 'CAPTION')\r
- p = null;\r
-\r
- cm.setDisabled('delete_table', !p);\r
- cm.setDisabled('delete_col', !p);\r
- cm.setDisabled('delete_table', !p);\r
- cm.setDisabled('delete_row', !p);\r
- cm.setDisabled('col_after', !p);\r
- cm.setDisabled('col_before', !p);\r
- cm.setDisabled('row_after', !p);\r
- cm.setDisabled('row_before', !p);\r
- cm.setDisabled('row_props', !p);\r
- cm.setDisabled('cell_props', !p);\r
- cm.setDisabled('split_cells', !p || (parseInt(ed.dom.getAttrib(p, 'colspan', '1')) < 2 && parseInt(ed.dom.getAttrib(p, 'rowspan', '1')) < 2));\r
- cm.setDisabled('merge_cells', !p);\r
- });\r
-\r
- // Padd empty table cells\r
- if (!tinymce.isIE) {\r
- ed.onBeforeSetContent.add(function(ed, o) {\r
- if (o.initial)\r
- o.content = o.content.replace(/<(td|th)([^>]+|)>\s*<\/(td|th)>/g, tinymce.isOpera ? '<$1$2> </$1>' : '<$1$2><br mce_bogus="1" /></$1>');\r
- });\r
- }\r
- },\r
-\r
- execCommand : function(cmd, ui, val) {\r
- var ed = this.editor, b;\r
-\r
- // Is table command\r
- switch (cmd) {\r
- case "mceTableMoveToNextRow":\r
- case "mceInsertTable":\r
- case "mceTableRowProps":\r
- case "mceTableCellProps":\r
- case "mceTableSplitCells":\r
- case "mceTableMergeCells":\r
- case "mceTableInsertRowBefore":\r
- case "mceTableInsertRowAfter":\r
- case "mceTableDeleteRow":\r
- case "mceTableInsertColBefore":\r
- case "mceTableInsertColAfter":\r
- case "mceTableDeleteCol":\r
- case "mceTableCutRow":\r
- case "mceTableCopyRow":\r
- case "mceTablePasteRowBefore":\r
- case "mceTablePasteRowAfter":\r
- case "mceTableDelete":\r
- ed.execCommand('mceBeginUndoLevel');\r
- this._doExecCommand(cmd, ui, val);\r
- ed.execCommand('mceEndUndoLevel');\r
-\r
- return true;\r
- }\r
-\r
- // Pass to next handler in chain\r
- return false;\r
- },\r
-\r
- getInfo : function() {\r
- return {\r
- longname : 'Tables',\r
- author : 'Moxiecode Systems AB',\r
- authorurl : 'http://tinymce.moxiecode.com',\r
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/table',\r
- version : tinymce.majorVersion + "." + tinymce.minorVersion\r
- };\r
- },\r
-\r
- // Private plugin internal methods\r
-\r
- /**\r
- * Executes the table commands.\r
- */\r
- _doExecCommand : function(command, user_interface, value) {\r
- var inst = this.editor, ed = inst, url = this.url;\r
- var focusElm = inst.selection.getNode();\r
- var trElm = inst.dom.getParent(focusElm, "tr");\r
- var tdElm = inst.dom.getParent(focusElm, "td,th");\r
- var tableElm = inst.dom.getParent(focusElm, "table");\r
- var doc = inst.contentWindow.document;\r
- var tableBorder = tableElm ? tableElm.getAttribute("border") : "";\r
-\r
- // Get first TD if no TD found\r
- if (trElm && tdElm == null)\r
- tdElm = trElm.cells[0];\r
-\r
- function inArray(ar, v) {\r
- for (var i=0; i<ar.length; i++) {\r
- // Is array\r
- if (ar[i].length > 0 && inArray(ar[i], v))\r
- return true;\r
-\r
- // Found value\r
- if (ar[i] == v)\r
- return true;\r
- }\r
-\r
- return false;\r
- }\r
-\r
- function select(dx, dy) {\r
- var td;\r
-\r
- grid = getTableGrid(tableElm);\r
- dx = dx || 0;\r
- dy = dy || 0;\r
- dx = Math.max(cpos.cellindex + dx, 0);\r
- dy = Math.max(cpos.rowindex + dy, 0);\r
-\r
- // Recalculate grid and select\r
- inst.execCommand('mceRepaint');\r
- td = getCell(grid, dy, dx);\r
-\r
- if (td) {\r
- inst.selection.select(td.firstChild || td);\r
- inst.selection.collapse(1);\r
- }\r
- };\r
-\r
- function makeTD() {\r
- var newTD = doc.createElement("td");\r
-\r
- if (!tinymce.isIE)\r
- newTD.innerHTML = '<br mce_bogus="1"/>';\r
- }\r
-\r
- function getColRowSpan(td) {\r
- var colspan = inst.dom.getAttrib(td, "colspan");\r
- var rowspan = inst.dom.getAttrib(td, "rowspan");\r
-\r
- colspan = colspan == "" ? 1 : parseInt(colspan);\r
- rowspan = rowspan == "" ? 1 : parseInt(rowspan);\r
-\r
- return {colspan : colspan, rowspan : rowspan};\r
- }\r
-\r
- function getCellPos(grid, td) {\r
- var x, y;\r
-\r
- for (y=0; y<grid.length; y++) {\r
- for (x=0; x<grid[y].length; x++) {\r
- if (grid[y][x] == td)\r
- return {cellindex : x, rowindex : y};\r
- }\r
- }\r
-\r
- return null;\r
- }\r
-\r
- function getCell(grid, row, col) {\r
- if (grid[row] && grid[row][col])\r
- return grid[row][col];\r
-\r
- return null;\r
- }\r
-\r
- function getNextCell(table, cell) {\r
- var cells = [], x = 0, i, j, cell, nextCell;\r
-\r
- for (i = 0; i < table.rows.length; i++)\r
- for (j = 0; j < table.rows[i].cells.length; j++, x++)\r
- cells[x] = table.rows[i].cells[j];\r
-\r
- for (i = 0; i < cells.length; i++)\r
- if (cells[i] == cell)\r
- if (nextCell = cells[i+1])\r
- return nextCell;\r
- }\r
-\r
- function getTableGrid(table) {\r
- var grid = [], rows = table.rows, x, y, td, sd, xstart, x2, y2;\r
-\r
- for (y=0; y<rows.length; y++) {\r
- for (x=0; x<rows[y].cells.length; x++) {\r
- td = rows[y].cells[x];\r
- sd = getColRowSpan(td);\r
-\r
- // All ready filled\r
- for (xstart = x; grid[y] && grid[y][xstart]; xstart++) ;\r
-\r
- // Fill box\r
- for (y2=y; y2<y+sd['rowspan']; y2++) {\r
- if (!grid[y2])\r
- grid[y2] = [];\r
-\r
- for (x2=xstart; x2<xstart+sd['colspan']; x2++)\r
- grid[y2][x2] = td;\r
- }\r
- }\r
- }\r
-\r
- return grid;\r
- }\r
-\r
- function trimRow(table, tr, td, new_tr) {\r
- var grid = getTableGrid(table), cpos = getCellPos(grid, td);\r
- var cells, lastElm;\r
-\r
- // Time to crop away some\r
- if (new_tr.cells.length != tr.childNodes.length) {\r
- cells = tr.childNodes;\r
- lastElm = null;\r
-\r
- for (var x=0; td = getCell(grid, cpos.rowindex, x); x++) {\r
- var remove = true;\r
- var sd = getColRowSpan(td);\r
-\r
- // Remove due to rowspan\r
- if (inArray(cells, td)) {\r
- new_tr.childNodes[x]._delete = true;\r
- } else if ((lastElm == null || td != lastElm) && sd.colspan > 1) { // Remove due to colspan\r
- for (var i=x; i<x+td.colSpan; i++)\r
- new_tr.childNodes[i]._delete = true;\r
- }\r
-\r
- if ((lastElm == null || td != lastElm) && sd.rowspan > 1)\r
- td.rowSpan = sd.rowspan + 1;\r
-\r
- lastElm = td;\r
- }\r
-\r
- deleteMarked(tableElm);\r
- }\r
- }\r
-\r
- function prevElm(node, name) {\r
- while ((node = node.previousSibling) != null) {\r
- if (node.nodeName == name)\r
- return node;\r
- }\r
-\r
- return null;\r
- }\r
-\r
- function nextElm(node, names) {\r
- var namesAr = names.split(',');\r
-\r
- while ((node = node.nextSibling) != null) {\r
- for (var i=0; i<namesAr.length; i++) {\r
- if (node.nodeName.toLowerCase() == namesAr[i].toLowerCase() )\r
- return node;\r
- }\r
- }\r
-\r
- return null;\r
- }\r
-\r
- function deleteMarked(tbl) {\r
- if (tbl.rows == 0)\r
- return;\r
-\r
- var tr = tbl.rows[0];\r
- do {\r
- var next = nextElm(tr, "TR");\r
-\r
- // Delete row\r
- if (tr._delete) {\r
- tr.parentNode.removeChild(tr);\r
- continue;\r
- }\r
-\r
- // Delete cells\r
- var td = tr.cells[0];\r
- if (td.cells > 1) {\r
- do {\r
- var nexttd = nextElm(td, "TD,TH");\r
-\r
- if (td._delete)\r
- td.parentNode.removeChild(td);\r
- } while ((td = nexttd) != null);\r
- }\r
- } while ((tr = next) != null);\r
- }\r
-\r
- function addRows(td_elm, tr_elm, rowspan) {\r
- // Add rows\r
- td_elm.rowSpan = 1;\r
- var trNext = nextElm(tr_elm, "TR");\r
- for (var i=1; i<rowspan && trNext; i++) {\r
- var newTD = doc.createElement("td");\r
-\r
- if (!tinymce.isIE)\r
- newTD.innerHTML = '<br mce_bogus="1"/>';\r
-\r
- if (tinymce.isIE)\r
- trNext.insertBefore(newTD, trNext.cells(td_elm.cellIndex));\r
- else\r
- trNext.insertBefore(newTD, trNext.cells[td_elm.cellIndex]);\r
-\r
- trNext = nextElm(trNext, "TR");\r
- }\r
- }\r
-\r
- function copyRow(doc, table, tr) {\r
- var grid = getTableGrid(table);\r
- var newTR = tr.cloneNode(false);\r
- var cpos = getCellPos(grid, tr.cells[0]);\r
- var lastCell = null;\r
- var tableBorder = inst.dom.getAttrib(table, "border");\r
- var tdElm = null;\r
-\r
- for (var x=0; tdElm = getCell(grid, cpos.rowindex, x); x++) {\r
- var newTD = null;\r
-\r
- if (lastCell != tdElm) {\r
- for (var i=0; i<tr.cells.length; i++) {\r
- if (tdElm == tr.cells[i]) {\r
- newTD = tdElm.cloneNode(true);\r
- break;\r
- }\r
- }\r
- }\r
-\r
- if (newTD == null) {\r
- newTD = doc.createElement("td");\r
-\r
- if (!tinymce.isIE)\r
- newTD.innerHTML = '<br mce_bogus="1"/>';\r
- }\r
-\r
- // Reset col/row span\r
- newTD.colSpan = 1;\r
- newTD.rowSpan = 1;\r
-\r
- newTR.appendChild(newTD);\r
-\r
- lastCell = tdElm;\r
- }\r
-\r
- return newTR;\r
- }\r
-\r
- // ---- Commands -----\r
-\r
- // Handle commands\r
- switch (command) {\r
- case "mceTableMoveToNextRow":\r
- var nextCell = getNextCell(tableElm, tdElm);\r
-\r
- if (!nextCell) {\r
- inst.execCommand("mceTableInsertRowAfter", tdElm);\r
- nextCell = getNextCell(tableElm, tdElm);\r
- }\r
-\r
- inst.selection.select(nextCell);\r
- inst.selection.collapse(true);\r
-\r
- return true;\r
-\r
- case "mceTableRowProps":\r
- if (trElm == null)\r
- return true;\r
-\r
- if (user_interface) {\r
- inst.windowManager.open({\r
- url : url + '/row.htm',\r
- width : 400 + parseInt(inst.getLang('table.rowprops_delta_width', 0)),\r
- height : 295 + parseInt(inst.getLang('table.rowprops_delta_height', 0)),\r
- inline : 1\r
- }, {\r
- plugin_url : url\r
- });\r
- }\r
-\r
- return true;\r
-\r
- case "mceTableCellProps":\r
- if (tdElm == null)\r
- return true;\r
-\r
- if (user_interface) {\r
- inst.windowManager.open({\r
- url : url + '/cell.htm',\r
- width : 400 + parseInt(inst.getLang('table.cellprops_delta_width', 0)),\r
- height : 295 + parseInt(inst.getLang('table.cellprops_delta_height', 0)),\r
- inline : 1\r
- }, {\r
- plugin_url : url\r
- });\r
- }\r
-\r
- return true;\r
-\r
- case "mceInsertTable":\r
- if (user_interface) {\r
- inst.windowManager.open({\r
- url : url + '/table.htm',\r
- width : 400 + parseInt(inst.getLang('table.table_delta_width', 0)),\r
- height : 320 + parseInt(inst.getLang('table.table_delta_height', 0)),\r
- inline : 1\r
- }, {\r
- plugin_url : url,\r
- action : value ? value.action : 0\r
- });\r
- }\r
-\r
- return true;\r
-\r
- case "mceTableDelete":\r
- var table = inst.dom.getParent(inst.selection.getNode(), "table");\r
- if (table) {\r
- table.parentNode.removeChild(table);\r
- inst.execCommand('mceRepaint');\r
- }\r
- return true;\r
-\r
- case "mceTableSplitCells":\r
- case "mceTableMergeCells":\r
- case "mceTableInsertRowBefore":\r
- case "mceTableInsertRowAfter":\r
- case "mceTableDeleteRow":\r
- case "mceTableInsertColBefore":\r
- case "mceTableInsertColAfter":\r
- case "mceTableDeleteCol":\r
- case "mceTableCutRow":\r
- case "mceTableCopyRow":\r
- case "mceTablePasteRowBefore":\r
- case "mceTablePasteRowAfter":\r
- // No table just return (invalid command)\r
- if (!tableElm)\r
- return true;\r
-\r
- // Table has a tbody use that reference\r
- // Changed logic by ApTest 2005.07.12 (www.aptest.com)\r
- // Now lookk at the focused element and take its parentNode. That will be a tbody or a table.\r
- if (trElm && tableElm != trElm.parentNode)\r
- tableElm = trElm.parentNode;\r
-\r
- if (tableElm && trElm) {\r
- switch (command) {\r
- case "mceTableCutRow":\r
- if (!trElm || !tdElm)\r
- return true;\r
-\r
- inst.tableRowClipboard = copyRow(doc, tableElm, trElm);\r
- inst.execCommand("mceTableDeleteRow");\r
- break;\r
-\r
- case "mceTableCopyRow":\r
- if (!trElm || !tdElm)\r
- return true;\r
-\r
- inst.tableRowClipboard = copyRow(doc, tableElm, trElm);\r
- break;\r
-\r
- case "mceTablePasteRowBefore":\r
- if (!trElm || !tdElm)\r
- return true;\r
-\r
- var newTR = inst.tableRowClipboard.cloneNode(true);\r
-\r
- var prevTR = prevElm(trElm, "TR");\r
- if (prevTR != null)\r
- trimRow(tableElm, prevTR, prevTR.cells[0], newTR);\r
-\r
- trElm.parentNode.insertBefore(newTR, trElm);\r
- break;\r
-\r
- case "mceTablePasteRowAfter":\r
- if (!trElm || !tdElm)\r
- return true;\r
- \r
- var nextTR = nextElm(trElm, "TR");\r
- var newTR = inst.tableRowClipboard.cloneNode(true);\r
-\r
- trimRow(tableElm, trElm, tdElm, newTR);\r
-\r
- if (nextTR == null)\r
- trElm.parentNode.appendChild(newTR);\r
- else\r
- nextTR.parentNode.insertBefore(newTR, nextTR);\r
-\r
- break;\r
-\r
- case "mceTableInsertRowBefore":\r
- if (!trElm || !tdElm)\r
- return true;\r
-\r
- var grid = getTableGrid(tableElm);\r
- var cpos = getCellPos(grid, tdElm);\r
- var newTR = doc.createElement("tr");\r
- var lastTDElm = null;\r
-\r
- cpos.rowindex--;\r
- if (cpos.rowindex < 0)\r
- cpos.rowindex = 0;\r
-\r
- // Create cells\r
- for (var x=0; tdElm = getCell(grid, cpos.rowindex, x); x++) {\r
- if (tdElm != lastTDElm) {\r
- var sd = getColRowSpan(tdElm);\r
-\r
- if (sd['rowspan'] == 1) {\r
- var newTD = doc.createElement("td");\r
-\r
- if (!tinymce.isIE)\r
- newTD.innerHTML = '<br mce_bogus="1"/>';\r
-\r
- newTD.colSpan = tdElm.colSpan;\r
-\r
- newTR.appendChild(newTD);\r
- } else\r
- tdElm.rowSpan = sd['rowspan'] + 1;\r
-\r
- lastTDElm = tdElm;\r
- }\r
- }\r
-\r
- trElm.parentNode.insertBefore(newTR, trElm);\r
- select(0, 1);\r
- break;\r
-\r
- case "mceTableInsertRowAfter":\r
- if (!trElm || !tdElm)\r
- return true;\r
-\r
- var grid = getTableGrid(tableElm);\r
- var cpos = getCellPos(grid, tdElm);\r
- var newTR = doc.createElement("tr");\r
- var lastTDElm = null;\r
-\r
- // Create cells\r
- for (var x=0; tdElm = getCell(grid, cpos.rowindex, x); x++) {\r
- if (tdElm != lastTDElm) {\r
- var sd = getColRowSpan(tdElm);\r
-\r
- if (sd['rowspan'] == 1) {\r
- var newTD = doc.createElement("td");\r
-\r
- if (!tinymce.isIE)\r
- newTD.innerHTML = '<br mce_bogus="1"/>';\r
-\r
- newTD.colSpan = tdElm.colSpan;\r
-\r
- newTR.appendChild(newTD);\r
- } else\r
- tdElm.rowSpan = sd['rowspan'] + 1;\r
-\r
- lastTDElm = tdElm;\r
- }\r
- }\r
-\r
- if (newTR.hasChildNodes()) {\r
- var nextTR = nextElm(trElm, "TR");\r
- if (nextTR)\r
- nextTR.parentNode.insertBefore(newTR, nextTR);\r
- else\r
- tableElm.appendChild(newTR);\r
- }\r
-\r
- select(0, 1);\r
- break;\r
-\r
- case "mceTableDeleteRow":\r
- if (!trElm || !tdElm)\r
- return true;\r
-\r
- var grid = getTableGrid(tableElm);\r
- var cpos = getCellPos(grid, tdElm);\r
-\r
- // Only one row, remove whole table\r
- if (grid.length == 1 && tableElm.nodeName == 'TBODY') {\r
- inst.dom.remove(inst.dom.getParent(tableElm, "table"));\r
- return true;\r
- }\r
-\r
- // Move down row spanned cells\r
- var cells = trElm.cells;\r
- var nextTR = nextElm(trElm, "TR");\r
- for (var x=0; x<cells.length; x++) {\r
- if (cells[x].rowSpan > 1) {\r
- var newTD = cells[x].cloneNode(true);\r
- var sd = getColRowSpan(cells[x]);\r
-\r
- newTD.rowSpan = sd.rowspan - 1;\r
-\r
- var nextTD = nextTR.cells[x];\r
-\r
- if (nextTD == null)\r
- nextTR.appendChild(newTD);\r
- else\r
- nextTR.insertBefore(newTD, nextTD);\r
- }\r
- }\r
-\r
- // Delete cells\r
- var lastTDElm = null;\r
- for (var x=0; tdElm = getCell(grid, cpos.rowindex, x); x++) {\r
- if (tdElm != lastTDElm) {\r
- var sd = getColRowSpan(tdElm);\r
-\r
- if (sd.rowspan > 1) {\r
- tdElm.rowSpan = sd.rowspan - 1;\r
- } else {\r
- trElm = tdElm.parentNode;\r
-\r
- if (trElm.parentNode)\r
- trElm._delete = true;\r
- }\r
-\r
- lastTDElm = tdElm;\r
- }\r
- }\r
-\r
- deleteMarked(tableElm);\r
-\r
- select(0, -1);\r
- break;\r
-\r
- case "mceTableInsertColBefore":\r
- if (!trElm || !tdElm)\r
- return true;\r
-\r
- var grid = getTableGrid(tableElm);\r
- var cpos = getCellPos(grid, tdElm);\r
- var lastTDElm = null;\r
-\r
- for (var y=0; tdElm = getCell(grid, y, cpos.cellindex); y++) {\r
- if (tdElm != lastTDElm) {\r
- var sd = getColRowSpan(tdElm);\r
-\r
- if (sd['colspan'] == 1) {\r
- var newTD = doc.createElement(tdElm.nodeName);\r
-\r
- if (!tinymce.isIE)\r
- newTD.innerHTML = '<br mce_bogus="1"/>';\r
-\r
- newTD.rowSpan = tdElm.rowSpan;\r
-\r
- tdElm.parentNode.insertBefore(newTD, tdElm);\r
- } else\r
- tdElm.colSpan++;\r
-\r
- lastTDElm = tdElm;\r
- }\r
- }\r
-\r
- select();\r
- break;\r
-\r
- case "mceTableInsertColAfter":\r
- if (!trElm || !tdElm)\r
- return true;\r
-\r
- var grid = getTableGrid(tableElm);\r
- var cpos = getCellPos(grid, tdElm);\r
- var lastTDElm = null;\r
-\r
- for (var y=0; tdElm = getCell(grid, y, cpos.cellindex); y++) {\r
- if (tdElm != lastTDElm) {\r
- var sd = getColRowSpan(tdElm);\r
-\r
- if (sd['colspan'] == 1) {\r
- var newTD = doc.createElement(tdElm.nodeName);\r
-\r
- if (!tinymce.isIE)\r
- newTD.innerHTML = '<br mce_bogus="1"/>';\r
-\r
- newTD.rowSpan = tdElm.rowSpan;\r
-\r
- var nextTD = nextElm(tdElm, "TD,TH");\r
- if (nextTD == null)\r
- tdElm.parentNode.appendChild(newTD);\r
- else\r
- nextTD.parentNode.insertBefore(newTD, nextTD);\r
- } else\r
- tdElm.colSpan++;\r
-\r
- lastTDElm = tdElm;\r
- }\r
- }\r
-\r
- select(1);\r
- break;\r
-\r
- case "mceTableDeleteCol":\r
- if (!trElm || !tdElm)\r
- return true;\r
-\r
- var grid = getTableGrid(tableElm);\r
- var cpos = getCellPos(grid, tdElm);\r
- var lastTDElm = null;\r
-\r
- // Only one col, remove whole table\r
- if ((grid.length > 1 && grid[0].length <= 1) && tableElm.nodeName == 'TBODY') {\r
- inst.dom.remove(inst.dom.getParent(tableElm, "table"));\r
- return true;\r
- }\r
-\r
- // Delete cells\r
- for (var y=0; tdElm = getCell(grid, y, cpos.cellindex); y++) {\r
- if (tdElm != lastTDElm) {\r
- var sd = getColRowSpan(tdElm);\r
-\r
- if (sd['colspan'] > 1)\r
- tdElm.colSpan = sd['colspan'] - 1;\r
- else {\r
- if (tdElm.parentNode)\r
- tdElm.parentNode.removeChild(tdElm);\r
- }\r
-\r
- lastTDElm = tdElm;\r
- }\r
- }\r
-\r
- select(-1);\r
- break;\r
-\r
- case "mceTableSplitCells":\r
- if (!trElm || !tdElm)\r
- return true;\r
-\r
- var spandata = getColRowSpan(tdElm);\r
-\r
- var colspan = spandata["colspan"];\r
- var rowspan = spandata["rowspan"];\r
-\r
- // Needs splitting\r
- if (colspan > 1 || rowspan > 1) {\r
- // Generate cols\r
- tdElm.colSpan = 1;\r
- for (var i=1; i<colspan; i++) {\r
- var newTD = doc.createElement("td");\r
-\r
- if (!tinymce.isIE)\r
- newTD.innerHTML = '<br mce_bogus="1"/>';\r
-\r
- trElm.insertBefore(newTD, nextElm(tdElm, "TD,TH"));\r
-\r
- if (rowspan > 1)\r
- addRows(newTD, trElm, rowspan);\r
- }\r
-\r
- addRows(tdElm, trElm, rowspan);\r
- }\r
-\r
- // Apply visual aids\r
- tableElm = inst.dom.getParent(inst.selection.getNode(), "table");\r
- break;\r
-\r
- case "mceTableMergeCells":\r
- var rows = [];\r
- var sel = inst.selection.getSel();\r
- var grid = getTableGrid(tableElm);\r
-\r
- if (tinymce.isIE || sel.rangeCount == 1) {\r
- if (user_interface) {\r
- // Setup template\r
- var sp = getColRowSpan(tdElm);\r
-\r
- inst.windowManager.open({\r
- url : url + '/merge_cells.htm',\r
- width : 240 + parseInt(inst.getLang('table.merge_cells_delta_width', 0)),\r
- height : 110 + parseInt(inst.getLang('table.merge_cells_delta_height', 0)),\r
- inline : 1\r
- }, {\r
- action : "update",\r
- numcols : sp.colspan,\r
- numrows : sp.rowspan,\r
- plugin_url : url\r
- });\r
-\r
- return true;\r
- } else {\r
- var numRows = parseInt(value['numrows']);\r
- var numCols = parseInt(value['numcols']);\r
- var cpos = getCellPos(grid, tdElm);\r
-\r
- if (("" + numRows) == "NaN")\r
- numRows = 1;\r
-\r
- if (("" + numCols) == "NaN")\r
- numCols = 1;\r
-\r
- // Get rows and cells\r
- var tRows = tableElm.rows;\r
- for (var y=cpos.rowindex; y<grid.length; y++) {\r
- var rowCells = [];\r
-\r
- for (var x=cpos.cellindex; x<grid[y].length; x++) {\r
- var td = getCell(grid, y, x);\r
-\r
- if (td && !inArray(rows, td) && !inArray(rowCells, td)) {\r
- var cp = getCellPos(grid, td);\r
-\r
- // Within range\r
- if (cp.cellindex < cpos.cellindex+numCols && cp.rowindex < cpos.rowindex+numRows)\r
- rowCells[rowCells.length] = td;\r
- }\r
- }\r
-\r
- if (rowCells.length > 0)\r
- rows[rows.length] = rowCells;\r
-\r
- var td = getCell(grid, cpos.rowindex, cpos.cellindex);\r
- each(ed.dom.select('br', td), function(e, i) {\r
- if (i > 0 && ed.dom.getAttrib('mce_bogus'))\r
- ed.dom.remove(e);\r
- });\r
- }\r
-\r
- //return true;\r
- }\r
- } else {\r
- var cells = [];\r
- var sel = inst.selection.getSel();\r
- var lastTR = null;\r
- var curRow = null;\r
- var x1 = -1, y1 = -1, x2, y2;\r
-\r
- // Only one cell selected, whats the point?\r
- if (sel.rangeCount < 2)\r
- return true;\r
-\r
- // Get all selected cells\r
- for (var i=0; i<sel.rangeCount; i++) {\r
- var rng = sel.getRangeAt(i);\r
- var tdElm = rng.startContainer.childNodes[rng.startOffset];\r
-\r
- if (!tdElm)\r
- break;\r
-\r
- if (tdElm.nodeName == "TD" || tdElm.nodeName == "TH")\r
- cells[cells.length] = tdElm;\r
- }\r
-\r
- // Get rows and cells\r
- var tRows = tableElm.rows;\r
- for (var y=0; y<tRows.length; y++) {\r
- var rowCells = [];\r
-\r
- for (var x=0; x<tRows[y].cells.length; x++) {\r
- var td = tRows[y].cells[x];\r
-\r
- for (var i=0; i<cells.length; i++) {\r
- if (td == cells[i]) {\r
- rowCells[rowCells.length] = td;\r
- }\r
- }\r
- }\r
-\r
- if (rowCells.length > 0)\r
- rows[rows.length] = rowCells;\r
- }\r
-\r
- // Find selected cells in grid and box\r
- var curRow = [];\r
- var lastTR = null;\r
- for (var y=0; y<grid.length; y++) {\r
- for (var x=0; x<grid[y].length; x++) {\r
- grid[y][x]._selected = false;\r
-\r
- for (var i=0; i<cells.length; i++) {\r
- if (grid[y][x] == cells[i]) {\r
- // Get start pos\r
- if (x1 == -1) {\r
- x1 = x;\r
- y1 = y;\r
- }\r
-\r
- // Get end pos\r
- x2 = x;\r
- y2 = y;\r
-\r
- grid[y][x]._selected = true;\r
- }\r
- }\r
- }\r
- }\r
-\r
- // Is there gaps, if so deny\r
- for (var y=y1; y<=y2; y++) {\r
- for (var x=x1; x<=x2; x++) {\r
- if (!grid[y][x]._selected) {\r
- alert("Invalid selection for merge.");\r
- return true;\r
- }\r
- }\r
- }\r
- }\r
-\r
- // Validate selection and get total rowspan and colspan\r
- var rowSpan = 1, colSpan = 1;\r
-\r
- // Validate horizontal and get total colspan\r
- var lastRowSpan = -1;\r
- for (var y=0; y<rows.length; y++) {\r
- var rowColSpan = 0;\r
-\r
- for (var x=0; x<rows[y].length; x++) {\r
- var sd = getColRowSpan(rows[y][x]);\r
-\r
- rowColSpan += sd['colspan'];\r
-\r
- if (lastRowSpan != -1 && sd['rowspan'] != lastRowSpan) {\r
- alert("Invalid selection for merge.");\r
- return true;\r
- }\r
-\r
- lastRowSpan = sd['rowspan'];\r
- }\r
-\r
- if (rowColSpan > colSpan)\r
- colSpan = rowColSpan;\r
-\r
- lastRowSpan = -1;\r
- }\r
-\r
- // Validate vertical and get total rowspan\r
- var lastColSpan = -1;\r
- for (var x=0; x<rows[0].length; x++) {\r
- var colRowSpan = 0;\r
-\r
- for (var y=0; y<rows.length; y++) {\r
- var sd = getColRowSpan(rows[y][x]);\r
-\r
- colRowSpan += sd['rowspan'];\r
-\r
- if (lastColSpan != -1 && sd['colspan'] != lastColSpan) {\r
- alert("Invalid selection for merge.");\r
- return true;\r
- }\r
-\r
- lastColSpan = sd['colspan'];\r
- }\r
-\r
- if (colRowSpan > rowSpan)\r
- rowSpan = colRowSpan;\r
-\r
- lastColSpan = -1;\r
- }\r
-\r
- // Setup td\r
- tdElm = rows[0][0];\r
- tdElm.rowSpan = rowSpan;\r
- tdElm.colSpan = colSpan;\r
-\r
- // Merge cells\r
- for (var y=0; y<rows.length; y++) {\r
- for (var x=0; x<rows[y].length; x++) {\r
- var html = rows[y][x].innerHTML;\r
- var chk = html.replace(/[ \t\r\n]/g, "");\r
-\r
- if (chk != "<br/>" && chk != "<br>" && chk != '<br mce_bogus="1"/>' && (x+y > 0))\r
- tdElm.innerHTML += html;\r
-\r
- // Not current cell\r
- if (rows[y][x] != tdElm && !rows[y][x]._deleted) {\r
- var cpos = getCellPos(grid, rows[y][x]);\r
- var tr = rows[y][x].parentNode;\r
-\r
- tr.removeChild(rows[y][x]);\r
- rows[y][x]._deleted = true;\r
-\r
- // Empty TR, remove it\r
- if (!tr.hasChildNodes()) {\r
- tr.parentNode.removeChild(tr);\r
-\r
- var lastCell = null;\r
- for (var x=0; cellElm = getCell(grid, cpos.rowindex, x); x++) {\r
- if (cellElm != lastCell && cellElm.rowSpan > 1)\r
- cellElm.rowSpan--;\r
-\r
- lastCell = cellElm;\r
- }\r
-\r
- if (tdElm.rowSpan > 1)\r
- tdElm.rowSpan--;\r
- }\r
- }\r
- }\r
- }\r
-\r
- // Remove all but one bogus br\r
- each(ed.dom.select('br', tdElm), function(e, i) {\r
- if (i > 0 && ed.dom.getAttrib(e, 'mce_bogus'))\r
- ed.dom.remove(e);\r
- });\r
-\r
- break;\r
- }\r
-\r
- tableElm = inst.dom.getParent(inst.selection.getNode(), "table");\r
- inst.addVisual(tableElm);\r
- inst.nodeChanged();\r
- }\r
-\r
- return true;\r
- }\r
-\r
- // Pass to next handler in chain\r
- return false;\r
- }\r
- });\r
-\r
- // Register plugin\r
- tinymce.PluginManager.add('table', tinymce.plugins.TablePlugin);\r
-})();
\ No newline at end of file
+++ /dev/null
-tinyMCEPopup.requireLangPack();\r
-\r
-var ed;\r
-\r
-function init() {\r
- ed = tinyMCEPopup.editor;\r
- tinyMCEPopup.resizeToInnerSize();\r
-\r
- document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');\r
- document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor');\r
- document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor')\r
-\r
- var inst = ed;\r
- var tdElm = ed.dom.getParent(ed.selection.getNode(), "td,th");\r
- var formObj = document.forms[0];\r
- var st = ed.dom.parseStyle(ed.dom.getAttrib(tdElm, "style"));\r
-\r
- // Get table cell data\r
- var celltype = tdElm.nodeName.toLowerCase();\r
- var align = ed.dom.getAttrib(tdElm, 'align');\r
- var valign = ed.dom.getAttrib(tdElm, 'valign');\r
- var width = trimSize(getStyle(tdElm, 'width', 'width'));\r
- var height = trimSize(getStyle(tdElm, 'height', 'height'));\r
- var bordercolor = convertRGBToHex(getStyle(tdElm, 'bordercolor', 'borderLeftColor'));\r
- var bgcolor = convertRGBToHex(getStyle(tdElm, 'bgcolor', 'backgroundColor'));\r
- var className = ed.dom.getAttrib(tdElm, 'class');\r
- var backgroundimage = getStyle(tdElm, 'background', 'backgroundImage').replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");;\r
- var id = ed.dom.getAttrib(tdElm, 'id');\r
- var lang = ed.dom.getAttrib(tdElm, 'lang');\r
- var dir = ed.dom.getAttrib(tdElm, 'dir');\r
- var scope = ed.dom.getAttrib(tdElm, 'scope');\r
-\r
- // Setup form\r
- addClassesToList('class', 'table_cell_styles');\r
- TinyMCE_EditableSelects.init();\r
-\r
- formObj.bordercolor.value = bordercolor;\r
- formObj.bgcolor.value = bgcolor;\r
- formObj.backgroundimage.value = backgroundimage;\r
- formObj.width.value = width;\r
- formObj.height.value = height;\r
- formObj.id.value = id;\r
- formObj.lang.value = lang;\r
- formObj.style.value = ed.dom.serializeStyle(st);\r
- selectByValue(formObj, 'align', align);\r
- selectByValue(formObj, 'valign', valign);\r
- selectByValue(formObj, 'class', className, true, true);\r
- selectByValue(formObj, 'celltype', celltype);\r
- selectByValue(formObj, 'dir', dir);\r
- selectByValue(formObj, 'scope', scope);\r
-\r
- // Resize some elements\r
- if (isVisible('backgroundimagebrowser'))\r
- document.getElementById('backgroundimage').style.width = '180px';\r
-\r
- updateColor('bordercolor_pick', 'bordercolor');\r
- updateColor('bgcolor_pick', 'bgcolor');\r
-}\r
-\r
-function updateAction() {\r
- var el, inst = ed, tdElm, trElm, tableElm, formObj = document.forms[0];\r
-\r
- tinyMCEPopup.restoreSelection();\r
- el = ed.selection.getNode();\r
- tdElm = ed.dom.getParent(el, "td,th");\r
- trElm = ed.dom.getParent(el, "tr");\r
- tableElm = ed.dom.getParent(el, "table");\r
-\r
- ed.execCommand('mceBeginUndoLevel');\r
-\r
- switch (getSelectValue(formObj, 'action')) {\r
- case "cell":\r
- var celltype = getSelectValue(formObj, 'celltype');\r
- var scope = getSelectValue(formObj, 'scope');\r
-\r
- if (ed.getParam("accessibility_warnings", 1)) {\r
- if (celltype == "th" && scope == "") {\r
- tinyMCEPopup.confirm(ed.getLang('table_dlg.missing_scope', '', true), function(s) {\r
- if (s) {\r
- updateCell(tdElm);\r
-\r
- ed.addVisual();\r
- ed.nodeChanged();\r
- inst.execCommand('mceEndUndoLevel');\r
- tinyMCEPopup.close();\r
- }\r
- });\r
- }\r
-\r
- return;\r
- }\r
-\r
- updateCell(tdElm);\r
- break;\r
-\r
- case "row":\r
- var cell = trElm.firstChild;\r
-\r
- if (cell.nodeName != "TD" && cell.nodeName != "TH")\r
- cell = nextCell(cell);\r
-\r
- do {\r
- cell = updateCell(cell, true);\r
- } while ((cell = nextCell(cell)) != null);\r
-\r
- break;\r
-\r
- case "all":\r
- var rows = tableElm.getElementsByTagName("tr");\r
-\r
- for (var i=0; i<rows.length; i++) {\r
- var cell = rows[i].firstChild;\r
-\r
- if (cell.nodeName != "TD" && cell.nodeName != "TH")\r
- cell = nextCell(cell);\r
-\r
- do {\r
- cell = updateCell(cell, true);\r
- } while ((cell = nextCell(cell)) != null);\r
- }\r
-\r
- break;\r
- }\r
-\r
- ed.addVisual();\r
- ed.nodeChanged();\r
- inst.execCommand('mceEndUndoLevel');\r
- tinyMCEPopup.close();\r
-}\r
-\r
-function nextCell(elm) {\r
- while ((elm = elm.nextSibling) != null) {\r
- if (elm.nodeName == "TD" || elm.nodeName == "TH")\r
- return elm;\r
- }\r
-\r
- return null;\r
-}\r
-\r
-function updateCell(td, skip_id) {\r
- var inst = ed;\r
- var formObj = document.forms[0];\r
- var curCellType = td.nodeName.toLowerCase();\r
- var celltype = getSelectValue(formObj, 'celltype');\r
- var doc = inst.getDoc();\r
- var dom = ed.dom;\r
-\r
- if (!skip_id)\r
- td.setAttribute('id', formObj.id.value);\r
-\r
- td.setAttribute('align', formObj.align.value);\r
- td.setAttribute('vAlign', formObj.valign.value);\r
- td.setAttribute('lang', formObj.lang.value);\r
- td.setAttribute('dir', getSelectValue(formObj, 'dir'));\r
- td.setAttribute('style', ed.dom.serializeStyle(ed.dom.parseStyle(formObj.style.value)));\r
- td.setAttribute('scope', formObj.scope.value);\r
- ed.dom.setAttrib(td, 'class', getSelectValue(formObj, 'class'));\r
-\r
- // Clear deprecated attributes\r
- ed.dom.setAttrib(td, 'width', '');\r
- ed.dom.setAttrib(td, 'height', '');\r
- ed.dom.setAttrib(td, 'bgColor', '');\r
- ed.dom.setAttrib(td, 'borderColor', '');\r
- ed.dom.setAttrib(td, 'background', '');\r
-\r
- // Set styles\r
- td.style.width = getCSSSize(formObj.width.value);\r
- td.style.height = getCSSSize(formObj.height.value);\r
- if (formObj.bordercolor.value != "") {\r
- td.style.borderColor = formObj.bordercolor.value;\r
- td.style.borderStyle = td.style.borderStyle == "" ? "solid" : td.style.borderStyle;\r
- td.style.borderWidth = td.style.borderWidth == "" ? "1px" : td.style.borderWidth;\r
- } else\r
- td.style.borderColor = '';\r
-\r
- td.style.backgroundColor = formObj.bgcolor.value;\r
-\r
- if (formObj.backgroundimage.value != "")\r
- td.style.backgroundImage = "url('" + formObj.backgroundimage.value + "')";\r
- else\r
- td.style.backgroundImage = '';\r
-\r
- if (curCellType != celltype) {\r
- // changing to a different node type\r
- var newCell = doc.createElement(celltype);\r
-\r
- for (var c=0; c<td.childNodes.length; c++)\r
- newCell.appendChild(td.childNodes[c].cloneNode(1));\r
-\r
- for (var a=0; a<td.attributes.length; a++)\r
- ed.dom.setAttrib(newCell, td.attributes[a].name, ed.dom.getAttrib(td, td.attributes[a].name));\r
-\r
- td.parentNode.replaceChild(newCell, td);\r
- td = newCell;\r
- }\r
-\r
- dom.setAttrib(td, 'style', dom.serializeStyle(dom.parseStyle(td.style.cssText)));\r
-\r
- return td;\r
-}\r
-\r
-function changedBackgroundImage() {\r
- var formObj = document.forms[0];\r
- var st = ed.dom.parseStyle(formObj.style.value);\r
-\r
- st['background-image'] = "url('" + formObj.backgroundimage.value + "')";\r
-\r
- formObj.style.value = ed.dom.serializeStyle(st);\r
-}\r
-\r
-function changedSize() {\r
- var formObj = document.forms[0];\r
- var st = ed.dom.parseStyle(formObj.style.value);\r
-\r
- var width = formObj.width.value;\r
- if (width != "")\r
- st['width'] = getCSSSize(width);\r
- else\r
- st['width'] = "";\r
-\r
- var height = formObj.height.value;\r
- if (height != "")\r
- st['height'] = getCSSSize(height);\r
- else\r
- st['height'] = "";\r
-\r
- formObj.style.value = ed.dom.serializeStyle(st);\r
-}\r
-\r
-function changedColor() {\r
- var formObj = document.forms[0];\r
- var st = ed.dom.parseStyle(formObj.style.value);\r
-\r
- st['background-color'] = formObj.bgcolor.value;\r
- st['border-color'] = formObj.bordercolor.value;\r
-\r
- formObj.style.value = ed.dom.serializeStyle(st);\r
-}\r
-\r
-function changedStyle() {\r
- var formObj = document.forms[0];\r
- var st = ed.dom.parseStyle(formObj.style.value);\r
-\r
- if (st['background-image'])\r
- formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");\r
- else\r
- formObj.backgroundimage.value = '';\r
-\r
- if (st['width'])\r
- formObj.width.value = trimSize(st['width']);\r
-\r
- if (st['height'])\r
- formObj.height.value = trimSize(st['height']);\r
-\r
- if (st['background-color']) {\r
- formObj.bgcolor.value = st['background-color'];\r
- updateColor('bgcolor_pick','bgcolor');\r
- }\r
-\r
- if (st['border-color']) {\r
- formObj.bordercolor.value = st['border-color'];\r
- updateColor('bordercolor_pick','bordercolor');\r
- }\r
-}\r
-\r
-tinyMCEPopup.onInit.add(init);\r
+++ /dev/null
-tinyMCEPopup.requireLangPack();\r
-\r
-function init() {\r
- var f = document.forms[0], v;\r
-\r
- tinyMCEPopup.resizeToInnerSize();\r
-\r
- f.numcols.value = tinyMCEPopup.getWindowArg('numcols', 1);\r
- f.numrows.value = tinyMCEPopup.getWindowArg('numrows', 1);\r
-}\r
-\r
-function mergeCells() {\r
- var args = [], f = document.forms[0];\r
-\r
- tinyMCEPopup.restoreSelection();\r
-\r
- if (!AutoValidator.validate(f)) {\r
- tinyMCEPopup.alert(tinyMCEPopup.getLang('invalid_data'));\r
- return false;\r
- }\r
-\r
- args["numcols"] = f.numcols.value;\r
- args["numrows"] = f.numrows.value;\r
-\r
- tinyMCEPopup.execCommand("mceTableMergeCells", false, args);\r
- tinyMCEPopup.close();\r
-}\r
-\r
-tinyMCEPopup.onInit.add(init);\r
+++ /dev/null
-tinyMCEPopup.requireLangPack();\r
-\r
-function init() {\r
- tinyMCEPopup.resizeToInnerSize();\r
-\r
- document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');\r
- document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');\r
-\r
- var inst = tinyMCEPopup.editor;\r
- var dom = inst.dom;\r
- var trElm = dom.getParent(inst.selection.getNode(), "tr");\r
- var formObj = document.forms[0];\r
- var st = dom.parseStyle(dom.getAttrib(trElm, "style"));\r
-\r
- // Get table row data\r
- var rowtype = trElm.parentNode.nodeName.toLowerCase();\r
- var align = dom.getAttrib(trElm, 'align');\r
- var valign = dom.getAttrib(trElm, 'valign');\r
- var height = trimSize(getStyle(trElm, 'height', 'height'));\r
- var className = dom.getAttrib(trElm, 'class');\r
- var bgcolor = convertRGBToHex(getStyle(trElm, 'bgcolor', 'backgroundColor'));\r
- var backgroundimage = getStyle(trElm, 'background', 'backgroundImage').replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");;\r
- var id = dom.getAttrib(trElm, 'id');\r
- var lang = dom.getAttrib(trElm, 'lang');\r
- var dir = dom.getAttrib(trElm, 'dir');\r
-\r
- // Setup form\r
- addClassesToList('class', 'table_row_styles');\r
- TinyMCE_EditableSelects.init();\r
-\r
- formObj.bgcolor.value = bgcolor;\r
- formObj.backgroundimage.value = backgroundimage;\r
- formObj.height.value = height;\r
- formObj.id.value = id;\r
- formObj.lang.value = lang;\r
- formObj.style.value = dom.serializeStyle(st);\r
- selectByValue(formObj, 'align', align);\r
- selectByValue(formObj, 'valign', valign);\r
- selectByValue(formObj, 'class', className, true, true);\r
- selectByValue(formObj, 'rowtype', rowtype);\r
- selectByValue(formObj, 'dir', dir);\r
-\r
- // Resize some elements\r
- if (isVisible('backgroundimagebrowser'))\r
- document.getElementById('backgroundimage').style.width = '180px';\r
-\r
- updateColor('bgcolor_pick', 'bgcolor');\r
-}\r
-\r
-function updateAction() {\r
- var inst = tinyMCEPopup.editor, dom = inst.dom, trElm, tableElm, formObj = document.forms[0];\r
- var action = getSelectValue(formObj, 'action');\r
-\r
- tinyMCEPopup.restoreSelection();\r
- trElm = dom.getParent(inst.selection.getNode(), "tr");\r
- tableElm = dom.getParent(inst.selection.getNode(), "table");\r
-\r
- inst.execCommand('mceBeginUndoLevel');\r
-\r
- switch (action) {\r
- case "row":\r
- updateRow(trElm);\r
- break;\r
-\r
- case "all":\r
- var rows = tableElm.getElementsByTagName("tr");\r
-\r
- for (var i=0; i<rows.length; i++)\r
- updateRow(rows[i], true);\r
-\r
- break;\r
-\r
- case "odd":\r
- case "even":\r
- var rows = tableElm.getElementsByTagName("tr");\r
-\r
- for (var i=0; i<rows.length; i++) {\r
- if ((i % 2 == 0 && action == "odd") || (i % 2 != 0 && action == "even"))\r
- updateRow(rows[i], true, true);\r
- }\r
-\r
- break;\r
- }\r
-\r
- inst.addVisual();\r
- inst.nodeChanged();\r
- inst.execCommand('mceEndUndoLevel');\r
- tinyMCEPopup.close();\r
-}\r
-\r
-function updateRow(tr_elm, skip_id, skip_parent) {\r
- var inst = tinyMCEPopup.editor;\r
- var formObj = document.forms[0];\r
- var dom = inst.dom;\r
- var curRowType = tr_elm.parentNode.nodeName.toLowerCase();\r
- var rowtype = getSelectValue(formObj, 'rowtype');\r
- var doc = inst.getDoc();\r
-\r
- // Update row element\r
- if (!skip_id)\r
- tr_elm.setAttribute('id', formObj.id.value);\r
-\r
- tr_elm.setAttribute('align', getSelectValue(formObj, 'align'));\r
- tr_elm.setAttribute('vAlign', getSelectValue(formObj, 'valign'));\r
- tr_elm.setAttribute('lang', formObj.lang.value);\r
- tr_elm.setAttribute('dir', getSelectValue(formObj, 'dir'));\r
- tr_elm.setAttribute('style', dom.serializeStyle(dom.parseStyle(formObj.style.value)));\r
- dom.setAttrib(tr_elm, 'class', getSelectValue(formObj, 'class'));\r
-\r
- // Clear deprecated attributes\r
- tr_elm.setAttribute('background', '');\r
- tr_elm.setAttribute('bgColor', '');\r
- tr_elm.setAttribute('height', '');\r
-\r
- // Set styles\r
- tr_elm.style.height = getCSSSize(formObj.height.value);\r
- tr_elm.style.backgroundColor = formObj.bgcolor.value;\r
-\r
- if (formObj.backgroundimage.value != "")\r
- tr_elm.style.backgroundImage = "url('" + formObj.backgroundimage.value + "')";\r
- else\r
- tr_elm.style.backgroundImage = '';\r
-\r
- // Setup new rowtype\r
- if (curRowType != rowtype && !skip_parent) {\r
- // first, clone the node we are working on\r
- var newRow = tr_elm.cloneNode(1);\r
-\r
- // next, find the parent of its new destination (creating it if necessary)\r
- var theTable = dom.getParent(tr_elm, "table");\r
- var dest = rowtype;\r
- var newParent = null;\r
- for (var i = 0; i < theTable.childNodes.length; i++) {\r
- if (theTable.childNodes[i].nodeName.toLowerCase() == dest)\r
- newParent = theTable.childNodes[i];\r
- }\r
-\r
- if (newParent == null) {\r
- newParent = doc.createElement(dest);\r
-\r
- if (dest == "thead") {\r
- if (theTable.firstChild.nodeName == 'CAPTION')\r
- inst.dom.insertAfter(newParent, theTable.firstChild);\r
- else\r
- theTable.insertBefore(newParent, theTable.firstChild);\r
- } else\r
- theTable.appendChild(newParent);\r
- }\r
-\r
- // append the row to the new parent\r
- newParent.appendChild(newRow);\r
-\r
- // remove the original\r
- tr_elm.parentNode.removeChild(tr_elm);\r
-\r
- // set tr_elm to the new node\r
- tr_elm = newRow;\r
- }\r
-\r
- dom.setAttrib(tr_elm, 'style', dom.serializeStyle(dom.parseStyle(tr_elm.style.cssText)));\r
-}\r
-\r
-function changedBackgroundImage() {\r
- var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;\r
- var st = dom.parseStyle(formObj.style.value);\r
-\r
- st['background-image'] = "url('" + formObj.backgroundimage.value + "')";\r
-\r
- formObj.style.value = dom.serializeStyle(st);\r
-}\r
-\r
-function changedStyle() {\r
- var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;\r
- var st = dom.parseStyle(formObj.style.value);\r
-\r
- if (st['background-image'])\r
- formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");\r
- else\r
- formObj.backgroundimage.value = '';\r
-\r
- if (st['height'])\r
- formObj.height.value = trimSize(st['height']);\r
-\r
- if (st['background-color']) {\r
- formObj.bgcolor.value = st['background-color'];\r
- updateColor('bgcolor_pick','bgcolor');\r
- }\r
-}\r
-\r
-function changedSize() {\r
- var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;\r
- var st = dom.parseStyle(formObj.style.value);\r
-\r
- var height = formObj.height.value;\r
- if (height != "")\r
- st['height'] = getCSSSize(height);\r
- else\r
- st['height'] = "";\r
-\r
- formObj.style.value = dom.serializeStyle(st);\r
-}\r
-\r
-function changedColor() {\r
- var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;\r
- var st = dom.parseStyle(formObj.style.value);\r
-\r
- st['background-color'] = formObj.bgcolor.value;\r
-\r
- formObj.style.value = dom.serializeStyle(st);\r
-}\r
-\r
-tinyMCEPopup.onInit.add(init);\r
+++ /dev/null
-tinyMCEPopup.requireLangPack();\r
-\r
-var action, orgTableWidth, orgTableHeight, dom = tinyMCEPopup.editor.dom;\r
-\r
-function insertTable() {\r
- var formObj = document.forms[0];\r
- var inst = tinyMCEPopup.editor, dom = inst.dom;\r
- var cols = 2, rows = 2, border = 0, cellpadding = -1, cellspacing = -1, align, width, height, className, caption, frame, rules;\r
- var html = '', capEl, elm;\r
- var cellLimit, rowLimit, colLimit;\r
-\r
- tinyMCEPopup.restoreSelection();\r
-\r
- if (!AutoValidator.validate(formObj)) {\r
- tinyMCEPopup.alert(inst.getLang('invalid_data'));\r
- return false;\r
- }\r
-\r
- elm = dom.getParent(inst.selection.getNode(), 'table');\r
-\r
- // Get form data\r
- cols = formObj.elements['cols'].value;\r
- rows = formObj.elements['rows'].value;\r
- border = formObj.elements['border'].value != "" ? formObj.elements['border'].value : 0;\r
- cellpadding = formObj.elements['cellpadding'].value != "" ? formObj.elements['cellpadding'].value : "";\r
- cellspacing = formObj.elements['cellspacing'].value != "" ? formObj.elements['cellspacing'].value : "";\r
- align = formObj.elements['align'].options[formObj.elements['align'].selectedIndex].value;\r
- frame = formObj.elements['frame'].options[formObj.elements['frame'].selectedIndex].value;\r
- rules = formObj.elements['rules'].options[formObj.elements['rules'].selectedIndex].value;\r
- width = formObj.elements['width'].value;\r
- height = formObj.elements['height'].value;\r
- bordercolor = formObj.elements['bordercolor'].value;\r
- bgcolor = formObj.elements['bgcolor'].value;\r
- className = formObj.elements['class'].options[formObj.elements['class'].selectedIndex].value;\r
- id = formObj.elements['id'].value;\r
- summary = formObj.elements['summary'].value;\r
- style = formObj.elements['style'].value;\r
- dir = formObj.elements['dir'].value;\r
- lang = formObj.elements['lang'].value;\r
- background = formObj.elements['backgroundimage'].value;\r
- caption = formObj.elements['caption'].checked;\r
-\r
- cellLimit = tinyMCEPopup.getParam('table_cell_limit', false);\r
- rowLimit = tinyMCEPopup.getParam('table_row_limit', false);\r
- colLimit = tinyMCEPopup.getParam('table_col_limit', false);\r
-\r
- // Validate table size\r
- if (colLimit && cols > colLimit) {\r
- tinyMCEPopup.alert(inst.getLang('table_dlg.col_limit').replace(/\{\$cols\}/g, colLimit));\r
- return false;\r
- } else if (rowLimit && rows > rowLimit) {\r
- tinyMCEPopup.alert(inst.getLang('table_dlg.row_limit').replace(/\{\$rows\}/g, rowLimit));\r
- return false;\r
- } else if (cellLimit && cols * rows > cellLimit) {\r
- tinyMCEPopup.alert(inst.getLang('table_dlg.cell_limit').replace(/\{\$cells\}/g, cellLimit));\r
- return false;\r
- }\r
-\r
- // Update table\r
- if (action == "update") {\r
- inst.execCommand('mceBeginUndoLevel');\r
-\r
- dom.setAttrib(elm, 'cellPadding', cellpadding, true);\r
- dom.setAttrib(elm, 'cellSpacing', cellspacing, true);\r
- dom.setAttrib(elm, 'border', border);\r
- dom.setAttrib(elm, 'align', align);\r
- dom.setAttrib(elm, 'frame', frame);\r
- dom.setAttrib(elm, 'rules', rules);\r
- dom.setAttrib(elm, 'class', className);\r
- dom.setAttrib(elm, 'style', style);\r
- dom.setAttrib(elm, 'id', id);\r
- dom.setAttrib(elm, 'summary', summary);\r
- dom.setAttrib(elm, 'dir', dir);\r
- dom.setAttrib(elm, 'lang', lang);\r
-\r
- capEl = inst.dom.select('caption', elm)[0];\r
-\r
- if (capEl && !caption)\r
- capEl.parentNode.removeChild(capEl);\r
-\r
- if (!capEl && caption) {\r
- capEl = elm.ownerDocument.createElement('caption');\r
-\r
- if (!tinymce.isIE)\r
- capEl.innerHTML = '<br mce_bogus="1"/>';\r
-\r
- elm.insertBefore(capEl, elm.firstChild);\r
- }\r
-\r
- if (width && /(pt|em|cm)$/.test(width)) {\r
- dom.setStyle(elm, 'width', width);\r
- dom.setAttrib(elm, 'width', '');\r
- } else {\r
- dom.setAttrib(elm, 'width', width, true);\r
- dom.setStyle(elm, 'width', '');\r
- }\r
-\r
- // Remove these since they are not valid XHTML\r
- dom.setAttrib(elm, 'borderColor', '');\r
- dom.setAttrib(elm, 'bgColor', '');\r
- dom.setAttrib(elm, 'background', '');\r
-\r
- if (height) {\r
- dom.setStyle(elm, 'height', height);\r
- dom.setAttrib(elm, 'height', '');\r
- }\r
-\r
- if (background != '')\r
- elm.style.backgroundImage = "url('" + background + "')";\r
- else\r
- elm.style.backgroundImage = '';\r
-\r
-/* if (tinyMCEPopup.getParam("inline_styles")) {\r
- if (width != '')\r
- elm.style.width = getCSSSize(width);\r
- }*/\r
-\r
- if (bordercolor != "") {\r
- elm.style.borderColor = bordercolor;\r
- elm.style.borderStyle = elm.style.borderStyle == "" ? "solid" : elm.style.borderStyle;\r
- elm.style.borderWidth = border == "" ? "1px" : border;\r
- } else\r
- elm.style.borderColor = '';\r
-\r
- elm.style.backgroundColor = bgcolor;\r
- elm.style.height = getCSSSize(height);\r
-\r
- inst.addVisual();\r
-\r
- // Fix for stange MSIE align bug\r
- //elm.outerHTML = elm.outerHTML;\r
-\r
- inst.nodeChanged();\r
- inst.execCommand('mceEndUndoLevel');\r
-\r
- // Repaint if dimensions changed\r
- if (formObj.width.value != orgTableWidth || formObj.height.value != orgTableHeight)\r
- inst.execCommand('mceRepaint');\r
-\r
- tinyMCEPopup.close();\r
- return true;\r
- }\r
-\r
- // Create new table\r
- html += '<table';\r
-\r
- html += makeAttrib('id', id);\r
- html += makeAttrib('border', border);\r
- html += makeAttrib('cellpadding', cellpadding);\r
- html += makeAttrib('cellspacing', cellspacing);\r
-\r
- if (width && /(pt|em|cm)$/.test(width)) {\r
- if (style)\r
- style += '; ';\r
-\r
- style += 'width: ' + width;\r
- } else\r
- html += makeAttrib('width', width);\r
-\r
-/* if (height) {\r
- if (style)\r
- style += '; ';\r
-\r
- style += 'height: ' + height;\r
- }*/\r
-\r
- //html += makeAttrib('height', height);\r
- //html += makeAttrib('bordercolor', bordercolor);\r
- //html += makeAttrib('bgcolor', bgcolor);\r
- html += makeAttrib('align', align);\r
- html += makeAttrib('frame', frame);\r
- html += makeAttrib('rules', rules);\r
- html += makeAttrib('class', className);\r
- html += makeAttrib('style', style);\r
- html += makeAttrib('summary', summary);\r
- html += makeAttrib('dir', dir);\r
- html += makeAttrib('lang', lang);\r
- html += '>';\r
-\r
- if (caption) {\r
- if (!tinymce.isIE)\r
- html += '<caption><br mce_bogus="1"/></caption>';\r
- else\r
- html += '<caption></caption>';\r
- }\r
-\r
- for (var y=0; y<rows; y++) {\r
- html += "<tr>";\r
-\r
- for (var x=0; x<cols; x++) {\r
- if (!tinymce.isIE)\r
- html += '<td><br mce_bogus="1"/></td>';\r
- else\r
- html += '<td></td>';\r
- }\r
-\r
- html += "</tr>";\r
- }\r
-\r
- html += "</table>";\r
-\r
- inst.execCommand('mceBeginUndoLevel');\r
- inst.execCommand('mceInsertContent', false, html);\r
- inst.addVisual();\r
- inst.execCommand('mceEndUndoLevel');\r
-\r
- tinyMCEPopup.close();\r
-}\r
-\r
-function makeAttrib(attrib, value) {\r
- var formObj = document.forms[0];\r
- var valueElm = formObj.elements[attrib];\r
-\r
- if (typeof(value) == "undefined" || value == null) {\r
- value = "";\r
-\r
- if (valueElm)\r
- value = valueElm.value;\r
- }\r
-\r
- if (value == "")\r
- return "";\r
-\r
- // XML encode it\r
- value = value.replace(/&/g, '&');\r
- value = value.replace(/\"/g, '"');\r
- value = value.replace(/</g, '<');\r
- value = value.replace(/>/g, '>');\r
-\r
- return ' ' + attrib + '="' + value + '"';\r
-}\r
-\r
-function init() {\r
- tinyMCEPopup.resizeToInnerSize();\r
-\r
- document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');\r
- document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');\r
- document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor');\r
- document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');\r
-\r
- var cols = 2, rows = 2, border = tinyMCEPopup.getParam('table_default_border', '0'), cellpadding = tinyMCEPopup.getParam('table_default_cellpadding', ''), cellspacing = tinyMCEPopup.getParam('table_default_cellspacing', '');\r
- var align = "", width = "", height = "", bordercolor = "", bgcolor = "", className = "";\r
- var id = "", summary = "", style = "", dir = "", lang = "", background = "", bgcolor = "", bordercolor = "", rules, frame;\r
- var inst = tinyMCEPopup.editor, dom = inst.dom;\r
- var formObj = document.forms[0];\r
- var elm = dom.getParent(inst.selection.getNode(), "table");\r
-\r
- action = tinyMCEPopup.getWindowArg('action');\r
-\r
- if (!action)\r
- action = elm ? "update" : "insert";\r
-\r
- if (elm && action != "insert") {\r
- var rowsAr = elm.rows;\r
- var cols = 0;\r
- for (var i=0; i<rowsAr.length; i++)\r
- if (rowsAr[i].cells.length > cols)\r
- cols = rowsAr[i].cells.length;\r
-\r
- cols = cols;\r
- rows = rowsAr.length;\r
-\r
- st = dom.parseStyle(dom.getAttrib(elm, "style"));\r
- border = trimSize(getStyle(elm, 'border', 'borderWidth'));\r
- cellpadding = dom.getAttrib(elm, 'cellpadding', "");\r
- cellspacing = dom.getAttrib(elm, 'cellspacing', "");\r
- width = trimSize(getStyle(elm, 'width', 'width'));\r
- height = trimSize(getStyle(elm, 'height', 'height'));\r
- bordercolor = convertRGBToHex(getStyle(elm, 'bordercolor', 'borderLeftColor'));\r
- bgcolor = convertRGBToHex(getStyle(elm, 'bgcolor', 'backgroundColor'));\r
- align = dom.getAttrib(elm, 'align', align);\r
- frame = dom.getAttrib(elm, 'frame');\r
- rules = dom.getAttrib(elm, 'rules');\r
- className = tinymce.trim(dom.getAttrib(elm, 'class').replace(/mceItem.+/g, ''));\r
- id = dom.getAttrib(elm, 'id');\r
- summary = dom.getAttrib(elm, 'summary');\r
- style = dom.serializeStyle(st);\r
- dir = dom.getAttrib(elm, 'dir');\r
- lang = dom.getAttrib(elm, 'lang');\r
- background = getStyle(elm, 'background', 'backgroundImage').replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");\r
- formObj.caption.checked = elm.getElementsByTagName('caption').length > 0;\r
-\r
- orgTableWidth = width;\r
- orgTableHeight = height;\r
-\r
- action = "update";\r
- formObj.insert.value = inst.getLang('update');\r
- }\r
-\r
- addClassesToList('class', "table_styles");\r
- TinyMCE_EditableSelects.init();\r
-\r
- // Update form\r
- selectByValue(formObj, 'align', align);\r
- selectByValue(formObj, 'frame', frame);\r
- selectByValue(formObj, 'rules', rules);\r
- selectByValue(formObj, 'class', className, true, true);\r
- formObj.cols.value = cols;\r
- formObj.rows.value = rows;\r
- formObj.border.value = border;\r
- formObj.cellpadding.value = cellpadding;\r
- formObj.cellspacing.value = cellspacing;\r
- formObj.width.value = width;\r
- formObj.height.value = height;\r
- formObj.bordercolor.value = bordercolor;\r
- formObj.bgcolor.value = bgcolor;\r
- formObj.id.value = id;\r
- formObj.summary.value = summary;\r
- formObj.style.value = style;\r
- formObj.dir.value = dir;\r
- formObj.lang.value = lang;\r
- formObj.backgroundimage.value = background;\r
-\r
- updateColor('bordercolor_pick', 'bordercolor');\r
- updateColor('bgcolor_pick', 'bgcolor');\r
-\r
- // Resize some elements\r
- if (isVisible('backgroundimagebrowser'))\r
- document.getElementById('backgroundimage').style.width = '180px';\r
-\r
- // Disable some fields in update mode\r
- if (action == "update") {\r
- formObj.cols.disabled = true;\r
- formObj.rows.disabled = true;\r
- }\r
-}\r
-\r
-function changedSize() {\r
- var formObj = document.forms[0];\r
- var st = dom.parseStyle(formObj.style.value);\r
-\r
-/* var width = formObj.width.value;\r
- if (width != "")\r
- st['width'] = tinyMCEPopup.getParam("inline_styles") ? getCSSSize(width) : "";\r
- else\r
- st['width'] = "";*/\r
-\r
- var height = formObj.height.value;\r
- if (height != "")\r
- st['height'] = getCSSSize(height);\r
- else\r
- st['height'] = "";\r
-\r
- formObj.style.value = dom.serializeStyle(st);\r
-}\r
-\r
-function changedBackgroundImage() {\r
- var formObj = document.forms[0];\r
- var st = dom.parseStyle(formObj.style.value);\r
-\r
- st['background-image'] = "url('" + formObj.backgroundimage.value + "')";\r
-\r
- formObj.style.value = dom.serializeStyle(st);\r
-}\r
-\r
-function changedBorder() {\r
- var formObj = document.forms[0];\r
- var st = dom.parseStyle(formObj.style.value);\r
-\r
- // Update border width if the element has a color\r
- if (formObj.border.value != "" && formObj.bordercolor.value != "")\r
- st['border-width'] = formObj.border.value + "px";\r
-\r
- formObj.style.value = dom.serializeStyle(st);\r
-}\r
-\r
-function changedColor() {\r
- var formObj = document.forms[0];\r
- var st = dom.parseStyle(formObj.style.value);\r
-\r
- st['background-color'] = formObj.bgcolor.value;\r
-\r
- if (formObj.bordercolor.value != "") {\r
- st['border-color'] = formObj.bordercolor.value;\r
-\r
- // Add border-width if it's missing\r
- if (!st['border-width'])\r
- st['border-width'] = formObj.border.value == "" ? "1px" : formObj.border.value + "px";\r
- }\r
-\r
- formObj.style.value = dom.serializeStyle(st);\r
-}\r
-\r
-function changedStyle() {\r
- var formObj = document.forms[0];\r
- var st = dom.parseStyle(formObj.style.value);\r
-\r
- if (st['background-image'])\r
- formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");\r
- else\r
- formObj.backgroundimage.value = '';\r
-\r
- if (st['width'])\r
- formObj.width.value = trimSize(st['width']);\r
-\r
- if (st['height'])\r
- formObj.height.value = trimSize(st['height']);\r
-\r
- if (st['background-color']) {\r
- formObj.bgcolor.value = st['background-color'];\r
- updateColor('bgcolor_pick','bgcolor');\r
- }\r
-\r
- if (st['border-color']) {\r
- formObj.bordercolor.value = st['border-color'];\r
- updateColor('bordercolor_pick','bordercolor');\r
- }\r
-}\r
-\r
-tinyMCEPopup.onInit.add(init);\r
+++ /dev/null
-tinyMCE.addI18n('en.table_dlg',{\r
-general_tab:"General",\r
-advanced_tab:"Advanced",\r
-general_props:"General properties",\r
-advanced_props:"Advanced properties",\r
-rowtype:"Row in table part",\r
-title:"Insert/Modify table",\r
-width:"Width",\r
-height:"Height",\r
-cols:"Cols",\r
-rows:"Rows",\r
-cellspacing:"Cellspacing",\r
-cellpadding:"Cellpadding",\r
-border:"Border",\r
-align:"Alignment",\r
-align_default:"Default",\r
-align_left:"Left",\r
-align_right:"Right",\r
-align_middle:"Center",\r
-row_title:"Table row properties",\r
-cell_title:"Table cell properties",\r
-cell_type:"Cell type",\r
-valign:"Vertical alignment",\r
-align_top:"Top",\r
-align_bottom:"Bottom",\r
-bordercolor:"Border color",\r
-bgcolor:"Background color",\r
-merge_cells_title:"Merge table cells",\r
-id:"Id",\r
-style:"Style",\r
-langdir:"Language direction",\r
-langcode:"Language code",\r
-mime:"Target MIME type",\r
-ltr:"Left to right",\r
-rtl:"Right to left",\r
-bgimage:"Background image",\r
-summary:"Summary",\r
-td:"Data",\r
-th:"Header",\r
-cell_cell:"Update current cell",\r
-cell_row:"Update all cells in row",\r
-cell_all:"Update all cells in table",\r
-row_row:"Update current row",\r
-row_odd:"Update odd rows in table",\r
-row_even:"Update even rows in table",\r
-row_all:"Update all rows in table",\r
-thead:"Table Head",\r
-tbody:"Table Body",\r
-tfoot:"Table Foot",\r
-scope:"Scope",\r
-rowgroup:"Row Group",\r
-colgroup:"Col Group",\r
-col_limit:"You've exceeded the maximum number of columns of {$cols}.",\r
-row_limit:"You've exceeded the maximum number of rows of {$rows}.",\r
-cell_limit:"You've exceeded the maximum number of cells of {$cells}.",\r
-missing_scope:"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.",\r
-caption:"Table caption",\r
-frame:"Frame",\r
-frame_none:"none",\r
-frame_groups:"groups",\r
-frame_rows:"rows",\r
-frame_cols:"cols",\r
-frame_all:"all",\r
-rules:"Rules",\r
-rules_void:"void",\r
-rules_above:"above",\r
-rules_below:"below",\r
-rules_hsides:"hsides",\r
-rules_lhs:"lhs",\r
-rules_rhs:"rhs",\r
-rules_vsides:"vsides",\r
-rules_box:"box",\r
-rules_border:"border"\r
-});
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
- <title>{#table_dlg.merge_cells_title}</title>\r
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
- <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
- <script type="text/javascript" src="../../utils/validate.js"></script>\r
- <script type="text/javascript" src="js/merge_cells.js"></script>\r
- <base target="_self" />\r
-</head>\r
-<body style="margin: 8px" style="display: none">\r
-<form onsubmit="mergeCells();return false;" action="#">\r
- <fieldset>\r
- <legend>{#table_dlg.merge_cells_title}</legend>\r
- <table border="0" cellpadding="0" cellspacing="3" width="100%">\r
- <tr>\r
- <td>{#table_dlg.cols}:</td>\r
- <td align="right"><input type="text" name="numcols" value="" class="number min1 mceFocus" style="width: 30px" /></td>\r
- </tr>\r
- <tr>\r
- <td>{#table_dlg.rows}:</td>\r
- <td align="right"><input type="text" name="numrows" value="" class="number min1" style="width: 30px" /></td>\r
- </tr>\r
- </table>\r
- </fieldset>\r
-\r
- <div class="mceActionPanel">\r
- <div style="float: left">\r
- <input type="submit" id="insert" name="insert" value="{#update}" />\r
- </div>\r
-\r
- <div style="float: right">\r
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
- </div>\r
- </div>\r
-</form>\r
-</body>\r
-</html>\r
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
- <title>{#table_dlg.row_title}</title>\r
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
- <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
- <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
- <script type="text/javascript" src="../../utils/editable_selects.js"></script>\r
- <script type="text/javascript" src="js/row.js"></script>\r
- <link href="css/row.css" rel="stylesheet" type="text/css" />\r
- <base target="_self" />\r
-</head>\r
-<body id="tablerow" style="display: none">\r
- <form onsubmit="updateAction();return false;">\r
- <div class="tabs">\r
- <ul>\r
- <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#table_dlg.general_tab}</a></span></li>\r
- <li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#table_dlg.advanced_tab}</a></span></li>\r
- </ul>\r
- </div>\r
-\r
- <div class="panel_wrapper">\r
- <div id="general_panel" class="panel current">\r
- <fieldset>\r
- <legend>{#table_dlg.general_props}</legend>\r
-\r
- <table border="0" cellpadding="4" cellspacing="0">\r
- <tr>\r
- <td><label for="rowtype">{#table_dlg.rowtype}</label></td>\r
- <td class="col2">\r
- <select id="rowtype" name="rowtype" class="mceFocus">\r
- <option value="thead">{#table_dlg.thead}</option>\r
- <option value="tbody">{#table_dlg.tbody}</option>\r
- <option value="tfoot">{#table_dlg.tfoot}</option>\r
- </select>\r
- </td>\r
- </tr>\r
-\r
- <tr>\r
- <td><label for="align">{#table_dlg.align}</label></td>\r
- <td class="col2">\r
- <select id="align" name="align">\r
- <option value="">{#not_set}</option>\r
- <option value="center">{#table_dlg.align_middle}</option>\r
- <option value="left">{#table_dlg.align_left}</option>\r
- <option value="right">{#table_dlg.align_right}</option>\r
- </select>\r
- </td>\r
- </tr>\r
-\r
- <tr>\r
- <td><label for="valign">{#table_dlg.valign}</label></td>\r
- <td class="col2">\r
- <select id="valign" name="valign">\r
- <option value="">{#not_set}</option>\r
- <option value="top">{#table_dlg.align_top}</option>\r
- <option value="middle">{#table_dlg.align_middle}</option>\r
- <option value="bottom">{#table_dlg.align_bottom}</option>\r
- </select>\r
- </td>\r
- </tr>\r
-\r
- <tr id="styleSelectRow">\r
- <td><label for="class">{#class_name}</label></td>\r
- <td class="col2">\r
- <select id="class" name="class" class="mceEditableSelect">\r
- <option value="" selected="selected">{#not_set}</option>\r
- </select>\r
- </td>\r
- </tr>\r
-\r
- <tr>\r
- <td><label for="height">{#table_dlg.height}</label></td>\r
- <td class="col2"><input name="height" type="text" id="height" value="" size="4" maxlength="4" onchange="changedSize();" /></td>\r
- </tr>\r
- </table>\r
- </fieldset>\r
- </div>\r
-\r
- <div id="advanced_panel" class="panel">\r
- <fieldset>\r
- <legend>{#table_dlg.advanced_props}</legend>\r
-\r
- <table border="0" cellpadding="0" cellspacing="4">\r
- <tr>\r
- <td class="column1"><label for="id">{#table_dlg.id}</label></td> \r
- <td><input id="id" name="id" type="text" value="" style="width: 200px" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td><label for="style">{#table_dlg.style}</label></td>\r
- <td><input type="text" id="style" name="style" value="" style="width: 200px;" onchange="changedStyle();" /></td>\r
- </tr>\r
-\r
- <tr>\r
- <td class="column1"><label for="dir">{#table_dlg.langdir}</label></td> \r
- <td>\r
- <select id="dir" name="dir" style="width: 200px"> \r
- <option value="">{#not_set}</option> \r
- <option value="ltr">{#table_dlg.ltr}</option> \r
- <option value="rtl">{#table_dlg.rtl}</option> \r
- </select>\r
- </td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="column1"><label for="lang">{#table_dlg.langcode}</label></td> \r
- <td>\r
- <input id="lang" name="lang" type="text" value="" style="width: 200px" />\r
- </td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="column1"><label for="backgroundimage">{#table_dlg.bgimage}</label></td> \r
- <td>\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input id="backgroundimage" name="backgroundimage" type="text" value="" style="width: 200px" onchange="changedBackgroundImage();" /></td>\r
- <td id="backgroundimagebrowsercontainer"> </td>\r
- </tr>\r
- </table>\r
- </td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="column1"><label for="bgcolor">{#table_dlg.bgcolor}</label></td> \r
- <td>\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');changedColor();" /></td>\r
- <td id="bgcolor_pickcontainer"> </td>\r
- </tr>\r
- </table>\r
- </td> \r
- </tr>\r
- </table>\r
- </fieldset>\r
- </div>\r
- </div>\r
-\r
- <div class="mceActionPanel">\r
- <div>\r
- <select id="action" name="action">\r
- <option value="row">{#table_dlg.row_row}</option>\r
- <option value="odd">{#table_dlg.row_odd}</option>\r
- <option value="even">{#table_dlg.row_even}</option>\r
- <option value="all">{#table_dlg.row_all}</option>\r
- </select>\r
- </div>\r
-\r
- <div style="float: left">\r
- <div><input type="submit" id="insert" name="insert" value="{#update}" /></div>\r
- </div>\r
-\r
- <div style="float: right">\r
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
- </div>\r
- </div>\r
- </form>\r
-</body>\r
-</html>\r
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
- <title>{#table_dlg.title}</title>\r
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
- <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
- <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
- <script type="text/javascript" src="../../utils/validate.js"></script>\r
- <script type="text/javascript" src="../../utils/editable_selects.js"></script>\r
- <script type="text/javascript" src="js/table.js"></script>\r
- <link href="css/table.css" rel="stylesheet" type="text/css" />\r
- <base target="_self" />\r
-</head>\r
-<body id="table" style="display: none">\r
- <form onsubmit="insertTable();return false;" action="#">\r
- <div class="tabs">\r
- <ul>\r
- <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#table_dlg.general_tab}</a></span></li>\r
- <li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#table_dlg.advanced_tab}</a></span></li>\r
- </ul>\r
- </div>\r
-\r
- <div class="panel_wrapper">\r
- <div id="general_panel" class="panel current">\r
- <fieldset>\r
- <legend>{#table_dlg.general_props}</legend>\r
- <table border="0" cellpadding="4" cellspacing="0" width="100%">\r
- <tr>\r
- <td><label id="colslabel" for="cols">{#table_dlg.cols}</label></td>\r
- <td><input id="cols" name="cols" type="text" value="" size="3" maxlength="3" class="required number min1 mceFocus" /></td>\r
- <td><label id="rowslabel" for="rows">{#table_dlg.rows}</label></td>\r
- <td><input id="rows" name="rows" type="text" value="" size="3" maxlength="3" class="required number min1" /></td>\r
- </tr>\r
- <tr>\r
- <td><label id="cellpaddinglabel" for="cellpadding">{#table_dlg.cellpadding}</label></td>\r
- <td><input id="cellpadding" name="cellpadding" type="text" value="" size="3" maxlength="3" class="number" /></td>\r
- <td><label id="cellspacinglabel" for="cellspacing">{#table_dlg.cellspacing}</label></td>\r
- <td><input id="cellspacing" name="cellspacing" type="text" value="" size="3" maxlength="3" class="number" /></td>\r
- </tr>\r
- <tr>\r
- <td><label id="alignlabel" for="align">{#table_dlg.align}</label></td>\r
- <td><select id="align" name="align">\r
- <option value="">{#not_set}</option>\r
- <option value="center">{#table_dlg.align_middle}</option>\r
- <option value="left">{#table_dlg.align_left}</option>\r
- <option value="right">{#table_dlg.align_right}</option>\r
- </select></td>\r
- <td><label id="borderlabel" for="border">{#table_dlg.border}</label></td>\r
- <td><input id="border" name="border" type="text" value="" size="3" maxlength="3" onchange="changedBorder();" class="number" /></td>\r
- </tr>\r
- <tr id="width_row">\r
- <td><label id="widthlabel" for="width">{#table_dlg.width}</label></td>\r
- <td><input name="width" type="text" id="width" value="" size="4" maxlength="4" onchange="changedSize();" class="size" /></td>\r
- <td><label id="heightlabel" for="height">{#table_dlg.height}</label></td>\r
- <td><input name="height" type="text" id="height" value="" size="4" maxlength="4" onchange="changedSize();" class="size" /></td>\r
- </tr>\r
- <tr id="styleSelectRow">\r
- <td><label id="classlabel" for="class">{#class_name}</label></td>\r
- <td colspan="3">\r
- <select id="class" name="class" class="mceEditableSelect">\r
- <option value="" selected>{#not_set}</option>\r
- </select></td>\r
- </tr>\r
- <tr>\r
- <td class="column1"><label for="caption">{#table_dlg.caption}</label></td> \r
- <td><input id="caption" name="caption" type="checkbox" class="checkbox" value="true" /></td> \r
- </tr>\r
- </table>\r
- </fieldset>\r
- </div>\r
-\r
- <div id="advanced_panel" class="panel">\r
- <fieldset>\r
- <legend>{#table_dlg.advanced_props}</legend>\r
-\r
- <table border="0" cellpadding="0" cellspacing="4">\r
- <tr>\r
- <td class="column1"><label for="id">{#table_dlg.id}</label></td> \r
- <td><input id="id" name="id" type="text" value="" class="advfield" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="column1"><label for="summary">{#table_dlg.summary}</label></td> \r
- <td><input id="summary" name="summary" type="text" value="" class="advfield" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td><label for="style">{#table_dlg.style}</label></td>\r
- <td><input type="text" id="style" name="style" value="" class="advfield" onchange="changedStyle();" /></td>\r
- </tr>\r
-\r
- <tr>\r
- <td class="column1"><label id="langlabel" for="lang">{#table_dlg.langcode}</label></td> \r
- <td>\r
- <input id="lang" name="lang" type="text" value="" class="advfield" />\r
- </td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="column1"><label for="backgroundimage">{#table_dlg.bgimage}</label></td> \r
- <td>\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input id="backgroundimage" name="backgroundimage" type="text" value="" class="advfield" onchange="changedBackgroundImage();" /></td>\r
- <td id="backgroundimagebrowsercontainer"> </td>\r
- </tr>\r
- </table>\r
- </td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="column1"><label for="frame">{#table_dlg.frame}</label></td> \r
- <td>\r
- <select id="frame" name="frame" class="advfield"> \r
- <option value="">{#not_set}</option>\r
- <option value="void">{#table_dlg.rules_void}</option>\r
- <option value="above">{#table_dlg.rules_above}</option> \r
- <option value="below">{#table_dlg.rules_below}</option> \r
- <option value="hsides">{#table_dlg.rules_hsides}</option> \r
- <option value="lhs">{#table_dlg.rules_lhs}</option> \r
- <option value="rhs">{#table_dlg.rules_rhs}</option> \r
- <option value="vsides">{#table_dlg.rules_vsides}</option> \r
- <option value="box">{#table_dlg.rules_box}</option> \r
- <option value="border">{#table_dlg.rules_border}</option> \r
- </select>\r
- </td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="column1"><label for="rules">{#table_dlg.rules}</label></td> \r
- <td>\r
- <select id="rules" name="rules" class="advfield"> \r
- <option value="">{#not_set}</option> \r
- <option value="none">{#table_dlg.frame_none}</option>\r
- <option value="groups">{#table_dlg.frame_groups}</option>\r
- <option value="rows">{#table_dlg.frame_rows}</option>\r
- <option value="cols">{#table_dlg.frame_cols}</option>\r
- <option value="all">{#table_dlg.frame_all}</option>\r
- </select>\r
- </td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="column1"><label for="dir">{#table_dlg.langdir}</label></td> \r
- <td>\r
- <select id="dir" name="dir" class="advfield"> \r
- <option value="">{#not_set}</option> \r
- <option value="ltr">{#table_dlg.ltr}</option> \r
- <option value="rtl">{#table_dlg.rtl}</option> \r
- </select>\r
- </td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="column1"><label for="bordercolor">{#table_dlg.bordercolor}</label></td> \r
- <td>\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input id="bordercolor" name="bordercolor" type="text" value="" size="9" onchange="updateColor('bordercolor_pick','bordercolor');changedColor();" /></td>\r
- <td id="bordercolor_pickcontainer"> </td>\r
- </tr>\r
- </table>\r
- </td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="column1"><label for="bgcolor">{#table_dlg.bgcolor}</label></td> \r
- <td>\r
- <table border="0" cellpadding="0" cellspacing="0">\r
- <tr>\r
- <td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');changedColor();" /></td>\r
- <td id="bgcolor_pickcontainer"> </td>\r
- </tr>\r
- </table>\r
- </td> \r
- </tr>\r
- </table>\r
- </fieldset>\r
- </div>\r
- </div>\r
-\r
- <div class="mceActionPanel">\r
- <div style="float: left">\r
- <input type="submit" id="insert" name="insert" value="{#insert}" />\r
- </div>\r
-\r
- <div style="float: right">\r
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
- </div>\r
- </div>\r
- </form>\r
-</body>\r
-</html>\r
+++ /dev/null
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
- <title>blank_page</title>\r
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
- <script type="text/javascript">\r
- parent.TemplateDialog.loadCSSFiles(document);\r
- </script>\r
-</head>\r
-<body id="mceTemplatePreview" class="mceContentBody">\r
-\r
-</body>\r
-</html>\r
+++ /dev/null
-#frmbody {\r
- padding: 10px;\r
- background-color: #FFF;\r
- border: 1px solid #CCC;\r
-}\r
-\r
-.frmRow {\r
- margin-bottom: 10px;\r
-}\r
-\r
-#templatesrc {\r
- border: none;\r
- width: 320px;\r
- height: 240px;\r
-}\r
-\r
-.title {\r
- padding-bottom: 5px;\r
-}\r
-\r
-.mceActionPanel {\r
- padding-top: 5px;\r
-}\r
+++ /dev/null
-(function(){var each=tinymce.each;tinymce.create('tinymce.plugins.TemplatePlugin',{init:function(ed,url){var t=this;t.editor=ed;ed.addCommand('mceTemplate',function(ui){ed.windowManager.open({file:url+'/template.htm',width:ed.getParam('template_popup_width',750),height:ed.getParam('template_popup_height',600),inline:1},{plugin_url:url});});ed.addCommand('mceInsertTemplate',t._insertTemplate,t);ed.addButton('template',{title:'template.desc',cmd:'mceTemplate'});ed.onPreProcess.add(function(ed,o){var dom=ed.dom;each(dom.select('div',o.node),function(e){if(dom.hasClass(e,'mceTmpl')){each(dom.select('*',e),function(e){if(dom.hasClass(e,ed.getParam('template_mdate_classes','mdate').replace(/\s+/g,'|')))e.innerHTML=t._getDateTime(new Date(),ed.getParam("template_mdate_format",ed.getLang("template.mdate_format")));});t._replaceVals(e);}});});},getInfo:function(){return{longname:'Template plugin',author:'Moxiecode Systems AB',authorurl:'http://www.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/template',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_insertTemplate:function(ui,v){var t=this,ed=t.editor,h,el,dom=ed.dom,sel=ed.selection.getContent();h=v.content;each(t.editor.getParam('template_replace_values'),function(v,k){if(typeof(v)!='function')h=h.replace(new RegExp('\\{\\$'+k+'\\}','g'),v);});el=dom.create('div',null,h);n=dom.select('.mceTmpl',el);if(n&&n.length>0){el=dom.create('div',null);el.appendChild(n[0].cloneNode(true));}function hasClass(n,c){return new RegExp('\\b'+c+'\\b','g').test(n.className);};each(dom.select('*',el),function(n){if(hasClass(n,ed.getParam('template_cdate_classes','cdate').replace(/\s+/g,'|')))n.innerHTML=t._getDateTime(new Date(),ed.getParam("template_cdate_format",ed.getLang("template.cdate_format")));if(hasClass(n,ed.getParam('template_mdate_classes','mdate').replace(/\s+/g,'|')))n.innerHTML=t._getDateTime(new Date(),ed.getParam("template_mdate_format",ed.getLang("template.mdate_format")));if(hasClass(n,ed.getParam('template_selected_content_classes','selcontent').replace(/\s+/g,'|')))n.innerHTML=sel;});t._replaceVals(el);ed.execCommand('mceInsertContent',false,el.innerHTML);ed.addVisual();},_replaceVals:function(e){var dom=this.editor.dom,vl=this.editor.getParam('template_replace_values');each(dom.select('*',e),function(e){each(vl,function(v,k){if(dom.hasClass(e,k)){if(typeof(vl[k])=='function')vl[k](e);}});});},_getDateTime:function(d,fmt){if(!fmt)return"";function addZeros(value,len){var i;value=""+value;if(value.length<len){for(i=0;i<(len-value.length);i++)value="0"+value;}return value;}fmt=fmt.replace("%D","%m/%d/%y");fmt=fmt.replace("%r","%I:%M:%S %p");fmt=fmt.replace("%Y",""+d.getFullYear());fmt=fmt.replace("%y",""+d.getYear());fmt=fmt.replace("%m",addZeros(d.getMonth()+1,2));fmt=fmt.replace("%d",addZeros(d.getDate(),2));fmt=fmt.replace("%H",""+addZeros(d.getHours(),2));fmt=fmt.replace("%M",""+addZeros(d.getMinutes(),2));fmt=fmt.replace("%S",""+addZeros(d.getSeconds(),2));fmt=fmt.replace("%I",""+((d.getHours()+11)%12+1));fmt=fmt.replace("%p",""+(d.getHours()<12?"AM":"PM"));fmt=fmt.replace("%B",""+tinyMCE.getLang("template_months_long").split(',')[d.getMonth()]);fmt=fmt.replace("%b",""+tinyMCE.getLang("template_months_short").split(',')[d.getMonth()]);fmt=fmt.replace("%A",""+tinyMCE.getLang("template_day_long").split(',')[d.getDay()]);fmt=fmt.replace("%a",""+tinyMCE.getLang("template_day_short").split(',')[d.getDay()]);fmt=fmt.replace("%%","%");return fmt;}});tinymce.PluginManager.add('template',tinymce.plugins.TemplatePlugin);})();
\ No newline at end of file
+++ /dev/null
-/**\r
- * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $\r
- *\r
- * @author Moxiecode\r
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-(function() {\r
- var each = tinymce.each;\r
-\r
- tinymce.create('tinymce.plugins.TemplatePlugin', {\r
- init : function(ed, url) {\r
- var t = this;\r
-\r
- t.editor = ed;\r
-\r
- // Register commands\r
- ed.addCommand('mceTemplate', function(ui) {\r
- ed.windowManager.open({\r
- file : url + '/template.htm',\r
- width : ed.getParam('template_popup_width', 750),\r
- height : ed.getParam('template_popup_height', 600),\r
- inline : 1\r
- }, {\r
- plugin_url : url\r
- });\r
- });\r
-\r
- ed.addCommand('mceInsertTemplate', t._insertTemplate, t);\r
-\r
- // Register buttons\r
- ed.addButton('template', {title : 'template.desc', cmd : 'mceTemplate'});\r
-\r
- ed.onPreProcess.add(function(ed, o) {\r
- var dom = ed.dom;\r
-\r
- each(dom.select('div', o.node), function(e) {\r
- if (dom.hasClass(e, 'mceTmpl')) {\r
- each(dom.select('*', e), function(e) {\r
- if (dom.hasClass(e, ed.getParam('template_mdate_classes', 'mdate').replace(/\s+/g, '|')))\r
- e.innerHTML = t._getDateTime(new Date(), ed.getParam("template_mdate_format", ed.getLang("template.mdate_format")));\r
- });\r
-\r
- t._replaceVals(e);\r
- }\r
- });\r
- });\r
- },\r
-\r
- getInfo : function() {\r
- return {\r
- longname : 'Template plugin',\r
- author : 'Moxiecode Systems AB',\r
- authorurl : 'http://www.moxiecode.com',\r
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/template',\r
- version : tinymce.majorVersion + "." + tinymce.minorVersion\r
- };\r
- },\r
-\r
- _insertTemplate : function(ui, v) {\r
- var t = this, ed = t.editor, h, el, dom = ed.dom, sel = ed.selection.getContent();\r
-\r
- h = v.content;\r
-\r
- each(t.editor.getParam('template_replace_values'), function(v, k) {\r
- if (typeof(v) != 'function')\r
- h = h.replace(new RegExp('\\{\\$' + k + '\\}', 'g'), v);\r
- });\r
-\r
- el = dom.create('div', null, h);\r
-\r
- // Find template element within div\r
- n = dom.select('.mceTmpl', el);\r
- if (n && n.length > 0) {\r
- el = dom.create('div', null);\r
- el.appendChild(n[0].cloneNode(true));\r
- }\r
-\r
- function hasClass(n, c) {\r
- return new RegExp('\\b' + c + '\\b', 'g').test(n.className);\r
- };\r
-\r
- each(dom.select('*', el), function(n) {\r
- // Replace cdate\r
- if (hasClass(n, ed.getParam('template_cdate_classes', 'cdate').replace(/\s+/g, '|')))\r
- n.innerHTML = t._getDateTime(new Date(), ed.getParam("template_cdate_format", ed.getLang("template.cdate_format")));\r
-\r
- // Replace mdate\r
- if (hasClass(n, ed.getParam('template_mdate_classes', 'mdate').replace(/\s+/g, '|')))\r
- n.innerHTML = t._getDateTime(new Date(), ed.getParam("template_mdate_format", ed.getLang("template.mdate_format")));\r
-\r
- // Replace selection\r
- if (hasClass(n, ed.getParam('template_selected_content_classes', 'selcontent').replace(/\s+/g, '|')))\r
- n.innerHTML = sel;\r
- });\r
-\r
- t._replaceVals(el);\r
-\r
- ed.execCommand('mceInsertContent', false, el.innerHTML);\r
- ed.addVisual();\r
- },\r
-\r
- _replaceVals : function(e) {\r
- var dom = this.editor.dom, vl = this.editor.getParam('template_replace_values');\r
-\r
- each(dom.select('*', e), function(e) {\r
- each(vl, function(v, k) {\r
- if (dom.hasClass(e, k)) {\r
- if (typeof(vl[k]) == 'function')\r
- vl[k](e);\r
- }\r
- });\r
- });\r
- },\r
-\r
- _getDateTime : function(d, fmt) {\r
- if (!fmt)\r
- return "";\r
-\r
- function addZeros(value, len) {\r
- var i;\r
-\r
- value = "" + value;\r
-\r
- if (value.length < len) {\r
- for (i=0; i<(len-value.length); i++)\r
- value = "0" + value;\r
- }\r
-\r
- return value;\r
- }\r
-\r
- fmt = fmt.replace("%D", "%m/%d/%y");\r
- fmt = fmt.replace("%r", "%I:%M:%S %p");\r
- fmt = fmt.replace("%Y", "" + d.getFullYear());\r
- fmt = fmt.replace("%y", "" + d.getYear());\r
- fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2));\r
- fmt = fmt.replace("%d", addZeros(d.getDate(), 2));\r
- fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2));\r
- fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2));\r
- fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2));\r
- fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1));\r
- fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM"));\r
- fmt = fmt.replace("%B", "" + tinyMCE.getLang("template_months_long").split(',')[d.getMonth()]);\r
- fmt = fmt.replace("%b", "" + tinyMCE.getLang("template_months_short").split(',')[d.getMonth()]);\r
- fmt = fmt.replace("%A", "" + tinyMCE.getLang("template_day_long").split(',')[d.getDay()]);\r
- fmt = fmt.replace("%a", "" + tinyMCE.getLang("template_day_short").split(',')[d.getDay()]);\r
- fmt = fmt.replace("%%", "%");\r
-\r
- return fmt;\r
- }\r
- });\r
-\r
- // Register plugin\r
- tinymce.PluginManager.add('template', tinymce.plugins.TemplatePlugin);\r
-})();
\ No newline at end of file
+++ /dev/null
-tinyMCEPopup.requireLangPack();\r
-\r
-var TemplateDialog = {\r
- preInit : function() {\r
- var url = tinyMCEPopup.getParam("template_external_list_url");\r
-\r
- if (url != null)\r
- document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></sc'+'ript>');\r
- },\r
-\r
- init : function() {\r
- var ed = tinyMCEPopup.editor, tsrc, sel, x, u;\r
-\r
- tsrc = ed.getParam("template_templates", false);\r
- sel = document.getElementById('tpath');\r
-\r
- // Setup external template list\r
- if (!tsrc && typeof(tinyMCETemplateList) != 'undefined') {\r
- for (x=0, tsrc = []; x<tinyMCETemplateList.length; x++)\r
- tsrc.push({title : tinyMCETemplateList[x][0], src : tinyMCETemplateList[x][1], description : tinyMCETemplateList[x][2]});\r
- }\r
-\r
- for (x=0; x<tsrc.length; x++)\r
- sel.options[sel.options.length] = new Option(tsrc[x].title, tinyMCEPopup.editor.documentBaseURI.toAbsolute(tsrc[x].src));\r
-\r
- this.resize();\r
- this.tsrc = tsrc;\r
- },\r
-\r
- resize : function() {\r
- var w, h, e;\r
-\r
- if (!self.innerWidth) {\r
- w = document.body.clientWidth - 50;\r
- h = document.body.clientHeight - 160;\r
- } else {\r
- w = self.innerWidth - 50;\r
- h = self.innerHeight - 170;\r
- }\r
-\r
- e = document.getElementById('templatesrc');\r
-\r
- if (e) {\r
- e.style.height = Math.abs(h) + 'px';\r
- e.style.width = Math.abs(w - 5) + 'px';\r
- }\r
- },\r
-\r
- loadCSSFiles : function(d) {\r
- var ed = tinyMCEPopup.editor;\r
-\r
- tinymce.each(ed.getParam("content_css", '').split(','), function(u) {\r
- d.write('<link href="' + ed.documentBaseURI.toAbsolute(u) + '" rel="stylesheet" type="text/css" />');\r
- });\r
- },\r
-\r
- selectTemplate : function(u, ti) {\r
- var d = window.frames['templatesrc'].document, x, tsrc = this.tsrc;\r
-\r
- if (!u)\r
- return;\r
-\r
- d.body.innerHTML = this.templateHTML = this.getFileContents(u);\r
-\r
- for (x=0; x<tsrc.length; x++) {\r
- if (tsrc[x].title == ti)\r
- document.getElementById('tmpldesc').innerHTML = tsrc[x].description || '';\r
- }\r
- },\r
-\r
- insert : function() {\r
- tinyMCEPopup.execCommand('mceInsertTemplate', false, {\r
- content : this.templateHTML,\r
- selection : tinyMCEPopup.editor.selection.getContent()\r
- });\r
-\r
- tinyMCEPopup.close();\r
- },\r
-\r
- getFileContents : function(u) {\r
- var x, d, t = 'text/plain';\r
-\r
- function g(s) {\r
- x = 0;\r
-\r
- try {\r
- x = new ActiveXObject(s);\r
- } catch (s) {\r
- }\r
-\r
- return x;\r
- };\r
-\r
- x = window.ActiveXObject ? g('Msxml2.XMLHTTP') || g('Microsoft.XMLHTTP') : new XMLHttpRequest();\r
-\r
- // Synchronous AJAX load file\r
- x.overrideMimeType && x.overrideMimeType(t);\r
- x.open("GET", u, false);\r
- x.send(null);\r
-\r
- return x.responseText;\r
- }\r
-};\r
-\r
-TemplateDialog.preInit();\r
-tinyMCEPopup.onInit.add(TemplateDialog.init, TemplateDialog);\r
+++ /dev/null
-tinyMCE.addI18n('en.template_dlg',{\r
-title:"Templates",\r
-label:"Template",\r
-desc_label:"Description",\r
-desc:"Insert predefined template content",\r
-select:"Select a template",\r
-preview:"Preview",\r
-warning:"Warning: Updating a template with a different one may cause data loss.",\r
-mdate_format:"%Y-%m-%d %H:%M:%S",\r
-cdate_format:"%Y-%m-%d %H:%M:%S",\r
-months_long:"January,February,March,April,May,June,July,August,September,October,November,December",\r
-months_short:"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec",\r
-day_long:"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday",\r
-day_short:"Sun,Mon,Tue,Wed,Thu,Fri,Sat,Sun"\r
-});
\ No newline at end of file
+++ /dev/null
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
- <title>{#template_dlg.title}</title>\r
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
- <script type="text/javascript" src="js/template.js"></script>\r
- <link href="css/template.css" rel="stylesheet" type="text/css" />\r
- <base target="_self" />\r
-</head>\r
-<body onresize="TemplateDialog.resize();"> \r
- <form onsubmit="TemplateDialog.insert();return false;">\r
- <div id="frmbody">\r
- <div class="title">{#template_dlg.desc}</div>\r
- <div class="frmRow"><label for="tpath" title="{#template_dlg.select}">{#template_dlg.label}:</label>\r
- <select id="tpath" name="tpath" onchange="TemplateDialog.selectTemplate(this.options[this.selectedIndex].value, this.options[this.selectedIndex].text);" class="mceFocus">\r
- <option value="">{#template_dlg.select}...</option>\r
- </select>\r
- <span id="warning"></span></div>\r
- <div class="frmRow"><label for="tdesc">{#template_dlg.desc_label}:</label>\r
- <span id="tmpldesc"></span></div>\r
- <fieldset>\r
- <legend>{#template_dlg.preview}</legend>\r
- <iframe id="templatesrc" name="templatesrc" src="blank.htm" width="690" height="400" frameborder="0"></iframe>\r
- </fieldset>\r
- </div>\r
- \r
- <div class="mceActionPanel">\r
- <div style="float: left">\r
- <input type="submit" id="insert" name="insert" value="{#insert}" />\r
- </div>\r
-\r
- <div style="float: right">\r
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
- </div>\r
-\r
- <br style="clear:both" />\r
- </div>\r
- </form>\r
-</body> \r
-</html> \r
+++ /dev/null
-(function(){tinymce.create('tinymce.plugins.VisualChars',{init:function(ed,url){var t=this;t.editor=ed;ed.addCommand('mceVisualChars',t._toggleVisualChars,t);ed.addButton('visualchars',{title:'visualchars.desc',cmd:'mceVisualChars'});ed.onBeforeGetContent.add(function(ed,o){if(t.state){t.state=true;t._toggleVisualChars();}});},getInfo:function(){return{longname:'Visual characters',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualchars',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_toggleVisualChars:function(){var t=this,ed=t.editor,nl,i,h,d=ed.getDoc(),b=ed.getBody(),nv,s=ed.selection,bo;t.state=!t.state;ed.controlManager.setActive('visualchars',t.state);if(t.state){nl=[];tinymce.walk(b,function(n){if(n.nodeType==3&&n.nodeValue&&n.nodeValue.indexOf('\u00a0')!=-1)nl.push(n);},'childNodes');for(i=0;i<nl.length;i++){nv=nl[i].nodeValue;nv=nv.replace(/(\u00a0+)/g,'<span class="mceItemHidden mceVisualNbsp">$1</span>');nv=nv.replace(/\u00a0/g,'\u00b7');ed.dom.setOuterHTML(nl[i],nv,d);}}else{nl=tinymce.grep(ed.dom.select('span',b),function(n){return ed.dom.hasClass(n,'mceVisualNbsp');});for(i=0;i<nl.length;i++)ed.dom.setOuterHTML(nl[i],nl[i].innerHTML.replace(/(·|\u00b7)/g,' '),d);}}});tinymce.PluginManager.add('visualchars',tinymce.plugins.VisualChars);})();
\ No newline at end of file
+++ /dev/null
-/**\r
- * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $\r
- *\r
- * @author Moxiecode\r
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-(function() {\r
- tinymce.create('tinymce.plugins.VisualChars', {\r
- init : function(ed, url) {\r
- var t = this;\r
-\r
- t.editor = ed;\r
-\r
- // Register commands\r
- ed.addCommand('mceVisualChars', t._toggleVisualChars, t);\r
-\r
- // Register buttons\r
- ed.addButton('visualchars', {title : 'visualchars.desc', cmd : 'mceVisualChars'});\r
-\r
- ed.onBeforeGetContent.add(function(ed, o) {\r
- if (t.state) {\r
- t.state = true;\r
- t._toggleVisualChars();\r
- }\r
- });\r
- },\r
-\r
- getInfo : function() {\r
- return {\r
- longname : 'Visual characters',\r
- author : 'Moxiecode Systems AB',\r
- authorurl : 'http://tinymce.moxiecode.com',\r
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualchars',\r
- version : tinymce.majorVersion + "." + tinymce.minorVersion\r
- };\r
- },\r
-\r
- // Private methods\r
-\r
- _toggleVisualChars : function() {\r
- var t = this, ed = t.editor, nl, i, h, d = ed.getDoc(), b = ed.getBody(), nv, s = ed.selection, bo;\r
-\r
- t.state = !t.state;\r
- ed.controlManager.setActive('visualchars', t.state);\r
-\r
- if (t.state) {\r
- nl = [];\r
- tinymce.walk(b, function(n) {\r
- if (n.nodeType == 3 && n.nodeValue && n.nodeValue.indexOf('\u00a0') != -1)\r
- nl.push(n);\r
- }, 'childNodes');\r
-\r
- for (i=0; i<nl.length; i++) {\r
- nv = nl[i].nodeValue;\r
- nv = nv.replace(/(\u00a0+)/g, '<span class="mceItemHidden mceVisualNbsp">$1</span>');\r
- nv = nv.replace(/\u00a0/g, '\u00b7');\r
- ed.dom.setOuterHTML(nl[i], nv, d);\r
- }\r
- } else {\r
- nl = tinymce.grep(ed.dom.select('span', b), function(n) {\r
- return ed.dom.hasClass(n, 'mceVisualNbsp');\r
- });\r
-\r
- for (i=0; i<nl.length; i++)\r
- ed.dom.setOuterHTML(nl[i], nl[i].innerHTML.replace(/(·|\u00b7)/g, ' '), d);\r
- }\r
- }\r
- });\r
-\r
- // Register plugin\r
- tinymce.PluginManager.add('visualchars', tinymce.plugins.VisualChars);\r
-})();
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
- <title>{#xhtmlxtras_dlg.title_abbr_element}</title>\r
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
- <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
- <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
- <script type="text/javascript" src="../../utils/editable_selects.js"></script>\r
- <script type="text/javascript" src="js/element_common.js"></script>\r
- <script type="text/javascript" src="js/abbr.js"></script>\r
- <link rel="stylesheet" type="text/css" href="css/popup.css" />\r
- <base target="_self" />\r
-</head>\r
-<body style="display: none">\r
-<form onsubmit="insertAbbr();return false;" action="#">\r
- <div class="tabs">\r
- <ul>\r
- <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.general_tab}</a></span></li>\r
- <!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.events_tab}</a></span></li> -->\r
- </ul>\r
- </div>\r
-\r
- <div class="panel_wrapper">\r
- <div id="general_panel" class="panel current">\r
- <fieldset>\r
- <legend>{#xhtmlxtras_dlg.fieldset_attrib_tab}</legend>\r
- <table border="0" cellpadding="0" cellspacing="4">\r
- <tr>\r
- <td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td> \r
- <td><input id="title" name="title" type="text" value="" class="field mceFocus" /></td> \r
- </tr>\r
- <tr>\r
- <td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td> \r
- <td><input id="id" name="id" type="text" value="" class="field" /></td> \r
- </tr>\r
- <tr>\r
- <td class="label"><label id="classlabel" for="class">{#xhtmlxtras_dlg.attribute_label_class}</label>:</td> \r
- <td>\r
- <select id="class" name="class" class="field mceEditableSelect">\r
- <option value="">{#not_set}</option> \r
- </select>\r
- </td>\r
- </tr>\r
- <tr>\r
- <td class="label"><label id="stylelabel" for="class">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td> \r
- <td><input id="style" name="style" type="text" value="" class="field" /></td> \r
- </tr>\r
- <tr>\r
- <td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td> \r
- <td>\r
- <select id="dir" name="dir" class="field"> \r
- <option value="">{#not_set}</option> \r
- <option value="ltr">{#xhtmlxtras_dlg.attribute_option_ltr}</option> \r
- <option value="rtl">{#xhtmlxtras_dlg.attribute_option_rtl}</option> \r
- </select>\r
- </td> \r
- </tr>\r
- <tr>\r
- <td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td> \r
- <td>\r
- <input id="lang" name="lang" type="text" value="" class="field" />\r
- </td> \r
- </tr>\r
- </table>\r
- </fieldset>\r
- </div>\r
- <div id="events_panel" class="panel">\r
- <fieldset>\r
- <legend>{#xhtmlxtras_dlg.fieldset_events_tab}</legend>\r
-\r
- <table border="0" cellpadding="0" cellspacing="4">\r
- <tr>\r
- <td class="label"><label for="onfocus">onfocus</label>:</td> \r
- <td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onblur">onblur</label>:</td> \r
- <td><input id="onblur" name="onblur" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onclick">onclick</label>:</td> \r
- <td><input id="onclick" name="onclick" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="ondblclick">ondblclick</label>:</td> \r
- <td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onmousedown">onmousedown</label>:</td> \r
- <td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onmouseup">onmouseup</label>:</td> \r
- <td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onmouseover">onmouseover</label>:</td> \r
- <td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onmousemove">onmousemove</label>:</td> \r
- <td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onmouseout">onmouseout</label>:</td> \r
- <td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onkeypress">onkeypress</label>:</td> \r
- <td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onkeydown">onkeydown</label>:</td> \r
- <td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onkeyup">onkeyup</label>:</td> \r
- <td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td> \r
- </tr>\r
- </table>\r
- </fieldset>\r
- </div>\r
- </div>\r
- <div class="mceActionPanel">\r
- <div style="float: left">\r
- <input type="submit" id="insert" name="insert" value="{#update}" />\r
- </div>\r
- <div style="float: left">\r
- <input type="button" id="remove" name="remove" class="button" value="{#xhtmlxtras_dlg.remove}" onclick="removeAbbr();" style="display: none;" />\r
- </div>\r
- <div style="float: right">\r
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
- </div>\r
- </div>\r
-\r
-</form>\r
-</body>\r
-</html>\r
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
- <title>{#xhtmlxtras_dlg.title_acronym_element}</title>\r
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
- <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
- <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
- <script type="text/javascript" src="../../utils/editable_selects.js"></script>\r
- <script type="text/javascript" src="js/element_common.js"></script>\r
- <script type="text/javascript" src="js/acronym.js"></script>\r
- <link rel="stylesheet" type="text/css" href="css/popup.css" />\r
- <base target="_self" />\r
-</head>\r
-<body style="display: none">\r
-<form onsubmit="insertAcronym();return false;" action="#">\r
- <div class="tabs">\r
- <ul>\r
- <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.general_tab}</a></span></li>\r
- <!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.events_tab}</a></span></li> -->\r
- </ul>\r
- </div>\r
-\r
- <div class="panel_wrapper">\r
- <div id="general_panel" class="panel current">\r
- <fieldset>\r
- <legend>{#xhtmlxtras_dlg.fieldset_attrib_tab}</legend>\r
- <table border="0" cellpadding="0" cellspacing="4">\r
- <tr>\r
- <td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td> \r
- <td><input id="title" name="title" type="text" value="" class="field mceFocus" /></td> \r
- </tr>\r
- <tr>\r
- <td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td> \r
- <td><input id="id" name="id" type="text" value="" class="field" /></td> \r
- </tr>\r
- <tr>\r
- <td class="label"><label id="classlabel" for="class">{#xhtmlxtras_dlg.attribute_label_class}</label>:</td> \r
- <td>\r
- <select id="class" name="class" class="field mceEditableSelect">\r
- <option value="">{#not_set}</option> \r
- </select>\r
- </td>\r
- </tr>\r
- <tr>\r
- <td class="label"><label id="stylelabel" for="class">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td> \r
- <td><input id="style" name="style" type="text" value="" class="field" /></td> \r
- </tr>\r
- <tr>\r
- <td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td> \r
- <td>\r
- <select id="dir" name="dir" class="field"> \r
- <option value="">{#not_set}</option> \r
- <option value="ltr">{#xhtmlxtras_dlg.attribute_option_ltr}</option> \r
- <option value="rtl">{#xhtmlxtras_dlg.attribute_option_rtl}</option> \r
- </select>\r
- </td> \r
- </tr>\r
- <tr>\r
- <td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td> \r
- <td>\r
- <input id="lang" name="lang" type="text" value="" class="field" />\r
- </td> \r
- </tr>\r
- </table>\r
- </fieldset>\r
- </div>\r
- <div id="events_panel" class="panel">\r
- <fieldset>\r
- <legend>{#xhtmlxtras_dlg.fieldset_events_tab}</legend>\r
-\r
- <table border="0" cellpadding="0" cellspacing="4">\r
- <tr>\r
- <td class="label"><label for="onfocus">onfocus</label>:</td> \r
- <td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onblur">onblur</label>:</td> \r
- <td><input id="onblur" name="onblur" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onclick">onclick</label>:</td> \r
- <td><input id="onclick" name="onclick" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="ondblclick">ondblclick</label>:</td> \r
- <td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onmousedown">onmousedown</label>:</td> \r
- <td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onmouseup">onmouseup</label>:</td> \r
- <td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onmouseover">onmouseover</label>:</td> \r
- <td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onmousemove">onmousemove</label>:</td> \r
- <td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onmouseout">onmouseout</label>:</td> \r
- <td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onkeypress">onkeypress</label>:</td> \r
- <td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onkeydown">onkeydown</label>:</td> \r
- <td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onkeyup">onkeyup</label>:</td> \r
- <td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td> \r
- </tr>\r
- </table>\r
- </fieldset>\r
- </div>\r
- </div>\r
- <div class="mceActionPanel">\r
- <div style="float: left">\r
- <input type="submit" id="insert" name="insert" value="{#update}" />\r
- </div>\r
- <div style="float: left">\r
- <input type="button" id="remove" name="remove" class="button" value="{#xhtmlxtras_dlg.remove}" onclick="removeAcronym();" style="display: none;" />\r
- </div>\r
- <div style="float: right">\r
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
- </div>\r
- </div>\r
-\r
-</form>\r
-</body>\r
-</html>\r
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
- <title>{#xhtmlxtras_dlg.attribs_title}</title>\r
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
- <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
- <script type="text/javascript" src="../../utils/editable_selects.js"></script>\r
- <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
- <script type="text/javascript" src="js/attributes.js"></script>\r
- <link rel="stylesheet" type="text/css" href="css/attributes.css" />\r
- <base target="_self" />\r
-</head>\r
-<body style="display: none">\r
-<form onsubmit="insertAction();return false;" action="#">\r
- <div class="tabs">\r
- <ul>\r
- <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.attribute_attrib_tab}</a></span></li>\r
- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.attribute_events_tab}</a></span></li>\r
- </ul>\r
- </div>\r
-\r
- <div class="panel_wrapper">\r
- <div id="general_panel" class="panel current">\r
- <fieldset>\r
- <legend>{#xhtmlxtras_dlg.attribute_attrib_tab}</legend>\r
- <table border="0" cellpadding="0" cellspacing="4">\r
- <tr>\r
- <td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td> \r
- <td><input id="title" name="title" type="text" value="" class="mceFocus" /></td> \r
- </tr>\r
- <tr>\r
- <td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td> \r
- <td><input id="id" name="id" type="text" value="" /></td> \r
- </tr>\r
- <tr>\r
- <td><label id="classlabel" for="classlist">{#class_name}</label></td>\r
- <td>\r
- <select id="classlist" name="classlist" class="mceEditableSelect">\r
- <option value="" selected>{#not_set}</option>\r
- </select>\r
- </td>\r
- </tr>\r
- <tr>\r
- <td class="label"><label id="stylelabel" for="class">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td> \r
- <td><input id="style" name="style" type="text" value="" /></td> \r
- </tr>\r
- <tr>\r
- <td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td> \r
- <td>\r
- <select id="dir" name="dir"> \r
- <option value="">{#not_set}</option> \r
- <option value="ltr">{#xhtmlxtras_dlg.option_ltr}</option> \r
- <option value="rtl">{#xhtmlxtras_dlg.option_rtl}</option> \r
- </select>\r
- </td> \r
- </tr>\r
- <tr>\r
- <td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td> \r
- <td>\r
- <input id="lang" name="lang" type="text" value="" />\r
- </td> \r
- </tr>\r
- <tr>\r
- <td><label id="tabindexlabel" for="tabindex">{#xhtmlxtras_dlg.attribute_label_tabindex}</label></td>\r
- <td><input type="text" id="tabindex" name="tabindex" value="" /></td>\r
- </tr>\r
-\r
- <tr>\r
- <td><label id="accesskeylabel" for="accesskey">{#xhtmlxtras_dlg.attribute_label_accesskey}</label></td>\r
- <td><input type="text" id="accesskey" name="accesskey" value="" /></td>\r
- </tr>\r
- </table>\r
- </fieldset>\r
- </div>\r
- <div id="events_panel" class="panel">\r
- <fieldset>\r
- <legend>{#xhtmlxtras_dlg.attribute_events_tab}</legend>\r
-\r
- <table border="0" cellpadding="0" cellspacing="4">\r
- <tr>\r
- <td class="label"><label for="onfocus">onfocus</label>:</td> \r
- <td><input id="onfocus" name="onfocus" type="text" value="" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onblur">onblur</label>:</td> \r
- <td><input id="onblur" name="onblur" type="text" value="" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onclick">onclick</label>:</td> \r
- <td><input id="onclick" name="onclick" type="text" value="" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="ondblclick">ondblclick</label>:</td> \r
- <td><input id="ondblclick" name="ondblclick" type="text" value="" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onmousedown">onmousedown</label>:</td> \r
- <td><input id="onmousedown" name="onmousedown" type="text" value="" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onmouseup">onmouseup</label>:</td> \r
- <td><input id="onmouseup" name="onmouseup" type="text" value="" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onmouseover">onmouseover</label>:</td> \r
- <td><input id="onmouseover" name="onmouseover" type="text" value="" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onmousemove">onmousemove</label>:</td> \r
- <td><input id="onmousemove" name="onmousemove" type="text" value="" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onmouseout">onmouseout</label>:</td> \r
- <td><input id="onmouseout" name="onmouseout" type="text" value="" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onkeypress">onkeypress</label>:</td> \r
- <td><input id="onkeypress" name="onkeypress" type="text" value="" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onkeydown">onkeydown</label>:</td> \r
- <td><input id="onkeydown" name="onkeydown" type="text" value="" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onkeyup">onkeyup</label>:</td> \r
- <td><input id="onkeyup" name="onkeyup" type="text" value="" /></td> \r
- </tr>\r
- </table>\r
- </fieldset>\r
- </div>\r
- </div>\r
- <div class="mceActionPanel">\r
- <div style="float: left">\r
- <input type="submit" id="insert" name="insert" value="{#insert}" />\r
- </div>\r
- <div style="float: right">\r
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
- </div>\r
- </div>\r
-\r
-</form>\r
-</body>\r
-</html>\r
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
- <title>{#xhtmlxtras_dlg.title_cite_element}</title>\r
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
- <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
- <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
- <script type="text/javascript" src="../../utils/editable_selects.js"></script>\r
- <script type="text/javascript" src="js/element_common.js"></script>\r
- <script type="text/javascript" src="js/cite.js"></script>\r
- <link rel="stylesheet" type="text/css" href="css/popup.css" />\r
- <base target="_self" />\r
-</head>\r
-<body style="display: none">\r
-<form onsubmit="insertCite();return false;" action="#">\r
- <div class="tabs">\r
- <ul>\r
- <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.general_tab}</a></span></li>\r
- <!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.events_tab}</a></span></li> -->\r
- </ul>\r
- </div>\r
-\r
- <div class="panel_wrapper">\r
- <div id="general_panel" class="panel current">\r
- <fieldset>\r
- <legend>{#xhtmlxtras_dlg.fieldset_attrib_tab}</legend>\r
- <table border="0" cellpadding="0" cellspacing="4">\r
- <tr>\r
- <td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td> \r
- <td><input id="title" name="title" type="text" value="" class="field mceFocus" /></td> \r
- </tr>\r
- <tr>\r
- <td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td> \r
- <td><input id="id" name="id" type="text" value="" class="field" /></td> \r
- </tr>\r
- <tr>\r
- <td class="label"><label id="classlabel" for="class">{#xhtmlxtras_dlg.attribute_label_class}</label>:</td> \r
- <td>\r
- <select id="class" name="class" class="field mceEditableSelect">\r
- <option value="">{#not_set}</option> \r
- </select>\r
- </td>\r
- </tr>\r
- <tr>\r
- <td class="label"><label id="stylelabel" for="class">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td> \r
- <td><input id="style" name="style" type="text" value="" class="field" /></td> \r
- </tr>\r
- <tr>\r
- <td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td> \r
- <td>\r
- <select id="dir" name="dir" class="field"> \r
- <option value="">{#not_set}</option> \r
- <option value="ltr">{#xhtmlxtras_dlg.attribute_option_ltr}</option> \r
- <option value="rtl">{#xhtmlxtras_dlg.attribute_option_rtl}</option> \r
- </select>\r
- </td> \r
- </tr>\r
- <tr>\r
- <td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td> \r
- <td>\r
- <input id="lang" name="lang" type="text" value="" class="field" />\r
- </td> \r
- </tr>\r
- </table>\r
- </fieldset>\r
- </div>\r
- <div id="events_panel" class="panel">\r
- <fieldset>\r
- <legend>{#xhtmlxtras_dlg.fieldset_events_tab}</legend>\r
-\r
- <table border="0" cellpadding="0" cellspacing="4">\r
- <tr>\r
- <td class="label"><label for="onfocus">onfocus</label>:</td> \r
- <td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onblur">onblur</label>:</td> \r
- <td><input id="onblur" name="onblur" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onclick">onclick</label>:</td> \r
- <td><input id="onclick" name="onclick" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="ondblclick">ondblclick</label>:</td> \r
- <td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onmousedown">onmousedown</label>:</td> \r
- <td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onmouseup">onmouseup</label>:</td> \r
- <td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onmouseover">onmouseover</label>:</td> \r
- <td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onmousemove">onmousemove</label>:</td> \r
- <td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onmouseout">onmouseout</label>:</td> \r
- <td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onkeypress">onkeypress</label>:</td> \r
- <td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onkeydown">onkeydown</label>:</td> \r
- <td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onkeyup">onkeyup</label>:</td> \r
- <td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td> \r
- </tr>\r
- </table>\r
- </fieldset>\r
- </div>\r
- </div>\r
- <div class="mceActionPanel">\r
- <div style="float: left">\r
- <input type="submit" id="insert" name="insert" value="{#update}" />\r
- </div>\r
- <div style="float: left">\r
- <input type="button" id="remove" name="remove" class="button" value="{#xhtmlxtras_dlg.remove}" onclick="removeCite();" style="display: none;" />\r
- </div>\r
- <div style="float: right">\r
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
- </div>\r
- </div>\r
-\r
-</form>\r
-</body>\r
-</html>\r
+++ /dev/null
-.panel_wrapper div.current {\r
- height: 290px;\r
-}\r
-\r
-#id, #style, #title, #dir, #hreflang, #lang, #classlist, #tabindex, #accesskey {\r
- width: 200px;\r
-}\r
-\r
-#events_panel input {\r
- width: 200px;\r
-}\r
+++ /dev/null
-input.field, select.field {width:200px;}\r
-input.picker {width:179px; margin-left: 5px;}\r
-input.disabled {border-color:#F2F2F2;}\r
-img.picker {vertical-align:text-bottom; cursor:pointer;}\r
-h1 {padding: 0 0 5px 0;}\r
-.panel_wrapper div.current {height:160px;}\r
-#xhtmlxtrasdel .panel_wrapper div.current, #xhtmlxtrasins .panel_wrapper div.current {height: 230px;}\r
-a.browse span {display:block; width:20px; height:20px; background:url('../../../themes/advanced/img/icons.gif') -140px -20px;}\r
-#datetime {width:180px;}\r
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
- <title>{#xhtmlxtras_dlg.title_del_element}</title>\r
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
- <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
- <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
- <script type="text/javascript" src="../../utils/editable_selects.js"></script>\r
- <script type="text/javascript" src="js/element_common.js"></script>\r
- <script type="text/javascript" src="js/del.js"></script>\r
- <link rel="stylesheet" type="text/css" href="css/popup.css" />\r
- <base target="_self" />\r
-</head>\r
-<body id="xhtmlxtrasins" style="display: none">\r
-<form onsubmit="insertDel();return false;" action="#">\r
- <div class="tabs">\r
- <ul>\r
- <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.general_tab}</a></span></li>\r
- <!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.events_tab}</a></span></li> -->\r
- </ul>\r
- </div>\r
-\r
- <div class="panel_wrapper">\r
- <div id="general_panel" class="panel current">\r
- <fieldset>\r
- <legend>{#xhtmlxtras_dlg.fieldset_general_tab}</legend>\r
- <table border="0" cellpadding="0" cellspacing="4">\r
- <tr>\r
- <td class="label"><label id="datetimelabel" for="datetime">{#xhtmlxtras_dlg.attribute_label_datetime}</label>:</td>\r
- <td>\r
- <table border="0" cellspacing="0" cellpadding="0">\r
- <tr> \r
- <td><input id="datetime" name="datetime" type="text" value="" maxlength="19" class="field mceFocus" /></td> \r
- <td><a href="javascript:insertDateTime('datetime');" onmousedown="return false;" class="browse"><span class="datetime" alt="{#xhtmlxtras_dlg.insert_date}" title="{#xhtmlxtras_dlg.insert_date}"></span></a></td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
- <tr>\r
- <td class="label"><label id="citelabel" for="cite">{#xhtmlxtras_dlg.attribute_label_cite}</label>:</td>\r
- <td><input id="cite" name="cite" type="text" value="" class="field" /></td> \r
- </tr>\r
- </table>\r
- </fieldset>\r
- <fieldset>\r
- <legend>{#xhtmlxtras_dlg.fieldset_attrib_tab}</legend>\r
- <table border="0" cellpadding="0" cellspacing="4">\r
- <tr>\r
- <td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td> \r
- <td><input id="title" name="title" type="text" value="" class="field" /></td> \r
- </tr>\r
- <tr>\r
- <td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td> \r
- <td><input id="id" name="id" type="text" value="" class="field" /></td> \r
- </tr>\r
- <tr>\r
- <td class="label"><label id="classlabel" for="class">{#xhtmlxtras_dlg.attribute_label_class}</label>:</td> \r
- <td>\r
- <select id="class" name="class" class="field mceEditableSelect">\r
- <option value="">{#not_set}</option> \r
- </select>\r
- </td>\r
- </tr>\r
- <tr>\r
- <td class="label"><label id="stylelabel" for="class">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td> \r
- <td><input id="style" name="style" type="text" value="" class="field" /></td> \r
- </tr>\r
- <tr>\r
- <td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td> \r
- <td>\r
- <select id="dir" name="dir" class="field"> \r
- <option value="">{#not_set}</option> \r
- <option value="ltr">{#xhtmlxtras_dlg.attribute_option_ltr}</option> \r
- <option value="rtl">{#xhtmlxtras_dlg.attribute_option_rtl}</option> \r
- </select>\r
- </td> \r
- </tr>\r
- <tr>\r
- <td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td> \r
- <td>\r
- <input id="lang" name="lang" type="text" value="" class="field" />\r
- </td> \r
- </tr>\r
- </table>\r
- </fieldset>\r
- </div>\r
- <div id="events_panel" class="panel">\r
- <fieldset>\r
- <legend>{#xhtmlxtras_dlg.fieldset_events_tab}</legend>\r
-\r
- <table border="0" cellpadding="0" cellspacing="4">\r
- <tr>\r
- <td class="label"><label for="onfocus">onfocus</label>:</td> \r
- <td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onblur">onblur</label>:</td> \r
- <td><input id="onblur" name="onblur" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onclick">onclick</label>:</td> \r
- <td><input id="onclick" name="onclick" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="ondblclick">ondblclick</label>:</td> \r
- <td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onmousedown">onmousedown</label>:</td> \r
- <td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onmouseup">onmouseup</label>:</td> \r
- <td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onmouseover">onmouseover</label>:</td> \r
- <td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onmousemove">onmousemove</label>:</td> \r
- <td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onmouseout">onmouseout</label>:</td> \r
- <td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onkeypress">onkeypress</label>:</td> \r
- <td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onkeydown">onkeydown</label>:</td> \r
- <td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onkeyup">onkeyup</label>:</td> \r
- <td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td> \r
- </tr>\r
- </table>\r
- </fieldset>\r
- </div>\r
- </div>\r
- <div class="mceActionPanel">\r
- <div style="float: left">\r
- <input type="submit" id="insert" name="insert" value="{#update}" />\r
- </div>\r
- <div style="float: left">\r
- <input type="button" id="remove" name="remove" class="button" value="{#xhtmlxtras_dlg.remove}" onclick="removeDel();" style="display: none;" />\r
- </div>\r
- <div style="float: right">\r
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
- </div>\r
- </div>\r
-\r
-</form>\r
-\r
-</body>\r
-</html>\r
+++ /dev/null
-(function(){tinymce.create('tinymce.plugins.XHTMLXtrasPlugin',{init:function(ed,url){ed.addCommand('mceCite',function(){ed.windowManager.open({file:url+'/cite.htm',width:350+parseInt(ed.getLang('xhtmlxtras.cite_delta_width',0)),height:250+parseInt(ed.getLang('xhtmlxtras.cite_delta_height',0)),inline:1},{plugin_url:url});});ed.addCommand('mceAcronym',function(){ed.windowManager.open({file:url+'/acronym.htm',width:350+parseInt(ed.getLang('xhtmlxtras.acronym_delta_width',0)),height:250+parseInt(ed.getLang('xhtmlxtras.acronym_delta_width',0)),inline:1},{plugin_url:url});});ed.addCommand('mceAbbr',function(){ed.windowManager.open({file:url+'/abbr.htm',width:350+parseInt(ed.getLang('xhtmlxtras.abbr_delta_width',0)),height:250+parseInt(ed.getLang('xhtmlxtras.abbr_delta_width',0)),inline:1},{plugin_url:url});});ed.addCommand('mceDel',function(){ed.windowManager.open({file:url+'/del.htm',width:340+parseInt(ed.getLang('xhtmlxtras.del_delta_width',0)),height:310+parseInt(ed.getLang('xhtmlxtras.del_delta_width',0)),inline:1},{plugin_url:url});});ed.addCommand('mceIns',function(){ed.windowManager.open({file:url+'/ins.htm',width:340+parseInt(ed.getLang('xhtmlxtras.ins_delta_width',0)),height:310+parseInt(ed.getLang('xhtmlxtras.ins_delta_width',0)),inline:1},{plugin_url:url});});ed.addCommand('mceAttributes',function(){ed.windowManager.open({file:url+'/attributes.htm',width:380,height:370,inline:1},{plugin_url:url});});ed.addButton('cite',{title:'xhtmlxtras.cite_desc',cmd:'mceCite'});ed.addButton('acronym',{title:'xhtmlxtras.acronym_desc',cmd:'mceAcronym'});ed.addButton('abbr',{title:'xhtmlxtras.abbr_desc',cmd:'mceAbbr'});ed.addButton('del',{title:'xhtmlxtras.del_desc',cmd:'mceDel'});ed.addButton('ins',{title:'xhtmlxtras.ins_desc',cmd:'mceIns'});ed.addButton('attribs',{title:'xhtmlxtras.attribs_desc',cmd:'mceAttributes'});if(tinymce.isIE){function fix(ed,o){if(o.set){o.content=o.content.replace(/<abbr([^>]+)>/gi,'<html:abbr $1>');o.content=o.content.replace(/<\/abbr>/gi,'</html:abbr>');}};ed.onBeforeSetContent.add(fix);ed.onPostProcess.add(fix);}ed.onNodeChange.add(function(ed,cm,n,co){n=ed.dom.getParent(n,'CITE,ACRONYM,ABBR,DEL,INS');cm.setDisabled('cite',co);cm.setDisabled('acronym',co);cm.setDisabled('abbr',co);cm.setDisabled('del',co);cm.setDisabled('ins',co);cm.setDisabled('attribs',n&&n.nodeName=='BODY');if(n){cm.setDisabled(n.nodeName.toLowerCase(),0);cm.setActive(n.nodeName.toLowerCase(),1);}else{cm.setActive('cite',0);cm.setActive('acronym',0);cm.setActive('abbr',0);cm.setActive('del',0);cm.setActive('ins',0);}});},getInfo:function(){return{longname:'XHTML Xtras Plugin',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/xhtmlxtras',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('xhtmlxtras',tinymce.plugins.XHTMLXtrasPlugin);})();
\ No newline at end of file
+++ /dev/null
-/**\r
- * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $\r
- *\r
- * @author Moxiecode\r
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-(function() {\r
- tinymce.create('tinymce.plugins.XHTMLXtrasPlugin', {\r
- init : function(ed, url) {\r
- // Register commands\r
- ed.addCommand('mceCite', function() {\r
- ed.windowManager.open({\r
- file : url + '/cite.htm',\r
- width : 350 + parseInt(ed.getLang('xhtmlxtras.cite_delta_width', 0)),\r
- height : 250 + parseInt(ed.getLang('xhtmlxtras.cite_delta_height', 0)),\r
- inline : 1\r
- }, {\r
- plugin_url : url\r
- });\r
- });\r
-\r
- ed.addCommand('mceAcronym', function() {\r
- ed.windowManager.open({\r
- file : url + '/acronym.htm',\r
- width : 350 + parseInt(ed.getLang('xhtmlxtras.acronym_delta_width', 0)),\r
- height : 250 + parseInt(ed.getLang('xhtmlxtras.acronym_delta_width', 0)),\r
- inline : 1\r
- }, {\r
- plugin_url : url\r
- });\r
- });\r
-\r
- ed.addCommand('mceAbbr', function() {\r
- ed.windowManager.open({\r
- file : url + '/abbr.htm',\r
- width : 350 + parseInt(ed.getLang('xhtmlxtras.abbr_delta_width', 0)),\r
- height : 250 + parseInt(ed.getLang('xhtmlxtras.abbr_delta_width', 0)),\r
- inline : 1\r
- }, {\r
- plugin_url : url\r
- });\r
- });\r
-\r
- ed.addCommand('mceDel', function() {\r
- ed.windowManager.open({\r
- file : url + '/del.htm',\r
- width : 340 + parseInt(ed.getLang('xhtmlxtras.del_delta_width', 0)),\r
- height : 310 + parseInt(ed.getLang('xhtmlxtras.del_delta_width', 0)),\r
- inline : 1\r
- }, {\r
- plugin_url : url\r
- });\r
- });\r
-\r
- ed.addCommand('mceIns', function() {\r
- ed.windowManager.open({\r
- file : url + '/ins.htm',\r
- width : 340 + parseInt(ed.getLang('xhtmlxtras.ins_delta_width', 0)),\r
- height : 310 + parseInt(ed.getLang('xhtmlxtras.ins_delta_width', 0)),\r
- inline : 1\r
- }, {\r
- plugin_url : url\r
- });\r
- });\r
-\r
- ed.addCommand('mceAttributes', function() {\r
- ed.windowManager.open({\r
- file : url + '/attributes.htm',\r
- width : 380,\r
- height : 370,\r
- inline : 1\r
- }, {\r
- plugin_url : url\r
- });\r
- });\r
-\r
- // Register buttons\r
- ed.addButton('cite', {title : 'xhtmlxtras.cite_desc', cmd : 'mceCite'});\r
- ed.addButton('acronym', {title : 'xhtmlxtras.acronym_desc', cmd : 'mceAcronym'});\r
- ed.addButton('abbr', {title : 'xhtmlxtras.abbr_desc', cmd : 'mceAbbr'});\r
- ed.addButton('del', {title : 'xhtmlxtras.del_desc', cmd : 'mceDel'});\r
- ed.addButton('ins', {title : 'xhtmlxtras.ins_desc', cmd : 'mceIns'});\r
- ed.addButton('attribs', {title : 'xhtmlxtras.attribs_desc', cmd : 'mceAttributes'});\r
-\r
- if (tinymce.isIE) {\r
- function fix(ed, o) {\r
- if (o.set) {\r
- o.content = o.content.replace(/<abbr([^>]+)>/gi, '<html:abbr $1>');\r
- o.content = o.content.replace(/<\/abbr>/gi, '</html:abbr>');\r
- }\r
- };\r
-\r
- ed.onBeforeSetContent.add(fix);\r
- ed.onPostProcess.add(fix);\r
- }\r
-\r
- ed.onNodeChange.add(function(ed, cm, n, co) {\r
- n = ed.dom.getParent(n, 'CITE,ACRONYM,ABBR,DEL,INS');\r
-\r
- cm.setDisabled('cite', co);\r
- cm.setDisabled('acronym', co);\r
- cm.setDisabled('abbr', co);\r
- cm.setDisabled('del', co);\r
- cm.setDisabled('ins', co);\r
- cm.setDisabled('attribs', n && n.nodeName == 'BODY');\r
-\r
- if (n) {\r
- cm.setDisabled(n.nodeName.toLowerCase(), 0);\r
- cm.setActive(n.nodeName.toLowerCase(), 1);\r
- } else {\r
- cm.setActive('cite', 0);\r
- cm.setActive('acronym', 0);\r
- cm.setActive('abbr', 0);\r
- cm.setActive('del', 0);\r
- cm.setActive('ins', 0);\r
- }\r
- });\r
- },\r
-\r
- getInfo : function() {\r
- return {\r
- longname : 'XHTML Xtras Plugin',\r
- author : 'Moxiecode Systems AB',\r
- authorurl : 'http://tinymce.moxiecode.com',\r
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/xhtmlxtras',\r
- version : tinymce.majorVersion + "." + tinymce.minorVersion\r
- };\r
- }\r
- });\r
-\r
- // Register plugin\r
- tinymce.PluginManager.add('xhtmlxtras', tinymce.plugins.XHTMLXtrasPlugin);\r
-})();
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
- <title>{#xhtmlxtras_dlg.title_ins_element}</title>\r
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
- <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
- <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
- <script type="text/javascript" src="../../utils/editable_selects.js"></script>\r
- <script type="text/javascript" src="js/element_common.js"></script>\r
- <script type="text/javascript" src="js/ins.js"></script>\r
- <link rel="stylesheet" type="text/css" href="css/popup.css" />\r
- <base target="_self" />\r
-</head>\r
-<body id="xhtmlxtrasins" style="display: none">\r
-<form onsubmit="insertIns();return false;" action="#">\r
- <div class="tabs">\r
- <ul>\r
- <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.general_tab}</a></span></li>\r
- <!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.events_tab}</a></span></li> -->\r
- </ul>\r
- </div>\r
-\r
- <div class="panel_wrapper">\r
- <div id="general_panel" class="panel current">\r
- <fieldset>\r
- <legend>{#xhtmlxtras_dlg.fieldset_general_tab}</legend>\r
- <table border="0" cellpadding="0" cellspacing="4">\r
- <tr>\r
- <td class="label"><label id="datetimelabel" for="datetime">{#xhtmlxtras_dlg.attribute_label_datetime}</label>:</td> \r
- <td>\r
- <table border="0" cellspacing="0" cellpadding="0">\r
- <tr> \r
- <td><input id="datetime" name="datetime" type="text" value="" maxlength="19" class="field mceFocus" /></td> \r
- <td><a href="javascript:insertDateTime('datetime');" onmousedown="return false;" class="browse"><span class="datetime" alt="{#xhtmlxtras_dlg.insert_date}" title="{#xhtmlxtras_dlg.insert_date}"></span></a></td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
- <tr>\r
- <td class="label"><label id="citelabel" for="cite">{#xhtmlxtras_dlg.attribute_label_cite}</label>:</td> \r
- <td><input id="cite" name="cite" type="text" value="" class="field" /></td> \r
- </tr>\r
- </table>\r
- </fieldset>\r
- <fieldset>\r
- <legend>{#xhtmlxtras_dlg.fieldset_attrib_tab}</legend>\r
- <table border="0" cellpadding="0" cellspacing="4">\r
- <tr>\r
- <td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td> \r
- <td><input id="title" name="title" type="text" value="" class="field" /></td> \r
- </tr>\r
- <tr>\r
- <td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td> \r
- <td><input id="id" name="id" type="text" value="" class="field" /></td> \r
- </tr>\r
- <tr>\r
- <td class="label"><label id="classlabel" for="class">{#xhtmlxtras_dlg.attribute_label_class}</label>:</td> \r
- <td>\r
- <select id="class" name="class" class="field mceEditableSelect">\r
- <option value="">{#not_set}</option> \r
- </select>\r
- </td>\r
- </tr>\r
- <tr>\r
- <td class="label"><label id="stylelabel" for="class">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td> \r
- <td><input id="style" name="style" type="text" value="" class="field" /></td> \r
- </tr>\r
- <tr>\r
- <td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td> \r
- <td>\r
- <select id="dir" name="dir" class="field"> \r
- <option value="">{#not_set}</option> \r
- <option value="ltr">{#xhtmlxtras_dlg.attribute_option_ltr}</option> \r
- <option value="rtl">{#xhtmlxtras_dlg.attribute_option_rtl}</option> \r
- </select>\r
- </td> \r
- </tr>\r
- <tr>\r
- <td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td> \r
- <td>\r
- <input id="lang" name="lang" type="text" value="" class="field" />\r
- </td> \r
- </tr>\r
- </table>\r
- </fieldset>\r
- </div>\r
- <div id="events_panel" class="panel">\r
- <fieldset>\r
- <legend>{#xhtmlxtras_dlg.fieldset_events_tab}</legend>\r
-\r
- <table border="0" cellpadding="0" cellspacing="4">\r
- <tr>\r
- <td class="label"><label for="onfocus">onfocus</label>:</td> \r
- <td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onblur">onblur</label>:</td> \r
- <td><input id="onblur" name="onblur" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onclick">onclick</label>:</td> \r
- <td><input id="onclick" name="onclick" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="ondblclick">ondblclick</label>:</td> \r
- <td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onmousedown">onmousedown</label>:</td> \r
- <td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onmouseup">onmouseup</label>:</td> \r
- <td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onmouseover">onmouseover</label>:</td> \r
- <td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onmousemove">onmousemove</label>:</td> \r
- <td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onmouseout">onmouseout</label>:</td> \r
- <td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onkeypress">onkeypress</label>:</td> \r
- <td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onkeydown">onkeydown</label>:</td> \r
- <td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td> \r
- </tr>\r
-\r
- <tr>\r
- <td class="label"><label for="onkeyup">onkeyup</label>:</td> \r
- <td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td> \r
- </tr>\r
- </table>\r
- </fieldset>\r
- </div>\r
- </div>\r
- <div class="mceActionPanel">\r
- <div style="float: left">\r
- <input type="submit" id="insert" name="insert" value="{#update}" />\r
- </div>\r
- <div style="float: left">\r
- <input type="button" id="remove" name="remove" class="button" value="{#xhtmlxtras_dlg.remove}" onclick="removeIns();" style="display: none;" />\r
- </div>\r
- <div style="float: right">\r
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
- </div>\r
- </div>\r
-\r
-</form>\r
-\r
-</body>\r
-</html>\r
+++ /dev/null
- /**\r
- * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $\r
- *\r
- * @author Moxiecode - based on work by Andrew Tetlaw\r
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-function init() {\r
- SXE.initElementDialog('abbr');\r
- if (SXE.currentAction == "update") {\r
- SXE.showRemoveButton();\r
- }\r
-}\r
-\r
-function insertAbbr() {\r
- SXE.insertElement(tinymce.isIE ? 'html:abbr' : 'abbr');\r
- tinyMCEPopup.close();\r
-}\r
-\r
-function removeAbbr() {\r
- SXE.removeElement('abbr');\r
- tinyMCEPopup.close();\r
-}\r
-\r
-tinyMCEPopup.onInit.add(init);\r
+++ /dev/null
- /**\r
- * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $\r
- *\r
- * @author Moxiecode - based on work by Andrew Tetlaw\r
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-function init() {\r
- SXE.initElementDialog('acronym');\r
- if (SXE.currentAction == "update") {\r
- SXE.showRemoveButton();\r
- }\r
-}\r
-\r
-function insertAcronym() {\r
- SXE.insertElement('acronym');\r
- tinyMCEPopup.close();\r
-}\r
-\r
-function removeAcronym() {\r
- SXE.removeElement('acronym');\r
- tinyMCEPopup.close();\r
-}\r
-\r
-tinyMCEPopup.onInit.add(init);\r
+++ /dev/null
- /**\r
- * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $\r
- *\r
- * @author Moxiecode - based on work by Andrew Tetlaw\r
- * @copyright Copyright © 2004-2006, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-function init() {\r
- tinyMCEPopup.resizeToInnerSize();\r
- var inst = tinyMCEPopup.editor;\r
- var dom = inst.dom;\r
- var elm = inst.selection.getNode();\r
- var f = document.forms[0];\r
- var onclick = dom.getAttrib(elm, 'onclick');\r
-\r
- setFormValue('title', dom.getAttrib(elm, 'title'));\r
- setFormValue('id', dom.getAttrib(elm, 'id'));\r
- setFormValue('style', dom.getAttrib(elm, "style"));\r
- setFormValue('dir', dom.getAttrib(elm, 'dir'));\r
- setFormValue('lang', dom.getAttrib(elm, 'lang'));\r
- setFormValue('tabindex', dom.getAttrib(elm, 'tabindex', typeof(elm.tabindex) != "undefined" ? elm.tabindex : ""));\r
- setFormValue('accesskey', dom.getAttrib(elm, 'accesskey', typeof(elm.accesskey) != "undefined" ? elm.accesskey : ""));\r
- setFormValue('onfocus', dom.getAttrib(elm, 'onfocus'));\r
- setFormValue('onblur', dom.getAttrib(elm, 'onblur'));\r
- setFormValue('onclick', onclick);\r
- setFormValue('ondblclick', dom.getAttrib(elm, 'ondblclick'));\r
- setFormValue('onmousedown', dom.getAttrib(elm, 'onmousedown'));\r
- setFormValue('onmouseup', dom.getAttrib(elm, 'onmouseup'));\r
- setFormValue('onmouseover', dom.getAttrib(elm, 'onmouseover'));\r
- setFormValue('onmousemove', dom.getAttrib(elm, 'onmousemove'));\r
- setFormValue('onmouseout', dom.getAttrib(elm, 'onmouseout'));\r
- setFormValue('onkeypress', dom.getAttrib(elm, 'onkeypress'));\r
- setFormValue('onkeydown', dom.getAttrib(elm, 'onkeydown'));\r
- setFormValue('onkeyup', dom.getAttrib(elm, 'onkeyup'));\r
- className = dom.getAttrib(elm, 'class');\r
-\r
- addClassesToList('classlist', 'advlink_styles');\r
- selectByValue(f, 'classlist', className, true);\r
-\r
- TinyMCE_EditableSelects.init();\r
-}\r
-\r
-function setFormValue(name, value) {\r
- if(value && document.forms[0].elements[name]){\r
- document.forms[0].elements[name].value = value;\r
- }\r
-}\r
-\r
-function insertAction() {\r
- var inst = tinyMCEPopup.editor;\r
- var elm = inst.selection.getNode();\r
-\r
- tinyMCEPopup.execCommand("mceBeginUndoLevel"); \r
- setAllAttribs(elm);\r
- tinyMCEPopup.execCommand("mceEndUndoLevel");\r
- tinyMCEPopup.close();\r
-}\r
-\r
-function setAttrib(elm, attrib, value) {\r
- var formObj = document.forms[0];\r
- var valueElm = formObj.elements[attrib.toLowerCase()];\r
- var inst = tinyMCEPopup.editor;\r
- var dom = inst.dom;\r
-\r
- if (typeof(value) == "undefined" || value == null) {\r
- value = "";\r
-\r
- if (valueElm)\r
- value = valueElm.value;\r
- }\r
-\r
- if (value != "") {\r
- dom.setAttrib(elm, attrib.toLowerCase(), value);\r
-\r
- if (attrib == "style")\r
- attrib = "style.cssText";\r
-\r
- if (attrib.substring(0, 2) == 'on')\r
- value = 'return true;' + value;\r
-\r
- if (attrib == "class")\r
- attrib = "className";\r
-\r
- elm[attrib]=value;\r
- } else\r
- elm.removeAttribute(attrib);\r
-}\r
-\r
-function setAllAttribs(elm) {\r
- var f = document.forms[0];\r
-\r
- setAttrib(elm, 'title');\r
- setAttrib(elm, 'id');\r
- setAttrib(elm, 'style');\r
- setAttrib(elm, 'class', getSelectValue(f, 'classlist'));\r
- setAttrib(elm, 'dir');\r
- setAttrib(elm, 'lang');\r
- setAttrib(elm, 'tabindex');\r
- setAttrib(elm, 'accesskey');\r
- setAttrib(elm, 'onfocus');\r
- setAttrib(elm, 'onblur');\r
- setAttrib(elm, 'onclick');\r
- setAttrib(elm, 'ondblclick');\r
- setAttrib(elm, 'onmousedown');\r
- setAttrib(elm, 'onmouseup');\r
- setAttrib(elm, 'onmouseover');\r
- setAttrib(elm, 'onmousemove');\r
- setAttrib(elm, 'onmouseout');\r
- setAttrib(elm, 'onkeypress');\r
- setAttrib(elm, 'onkeydown');\r
- setAttrib(elm, 'onkeyup');\r
-\r
- // Refresh in old MSIE\r
-// if (tinyMCE.isMSIE5)\r
-// elm.outerHTML = elm.outerHTML;\r
-}\r
-\r
-function insertAttribute() {\r
- tinyMCEPopup.close();\r
-}\r
-\r
-tinyMCEPopup.onInit.add(init);\r
-tinyMCEPopup.requireLangPack();\r
+++ /dev/null
- /**\r
- * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $\r
- *\r
- * @author Moxiecode - based on work by Andrew Tetlaw\r
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-function init() {\r
- SXE.initElementDialog('cite');\r
- if (SXE.currentAction == "update") {\r
- SXE.showRemoveButton();\r
- }\r
-}\r
-\r
-function insertCite() {\r
- SXE.insertElement('cite');\r
- tinyMCEPopup.close();\r
-}\r
-\r
-function removeCite() {\r
- SXE.removeElement('cite');\r
- tinyMCEPopup.close();\r
-}\r
-\r
-tinyMCEPopup.onInit.add(init);\r
+++ /dev/null
- /**\r
- * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $\r
- *\r
- * @author Moxiecode - based on work by Andrew Tetlaw\r
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-function init() {\r
- SXE.initElementDialog('del');\r
- if (SXE.currentAction == "update") {\r
- setFormValue('datetime', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'datetime'));\r
- setFormValue('cite', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'cite'));\r
- SXE.showRemoveButton();\r
- }\r
-}\r
-\r
-function setElementAttribs(elm) {\r
- setAllCommonAttribs(elm);\r
- setAttrib(elm, 'datetime');\r
- setAttrib(elm, 'cite');\r
-}\r
-\r
-function insertDel() {\r
- var elm = tinyMCEPopup.editor.dom.getParent(SXE.focusElement, 'DEL');\r
-\r
- tinyMCEPopup.execCommand('mceBeginUndoLevel');\r
- if (elm == null) {\r
- var s = SXE.inst.selection.getContent();\r
- if(s.length > 0) {\r
- tinyMCEPopup.execCommand('mceInsertContent', false, '<del id="#sxe_temp_del#">' + s + '</del>');\r
- var elementArray = tinymce.grep(SXE.inst.dom.select('del'), function(n) {return n.id == '#sxe_temp_del#';});\r
- for (var i=0; i<elementArray.length; i++) {\r
- var elm = elementArray[i];\r
- setElementAttribs(elm);\r
- }\r
- }\r
- } else {\r
- setElementAttribs(elm);\r
- }\r
- tinyMCEPopup.editor.nodeChanged();\r
- tinyMCEPopup.execCommand('mceEndUndoLevel');\r
- tinyMCEPopup.close();\r
-}\r
-\r
-function removeDel() {\r
- SXE.removeElement('del');\r
- tinyMCEPopup.close();\r
-}\r
-\r
-tinyMCEPopup.onInit.add(init);\r
+++ /dev/null
- /**\r
- * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $\r
- *\r
- * @author Moxiecode - based on work by Andrew Tetlaw\r
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-tinyMCEPopup.requireLangPack();\r
-\r
-function initCommonAttributes(elm) {\r
- var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;\r
-\r
- // Setup form data for common element attributes\r
- setFormValue('title', dom.getAttrib(elm, 'title'));\r
- setFormValue('id', dom.getAttrib(elm, 'id'));\r
- selectByValue(formObj, 'class', dom.getAttrib(elm, 'class'), true);\r
- setFormValue('style', dom.getAttrib(elm, 'style'));\r
- selectByValue(formObj, 'dir', dom.getAttrib(elm, 'dir'));\r
- setFormValue('lang', dom.getAttrib(elm, 'lang'));\r
- setFormValue('onfocus', dom.getAttrib(elm, 'onfocus'));\r
- setFormValue('onblur', dom.getAttrib(elm, 'onblur'));\r
- setFormValue('onclick', dom.getAttrib(elm, 'onclick'));\r
- setFormValue('ondblclick', dom.getAttrib(elm, 'ondblclick'));\r
- setFormValue('onmousedown', dom.getAttrib(elm, 'onmousedown'));\r
- setFormValue('onmouseup', dom.getAttrib(elm, 'onmouseup'));\r
- setFormValue('onmouseover', dom.getAttrib(elm, 'onmouseover'));\r
- setFormValue('onmousemove', dom.getAttrib(elm, 'onmousemove'));\r
- setFormValue('onmouseout', dom.getAttrib(elm, 'onmouseout'));\r
- setFormValue('onkeypress', dom.getAttrib(elm, 'onkeypress'));\r
- setFormValue('onkeydown', dom.getAttrib(elm, 'onkeydown'));\r
- setFormValue('onkeyup', dom.getAttrib(elm, 'onkeyup'));\r
-}\r
-\r
-function setFormValue(name, value) {\r
- if(document.forms[0].elements[name]) document.forms[0].elements[name].value = value;\r
-}\r
-\r
-function insertDateTime(id) {\r
- document.getElementById(id).value = getDateTime(new Date(), "%Y-%m-%dT%H:%M:%S");\r
-}\r
-\r
-function getDateTime(d, fmt) {\r
- fmt = fmt.replace("%D", "%m/%d/%y");\r
- fmt = fmt.replace("%r", "%I:%M:%S %p");\r
- fmt = fmt.replace("%Y", "" + d.getFullYear());\r
- fmt = fmt.replace("%y", "" + d.getYear());\r
- fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2));\r
- fmt = fmt.replace("%d", addZeros(d.getDate(), 2));\r
- fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2));\r
- fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2));\r
- fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2));\r
- fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1));\r
- fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM"));\r
- fmt = fmt.replace("%%", "%");\r
-\r
- return fmt;\r
-}\r
-\r
-function addZeros(value, len) {\r
- var i;\r
-\r
- value = "" + value;\r
-\r
- if (value.length < len) {\r
- for (i=0; i<(len-value.length); i++)\r
- value = "0" + value;\r
- }\r
-\r
- return value;\r
-}\r
-\r
-function selectByValue(form_obj, field_name, value, add_custom, ignore_case) {\r
- if (!form_obj || !form_obj.elements[field_name])\r
- return;\r
-\r
- var sel = form_obj.elements[field_name];\r
-\r
- var found = false;\r
- for (var i=0; i<sel.options.length; i++) {\r
- var option = sel.options[i];\r
-\r
- if (option.value == value || (ignore_case && option.value.toLowerCase() == value.toLowerCase())) {\r
- option.selected = true;\r
- found = true;\r
- } else\r
- option.selected = false;\r
- }\r
-\r
- if (!found && add_custom && value != '') {\r
- var option = new Option('Value: ' + value, value);\r
- option.selected = true;\r
- sel.options[sel.options.length] = option;\r
- }\r
-\r
- return found;\r
-}\r
-\r
-function setAttrib(elm, attrib, value) {\r
- var formObj = document.forms[0];\r
- var valueElm = formObj.elements[attrib.toLowerCase()];\r
- tinyMCEPopup.editor.dom.setAttrib(elm, attrib, value || valueElm.value);\r
-}\r
-\r
-function setAllCommonAttribs(elm) {\r
- setAttrib(elm, 'title');\r
- setAttrib(elm, 'id');\r
- setAttrib(elm, 'class');\r
- setAttrib(elm, 'style');\r
- setAttrib(elm, 'dir');\r
- setAttrib(elm, 'lang');\r
- /*setAttrib(elm, 'onfocus');\r
- setAttrib(elm, 'onblur');\r
- setAttrib(elm, 'onclick');\r
- setAttrib(elm, 'ondblclick');\r
- setAttrib(elm, 'onmousedown');\r
- setAttrib(elm, 'onmouseup');\r
- setAttrib(elm, 'onmouseover');\r
- setAttrib(elm, 'onmousemove');\r
- setAttrib(elm, 'onmouseout');\r
- setAttrib(elm, 'onkeypress');\r
- setAttrib(elm, 'onkeydown');\r
- setAttrib(elm, 'onkeyup');*/\r
-}\r
-\r
-SXE = {\r
- currentAction : "insert",\r
- inst : tinyMCEPopup.editor,\r
- updateElement : null\r
-}\r
-\r
-SXE.focusElement = SXE.inst.selection.getNode();\r
-\r
-SXE.initElementDialog = function(element_name) {\r
- addClassesToList('class', 'xhtmlxtras_styles');\r
- TinyMCE_EditableSelects.init();\r
-\r
- element_name = element_name.toLowerCase();\r
- var elm = SXE.inst.dom.getParent(SXE.focusElement, element_name.toUpperCase());\r
- if (elm != null && elm.nodeName.toUpperCase() == element_name.toUpperCase()) {\r
- SXE.currentAction = "update";\r
- }\r
-\r
- if (SXE.currentAction == "update") {\r
- initCommonAttributes(elm);\r
- SXE.updateElement = elm;\r
- }\r
-\r
- document.forms[0].insert.value = tinyMCEPopup.getLang(SXE.currentAction, 'Insert', true); \r
-}\r
-\r
-SXE.insertElement = function(element_name) {\r
- var elm = SXE.inst.dom.getParent(SXE.focusElement, element_name.toUpperCase()), h, tagName;\r
-\r
- tinyMCEPopup.execCommand('mceBeginUndoLevel');\r
- if (elm == null) {\r
- var s = SXE.inst.selection.getContent();\r
- if(s.length > 0) {\r
- tagName = element_name;\r
-\r
- if (tinymce.isIE && element_name.indexOf('html:') == 0)\r
- element_name = element_name.substring(5).toLowerCase();\r
-\r
- h = '<' + tagName + ' id="#sxe_temp_' + element_name + '#">' + s + '</' + tagName + '>';\r
-\r
- tinyMCEPopup.execCommand('mceInsertContent', false, h);\r
-\r
- var elementArray = tinymce.grep(SXE.inst.dom.select(element_name), function(n) {return n.id == '#sxe_temp_' + element_name + '#';});\r
- for (var i=0; i<elementArray.length; i++) {\r
- var elm = elementArray[i];\r
-\r
- elm.id = '';\r
- elm.setAttribute('id', '');\r
- elm.removeAttribute('id');\r
-\r
- setAllCommonAttribs(elm);\r
- }\r
- }\r
- } else {\r
- setAllCommonAttribs(elm);\r
- }\r
- SXE.inst.nodeChanged();\r
- tinyMCEPopup.execCommand('mceEndUndoLevel');\r
-}\r
-\r
-SXE.removeElement = function(element_name){\r
- element_name = element_name.toLowerCase();\r
- elm = SXE.inst.dom.getParent(SXE.focusElement, element_name.toUpperCase());\r
- if(elm && elm.nodeName.toUpperCase() == element_name.toUpperCase()){\r
- tinyMCEPopup.execCommand('mceBeginUndoLevel');\r
- tinyMCE.execCommand('mceRemoveNode', false, elm);\r
- SXE.inst.nodeChanged();\r
- tinyMCEPopup.execCommand('mceEndUndoLevel');\r
- }\r
-}\r
-\r
-SXE.showRemoveButton = function() {\r
- document.getElementById("remove").style.display = 'block';\r
-}\r
-\r
-SXE.containsClass = function(elm,cl) {\r
- return (elm.className.indexOf(cl) > -1) ? true : false;\r
-}\r
-\r
-SXE.removeClass = function(elm,cl) {\r
- if(elm.className == null || elm.className == "" || !SXE.containsClass(elm,cl)) {\r
- return true;\r
- }\r
- var classNames = elm.className.split(" ");\r
- var newClassNames = "";\r
- for (var x = 0, cnl = classNames.length; x < cnl; x++) {\r
- if (classNames[x] != cl) {\r
- newClassNames += (classNames[x] + " ");\r
- }\r
- }\r
- elm.className = newClassNames.substring(0,newClassNames.length-1); //removes extra space at the end\r
-}\r
-\r
-SXE.addClass = function(elm,cl) {\r
- if(!SXE.containsClass(elm,cl)) elm.className ? elm.className += " " + cl : elm.className = cl;\r
- return true;\r
-}
\ No newline at end of file
+++ /dev/null
- /**\r
- * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $\r
- *\r
- * @author Moxiecode - based on work by Andrew Tetlaw\r
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-function init() {\r
- SXE.initElementDialog('ins');\r
- if (SXE.currentAction == "update") {\r
- setFormValue('datetime', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'datetime'));\r
- setFormValue('cite', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'cite'));\r
- SXE.showRemoveButton();\r
- }\r
-}\r
-\r
-function setElementAttribs(elm) {\r
- setAllCommonAttribs(elm);\r
- setAttrib(elm, 'datetime');\r
- setAttrib(elm, 'cite');\r
-}\r
-\r
-function insertIns() {\r
- var elm = tinyMCEPopup.editor.dom.getParent(SXE.focusElement, 'INS');\r
- tinyMCEPopup.execCommand('mceBeginUndoLevel');\r
- if (elm == null) {\r
- var s = SXE.inst.selection.getContent();\r
- if(s.length > 0) {\r
- tinyMCEPopup.execCommand('mceInsertContent', false, '<ins id="#sxe_temp_ins#">' + s + '</ins>');\r
- var elementArray = tinymce.grep(SXE.inst.dom.select('ins'), function(n) {return n.id == '#sxe_temp_ins#';});\r
- for (var i=0; i<elementArray.length; i++) {\r
- var elm = elementArray[i];\r
- setElementAttribs(elm);\r
- }\r
- }\r
- } else {\r
- setElementAttribs(elm);\r
- }\r
- tinyMCEPopup.editor.nodeChanged();\r
- tinyMCEPopup.execCommand('mceEndUndoLevel');\r
- tinyMCEPopup.close();\r
-}\r
-\r
-function removeIns() {\r
- SXE.removeElement('ins');\r
- tinyMCEPopup.close();\r
-}\r
-\r
-tinyMCEPopup.onInit.add(init);\r
+++ /dev/null
-tinyMCE.addI18n('en.xhtmlxtras_dlg',{\r
-attribute_label_title:"Title",\r
-attribute_label_id:"ID",\r
-attribute_label_class:"Class",\r
-attribute_label_style:"Style",\r
-attribute_label_cite:"Cite",\r
-attribute_label_datetime:"Date/Time",\r
-attribute_label_langdir:"Text Direction",\r
-attribute_option_ltr:"Left to right",\r
-attribute_option_rtl:"Right to left",\r
-attribute_label_langcode:"Language",\r
-attribute_label_tabindex:"TabIndex",\r
-attribute_label_accesskey:"AccessKey",\r
-attribute_events_tab:"Events",\r
-attribute_attrib_tab:"Attributes",\r
-general_tab:"General",\r
-attrib_tab:"Attributes",\r
-events_tab:"Events",\r
-fieldset_general_tab:"General Settings",\r
-fieldset_attrib_tab:"Element Attributes",\r
-fieldset_events_tab:"Element Events",\r
-title_ins_element:"Insertion Element",\r
-title_del_element:"Deletion Element",\r
-title_acronym_element:"Acronym Element",\r
-title_abbr_element:"Abbreviation Element",\r
-title_cite_element:"Citation Element",\r
-remove:"Remove",\r
-insert_date:"Insert current date/time",\r
-option_ltr:"Left to right",\r
-option_rtl:"Right to left",\r
-attribs_title:"Insert/Edit Attributes"\r
-});
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
- <title>{#advanced_dlg.about_title}</title>\r
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
- <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
- <script type="text/javascript" src="js/about.js"></script>\r
-</head>\r
-<body id="about" style="display: none">\r
- <div class="tabs">\r
- <ul>\r
- <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advanced_dlg.about_general}</a></span></li>\r
- <li id="help_tab" style="display:none"><span><a href="javascript:mcTabs.displayTab('help_tab','help_panel');" onmousedown="return false;">{#advanced_dlg.about_help}</a></span></li>\r
- <li id="plugins_tab"><span><a href="javascript:mcTabs.displayTab('plugins_tab','plugins_panel');" onmousedown="return false;">{#advanced_dlg.about_plugins}</a></span></li>\r
- </ul>\r
- </div>\r
-\r
- <div class="panel_wrapper">\r
- <div id="general_panel" class="panel current">\r
- <h3>{#advanced_dlg.about_title}</h3>\r
- <p>Version: <span id="version"></span> (<span id="date"></span>)</p>\r
- <p>TinyMCE is a platform independent web based Javascript HTML WYSIWYG editor control released as Open Source under <a href="../../license.txt" target="_blank">LGPL</a>\r
- by Moxiecode Systems AB. It has the ability to convert HTML TEXTAREA fields or other HTML elements to editor instances.</p>\r
- <p>Copyright © 2003-2008, <a href="http://www.moxiecode.com" target="_blank">Moxiecode Systems AB</a>, All rights reserved.</p>\r
- <p>For more information about this software visit the <a href="http://tinymce.moxiecode.com" target="_blank">TinyMCE website</a>.</p>\r
-\r
- <div id="buttoncontainer">\r
- <a href="http://www.moxiecode.com" target="_blank"><img src="http://tinymce.moxiecode.com/images/gotmoxie.png" alt="Got Moxie?" border="0" /></a>\r
- <a href="http://sourceforge.net/projects/tinymce/" target="_blank"><img src="http://sourceforge.net/sflogo.php?group_id=103281" alt="Hosted By Sourceforge" border="0" /></a>\r
- <a href="http://www.freshmeat.net/projects/tinymce" target="_blank"><img src="http://tinymce.moxiecode.com/images/fm.gif" alt="Also on freshmeat" border="0" /></a>\r
- </div>\r
- </div>\r
-\r
- <div id="plugins_panel" class="panel">\r
- <div id="pluginscontainer">\r
- <h3>{#advanced_dlg.about_loaded}</h3>\r
-\r
- <div id="plugintablecontainer">\r
- </div>\r
-\r
- <p> </p>\r
- </div>\r
- </div>\r
-\r
- <div id="help_panel" class="panel noscroll" style="overflow: visible;">\r
- <div id="iframecontainer"></div>\r
- </div>\r
- </div>\r
-\r
- <div class="mceActionPanel">\r
- <div style="float: right">\r
- <input type="button" id="cancel" name="cancel" value="{#close}" onclick="tinyMCEPopup.close();" />\r
- </div>\r
- </div>\r
-</body>\r
-</html>\r
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
- <title>{#advanced_dlg.anchor_title}</title>\r
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
- <script type="text/javascript" src="js/anchor.js"></script>\r
- <base target="_self" />\r
-</head>\r
-<body style="display: none">\r
-<form onsubmit="AnchorDialog.update();return false;" action="#">\r
- <table border="0" cellpadding="4" cellspacing="0">\r
- <tr>\r
- <td colspan="2" class="title">{#advanced_dlg.anchor_title}</td>\r
- </tr>\r
- <tr>\r
- <td nowrap="nowrap">{#advanced_dlg.anchor_name}:</td>\r
- <td><input name="anchorName" type="text" class="mceFocus" id="anchorName" value="" style="width: 200px" /></td>\r
- </tr>\r
- </table>\r
-\r
- <div class="mceActionPanel">\r
- <div style="float: left">\r
- <input type="submit" id="insert" name="insert" value="{#update}" />\r
- </div>\r
-\r
- <div style="float: right">\r
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
- </div>\r
- </div>\r
-</form>\r
-</body>\r
-</html>\r
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
- <title>{#advanced_dlg.charmap_title}</title>\r
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />\r
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
- <script type="text/javascript" src="js/charmap.js"></script>\r
- <base target="_self" />\r
-</head>\r
-<body id="charmap" style="display:none">\r
-<table align="center" border="0" cellspacing="0" cellpadding="2">\r
- <tr>\r
- <td colspan="2" class="title">{#advanced_dlg.charmap_title}</td>\r
- </tr>\r
- <tr>\r
- <td id="charmapView" rowspan="2" align="left" valign="top">\r
- <!-- Chars will be rendered here -->\r
- </td>\r
- <td width="100" align="center" valign="top">\r
- <table border="0" cellpadding="0" cellspacing="0" width="100" style="height:100px">\r
- <tr>\r
- <td id="codeV"> </td>\r
- </tr>\r
- <tr>\r
- <td id="codeN"> </td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
- <tr>\r
- <td valign="bottom" style="padding-bottom: 3px;">\r
- <table width="100" align="center" border="0" cellpadding="2" cellspacing="0">\r
- <tr>\r
- <td align="center" style="border-left: 1px solid #666699; border-top: 1px solid #666699; border-right: 1px solid #666699;">HTML-Code</td>\r
- </tr>\r
- <tr>\r
- <td style="font-size: 16px; font-weight: bold; border-left: 1px solid #666699; border-bottom: 1px solid #666699; border-right: 1px solid #666699;" id="codeA" align="center"> </td>\r
- </tr>\r
- <tr>\r
- <td style="font-size: 1px;"> </td>\r
- </tr>\r
- <tr>\r
- <td align="center" style="border-left: 1px solid #666699; border-top: 1px solid #666699; border-right: 1px solid #666699;">NUM-Code</td>\r
- </tr>\r
- <tr>\r
- <td style="font-size: 16px; font-weight: bold; border-left: 1px solid #666699; border-bottom: 1px solid #666699; border-right: 1px solid #666699;" id="codeB" align="center"> </td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
-</table>\r
-\r
-</body>\r
-</html>\r
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
- <title>{#advanced_dlg.colorpicker_title}</title>\r
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
- <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
- <script type="text/javascript" src="js/color_picker.js"></script>\r
- <base target="_self" />\r
-</head>\r
-<body id="colorpicker" style="display: none">\r
-<form onsubmit="insertAction();return false" action="#">\r
- <div class="tabs">\r
- <ul>\r
- <li id="picker_tab" class="current"><span><a href="javascript:mcTabs.displayTab('picker_tab','picker_panel');" onmousedown="return false;">{#advanced_dlg.colorpicker_picker_tab}</a></span></li>\r
- <li id="rgb_tab"><span><a href="javascript:;" onclick="generateWebColors();mcTabs.displayTab('rgb_tab','rgb_panel');" onmousedown="return false;">{#advanced_dlg.colorpicker_palette_tab}</a></span></li>\r
- <li id="named_tab"><span><a href="javascript:;" onclick="generateNamedColors();javascript:mcTabs.displayTab('named_tab','named_panel');" onmousedown="return false;">{#advanced_dlg.colorpicker_named_tab}</a></span></li>\r
- </ul>\r
- </div>\r
-\r
- <div class="panel_wrapper">\r
- <div id="picker_panel" class="panel current">\r
- <fieldset>\r
- <legend>{#advanced_dlg.colorpicker_picker_title}</legend>\r
- <div id="picker">\r
- <img id="colors" src="img/colorpicker.jpg" onclick="computeColor(event)" onmousedown="isMouseDown = true;return false;" onmouseup="isMouseDown = false;" onmousemove="if (isMouseDown && isMouseOver) computeColor(event); return false;" onmouseover="isMouseOver=true;" onmouseout="isMouseOver=false;" />\r
-\r
- <div id="light">\r
- <!-- Will be filled with divs -->\r
- </div>\r
-\r
- <br style="clear: both" />\r
- </div>\r
- </fieldset>\r
- </div>\r
-\r
- <div id="rgb_panel" class="panel">\r
- <fieldset>\r
- <legend>{#advanced_dlg.colorpicker_palette_title}</legend>\r
- <div id="webcolors">\r
- <!-- Gets filled with web safe colors-->\r
- </div>\r
-\r
- <br style="clear: both" />\r
- </fieldset>\r
- </div>\r
-\r
- <div id="named_panel" class="panel">\r
- <fieldset>\r
- <legend>{#advanced_dlg.colorpicker_named_title}</legend>\r
- <div id="namedcolors">\r
- <!-- Gets filled with named colors-->\r
- </div>\r
-\r
- <br style="clear: both" />\r
-\r
- <div id="colornamecontainer">\r
- {#advanced_dlg.colorpicker_name} <span id="colorname"></span>\r
- </div>\r
- </fieldset>\r
- </div>\r
- </div>\r
-\r
- <div class="mceActionPanel">\r
- <div style="float: left">\r
- <input type="submit" id="insert" name="insert" value="{#apply}" />\r
- </div>\r
-\r
- <div id="preview"></div>\r
-\r
- <div id="previewblock">\r
- <label for="color">{#advanced_dlg.colorpicker_color}</label> <input id="color" type="text" size="8" maxlength="8" class="text mceFocus" />\r
- </div>\r
- </div>\r
-</form>\r
-</body>\r
-</html>\r
+++ /dev/null
-/**
- * $Id: editor_template_src.js 901 2008-08-18 11:44:21Z spocke $
- *
- * @author Moxiecode
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.
- */
-
-(function() {
- var DOM = tinymce.DOM, Event = tinymce.dom.Event, extend = tinymce.extend, each = tinymce.each, Cookie = tinymce.util.Cookie, lastExtID, explode = tinymce.explode;
-
- // Tell it to load theme specific language pack(s)
- tinymce.ThemeManager.requireLangPack('advanced');
-
- tinymce.create('tinymce.themes.AdvancedTheme', {
- // Control name lookup, format: title, command
- controls : {
- bold : ['bold_desc', 'Bold'],
- italic : ['italic_desc', 'Italic'],
- underline : ['underline_desc', 'Underline'],
- strikethrough : ['striketrough_desc', 'Strikethrough'],
- justifyleft : ['justifyleft_desc', 'JustifyLeft'],
- justifycenter : ['justifycenter_desc', 'JustifyCenter'],
- justifyright : ['justifyright_desc', 'JustifyRight'],
- justifyfull : ['justifyfull_desc', 'JustifyFull'],
- bullist : ['bullist_desc', 'InsertUnorderedList'],
- numlist : ['numlist_desc', 'InsertOrderedList'],
- outdent : ['outdent_desc', 'Outdent'],
- indent : ['indent_desc', 'Indent'],
- cut : ['cut_desc', 'Cut'],
- copy : ['copy_desc', 'Copy'],
- paste : ['paste_desc', 'Paste'],
- undo : ['undo_desc', 'Undo'],
- redo : ['redo_desc', 'Redo'],
- link : ['link_desc', 'mceLink'],
- unlink : ['unlink_desc', 'unlink'],
- image : ['image_desc', 'mceImage'],
- cleanup : ['cleanup_desc', 'mceCleanup'],
- help : ['help_desc', 'mceHelp'],
- code : ['code_desc', 'mceCodeEditor'],
- hr : ['hr_desc', 'InsertHorizontalRule'],
- removeformat : ['removeformat_desc', 'RemoveFormat'],
- sub : ['sub_desc', 'subscript'],
- sup : ['sup_desc', 'superscript'],
- forecolor : ['forecolor_desc', 'ForeColor'],
- forecolorpicker : ['forecolor_desc', 'mceForeColor'],
- backcolor : ['backcolor_desc', 'HiliteColor'],
- backcolorpicker : ['backcolor_desc', 'mceBackColor'],
- charmap : ['charmap_desc', 'mceCharMap'],
- visualaid : ['visualaid_desc', 'mceToggleVisualAid'],
- anchor : ['anchor_desc', 'mceInsertAnchor'],
- newdocument : ['newdocument_desc', 'mceNewDocument'],
- blockquote : ['blockquote_desc', 'mceBlockQuote']
- },
-
- stateControls : ['bold', 'italic', 'underline', 'strikethrough', 'bullist', 'numlist', 'justifyleft', 'justifycenter', 'justifyright', 'justifyfull', 'sub', 'sup', 'blockquote'],
-
- init : function(ed, url) {
- var t = this, s, v;
-
- t.editor = ed;
- t.url = url;
- t.onResolveName = new tinymce.util.Dispatcher(this);
-
- // Default settings
- t.settings = s = extend({
- theme_advanced_path : true,
- theme_advanced_toolbar_location : 'bottom',
- theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect",
- theme_advanced_buttons2 : "bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code",
- theme_advanced_buttons3 : "hr,removeformat,visualaid,|,sub,sup,|,charmap",
- theme_advanced_blockformats : "p,address,pre,h1,h2,h3,h4,h5,h6",
- theme_advanced_toolbar_align : "center",
- theme_advanced_fonts : "Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats",
- theme_advanced_font_sizes : "1,2,3,4,5,6,7",
- theme_advanced_more_colors : 1,
- theme_advanced_row_height : 23,
- theme_advanced_resize_horizontal : 1,
- theme_advanced_resizing_use_cookie : 1,
- readonly : ed.settings.readonly
- }, ed.settings);
-
- if ((v = s.theme_advanced_path_location) && v != 'none')
- s.theme_advanced_statusbar_location = s.theme_advanced_path_location;
-
- if (s.theme_advanced_statusbar_location == 'none')
- s.theme_advanced_statusbar_location = 0;
-
- // Init editor
- ed.onInit.add(function() {
- ed.onNodeChange.add(t._nodeChanged, t);
-
- if (ed.settings.content_css !== false)
- ed.dom.loadCSS(ed.baseURI.toAbsolute("themes/advanced/skins/" + ed.settings.skin + "/content.css"));
- });
-
- ed.onSetProgressState.add(function(ed, b, ti) {
- var co, id = ed.id, tb;
-
- if (b) {
- t.progressTimer = setTimeout(function() {
- co = ed.getContainer();
- co = co.insertBefore(DOM.create('DIV', {style : 'position:relative'}), co.firstChild);
- tb = DOM.get(ed.id + '_tbl');
-
- DOM.add(co, 'div', {id : id + '_blocker', 'class' : 'mceBlocker', style : {width : tb.clientWidth + 2, height : tb.clientHeight + 2}});
- DOM.add(co, 'div', {id : id + '_progress', 'class' : 'mceProgress', style : {left : tb.clientWidth / 2, top : tb.clientHeight / 2}});
- }, ti || 0);
- } else {
- DOM.remove(id + '_blocker');
- DOM.remove(id + '_progress');
- clearTimeout(t.progressTimer);
- }
- });
-
- DOM.loadCSS(ed.baseURI.toAbsolute(s.editor_css || "themes/advanced/skins/" + ed.settings.skin + "/ui.css"));
-
- if (s.skin_variant)
- DOM.loadCSS(ed.baseURI.toAbsolute(s.editor_css || "themes/advanced/skins/" + ed.settings.skin + "/ui_" + s.skin_variant + ".css"));
- },
-
- createControl : function(n, cf) {
- var cd, c;
-
- if (c = cf.createControl(n))
- return c;
-
- switch (n) {
- case "styleselect":
- return this._createStyleSelect();
-
- case "formatselect":
- return this._createBlockFormats();
-
- case "fontselect":
- return this._createFontSelect();
-
- case "fontsizeselect":
- return this._createFontSizeSelect();
-
- case "forecolor":
- return this._createForeColorMenu();
-
- case "backcolor":
- return this._createBackColorMenu();
- }
-
- if ((cd = this.controls[n]))
- return cf.createButton(n, {title : "advanced." + cd[0], cmd : cd[1], ui : cd[2], value : cd[3]});
- },
-
- execCommand : function(cmd, ui, val) {
- var f = this['_' + cmd];
-
- if (f) {
- f.call(this, ui, val);
- return true;
- }
-
- return false;
- },
-
- _importClasses : function(e) {
- var ed = this.editor, c = ed.controlManager.get('styleselect');
-
- if (c.getLength() == 0) {
- each(ed.dom.getClasses(), function(o) {
- c.add(o['class'], o['class']);
- });
- }
- },
-
- _createStyleSelect : function(n) {
- var t = this, ed = t.editor, cf = ed.controlManager, c = cf.createListBox('styleselect', {
- title : 'advanced.style_select',
- onselect : function(v) {
- if (c.selectedValue === v) {
- ed.execCommand('mceSetStyleInfo', 0, {command : 'removeformat'});
- c.select();
- return false;
- } else
- ed.execCommand('mceSetCSSClass', 0, v);
- }
- });
-
- if (c) {
- each(ed.getParam('theme_advanced_styles', '', 'hash'), function(v, k) {
- if (v)
- c.add(t.editor.translate(k), v);
- });
-
- c.onPostRender.add(function(ed, n) {
- Event.add(n.id + '_text', 'focus', t._importClasses, t);
- Event.add(n.id + '_text', 'mousedown', t._importClasses, t);
- });
- }
-
- return c;
- },
-
- _createFontSelect : function() {
- var c, t = this, ed = t.editor;
-
- c = ed.controlManager.createListBox('fontselect', {title : 'advanced.fontdefault', cmd : 'FontName'});
- if (c) {
- each(ed.getParam('theme_advanced_fonts', t.settings.theme_advanced_fonts, 'hash'), function(v, k) {
- c.add(ed.translate(k), v, {style : v.indexOf('dings') == -1 ? 'font-family:' + v : ''});
- });
- }
-
- return c;
- },
-
- _createFontSizeSelect : function() {
- var t = this, ed = t.editor, c, lo = [
- "1 (8 pt)",
- "2 (10 pt)",
- "3 (12 pt)",
- "4 (14 pt)",
- "5 (18 pt)",
- "6 (24 pt)",
- "7 (36 pt)"
- ], fz = [8, 10, 12, 14, 18, 24, 36];
-
- c = ed.controlManager.createListBox('fontsizeselect', {title : 'advanced.font_size', cmd : 'FontSize'});
- if (c) {
- each(ed.getParam('theme_advanced_font_sizes', t.settings.theme_advanced_font_sizes, 'hash'), function(v, k) {
- // AVL: remove style height
- // c.add(k != v ? k : lo[parseInt(v) - 1], v, {'style' : 'font-size:' + fz[v - 1] + 'pt', 'class' : 'mceFontSize' + v});
- c.add(k != v ? k : lo[parseInt(v) - 1], v, {});
- });
- }
-
- return c;
- },
-
- _createBlockFormats : function() {
- var c, fmts = {
- p : 'advanced.paragraph',
- address : 'advanced.address',
- pre : 'advanced.pre',
- h1 : 'advanced.h1',
- h2 : 'advanced.h2',
- h3 : 'advanced.h3',
- h4 : 'advanced.h4',
- h5 : 'advanced.h5',
- h6 : 'advanced.h6',
- div : 'advanced.div',
- blockquote : 'advanced.blockquote',
- code : 'advanced.code',
- dt : 'advanced.dt',
- dd : 'advanced.dd',
- samp : 'advanced.samp'
- }, t = this;
-
- c = t.editor.controlManager.createListBox('formatselect', {title : 'advanced.block', cmd : 'FormatBlock'});
- if (c) {
- each(t.editor.getParam('theme_advanced_blockformats', t.settings.theme_advanced_blockformats, 'hash'), function(v, k) {
- c.add(t.editor.translate(k != v ? k : fmts[v]), v, {'class' : 'mce_formatPreview mce_' + v});
- });
- }
-
- return c;
- },
-
- _createForeColorMenu : function() {
- var c, t = this, s = t.settings, o = {}, v;
-
- if (s.theme_advanced_more_colors) {
- o.more_colors_func = function() {
- t._mceColorPicker(0, {
- color : c.value,
- func : function(co) {
- c.setColor(co);
- }
- });
- };
- }
-
- if (v = s.theme_advanced_text_colors)
- o.colors = v;
-
- o.title = 'advanced.forecolor_desc';
- o.cmd = 'ForeColor';
- o.scope = this;
-
- c = t.editor.controlManager.createColorSplitButton('forecolor', o);
-
- return c;
- },
-
- _createBackColorMenu : function() {
- var c, t = this, s = t.settings, o = {}, v;
-
- if (s.theme_advanced_more_colors) {
- o.more_colors_func = function() {
- t._mceColorPicker(0, {
- color : c.value,
- func : function(co) {
- c.setColor(co);
- }
- });
- };
- }
-
- if (v = s.theme_advanced_background_colors)
- o.colors = v;
-
- o.title = 'advanced.backcolor_desc';
- o.cmd = 'HiliteColor';
- o.scope = this;
-
- c = t.editor.controlManager.createColorSplitButton('backcolor', o);
-
- return c;
- },
-
- renderUI : function(o) {
- var n, ic, tb, t = this, ed = t.editor, s = t.settings, sc, p, nl;
-
- n = p = DOM.create('span', {id : ed.id + '_parent', 'class' : 'mceEditor ' + ed.settings.skin + 'Skin' + (s.skin_variant ? ' ' + ed.settings.skin + 'Skin' + t._ufirst(s.skin_variant) : '')});
-
- if (!DOM.boxModel)
- n = DOM.add(n, 'div', {'class' : 'mceOldBoxModel'});
-
- n = sc = DOM.add(n, 'table', {id : ed.id + '_tbl', 'class' : 'mceLayout', cellSpacing : 0, cellPadding : 0});
- n = tb = DOM.add(n, 'tbody');
-
- switch ((s.theme_advanced_layout_manager || '').toLowerCase()) {
- case "rowlayout":
- ic = t._rowLayout(s, tb, o);
- break;
-
- case "customlayout":
- ic = ed.execCallback("theme_advanced_custom_layout", s, tb, o, p);
- break;
-
- default:
- ic = t._simpleLayout(s, tb, o, p);
- }
-
- n = o.targetNode;
-
- // Add classes to first and last TRs
- nl = DOM.stdMode ? sc.getElementsByTagName('tr') : sc.rows; // Quick fix for IE 8
- DOM.addClass(nl[0], 'mceFirst');
- DOM.addClass(nl[nl.length - 1], 'mceLast');
-
- // Add classes to first and last TDs
- each(DOM.select('tr', tb), function(n) {
- DOM.addClass(n.firstChild, 'mceFirst');
- DOM.addClass(n.childNodes[n.childNodes.length - 1], 'mceLast');
- });
-
- if (DOM.get(s.theme_advanced_toolbar_container))
- DOM.get(s.theme_advanced_toolbar_container).appendChild(p);
- else
- DOM.insertAfter(p, n);
-
- Event.add(ed.id + '_path_row', 'click', function(e) {
- e = e.target;
-
- if (e.nodeName == 'A') {
- t._sel(e.className.replace(/^.*mcePath_([0-9]+).*$/, '$1'));
-
- return Event.cancel(e);
- }
- });
-/*
- if (DOM.get(ed.id + '_path_row')) {
- Event.add(ed.id + '_tbl', 'mouseover', function(e) {
- var re;
-
- e = e.target;
-
- if (e.nodeName == 'SPAN' && DOM.hasClass(e.parentNode, 'mceButton')) {
- re = DOM.get(ed.id + '_path_row');
- t.lastPath = re.innerHTML;
- DOM.setHTML(re, e.parentNode.title);
- }
- });
-
- Event.add(ed.id + '_tbl', 'mouseout', function(e) {
- if (t.lastPath) {
- DOM.setHTML(ed.id + '_path_row', t.lastPath);
- t.lastPath = 0;
- }
- });
- }
-*/
-
- if (!ed.getParam('accessibility_focus') || ed.getParam('tab_focus'))
- Event.add(DOM.add(p, 'a', {href : '#'}, '<!-- IE -->'), 'focus', function() {tinyMCE.get(ed.id).focus();});
-
- if (s.theme_advanced_toolbar_location == 'external')
- o.deltaHeight = 0;
-
- t.deltaHeight = o.deltaHeight;
- o.targetNode = null;
-
- return {
- iframeContainer : ic,
- editorContainer : ed.id + '_parent',
- sizeContainer : sc,
- deltaHeight : o.deltaHeight
- };
- },
-
- getInfo : function() {
- return {
- longname : 'Advanced theme',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- }
- },
-
- resizeBy : function(dw, dh) {
- var e = DOM.get(this.editor.id + '_tbl');
-
- this.resizeTo(e.clientWidth + dw, e.clientHeight + dh);
- },
-
- resizeTo : function(w, h) {
- var ed = this.editor, s = ed.settings, e = DOM.get(ed.id + '_tbl'), ifr = DOM.get(ed.id + '_ifr'), dh;
-
- // Boundery fix box
- w = Math.max(s.theme_advanced_resizing_min_width || 100, w);
- h = Math.max(s.theme_advanced_resizing_min_height || 100, h);
- w = Math.min(s.theme_advanced_resizing_max_width || 0xFFFF, w);
- h = Math.min(s.theme_advanced_resizing_max_height || 0xFFFF, h);
-
- // Calc difference between iframe and container
- dh = e.clientHeight - ifr.clientHeight;
-
- // Resize iframe and container
- DOM.setStyle(ifr, 'height', h - dh);
- DOM.setStyles(e, {width : w, height : h});
- },
-
- destroy : function() {
- var id = this.editor.id;
-
- Event.clear(id + '_resize');
- Event.clear(id + '_path_row');
- Event.clear(id + '_external_close');
- },
-
- // Internal functions
-
- _simpleLayout : function(s, tb, o, p) {
- var t = this, ed = t.editor, lo = s.theme_advanced_toolbar_location, sl = s.theme_advanced_statusbar_location, n, ic, etb, c;
-
- if (s.readonly) {
- n = DOM.add(tb, 'tr');
- n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'});
- return ic;
- }
-
- // Create toolbar container at top
- if (lo == 'top')
- t._addToolbars(tb, o);
-
- // Create external toolbar
- if (lo == 'external') {
- n = c = DOM.create('div', {style : 'position:relative'});
- n = DOM.add(n, 'div', {id : ed.id + '_external', 'class' : 'mceExternalToolbar'});
- DOM.add(n, 'a', {id : ed.id + '_external_close', href : 'javascript:;', 'class' : 'mceExternalClose'});
- n = DOM.add(n, 'table', {id : ed.id + '_tblext', cellSpacing : 0, cellPadding : 0});
- etb = DOM.add(n, 'tbody');
-
- if (p.firstChild.className == 'mceOldBoxModel')
- p.firstChild.appendChild(c);
- else
- p.insertBefore(c, p.firstChild);
-
- t._addToolbars(etb, o);
-
- ed.onMouseUp.add(function() {
- var e = DOM.get(ed.id + '_external');
- DOM.show(e);
-
- DOM.hide(lastExtID);
-
- var f = Event.add(ed.id + '_external_close', 'click', function() {
- DOM.hide(ed.id + '_external');
- Event.remove(ed.id + '_external_close', 'click', f);
- });
-
- DOM.show(e);
- DOM.setStyle(e, 'top', 0 - DOM.getRect(ed.id + '_tblext').h - 1);
-
- // Fixes IE rendering bug
- DOM.hide(e);
- DOM.show(e);
- e.style.filter = '';
-
- lastExtID = ed.id + '_external';
-
- e = null;
- });
- }
-
- if (sl == 'top')
- t._addStatusBar(tb, o);
-
- // Create iframe container
- if (!s.theme_advanced_toolbar_container) {
- n = DOM.add(tb, 'tr');
- n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'});
- }
-
- // Create toolbar container at bottom
- if (lo == 'bottom')
- t._addToolbars(tb, o);
-
- if (sl == 'bottom')
- t._addStatusBar(tb, o);
-
- return ic;
- },
-
- _rowLayout : function(s, tb, o) {
- var t = this, ed = t.editor, dc, da, cf = ed.controlManager, n, ic, to, a;
-
- dc = s.theme_advanced_containers_default_class || '';
- da = s.theme_advanced_containers_default_align || 'center';
-
- each(explode(s.theme_advanced_containers || ''), function(c, i) {
- var v = s['theme_advanced_container_' + c] || '';
-
- switch (v.toLowerCase()) {
- case 'mceeditor':
- n = DOM.add(tb, 'tr');
- n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'});
- break;
-
- case 'mceelementpath':
- t._addStatusBar(tb, o);
- break;
-
- default:
- a = (s['theme_advanced_container_' + c + '_align'] || da).toLowerCase();
- a = 'mce' + t._ufirst(a);
-
- n = DOM.add(DOM.add(tb, 'tr'), 'td', {
- 'class' : 'mceToolbar ' + (s['theme_advanced_container_' + c + '_class'] || dc) + ' ' + a || da
- });
-
- to = cf.createToolbar("toolbar" + i);
- t._addControls(v, to);
- DOM.setHTML(n, to.renderHTML());
- o.deltaHeight -= s.theme_advanced_row_height;
- }
- });
-
- return ic;
- },
-
- _addControls : function(v, tb) {
- var t = this, s = t.settings, di, cf = t.editor.controlManager;
-
- if (s.theme_advanced_disable && !t._disabled) {
- di = {};
-
- each(explode(s.theme_advanced_disable), function(v) {
- di[v] = 1;
- });
-
- t._disabled = di;
- } else
- di = t._disabled;
-
- each(explode(v), function(n) {
- var c;
-
- if (di && di[n])
- return;
-
- // Compatiblity with 2.x
- if (n == 'tablecontrols') {
- each(["table","|","row_props","cell_props","|","row_before","row_after","delete_row","|","col_before","col_after","delete_col","|","split_cells","merge_cells"], function(n) {
- n = t.createControl(n, cf);
-
- if (n)
- tb.add(n);
- });
-
- return;
- }
-
- c = t.createControl(n, cf);
-
- if (c)
- tb.add(c);
- });
- },
-
- _addToolbars : function(c, o) {
- var t = this, i, tb, ed = t.editor, s = t.settings, v, cf = ed.controlManager, di, n, h = [], a;
-
- a = s.theme_advanced_toolbar_align.toLowerCase();
- a = 'mce' + t._ufirst(a);
-
- n = DOM.add(DOM.add(c, 'tr'), 'td', {'class' : 'mceToolbar ' + a});
-
- if (!ed.getParam('accessibility_focus') || ed.getParam('tab_focus'))
- h.push(DOM.createHTML('a', {href : '#', onfocus : 'tinyMCE.get(\'' + ed.id + '\').focus();'}, '<!-- IE -->'));
-
- h.push(DOM.createHTML('a', {href : '#', accesskey : 'q', title : ed.getLang("advanced.toolbar_focus")}, '<!-- IE -->'));
-
- // Create toolbar and add the controls
- for (i=1; (v = s['theme_advanced_buttons' + i]); i++) {
- tb = cf.createToolbar("toolbar" + i, {'class' : 'mceToolbarRow' + i});
-
- if (s['theme_advanced_buttons' + i + '_add'])
- v += ',' + s['theme_advanced_buttons' + i + '_add'];
-
- if (s['theme_advanced_buttons' + i + '_add_before'])
- v = s['theme_advanced_buttons' + i + '_add_before'] + ',' + v;
-
- t._addControls(v, tb);
-
- //n.appendChild(n = tb.render());
- h.push(tb.renderHTML());
-
- o.deltaHeight -= s.theme_advanced_row_height;
- }
-
- h.push(DOM.createHTML('a', {href : '#', accesskey : 'z', title : ed.getLang("advanced.toolbar_focus"), onfocus : 'tinyMCE.getInstanceById(\'' + ed.id + '\').focus();'}, '<!-- IE -->'));
- DOM.setHTML(n, h.join(''));
- },
-
- _addStatusBar : function(tb, o) {
- var n, t = this, ed = t.editor, s = t.settings, r, mf, me, td;
-
- n = DOM.add(tb, 'tr');
- n = td = DOM.add(n, 'td', {'class' : 'mceStatusbar'});
- n = DOM.add(n, 'div', {id : ed.id + '_path_row'}, s.theme_advanced_path ? ed.translate('advanced.path') + ': ' : ' ');
- DOM.add(n, 'a', {href : '#', accesskey : 'x'});
-
- if (s.theme_advanced_resizing && !tinymce.isOldWebKit) {
- DOM.add(td, 'a', {id : ed.id + '_resize', href : 'javascript:;', onclick : "return false;", 'class' : 'mceResize'});
-
- if (s.theme_advanced_resizing_use_cookie) {
- ed.onPostRender.add(function() {
- var o = Cookie.getHash("TinyMCE_" + ed.id + "_size"), c = DOM.get(ed.id + '_tbl');
-
- if (!o)
- return;
-
- if (s.theme_advanced_resize_horizontal)
- c.style.width = Math.max(10, o.cw) + 'px';
-
- c.style.height = Math.max(10, o.ch) + 'px';
- DOM.get(ed.id + '_ifr').style.height = Math.max(10, parseInt(o.ch) + t.deltaHeight) + 'px';
- });
- }
-
- ed.onPostRender.add(function() {
- Event.add(ed.id + '_resize', 'mousedown', function(e) {
- var c, p, w, h, n, pa;
-
- // Measure container
- c = DOM.get(ed.id + '_tbl');
- w = c.clientWidth;
- h = c.clientHeight;
-
- miw = s.theme_advanced_resizing_min_width || 100;
- mih = s.theme_advanced_resizing_min_height || 100;
- maw = s.theme_advanced_resizing_max_width || 0xFFFF;
- mah = s.theme_advanced_resizing_max_height || 0xFFFF;
-
- // Setup placeholder
- p = DOM.add(DOM.get(ed.id + '_parent'), 'div', {'class' : 'mcePlaceHolder'});
- DOM.setStyles(p, {width : w, height : h});
-
- // Replace with placeholder
- DOM.hide(c);
- DOM.show(p);
-
- // Create internal resize obj
- r = {
- x : e.screenX,
- y : e.screenY,
- w : w,
- h : h,
- dx : null,
- dy : null
- };
-
- // Start listening
- mf = Event.add(DOM.doc, 'mousemove', function(e) {
- var w, h;
-
- // Calc delta values
- r.dx = e.screenX - r.x;
- r.dy = e.screenY - r.y;
-
- // Boundery fix box
- w = Math.max(miw, r.w + r.dx);
- h = Math.max(mih, r.h + r.dy);
- w = Math.min(maw, w);
- h = Math.min(mah, h);
-
- // Resize placeholder
- if (s.theme_advanced_resize_horizontal)
- p.style.width = w + 'px';
-
- p.style.height = h + 'px';
-
- return Event.cancel(e);
- });
-
- me = Event.add(DOM.doc, 'mouseup', function(e) {
- var ifr;
-
- // Stop listening
- Event.remove(DOM.doc, 'mousemove', mf);
- Event.remove(DOM.doc, 'mouseup', me);
-
- c.style.display = '';
- DOM.remove(p);
-
- if (r.dx === null)
- return;
-
- ifr = DOM.get(ed.id + '_ifr');
-
- if (s.theme_advanced_resize_horizontal)
- c.style.width = Math.max(10, r.w + r.dx) + 'px';
-
- c.style.height = Math.max(10, r.h + r.dy) + 'px';
- ifr.style.height = Math.max(10, ifr.clientHeight + r.dy) + 'px';
-
- if (s.theme_advanced_resizing_use_cookie) {
- Cookie.setHash("TinyMCE_" + ed.id + "_size", {
- cw : r.w + r.dx,
- ch : r.h + r.dy
- });
- }
- });
-
- return Event.cancel(e);
- });
- });
- }
-
- o.deltaHeight -= 21;
- n = tb = null;
- },
-
- _nodeChanged : function(ed, cm, n, co) {
- var t = this, p, de = 0, v, c, s = t.settings;
-
- if (s.readonly)
- return;
-
- tinymce.each(t.stateControls, function(c) {
- cm.setActive(c, ed.queryCommandState(t.controls[c][1]));
- });
-
- cm.setActive('visualaid', ed.hasVisual);
- cm.setDisabled('undo', !ed.undoManager.hasUndo() && !ed.typing);
- cm.setDisabled('redo', !ed.undoManager.hasRedo());
- cm.setDisabled('outdent', !ed.queryCommandState('Outdent'));
-
- p = DOM.getParent(n, 'A');
- if (c = cm.get('link')) {
- if (!p || !p.name) {
- c.setDisabled(!p && co);
- c.setActive(!!p);
- }
- }
-
- if (c = cm.get('unlink')) {
- c.setDisabled(!p && co);
- c.setActive(!!p && !p.name);
- }
-
- if (c = cm.get('anchor')) {
- c.setActive(!!p && p.name);
-
- if (tinymce.isWebKit) {
- p = DOM.getParent(n, 'IMG');
- c.setActive(!!p && DOM.getAttrib(p, 'mce_name') == 'a');
- }
- }
-
- p = DOM.getParent(n, 'IMG');
- if (c = cm.get('image'))
- c.setActive(!!p && n.className.indexOf('mceItem') == -1);
-
- if (c = cm.get('styleselect')) {
- if (n.className) {
- t._importClasses();
- c.select(n.className);
- } else
- c.select();
- }
-
- if (c = cm.get('formatselect')) {
- p = DOM.getParent(n, DOM.isBlock);
-
- if (p)
- c.select(p.nodeName.toLowerCase());
- }
-
- if (c = cm.get('fontselect'))
- c.select(ed.queryCommandValue('FontName'));
-
- if (c = cm.get('fontsizeselect'))
- c.select('' + ed.queryCommandValue('FontSize'));
-
- if (s.theme_advanced_path && s.theme_advanced_statusbar_location) {
- p = DOM.get(ed.id + '_path') || DOM.add(ed.id + '_path_row', 'span', {id : ed.id + '_path'});
- DOM.setHTML(p, '');
-
- ed.dom.getParent(n, function(n) {
- var na = n.nodeName.toLowerCase(), u, pi, ti = '';
-
- // Ignore non element and hidden elements
- if (n.nodeType != 1 || (DOM.hasClass(n, 'mceItemHidden') || DOM.hasClass(n, 'mceItemRemoved')))
- return;
-
- // Fake name
- if (v = DOM.getAttrib(n, 'mce_name'))
- na = v;
-
- // Handle prefix
- if (tinymce.isIE && n.scopeName !== 'HTML')
- na = n.scopeName + ':' + na;
-
- // Remove internal prefix
- na = na.replace(/mce\:/g, '');
-
- // Handle node name
- switch (na) {
- case 'b':
- na = 'strong';
- break;
-
- case 'i':
- na = 'em';
- break;
-
- case 'img':
- if (v = DOM.getAttrib(n, 'src'))
- ti += 'src: ' + v + ' ';
-
- break;
-
- case 'a':
- if (v = DOM.getAttrib(n, 'name')) {
- ti += 'name: ' + v + ' ';
- na += '#' + v;
- }
-
- if (v = DOM.getAttrib(n, 'href'))
- ti += 'href: ' + v + ' ';
-
- break;
-
- case 'font':
- if (s.convert_fonts_to_spans)
- na = 'span';
-
- if (v = DOM.getAttrib(n, 'face'))
- ti += 'font: ' + v + ' ';
-
- if (v = DOM.getAttrib(n, 'size'))
- ti += 'size: ' + v + ' ';
-
- if (v = DOM.getAttrib(n, 'color'))
- ti += 'color: ' + v + ' ';
-
- break;
-
- case 'span':
- if (v = DOM.getAttrib(n, 'style'))
- ti += 'style: ' + v + ' ';
-
- break;
- }
-
- if (v = DOM.getAttrib(n, 'id'))
- ti += 'id: ' + v + ' ';
-
- if (v = n.className) {
- v = v.replace(/(webkit-[\w\-]+|Apple-[\w\-]+|mceItem\w+|mceVisualAid)/g, '');
-
- if (v && v.indexOf('mceItem') == -1) {
- ti += 'class: ' + v + ' ';
-
- if (DOM.isBlock(n) || na == 'img' || na == 'span')
- na += '.' + v;
- }
- }
-
- na = na.replace(/(html:)/g, '');
- na = {name : na, node : n, title : ti};
- t.onResolveName.dispatch(t, na);
- ti = na.title;
- na = na.name;
-
- //u = "javascript:tinymce.EditorManager.get('" + ed.id + "').theme._sel('" + (de++) + "');";
- pi = DOM.create('a', {'href' : "javascript:;", onmousedown : "return false;", title : ti, 'class' : 'mcePath_' + (de++)}, na);
-
- if (p.hasChildNodes()) {
- p.insertBefore(DOM.doc.createTextNode(' \u00bb '), p.firstChild);
- p.insertBefore(pi, p.firstChild);
- } else
- p.appendChild(pi);
- }, ed.getBody());
- }
- },
-
- // Commands gets called by execCommand
-
- _sel : function(v) {
- this.editor.execCommand('mceSelectNodeDepth', false, v);
- },
-
- _mceInsertAnchor : function(ui, v) {
- var ed = this.editor;
-
- ed.windowManager.open({
- url : tinymce.baseURL + '/themes/advanced/anchor.htm',
- width : 320 + parseInt(ed.getLang('advanced.anchor_delta_width', 0)),
- height : 90 + parseInt(ed.getLang('advanced.anchor_delta_height', 0)),
- inline : true
- }, {
- theme_url : this.url
- });
- },
-
- _mceCharMap : function() {
- var ed = this.editor;
-
- ed.windowManager.open({
- url : tinymce.baseURL + '/themes/advanced/charmap.htm',
- width : 550 + parseInt(ed.getLang('advanced.charmap_delta_width', 0)),
- height : 250 + parseInt(ed.getLang('advanced.charmap_delta_height', 0)),
- inline : true
- }, {
- theme_url : this.url
- });
- },
-
- _mceHelp : function() {
- var ed = this.editor;
-
- ed.windowManager.open({
- url : tinymce.baseURL + '/themes/advanced/about.htm',
- width : 480,
- height : 380,
- inline : true
- }, {
- theme_url : this.url
- });
- },
-
- _mceColorPicker : function(u, v) {
- var ed = this.editor;
-
- v = v || {};
-
- ed.windowManager.open({
- url : tinymce.baseURL + '/themes/advanced/color_picker.htm',
- width : 375 + parseInt(ed.getLang('advanced.colorpicker_delta_width', 0)),
- height : 250 + parseInt(ed.getLang('advanced.colorpicker_delta_height', 0)),
- close_previous : false,
- inline : true
- }, {
- input_color : v.color,
- func : v.func,
- theme_url : this.url
- });
- },
-
- _mceCodeEditor : function(ui, val) {
- var ed = this.editor;
-
- ed.windowManager.open({
- url : tinymce.baseURL + '/themes/advanced/source_editor.htm',
- width : parseInt(ed.getParam("theme_advanced_source_editor_width", 720)),
- height : parseInt(ed.getParam("theme_advanced_source_editor_height", 580)),
- inline : true,
- resizable : true,
- maximizable : true
- }, {
- theme_url : this.url
- });
- },
-
- _mceImage : function(ui, val) {
- var ed = this.editor;
-
- // Internal image object like a flash placeholder
- if (ed.dom.getAttrib(ed.selection.getNode(), 'class').indexOf('mceItem') != -1)
- return;
-
- ed.windowManager.open({
- url : tinymce.baseURL + '/themes/advanced/image.htm',
- width : 355 + parseInt(ed.getLang('advanced.image_delta_width', 0)),
- height : 275 + parseInt(ed.getLang('advanced.image_delta_height', 0)),
- inline : true
- }, {
- theme_url : this.url
- });
- },
-
- _mceLink : function(ui, val) {
- var ed = this.editor;
-
- ed.windowManager.open({
- url : tinymce.baseURL + '/themes/advanced/link.htm',
- width : 310 + parseInt(ed.getLang('advanced.link_delta_width', 0)),
- height : 200 + parseInt(ed.getLang('advanced.link_delta_height', 0)),
- inline : true
- }, {
- theme_url : this.url
- });
- },
-
- _mceNewDocument : function() {
- var ed = this.editor;
-
- ed.windowManager.confirm('advanced.newdocument', function(s) {
- if (s)
- ed.execCommand('mceSetContent', false, '');
- });
- },
-
- _mceForeColor : function() {
- var t = this;
-
- this._mceColorPicker(0, {
- color: t.fgColor,
- func : function(co) {
- t.fgColor = co;
- t.editor.execCommand('ForeColor', false, co);
- }
- });
- },
-
- _mceBackColor : function() {
- var t = this;
-
- this._mceColorPicker(0, {
- color: t.bgColor,
- func : function(co) {
- t.bgColor = co;
- t.editor.execCommand('HiliteColor', false, co);
- }
- });
- },
-
- _ufirst : function(s) {
- return s.substring(0, 1).toUpperCase() + s.substring(1);
- }
- });
-
- tinymce.ThemeManager.add('advanced', tinymce.themes.AdvancedTheme);
-}());
\ No newline at end of file
+++ /dev/null
-/**\r
- * $Id: editor_template_src.js 901 2008-08-18 11:44:21Z spocke $\r
- *\r
- * @author Moxiecode\r
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-(function() {\r
- var DOM = tinymce.DOM, Event = tinymce.dom.Event, extend = tinymce.extend, each = tinymce.each, Cookie = tinymce.util.Cookie, lastExtID, explode = tinymce.explode;\r
-\r
- // Tell it to load theme specific language pack(s)\r
- tinymce.ThemeManager.requireLangPack('advanced');\r
-\r
- tinymce.create('tinymce.themes.AdvancedTheme', {\r
- // Control name lookup, format: title, command\r
- controls : {\r
- bold : ['bold_desc', 'Bold'],\r
- italic : ['italic_desc', 'Italic'],\r
- underline : ['underline_desc', 'Underline'],\r
- strikethrough : ['striketrough_desc', 'Strikethrough'],\r
- justifyleft : ['justifyleft_desc', 'JustifyLeft'],\r
- justifycenter : ['justifycenter_desc', 'JustifyCenter'],\r
- justifyright : ['justifyright_desc', 'JustifyRight'],\r
- justifyfull : ['justifyfull_desc', 'JustifyFull'],\r
- bullist : ['bullist_desc', 'InsertUnorderedList'],\r
- numlist : ['numlist_desc', 'InsertOrderedList'],\r
- outdent : ['outdent_desc', 'Outdent'],\r
- indent : ['indent_desc', 'Indent'],\r
- cut : ['cut_desc', 'Cut'],\r
- copy : ['copy_desc', 'Copy'],\r
- paste : ['paste_desc', 'Paste'],\r
- undo : ['undo_desc', 'Undo'],\r
- redo : ['redo_desc', 'Redo'],\r
- link : ['link_desc', 'mceLink'],\r
- unlink : ['unlink_desc', 'unlink'],\r
- image : ['image_desc', 'mceImage'],\r
- cleanup : ['cleanup_desc', 'mceCleanup'],\r
- help : ['help_desc', 'mceHelp'],\r
- code : ['code_desc', 'mceCodeEditor'],\r
- hr : ['hr_desc', 'InsertHorizontalRule'],\r
- removeformat : ['removeformat_desc', 'RemoveFormat'],\r
- sub : ['sub_desc', 'subscript'],\r
- sup : ['sup_desc', 'superscript'],\r
- forecolor : ['forecolor_desc', 'ForeColor'],\r
- forecolorpicker : ['forecolor_desc', 'mceForeColor'],\r
- backcolor : ['backcolor_desc', 'HiliteColor'],\r
- backcolorpicker : ['backcolor_desc', 'mceBackColor'],\r
- charmap : ['charmap_desc', 'mceCharMap'],\r
- visualaid : ['visualaid_desc', 'mceToggleVisualAid'],\r
- anchor : ['anchor_desc', 'mceInsertAnchor'],\r
- newdocument : ['newdocument_desc', 'mceNewDocument'],\r
- blockquote : ['blockquote_desc', 'mceBlockQuote']\r
- },\r
-\r
- stateControls : ['bold', 'italic', 'underline', 'strikethrough', 'bullist', 'numlist', 'justifyleft', 'justifycenter', 'justifyright', 'justifyfull', 'sub', 'sup', 'blockquote'],\r
-\r
- init : function(ed, url) {\r
- var t = this, s, v;\r
- \r
- t.editor = ed;\r
- t.url = url;\r
- t.onResolveName = new tinymce.util.Dispatcher(this);\r
-\r
- // Default settings\r
- t.settings = s = extend({\r
- theme_advanced_path : true,\r
- theme_advanced_toolbar_location : 'bottom',\r
- theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect",\r
- theme_advanced_buttons2 : "bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code",\r
- theme_advanced_buttons3 : "hr,removeformat,visualaid,|,sub,sup,|,charmap",\r
- theme_advanced_blockformats : "p,address,pre,h1,h2,h3,h4,h5,h6",\r
- theme_advanced_toolbar_align : "center",\r
- theme_advanced_fonts : "Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats",\r
- theme_advanced_font_sizes : "1,2,3,4,5,6,7",\r
- theme_advanced_more_colors : 1,\r
- theme_advanced_row_height : 23,\r
- theme_advanced_resize_horizontal : 1,\r
- theme_advanced_resizing_use_cookie : 1,\r
- readonly : ed.settings.readonly\r
- }, ed.settings);\r
-\r
- if ((v = s.theme_advanced_path_location) && v != 'none')\r
- s.theme_advanced_statusbar_location = s.theme_advanced_path_location;\r
-\r
- if (s.theme_advanced_statusbar_location == 'none')\r
- s.theme_advanced_statusbar_location = 0;\r
-\r
- // Init editor\r
- ed.onInit.add(function() {\r
- ed.onNodeChange.add(t._nodeChanged, t);\r
-\r
- if (ed.settings.content_css !== false)\r
- ed.dom.loadCSS(ed.baseURI.toAbsolute("themes/advanced/skins/" + ed.settings.skin + "/content.css"));\r
- });\r
-\r
- ed.onSetProgressState.add(function(ed, b, ti) {\r
- var co, id = ed.id, tb;\r
-\r
- if (b) {\r
- t.progressTimer = setTimeout(function() {\r
- co = ed.getContainer();\r
- co = co.insertBefore(DOM.create('DIV', {style : 'position:relative'}), co.firstChild);\r
- tb = DOM.get(ed.id + '_tbl');\r
-\r
- DOM.add(co, 'div', {id : id + '_blocker', 'class' : 'mceBlocker', style : {width : tb.clientWidth + 2, height : tb.clientHeight + 2}});\r
- DOM.add(co, 'div', {id : id + '_progress', 'class' : 'mceProgress', style : {left : tb.clientWidth / 2, top : tb.clientHeight / 2}});\r
- }, ti || 0);\r
- } else {\r
- DOM.remove(id + '_blocker');\r
- DOM.remove(id + '_progress');\r
- clearTimeout(t.progressTimer);\r
- }\r
- });\r
-\r
- DOM.loadCSS(ed.baseURI.toAbsolute(s.editor_css || "themes/advanced/skins/" + ed.settings.skin + "/ui.css"));\r
-\r
- if (s.skin_variant)\r
- DOM.loadCSS(ed.baseURI.toAbsolute(s.editor_css || "themes/advanced/skins/" + ed.settings.skin + "/ui_" + s.skin_variant + ".css"));\r
- },\r
-\r
- createControl : function(n, cf) {\r
- var cd, c;\r
-\r
- if (c = cf.createControl(n))\r
- return c;\r
-\r
- switch (n) {\r
- case "styleselect":\r
- return this._createStyleSelect();\r
-\r
- case "formatselect":\r
- return this._createBlockFormats();\r
-\r
- case "fontselect":\r
- return this._createFontSelect();\r
-\r
- case "fontsizeselect":\r
- return this._createFontSizeSelect();\r
-\r
- case "forecolor":\r
- return this._createForeColorMenu();\r
-\r
- case "backcolor":\r
- return this._createBackColorMenu();\r
- }\r
-\r
- if ((cd = this.controls[n]))\r
- return cf.createButton(n, {title : "advanced." + cd[0], cmd : cd[1], ui : cd[2], value : cd[3]});\r
- },\r
-\r
- execCommand : function(cmd, ui, val) {\r
- var f = this['_' + cmd];\r
-\r
- if (f) {\r
- f.call(this, ui, val);\r
- return true;\r
- }\r
-\r
- return false;\r
- },\r
-\r
- _importClasses : function(e) {\r
- var ed = this.editor, c = ed.controlManager.get('styleselect');\r
-\r
- if (c.getLength() == 0) {\r
- each(ed.dom.getClasses(), function(o) {\r
- c.add(o['class'], o['class']);\r
- });\r
- }\r
- },\r
-\r
- _createStyleSelect : function(n) {\r
- var t = this, ed = t.editor, cf = ed.controlManager, c = cf.createListBox('styleselect', {\r
- title : 'advanced.style_select',\r
- onselect : function(v) {\r
- if (c.selectedValue === v) {\r
- ed.execCommand('mceSetStyleInfo', 0, {command : 'removeformat'});\r
- c.select();\r
- return false;\r
- } else\r
- ed.execCommand('mceSetCSSClass', 0, v);\r
- }\r
- });\r
-\r
- if (c) {\r
- each(ed.getParam('theme_advanced_styles', '', 'hash'), function(v, k) {\r
- if (v)\r
- c.add(t.editor.translate(k), v);\r
- });\r
-\r
- c.onPostRender.add(function(ed, n) {\r
- Event.add(n.id + '_text', 'focus', t._importClasses, t);\r
- Event.add(n.id + '_text', 'mousedown', t._importClasses, t);\r
- });\r
- }\r
-\r
- return c;\r
- },\r
-\r
- _createFontSelect : function() {\r
- var c, t = this, ed = t.editor;\r
-\r
- c = ed.controlManager.createListBox('fontselect', {title : 'advanced.fontdefault', cmd : 'FontName'});\r
- if (c) {\r
- each(ed.getParam('theme_advanced_fonts', t.settings.theme_advanced_fonts, 'hash'), function(v, k) {\r
- c.add(ed.translate(k), v, {style : v.indexOf('dings') == -1 ? 'font-family:' + v : ''});\r
- });\r
- }\r
-\r
- return c;\r
- },\r
-\r
- _createFontSizeSelect : function() {\r
- var t = this, ed = t.editor, c, lo = [\r
- "1 (8 pt)",\r
- "2 (10 pt)",\r
- "3 (12 pt)",\r
- "4 (14 pt)",\r
- "5 (18 pt)",\r
- "6 (24 pt)",\r
- "7 (36 pt)"\r
- ], fz = [8, 10, 12, 14, 18, 24, 36];\r
-\r
- c = ed.controlManager.createListBox('fontsizeselect', {title : 'advanced.font_size', cmd : 'FontSize'});\r
- if (c) {\r
- each(ed.getParam('theme_advanced_font_sizes', t.settings.theme_advanced_font_sizes, 'hash'), function(v, k) {\r
- // AVL: remove style height \r
- // c.add(k != v ? k : lo[parseInt(v) - 1], v, {'style' : 'font-size:' + fz[v - 1] + 'pt', 'class' : 'mceFontSize' + v});\r
- c.add(k != v ? k : lo[parseInt(v) - 1], v, {});\r
- });\r
- }\r
-\r
- return c;\r
- },\r
-\r
- _createBlockFormats : function() {\r
- var c, fmts = {\r
- p : 'advanced.paragraph',\r
- address : 'advanced.address',\r
- pre : 'advanced.pre',\r
- h1 : 'advanced.h1',\r
- h2 : 'advanced.h2',\r
- h3 : 'advanced.h3',\r
- h4 : 'advanced.h4',\r
- h5 : 'advanced.h5',\r
- h6 : 'advanced.h6',\r
- div : 'advanced.div',\r
- blockquote : 'advanced.blockquote',\r
- code : 'advanced.code',\r
- dt : 'advanced.dt',\r
- dd : 'advanced.dd',\r
- samp : 'advanced.samp'\r
- }, t = this;\r
-\r
- c = t.editor.controlManager.createListBox('formatselect', {title : 'advanced.block', cmd : 'FormatBlock'});\r
- if (c) {\r
- each(t.editor.getParam('theme_advanced_blockformats', t.settings.theme_advanced_blockformats, 'hash'), function(v, k) {\r
- c.add(t.editor.translate(k != v ? k : fmts[v]), v, {'class' : 'mce_formatPreview mce_' + v});\r
- });\r
- }\r
-\r
- return c;\r
- },\r
-\r
- _createForeColorMenu : function() {\r
- var c, t = this, s = t.settings, o = {}, v;\r
-\r
- if (s.theme_advanced_more_colors) {\r
- o.more_colors_func = function() {\r
- t._mceColorPicker(0, {\r
- color : c.value,\r
- func : function(co) {\r
- c.setColor(co);\r
- }\r
- });\r
- };\r
- }\r
-\r
- if (v = s.theme_advanced_text_colors)\r
- o.colors = v;\r
-\r
- o.title = 'advanced.forecolor_desc';\r
- o.cmd = 'ForeColor';\r
- o.scope = this;\r
-\r
- c = t.editor.controlManager.createColorSplitButton('forecolor', o);\r
-\r
- return c;\r
- },\r
-\r
- _createBackColorMenu : function() {\r
- var c, t = this, s = t.settings, o = {}, v;\r
-\r
- if (s.theme_advanced_more_colors) {\r
- o.more_colors_func = function() {\r
- t._mceColorPicker(0, {\r
- color : c.value,\r
- func : function(co) {\r
- c.setColor(co);\r
- }\r
- });\r
- };\r
- }\r
-\r
- if (v = s.theme_advanced_background_colors)\r
- o.colors = v;\r
-\r
- o.title = 'advanced.backcolor_desc';\r
- o.cmd = 'HiliteColor';\r
- o.scope = this;\r
-\r
- c = t.editor.controlManager.createColorSplitButton('backcolor', o);\r
-\r
- return c;\r
- },\r
-\r
- renderUI : function(o) {\r
- var n, ic, tb, t = this, ed = t.editor, s = t.settings, sc, p, nl;\r
-\r
- n = p = DOM.create('span', {id : ed.id + '_parent', 'class' : 'mceEditor ' + ed.settings.skin + 'Skin' + (s.skin_variant ? ' ' + ed.settings.skin + 'Skin' + t._ufirst(s.skin_variant) : '')});\r
-\r
- if (!DOM.boxModel)\r
- n = DOM.add(n, 'div', {'class' : 'mceOldBoxModel'});\r
-\r
- n = sc = DOM.add(n, 'table', {id : ed.id + '_tbl', 'class' : 'mceLayout', cellSpacing : 0, cellPadding : 0});\r
- n = tb = DOM.add(n, 'tbody');\r
-\r
- switch ((s.theme_advanced_layout_manager || '').toLowerCase()) {\r
- case "rowlayout":\r
- ic = t._rowLayout(s, tb, o);\r
- break;\r
-\r
- case "customlayout":\r
- ic = ed.execCallback("theme_advanced_custom_layout", s, tb, o, p);\r
- break;\r
-\r
- default:\r
- ic = t._simpleLayout(s, tb, o, p);\r
- }\r
-\r
- n = o.targetNode;\r
-\r
- // Add classes to first and last TRs\r
- nl = DOM.stdMode ? sc.getElementsByTagName('tr') : sc.rows; // Quick fix for IE 8\r
- DOM.addClass(nl[0], 'mceFirst');\r
- DOM.addClass(nl[nl.length - 1], 'mceLast');\r
-\r
- // Add classes to first and last TDs\r
- each(DOM.select('tr', tb), function(n) {\r
- DOM.addClass(n.firstChild, 'mceFirst');\r
- DOM.addClass(n.childNodes[n.childNodes.length - 1], 'mceLast');\r
- });\r
-\r
- if (DOM.get(s.theme_advanced_toolbar_container))\r
- DOM.get(s.theme_advanced_toolbar_container).appendChild(p);\r
- else\r
- DOM.insertAfter(p, n);\r
-\r
- Event.add(ed.id + '_path_row', 'click', function(e) {\r
- e = e.target;\r
-\r
- if (e.nodeName == 'A') {\r
- t._sel(e.className.replace(/^.*mcePath_([0-9]+).*$/, '$1'));\r
-\r
- return Event.cancel(e);\r
- }\r
- });\r
-/*\r
- if (DOM.get(ed.id + '_path_row')) {\r
- Event.add(ed.id + '_tbl', 'mouseover', function(e) {\r
- var re;\r
- \r
- e = e.target;\r
-\r
- if (e.nodeName == 'SPAN' && DOM.hasClass(e.parentNode, 'mceButton')) {\r
- re = DOM.get(ed.id + '_path_row');\r
- t.lastPath = re.innerHTML;\r
- DOM.setHTML(re, e.parentNode.title);\r
- }\r
- });\r
-\r
- Event.add(ed.id + '_tbl', 'mouseout', function(e) {\r
- if (t.lastPath) {\r
- DOM.setHTML(ed.id + '_path_row', t.lastPath);\r
- t.lastPath = 0;\r
- }\r
- });\r
- }\r
-*/\r
-\r
- if (!ed.getParam('accessibility_focus') || ed.getParam('tab_focus'))\r
- Event.add(DOM.add(p, 'a', {href : '#'}, '<!-- IE -->'), 'focus', function() {tinyMCE.get(ed.id).focus();});\r
-\r
- if (s.theme_advanced_toolbar_location == 'external')\r
- o.deltaHeight = 0;\r
-\r
- t.deltaHeight = o.deltaHeight;\r
- o.targetNode = null;\r
-\r
- return {\r
- iframeContainer : ic,\r
- editorContainer : ed.id + '_parent',\r
- sizeContainer : sc,\r
- deltaHeight : o.deltaHeight\r
- };\r
- },\r
-\r
- getInfo : function() {\r
- return {\r
- longname : 'Advanced theme',\r
- author : 'Moxiecode Systems AB',\r
- authorurl : 'http://tinymce.moxiecode.com',\r
- version : tinymce.majorVersion + "." + tinymce.minorVersion\r
- }\r
- },\r
-\r
- resizeBy : function(dw, dh) {\r
- var e = DOM.get(this.editor.id + '_tbl');\r
-\r
- this.resizeTo(e.clientWidth + dw, e.clientHeight + dh);\r
- },\r
-\r
- resizeTo : function(w, h) {\r
- var ed = this.editor, s = ed.settings, e = DOM.get(ed.id + '_tbl'), ifr = DOM.get(ed.id + '_ifr'), dh;\r
-\r
- // Boundery fix box\r
- w = Math.max(s.theme_advanced_resizing_min_width || 100, w);\r
- h = Math.max(s.theme_advanced_resizing_min_height || 100, h);\r
- w = Math.min(s.theme_advanced_resizing_max_width || 0xFFFF, w);\r
- h = Math.min(s.theme_advanced_resizing_max_height || 0xFFFF, h);\r
-\r
- // Calc difference between iframe and container\r
- dh = e.clientHeight - ifr.clientHeight;\r
-\r
- // Resize iframe and container\r
- DOM.setStyle(ifr, 'height', h - dh);\r
- DOM.setStyles(e, {width : w, height : h});\r
- },\r
-\r
- destroy : function() {\r
- var id = this.editor.id;\r
-\r
- Event.clear(id + '_resize');\r
- Event.clear(id + '_path_row');\r
- Event.clear(id + '_external_close');\r
- },\r
-\r
- // Internal functions\r
-\r
- _simpleLayout : function(s, tb, o, p) {\r
- var t = this, ed = t.editor, lo = s.theme_advanced_toolbar_location, sl = s.theme_advanced_statusbar_location, n, ic, etb, c;\r
-\r
- if (s.readonly) {\r
- n = DOM.add(tb, 'tr');\r
- n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'});\r
- return ic;\r
- }\r
-\r
- // Create toolbar container at top\r
- if (lo == 'top')\r
- t._addToolbars(tb, o);\r
-\r
- // Create external toolbar\r
- if (lo == 'external') {\r
- n = c = DOM.create('div', {style : 'position:relative'});\r
- n = DOM.add(n, 'div', {id : ed.id + '_external', 'class' : 'mceExternalToolbar'});\r
- DOM.add(n, 'a', {id : ed.id + '_external_close', href : 'javascript:;', 'class' : 'mceExternalClose'});\r
- n = DOM.add(n, 'table', {id : ed.id + '_tblext', cellSpacing : 0, cellPadding : 0});\r
- etb = DOM.add(n, 'tbody');\r
-\r
- if (p.firstChild.className == 'mceOldBoxModel')\r
- p.firstChild.appendChild(c);\r
- else\r
- p.insertBefore(c, p.firstChild);\r
-\r
- t._addToolbars(etb, o);\r
-\r
- ed.onMouseUp.add(function() {\r
- var e = DOM.get(ed.id + '_external');\r
- DOM.show(e);\r
-\r
- DOM.hide(lastExtID);\r
-\r
- var f = Event.add(ed.id + '_external_close', 'click', function() {\r
- DOM.hide(ed.id + '_external');\r
- Event.remove(ed.id + '_external_close', 'click', f);\r
- });\r
-\r
- DOM.show(e);\r
- DOM.setStyle(e, 'top', 0 - DOM.getRect(ed.id + '_tblext').h - 1);\r
-\r
- // Fixes IE rendering bug\r
- DOM.hide(e);\r
- DOM.show(e);\r
- e.style.filter = '';\r
-\r
- lastExtID = ed.id + '_external';\r
-\r
- e = null;\r
- });\r
- }\r
-\r
- if (sl == 'top')\r
- t._addStatusBar(tb, o);\r
-\r
- // Create iframe container\r
- if (!s.theme_advanced_toolbar_container) {\r
- n = DOM.add(tb, 'tr');\r
- n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'});\r
- }\r
-\r
- // Create toolbar container at bottom\r
- if (lo == 'bottom')\r
- t._addToolbars(tb, o);\r
-\r
- if (sl == 'bottom')\r
- t._addStatusBar(tb, o);\r
-\r
- return ic;\r
- },\r
-\r
- _rowLayout : function(s, tb, o) {\r
- var t = this, ed = t.editor, dc, da, cf = ed.controlManager, n, ic, to, a;\r
-\r
- dc = s.theme_advanced_containers_default_class || '';\r
- da = s.theme_advanced_containers_default_align || 'center';\r
-\r
- each(explode(s.theme_advanced_containers || ''), function(c, i) {\r
- var v = s['theme_advanced_container_' + c] || '';\r
-\r
- switch (v.toLowerCase()) {\r
- case 'mceeditor':\r
- n = DOM.add(tb, 'tr');\r
- n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'});\r
- break;\r
-\r
- case 'mceelementpath':\r
- t._addStatusBar(tb, o);\r
- break;\r
-\r
- default:\r
- a = (s['theme_advanced_container_' + c + '_align'] || da).toLowerCase();\r
- a = 'mce' + t._ufirst(a);\r
-\r
- n = DOM.add(DOM.add(tb, 'tr'), 'td', {\r
- 'class' : 'mceToolbar ' + (s['theme_advanced_container_' + c + '_class'] || dc) + ' ' + a || da\r
- });\r
-\r
- to = cf.createToolbar("toolbar" + i);\r
- t._addControls(v, to);\r
- DOM.setHTML(n, to.renderHTML());\r
- o.deltaHeight -= s.theme_advanced_row_height;\r
- }\r
- });\r
-\r
- return ic;\r
- },\r
-\r
- _addControls : function(v, tb) {\r
- var t = this, s = t.settings, di, cf = t.editor.controlManager;\r
-\r
- if (s.theme_advanced_disable && !t._disabled) {\r
- di = {};\r
-\r
- each(explode(s.theme_advanced_disable), function(v) {\r
- di[v] = 1;\r
- });\r
-\r
- t._disabled = di;\r
- } else\r
- di = t._disabled;\r
-\r
- each(explode(v), function(n) {\r
- var c;\r
-\r
- if (di && di[n])\r
- return;\r
-\r
- // Compatiblity with 2.x\r
- if (n == 'tablecontrols') {\r
- each(["table","|","row_props","cell_props","|","row_before","row_after","delete_row","|","col_before","col_after","delete_col","|","split_cells","merge_cells"], function(n) {\r
- n = t.createControl(n, cf);\r
-\r
- if (n)\r
- tb.add(n);\r
- });\r
-\r
- return;\r
- }\r
-\r
- c = t.createControl(n, cf);\r
-\r
- if (c)\r
- tb.add(c);\r
- });\r
- },\r
-\r
- _addToolbars : function(c, o) {\r
- var t = this, i, tb, ed = t.editor, s = t.settings, v, cf = ed.controlManager, di, n, h = [], a;\r
-\r
- a = s.theme_advanced_toolbar_align.toLowerCase();\r
- a = 'mce' + t._ufirst(a);\r
-\r
- n = DOM.add(DOM.add(c, 'tr'), 'td', {'class' : 'mceToolbar ' + a});\r
-\r
- if (!ed.getParam('accessibility_focus') || ed.getParam('tab_focus'))\r
- h.push(DOM.createHTML('a', {href : '#', onfocus : 'tinyMCE.get(\'' + ed.id + '\').focus();'}, '<!-- IE -->'));\r
-\r
- h.push(DOM.createHTML('a', {href : '#', accesskey : 'q', title : ed.getLang("advanced.toolbar_focus")}, '<!-- IE -->'));\r
-\r
- // Create toolbar and add the controls\r
- for (i=1; (v = s['theme_advanced_buttons' + i]); i++) {\r
- tb = cf.createToolbar("toolbar" + i, {'class' : 'mceToolbarRow' + i});\r
-\r
- if (s['theme_advanced_buttons' + i + '_add'])\r
- v += ',' + s['theme_advanced_buttons' + i + '_add'];\r
-\r
- if (s['theme_advanced_buttons' + i + '_add_before'])\r
- v = s['theme_advanced_buttons' + i + '_add_before'] + ',' + v;\r
-\r
- t._addControls(v, tb);\r
-\r
- //n.appendChild(n = tb.render());\r
- h.push(tb.renderHTML());\r
-\r
- o.deltaHeight -= s.theme_advanced_row_height;\r
- }\r
-\r
- h.push(DOM.createHTML('a', {href : '#', accesskey : 'z', title : ed.getLang("advanced.toolbar_focus"), onfocus : 'tinyMCE.getInstanceById(\'' + ed.id + '\').focus();'}, '<!-- IE -->'));\r
- DOM.setHTML(n, h.join(''));\r
- },\r
-\r
- _addStatusBar : function(tb, o) {\r
- var n, t = this, ed = t.editor, s = t.settings, r, mf, me, td;\r
-\r
- n = DOM.add(tb, 'tr');\r
- n = td = DOM.add(n, 'td', {'class' : 'mceStatusbar'});\r
- n = DOM.add(n, 'div', {id : ed.id + '_path_row'}, s.theme_advanced_path ? ed.translate('advanced.path') + ': ' : ' ');\r
- DOM.add(n, 'a', {href : '#', accesskey : 'x'});\r
-\r
- if (s.theme_advanced_resizing && !tinymce.isOldWebKit) {\r
- DOM.add(td, 'a', {id : ed.id + '_resize', href : 'javascript:;', onclick : "return false;", 'class' : 'mceResize'});\r
-\r
- if (s.theme_advanced_resizing_use_cookie) {\r
- ed.onPostRender.add(function() {\r
- var o = Cookie.getHash("TinyMCE_" + ed.id + "_size"), c = DOM.get(ed.id + '_tbl');\r
-\r
- if (!o)\r
- return;\r
-\r
- if (s.theme_advanced_resize_horizontal)\r
- c.style.width = Math.max(10, o.cw) + 'px';\r
-\r
- c.style.height = Math.max(10, o.ch) + 'px';\r
- DOM.get(ed.id + '_ifr').style.height = Math.max(10, parseInt(o.ch) + t.deltaHeight) + 'px';\r
- });\r
- }\r
-\r
- ed.onPostRender.add(function() {\r
- Event.add(ed.id + '_resize', 'mousedown', function(e) {\r
- var c, p, w, h, n, pa;\r
-\r
- // Measure container\r
- c = DOM.get(ed.id + '_tbl');\r
- w = c.clientWidth;\r
- h = c.clientHeight;\r
-\r
- miw = s.theme_advanced_resizing_min_width || 100;\r
- mih = s.theme_advanced_resizing_min_height || 100;\r
- maw = s.theme_advanced_resizing_max_width || 0xFFFF;\r
- mah = s.theme_advanced_resizing_max_height || 0xFFFF;\r
-\r
- // Setup placeholder\r
- p = DOM.add(DOM.get(ed.id + '_parent'), 'div', {'class' : 'mcePlaceHolder'});\r
- DOM.setStyles(p, {width : w, height : h});\r
-\r
- // Replace with placeholder\r
- DOM.hide(c);\r
- DOM.show(p);\r
-\r
- // Create internal resize obj\r
- r = {\r
- x : e.screenX,\r
- y : e.screenY,\r
- w : w,\r
- h : h,\r
- dx : null,\r
- dy : null\r
- };\r
-\r
- // Start listening\r
- mf = Event.add(DOM.doc, 'mousemove', function(e) {\r
- var w, h;\r
-\r
- // Calc delta values\r
- r.dx = e.screenX - r.x;\r
- r.dy = e.screenY - r.y;\r
-\r
- // Boundery fix box\r
- w = Math.max(miw, r.w + r.dx);\r
- h = Math.max(mih, r.h + r.dy);\r
- w = Math.min(maw, w);\r
- h = Math.min(mah, h);\r
-\r
- // Resize placeholder\r
- if (s.theme_advanced_resize_horizontal)\r
- p.style.width = w + 'px';\r
-\r
- p.style.height = h + 'px';\r
-\r
- return Event.cancel(e);\r
- });\r
-\r
- me = Event.add(DOM.doc, 'mouseup', function(e) {\r
- var ifr;\r
-\r
- // Stop listening\r
- Event.remove(DOM.doc, 'mousemove', mf);\r
- Event.remove(DOM.doc, 'mouseup', me);\r
-\r
- c.style.display = '';\r
- DOM.remove(p);\r
-\r
- if (r.dx === null)\r
- return;\r
-\r
- ifr = DOM.get(ed.id + '_ifr');\r
-\r
- if (s.theme_advanced_resize_horizontal)\r
- c.style.width = Math.max(10, r.w + r.dx) + 'px';\r
-\r
- c.style.height = Math.max(10, r.h + r.dy) + 'px';\r
- ifr.style.height = Math.max(10, ifr.clientHeight + r.dy) + 'px';\r
-\r
- if (s.theme_advanced_resizing_use_cookie) {\r
- Cookie.setHash("TinyMCE_" + ed.id + "_size", {\r
- cw : r.w + r.dx,\r
- ch : r.h + r.dy\r
- });\r
- }\r
- });\r
-\r
- return Event.cancel(e);\r
- });\r
- });\r
- }\r
-\r
- o.deltaHeight -= 21;\r
- n = tb = null;\r
- },\r
-\r
- _nodeChanged : function(ed, cm, n, co) {\r
- var t = this, p, de = 0, v, c, s = t.settings;\r
-\r
- if (s.readonly)\r
- return;\r
-\r
- tinymce.each(t.stateControls, function(c) {\r
- cm.setActive(c, ed.queryCommandState(t.controls[c][1]));\r
- });\r
-\r
- cm.setActive('visualaid', ed.hasVisual);\r
- cm.setDisabled('undo', !ed.undoManager.hasUndo() && !ed.typing);\r
- cm.setDisabled('redo', !ed.undoManager.hasRedo());\r
- cm.setDisabled('outdent', !ed.queryCommandState('Outdent'));\r
-\r
- p = DOM.getParent(n, 'A');\r
- if (c = cm.get('link')) {\r
- if (!p || !p.name) {\r
- c.setDisabled(!p && co);\r
- c.setActive(!!p);\r
- }\r
- }\r
-\r
- if (c = cm.get('unlink')) {\r
- c.setDisabled(!p && co);\r
- c.setActive(!!p && !p.name);\r
- }\r
-\r
- if (c = cm.get('anchor')) {\r
- c.setActive(!!p && p.name);\r
-\r
- if (tinymce.isWebKit) {\r
- p = DOM.getParent(n, 'IMG');\r
- c.setActive(!!p && DOM.getAttrib(p, 'mce_name') == 'a');\r
- }\r
- }\r
-\r
- p = DOM.getParent(n, 'IMG');\r
- if (c = cm.get('image'))\r
- c.setActive(!!p && n.className.indexOf('mceItem') == -1);\r
-\r
- if (c = cm.get('styleselect')) {\r
- if (n.className) {\r
- t._importClasses();\r
- c.select(n.className);\r
- } else\r
- c.select();\r
- }\r
-\r
- if (c = cm.get('formatselect')) {\r
- p = DOM.getParent(n, DOM.isBlock);\r
-\r
- if (p)\r
- c.select(p.nodeName.toLowerCase());\r
- }\r
-\r
- if (c = cm.get('fontselect'))\r
- c.select(ed.queryCommandValue('FontName'));\r
-\r
- if (c = cm.get('fontsizeselect'))\r
- c.select('' + ed.queryCommandValue('FontSize'));\r
-\r
- if (s.theme_advanced_path && s.theme_advanced_statusbar_location) {\r
- p = DOM.get(ed.id + '_path') || DOM.add(ed.id + '_path_row', 'span', {id : ed.id + '_path'});\r
- DOM.setHTML(p, '');\r
-\r
- ed.dom.getParent(n, function(n) {\r
- var na = n.nodeName.toLowerCase(), u, pi, ti = '';\r
-\r
- // Ignore non element and hidden elements\r
- if (n.nodeType != 1 || (DOM.hasClass(n, 'mceItemHidden') || DOM.hasClass(n, 'mceItemRemoved')))\r
- return;\r
-\r
- // Fake name\r
- if (v = DOM.getAttrib(n, 'mce_name'))\r
- na = v;\r
- \r
- // Handle prefix\r
- if (tinymce.isIE && n.scopeName !== 'HTML')\r
- na = n.scopeName + ':' + na;\r
-\r
- // Remove internal prefix\r
- na = na.replace(/mce\:/g, '');\r
-\r
- // Handle node name\r
- switch (na) {\r
- case 'b':\r
- na = 'strong';\r
- break;\r
-\r
- case 'i':\r
- na = 'em';\r
- break;\r
-\r
- case 'img':\r
- if (v = DOM.getAttrib(n, 'src'))\r
- ti += 'src: ' + v + ' ';\r
-\r
- break;\r
-\r
- case 'a':\r
- if (v = DOM.getAttrib(n, 'name')) {\r
- ti += 'name: ' + v + ' ';\r
- na += '#' + v;\r
- }\r
-\r
- if (v = DOM.getAttrib(n, 'href'))\r
- ti += 'href: ' + v + ' ';\r
-\r
- break;\r
-\r
- case 'font':\r
- if (s.convert_fonts_to_spans)\r
- na = 'span';\r
-\r
- if (v = DOM.getAttrib(n, 'face'))\r
- ti += 'font: ' + v + ' ';\r
-\r
- if (v = DOM.getAttrib(n, 'size'))\r
- ti += 'size: ' + v + ' ';\r
-\r
- if (v = DOM.getAttrib(n, 'color'))\r
- ti += 'color: ' + v + ' ';\r
-\r
- break;\r
-\r
- case 'span':\r
- if (v = DOM.getAttrib(n, 'style'))\r
- ti += 'style: ' + v + ' ';\r
-\r
- break;\r
- }\r
-\r
- if (v = DOM.getAttrib(n, 'id'))\r
- ti += 'id: ' + v + ' ';\r
-\r
- if (v = n.className) {\r
- v = v.replace(/(webkit-[\w\-]+|Apple-[\w\-]+|mceItem\w+|mceVisualAid)/g, '');\r
-\r
- if (v && v.indexOf('mceItem') == -1) {\r
- ti += 'class: ' + v + ' ';\r
-\r
- if (DOM.isBlock(n) || na == 'img' || na == 'span')\r
- na += '.' + v;\r
- }\r
- }\r
-\r
- na = na.replace(/(html:)/g, '');\r
- na = {name : na, node : n, title : ti};\r
- t.onResolveName.dispatch(t, na);\r
- ti = na.title;\r
- na = na.name;\r
-\r
- //u = "javascript:tinymce.EditorManager.get('" + ed.id + "').theme._sel('" + (de++) + "');";\r
- pi = DOM.create('a', {'href' : "javascript:;", onmousedown : "return false;", title : ti, 'class' : 'mcePath_' + (de++)}, na);\r
-\r
- if (p.hasChildNodes()) {\r
- p.insertBefore(DOM.doc.createTextNode(' \u00bb '), p.firstChild);\r
- p.insertBefore(pi, p.firstChild);\r
- } else\r
- p.appendChild(pi);\r
- }, ed.getBody());\r
- }\r
- },\r
-\r
- // Commands gets called by execCommand\r
-\r
- _sel : function(v) {\r
- this.editor.execCommand('mceSelectNodeDepth', false, v);\r
- },\r
-\r
- _mceInsertAnchor : function(ui, v) {\r
- var ed = this.editor;\r
-\r
- ed.windowManager.open({\r
- url : tinymce.baseURL + '/themes/advanced/anchor.htm',\r
- width : 320 + parseInt(ed.getLang('advanced.anchor_delta_width', 0)),\r
- height : 90 + parseInt(ed.getLang('advanced.anchor_delta_height', 0)),\r
- inline : true\r
- }, {\r
- theme_url : this.url\r
- });\r
- },\r
-\r
- _mceCharMap : function() {\r
- var ed = this.editor;\r
-\r
- ed.windowManager.open({\r
- url : tinymce.baseURL + '/themes/advanced/charmap.htm',\r
- width : 550 + parseInt(ed.getLang('advanced.charmap_delta_width', 0)),\r
- height : 250 + parseInt(ed.getLang('advanced.charmap_delta_height', 0)),\r
- inline : true\r
- }, {\r
- theme_url : this.url\r
- });\r
- },\r
-\r
- _mceHelp : function() {\r
- var ed = this.editor;\r
-\r
- ed.windowManager.open({\r
- url : tinymce.baseURL + '/themes/advanced/about.htm',\r
- width : 480,\r
- height : 380,\r
- inline : true\r
- }, {\r
- theme_url : this.url\r
- });\r
- },\r
-\r
- _mceColorPicker : function(u, v) {\r
- var ed = this.editor;\r
-\r
- v = v || {};\r
-\r
- ed.windowManager.open({\r
- url : tinymce.baseURL + '/themes/advanced/color_picker.htm',\r
- width : 375 + parseInt(ed.getLang('advanced.colorpicker_delta_width', 0)),\r
- height : 250 + parseInt(ed.getLang('advanced.colorpicker_delta_height', 0)),\r
- close_previous : false,\r
- inline : true\r
- }, {\r
- input_color : v.color,\r
- func : v.func,\r
- theme_url : this.url\r
- });\r
- },\r
-\r
- _mceCodeEditor : function(ui, val) {\r
- var ed = this.editor;\r
-\r
- ed.windowManager.open({\r
- url : tinymce.baseURL + '/themes/advanced/source_editor.htm',\r
- width : parseInt(ed.getParam("theme_advanced_source_editor_width", 720)),\r
- height : parseInt(ed.getParam("theme_advanced_source_editor_height", 580)),\r
- inline : true,\r
- resizable : true,\r
- maximizable : true\r
- }, {\r
- theme_url : this.url\r
- });\r
- },\r
-\r
- _mceImage : function(ui, val) {\r
- var ed = this.editor;\r
-\r
- // Internal image object like a flash placeholder\r
- if (ed.dom.getAttrib(ed.selection.getNode(), 'class').indexOf('mceItem') != -1)\r
- return;\r
-\r
- ed.windowManager.open({\r
- url : tinymce.baseURL + '/themes/advanced/image.htm',\r
- width : 355 + parseInt(ed.getLang('advanced.image_delta_width', 0)),\r
- height : 275 + parseInt(ed.getLang('advanced.image_delta_height', 0)),\r
- inline : true\r
- }, {\r
- theme_url : this.url\r
- });\r
- },\r
-\r
- _mceLink : function(ui, val) {\r
- var ed = this.editor;\r
-\r
- ed.windowManager.open({\r
- url : tinymce.baseURL + '/themes/advanced/link.htm',\r
- width : 310 + parseInt(ed.getLang('advanced.link_delta_width', 0)),\r
- height : 200 + parseInt(ed.getLang('advanced.link_delta_height', 0)),\r
- inline : true\r
- }, {\r
- theme_url : this.url\r
- });\r
- },\r
-\r
- _mceNewDocument : function() {\r
- var ed = this.editor;\r
-\r
- ed.windowManager.confirm('advanced.newdocument', function(s) {\r
- if (s)\r
- ed.execCommand('mceSetContent', false, '');\r
- });\r
- },\r
-\r
- _mceForeColor : function() {\r
- var t = this;\r
-\r
- this._mceColorPicker(0, {\r
- color: t.fgColor,\r
- func : function(co) {\r
- t.fgColor = co;\r
- t.editor.execCommand('ForeColor', false, co);\r
- }\r
- });\r
- },\r
-\r
- _mceBackColor : function() {\r
- var t = this;\r
-\r
- this._mceColorPicker(0, {\r
- color: t.bgColor,\r
- func : function(co) {\r
- t.bgColor = co;\r
- t.editor.execCommand('HiliteColor', false, co);\r
- }\r
- });\r
- },\r
-\r
- _ufirst : function(s) {\r
- return s.substring(0, 1).toUpperCase() + s.substring(1);\r
- }\r
- });\r
-\r
- tinymce.ThemeManager.add('advanced', tinymce.themes.AdvancedTheme);\r
-}());
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
- <title>{#advanced_dlg.image_title}</title>\r
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
- <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
- <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
- <script type="text/javascript" src="js/image.js"></script>\r
- <base target="_self" />\r
-</head>\r
-<body id="image" style="display: none">\r
-<form onsubmit="ImageDialog.update();return false;" action="#">\r
- <div class="tabs">\r
- <ul>\r
- <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advanced_dlg.image_title}</a></span></li>\r
- </ul>\r
- </div>\r
-\r
- <div class="panel_wrapper">\r
- <div id="general_panel" class="panel current">\r
- <table border="0" cellpadding="4" cellspacing="0">\r
- <tr>\r
- <td nowrap="nowrap"><label for="src">{#advanced_dlg.image_src}</label></td>\r
- <td><table border="0" cellspacing="0" cellpadding="0">\r
- <tr>\r
- <td><input id="src" name="src" type="text" class="mceFocus" value="" style="width: 200px" onchange="ImageDialog.getImageData();" /></td>\r
- <td id="srcbrowsercontainer"> </td>\r
- </tr>\r
- </table></td>\r
- </tr>\r
- <tr>\r
- <td><label for="image_list">{#advanced_dlg.image_list}</label></td>\r
- <td><select id="image_list" name="image_list" onchange="document.getElementById('src').value=this.options[this.selectedIndex].value;document.getElementById('alt').value=this.options[this.selectedIndex].text;"></select></td>\r
- </tr>\r
- <tr>\r
- <td nowrap="nowrap"><label for="alt">{#advanced_dlg.image_alt}</label></td>\r
- <td><input id="alt" name="alt" type="text" value="" style="width: 200px" /></td>\r
- </tr>\r
- <tr>\r
- <td nowrap="nowrap"><label for="align">{#advanced_dlg.image_align}</label></td>\r
- <td><select id="align" name="align" onchange="ImageDialog.updateStyle();">\r
- <option value="">{#not_set}</option>\r
- <option value="baseline">{#advanced_dlg.image_align_baseline}</option>\r
- <option value="top">{#advanced_dlg.image_align_top}</option>\r
- <option value="middle">{#advanced_dlg.image_align_middle}</option>\r
- <option value="bottom">{#advanced_dlg.image_align_bottom}</option>\r
- <option value="text-top">{#advanced_dlg.image_align_texttop}</option>\r
- <option value="text-bottom">{#advanced_dlg.image_align_textbottom}</option>\r
- <option value="left">{#advanced_dlg.image_align_left}</option>\r
- <option value="right">{#advanced_dlg.image_align_right}</option>\r
- </select></td>\r
- </tr>\r
- <tr>\r
- <td nowrap="nowrap"><label for="width">{#advanced_dlg.image_dimensions}</label></td>\r
- <td><input id="width" name="width" type="text" value="" size="3" maxlength="5" />\r
- x\r
- <input id="height" name="height" type="text" value="" size="3" maxlength="5" /></td>\r
- </tr>\r
- <tr>\r
- <td nowrap="nowrap"><label for="border">{#advanced_dlg.image_border}</label></td>\r
- <td><input id="border" name="border" type="text" value="" size="3" maxlength="3" onchange="ImageDialog.updateStyle();" /></td>\r
- </tr>\r
- <tr>\r
- <td nowrap="nowrap"><label for="vspace">{#advanced_dlg.image_vspace}</label></td>\r
- <td><input id="vspace" name="vspace" type="text" value="" size="3" maxlength="3" onchange="ImageDialog.updateStyle();" /></td>\r
- </tr>\r
- <tr>\r
- <td nowrap="nowrap"><label for="hspace">{#advanced_dlg.image_hspace}</label></td>\r
- <td><input id="hspace" name="hspace" type="text" value="" size="3" maxlength="3" onchange="ImageDialog.updateStyle();" /></td>\r
- </tr>\r
- </table>\r
- </div>\r
- </div>\r
-\r
- <div class="mceActionPanel">\r
- <div style="float: left">\r
- <input type="submit" id="insert" name="insert" value="{#insert}" />\r
- </div>\r
-\r
- <div style="float: right">\r
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
- </div>\r
- </div>\r
-</form>\r
-</body>\r
-</html>\r
+++ /dev/null
-tinyMCEPopup.requireLangPack();\r
-\r
-function init() {\r
- var ed, tcont;\r
-\r
- tinyMCEPopup.resizeToInnerSize();\r
- ed = tinyMCEPopup.editor;\r
-\r
- // Give FF some time\r
- window.setTimeout('insertHelpIFrame();', 10);\r
-\r
- tcont = document.getElementById('plugintablecontainer');\r
- document.getElementById('plugins_tab').style.display = 'none';\r
-\r
- var html = "";\r
- html += '<table id="plugintable">';\r
- html += '<thead>';\r
- html += '<tr>';\r
- html += '<td>' + ed.getLang('advanced_dlg.about_plugin') + '</td>';\r
- html += '<td>' + ed.getLang('advanced_dlg.about_author') + '</td>';\r
- html += '<td>' + ed.getLang('advanced_dlg.about_version') + '</td>';\r
- html += '</tr>';\r
- html += '</thead>';\r
- html += '<tbody>';\r
-\r
- tinymce.each(ed.plugins, function(p, n) {\r
- var info;\r
-\r
- if (!p.getInfo)\r
- return;\r
-\r
- html += '<tr>';\r
-\r
- info = p.getInfo();\r
-\r
- if (info.infourl != null && info.infourl != '')\r
- html += '<td width="50%" title="' + n + '"><a href="' + info.infourl + '" target="_blank">' + info.longname + '</a></td>';\r
- else\r
- html += '<td width="50%" title="' + n + '">' + info.longname + '</td>';\r
-\r
- if (info.authorurl != null && info.authorurl != '')\r
- html += '<td width="35%"><a href="' + info.authorurl + '" target="_blank">' + info.author + '</a></td>';\r
- else\r
- html += '<td width="35%">' + info.author + '</td>';\r
-\r
- html += '<td width="15%">' + info.version + '</td>';\r
- html += '</tr>';\r
-\r
- document.getElementById('plugins_tab').style.display = '';\r
-\r
- });\r
-\r
- html += '</tbody>';\r
- html += '</table>';\r
-\r
- tcont.innerHTML = html;\r
-\r
- tinyMCEPopup.dom.get('version').innerHTML = tinymce.majorVersion + "." + tinymce.minorVersion;\r
- tinyMCEPopup.dom.get('date').innerHTML = tinymce.releaseDate;\r
-}\r
-\r
-function insertHelpIFrame() {\r
- var html;\r
-\r
- if (tinyMCEPopup.getParam('docs_url')) {\r
- html = '<iframe width="100%" height="300" src="' + tinyMCEPopup.editor.baseURI.toAbsolute(tinyMCEPopup.getParam('docs_url')) + '"></iframe>';\r
- document.getElementById('iframecontainer').innerHTML = html;\r
- document.getElementById('help_tab').style.display = 'block';\r
- }\r
-}\r
-\r
-tinyMCEPopup.onInit.add(init);\r
+++ /dev/null
-tinyMCEPopup.requireLangPack();\r
-\r
-var AnchorDialog = {\r
- init : function(ed) {\r
- var action, elm, f = document.forms[0];\r
-\r
- this.editor = ed;\r
- elm = ed.dom.getParent(ed.selection.getNode(), 'A,IMG');\r
- v = ed.dom.getAttrib(elm, 'name');\r
-\r
- if (v) {\r
- this.action = 'update';\r
- f.anchorName.value = v;\r
- }\r
-\r
- f.insert.value = ed.getLang(elm ? 'update' : 'insert');\r
- },\r
-\r
- update : function() {\r
- var ed = this.editor;\r
- \r
- tinyMCEPopup.restoreSelection();\r
-\r
- if (this.action != 'update')\r
- ed.selection.collapse(1);\r
-\r
- // Webkit acts weird if empty inline element is inserted so we need to use a image instead\r
- if (tinymce.isWebKit)\r
- ed.execCommand('mceInsertContent', 0, ed.dom.createHTML('img', {mce_name : 'a', name : document.forms[0].anchorName.value, 'class' : 'mceItemAnchor'}));\r
- else\r
- ed.execCommand('mceInsertContent', 0, ed.dom.createHTML('a', {name : document.forms[0].anchorName.value, 'class' : 'mceItemAnchor'}, ''));\r
-\r
- tinyMCEPopup.close();\r
- }\r
-};\r
-\r
-tinyMCEPopup.onInit.add(AnchorDialog.init, AnchorDialog);\r
+++ /dev/null
-tinyMCEPopup.requireLangPack();\r
-\r
-var charmap = [\r
- [' ', ' ', true, 'no-break space'],\r
- ['&', '&', true, 'ampersand'],\r
- ['"', '"', true, 'quotation mark'],\r
-// finance\r
- ['¢', '¢', true, 'cent sign'],\r
- ['€', '€', true, 'euro sign'],\r
- ['£', '£', true, 'pound sign'],\r
- ['¥', '¥', true, 'yen sign'],\r
-// signs\r
- ['©', '©', true, 'copyright sign'],\r
- ['®', '®', true, 'registered sign'],\r
- ['™', '™', true, 'trade mark sign'],\r
- ['‰', '‰', true, 'per mille sign'],\r
- ['µ', 'µ', true, 'micro sign'],\r
- ['·', '·', true, 'middle dot'],\r
- ['•', '•', true, 'bullet'],\r
- ['…', '…', true, 'three dot leader'],\r
- ['′', '′', true, 'minutes / feet'],\r
- ['″', '″', true, 'seconds / inches'],\r
- ['§', '§', true, 'section sign'],\r
- ['¶', '¶', true, 'paragraph sign'],\r
- ['ß', 'ß', true, 'sharp s / ess-zed'],\r
-// quotations\r
- ['‹', '‹', true, 'single left-pointing angle quotation mark'],\r
- ['›', '›', true, 'single right-pointing angle quotation mark'],\r
- ['«', '«', true, 'left pointing guillemet'],\r
- ['»', '»', true, 'right pointing guillemet'],\r
- ['‘', '‘', true, 'left single quotation mark'],\r
- ['’', '’', true, 'right single quotation mark'],\r
- ['“', '“', true, 'left double quotation mark'],\r
- ['”', '”', true, 'right double quotation mark'],\r
- ['‚', '‚', true, 'single low-9 quotation mark'],\r
- ['„', '„', true, 'double low-9 quotation mark'],\r
- ['<', '<', true, 'less-than sign'],\r
- ['>', '>', true, 'greater-than sign'],\r
- ['≤', '≤', true, 'less-than or equal to'],\r
- ['≥', '≥', true, 'greater-than or equal to'],\r
- ['–', '–', true, 'en dash'],\r
- ['—', '—', true, 'em dash'],\r
- ['¯', '¯', true, 'macron'],\r
- ['‾', '‾', true, 'overline'],\r
- ['¤', '¤', true, 'currency sign'],\r
- ['¦', '¦', true, 'broken bar'],\r
- ['¨', '¨', true, 'diaeresis'],\r
- ['¡', '¡', true, 'inverted exclamation mark'],\r
- ['¿', '¿', true, 'turned question mark'],\r
- ['ˆ', 'ˆ', true, 'circumflex accent'],\r
- ['˜', '˜', true, 'small tilde'],\r
- ['°', '°', true, 'degree sign'],\r
- ['−', '−', true, 'minus sign'],\r
- ['±', '±', true, 'plus-minus sign'],\r
- ['÷', '÷', true, 'division sign'],\r
- ['⁄', '⁄', true, 'fraction slash'],\r
- ['×', '×', true, 'multiplication sign'],\r
- ['¹', '¹', true, 'superscript one'],\r
- ['²', '²', true, 'superscript two'],\r
- ['³', '³', true, 'superscript three'],\r
- ['¼', '¼', true, 'fraction one quarter'],\r
- ['½', '½', true, 'fraction one half'],\r
- ['¾', '¾', true, 'fraction three quarters'],\r
-// math / logical\r
- ['ƒ', 'ƒ', true, 'function / florin'],\r
- ['∫', '∫', true, 'integral'],\r
- ['∑', '∑', true, 'n-ary sumation'],\r
- ['∞', '∞', true, 'infinity'],\r
- ['√', '√', true, 'square root'],\r
- ['∼', '∼', false,'similar to'],\r
- ['≅', '≅', false,'approximately equal to'],\r
- ['≈', '≈', true, 'almost equal to'],\r
- ['≠', '≠', true, 'not equal to'],\r
- ['≡', '≡', true, 'identical to'],\r
- ['∈', '∈', false,'element of'],\r
- ['∉', '∉', false,'not an element of'],\r
- ['∋', '∋', false,'contains as member'],\r
- ['∏', '∏', true, 'n-ary product'],\r
- ['∧', '∧', false,'logical and'],\r
- ['∨', '∨', false,'logical or'],\r
- ['¬', '¬', true, 'not sign'],\r
- ['∩', '∩', true, 'intersection'],\r
- ['∪', '∪', false,'union'],\r
- ['∂', '∂', true, 'partial differential'],\r
- ['∀', '∀', false,'for all'],\r
- ['∃', '∃', false,'there exists'],\r
- ['∅', '∅', false,'diameter'],\r
- ['∇', '∇', false,'backward difference'],\r
- ['∗', '∗', false,'asterisk operator'],\r
- ['∝', '∝', false,'proportional to'],\r
- ['∠', '∠', false,'angle'],\r
-// undefined\r
- ['´', '´', true, 'acute accent'],\r
- ['¸', '¸', true, 'cedilla'],\r
- ['ª', 'ª', true, 'feminine ordinal indicator'],\r
- ['º', 'º', true, 'masculine ordinal indicator'],\r
- ['†', '†', true, 'dagger'],\r
- ['‡', '‡', true, 'double dagger'],\r
-// alphabetical special chars\r
- ['À', 'À', true, 'A - grave'],\r
- ['Á', 'Á', true, 'A - acute'],\r
- ['Â', 'Â', true, 'A - circumflex'],\r
- ['Ã', 'Ã', true, 'A - tilde'],\r
- ['Ä', 'Ä', true, 'A - diaeresis'],\r
- ['Å', 'Å', true, 'A - ring above'],\r
- ['Æ', 'Æ', true, 'ligature AE'],\r
- ['Ç', 'Ç', true, 'C - cedilla'],\r
- ['È', 'È', true, 'E - grave'],\r
- ['É', 'É', true, 'E - acute'],\r
- ['Ê', 'Ê', true, 'E - circumflex'],\r
- ['Ë', 'Ë', true, 'E - diaeresis'],\r
- ['Ì', 'Ì', true, 'I - grave'],\r
- ['Í', 'Í', true, 'I - acute'],\r
- ['Î', 'Î', true, 'I - circumflex'],\r
- ['Ï', 'Ï', true, 'I - diaeresis'],\r
- ['Ð', 'Ð', true, 'ETH'],\r
- ['Ñ', 'Ñ', true, 'N - tilde'],\r
- ['Ò', 'Ò', true, 'O - grave'],\r
- ['Ó', 'Ó', true, 'O - acute'],\r
- ['Ô', 'Ô', true, 'O - circumflex'],\r
- ['Õ', 'Õ', true, 'O - tilde'],\r
- ['Ö', 'Ö', true, 'O - diaeresis'],\r
- ['Ø', 'Ø', true, 'O - slash'],\r
- ['Œ', 'Œ', true, 'ligature OE'],\r
- ['Š', 'Š', true, 'S - caron'],\r
- ['Ù', 'Ù', true, 'U - grave'],\r
- ['Ú', 'Ú', true, 'U - acute'],\r
- ['Û', 'Û', true, 'U - circumflex'],\r
- ['Ü', 'Ü', true, 'U - diaeresis'],\r
- ['Ý', 'Ý', true, 'Y - acute'],\r
- ['Ÿ', 'Ÿ', true, 'Y - diaeresis'],\r
- ['Þ', 'Þ', true, 'THORN'],\r
- ['à', 'à', true, 'a - grave'],\r
- ['á', 'á', true, 'a - acute'],\r
- ['â', 'â', true, 'a - circumflex'],\r
- ['ã', 'ã', true, 'a - tilde'],\r
- ['ä', 'ä', true, 'a - diaeresis'],\r
- ['å', 'å', true, 'a - ring above'],\r
- ['æ', 'æ', true, 'ligature ae'],\r
- ['ç', 'ç', true, 'c - cedilla'],\r
- ['è', 'è', true, 'e - grave'],\r
- ['é', 'é', true, 'e - acute'],\r
- ['ê', 'ê', true, 'e - circumflex'],\r
- ['ë', 'ë', true, 'e - diaeresis'],\r
- ['ì', 'ì', true, 'i - grave'],\r
- ['í', 'í', true, 'i - acute'],\r
- ['î', 'î', true, 'i - circumflex'],\r
- ['ï', 'ï', true, 'i - diaeresis'],\r
- ['ð', 'ð', true, 'eth'],\r
- ['ñ', 'ñ', true, 'n - tilde'],\r
- ['ò', 'ò', true, 'o - grave'],\r
- ['ó', 'ó', true, 'o - acute'],\r
- ['ô', 'ô', true, 'o - circumflex'],\r
- ['õ', 'õ', true, 'o - tilde'],\r
- ['ö', 'ö', true, 'o - diaeresis'],\r
- ['ø', 'ø', true, 'o slash'],\r
- ['œ', 'œ', true, 'ligature oe'],\r
- ['š', 'š', true, 's - caron'],\r
- ['ù', 'ù', true, 'u - grave'],\r
- ['ú', 'ú', true, 'u - acute'],\r
- ['û', 'û', true, 'u - circumflex'],\r
- ['ü', 'ü', true, 'u - diaeresis'],\r
- ['ý', 'ý', true, 'y - acute'],\r
- ['þ', 'þ', true, 'thorn'],\r
- ['ÿ', 'ÿ', true, 'y - diaeresis'],\r
- ['Α', 'Α', true, 'Alpha'],\r
- ['Β', 'Β', true, 'Beta'],\r
- ['Γ', 'Γ', true, 'Gamma'],\r
- ['Δ', 'Δ', true, 'Delta'],\r
- ['Ε', 'Ε', true, 'Epsilon'],\r
- ['Ζ', 'Ζ', true, 'Zeta'],\r
- ['Η', 'Η', true, 'Eta'],\r
- ['Θ', 'Θ', true, 'Theta'],\r
- ['Ι', 'Ι', true, 'Iota'],\r
- ['Κ', 'Κ', true, 'Kappa'],\r
- ['Λ', 'Λ', true, 'Lambda'],\r
- ['Μ', 'Μ', true, 'Mu'],\r
- ['Ν', 'Ν', true, 'Nu'],\r
- ['Ξ', 'Ξ', true, 'Xi'],\r
- ['Ο', 'Ο', true, 'Omicron'],\r
- ['Π', 'Π', true, 'Pi'],\r
- ['Ρ', 'Ρ', true, 'Rho'],\r
- ['Σ', 'Σ', true, 'Sigma'],\r
- ['Τ', 'Τ', true, 'Tau'],\r
- ['Υ', 'Υ', true, 'Upsilon'],\r
- ['Φ', 'Φ', true, 'Phi'],\r
- ['Χ', 'Χ', true, 'Chi'],\r
- ['Ψ', 'Ψ', true, 'Psi'],\r
- ['Ω', 'Ω', true, 'Omega'],\r
- ['α', 'α', true, 'alpha'],\r
- ['β', 'β', true, 'beta'],\r
- ['γ', 'γ', true, 'gamma'],\r
- ['δ', 'δ', true, 'delta'],\r
- ['ε', 'ε', true, 'epsilon'],\r
- ['ζ', 'ζ', true, 'zeta'],\r
- ['η', 'η', true, 'eta'],\r
- ['θ', 'θ', true, 'theta'],\r
- ['ι', 'ι', true, 'iota'],\r
- ['κ', 'κ', true, 'kappa'],\r
- ['λ', 'λ', true, 'lambda'],\r
- ['μ', 'μ', true, 'mu'],\r
- ['ν', 'ν', true, 'nu'],\r
- ['ξ', 'ξ', true, 'xi'],\r
- ['ο', 'ο', true, 'omicron'],\r
- ['π', 'π', true, 'pi'],\r
- ['ρ', 'ρ', true, 'rho'],\r
- ['ς', 'ς', true, 'final sigma'],\r
- ['σ', 'σ', true, 'sigma'],\r
- ['τ', 'τ', true, 'tau'],\r
- ['υ', 'υ', true, 'upsilon'],\r
- ['φ', 'φ', true, 'phi'],\r
- ['χ', 'χ', true, 'chi'],\r
- ['ψ', 'ψ', true, 'psi'],\r
- ['ω', 'ω', true, 'omega'],\r
-// symbols\r
- ['ℵ', 'ℵ', false,'alef symbol'],\r
- ['ϖ', 'ϖ', false,'pi symbol'],\r
- ['ℜ', 'ℜ', false,'real part symbol'],\r
- ['ϑ','ϑ', false,'theta symbol'],\r
- ['ϒ', 'ϒ', false,'upsilon - hook symbol'],\r
- ['℘', '℘', false,'Weierstrass p'],\r
- ['ℑ', 'ℑ', false,'imaginary part'],\r
-// arrows\r
- ['←', '←', true, 'leftwards arrow'],\r
- ['↑', '↑', true, 'upwards arrow'],\r
- ['→', '→', true, 'rightwards arrow'],\r
- ['↓', '↓', true, 'downwards arrow'],\r
- ['↔', '↔', true, 'left right arrow'],\r
- ['↵', '↵', false,'carriage return'],\r
- ['⇐', '⇐', false,'leftwards double arrow'],\r
- ['⇑', '⇑', false,'upwards double arrow'],\r
- ['⇒', '⇒', false,'rightwards double arrow'],\r
- ['⇓', '⇓', false,'downwards double arrow'],\r
- ['⇔', '⇔', false,'left right double arrow'],\r
- ['∴', '∴', false,'therefore'],\r
- ['⊂', '⊂', false,'subset of'],\r
- ['⊃', '⊃', false,'superset of'],\r
- ['⊄', '⊄', false,'not a subset of'],\r
- ['⊆', '⊆', false,'subset of or equal to'],\r
- ['⊇', '⊇', false,'superset of or equal to'],\r
- ['⊕', '⊕', false,'circled plus'],\r
- ['⊗', '⊗', false,'circled times'],\r
- ['⊥', '⊥', false,'perpendicular'],\r
- ['⋅', '⋅', false,'dot operator'],\r
- ['⌈', '⌈', false,'left ceiling'],\r
- ['⌉', '⌉', false,'right ceiling'],\r
- ['⌊', '⌊', false,'left floor'],\r
- ['⌋', '⌋', false,'right floor'],\r
- ['⟨', '〈', false,'left-pointing angle bracket'],\r
- ['⟩', '〉', false,'right-pointing angle bracket'],\r
- ['◊', '◊', true,'lozenge'],\r
- ['♠', '♠', false,'black spade suit'],\r
- ['♣', '♣', true, 'black club suit'],\r
- ['♥', '♥', true, 'black heart suit'],\r
- ['♦', '♦', true, 'black diamond suit'],\r
- [' ', ' ', false,'en space'],\r
- [' ', ' ', false,'em space'],\r
- [' ', ' ', false,'thin space'],\r
- ['‌', '‌', false,'zero width non-joiner'],\r
- ['‍', '‍', false,'zero width joiner'],\r
- ['‎', '‎', false,'left-to-right mark'],\r
- ['‏', '‏', false,'right-to-left mark'],\r
- ['­', '­', false,'soft hyphen']\r
-];\r
-\r
-tinyMCEPopup.onInit.add(function() {\r
- tinyMCEPopup.dom.setHTML('charmapView', renderCharMapHTML());\r
-});\r
-\r
-function renderCharMapHTML() {\r
- var charsPerRow = 20, tdWidth=20, tdHeight=20, i;\r
- var html = '<table border="0" cellspacing="1" cellpadding="0" width="' + (tdWidth*charsPerRow) + '"><tr height="' + tdHeight + '">';\r
- var cols=-1;\r
-\r
- for (i=0; i<charmap.length; i++) {\r
- if (charmap[i][2]==true) {\r
- cols++;\r
- html += ''\r
- + '<td class="charmap">'\r
- + '<a onmouseover="previewChar(\'' + charmap[i][1].substring(1,charmap[i][1].length) + '\',\'' + charmap[i][0].substring(1,charmap[i][0].length) + '\',\'' + charmap[i][3] + '\');" onfocus="previewChar(\'' + charmap[i][1].substring(1,charmap[i][1].length) + '\',\'' + charmap[i][0].substring(1,charmap[i][0].length) + '\',\'' + charmap[i][3] + '\');" href="javascript:void(0)" onclick="insertChar(\'' + charmap[i][1].substring(2,charmap[i][1].length-1) + '\');" onclick="return false;" onmousedown="return false;" title="' + charmap[i][3] + '">'\r
- + charmap[i][1]\r
- + '</a></td>';\r
- if ((cols+1) % charsPerRow == 0)\r
- html += '</tr><tr height="' + tdHeight + '">';\r
- }\r
- }\r
-\r
- if (cols % charsPerRow > 0) {\r
- var padd = charsPerRow - (cols % charsPerRow);\r
- for (var i=0; i<padd-1; i++)\r
- html += '<td width="' + tdWidth + '" height="' + tdHeight + '" class="charmap"> </td>';\r
- }\r
-\r
- html += '</tr></table>';\r
-\r
- return html;\r
-}\r
-\r
-function insertChar(chr) {\r
- tinyMCEPopup.execCommand('mceInsertContent', false, '&#' + chr + ';');\r
-\r
- // Refocus in window\r
- if (tinyMCEPopup.isWindow)\r
- window.focus();\r
-\r
- tinyMCEPopup.editor.focus();\r
- tinyMCEPopup.close();\r
-}\r
-\r
-function previewChar(codeA, codeB, codeN) {\r
- var elmA = document.getElementById('codeA');\r
- var elmB = document.getElementById('codeB');\r
- var elmV = document.getElementById('codeV');\r
- var elmN = document.getElementById('codeN');\r
-\r
- if (codeA=='#160;') {\r
- elmV.innerHTML = '__';\r
- } else {\r
- elmV.innerHTML = '&' + codeA;\r
- }\r
-\r
- elmB.innerHTML = '&' + codeA;\r
- elmA.innerHTML = '&' + codeB;\r
- elmN.innerHTML = codeN;\r
-}\r
+++ /dev/null
-tinyMCEPopup.requireLangPack();\r
-\r
-var detail = 50, strhex = "0123456789abcdef", i, isMouseDown = false, isMouseOver = false;\r
-\r
-var colors = [\r
- "#000000","#000033","#000066","#000099","#0000cc","#0000ff","#330000","#330033",\r
- "#330066","#330099","#3300cc","#3300ff","#660000","#660033","#660066","#660099",\r
- "#6600cc","#6600ff","#990000","#990033","#990066","#990099","#9900cc","#9900ff",\r
- "#cc0000","#cc0033","#cc0066","#cc0099","#cc00cc","#cc00ff","#ff0000","#ff0033",\r
- "#ff0066","#ff0099","#ff00cc","#ff00ff","#003300","#003333","#003366","#003399",\r
- "#0033cc","#0033ff","#333300","#333333","#333366","#333399","#3333cc","#3333ff",\r
- "#663300","#663333","#663366","#663399","#6633cc","#6633ff","#993300","#993333",\r
- "#993366","#993399","#9933cc","#9933ff","#cc3300","#cc3333","#cc3366","#cc3399",\r
- "#cc33cc","#cc33ff","#ff3300","#ff3333","#ff3366","#ff3399","#ff33cc","#ff33ff",\r
- "#006600","#006633","#006666","#006699","#0066cc","#0066ff","#336600","#336633",\r
- "#336666","#336699","#3366cc","#3366ff","#666600","#666633","#666666","#666699",\r
- "#6666cc","#6666ff","#996600","#996633","#996666","#996699","#9966cc","#9966ff",\r
- "#cc6600","#cc6633","#cc6666","#cc6699","#cc66cc","#cc66ff","#ff6600","#ff6633",\r
- "#ff6666","#ff6699","#ff66cc","#ff66ff","#009900","#009933","#009966","#009999",\r
- "#0099cc","#0099ff","#339900","#339933","#339966","#339999","#3399cc","#3399ff",\r
- "#669900","#669933","#669966","#669999","#6699cc","#6699ff","#999900","#999933",\r
- "#999966","#999999","#9999cc","#9999ff","#cc9900","#cc9933","#cc9966","#cc9999",\r
- "#cc99cc","#cc99ff","#ff9900","#ff9933","#ff9966","#ff9999","#ff99cc","#ff99ff",\r
- "#00cc00","#00cc33","#00cc66","#00cc99","#00cccc","#00ccff","#33cc00","#33cc33",\r
- "#33cc66","#33cc99","#33cccc","#33ccff","#66cc00","#66cc33","#66cc66","#66cc99",\r
- "#66cccc","#66ccff","#99cc00","#99cc33","#99cc66","#99cc99","#99cccc","#99ccff",\r
- "#cccc00","#cccc33","#cccc66","#cccc99","#cccccc","#ccccff","#ffcc00","#ffcc33",\r
- "#ffcc66","#ffcc99","#ffcccc","#ffccff","#00ff00","#00ff33","#00ff66","#00ff99",\r
- "#00ffcc","#00ffff","#33ff00","#33ff33","#33ff66","#33ff99","#33ffcc","#33ffff",\r
- "#66ff00","#66ff33","#66ff66","#66ff99","#66ffcc","#66ffff","#99ff00","#99ff33",\r
- "#99ff66","#99ff99","#99ffcc","#99ffff","#ccff00","#ccff33","#ccff66","#ccff99",\r
- "#ccffcc","#ccffff","#ffff00","#ffff33","#ffff66","#ffff99","#ffffcc","#ffffff"\r
-];\r
-\r
-var named = {\r
- '#F0F8FF':'AliceBlue','#FAEBD7':'AntiqueWhite','#00FFFF':'Aqua','#7FFFD4':'Aquamarine','#F0FFFF':'Azure','#F5F5DC':'Beige',\r
- '#FFE4C4':'Bisque','#000000':'Black','#FFEBCD':'BlanchedAlmond','#0000FF':'Blue','#8A2BE2':'BlueViolet','#A52A2A':'Brown',\r
- '#DEB887':'BurlyWood','#5F9EA0':'CadetBlue','#7FFF00':'Chartreuse','#D2691E':'Chocolate','#FF7F50':'Coral','#6495ED':'CornflowerBlue',\r
- '#FFF8DC':'Cornsilk','#DC143C':'Crimson','#00FFFF':'Cyan','#00008B':'DarkBlue','#008B8B':'DarkCyan','#B8860B':'DarkGoldenRod',\r
- '#A9A9A9':'DarkGray','#A9A9A9':'DarkGrey','#006400':'DarkGreen','#BDB76B':'DarkKhaki','#8B008B':'DarkMagenta','#556B2F':'DarkOliveGreen',\r
- '#FF8C00':'Darkorange','#9932CC':'DarkOrchid','#8B0000':'DarkRed','#E9967A':'DarkSalmon','#8FBC8F':'DarkSeaGreen','#483D8B':'DarkSlateBlue',\r
- '#2F4F4F':'DarkSlateGray','#2F4F4F':'DarkSlateGrey','#00CED1':'DarkTurquoise','#9400D3':'DarkViolet','#FF1493':'DeepPink','#00BFFF':'DeepSkyBlue',\r
- '#696969':'DimGray','#696969':'DimGrey','#1E90FF':'DodgerBlue','#B22222':'FireBrick','#FFFAF0':'FloralWhite','#228B22':'ForestGreen',\r
- '#FF00FF':'Fuchsia','#DCDCDC':'Gainsboro','#F8F8FF':'GhostWhite','#FFD700':'Gold','#DAA520':'GoldenRod','#808080':'Gray','#808080':'Grey',\r
- '#008000':'Green','#ADFF2F':'GreenYellow','#F0FFF0':'HoneyDew','#FF69B4':'HotPink','#CD5C5C':'IndianRed','#4B0082':'Indigo','#FFFFF0':'Ivory',\r
- '#F0E68C':'Khaki','#E6E6FA':'Lavender','#FFF0F5':'LavenderBlush','#7CFC00':'LawnGreen','#FFFACD':'LemonChiffon','#ADD8E6':'LightBlue',\r
- '#F08080':'LightCoral','#E0FFFF':'LightCyan','#FAFAD2':'LightGoldenRodYellow','#D3D3D3':'LightGray','#D3D3D3':'LightGrey','#90EE90':'LightGreen',\r
- '#FFB6C1':'LightPink','#FFA07A':'LightSalmon','#20B2AA':'LightSeaGreen','#87CEFA':'LightSkyBlue','#778899':'LightSlateGray','#778899':'LightSlateGrey',\r
- '#B0C4DE':'LightSteelBlue','#FFFFE0':'LightYellow','#00FF00':'Lime','#32CD32':'LimeGreen','#FAF0E6':'Linen','#FF00FF':'Magenta','#800000':'Maroon',\r
- '#66CDAA':'MediumAquaMarine','#0000CD':'MediumBlue','#BA55D3':'MediumOrchid','#9370D8':'MediumPurple','#3CB371':'MediumSeaGreen','#7B68EE':'MediumSlateBlue',\r
- '#00FA9A':'MediumSpringGreen','#48D1CC':'MediumTurquoise','#C71585':'MediumVioletRed','#191970':'MidnightBlue','#F5FFFA':'MintCream','#FFE4E1':'MistyRose','#FFE4B5':'Moccasin',\r
- '#FFDEAD':'NavajoWhite','#000080':'Navy','#FDF5E6':'OldLace','#808000':'Olive','#6B8E23':'OliveDrab','#FFA500':'Orange','#FF4500':'OrangeRed','#DA70D6':'Orchid',\r
- '#EEE8AA':'PaleGoldenRod','#98FB98':'PaleGreen','#AFEEEE':'PaleTurquoise','#D87093':'PaleVioletRed','#FFEFD5':'PapayaWhip','#FFDAB9':'PeachPuff',\r
- '#CD853F':'Peru','#FFC0CB':'Pink','#DDA0DD':'Plum','#B0E0E6':'PowderBlue','#800080':'Purple','#FF0000':'Red','#BC8F8F':'RosyBrown','#4169E1':'RoyalBlue',\r
- '#8B4513':'SaddleBrown','#FA8072':'Salmon','#F4A460':'SandyBrown','#2E8B57':'SeaGreen','#FFF5EE':'SeaShell','#A0522D':'Sienna','#C0C0C0':'Silver',\r
- '#87CEEB':'SkyBlue','#6A5ACD':'SlateBlue','#708090':'SlateGray','#708090':'SlateGrey','#FFFAFA':'Snow','#00FF7F':'SpringGreen',\r
- '#4682B4':'SteelBlue','#D2B48C':'Tan','#008080':'Teal','#D8BFD8':'Thistle','#FF6347':'Tomato','#40E0D0':'Turquoise','#EE82EE':'Violet',\r
- '#F5DEB3':'Wheat','#FFFFFF':'White','#F5F5F5':'WhiteSmoke','#FFFF00':'Yellow','#9ACD32':'YellowGreen'\r
-};\r
-\r
-function init() {\r
- var inputColor = convertRGBToHex(tinyMCEPopup.getWindowArg('input_color'));\r
-\r
- tinyMCEPopup.resizeToInnerSize();\r
-\r
- generatePicker();\r
-\r
- if (inputColor) {\r
- changeFinalColor(inputColor);\r
-\r
- col = convertHexToRGB(inputColor);\r
-\r
- if (col)\r
- updateLight(col.r, col.g, col.b);\r
- }\r
-}\r
-\r
-function insertAction() {\r
- var color = document.getElementById("color").value, f = tinyMCEPopup.getWindowArg('func');\r
-\r
- tinyMCEPopup.restoreSelection();\r
-\r
- if (f)\r
- f(color);\r
-\r
- tinyMCEPopup.close();\r
-}\r
-\r
-function showColor(color, name) {\r
- if (name)\r
- document.getElementById("colorname").innerHTML = name;\r
-\r
- document.getElementById("preview").style.backgroundColor = color;\r
- document.getElementById("color").value = color.toLowerCase();\r
-}\r
-\r
-function convertRGBToHex(col) {\r
- var re = new RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)", "gi");\r
-\r
- if (!col)\r
- return col;\r
-\r
- var rgb = col.replace(re, "$1,$2,$3").split(',');\r
- if (rgb.length == 3) {\r
- r = parseInt(rgb[0]).toString(16);\r
- g = parseInt(rgb[1]).toString(16);\r
- b = parseInt(rgb[2]).toString(16);\r
-\r
- r = r.length == 1 ? '0' + r : r;\r
- g = g.length == 1 ? '0' + g : g;\r
- b = b.length == 1 ? '0' + b : b;\r
-\r
- return "#" + r + g + b;\r
- }\r
-\r
- return col;\r
-}\r
-\r
-function convertHexToRGB(col) {\r
- if (col.indexOf('#') != -1) {\r
- col = col.replace(new RegExp('[^0-9A-F]', 'gi'), '');\r
-\r
- r = parseInt(col.substring(0, 2), 16);\r
- g = parseInt(col.substring(2, 4), 16);\r
- b = parseInt(col.substring(4, 6), 16);\r
-\r
- return {r : r, g : g, b : b};\r
- }\r
-\r
- return null;\r
-}\r
-\r
-function generatePicker() {\r
- var el = document.getElementById('light'), h = '', i;\r
-\r
- for (i = 0; i < detail; i++){\r
- h += '<div id="gs'+i+'" style="background-color:#000000; width:15px; height:3px; border-style:none; border-width:0px;"'\r
- + ' onclick="changeFinalColor(this.style.backgroundColor)"'\r
- + ' onmousedown="isMouseDown = true; return false;"'\r
- + ' onmouseup="isMouseDown = false;"'\r
- + ' onmousemove="if (isMouseDown && isMouseOver) changeFinalColor(this.style.backgroundColor); return false;"'\r
- + ' onmouseover="isMouseOver = true;"'\r
- + ' onmouseout="isMouseOver = false;"'\r
- + '></div>';\r
- }\r
-\r
- el.innerHTML = h;\r
-}\r
-\r
-function generateWebColors() {\r
- var el = document.getElementById('webcolors'), h = '', i;\r
-\r
- if (el.className == 'generated')\r
- return;\r
-\r
- h += '<table border="0" cellspacing="1" cellpadding="0">'\r
- + '<tr>';\r
-\r
- for (i=0; i<colors.length; i++) {\r
- h += '<td bgcolor="' + colors[i] + '" width="10" height="10">'\r
- + '<a href="javascript:insertAction();" onfocus="showColor(\'' + colors[i] + '\');" onmouseover="showColor(\'' + colors[i] + '\');" style="display:block;width:10px;height:10px;overflow:hidden;">'\r
- + '</a></td>';\r
- if ((i+1) % 18 == 0)\r
- h += '</tr><tr>';\r
- }\r
-\r
- h += '</table>';\r
-\r
- el.innerHTML = h;\r
- el.className = 'generated';\r
-}\r
-\r
-function generateNamedColors() {\r
- var el = document.getElementById('namedcolors'), h = '', n, v, i = 0;\r
-\r
- if (el.className == 'generated')\r
- return;\r
-\r
- for (n in named) {\r
- v = named[n];\r
- h += '<a href="javascript:insertAction();" onmouseover="showColor(\'' + n + '\',\'' + v + '\');" style="background-color: ' + n + '"><!-- IE --></a>'\r
- }\r
-\r
- el.innerHTML = h;\r
- el.className = 'generated';\r
-}\r
-\r
-function dechex(n) {\r
- return strhex.charAt(Math.floor(n / 16)) + strhex.charAt(n % 16);\r
-}\r
-\r
-function computeColor(e) {\r
- var x, y, partWidth, partDetail, imHeight, r, g, b, coef, i, finalCoef, finalR, finalG, finalB;\r
-\r
- x = e.offsetX ? e.offsetX : (e.target ? e.clientX - e.target.x : 0);\r
- y = e.offsetY ? e.offsetY : (e.target ? e.clientY - e.target.y : 0);\r
-\r
- partWidth = document.getElementById('colors').width / 6;\r
- partDetail = detail / 2;\r
- imHeight = document.getElementById('colors').height;\r
-\r
- r = (x >= 0)*(x < partWidth)*255 + (x >= partWidth)*(x < 2*partWidth)*(2*255 - x * 255 / partWidth) + (x >= 4*partWidth)*(x < 5*partWidth)*(-4*255 + x * 255 / partWidth) + (x >= 5*partWidth)*(x < 6*partWidth)*255;\r
- g = (x >= 0)*(x < partWidth)*(x * 255 / partWidth) + (x >= partWidth)*(x < 3*partWidth)*255 + (x >= 3*partWidth)*(x < 4*partWidth)*(4*255 - x * 255 / partWidth);\r
- b = (x >= 2*partWidth)*(x < 3*partWidth)*(-2*255 + x * 255 / partWidth) + (x >= 3*partWidth)*(x < 5*partWidth)*255 + (x >= 5*partWidth)*(x < 6*partWidth)*(6*255 - x * 255 / partWidth);\r
-\r
- coef = (imHeight - y) / imHeight;\r
- r = 128 + (r - 128) * coef;\r
- g = 128 + (g - 128) * coef;\r
- b = 128 + (b - 128) * coef;\r
-\r
- changeFinalColor('#' + dechex(r) + dechex(g) + dechex(b));\r
- updateLight(r, g, b);\r
-}\r
-\r
-function updateLight(r, g, b) {\r
- var i, partDetail = detail / 2, finalCoef, finalR, finalG, finalB, color;\r
-\r
- for (i=0; i<detail; i++) {\r
- if ((i>=0) && (i<partDetail)) {\r
- finalCoef = i / partDetail;\r
- finalR = dechex(255 - (255 - r) * finalCoef);\r
- finalG = dechex(255 - (255 - g) * finalCoef);\r
- finalB = dechex(255 - (255 - b) * finalCoef);\r
- } else {\r
- finalCoef = 2 - i / partDetail;\r
- finalR = dechex(r * finalCoef);\r
- finalG = dechex(g * finalCoef);\r
- finalB = dechex(b * finalCoef);\r
- }\r
-\r
- color = finalR + finalG + finalB;\r
-\r
- setCol('gs' + i, '#'+color);\r
- }\r
-}\r
-\r
-function changeFinalColor(color) {\r
- if (color.indexOf('#') == -1)\r
- color = convertRGBToHex(color);\r
-\r
- setCol('preview', color);\r
- document.getElementById('color').value = color;\r
-}\r
-\r
-function setCol(e, c) {\r
- try {\r
- document.getElementById(e).style.backgroundColor = c;\r
- } catch (ex) {\r
- // Ignore IE warning\r
- }\r
-}\r
-\r
-tinyMCEPopup.onInit.add(init);\r
+++ /dev/null
-var ImageDialog = {\r
- preInit : function() {\r
- var url;\r
-\r
- tinyMCEPopup.requireLangPack();\r
-\r
- if (url = tinyMCEPopup.getParam("external_image_list_url"))\r
- document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>');\r
- },\r
-\r
- init : function() {\r
- var f = document.forms[0], ed = tinyMCEPopup.editor;\r
-\r
- // Setup browse button\r
- document.getElementById('srcbrowsercontainer').innerHTML = getBrowserHTML('srcbrowser','src','image','theme_advanced_image');\r
- if (isVisible('srcbrowser'))\r
- document.getElementById('src').style.width = '180px';\r
-\r
- e = ed.selection.getNode();\r
-\r
- this.fillFileList('image_list', 'tinyMCEImageList');\r
-\r
- if (e.nodeName == 'IMG') {\r
- f.src.value = ed.dom.getAttrib(e, 'src');\r
- f.alt.value = ed.dom.getAttrib(e, 'alt');\r
- f.border.value = this.getAttrib(e, 'border');\r
- f.vspace.value = this.getAttrib(e, 'vspace');\r
- f.hspace.value = this.getAttrib(e, 'hspace');\r
- f.width.value = ed.dom.getAttrib(e, 'width');\r
- f.height.value = ed.dom.getAttrib(e, 'height');\r
- f.insert.value = ed.getLang('update');\r
- this.styleVal = ed.dom.getAttrib(e, 'style');\r
- selectByValue(f, 'image_list', f.src.value);\r
- selectByValue(f, 'align', this.getAttrib(e, 'align'));\r
- this.updateStyle();\r
- }\r
- },\r
-\r
- fillFileList : function(id, l) {\r
- var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;\r
-\r
- l = window[l];\r
-\r
- if (l && l.length > 0) {\r
- lst.options[lst.options.length] = new Option('', '');\r
-\r
- tinymce.each(l, function(o) {\r
- lst.options[lst.options.length] = new Option(o[0], o[1]);\r
- });\r
- } else\r
- dom.remove(dom.getParent(id, 'tr'));\r
- },\r
-\r
- update : function() {\r
- var f = document.forms[0], nl = f.elements, ed = tinyMCEPopup.editor, args = {}, el;\r
-\r
- tinyMCEPopup.restoreSelection();\r
-\r
- if (f.src.value === '') {\r
- if (ed.selection.getNode().nodeName == 'IMG') {\r
- ed.dom.remove(ed.selection.getNode());\r
- ed.execCommand('mceRepaint');\r
- }\r
-\r
- tinyMCEPopup.close();\r
- return;\r
- }\r
-\r
- if (!ed.settings.inline_styles) {\r
- args = tinymce.extend(args, {\r
- vspace : nl.vspace.value,\r
- hspace : nl.hspace.value,\r
- border : nl.border.value,\r
- align : getSelectValue(f, 'align')\r
- });\r
- } else\r
- args.style = this.styleVal;\r
-\r
- tinymce.extend(args, {\r
- src : f.src.value,\r
- alt : f.alt.value,\r
- width : f.width.value,\r
- height : f.height.value\r
- });\r
-\r
- el = ed.selection.getNode();\r
-\r
- if (el && el.nodeName == 'IMG') {\r
- ed.dom.setAttribs(el, args);\r
- } else {\r
- ed.execCommand('mceInsertContent', false, '<img id="__mce_tmp" />', {skip_undo : 1});\r
- ed.dom.setAttribs('__mce_tmp', args);\r
- ed.dom.setAttrib('__mce_tmp', 'id', '');\r
- ed.undoManager.add();\r
- }\r
-\r
- tinyMCEPopup.close();\r
- },\r
-\r
- updateStyle : function() {\r
- var dom = tinyMCEPopup.dom, st, v, f = document.forms[0];\r
-\r
- if (tinyMCEPopup.editor.settings.inline_styles) {\r
- st = tinyMCEPopup.dom.parseStyle(this.styleVal);\r
-\r
- // Handle align\r
- v = getSelectValue(f, 'align');\r
- if (v) {\r
- if (v == 'left' || v == 'right') {\r
- st['float'] = v;\r
- delete st['vertical-align'];\r
- } else {\r
- st['vertical-align'] = v;\r
- delete st['float'];\r
- }\r
- } else {\r
- delete st['float'];\r
- delete st['vertical-align'];\r
- }\r
-\r
- // Handle border\r
- v = f.border.value;\r
- if (v || v == '0') {\r
- if (v == '0')\r
- st['border'] = '0';\r
- else\r
- st['border'] = v + 'px solid black';\r
- } else\r
- delete st['border'];\r
-\r
- // Handle hspace\r
- v = f.hspace.value;\r
- if (v) {\r
- delete st['margin'];\r
- st['margin-left'] = v + 'px';\r
- st['margin-right'] = v + 'px';\r
- } else {\r
- delete st['margin-left'];\r
- delete st['margin-right'];\r
- }\r
-\r
- // Handle vspace\r
- v = f.vspace.value;\r
- if (v) {\r
- delete st['margin'];\r
- st['margin-top'] = v + 'px';\r
- st['margin-bottom'] = v + 'px';\r
- } else {\r
- delete st['margin-top'];\r
- delete st['margin-bottom'];\r
- }\r
-\r
- // Merge\r
- st = tinyMCEPopup.dom.parseStyle(dom.serializeStyle(st));\r
- this.styleVal = dom.serializeStyle(st);\r
- }\r
- },\r
-\r
- getAttrib : function(e, at) {\r
- var ed = tinyMCEPopup.editor, dom = ed.dom, v, v2;\r
-\r
- if (ed.settings.inline_styles) {\r
- switch (at) {\r
- case 'align':\r
- if (v = dom.getStyle(e, 'float'))\r
- return v;\r
-\r
- if (v = dom.getStyle(e, 'vertical-align'))\r
- return v;\r
-\r
- break;\r
-\r
- case 'hspace':\r
- v = dom.getStyle(e, 'margin-left')\r
- v2 = dom.getStyle(e, 'margin-right');\r
- if (v && v == v2)\r
- return parseInt(v.replace(/[^0-9]/g, ''));\r
-\r
- break;\r
-\r
- case 'vspace':\r
- v = dom.getStyle(e, 'margin-top')\r
- v2 = dom.getStyle(e, 'margin-bottom');\r
- if (v && v == v2)\r
- return parseInt(v.replace(/[^0-9]/g, ''));\r
-\r
- break;\r
-\r
- case 'border':\r
- v = 0;\r
-\r
- tinymce.each(['top', 'right', 'bottom', 'left'], function(sv) {\r
- sv = dom.getStyle(e, 'border-' + sv + '-width');\r
-\r
- // False or not the same as prev\r
- if (!sv || (sv != v && v !== 0)) {\r
- v = 0;\r
- return false;\r
- }\r
-\r
- if (sv)\r
- v = sv;\r
- });\r
-\r
- if (v)\r
- return parseInt(v.replace(/[^0-9]/g, ''));\r
-\r
- break;\r
- }\r
- }\r
-\r
- if (v = dom.getAttrib(e, at))\r
- return v;\r
-\r
- return '';\r
- },\r
-\r
- resetImageData : function() {\r
- var f = document.forms[0];\r
-\r
- f.width.value = f.height.value = ""; \r
- },\r
-\r
- updateImageData : function() {\r
- var f = document.forms[0], t = ImageDialog;\r
-\r
- if (f.width.value == "")\r
- f.width.value = t.preloadImg.width;\r
-\r
- if (f.height.value == "")\r
- f.height.value = t.preloadImg.height;\r
- },\r
-\r
- getImageData : function() {\r
- var f = document.forms[0];\r
-\r
- this.preloadImg = new Image();\r
- this.preloadImg.onload = this.updateImageData;\r
- this.preloadImg.onerror = this.resetImageData;\r
- this.preloadImg.src = tinyMCEPopup.editor.documentBaseURI.toAbsolute(f.src.value);\r
- }\r
-};\r
-\r
-ImageDialog.preInit();\r
-tinyMCEPopup.onInit.add(ImageDialog.init, ImageDialog);\r
+++ /dev/null
-tinyMCEPopup.requireLangPack();\r
-\r
-var LinkDialog = {\r
- preInit : function() {\r
- var url;\r
-\r
- if (url = tinyMCEPopup.getParam("external_link_list_url"))\r
- document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>');\r
- },\r
-\r
- init : function() {\r
- var f = document.forms[0], ed = tinyMCEPopup.editor;\r
-\r
- // Setup browse button\r
- document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser', 'href', 'file', 'theme_advanced_link');\r
- if (isVisible('hrefbrowser'))\r
- document.getElementById('href').style.width = '180px';\r
-\r
- this.fillClassList('class_list');\r
- this.fillFileList('link_list', 'tinyMCELinkList');\r
- this.fillTargetList('target_list');\r
-\r
- if (e = ed.dom.getParent(ed.selection.getNode(), 'A')) {\r
- f.href.value = ed.dom.getAttrib(e, 'href');\r
- f.linktitle.value = ed.dom.getAttrib(e, 'title');\r
- f.insert.value = ed.getLang('update');\r
- selectByValue(f, 'link_list', f.href.value);\r
- selectByValue(f, 'target_list', ed.dom.getAttrib(e, 'target'));\r
- selectByValue(f, 'class_list', ed.dom.getAttrib(e, 'class'));\r
- }\r
- },\r
-\r
- update : function() {\r
- var f = document.forms[0], ed = tinyMCEPopup.editor, e, b;\r
-\r
- tinyMCEPopup.restoreSelection();\r
- e = ed.dom.getParent(ed.selection.getNode(), 'A');\r
-\r
- // Remove element if there is no href\r
- if (!f.href.value) {\r
- if (e) {\r
- tinyMCEPopup.execCommand("mceBeginUndoLevel");\r
- b = ed.selection.getBookmark();\r
- ed.dom.remove(e, 1);\r
- ed.selection.moveToBookmark(b);\r
- tinyMCEPopup.execCommand("mceEndUndoLevel");\r
- tinyMCEPopup.close();\r
- return;\r
- }\r
- }\r
-\r
- tinyMCEPopup.execCommand("mceBeginUndoLevel");\r
-\r
- // Create new anchor elements\r
- if (e == null) {\r
- tinyMCEPopup.execCommand("CreateLink", false, "#mce_temp_url#", {skip_undo : 1});\r
-\r
- tinymce.each(ed.dom.select("a"), function(n) {\r
- if (ed.dom.getAttrib(n, 'href') == '#mce_temp_url#') {\r
- e = n;\r
-\r
- ed.dom.setAttribs(e, {\r
- href : f.href.value,\r
- title : f.linktitle.value,\r
- target : f.target_list ? f.target_list.options[f.target_list.selectedIndex].value : null,\r
- 'class' : f.class_list ? f.class_list.options[f.class_list.selectedIndex].value : null\r
- });\r
- }\r
- });\r
- } else {\r
- ed.dom.setAttribs(e, {\r
- href : f.href.value,\r
- title : f.linktitle.value,\r
- target : f.target_list ? f.target_list.options[f.target_list.selectedIndex].value : null,\r
- 'class' : f.class_list ? f.class_list.options[f.class_list.selectedIndex].value : null\r
- });\r
- }\r
-\r
- // Don't move caret if selection was image\r
- if (e.childNodes.length != 1 || e.firstChild.nodeName != 'IMG') {\r
- ed.focus();\r
- ed.selection.select(e);\r
- ed.selection.collapse(0);\r
- tinyMCEPopup.storeSelection();\r
- }\r
-\r
- tinyMCEPopup.execCommand("mceEndUndoLevel");\r
- tinyMCEPopup.close();\r
- },\r
-\r
- checkPrefix : function(n) {\r
- if (n.value && Validator.isEmail(n) && !/^\s*mailto:/i.test(n.value) && confirm(tinyMCEPopup.getLang('advanced_dlg.link_is_email')))\r
- n.value = 'mailto:' + n.value;\r
-\r
- if (/^\s*www./i.test(n.value) && confirm(tinyMCEPopup.getLang('advanced_dlg.link_is_external')))\r
- n.value = 'http://' + n.value;\r
- },\r
-\r
- fillFileList : function(id, l) {\r
- var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;\r
-\r
- l = window[l];\r
-\r
- if (l && l.length > 0) {\r
- lst.options[lst.options.length] = new Option('', '');\r
-\r
- tinymce.each(l, function(o) {\r
- lst.options[lst.options.length] = new Option(o[0], o[1]);\r
- });\r
- } else\r
- dom.remove(dom.getParent(id, 'tr'));\r
- },\r
-\r
- fillClassList : function(id) {\r
- var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;\r
-\r
- if (v = tinyMCEPopup.getParam('theme_advanced_styles')) {\r
- cl = [];\r
-\r
- tinymce.each(v.split(';'), function(v) {\r
- var p = v.split('=');\r
-\r
- cl.push({'title' : p[0], 'class' : p[1]});\r
- });\r
- } else\r
- cl = tinyMCEPopup.editor.dom.getClasses();\r
-\r
- if (cl.length > 0) {\r
- lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), '');\r
-\r
- tinymce.each(cl, function(o) {\r
- lst.options[lst.options.length] = new Option(o.title || o['class'], o['class']);\r
- });\r
- } else\r
- dom.remove(dom.getParent(id, 'tr'));\r
- },\r
-\r
- fillTargetList : function(id) {\r
- var dom = tinyMCEPopup.dom, lst = dom.get(id), v;\r
-\r
- lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), '');\r
- lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('advanced_dlg.link_target_same'), '_self');\r
- lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('advanced_dlg.link_target_blank'), '_blank');\r
-\r
- if (v = tinyMCEPopup.getParam('theme_advanced_link_targets')) {\r
- tinymce.each(v.split(','), function(v) {\r
- v = v.split('=');\r
- lst.options[lst.options.length] = new Option(v[0], v[1]);\r
- });\r
- }\r
- }\r
-};\r
-\r
-LinkDialog.preInit();\r
-tinyMCEPopup.onInit.add(LinkDialog.init, LinkDialog);\r
+++ /dev/null
-tinyMCEPopup.requireLangPack();\r
-tinyMCEPopup.onInit.add(onLoadInit);\r
-\r
-function saveContent() {\r
- tinyMCEPopup.editor.setContent(document.getElementById('htmlSource').value);\r
- tinyMCEPopup.close();\r
-}\r
-\r
-function onLoadInit() {\r
- tinyMCEPopup.resizeToInnerSize();\r
-\r
- // Remove Gecko spellchecking\r
- if (tinymce.isGecko)\r
- document.body.spellcheck = tinyMCEPopup.editor.getParam("gecko_spellcheck");\r
-\r
- document.getElementById('htmlSource').value = tinyMCEPopup.editor.getContent();\r
-\r
- if (tinyMCEPopup.editor.getParam("theme_advanced_source_editor_wrap", true)) {\r
- setWrap('soft');\r
- document.getElementById('wraped').checked = true;\r
- }\r
-\r
- resizeInputs();\r
-}\r
-\r
-function setWrap(val) {\r
- var v, n, s = document.getElementById('htmlSource');\r
-\r
- s.wrap = val;\r
-\r
- if (!tinymce.isIE) {\r
- v = s.value;\r
- n = s.cloneNode(false);\r
- n.setAttribute("wrap", val);\r
- s.parentNode.replaceChild(n, s);\r
- n.value = v;\r
- }\r
-}\r
-\r
-function toggleWordWrap(elm) {\r
- if (elm.checked)\r
- setWrap('soft');\r
- else\r
- setWrap('off');\r
-}\r
-\r
-var wHeight=0, wWidth=0, owHeight=0, owWidth=0;\r
-\r
-function resizeInputs() {\r
- var el = document.getElementById('htmlSource');\r
-\r
- if (!tinymce.isIE) {\r
- wHeight = self.innerHeight - 65;\r
- wWidth = self.innerWidth - 16;\r
- } else {\r
- wHeight = document.body.clientHeight - 70;\r
- wWidth = document.body.clientWidth - 16;\r
- }\r
-\r
- el.style.height = Math.abs(wHeight) + 'px';\r
- el.style.width = Math.abs(wWidth) + 'px';\r
-}\r
+++ /dev/null
-tinyMCE.addI18n('en.advanced',{\r
-style_select:"Styles",\r
-font_size:"Font size",\r
-fontdefault:"Font family",\r
-block:"Format",\r
-paragraph:"Paragraph",\r
-div:"Div",\r
-address:"Address",\r
-pre:"Preformatted",\r
-h1:"Heading 1",\r
-h2:"Heading 2",\r
-h3:"Heading 3",\r
-h4:"Heading 4",\r
-h5:"Heading 5",\r
-h6:"Heading 6",\r
-blockquote:"Blockquote",\r
-code:"Code",\r
-samp:"Code sample",\r
-dt:"Definition term ",\r
-dd:"Definition description",\r
-bold_desc:"Bold (Ctrl+B)",\r
-italic_desc:"Italic (Ctrl+I)",\r
-underline_desc:"Underline (Ctrl+U)",\r
-striketrough_desc:"Strikethrough",\r
-justifyleft_desc:"Align left",\r
-justifycenter_desc:"Align center",\r
-justifyright_desc:"Align right",\r
-justifyfull_desc:"Align full",\r
-bullist_desc:"Unordered list",\r
-numlist_desc:"Ordered list",\r
-outdent_desc:"Outdent",\r
-indent_desc:"Indent",\r
-undo_desc:"Undo (Ctrl+Z)",\r
-redo_desc:"Redo (Ctrl+Y)",\r
-link_desc:"Insert/edit link",\r
-unlink_desc:"Unlink",\r
-image_desc:"Insert/edit image",\r
-cleanup_desc:"Cleanup messy code",\r
-code_desc:"Edit HTML Source",\r
-sub_desc:"Subscript",\r
-sup_desc:"Superscript",\r
-hr_desc:"Insert horizontal ruler",\r
-removeformat_desc:"Remove formatting",\r
-custom1_desc:"Your custom description here",\r
-forecolor_desc:"Select text color",\r
-backcolor_desc:"Select background color",\r
-charmap_desc:"Insert custom character",\r
-visualaid_desc:"Toggle guidelines/invisible elements",\r
-anchor_desc:"Insert/edit anchor",\r
-cut_desc:"Cut",\r
-copy_desc:"Copy",\r
-paste_desc:"Paste",\r
-image_props_desc:"Image properties",\r
-newdocument_desc:"New document",\r
-help_desc:"Help",\r
-blockquote_desc:"Blockquote",\r
-clipboard_msg:"Copy/Cut/Paste is not available in Mozilla and Firefox.\r\nDo you want more information about this issue?",\r
-path:"Path",\r
-newdocument:"Are you sure you want clear all contents?",\r
-toolbar_focus:"Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X",\r
-more_colors:"More colors"\r
-});
\ No newline at end of file
+++ /dev/null
-tinyMCE.addI18n('en.advanced_dlg',{\r
-about_title:"About TinyMCE",\r
-about_general:"About",\r
-about_help:"Help",\r
-about_license:"License",\r
-about_plugins:"Plugins",\r
-about_plugin:"Plugin",\r
-about_author:"Author",\r
-about_version:"Version",\r
-about_loaded:"Loaded plugins",\r
-anchor_title:"Insert/edit anchor",\r
-anchor_name:"Anchor name",\r
-code_title:"HTML Source Editor",\r
-code_wordwrap:"Word wrap",\r
-colorpicker_title:"Select a color",\r
-colorpicker_picker_tab:"Picker",\r
-colorpicker_picker_title:"Color picker",\r
-colorpicker_palette_tab:"Palette",\r
-colorpicker_palette_title:"Palette colors",\r
-colorpicker_named_tab:"Named",\r
-colorpicker_named_title:"Named colors",\r
-colorpicker_color:"Color:",\r
-colorpicker_name:"Name:",\r
-charmap_title:"Select custom character",\r
-image_title:"Insert/edit image",\r
-image_src:"Image URL",\r
-image_alt:"Image description",\r
-image_list:"Image list",\r
-image_border:"Border",\r
-image_dimensions:"Dimensions",\r
-image_vspace:"Vertical space",\r
-image_hspace:"Horizontal space",\r
-image_align:"Alignment",\r
-image_align_baseline:"Baseline",\r
-image_align_top:"Top",\r
-image_align_middle:"Middle",\r
-image_align_bottom:"Bottom",\r
-image_align_texttop:"Text top",\r
-image_align_textbottom:"Text bottom",\r
-image_align_left:"Left",\r
-image_align_right:"Right",\r
-link_title:"Insert/edit link",\r
-link_url:"Link URL",\r
-link_target:"Target",\r
-link_target_same:"Open link in the same window",\r
-link_target_blank:"Open link in a new window",\r
-link_titlefield:"Title",\r
-link_is_email:"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?",\r
-link_is_external:"The URL you entered seems to external link, do you want to add the required http:// prefix?",\r
-link_list:"Link list"\r
-});
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
- <title>{#advanced_dlg.link_title}</title>\r
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
- <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
- <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
- <script type="text/javascript" src="../../utils/validate.js"></script>\r
- <script type="text/javascript" src="js/link.js"></script>\r
- <base target="_self" />\r
-</head>\r
-<body id="link" style="display: none">\r
-<form onsubmit="LinkDialog.update();return false;" action="#">\r
- <div class="tabs">\r
- <ul>\r
- <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advanced_dlg.link_title}</a></span></li>\r
- </ul>\r
- </div>\r
-\r
- <div class="panel_wrapper">\r
- <div id="general_panel" class="panel current">\r
-\r
- <table border="0" cellpadding="4" cellspacing="0">\r
- <tr>\r
- <td nowrap="nowrap"><label for="href">{#advanced_dlg.link_url}</label></td>\r
- <td><table border="0" cellspacing="0" cellpadding="0"> \r
- <tr> \r
- <td><input id="href" name="href" type="text" class="mceFocus" value="" style="width: 200px" onchange="LinkDialog.checkPrefix(this);" /></td> \r
- <td id="hrefbrowsercontainer"> </td>\r
- </tr> \r
- </table></td>\r
- </tr>\r
- <tr>\r
- <td><label for="link_list">{#advanced_dlg.link_list}</label></td>\r
- <td><select id="link_list" name="link_list" onchange="document.getElementById('href').value=this.options[this.selectedIndex].value;"></select></td>\r
- </tr>\r
- <tr>\r
- <td><label id="targetlistlabel" for="targetlist">{#advanced_dlg.link_target}</label></td>\r
- <td><select id="target_list" name="target_list"></select></td>\r
- </tr>\r
- <tr>\r
- <td nowrap="nowrap"><label for="linktitle">{#advanced_dlg.link_titlefield}</label></td>\r
- <td><input id="linktitle" name="linktitle" type="text" value="" style="width: 200px" /></td>\r
- </tr>\r
- <tr>\r
- <td><label for="class_list">{#class_name}</label></td>\r
- <td><select id="class_list" name="class_list"></select></td>\r
- </tr>\r
- </table>\r
- </div>\r
- </div>\r
-\r
- <div class="mceActionPanel">\r
- <div style="float: left">\r
- <input type="submit" id="insert" name="insert" value="{#insert}" />\r
- </div>\r
-\r
- <div style="float: right">\r
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
- </div>\r
- </div>\r
-</form>\r
-</body>\r
-</html>\r
+++ /dev/null
-body, td, pre {color:#000; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; margin:8px;}\r
-body {background:#FFF;}\r
-body.mceForceColors {background:#FFF; color:#000;}\r
-h1 {font-size: 2em}\r
-h2 {font-size: 1.5em}\r
-h3 {font-size: 1.17em}\r
-h4 {font-size: 1em}\r
-h5 {font-size: .83em}\r
-h6 {font-size: .75em}\r
-.mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;}\r
-a.mceItemAnchor {width:12px; line-height:6px; overflow:hidden; padding-left:12px; background:url(img/items.gif) no-repeat bottom left;}\r
-img.mceItemAnchor {width:12px; height:12px; background:url(img/items.gif) no-repeat;}\r
-img {border:0;}\r
-table {cursor:default}\r
-table td, table th {cursor:text}\r
-ins {border-bottom:1px solid green; text-decoration: none; color:green}\r
-del {color:red; text-decoration:line-through}\r
-cite {border-bottom:1px dashed blue}\r
-acronym {border-bottom:1px dotted #CCC; cursor:help}\r
-abbr, html\:abbr {border-bottom:1px dashed #CCC; cursor:help}\r
-\r
-/* IE */\r
-* html body {\r
-scrollbar-3dlight-color:#F0F0EE;\r
-scrollbar-arrow-color:#676662;\r
-scrollbar-base-color:#F0F0EE;\r
-scrollbar-darkshadow-color:#DDD;\r
-scrollbar-face-color:#E0E0DD;\r
-scrollbar-highlight-color:#F0F0EE;\r
-scrollbar-shadow-color:#F0F0EE;\r
-scrollbar-track-color:#F5F5F5;\r
-}\r
+++ /dev/null
-/* Generic */\r
-body {\r
-font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px;\r
-scrollbar-3dlight-color:#F0F0EE;\r
-scrollbar-arrow-color:#676662;\r
-scrollbar-base-color:#F0F0EE;\r
-scrollbar-darkshadow-color:#DDDDDD;\r
-scrollbar-face-color:#E0E0DD;\r
-scrollbar-highlight-color:#F0F0EE;\r
-scrollbar-shadow-color:#F0F0EE;\r
-scrollbar-track-color:#F5F5F5;\r
-background:#F0F0EE;\r
-padding:0;\r
-margin:8px 8px 0 8px;\r
-}\r
-\r
-html {background:#F0F0EE;}\r
-td {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}\r
-textarea {resize:none;outline:none;}\r
-a:link, a:visited {color:black;}\r
-a:hover {color:#2B6FB6;}\r
-\r
-/* Forms */\r
-fieldset {margin:0; padding:4px; border:1px solid #919B9C; font-family:Verdana, Arial; font-size:10px;}\r
-legend {color:#2B6FB6; font-weight:bold;}\r
-label.msg {display:none;}\r
-label.invalid {color:#EE0000; display:inline;}\r
-input.invalid {border:1px solid #EE0000;}\r
-input {background:#FFF; border:1px solid #CCC;}\r
-input, select, textarea {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}\r
-input, select, textarea {border:1px solid #808080;}\r
-input.radio {border:1px none #000000; background:transparent; vertical-align:middle;}\r
-input.checkbox {border:1px none #000000; background:transparent; vertical-align:middle;}\r
-.input_noborder {border:0;}\r
-\r
-/* Buttons */\r
-#insert, #cancel, input.button, .updateButton {\r
-border:0; margin:0; padding:0;\r
-font-weight:bold;\r
-width:94px; height:26px;\r
-background:url(img/buttons.png) 0 -26px;\r
-cursor:pointer;\r
-padding-bottom:2px;\r
-}\r
-\r
-#insert {background:url(img/buttons.png) 0 -52px;}\r
-#cancel {background:url(img/buttons.png) 0 0;}\r
-\r
-/* Browse */\r
-a.browse span {display:block; width:20px; height:18px; background:url(../../img/icons.gif) -860px 0; border:1px solid #FFF; margin-left:1px;}\r
-.mceOldBoxModel a.browse span {width:22px; height:20px;}\r
-a.browse:hover span {border:1px solid #0A246A; background-color:#B2BBD0;}\r
-a.browse span.disabled {border:1px solid white; -moz-opacity:0.3; opacity:0.3; filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);}\r
-a.browse:hover span.disabled {border:1px solid white; background-color:transparent;}\r
-a.pickcolor span {display:block; width:20px; height:16px; background:url(../../img/icons.gif) -840px 0; margin-left:2px;}\r
-.mceOldBoxModel a.pickcolor span {width:21px; height:17px;}\r
-a.pickcolor:hover span {background-color:#B2BBD0;}\r
-a.pickcolor:hover span.disabled {}\r
-\r
-/* Charmap */\r
-table.charmap {border:1px solid #AAA; text-align:center}\r
-td.charmap, #charmap a {width:18px; height:18px; color:#000; border:1px solid #AAA; text-align:center; font-size:12px; vertical-align:middle; line-height: 18px;}\r
-#charmap a {display:block; color:#000; text-decoration:none; border:0}\r
-#charmap a:hover {background:#CCC;color:#2B6FB6}\r
-#charmap #codeN {font-size:10px; font-family:Arial,Helvetica,sans-serif; text-align:center}\r
-#charmap #codeV {font-size:40px; height:80px; border:1px solid #AAA; text-align:center}\r
-\r
-/* Source */\r
-.wordWrapCode {vertical-align:middle; border:1px none #000000; background:transparent;}\r
-.mceActionPanel {margin-top:5px;}\r
-\r
-/* Tabs classes */\r
-.tabs {width:100%; height:18px; line-height:normal; background:url(img/tabs.gif) repeat-x 0 -72px;}\r
-.tabs ul {margin:0; padding:0; list-style:none;}\r
-.tabs li {float:left; background:url(img/tabs.gif) no-repeat 0 0; margin:0 2px 0 0; padding:0 0 0 10px; line-height:17px; height:18px; display:block;}\r
-.tabs li.current {background:url(img/tabs.gif) no-repeat 0 -18px; margin-right:2px;}\r
-.tabs span {float:left; display:block; background:url(img/tabs.gif) no-repeat right -36px; padding:0px 10px 0 0;}\r
-.tabs .current span {background:url(img/tabs.gif) no-repeat right -54px;}\r
-.tabs a {text-decoration:none; font-family:Verdana, Arial; font-size:10px;}\r
-.tabs a:link, .tabs a:visited, .tabs a:hover {color:black;}\r
-\r
-/* Panels */\r
-.panel_wrapper div.panel {display:none;}\r
-.panel_wrapper div.current {display:block; width:100%; height:300px; overflow:visible;}\r
-.panel_wrapper {border:1px solid #919B9C; border-top:0px; padding:10px; padding-top:5px; clear:both; background:white;}\r
-\r
-/* Columns */\r
-.column {float:left;}\r
-.properties {width:100%;}\r
-.properties .column1 {}\r
-.properties .column2 {text-align:left;}\r
-\r
-/* Titles */\r
-h1, h2, h3, h4 {color:#2B6FB6; margin:0; padding:0; padding-top:5px;}\r
-h3 {font-size:14px;}\r
-.title {font-size:12px; font-weight:bold; color:#2B6FB6;}\r
-\r
-/* Dialog specific */\r
-#link .panel_wrapper, #link div.current {height:125px;}\r
-#image .panel_wrapper, #image div.current {height:200px;}\r
-#plugintable thead {font-weight:bold; background:#DDD;}\r
-#plugintable, #about #plugintable td {border:1px solid #919B9C;}\r
-#plugintable {width:96%; margin-top:10px;}\r
-#pluginscontainer {height:290px; overflow:auto;}\r
-#colorpicker #preview {float:right; width:50px; height:14px;line-height:1px; border:1px solid black; margin-left:5px;}\r
-#colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;}\r
-#colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;}\r
-#colorpicker #light div {overflow:hidden;}\r
-#colorpicker #previewblock {float:right; padding-left:10px; height:20px;}\r
-#colorpicker .panel_wrapper div.current {height:175px;}\r
-#colorpicker #namedcolors {width:150px;}\r
-#colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;}\r
-#colorpicker #colornamecontainer {margin-top:5px;}\r
-#colorpicker #picker_panel fieldset {margin:auto;width:325px;}
\ No newline at end of file
+++ /dev/null
-/* Reset */\r
-.defaultSkin table, .defaultSkin tbody, .defaultSkin a, .defaultSkin img, .defaultSkin tr, .defaultSkin div, .defaultSkin td, .defaultSkin iframe, .defaultSkin span, .defaultSkin *, .defaultSkin .mceText {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000; vertical-align:baseline; width:auto; border-collapse:separate; text-align:left}\r
-.defaultSkin a:hover, .defaultSkin a:link, .defaultSkin a:visited, .defaultSkin a:active {text-decoration:none; font-weight:normal; cursor:default; color:#000}\r
-.defaultSkin table td {vertical-align:middle}\r
-\r
-/* Containers */\r
-.defaultSkin table {background:#F0F0EE}\r
-.defaultSkin iframe {display:block; background:#FFF}\r
-.defaultSkin .mceToolbar {height:26px}\r
-.defaultSkin .mceLeft {text-align:left}\r
-.defaultSkin .mceRight {text-align:right}\r
-\r
-/* External */\r
-.defaultSkin .mceExternalToolbar {position:absolute; border:1px solid #CCC; border-bottom:0; display:none;}\r
-.defaultSkin .mceExternalToolbar td.mceToolbar {padding-right:13px;}\r
-.defaultSkin .mceExternalClose {position:absolute; top:3px; right:3px; width:7px; height:7px; background:url(../../img/icons.gif) -820px 0}\r
-\r
-/* Layout */\r
-.defaultSkin table.mceLayout {border:0; border-left:1px solid #CCC; border-right:1px solid #CCC}\r
-.defaultSkin table.mceLayout tr.mceFirst td {border-top:1px solid #CCC}\r
-.defaultSkin table.mceLayout tr.mceLast td {border-bottom:1px solid #CCC}\r
-.defaultSkin table.mceToolbar, .defaultSkin tr.mceFirst .mceToolbar tr td, .defaultSkin tr.mceLast .mceToolbar tr td {border:0; margin:0; padding:0;}\r
-.defaultSkin td.mceToolbar {padding-top:1px; vertical-align:top}\r
-.defaultSkin .mceIframeContainer {border-top:1px solid #CCC; border-bottom:1px solid #CCC}\r
-.defaultSkin .mceStatusbar {font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:9pt; line-height:16px; overflow:visible; color:#000; display:block; height:20px}\r
-.defaultSkin .mceStatusbar div {float:left; margin:2px}\r
-.defaultSkin .mceStatusbar a.mceResize {display:block; float:right; background:url(../../img/icons.gif) -800px 0; width:20px; height:20px; cursor:se-resize}\r
-.defaultSkin .mceStatusbar a:hover {text-decoration:underline}\r
-.defaultSkin table.mceToolbar {margin-left:3px}\r
-.defaultSkin span.mceIcon, .defaultSkin img.mceIcon {display:block; width:20px; height:20px}\r
-.defaultSkin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px}\r
-.defaultSkin td.mceCenter {text-align:center;}\r
-.defaultSkin td.mceCenter table {margin:0 auto; text-align:left;}\r
-.defaultSkin td.mceRight table {margin:0 0 0 auto;}\r
-\r
-/* Button */\r
-.defaultSkin .mceButton {display:block; border:1px solid #F0F0EE; width:20px; height:20px; margin-right:1px}\r
-.defaultSkin a.mceButtonEnabled:hover {border:1px solid #0A246A; background-color:#B2BBD0}\r
-.defaultSkin a.mceButtonActive, .defaultSkin a.mceButtonSelected {border:1px solid #0A246A; background-color:#C2CBE0}\r
-.defaultSkin .mceButtonDisabled .mceIcon {opacity:0.3; filter:alpha(opacity=30)}\r
-.defaultSkin .mceButtonLabeled {width:auto}\r
-.defaultSkin .mceButtonLabeled span.mceIcon {float:left}\r
-.defaultSkin span.mceButtonLabel {display:block; font-size:10px; padding:4px 6px 0 22px; font-family:Tahoma,Verdana,Arial,Helvetica}\r
-.defaultSkin .mceButtonDisabled .mceButtonLabel {color:#888}\r
-\r
-/* Separator */\r
-.defaultSkin .mceSeparator {display:block; background:url(../../img/icons.gif) -180px 0; width:2px; height:20px; margin:2px 2px 0 4px}\r
-\r
-/* ListBox */\r
-.defaultSkin .mceListBox {direction:ltr}\r
-.defaultSkin .mceListBox, .defaultSkin .mceListBox a {display:block}\r
-.defaultSkin .mceListBox .mceText {padding-left:4px; width:70px; text-align:left; border:1px solid #CCC; border-right:0; background:#FFF; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; height:20px; line-height:20px; overflow:hidden}\r
-.defaultSkin .mceListBox .mceOpen {width:9px; height:20px; background:url(../../img/icons.gif) -741px 0; margin-right:2px; border:1px solid #CCC;}\r
-.defaultSkin table.mceListBoxEnabled:hover .mceText, .defaultSkin .mceListBoxHover .mceText, .defaultSkin .mceListBoxSelected .mceText {border:1px solid #A2ABC0; border-right:0; background:#FFF}\r
-.defaultSkin table.mceListBoxEnabled:hover .mceOpen, .defaultSkin .mceListBoxHover .mceOpen, .defaultSkin .mceListBoxSelected .mceOpen {background-color:#FFF; border:1px solid #A2ABC0}\r
-.defaultSkin .mceListBoxDisabled a.mceText {color:gray; background-color:transparent;}\r
-.defaultSkin .mceListBoxMenu {overflow:auto; overflow-x:hidden}\r
-.defaultSkin .mceOldBoxModel .mceListBox .mceText {height:22px}\r
-.defaultSkin .mceOldBoxModel .mceListBox .mceOpen {width:11px; height:22px;}\r
-.defaultSkin select.mceNativeListBox {font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:7pt; background:#F0F0EE; border:1px solid gray; margin-right:2px;}\r
-\r
-/* SplitButton */\r
-.defaultSkin .mceSplitButton {width:32px; height:20px; direction:ltr}\r
-.defaultSkin .mceSplitButton a, .defaultSkin .mceSplitButton span {height:20px; display:block}\r
-.defaultSkin .mceSplitButton a.mceAction {width:20px; border:1px solid #F0F0EE; border-right:0;}\r
-.defaultSkin .mceSplitButton span.mceAction {width:20px; background:url(../../img/icons.gif) 20px 20px;}\r
-.defaultSkin .mceSplitButton a.mceOpen {width:9px; border:1px solid #F0F0EE;}\r
-.defaultSkin .mceSplitButton span.mceOpen {width:9px; background:url(../../img/icons.gif) -741px 0;}\r
-.defaultSkin table.mceSplitButtonEnabled:hover a.mceAction, .defaultSkin .mceSplitButtonHover a.mceAction, .defaultSkin .mceSplitButtonSelected a.mceAction {border:1px solid #0A246A; border-right:0; background-color:#B2BBD0}\r
-.defaultSkin table.mceSplitButtonEnabled:hover a.mceOpen, .defaultSkin .mceSplitButtonHover a.mceOpen, .defaultSkin .mceSplitButtonSelected a.mceOpen {border:1px solid #0A246A;}\r
-.defaultSkin table.mceSplitButtonEnabled:hover span.mceOpen, .defaultSkin .mceSplitButtonHover span.mceOpen, .defaultSkin .mceSplitButtonSelected span.mceOpen {background-color:#B2BBD0}\r
-.defaultSkin .mceSplitButtonDisabled .mceAction, .defaultSkin .mceSplitButtonDisabled span.mceOpen {opacity:0.3; filter:alpha(opacity=30)}\r
-.defaultSkin .mceSplitButtonActive a.mceAction {border:1px solid #0A246A; background-color:#C2CBE0}\r
-.defaultSkin .mceSplitButtonActive a.mceOpen {border-left:0;}\r
-\r
-/* ColorSplitButton */\r
-.defaultSkin div.mceColorSplitMenu table {background:#FFF; border:1px solid gray}\r
-.defaultSkin .mceColorSplitMenu td {padding:2px}\r
-.defaultSkin .mceColorSplitMenu a {display:block; width:9px; height:9px; overflow:hidden; border:1px solid #808080}\r
-.defaultSkin .mceColorSplitMenu td.mceMoreColors {padding:1px 3px 1px 1px}\r
-.defaultSkin .mceColorSplitMenu a.mceMoreColors {width:100%; height:auto; text-align:center; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; line-height:20px; border:1px solid #FFF}\r
-.defaultSkin .mceColorSplitMenu a.mceMoreColors:hover {border:1px solid #0A246A; background-color:#B6BDD2}\r
-.defaultSkin a.mceMoreColors:hover {border:1px solid #0A246A}\r
-.defaultSkin .mceColorPreview {margin-left:2px; width:16px; height:4px; overflow:hidden; background:#9a9b9a}\r
-.defaultSkin .mce_forecolor span.mceAction, .defaultSkin .mce_backcolor span.mceAction {overflow:hidden; height:16px}\r
-\r
-/* Menu */\r
-.defaultSkin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid #D4D0C8}\r
-.defaultSkin .mceNoIcons span.mceIcon {width:0;}\r
-.defaultSkin .mceNoIcons a .mceText {padding-left:10px}\r
-.defaultSkin .mceMenu table {background:#FFF}\r
-.defaultSkin .mceMenu a, .defaultSkin .mceMenu span, .defaultSkin .mceMenu {display:block}\r
-.defaultSkin .mceMenu td {height:20px}\r
-.defaultSkin .mceMenu a {position:relative;padding:3px 0 4px 0}\r
-.defaultSkin .mceMenu .mceText {position:relative; display:block; font-family:Tahoma,Verdana,Arial,Helvetica; color:#000; cursor:default; margin:0; padding:0 25px 0 25px; display:block}\r
-.defaultSkin .mceMenu span.mceText, .defaultSkin .mceMenu .mcePreview {font-size:11px}\r
-.defaultSkin .mceMenu pre.mceText {font-family:Monospace}\r
-.defaultSkin .mceMenu .mceIcon {position:absolute; top:0; left:0; width:22px;}\r
-.defaultSkin .mceMenu .mceMenuItemEnabled a:hover, .defaultSkin .mceMenu .mceMenuItemActive {background-color:#dbecf3}\r
-.defaultSkin td.mceMenuItemSeparator {background:#DDD; height:1px}\r
-.defaultSkin .mceMenuItemTitle a {border:0; background:#EEE; border-bottom:1px solid #DDD}\r
-.defaultSkin .mceMenuItemTitle span.mceText {color:#000; font-weight:bold; padding-left:4px}\r
-.defaultSkin .mceMenuItemDisabled .mceText {color:#888}\r
-.defaultSkin .mceMenuItemSelected .mceIcon {background:url(img/menu_check.gif)}\r
-.defaultSkin .mceNoIcons .mceMenuItemSelected a {background:url(img/menu_arrow.gif) no-repeat -6px center}\r
-.defaultSkin .mceMenu span.mceMenuLine {display:none}\r
-.defaultSkin .mceMenuItemSub a {background:url(img/menu_arrow.gif) no-repeat top right;}\r
-\r
-/* Progress,Resize */\r
-.defaultSkin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; filter:alpha(opacity=50); background:#FFF}\r
-.defaultSkin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px}\r
-.defaultSkin .mcePlaceHolder {border:1px dotted gray}\r
-\r
-/* Formats */\r
-.defaultSkin .mce_formatPreview a {font-size:10px}\r
-.defaultSkin .mce_p span.mceText {}\r
-.defaultSkin .mce_address span.mceText {font-style:italic}\r
-.defaultSkin .mce_pre span.mceText {font-family:monospace}\r
-.defaultSkin .mce_h1 span.mceText {font-weight:bolder; font-size: 2em}\r
-.defaultSkin .mce_h2 span.mceText {font-weight:bolder; font-size: 1.5em}\r
-.defaultSkin .mce_h3 span.mceText {font-weight:bolder; font-size: 1.17em}\r
-.defaultSkin .mce_h4 span.mceText {font-weight:bolder; font-size: 1em}\r
-.defaultSkin .mce_h5 span.mceText {font-weight:bolder; font-size: .83em}\r
-.defaultSkin .mce_h6 span.mceText {font-weight:bolder; font-size: .75em}\r
-\r
-/* Theme */\r
-.defaultSkin span.mce_bold {background-position:0 0}\r
-.defaultSkin span.mce_italic {background-position:-60px 0}\r
-.defaultSkin span.mce_underline {background-position:-140px 0}\r
-.defaultSkin span.mce_strikethrough {background-position:-120px 0}\r
-.defaultSkin span.mce_undo {background-position:-160px 0}\r
-.defaultSkin span.mce_redo {background-position:-100px 0}\r
-.defaultSkin span.mce_cleanup {background-position:-40px 0}\r
-.defaultSkin span.mce_bullist {background-position:-20px 0}\r
-.defaultSkin span.mce_numlist {background-position:-80px 0}\r
-.defaultSkin span.mce_justifyleft {background-position:-460px 0}\r
-.defaultSkin span.mce_justifyright {background-position:-480px 0}\r
-.defaultSkin span.mce_justifycenter {background-position:-420px 0}\r
-.defaultSkin span.mce_justifyfull {background-position:-440px 0}\r
-.defaultSkin span.mce_anchor {background-position:-200px 0}\r
-.defaultSkin span.mce_indent {background-position:-400px 0}\r
-.defaultSkin span.mce_outdent {background-position:-540px 0}\r
-.defaultSkin span.mce_link {background-position:-500px 0}\r
-.defaultSkin span.mce_unlink {background-position:-640px 0}\r
-.defaultSkin span.mce_sub {background-position:-600px 0}\r
-.defaultSkin span.mce_sup {background-position:-620px 0}\r
-.defaultSkin span.mce_removeformat {background-position:-580px 0}\r
-.defaultSkin span.mce_newdocument {background-position:-520px 0}\r
-.defaultSkin span.mce_image {background-position:-380px 0}\r
-.defaultSkin span.mce_help {background-position:-340px 0}\r
-.defaultSkin span.mce_code {background-position:-260px 0}\r
-.defaultSkin span.mce_hr {background-position:-360px 0}\r
-.defaultSkin span.mce_visualaid {background-position:-660px 0}\r
-.defaultSkin span.mce_charmap {background-position:-240px 0}\r
-.defaultSkin span.mce_paste {background-position:-560px 0}\r
-.defaultSkin span.mce_copy {background-position:-700px 0}\r
-.defaultSkin span.mce_cut {background-position:-680px 0}\r
-.defaultSkin span.mce_blockquote {background-position:-220px 0}\r
-.defaultSkin .mce_forecolor span.mceAction {background-position:-720px 0}\r
-.defaultSkin .mce_backcolor span.mceAction {background-position:-760px 0}\r
-.defaultSkin span.mce_forecolorpicker {background-position:-720px 0}\r
-.defaultSkin span.mce_backcolorpicker {background-position:-760px 0}\r
-\r
-/* Plugins */\r
-.defaultSkin span.mce_advhr {background-position:-0px -20px}\r
-.defaultSkin span.mce_ltr {background-position:-20px -20px}\r
-.defaultSkin span.mce_rtl {background-position:-40px -20px}\r
-.defaultSkin span.mce_emotions {background-position:-60px -20px}\r
-.defaultSkin span.mce_fullpage {background-position:-80px -20px}\r
-.defaultSkin span.mce_fullscreen {background-position:-100px -20px}\r
-.defaultSkin span.mce_iespell {background-position:-120px -20px}\r
-.defaultSkin span.mce_insertdate {background-position:-140px -20px}\r
-.defaultSkin span.mce_inserttime {background-position:-160px -20px}\r
-.defaultSkin span.mce_absolute {background-position:-180px -20px}\r
-.defaultSkin span.mce_backward {background-position:-200px -20px}\r
-.defaultSkin span.mce_forward {background-position:-220px -20px}\r
-.defaultSkin span.mce_insert_layer {background-position:-240px -20px}\r
-.defaultSkin span.mce_insertlayer {background-position:-260px -20px}\r
-.defaultSkin span.mce_movebackward {background-position:-280px -20px}\r
-.defaultSkin span.mce_moveforward {background-position:-300px -20px}\r
-.defaultSkin span.mce_media {background-position:-320px -20px}\r
-.defaultSkin span.mce_nonbreaking {background-position:-340px -20px}\r
-.defaultSkin span.mce_pastetext {background-position:-360px -20px}\r
-.defaultSkin span.mce_pasteword {background-position:-380px -20px}\r
-.defaultSkin span.mce_selectall {background-position:-400px -20px}\r
-.defaultSkin span.mce_preview {background-position:-420px -20px}\r
-.defaultSkin span.mce_print {background-position:-440px -20px}\r
-.defaultSkin span.mce_cancel {background-position:-460px -20px}\r
-.defaultSkin span.mce_save {background-position:-480px -20px}\r
-.defaultSkin span.mce_replace {background-position:-500px -20px}\r
-.defaultSkin span.mce_search {background-position:-520px -20px}\r
-.defaultSkin span.mce_styleprops {background-position:-560px -20px}\r
-.defaultSkin span.mce_table {background-position:-580px -20px}\r
-.defaultSkin span.mce_cell_props {background-position:-600px -20px}\r
-.defaultSkin span.mce_delete_table {background-position:-620px -20px}\r
-.defaultSkin span.mce_delete_col {background-position:-640px -20px}\r
-.defaultSkin span.mce_delete_row {background-position:-660px -20px}\r
-.defaultSkin span.mce_col_after {background-position:-680px -20px}\r
-.defaultSkin span.mce_col_before {background-position:-700px -20px}\r
-.defaultSkin span.mce_row_after {background-position:-720px -20px}\r
-.defaultSkin span.mce_row_before {background-position:-740px -20px}\r
-.defaultSkin span.mce_merge_cells {background-position:-760px -20px}\r
-.defaultSkin span.mce_table_props {background-position:-980px -20px}\r
-.defaultSkin span.mce_row_props {background-position:-780px -20px}\r
-.defaultSkin span.mce_split_cells {background-position:-800px -20px}\r
-.defaultSkin span.mce_template {background-position:-820px -20px}\r
-.defaultSkin span.mce_visualchars {background-position:-840px -20px}\r
-.defaultSkin span.mce_abbr {background-position:-860px -20px}\r
-.defaultSkin span.mce_acronym {background-position:-880px -20px}\r
-.defaultSkin span.mce_attribs {background-position:-900px -20px}\r
-.defaultSkin span.mce_cite {background-position:-920px -20px}\r
-.defaultSkin span.mce_del {background-position:-940px -20px}\r
-.defaultSkin span.mce_ins {background-position:-960px -20px}\r
-.defaultSkin span.mce_pagebreak {background-position:0 -40px}\r
-.defaultSkin .mce_spellchecker span.mceAction {background-position:-540px -20px}\r
+++ /dev/null
-body, td, pre {color:#000; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; margin:8px;}\r
-body {background:#FFF;}\r
-body.mceForceColors {background:#FFF; color:#000;}\r
-h1 {font-size: 2em}\r
-h2 {font-size: 1.5em}\r
-h3 {font-size: 1.17em}\r
-h4 {font-size: 1em}\r
-h5 {font-size: .83em}\r
-h6 {font-size: .75em}\r
-.mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;}\r
-a.mceItemAnchor {width:12px; line-height:6px; overflow:hidden; padding-left:12px; background:url(../default/img/items.gif) no-repeat bottom left;}\r
-img.mceItemAnchor {width:12px; height:12px; background:url(../default/img/items.gif) no-repeat;}\r
-img {border:0;}\r
-table {cursor:default}\r
-table td, table th {cursor:text}\r
-ins {border-bottom:1px solid green; text-decoration: none; color:green}\r
-del {color:red; text-decoration:line-through}\r
-cite {border-bottom:1px dashed blue}\r
-acronym {border-bottom:1px dotted #CCC; cursor:help}\r
-abbr, html\:abbr {border-bottom:1px dashed #CCC; cursor:help}\r
-\r
-/* IE */\r
-* html body {\r
-scrollbar-3dlight-color:#F0F0EE;\r
-scrollbar-arrow-color:#676662;\r
-scrollbar-base-color:#F0F0EE;\r
-scrollbar-darkshadow-color:#DDD;\r
-scrollbar-face-color:#E0E0DD;\r
-scrollbar-highlight-color:#F0F0EE;\r
-scrollbar-shadow-color:#F0F0EE;\r
-scrollbar-track-color:#F5F5F5;\r
-}\r
+++ /dev/null
-/* Generic */\r
-body {\r
-font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px;\r
-scrollbar-3dlight-color:#F0F0EE;\r
-scrollbar-arrow-color:#676662;\r
-scrollbar-base-color:#F0F0EE;\r
-scrollbar-darkshadow-color:#DDDDDD;\r
-scrollbar-face-color:#E0E0DD;\r
-scrollbar-highlight-color:#F0F0EE;\r
-scrollbar-shadow-color:#F0F0EE;\r
-scrollbar-track-color:#F5F5F5;\r
-background:#F0F0EE;\r
-padding:0;\r
-margin:8px 8px 0 8px;\r
-}\r
-\r
-html {background:#F0F0EE;}\r
-td {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}\r
-textarea {resize:none;outline:none;}\r
-a:link, a:visited {color:black;}\r
-a:hover {color:#2B6FB6;}\r
-\r
-/* Forms */\r
-fieldset {margin:0; padding:4px; border:1px solid #919B9C; font-family:Verdana, Arial; font-size:10px;}\r
-legend {color:#2B6FB6; font-weight:bold;}\r
-label.msg {display:none;}\r
-label.invalid {color:#EE0000; display:inline;}\r
-input.invalid {border:1px solid #EE0000;}\r
-input {background:#FFF; border:1px solid #CCC;}\r
-input, select, textarea {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}\r
-input, select, textarea {border:1px solid #808080;}\r
-input.radio {border:1px none #000000; background:transparent; vertical-align:middle;}\r
-input.checkbox {border:1px none #000000; background:transparent; vertical-align:middle;}\r
-.input_noborder {border:0;}\r
-\r
-/* Buttons */\r
-#insert, #cancel, input.button, .updateButton {\r
-border:0; margin:0; padding:0;\r
-font-weight:bold;\r
-width:94px; height:26px;\r
-background:url(../default/img/buttons.png) 0 -26px;\r
-cursor:pointer;\r
-padding-bottom:2px;\r
-}\r
-\r
-#insert {background:url(../default/img/buttons.png) 0 -52px;}\r
-#cancel {background:url(../default/img/buttons.png) 0 0;}\r
-\r
-/* Browse */\r
-a.browse span {display:block; width:20px; height:18px; background:url(../../img/icons.gif) -860px 0; border:1px solid #FFF; margin-left:1px;}\r
-.mceOldBoxModel a.browse span {width:22px; height:20px;}\r
-a.browse:hover span {border:1px solid #0A246A; background-color:#B2BBD0;}\r
-a.browse span.disabled {border:1px solid white; -moz-opacity:0.3; opacity:0.3; filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);}\r
-a.browse:hover span.disabled {border:1px solid white; background-color:transparent;}\r
-a.pickcolor span {display:block; width:20px; height:16px; background:url(../../img/icons.gif) -840px 0; margin-left:2px;}\r
-.mceOldBoxModel a.pickcolor span {width:21px; height:17px;}\r
-a.pickcolor:hover span {background-color:#B2BBD0;}\r
-a.pickcolor:hover span.disabled {}\r
-\r
-/* Charmap */\r
-table.charmap {border:1px solid #AAA; text-align:center}\r
-td.charmap, #charmap a {width:18px; height:18px; color:#000; border:1px solid #AAA; text-align:center; font-size:12px; vertical-align:middle; line-height: 18px;}\r
-#charmap a {display:block; color:#000; text-decoration:none; border:0}\r
-#charmap a:hover {background:#CCC;color:#2B6FB6}\r
-#charmap #codeN {font-size:10px; font-family:Arial,Helvetica,sans-serif; text-align:center}\r
-#charmap #codeV {font-size:40px; height:80px; border:1px solid #AAA; text-align:center}\r
-\r
-/* Source */\r
-.wordWrapCode {vertical-align:middle; border:1px none #000000; background:transparent;}\r
-.mceActionPanel {margin-top:5px;}\r
-\r
-/* Tabs classes */\r
-.tabs {width:100%; height:18px; line-height:normal; background:url(../default/img/tabs.gif) repeat-x 0 -72px;}\r
-.tabs ul {margin:0; padding:0; list-style:none;}\r
-.tabs li {float:left; background:url(../default/img/tabs.gif) no-repeat 0 0; margin:0 2px 0 0; padding:0 0 0 10px; line-height:17px; height:18px; display:block;}\r
-.tabs li.current {background:url(../default/img/tabs.gif) no-repeat 0 -18px; margin-right:2px;}\r
-.tabs span {float:left; display:block; background:url(../default/img/tabs.gif) no-repeat right -36px; padding:0px 10px 0 0;}\r
-.tabs .current span {background:url(../default/img/tabs.gif) no-repeat right -54px;}\r
-.tabs a {text-decoration:none; font-family:Verdana, Arial; font-size:10px;}\r
-.tabs a:link, .tabs a:visited, .tabs a:hover {color:black;}\r
-\r
-/* Panels */\r
-.panel_wrapper div.panel {display:none;}\r
-.panel_wrapper div.current {display:block; width:100%; height:300px; overflow:visible;}\r
-.panel_wrapper {border:1px solid #919B9C; border-top:0px; padding:10px; padding-top:5px; clear:both; background:white;}\r
-\r
-/* Columns */\r
-.column {float:left;}\r
-.properties {width:100%;}\r
-.properties .column1 {}\r
-.properties .column2 {text-align:left;}\r
-\r
-/* Titles */\r
-h1, h2, h3, h4 {color:#2B6FB6; margin:0; padding:0; padding-top:5px;}\r
-h3 {font-size:14px;}\r
-.title {font-size:12px; font-weight:bold; color:#2B6FB6;}\r
-\r
-/* Dialog specific */\r
-#link .panel_wrapper, #link div.current {height:125px;}\r
-#image .panel_wrapper, #image div.current {height:200px;}\r
-#plugintable thead {font-weight:bold; background:#DDD;}\r
-#plugintable, #about #plugintable td {border:1px solid #919B9C;}\r
-#plugintable {width:96%; margin-top:10px;}\r
-#pluginscontainer {height:290px; overflow:auto;}\r
-#colorpicker #preview {float:right; width:50px; height:14px;line-height:1px; border:1px solid black; margin-left:5px;}\r
-#colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;}\r
-#colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;}\r
-#colorpicker #light div {overflow:hidden;}\r
-#colorpicker #previewblock {float:right; padding-left:10px; height:20px;}\r
-#colorpicker .panel_wrapper div.current {height:175px;}\r
-#colorpicker #namedcolors {width:150px;}\r
-#colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;}\r
-#colorpicker #colornamecontainer {margin-top:5px;}\r
+++ /dev/null
-/* Reset */\r
-.o2k7Skin table, .o2k7Skin tbody, .o2k7Skin a, .o2k7Skin img, .o2k7Skin tr, .o2k7Skin div, .o2k7Skin td, .o2k7Skin iframe, .o2k7Skin span, .o2k7Skin *, .o2k7Skin .mceText {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000; vertical-align:baseline; width:auto; border-collapse:separate; text-align:left}\r
-.o2k7Skin a:hover, .o2k7Skin a:link, .o2k7Skin a:visited, .o2k7Skin a:active {text-decoration:none; font-weight:normal; cursor:default; color:#000}\r
-.o2k7Skin table td {vertical-align:middle}\r
-\r
-/* Containers */\r
-.o2k7Skin table {background:#E5EFFD}\r
-.o2k7Skin iframe {display:block; background:#FFF}\r
-.o2k7Skin .mceToolbar {height:26px}\r
-\r
-/* External */\r
-.o2k7Skin .mceExternalToolbar {position:absolute; border:1px solid #ABC6DD; border-bottom:0; display:none}\r
-.o2k7Skin .mceExternalToolbar td.mceToolbar {padding-right:13px;}\r
-.o2k7Skin .mceExternalClose {position:absolute; top:3px; right:3px; width:7px; height:7px; background:url(../../img/icons.gif) -820px 0}\r
-\r
-/* Layout */\r
-.o2k7Skin table.mceLayout {border:0; border-left:1px solid #ABC6DD; border-right:1px solid #ABC6DD}\r
-.o2k7Skin table.mceLayout tr.mceFirst td {border-top:1px solid #ABC6DD}\r
-.o2k7Skin table.mceLayout tr.mceLast td {border-bottom:1px solid #ABC6DD}\r
-.o2k7Skin table.mceToolbar, .o2k7Skin tr.mceFirst .mceToolbar tr td, .o2k7Skin tr.mceLast .mceToolbar tr td {border:0; margin:0; padding:0}\r
-.o2k7Skin .mceIframeContainer {border-top:1px solid #ABC6DD; border-bottom:1px solid #ABC6DD}\r
-.o2k7Skin .mceStatusbar {display:block; font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:9pt; line-height:16px; overflow:visible; color:#000; height:20px}\r
-.o2k7Skin .mceStatusbar div {float:left; padding:2px}\r
-.o2k7Skin .mceStatusbar a.mceResize {display:block; float:right; background:url(../../img/icons.gif) -800px 0; width:20px; height:20px; cursor:se-resize}\r
-.o2k7Skin .mceStatusbar a:hover {text-decoration:underline}\r
-.o2k7Skin table.mceToolbar {margin-left:3px}\r
-.o2k7Skin .mceToolbar .mceToolbarStart span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px; margin-left:3px;}\r
-.o2k7Skin .mceToolbar td.mceFirst span {margin:0}\r
-.o2k7Skin .mceToolbar .mceToolbarEnd span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px}\r
-.o2k7Skin .mceToolbar .mceToolbarEndListBox span, .o2k7Skin .mceToolbar .mceToolbarStartListBox span {display:none}\r
-.o2k7Skin span.mceIcon, .o2k7Skin img.mceIcon {display:block; width:20px; height:20px}\r
-.o2k7Skin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px}\r
-.o2k7Skin td.mceCenter {text-align:center;}\r
-.o2k7Skin td.mceCenter table {margin:0 auto; text-align:left;}\r
-.o2k7Skin td.mceRight table {margin:0 0 0 auto;}\r
-\r
-/* Button */\r
-.o2k7Skin .mceButton {display:block; background:url(img/button_bg.png); width:22px; height:22px}\r
-.o2k7Skin a.mceButton span, .o2k7Skin a.mceButton img {margin-left:1px}\r
-.o2k7Skin .mceOldBoxModel a.mceButton span, .o2k7Skin .mceOldBoxModel a.mceButton img {margin:0 0 0 1px}\r
-.o2k7Skin a.mceButtonEnabled:hover {background-color:#B2BBD0; background-position:0 -22px}\r
-.o2k7Skin a.mceButtonActive, .o2k7Skin a.mceButtonSelected {background-position:0 -44px}\r
-.o2k7Skin .mceButtonDisabled .mceIcon {opacity:0.3; filter:alpha(opacity=30)}\r
-.o2k7Skin .mceButtonLabeled {width:auto}\r
-.o2k7Skin .mceButtonLabeled span.mceIcon {float:left}\r
-.o2k7Skin span.mceButtonLabel {display:block; font-size:10px; padding:4px 6px 0 22px; font-family:Tahoma,Verdana,Arial,Helvetica}\r
-.o2k7Skin .mceButtonDisabled .mceButtonLabel {color:#888}\r
-\r
-/* Separator */\r
-.o2k7Skin .mceSeparator {display:block; background:url(img/button_bg.png) -22px 0; width:5px; height:22px}\r
-\r
-/* ListBox */\r
-.o2k7Skin .mceListBox {margin-left:3px}\r
-.o2k7Skin .mceListBox, .o2k7Skin .mceListBox a {display:block}\r
-.o2k7Skin .mceListBox .mceText {padding-left:4px; text-align:left; width:70px; border:1px solid #b3c7e1; border-right:0; background:#eaf2fb; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; height:20px; line-height:20px; overflow:hidden}\r
-.o2k7Skin .mceListBox .mceOpen {width:14px; height:22px; background:url(img/button_bg.png) -66px 0}\r
-.o2k7Skin table.mceListBoxEnabled:hover .mceText, .o2k7Skin .mceListBoxHover .mceText, .o2k7Skin .mceListBoxSelected .mceText {background:#FFF}\r
-.o2k7Skin table.mceListBoxEnabled:hover .mceOpen, .o2k7Skin .mceListBoxHover .mceOpen, .o2k7Skin .mceListBoxSelected .mceOpen {background-position:-66px -22px}\r
-.o2k7Skin .mceListBoxDisabled .mceText {color:gray}\r
-.o2k7Skin .mceListBoxMenu {overflow:auto; overflow-x:hidden}\r
-.o2k7Skin .mceOldBoxModel .mceListBox .mceText {height:22px}\r
-.o2k7Skin select.mceListBox {font-family:Tahoma,Verdana,Arial,Helvetica; font-size:12px; border:1px solid #b3c7e1; background:#FFF;}\r
-\r
-/* SplitButton */\r
-.o2k7Skin .mceSplitButton, .o2k7Skin .mceSplitButton a, .o2k7Skin .mceSplitButton span {display:block; height:22px}\r
-.o2k7Skin .mceSplitButton {background:url(img/button_bg.png)}\r
-.o2k7Skin .mceSplitButton a.mceAction {width:22px}\r
-.o2k7Skin .mceSplitButton span.mceAction {width:22px; background:url(../../img/icons.gif) 20px 20px}\r
-.o2k7Skin .mceSplitButton a.mceOpen {width:10px}\r
-.o2k7Skin .mceSplitButton span.mceOpen {width:10px; background:url(img/button_bg.png) -44px 0}\r
-.o2k7Skin table.mceSplitButtonEnabled:hover a.mceAction, .o2k7Skin .mceSplitButtonHover a.mceAction, .o2k7Skin .mceSplitButtonSelected {background:url(img/button_bg.png) 0 -22px}\r
-.o2k7Skin table.mceSplitButtonEnabled:hover span.mceOpen, .o2k7Skin .mceSplitButtonHover span.mceOpen, .o2k7Skin .mceSplitButtonSelected span.mceOpen {background-position:-44px -44px}\r
-.o2k7Skin .mceSplitButtonDisabled .mceAction {opacity:0.3; filter:alpha(opacity=30)}\r
-.o2k7Skin .mceSplitButtonActive {background-position:0 -44px}\r
-\r
-/* ColorSplitButton */\r
-.o2k7Skin div.mceColorSplitMenu table {background:#FFF; border:1px solid gray}\r
-.o2k7Skin .mceColorSplitMenu td {padding:2px}\r
-.o2k7Skin .mceColorSplitMenu a {display:block; width:9px; height:9px; overflow:hidden; border:1px solid #808080}\r
-.o2k7Skin .mceColorSplitMenu td.mceMoreColors {padding:1px 3px 1px 1px}\r
-.o2k7Skin .mceColorSplitMenu a.mceMoreColors {width:100%; height:auto; text-align:center; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; line-height:20px; border:1px solid #FFF}\r
-.o2k7Skin .mceColorSplitMenu a.mceMoreColors:hover {border:1px solid #0A246A; background-color:#B6BDD2}\r
-.o2k7Skin a.mceMoreColors:hover {border:1px solid #0A246A}\r
-.o2k7Skin .mceColorPreview {margin-left:2px; width:16px; height:4px; overflow:hidden; background:#9a9b9a;overflow:hidden}\r
-.o2k7Skin .mce_forecolor span.mceAction, .o2k7Skin .mce_backcolor span.mceAction {height:15px;overflow:hidden}\r
-\r
-/* Menu */\r
-.o2k7Skin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid #ABC6DD}\r
-.o2k7Skin .mceNoIcons span.mceIcon {width:0;}\r
-.o2k7Skin .mceNoIcons a .mceText {padding-left:10px}\r
-.o2k7Skin .mceMenu table {background:#FFF}\r
-.o2k7Skin .mceMenu a, .o2k7Skin .mceMenu span, .o2k7Skin .mceMenu {display:block}\r
-.o2k7Skin .mceMenu td {height:20px}\r
-.o2k7Skin .mceMenu a {position:relative;padding:3px 0 4px 0}\r
-.o2k7Skin .mceMenu .mceText {position:relative; display:block; font-family:Tahoma,Verdana,Arial,Helvetica; color:#000; cursor:default; margin:0; padding:0 25px 0 25px; display:block}\r
-.o2k7Skin .mceMenu span.mceText, .o2k7Skin .mceMenu .mcePreview {font-size:11px}\r
-.o2k7Skin .mceMenu pre.mceText {font-family:Monospace}\r
-.o2k7Skin .mceMenu .mceIcon {position:absolute; top:0; left:0; width:22px;}\r
-.o2k7Skin .mceMenu .mceMenuItemEnabled a:hover, .o2k7Skin .mceMenu .mceMenuItemActive {background-color:#dbecf3}\r
-.o2k7Skin td.mceMenuItemSeparator {background:#DDD; height:1px}\r
-.o2k7Skin .mceMenuItemTitle a {border:0; background:#E5EFFD; border-bottom:1px solid #ABC6DD}\r
-.o2k7Skin .mceMenuItemTitle span.mceText {color:#000; font-weight:bold; padding-left:4px}\r
-.o2k7Skin .mceMenuItemDisabled .mceText {color:#888}\r
-.o2k7Skin .mceMenuItemSelected .mceIcon {background:url(../default/img/menu_check.gif)}\r
-.o2k7Skin .mceNoIcons .mceMenuItemSelected a {background:url(../default/img/menu_arrow.gif) no-repeat -6px center}\r
-.o2k7Skin .mceMenu span.mceMenuLine {display:none}\r
-.o2k7Skin .mceMenuItemSub a {background:url(../default/img/menu_arrow.gif) no-repeat top right;}\r
-\r
-/* Progress,Resize */\r
-.o2k7Skin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; filter:alpha(opacity=50); background:#FFF}\r
-.o2k7Skin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(../default/img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px}\r
-.o2k7Skin .mcePlaceHolder {border:1px dotted gray}\r
-\r
-/* Formats */\r
-.o2k7Skin .mce_formatPreview a {font-size:10px}\r
-.o2k7Skin .mce_p span.mceText {}\r
-.o2k7Skin .mce_address span.mceText {font-style:italic}\r
-.o2k7Skin .mce_pre span.mceText {font-family:monospace}\r
-.o2k7Skin .mce_h1 span.mceText {font-weight:bolder; font-size: 2em}\r
-.o2k7Skin .mce_h2 span.mceText {font-weight:bolder; font-size: 1.5em}\r
-.o2k7Skin .mce_h3 span.mceText {font-weight:bolder; font-size: 1.17em}\r
-.o2k7Skin .mce_h4 span.mceText {font-weight:bolder; font-size: 1em}\r
-.o2k7Skin .mce_h5 span.mceText {font-weight:bolder; font-size: .83em}\r
-.o2k7Skin .mce_h6 span.mceText {font-weight:bolder; font-size: .75em}\r
-\r
-/* Theme */\r
-.o2k7Skin span.mce_bold {background-position:0 0}\r
-.o2k7Skin span.mce_italic {background-position:-60px 0}\r
-.o2k7Skin span.mce_underline {background-position:-140px 0}\r
-.o2k7Skin span.mce_strikethrough {background-position:-120px 0}\r
-.o2k7Skin span.mce_undo {background-position:-160px 0}\r
-.o2k7Skin span.mce_redo {background-position:-100px 0}\r
-.o2k7Skin span.mce_cleanup {background-position:-40px 0}\r
-.o2k7Skin span.mce_bullist {background-position:-20px 0}\r
-.o2k7Skin span.mce_numlist {background-position:-80px 0}\r
-.o2k7Skin span.mce_justifyleft {background-position:-460px 0}\r
-.o2k7Skin span.mce_justifyright {background-position:-480px 0}\r
-.o2k7Skin span.mce_justifycenter {background-position:-420px 0}\r
-.o2k7Skin span.mce_justifyfull {background-position:-440px 0}\r
-.o2k7Skin span.mce_anchor {background-position:-200px 0}\r
-.o2k7Skin span.mce_indent {background-position:-400px 0}\r
-.o2k7Skin span.mce_outdent {background-position:-540px 0}\r
-.o2k7Skin span.mce_link {background-position:-500px 0}\r
-.o2k7Skin span.mce_unlink {background-position:-640px 0}\r
-.o2k7Skin span.mce_sub {background-position:-600px 0}\r
-.o2k7Skin span.mce_sup {background-position:-620px 0}\r
-.o2k7Skin span.mce_removeformat {background-position:-580px 0}\r
-.o2k7Skin span.mce_newdocument {background-position:-520px 0}\r
-.o2k7Skin span.mce_image {background-position:-380px 0}\r
-.o2k7Skin span.mce_help {background-position:-340px 0}\r
-.o2k7Skin span.mce_code {background-position:-260px 0}\r
-.o2k7Skin span.mce_hr {background-position:-360px 0}\r
-.o2k7Skin span.mce_visualaid {background-position:-660px 0}\r
-.o2k7Skin span.mce_charmap {background-position:-240px 0}\r
-.o2k7Skin span.mce_paste {background-position:-560px 0}\r
-.o2k7Skin span.mce_copy {background-position:-700px 0}\r
-.o2k7Skin span.mce_cut {background-position:-680px 0}\r
-.o2k7Skin span.mce_blockquote {background-position:-220px 0}\r
-.o2k7Skin .mce_forecolor span.mceAction {background-position:-720px 0}\r
-.o2k7Skin .mce_backcolor span.mceAction {background-position:-760px 0}\r
-.o2k7Skin span.mce_forecolorpicker {background-position:-720px 0}\r
-.o2k7Skin span.mce_backcolorpicker {background-position:-760px 0}\r
-\r
-/* Plugins */\r
-.o2k7Skin span.mce_advhr {background-position:-0px -20px}\r
-.o2k7Skin span.mce_ltr {background-position:-20px -20px}\r
-.o2k7Skin span.mce_rtl {background-position:-40px -20px}\r
-.o2k7Skin span.mce_emotions {background-position:-60px -20px}\r
-.o2k7Skin span.mce_fullpage {background-position:-80px -20px}\r
-.o2k7Skin span.mce_fullscreen {background-position:-100px -20px}\r
-.o2k7Skin span.mce_iespell {background-position:-120px -20px}\r
-.o2k7Skin span.mce_insertdate {background-position:-140px -20px}\r
-.o2k7Skin span.mce_inserttime {background-position:-160px -20px}\r
-.o2k7Skin span.mce_absolute {background-position:-180px -20px}\r
-.o2k7Skin span.mce_backward {background-position:-200px -20px}\r
-.o2k7Skin span.mce_forward {background-position:-220px -20px}\r
-.o2k7Skin span.mce_insert_layer {background-position:-240px -20px}\r
-.o2k7Skin span.mce_insertlayer {background-position:-260px -20px}\r
-.o2k7Skin span.mce_movebackward {background-position:-280px -20px}\r
-.o2k7Skin span.mce_moveforward {background-position:-300px -20px}\r
-.o2k7Skin span.mce_media {background-position:-320px -20px}\r
-.o2k7Skin span.mce_nonbreaking {background-position:-340px -20px}\r
-.o2k7Skin span.mce_pastetext {background-position:-360px -20px}\r
-.o2k7Skin span.mce_pasteword {background-position:-380px -20px}\r
-.o2k7Skin span.mce_selectall {background-position:-400px -20px}\r
-.o2k7Skin span.mce_preview {background-position:-420px -20px}\r
-.o2k7Skin span.mce_print {background-position:-440px -20px}\r
-.o2k7Skin span.mce_cancel {background-position:-460px -20px}\r
-.o2k7Skin span.mce_save {background-position:-480px -20px}\r
-.o2k7Skin span.mce_replace {background-position:-500px -20px}\r
-.o2k7Skin span.mce_search {background-position:-520px -20px}\r
-.o2k7Skin span.mce_styleprops {background-position:-560px -20px}\r
-.o2k7Skin span.mce_table {background-position:-580px -20px}\r
-.o2k7Skin span.mce_cell_props {background-position:-600px -20px}\r
-.o2k7Skin span.mce_delete_table {background-position:-620px -20px}\r
-.o2k7Skin span.mce_delete_col {background-position:-640px -20px}\r
-.o2k7Skin span.mce_delete_row {background-position:-660px -20px}\r
-.o2k7Skin span.mce_col_after {background-position:-680px -20px}\r
-.o2k7Skin span.mce_col_before {background-position:-700px -20px}\r
-.o2k7Skin span.mce_row_after {background-position:-720px -20px}\r
-.o2k7Skin span.mce_row_before {background-position:-740px -20px}\r
-.o2k7Skin span.mce_merge_cells {background-position:-760px -20px}\r
-.o2k7Skin span.mce_table_props {background-position:-980px -20px}\r
-.o2k7Skin span.mce_row_props {background-position:-780px -20px}\r
-.o2k7Skin span.mce_split_cells {background-position:-800px -20px}\r
-.o2k7Skin span.mce_template {background-position:-820px -20px}\r
-.o2k7Skin span.mce_visualchars {background-position:-840px -20px}\r
-.o2k7Skin span.mce_abbr {background-position:-860px -20px}\r
-.o2k7Skin span.mce_acronym {background-position:-880px -20px}\r
-.o2k7Skin span.mce_attribs {background-position:-900px -20px}\r
-.o2k7Skin span.mce_cite {background-position:-920px -20px}\r
-.o2k7Skin span.mce_del {background-position:-940px -20px}\r
-.o2k7Skin span.mce_ins {background-position:-960px -20px}\r
-.o2k7Skin span.mce_pagebreak {background-position:0 -40px}\r
-.o2k7Skin .mce_spellchecker span.mceAction {background-position:-540px -20px}\r
+++ /dev/null
-/* Black */\r
-.o2k7SkinBlack .mceToolbar .mceToolbarStart span, .o2k7SkinBlack .mceToolbar .mceToolbarEnd span, .o2k7SkinBlack .mceButton, .o2k7SkinBlack .mceSplitButton, .o2k7SkinBlack .mceSeparator, .o2k7SkinBlack .mceSplitButton span.mceOpen, .o2k7SkinBlack .mceListBox .mceOpen {background-image:url(img/button_bg_black.png)}\r
-.o2k7SkinBlack table, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack .mceMenuItemTitle span.mceText, .o2k7SkinBlack .mceStatusbar div, .o2k7SkinBlack .mceStatusbar span, .o2k7SkinBlack .mceStatusbar a {background:#535353; color:#FFF}\r
-.o2k7SkinBlack table.mceListBoxEnabled .mceText, o2k7SkinBlack .mceListBox .mceText {background:#FFF; border:1px solid #CBCFD4; border-bottom-color:#989FA9; border-right:0}\r
-.o2k7SkinBlack table.mceListBoxEnabled:hover .mceText, .o2k7Skin .mceListBoxHover .mceText, .o2k7Skin .mceListBoxSelected .mceText {background:#FFF; border:1px solid #FFBD69; border-right:0}\r
-.o2k7SkinBlack .mceExternalToolbar, .o2k7SkinBlack .mceListBox .mceText, .o2k7SkinBlack div.mceMenu, .o2k7SkinBlack table.mceLayout, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack table.mceLayout tr.mceFirst td, .o2k7SkinBlack table.mceLayout, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack table.mceLayout tr.mceLast td, .o2k7SkinBlack .mceIframeContainer {border-color: #535353;}\r
-.o2k7SkinBlack table.mceSplitButtonEnabled:hover a.mceAction, .o2k7Skin .mceSplitButtonHover a.mceAction, .o2k7Skin .mceSplitButtonSelected {background-image:url(img/button_bg_black.png)}\r
-.o2k7SkinBlack .mceMenu .mceMenuItemEnabled a:hover, .o2k7Skin .mceMenu .mceMenuItemActive {background-color:#FFE7A1}
\ No newline at end of file
+++ /dev/null
-/* Silver */\r
-.o2k7SkinSilver .mceToolbar .mceToolbarStart span, .o2k7SkinSilver .mceButton, .o2k7SkinSilver .mceSplitButton, .o2k7SkinSilver .mceSeparator, .o2k7SkinSilver .mceSplitButton span.mceOpen, .o2k7SkinSilver .mceListBox .mceOpen {background-image:url(img/button_bg_silver.png)}\r
-.o2k7SkinSilver table, .o2k7SkinSilver .mceMenuItemTitle a {background:#eee}\r
-.o2k7SkinSilver .mceListBox .mceText {background:#FFF}\r
-.o2k7SkinSilver .mceExternalToolbar, .o2k7SkinSilver .mceListBox .mceText, .o2k7SkinSilver div.mceMenu, .o2k7SkinSilver table.mceLayout, .o2k7SkinSilver .mceMenuItemTitle a, .o2k7SkinSilver table.mceLayout tr.mceFirst td, .o2k7SkinSilver table.mceLayout, .o2k7SkinSilver .mceMenuItemTitle a, .o2k7SkinSilver table.mceLayout tr.mceLast td, .o2k7SkinSilver .mceIframeContainer {border-color: #bbb}\r
+++ /dev/null
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />\r
- <title>{#advanced_dlg.code_title}</title>\r
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
- <script type="text/javascript" src="js/source_editor.js"></script>\r
- <base target="_self" />\r
-</head>\r
-<body onresize="resizeInputs();" style="display:none; overflow:hidden;">\r
- <form name="source" onsubmit="saveContent();return false;" action="#">\r
- <div style="float: left" class="title">{#advanced_dlg.code_title}</div>\r
-\r
- <div id="wrapline" style="float: right">\r
- <input type="checkbox" name="wraped" id="wraped" onclick="toggleWordWrap(this);" class="wordWrapCode" /><label for="wraped">{#advanced_dlg.code_wordwrap}</label>\r
- </div>\r
-\r
- <br style="clear: both" />\r
-\r
- <textarea name="htmlSource" id="htmlSource" rows="15" cols="100" style="width: 100%; height: 100%; font-family: 'Courier New',Courier,monospace; font-size: 12px;" dir="ltr" wrap="off" class="mceFocus"></textarea>\r
-\r
- <div class="mceActionPanel">\r
- <div style="float: left">\r
- <input type="submit" name="insert" value="{#update}" id="insert" />\r
- </div>\r
-\r
- <div style="float: right">\r
- <input type="button" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" id="cancel" />\r
- </div>\r
- </div>\r
- </form>\r
-</body>\r
-</html>\r
+++ /dev/null
-(function(){var DOM=tinymce.DOM;tinymce.ThemeManager.requireLangPack('simple');tinymce.create('tinymce.themes.SimpleTheme',{init:function(ed,url){var t=this,states=['Bold','Italic','Underline','Strikethrough','InsertUnorderedList','InsertOrderedList'],s=ed.settings;t.editor=ed;ed.onInit.add(function(){ed.onNodeChange.add(function(ed,cm){tinymce.each(states,function(c){cm.get(c.toLowerCase()).setActive(ed.queryCommandState(c));});});ed.dom.loadCSS(url+"/skins/"+s.skin+"/content.css");});DOM.loadCSS((s.editor_css?ed.baseURI.toAbsolute(s.editor_css):'')||url+"/skins/"+s.skin+"/ui.css");},renderUI:function(o){var t=this,n=o.targetNode,ic,tb,ed=t.editor,cf=ed.controlManager,sc;n=DOM.insertAfter(DOM.create('span',{id:ed.id+'_container','class':'mceEditor '+ed.settings.skin+'SimpleSkin'}),n);n=sc=DOM.add(n,'table',{cellPadding:0,cellSpacing:0,'class':'mceLayout'});n=tb=DOM.add(n,'tbody');n=DOM.add(tb,'tr');n=ic=DOM.add(DOM.add(n,'td'),'div',{'class':'mceIframeContainer'});n=DOM.add(DOM.add(tb,'tr',{'class':'last'}),'td',{'class':'mceToolbar mceLast',align:'center'});tb=t.toolbar=cf.createToolbar("tools1");tb.add(cf.createButton('bold',{title:'simple.bold_desc',cmd:'Bold'}));tb.add(cf.createButton('italic',{title:'simple.italic_desc',cmd:'Italic'}));tb.add(cf.createButton('underline',{title:'simple.underline_desc',cmd:'Underline'}));tb.add(cf.createButton('strikethrough',{title:'simple.striketrough_desc',cmd:'Strikethrough'}));tb.add(cf.createSeparator());tb.add(cf.createButton('undo',{title:'simple.undo_desc',cmd:'Undo'}));tb.add(cf.createButton('redo',{title:'simple.redo_desc',cmd:'Redo'}));tb.add(cf.createSeparator());tb.add(cf.createButton('cleanup',{title:'simple.cleanup_desc',cmd:'mceCleanup'}));tb.add(cf.createSeparator());tb.add(cf.createButton('insertunorderedlist',{title:'simple.bullist_desc',cmd:'InsertUnorderedList'}));tb.add(cf.createButton('insertorderedlist',{title:'simple.numlist_desc',cmd:'InsertOrderedList'}));tb.renderTo(n);return{iframeContainer:ic,editorContainer:ed.id+'_container',sizeContainer:sc,deltaHeight:-20};},getInfo:function(){return{longname:'Simple theme',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.ThemeManager.add('simple',tinymce.themes.SimpleTheme);})();
\ No newline at end of file
+++ /dev/null
-/**\r
- * $Id: editor_template_src.js 752 2008-03-27 21:51:25Z spocke $\r
- *\r
- * This file is meant to showcase how to create a simple theme. The advanced\r
- * theme is more suitable for production use.\r
- *\r
- * @author Moxiecode\r
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-(function() {\r
- var DOM = tinymce.DOM;\r
-\r
- // Tell it to load theme specific language pack(s)\r
- tinymce.ThemeManager.requireLangPack('simple');\r
-\r
- tinymce.create('tinymce.themes.SimpleTheme', {\r
- init : function(ed, url) {\r
- var t = this, states = ['Bold', 'Italic', 'Underline', 'Strikethrough', 'InsertUnorderedList', 'InsertOrderedList'], s = ed.settings;\r
-\r
- t.editor = ed;\r
-\r
- ed.onInit.add(function() {\r
- ed.onNodeChange.add(function(ed, cm) {\r
- tinymce.each(states, function(c) {\r
- cm.get(c.toLowerCase()).setActive(ed.queryCommandState(c));\r
- });\r
- });\r
-\r
- ed.dom.loadCSS(url + "/skins/" + s.skin + "/content.css");\r
- });\r
-\r
- DOM.loadCSS((s.editor_css ? ed.baseURI.toAbsolute(s.editor_css) : '') || url + "/skins/" + s.skin + "/ui.css");\r
- },\r
-\r
- renderUI : function(o) {\r
- var t = this, n = o.targetNode, ic, tb, ed = t.editor, cf = ed.controlManager, sc;\r
-\r
- n = DOM.insertAfter(DOM.create('span', {id : ed.id + '_container', 'class' : 'mceEditor ' + ed.settings.skin + 'SimpleSkin'}), n);\r
- n = sc = DOM.add(n, 'table', {cellPadding : 0, cellSpacing : 0, 'class' : 'mceLayout'});\r
- n = tb = DOM.add(n, 'tbody');\r
-\r
- // Create iframe container\r
- n = DOM.add(tb, 'tr');\r
- n = ic = DOM.add(DOM.add(n, 'td'), 'div', {'class' : 'mceIframeContainer'});\r
-\r
- // Create toolbar container\r
- n = DOM.add(DOM.add(tb, 'tr', {'class' : 'last'}), 'td', {'class' : 'mceToolbar mceLast', align : 'center'});\r
-\r
- // Create toolbar\r
- tb = t.toolbar = cf.createToolbar("tools1");\r
- tb.add(cf.createButton('bold', {title : 'simple.bold_desc', cmd : 'Bold'}));\r
- tb.add(cf.createButton('italic', {title : 'simple.italic_desc', cmd : 'Italic'}));\r
- tb.add(cf.createButton('underline', {title : 'simple.underline_desc', cmd : 'Underline'}));\r
- tb.add(cf.createButton('strikethrough', {title : 'simple.striketrough_desc', cmd : 'Strikethrough'}));\r
- tb.add(cf.createSeparator());\r
- tb.add(cf.createButton('undo', {title : 'simple.undo_desc', cmd : 'Undo'}));\r
- tb.add(cf.createButton('redo', {title : 'simple.redo_desc', cmd : 'Redo'}));\r
- tb.add(cf.createSeparator());\r
- tb.add(cf.createButton('cleanup', {title : 'simple.cleanup_desc', cmd : 'mceCleanup'}));\r
- tb.add(cf.createSeparator());\r
- tb.add(cf.createButton('insertunorderedlist', {title : 'simple.bullist_desc', cmd : 'InsertUnorderedList'}));\r
- tb.add(cf.createButton('insertorderedlist', {title : 'simple.numlist_desc', cmd : 'InsertOrderedList'}));\r
- tb.renderTo(n);\r
-\r
- return {\r
- iframeContainer : ic,\r
- editorContainer : ed.id + '_container',\r
- sizeContainer : sc,\r
- deltaHeight : -20\r
- };\r
- },\r
-\r
- getInfo : function() {\r
- return {\r
- longname : 'Simple theme',\r
- author : 'Moxiecode Systems AB',\r
- authorurl : 'http://tinymce.moxiecode.com',\r
- version : tinymce.majorVersion + "." + tinymce.minorVersion\r
- }\r
- }\r
- });\r
-\r
- tinymce.ThemeManager.add('simple', tinymce.themes.SimpleTheme);\r
-})();
\ No newline at end of file
+++ /dev/null
-tinyMCE.addI18n('en.simple',{\r
-bold_desc:"Bold (Ctrl+B)",\r
-italic_desc:"Italic (Ctrl+I)",\r
-underline_desc:"Underline (Ctrl+U)",\r
-striketrough_desc:"Strikethrough",\r
-bullist_desc:"Unordered list",\r
-numlist_desc:"Ordered list",\r
-undo_desc:"Undo (Ctrl+Z)",\r
-redo_desc:"Redo (Ctrl+Y)",\r
-cleanup_desc:"Cleanup messy code"\r
-});
\ No newline at end of file
+++ /dev/null
-body, td, pre {\r
- font-family: Verdana, Arial, Helvetica, sans-serif;\r
- font-size: 10px;\r
-}\r
-\r
-body {\r
- background-color: #FFFFFF;\r
-}\r
-\r
-.mceVisualAid {\r
- border: 1px dashed #BBBBBB;\r
-}\r
-\r
-/* MSIE specific */\r
-\r
-* html body {\r
- scrollbar-3dlight-color: #F0F0EE;\r
- scrollbar-arrow-color: #676662;\r
- scrollbar-base-color: #F0F0EE;\r
- scrollbar-darkshadow-color: #DDDDDD;\r
- scrollbar-face-color: #E0E0DD;\r
- scrollbar-highlight-color: #F0F0EE;\r
- scrollbar-shadow-color: #F0F0EE;\r
- scrollbar-track-color: #F5F5F5; \r
-}\r
+++ /dev/null
-/* Reset */\r
-.defaultSimpleSkin table, .defaultSimpleSkin tbody, .defaultSimpleSkin a, .defaultSimpleSkin img, .defaultSimpleSkin tr, .defaultSimpleSkin div, .defaultSimpleSkin td, .defaultSimpleSkin iframe, .defaultSimpleSkin span, .defaultSimpleSkin * {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000}\r
-\r
-/* Containers */\r
-.defaultSimpleSkin {position:relative}\r
-.defaultSimpleSkin table.mceLayout {background:#F0F0EE; border:1px solid #CCC;}\r
-.defaultSimpleSkin iframe {display:block; background:#FFF; border-bottom:1px solid #CCC;}\r
-.defaultSimpleSkin .mceToolbar {height:24px;}\r
-\r
-/* Layout */\r
-.defaultSimpleSkin span.mceIcon, .defaultSimpleSkin img.mceIcon {display:block; width:20px; height:20px}\r
-.defaultSimpleSkin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px}\r
-\r
-/* Button */\r
-.defaultSimpleSkin .mceButton {display:block; border:1px solid #F0F0EE; width:20px; height:20px}\r
-.defaultSimpleSkin a.mceButtonEnabled:hover {border:1px solid #0A246A; background-color:#B2BBD0}\r
-.defaultSimpleSkin a.mceButtonActive {border:1px solid #0A246A; background-color:#C2CBE0}\r
-.defaultSimpleSkin .mceButtonDisabled span {opacity:0.3; filter:alpha(opacity=30)}\r
-\r
-/* Separator */\r
-.defaultSimpleSkin .mceSeparator {display:block; background:url(../../img/icons.gif) -180px 0; width:2px; height:20px; margin:0 2px 0 4px}\r
-\r
-/* Theme */\r
-.defaultSimpleSkin span.mce_bold {background-position:0 0}\r
-.defaultSimpleSkin span.mce_italic {background-position:-60px 0}\r
-.defaultSimpleSkin span.mce_underline {background-position:-140px 0}\r
-.defaultSimpleSkin span.mce_strikethrough {background-position:-120px 0}\r
-.defaultSimpleSkin span.mce_undo {background-position:-160px 0}\r
-.defaultSimpleSkin span.mce_redo {background-position:-100px 0}\r
-.defaultSimpleSkin span.mce_cleanup {background-position:-40px 0}\r
-.defaultSimpleSkin span.mce_insertunorderedlist {background-position:-20px 0}\r
-.defaultSimpleSkin span.mce_insertorderedlist {background-position:-80px 0}\r
+++ /dev/null
-body, td, pre {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}\r
-\r
-body {background: #FFF;}\r
-.mceVisualAid {border: 1px dashed #BBB;}\r
-\r
-/* IE */\r
-\r
-* html body {\r
-scrollbar-3dlight-color: #F0F0EE;\r
-scrollbar-arrow-color: #676662;\r
-scrollbar-base-color: #F0F0EE;\r
-scrollbar-darkshadow-color: #DDDDDD;\r
-scrollbar-face-color: #E0E0DD;\r
-scrollbar-highlight-color: #F0F0EE;\r
-scrollbar-shadow-color: #F0F0EE;\r
-scrollbar-track-color: #F5F5F5; \r
-}\r
+++ /dev/null
-/* Reset */\r
-.o2k7SimpleSkin table, .o2k7SimpleSkin tbody, .o2k7SimpleSkin a, .o2k7SimpleSkin img, .o2k7SimpleSkin tr, .o2k7SimpleSkin div, .o2k7SimpleSkin td, .o2k7SimpleSkin iframe, .o2k7SimpleSkin span, .o2k7SimpleSkin * {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000}\r
-\r
-/* Containers */\r
-.o2k7SimpleSkin {position:relative}\r
-.o2k7SimpleSkin table.mceLayout {background:#E5EFFD; border:1px solid #ABC6DD;}\r
-.o2k7SimpleSkin iframe {display:block; background:#FFF; border-bottom:1px solid #ABC6DD;}\r
-.o2k7SimpleSkin .mceToolbar {height:26px;}\r
-\r
-/* Layout */\r
-.o2k7SimpleSkin .mceToolbar .mceToolbarStart span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px; }\r
-.o2k7SimpleSkin .mceToolbar .mceToolbarEnd span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px}\r
-.o2k7SimpleSkin span.mceIcon, .o2k7SimpleSkin img.mceIcon {display:block; width:20px; height:20px}\r
-.o2k7SimpleSkin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px}\r
-\r
-/* Button */\r
-.o2k7SimpleSkin .mceButton {display:block; background:url(img/button_bg.png); width:22px; height:22px}\r
-.o2k7SimpleSkin a.mceButton span, .o2k7SimpleSkin a.mceButton img {margin:1px 0 0 1px}\r
-.o2k7SimpleSkin a.mceButtonEnabled:hover {background-color:#B2BBD0; background-position:0 -22px}\r
-.o2k7SimpleSkin a.mceButtonActive {background-position:0 -44px}\r
-.o2k7SimpleSkin .mceButtonDisabled span {opacity:0.3; filter:alpha(opacity=30)}\r
-\r
-/* Separator */\r
-.o2k7SimpleSkin .mceSeparator {display:block; background:url(img/button_bg.png) -22px 0; width:5px; height:22px}\r
-\r
-/* Theme */\r
-.o2k7SimpleSkin span.mce_bold {background-position:0 0}\r
-.o2k7SimpleSkin span.mce_italic {background-position:-60px 0}\r
-.o2k7SimpleSkin span.mce_underline {background-position:-140px 0}\r
-.o2k7SimpleSkin span.mce_strikethrough {background-position:-120px 0}\r
-.o2k7SimpleSkin span.mce_undo {background-position:-160px 0}\r
-.o2k7SimpleSkin span.mce_redo {background-position:-100px 0}\r
-.o2k7SimpleSkin span.mce_cleanup {background-position:-40px 0}\r
-.o2k7SimpleSkin span.mce_insertunorderedlist {background-position:-20px 0}\r
-.o2k7SimpleSkin span.mce_insertorderedlist {background-position:-80px 0}\r
+++ /dev/null
-var tinymce={majorVersion:'3',minorVersion:'1.1',releaseDate:'2008-08-18',_init:function(){var t=this,d=document,w=window,na=navigator,ua=na.userAgent,i,nl,n,base,p,v;t.isOpera=w.opera&&opera.buildNumber;t.isWebKit=/WebKit/.test(ua);t.isOldWebKit=t.isWebKit&&!w.getSelection().getRangeAt;t.isIE=!t.isWebKit&&!t.isOpera&&(/MSIE/gi).test(ua)&&(/Explorer/gi).test(na.appName);t.isIE6=t.isIE&&/MSIE [56]/.test(ua);t.isGecko=!t.isWebKit&&/Gecko/.test(ua);t.isMac=ua.indexOf('Mac')!=-1;if(w.tinyMCEPreInit){t.suffix=tinyMCEPreInit.suffix;t.baseURL=tinyMCEPreInit.base;t.query=tinyMCEPreInit.query;return;}t.suffix='';nl=d.getElementsByTagName('base');for(i=0;i<nl.length;i++){if(v=nl[i].href){if(/^https?:\/\/[^\/]+$/.test(v))v+='/';base=v?v.match(/.*\//)[0]:'';}}function getBase(n){if(n.src&&/tiny_mce(|_dev|_src|_gzip|_jquery|_prototype).js/.test(n.src)){if(/_(src|dev)\.js/g.test(n.src))t.suffix='_src';if((p=n.src.indexOf('?'))!=-1)t.query=n.src.substring(p+1);t.baseURL=n.src.substring(0,n.src.lastIndexOf('/'));if(base&&t.baseURL.indexOf('://')==-1)t.baseURL=base+t.baseURL;return t.baseURL;}return null;};nl=d.getElementsByTagName('script');for(i=0;i<nl.length;i++){if(getBase(nl[i]))return;}n=d.getElementsByTagName('head')[0];if(n){nl=n.getElementsByTagName('script');for(i=0;i<nl.length;i++){if(getBase(nl[i]))return;}}return;},is:function(o,t){var n=typeof(o);if(!t)return n!='undefined';if(t=='array'&&(o instanceof Array))return true;return n==t;},each:function(o,cb,s){var n,l;if(!o)return 0;s=s||o;if(typeof(o.length)!='undefined'){for(n=0,l=o.length;n<l;n++){if(cb.call(s,o[n],n,o)===false)return 0;}}else{for(n in o){if(o.hasOwnProperty(n)){if(cb.call(s,o[n],n,o)===false)return 0;}}}return 1;},map:function(a,f){var o=[];tinymce.each(a,function(v){o.push(f(v));});return o;},grep:function(a,f){var o=[];tinymce.each(a,function(v){if(!f||f(v))o.push(v);});return o;},inArray:function(a,v){var i,l;if(a){for(i=0,l=a.length;i<l;i++){if(a[i]===v)return i;}}return-1;},extend:function(o,e){var i,a=arguments;for(i=1;i<a.length;i++){e=a[i];tinymce.each(e,function(v,n){if(typeof(v)!=='undefined')o[n]=v;});}return o;},trim:function(s){return(s?''+s:'').replace(/^\s*|\s*$/g,'');},create:function(s,p){var t=this,sp,ns,cn,scn,c,de=0;s=/^((static) )?([\w.]+)(:([\w.]+))?/.exec(s);cn=s[3].match(/(^|\.)(\w+)$/i)[2];ns=t.createNS(s[3].replace(/\.\w+$/,''));if(ns[cn])return;if(s[2]=='static'){ns[cn]=p;if(this.onCreate)this.onCreate(s[2],s[3],ns[cn]);return;}if(!p[cn]){p[cn]=function(){};de=1;}ns[cn]=p[cn];t.extend(ns[cn].prototype,p);if(s[5]){sp=t.resolve(s[5]).prototype;scn=s[5].match(/\.(\w+)$/i)[1];c=ns[cn];if(de){ns[cn]=function(){return sp[scn].apply(this,arguments);};}else{ns[cn]=function(){this.parent=sp[scn];return c.apply(this,arguments);};}ns[cn].prototype[cn]=ns[cn];t.each(sp,function(f,n){ns[cn].prototype[n]=sp[n];});t.each(p,function(f,n){if(sp[n]){ns[cn].prototype[n]=function(){this.parent=sp[n];return f.apply(this,arguments);};}else{if(n!=cn)ns[cn].prototype[n]=f;}});}t.each(p['static'],function(f,n){ns[cn][n]=f;});if(this.onCreate)this.onCreate(s[2],s[3],ns[cn].prototype);},walk:function(o,f,n,s){s=s||this;if(o){if(n)o=o[n];tinymce.each(o,function(o,i){if(f.call(s,o,i,n)===false)return false;tinymce.walk(o,f,n,s);});}},createNS:function(n,o){var i,v;o=o||window;n=n.split('.');for(i=0;i<n.length;i++){v=n[i];if(!o[v])o[v]={};o=o[v];}return o;},resolve:function(n,o){var i,l;o=o||window;n=n.split('.');for(i=0,l=n.length;i<l;i++){o=o[n[i]];if(!o)break;}return o;},addUnload:function(f,s){var t=this,w=window;f={func:f,scope:s||this};if(!t.unloads){function unload(){var li=t.unloads,o,n;if(li){for(n in li){o=li[n];if(o&&o.func)o.func.call(o.scope,1);}if(w.detachEvent){w.detachEvent('onbeforeunload',fakeUnload);w.detachEvent('onunload',unload);}else if(w.removeEventListener)w.removeEventListener('unload',unload,false);t.unloads=o=li=w=unload=null;if(window.CollectGarbage)window.CollectGarbage();}};function fakeUnload(){var d=document;if(d.readyState=='interactive'){function stop(){d.detachEvent('onstop',stop);unload();d=null;};d.attachEvent('onstop',stop);window.setTimeout(function(){d.detachEvent('onstop',stop);},0);}};if(w.attachEvent){w.attachEvent('onunload',unload);w.attachEvent('onbeforeunload',fakeUnload);}else if(w.addEventListener)w.addEventListener('unload',unload,false);t.unloads=[f];}else t.unloads.push(f);return f;},removeUnload:function(f){var u=this.unloads,r=null;tinymce.each(u,function(o,i){if(o&&o.func==f){u.splice(i,1);r=f;return false;}});return r;},explode:function(s,d){return s?tinymce.map(s.split(d||','),tinymce.trim):s;},_addVer:function(u){var v;if(!this.query)return u;v=(u.indexOf('?')==-1?'?':'&')+this.query;if(u.indexOf('#')==-1)return u+v;return u.replace('#',v+'#');}};window.tinymce=tinymce;tinymce._init();tinymce.create('tinymce.util.Dispatcher',{scope:null,listeners:null,Dispatcher:function(s){this.scope=s||this;this.listeners=[];},add:function(cb,s){this.listeners.push({cb:cb,scope:s||this.scope});return cb;},addToTop:function(cb,s){this.listeners.unshift({cb:cb,scope:s||this.scope});return cb;},remove:function(cb){var l=this.listeners,o=null;tinymce.each(l,function(c,i){if(cb==c.cb){o=cb;l.splice(i,1);return false;}});return o;},dispatch:function(){var s,a=arguments,i,li=this.listeners,c;for(i=0;i<li.length;i++){c=li[i];s=c.cb.apply(c.scope,a);if(s===false)break;}return s;}});(function(){var each=tinymce.each;tinymce.create('tinymce.util.URI',{URI:function(u,s){var t=this,o,a,b;s=t.settings=s||{};if(/^(mailto|news|javascript|about):/i.test(u)||/^\s*#/.test(u)){t.source=u;return;}if(u.indexOf('/')===0&&u.indexOf('//')!==0)u=(s.base_uri?s.base_uri.protocol||'http':'http')+'://mce_host'+u;if(u.indexOf('://')===-1&&u.indexOf('//')!==0)u=(s.base_uri.protocol||'http')+'://mce_host'+t.toAbsPath(s.base_uri.path,u);u=u.replace(/@@/g,'(mce_at)');u=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(u);each(["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],function(v,i){var s=u[i];if(s)s=s.replace(/\(mce_at\)/g,'@@');t[v]=s;});if(b=s.base_uri){if(!t.protocol)t.protocol=b.protocol;if(!t.userInfo)t.userInfo=b.userInfo;if(!t.port&&t.host=='mce_host')t.port=b.port;if(!t.host||t.host=='mce_host')t.host=b.host;t.source='';}},setPath:function(p){var t=this;p=/^(.*?)\/?(\w+)?$/.exec(p);t.path=p[0];t.directory=p[1];t.file=p[2];t.source='';t.getURI();},toRelative:function(u){var t=this,o;u=new tinymce.util.URI(u,{base_uri:t});if((u.host!='mce_host'&&t.host!=u.host&&u.host)||t.port!=u.port||t.protocol!=u.protocol)return u.getURI();o=t.toRelPath(t.path,u.path);if(u.query)o+='?'+u.query;if(u.anchor)o+='#'+u.anchor;return o;},toAbsolute:function(u,nh){var u=new tinymce.util.URI(u,{base_uri:this});return u.getURI(this.host==u.host?nh:0);},toRelPath:function(base,path){var items,bp=0,out='',i;base=base.substring(0,base.lastIndexOf('/'));base=base.split('/');items=path.split('/');if(base.length>=items.length){for(i=0;i<base.length;i++){if(i>=items.length||base[i]!=items[i]){bp=i+1;break;}}}if(base.length<items.length){for(i=0;i<items.length;i++){if(i>=base.length||base[i]!=items[i]){bp=i+1;break;}}}if(bp==1)return path;for(i=0;i<base.length-(bp-1);i++)out+="../";for(i=bp-1;i<items.length;i++){if(i!=bp-1)out+="/"+items[i];else out+=items[i];}return out;},toAbsPath:function(base,path){var i,nb=0,o=[];base=base.split('/');path=path.split('/');each(base,function(k){if(k)o.push(k);});base=o;for(i=path.length-1,o=[];i>=0;i--){if(path[i].length==0||path[i]==".")continue;if(path[i]=='..'){nb++;continue;}if(nb>0){nb--;continue;}o.push(path[i]);}i=base.length-nb;if(i<=0)return'/'+o.reverse().join('/');return'/'+base.slice(0,i).join('/')+'/'+o.reverse().join('/');},getURI:function(nh){var s,t=this;if(!t.source||nh){s='';if(!nh){if(t.protocol)s+=t.protocol+'://';if(t.userInfo)s+=t.userInfo+'@';if(t.host)s+=t.host;if(t.port)s+=':'+t.port;}if(t.path)s+=t.path;if(t.query)s+='?'+t.query;if(t.anchor)s+='#'+t.anchor;t.source=s;}return t.source;}});})();(function(){var each=tinymce.each;tinymce.create('static tinymce.util.Cookie',{getHash:function(n){var v=this.get(n),h;if(v){each(v.split('&'),function(v){v=v.split('=');h=h||{};h[unescape(v[0])]=unescape(v[1]);});}return h;},setHash:function(n,v,e,p,d,s){var o='';each(v,function(v,k){o+=(!o?'':'&')+escape(k)+'='+escape(v);});this.set(n,o,e,p,d,s);},get:function(n){var c=document.cookie,e,p=n+"=",b;if(!c)return;b=c.indexOf("; "+p);if(b==-1){b=c.indexOf(p);if(b!=0)return null;}else b+=2;e=c.indexOf(";",b);if(e==-1)e=c.length;return unescape(c.substring(b+p.length,e));},set:function(n,v,e,p,d,s){document.cookie=n+"="+escape(v)+((e)?"; expires="+e.toGMTString():"")+((p)?"; path="+escape(p):"")+((d)?"; domain="+d:"")+((s)?"; secure":"");},remove:function(n,p){var d=new Date();d.setTime(d.getTime()-1000);this.set(n,'',d,p,d);}});})();tinymce.create('static tinymce.util.JSON',{serialize:function(o){var i,v,s=tinymce.util.JSON.serialize,t;if(o==null)return'null';t=typeof o;if(t=='string'){v='\bb\tt\nn\ff\rr\""\'\'\\\\';return'"'+o.replace(/([\u0080-\uFFFF\x00-\x1f\"\'])/g,function(a,b){i=v.indexOf(b);if(i+1)return'\\'+v.charAt(i+1);a=b.charCodeAt().toString(16);return'\\u'+'0000'.substring(a.length)+a;})+'"';}if(t=='object'){if(o instanceof Array){for(i=0,v='[';i<o.length;i++)v+=(i>0?',':'')+s(o[i]);return v+']';}v='{';for(i in o)v+=typeof o[i]!='function'?(v.length>1?',"':'"')+i+'":'+s(o[i]):'';return v+'}';}return''+o;},parse:function(s){try{return eval('('+s+')');}catch(ex){}}});tinymce.create('static tinymce.util.XHR',{send:function(o){var x,t,w=window,c=0;o.scope=o.scope||this;o.success_scope=o.success_scope||o.scope;o.error_scope=o.error_scope||o.scope;o.async=o.async===false?false:true;o.data=o.data||'';function get(s){x=0;try{x=new ActiveXObject(s);}catch(ex){}return x;};x=w.XMLHttpRequest?new XMLHttpRequest():get('Microsoft.XMLHTTP')||get('Msxml2.XMLHTTP');if(x){if(x.overrideMimeType)x.overrideMimeType(o.content_type);x.open(o.type||(o.data?'POST':'GET'),o.url,o.async);if(o.content_type)x.setRequestHeader('Content-Type',o.content_type);x.send(o.data);function ready(){if(!o.async||x.readyState==4||c++>10000){if(o.success&&c<10000&&x.status==200)o.success.call(o.success_scope,''+x.responseText,x,o);else if(o.error)o.error.call(o.error_scope,c>10000?'TIMED_OUT':'GENERAL',x,o);x=null;}else w.setTimeout(ready,10);};if(!o.async)return ready();t=w.setTimeout(ready,10);}}});(function(){var extend=tinymce.extend,JSON=tinymce.util.JSON,XHR=tinymce.util.XHR;tinymce.create('tinymce.util.JSONRequest',{JSONRequest:function(s){this.settings=extend({},s);this.count=0;},send:function(o){var ecb=o.error,scb=o.success;o=extend(this.settings,o);o.success=function(c,x){c=JSON.parse(c);if(typeof(c)=='undefined'){c={error:'JSON Parse error.'};}if(c.error)ecb.call(o.error_scope||o.scope,c.error,x);else scb.call(o.success_scope||o.scope,c.result);};o.error=function(ty,x){ecb.call(o.error_scope||o.scope,ty,x);};o.data=JSON.serialize({id:o.id||'c'+(this.count++),method:o.method,params:o.params});o.content_type='application/json';XHR.send(o);},'static':{sendRPC:function(o){return new tinymce.util.JSONRequest().send(o);}}});}());(function(){var each=tinymce.each,is=tinymce.is;var isWebKit=tinymce.isWebKit,isIE=tinymce.isIE;tinymce.create('tinymce.dom.DOMUtils',{doc:null,root:null,files:null,listeners:{},pixelStyles:/^(top|left|bottom|right|width|height|borderWidth)$/,cache:{},idPattern:/^#[\w]+$/,elmPattern:/^[\w_*]+$/,elmClassPattern:/^([\w_]*)\.([\w_]+)$/,props:{"for":"htmlFor","class":"className",className:"className",checked:"checked",disabled:"disabled",maxlength:"maxLength",readonly:"readOnly",selected:"selected",value:"value"},DOMUtils:function(d,s){var t=this;t.doc=d;t.win=window;t.files={};t.cssFlicker=false;t.counter=0;t.boxModel=!tinymce.isIE||d.compatMode=="CSS1Compat";t.stdMode=d.documentMode===8;this.settings=s=tinymce.extend({keep_values:false,hex_colors:1,process_html:1},s);if(tinymce.isIE6){try{d.execCommand('BackgroundImageCache',false,true);}catch(e){t.cssFlicker=true;}}tinymce.addUnload(t.destroy,t);},getRoot:function(){var t=this,s=t.settings;return(s&&t.get(s.root_element))||t.doc.body;},getViewPort:function(w){var d,b;w=!w?this.win:w;d=w.document;b=this.boxModel?d.documentElement:d.body;return{x:w.pageXOffset||b.scrollLeft,y:w.pageYOffset||b.scrollTop,w:w.innerWidth||b.clientWidth,h:w.innerHeight||b.clientHeight};},getRect:function(e){var p,t=this,sr;e=t.get(e);p=t.getPos(e);sr=t.getSize(e);return{x:p.x,y:p.y,w:sr.w,h:sr.h};},getSize:function(e){var t=this,w,h;e=t.get(e);w=t.getStyle(e,'width');h=t.getStyle(e,'height');if(w.indexOf('px')===-1)w=0;if(h.indexOf('px')===-1)h=0;return{w:parseInt(w)||e.offsetWidth||e.clientWidth,h:parseInt(h)||e.offsetHeight||e.clientHeight};},getParent:function(n,f,r){var na,se=this.settings;n=this.get(n);if(se.strict_root)r=r||this.getRoot();if(is(f,'string')){na=f.toUpperCase();f=function(n){var s=false;if(n.nodeType==1&&na==='*'){s=true;return false;}each(na.split(','),function(v){if(n.nodeType==1&&((se.strict&&n.nodeName.toUpperCase()==v)||n.nodeName.toUpperCase()==v)){s=true;return false;}});return s;};}while(n){if(n==r)return null;if(f(n))return n;n=n.parentNode;}return null;},get:function(e){var n;if(e&&this.doc&&typeof(e)=='string'){n=e;e=this.doc.getElementById(e);if(e&&e.id!==n)return this.doc.getElementsByName(n)[1];}return e;},select:function(pa,s){var t=this,cs,c,pl,o=[],x,i,l,n;s=t.get(s)||t.doc;if(s.querySelectorAll){if(s!=t.doc){i=s.id;s.id='_mc_tmp';pa='#_mc_tmp '+pa;}l=tinymce.grep(s.querySelectorAll(pa));s.id=i;return l;}if(t.settings.strict){function get(s,n){return s.getElementsByTagName(n.toLowerCase());};}else{function get(s,n){return s.getElementsByTagName(n);};}if(t.elmPattern.test(pa)){x=get(s,pa);for(i=0,l=x.length;i<l;i++)o.push(x[i]);return o;}if(t.elmClassPattern.test(pa)){pl=t.elmClassPattern.exec(pa);x=get(s,pl[1]||'*');c=' '+pl[2]+' ';for(i=0,l=x.length;i<l;i++){n=x[i];if(n.className&&(' '+n.className+' ').indexOf(c)!==-1)o.push(n);}return o;}function collect(n){if(!n.mce_save){n.mce_save=1;o.push(n);}};function collectIE(n){if(!n.getAttribute('mce_save')){n.setAttribute('mce_save','1');o.push(n);}};function find(n,f,r){var i,l,nl=get(r,n);for(i=0,l=nl.length;i<l;i++)f(nl[i]);};each(pa.split(','),function(v,i){v=tinymce.trim(v);if(t.elmPattern.test(v)){each(get(s,v),function(n){collect(n);});return;}if(t.elmClassPattern.test(v)){x=t.elmClassPattern.exec(v);each(get(s,x[1]),function(n){if(t.hasClass(n,x[2]))collect(n);});return;}if(!(cs=t.cache[pa])){cs='x=(function(cf, s) {';pl=v.split(' ');each(pl,function(v){var p=/^([\w\\*]+)?(?:#([\w\\]+))?(?:\.([\w\\\.]+))?(?:\[\@([\w\\]+)([\^\$\*!]?=)([\w\\]+)\])?(?:\:([\w\\]+))?/i.exec(v);p[1]=p[1]||'*';cs+='find("'+p[1]+'", function(n) {';if(p[2])cs+='if (n.id !== "'+p[2]+'") return;';if(p[3]){cs+='var c = " " + n.className + " ";';cs+='if (';c='';each(p[3].split('.'),function(v){if(v)c+=(c?'||':'')+'c.indexOf(" '+v+' ") === -1';});cs+=c+') return;';}});cs+='cf(n);';for(i=pl.length-1;i>=0;i--)cs+='}, '+(i?'n':'s')+');';cs+='})';t.cache[pa]=cs=eval(cs);}cs(isIE?collectIE:collect,s);});each(o,function(n){if(isIE)n.removeAttribute('mce_save');else delete n.mce_save;});return o;},add:function(p,n,a,h,c){var t=this;return this.run(p,function(p){var e,k;e=is(n,'string')?t.doc.createElement(n):n;if(a){for(k in a){if(a.hasOwnProperty(k)&&!is(a[k],'object'))t.setAttrib(e,k,''+a[k]);}if(a.style&&!is(a.style,'string')){each(a.style,function(v,n){t.setStyle(e,n,v);});}}if(h){if(h.nodeType)e.appendChild(h);else t.setHTML(e,h);}return!c?p.appendChild(e):e;});},create:function(n,a,h){return this.add(this.doc.createElement(n),n,a,h,1);},createHTML:function(n,a,h){var o='',t=this,k;o+='<'+n;for(k in a){if(a.hasOwnProperty(k))o+=' '+k+'="'+t.encode(a[k])+'"';}if(tinymce.is(h))return o+'>'+h+'</'+n+'>';return o+' />';},remove:function(n,k){return this.run(n,function(n){var p,g;p=n.parentNode;if(!p)return null;if(k){each(n.childNodes,function(c){p.insertBefore(c.cloneNode(true),n);});}return p.removeChild(n);});},setStyle:function(n,na,v){var t=this;return t.run(n,function(e){var s,i;s=e.style;na=na.replace(/-(\D)/g,function(a,b){return b.toUpperCase();});if(t.pixelStyles.test(na)&&(tinymce.is(v,'number')||/^[\-0-9\.]+$/.test(v)))v+='px';switch(na){case'opacity':if(isIE){s.filter=v===''?'':"alpha(opacity="+(v*100)+")";if(!n.currentStyle||!n.currentStyle.hasLayout)s.display='inline-block';}s[na]=s['-moz-opacity']=s['-khtml-opacity']=v||'';break;case'float':isIE?s.styleFloat=v:s.cssFloat=v;break;default:s[na]=v||'';}if(t.settings.update_styles)t.setAttrib(e,'mce_style');});},getStyle:function(n,na,c){n=this.get(n);if(!n)return false;if(this.doc.defaultView&&c){na=na.replace(/[A-Z]/g,function(a){return'-'+a;});try{return this.doc.defaultView.getComputedStyle(n,null).getPropertyValue(na);}catch(ex){return null;}}na=na.replace(/-(\D)/g,function(a,b){return b.toUpperCase();});if(na=='float')na=isIE?'styleFloat':'cssFloat';if(n.currentStyle&&c)return n.currentStyle[na];return n.style[na];},setStyles:function(e,o){var t=this,s=t.settings,ol;ol=s.update_styles;s.update_styles=0;each(o,function(v,n){t.setStyle(e,n,v);});s.update_styles=ol;if(s.update_styles)t.setAttrib(e,s.cssText);},setAttrib:function(e,n,v){var t=this;if(!e||!n)return;if(t.settings.strict)n=n.toLowerCase();return this.run(e,function(e){var s=t.settings;switch(n){case"style":if(s.keep_values){if(v&&!t._isRes(v))e.setAttribute('mce_style',v,2);else e.removeAttribute('mce_style',2);}e.style.cssText=v;break;case"class":e.className=v||'';break;case"src":case"href":if(s.keep_values){if(s.url_converter)v=s.url_converter.call(s.url_converter_scope||t,v,n,e);t.setAttrib(e,'mce_'+n,v,2);}break;case"shape":e.setAttribute('mce_style',v);break;}if(is(v)&&v!==null&&v.length!==0)e.setAttribute(n,''+v,2);else e.removeAttribute(n,2);});},setAttribs:function(e,o){var t=this;return this.run(e,function(e){each(o,function(v,n){t.setAttrib(e,n,v);});});},getAttrib:function(e,n,dv){var v,t=this;e=t.get(e);if(!e||e.nodeType!==1)return false;if(!is(dv))dv='';if(/^(src|href|style|coords|shape)$/.test(n)){v=e.getAttribute("mce_"+n);if(v)return v;}if(isIE&&t.props[n]){v=e[t.props[n]];v=v&&v.nodeValue?v.nodeValue:v;}if(!v)v=e.getAttribute(n,2);if(n==='style'){v=v||e.style.cssText;if(v){v=t.serializeStyle(t.parseStyle(v));if(t.settings.keep_values&&!t._isRes(v))e.setAttribute('mce_style',v);}}if(isWebKit&&n==="class"&&v)v=v.replace(/(apple|webkit)\-[a-z\-]+/gi,'');if(isIE){switch(n){case'rowspan':case'colspan':if(v===1)v='';break;case'size':if(v==='+0'||v===20)v='';break;case'width':case'height':case'vspace':if(v===0)v='';break;case'hspace':if(v===-1)v='';break;case'maxlength':case'tabindex':if(v===32768||v===2147483647)v='';break;case'compact':case'noshade':if(v===65535)return n;return dv;case'shape':v=v.toLowerCase();break;default:if(n.indexOf('on')===0&&v)v=(''+v).replace(/^function\s+anonymous\(\)\s+\{\s+(.*)\s+\}$/,'$1');}}return(v!==undefined&&v!==null&&v!=='')?''+v:dv;},getPos:function(n){var t=this,x=0,y=0,e,d=t.doc,r;n=t.get(n);if(n&&isIE){n=n.getBoundingClientRect();e=t.boxModel?d.documentElement:d.body;x=t.getStyle(t.select('html')[0],'borderWidth');x=(x=='medium'||t.boxModel&&!t.isIE6)&&2||x;n.top+=t.win.self!=t.win.top?2:0;return{x:n.left+e.scrollLeft-x,y:n.top+e.scrollTop-x};}r=n;while(r){x+=r.offsetLeft||0;y+=r.offsetTop||0;r=r.offsetParent;}r=n;while(r){if(!/^table-row|inline.*/i.test(t.getStyle(r,"display",1))){x-=r.scrollLeft||0;y-=r.scrollTop||0;}r=r.parentNode;if(r==d.body)break;}return{x:x,y:y};},parseStyle:function(st){var t=this,s=t.settings,o={};if(!st)return o;function compress(p,s,ot){var t,r,b,l;t=o[p+'-top'+s];if(!t)return;r=o[p+'-right'+s];if(t!=r)return;b=o[p+'-bottom'+s];if(r!=b)return;l=o[p+'-left'+s];if(b!=l)return;o[ot]=l;delete o[p+'-top'+s];delete o[p+'-right'+s];delete o[p+'-bottom'+s];delete o[p+'-left'+s];};function compress2(ta,a,b,c){var t;t=o[a];if(!t)return;t=o[b];if(!t)return;t=o[c];if(!t)return;o[ta]=o[a]+' '+o[b]+' '+o[c];delete o[a];delete o[b];delete o[c];};st=st.replace(/&(#?[a-z0-9]+);/g,'&$1_MCE_SEMI_');each(st.split(';'),function(v){var sv,ur=[];if(v){v=v.replace(/_MCE_SEMI_/g,';');v=v.replace(/url\([^\)]+\)/g,function(v){ur.push(v);return'url('+ur.length+')';});v=v.split(':');sv=tinymce.trim(v[1]);sv=sv.replace(/url\(([^\)]+)\)/g,function(a,b){return ur[parseInt(b)-1];});sv=sv.replace(/rgb\([^\)]+\)/g,function(v){return t.toHex(v);});if(s.url_converter){sv=sv.replace(/url\([\'\"]?([^\)\'\"]+)[\'\"]?\)/g,function(x,c){return'url('+s.url_converter.call(s.url_converter_scope||t,t.decode(c),'style',null)+')';});}o[tinymce.trim(v[0]).toLowerCase()]=sv;}});compress("border","","border");compress("border","-width","border-width");compress("border","-color","border-color");compress("border","-style","border-style");compress("padding","","padding");compress("margin","","margin");compress2('border','border-width','border-style','border-color');if(isIE){if(o.border=='medium none')o.border='';}return o;},serializeStyle:function(o){var s='';each(o,function(v,k){if(k&&v){if(tinymce.isGecko&&k.indexOf('-moz-')===0)return;switch(k){case'color':case'background-color':v=v.toLowerCase();break;}s+=(s?' ':'')+k+': '+v+';';}});return s;},loadCSS:function(u){var t=this,d=t.doc;if(!u)u='';each(u.split(','),function(u){if(t.files[u])return;t.files[u]=true;t.add(t.select('head')[0],'link',{rel:'stylesheet',href:tinymce._addVer(u)});});},addClass:function(e,c){return this.run(e,function(e){var o;if(!c)return 0;if(this.hasClass(e,c))return e.className;o=this.removeClass(e,c);return e.className=(o!=''?(o+' '):'')+c;});},removeClass:function(e,c){var t=this,re;return t.run(e,function(e){var v;if(t.hasClass(e,c)){if(!re)re=new RegExp("(^|\\s+)"+c+"(\\s+|$)","g");v=e.className.replace(re,' ');return e.className=tinymce.trim(v!=' '?v:'');}return e.className;});},hasClass:function(n,c){n=this.get(n);if(!n||!c)return false;return(' '+n.className+' ').indexOf(' '+c+' ')!==-1;},show:function(e){return this.setStyle(e,'display','block');},hide:function(e){return this.setStyle(e,'display','none');},isHidden:function(e){e=this.get(e);return e.style.display=='none'||this.getStyle(e,'display')=='none';},uniqueId:function(p){return(!p?'mce_':p)+(this.counter++);},setHTML:function(e,h){var t=this;return this.run(e,function(e){var x,i,nl,n,p,x;h=t.processHTML(h);if(isIE){function set(){try{e.innerHTML='<br />'+h;e.removeChild(e.firstChild);}catch(ex){while(e.firstChild)e.firstChild.removeNode();x=t.create('div');x.innerHTML='<br />'+h;each(x.childNodes,function(n,i){if(i)e.appendChild(n);});}};if(t.settings.fix_ie_paragraphs)h=h.replace(/<p><\/p>|<p([^>]+)><\/p>|<p[^\/+]\/>/gi,'<p$1 mce_keep="true"> </p>');set();if(t.settings.fix_ie_paragraphs){nl=e.getElementsByTagName("p");for(i=nl.length-1,x=0;i>=0;i--){n=nl[i];if(!n.hasChildNodes()){if(!n.mce_keep){x=1;break;}n.removeAttribute('mce_keep');}}}if(x){h=h.replace(/<p([^>]+)>|<p>/g,'<div$1 mce_tmp="1">');h=h.replace(/<\/p>/g,'</div>');set();if(t.settings.fix_ie_paragraphs){nl=e.getElementsByTagName("DIV");for(i=nl.length-1;i>=0;i--){n=nl[i];if(n.mce_tmp){p=t.doc.createElement('p');n.cloneNode(false).outerHTML.replace(/([a-z0-9\-_]+)=/gi,function(a,b){var v;if(b!=='mce_tmp'){v=n.getAttribute(b);if(!v&&b==='class')v=n.className;p.setAttribute(b,v);}});for(x=0;x<n.childNodes.length;x++)p.appendChild(n.childNodes[x].cloneNode(true));n.swapNode(p);}}}}}else e.innerHTML=h;return h;});},processHTML:function(h){var t=this,s=t.settings;if(!s.process_html)return h;if(tinymce.isGecko){h=h.replace(/<(\/?)strong>|<strong( [^>]+)>/gi,'<$1b$2>');h=h.replace(/<(\/?)em>|<em( [^>]+)>/gi,'<$1i$2>');}else if(isIE)h=h.replace(/'/g,''');h=h.replace(/<a( )([^>]+)\/>|<a\/>/gi,'<a$1$2></a>');if(s.keep_values){h=h.replace(/<!\[CDATA\[([\s\S]+)\]\]>/g,'<!--[CDATA[$1]]-->');if(/<script|style/.test(h)){function trim(s){s=s.replace(/^[\r\n]*|[\r\n]*$/g,'');s=s.replace(/^\s*(\/\/\s*<!--|\/\/\s*<\[CDATA\[|<!--|<\[CDATA\[)[\r\n]*/g,'');s=s.replace(/\s*(\/\/\s*\]\]>|\/\/\s*-->|\]\]>|-->)\s*$/g,'');return s;};h=h.replace(/<script([^>]+|)>([\s\S]*?)<\/script>/g,function(v,a,b){b=trim(b);if(!a)a=' type="text/javascript"';if(b)b='<!--\n'+b+'\n// -->';return'<mce:script'+a+'>'+b+'</mce:script>';});h=h.replace(/<style([^>]+|)>([\s\S]*?)<\/style>/g,function(v,a,b){b=trim(b);return'<mce:style'+a+'><!--\n'+b+'\n--></mce:style><style'+a+' mce_bogus="1">'+b+'</style>';});}h=h.replace(/<([\w:]+) [^>]*(src|href|style|shape|coords)[^>]*>/gi,function(a,n){function handle(m,b,c){var u=c;if(a.indexOf('mce_'+b)!=-1)return m;if(b=='style'){if(t._isRes(c))return m;if(s.hex_colors){u=u.replace(/rgb\([^\)]+\)/g,function(v){return t.toHex(v);});}if(s.url_converter){u=u.replace(/url\([\'\"]?([^\)\'\"]+)\)/g,function(x,c){return'url('+t.encode(s.url_converter.call(s.url_converter_scope||t,t.decode(c),b,n))+')';});}}else if(b!='coords'&&b!='shape'){if(s.url_converter)u=t.encode(s.url_converter.call(s.url_converter_scope||t,t.decode(c),b,n));}return' '+b+'="'+c+'" mce_'+b+'="'+u+'"';};a=a.replace(/ (src|href|style|coords|shape)=[\"]([^\"]+)[\"]/gi,handle);a=a.replace(/ (src|href|style|coords|shape)=[\']([^\']+)[\']/gi,handle);return a.replace(/ (src|href|style|coords|shape)=([^\s\"\'>]+)/gi,handle);});}return h;},getOuterHTML:function(e){var d;e=this.get(e);if(!e)return null;if(isIE)return e.outerHTML;d=(e.ownerDocument||this.doc).createElement("body");d.appendChild(e.cloneNode(true));return d.innerHTML;},setOuterHTML:function(e,h,d){var t=this;return this.run(e,function(e){var n,tp;e=t.get(e);d=d||e.ownerDocument||t.doc;if(isIE&&e.nodeType==1)e.outerHTML=h;else{tp=d.createElement("body");tp.innerHTML=h;n=tp.lastChild;while(n){t.insertAfter(n.cloneNode(true),e);n=n.previousSibling;}t.remove(e);}});},decode:function(s){var e;if(/&[^;]+;/.test(s)){e=this.doc.createElement("div");e.innerHTML=s;return!e.firstChild?s:e.firstChild.nodeValue;}return s;},encode:function(s){return s?(''+s).replace(/[<>&\"]/g,function(c,b){switch(c){case'&':return'&';case'"':return'"';case'<':return'<';case'>':return'>';}return c;}):s;},insertAfter:function(n,r){var t=this;r=t.get(r);return this.run(n,function(n){var p,ns;p=r.parentNode;ns=r.nextSibling;if(ns)p.insertBefore(n,ns);else p.appendChild(n);return n;});},isBlock:function(n){if(n.nodeType&&n.nodeType!==1)return false;n=n.nodeName||n;return/^(H[1-6]|HR|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP)$/.test(n);},replace:function(n,o,k){if(is(o,'array'))n=n.cloneNode(true);return this.run(o,function(o){if(k){each(o.childNodes,function(c){n.appendChild(c.cloneNode(true));});}return o.parentNode.replaceChild(n,o);});},toHex:function(s){var c=/^\s*rgb\s*?\(\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?\)\s*$/i.exec(s);function hex(s){s=parseInt(s).toString(16);return s.length>1?s:'0'+s;};if(c){s='#'+hex(c[1])+hex(c[2])+hex(c[3]);return s;}return s;},getClasses:function(){var t=this,cl=[],i,lo={},f=t.settings.class_filter,ov;if(t.classes)return t.classes;function addClasses(s){each(s.imports,function(r){addClasses(r);});each(s.cssRules||s.rules,function(r){switch(r.type||1){case 1:if(r.selectorText){each(r.selectorText.split(','),function(v){v=v.replace(/^\s*|\s*$|^\s\./g,"");if(/\.mce/.test(v)||!/\.[\w\-]+$/.test(v))return;ov=v;v=v.replace(/.*\.([a-z0-9_\-]+).*/i,'$1');if(f&&!(v=f(v,ov)))return;if(!lo[v]){cl.push({'class':v});lo[v]=1;}});}break;case 3:addClasses(r.styleSheet);break;}});};try{each(t.doc.styleSheets,addClasses);}catch(ex){}if(cl.length>0)t.classes=cl;return cl;},run:function(e,f,s){var t=this,o;if(t.doc&&typeof(e)==='string')e=t.doc.getElementById(e);if(!e)return false;s=s||this;if(!e.nodeType&&(e.length||e.length===0)){o=[];each(e,function(e,i){if(e){if(typeof(e)=='string')e=t.doc.getElementById(e);o.push(f.call(s,e,i));}});return o;}return f.call(s,e);},getAttribs:function(n){var o;n=this.get(n);if(!n)return[];if(isIE){o=[];if(n.nodeName=='OBJECT')return n.attributes;n.cloneNode(false).outerHTML.replace(/([a-z0-9\:\-_]+)=/gi,function(a,b){o.push({specified:1,nodeName:b});});return o;}return n.attributes;},destroy:function(s){var t=this;t.win=t.doc=t.root=null;if(!s)tinymce.removeUnload(t.destroy);},_isRes:function(c){return/^(top|left|bottom|right|width|height)/i.test(c)||/;\s*(top|left|bottom|right|width|height)/i.test(c);}});tinymce.DOM=new tinymce.dom.DOMUtils(document,{process_html:0});})();(function(){var each=tinymce.each,DOM=tinymce.DOM,isIE=tinymce.isIE,isWebKit=tinymce.isWebKit,Event;tinymce.create('static tinymce.dom.Event',{inits:[],events:[],add:function(o,n,f,s){var cb,t=this,el=t.events,r;if(o&&o instanceof Array){r=[];each(o,function(o){o=DOM.get(o);r.push(t.add(o,n,f,s));});return r;}o=DOM.get(o);if(!o)return;cb=function(e){e=e||window.event;if(e&&!e.target&&isIE)e.target=e.srcElement;if(!s)return f(e);return f.call(s,e);};if(n=='unload'){tinymce.unloads.unshift({func:cb});return cb;}if(n=='init'){if(t.domLoaded)cb();else t.inits.push(cb);return cb;}el.push({obj:o,name:n,func:f,cfunc:cb,scope:s});t._add(o,n,cb);return f;},remove:function(o,n,f){var t=this,a=t.events,s=false,r;if(o&&o instanceof Array){r=[];each(o,function(o){o=DOM.get(o);r.push(t.remove(o,n,f));});return r;}o=DOM.get(o);each(a,function(e,i){if(e.obj==o&&e.name==n&&(!f||(e.func==f||e.cfunc==f))){a.splice(i,1);t._remove(o,n,e.cfunc);s=true;return false;}});return s;},clear:function(o){var t=this,a=t.events,i,e;if(o){o=DOM.get(o);for(i=a.length-1;i>=0;i--){e=a[i];if(e.obj===o){t._remove(e.obj,e.name,e.cfunc);e.obj=e.cfunc=null;a.splice(i,1);}}}},cancel:function(e){if(!e)return false;this.stop(e);return this.prevent(e);},stop:function(e){if(e.stopPropagation)e.stopPropagation();else e.cancelBubble=true;return false;},prevent:function(e){if(e.preventDefault)e.preventDefault();else e.returnValue=false;return false;},_unload:function(){var t=Event;each(t.events,function(e,i){t._remove(e.obj,e.name,e.cfunc);e.obj=e.cfunc=null;});t.events=[];t=null;},_add:function(o,n,f){if(o.attachEvent)o.attachEvent('on'+n,f);else if(o.addEventListener)o.addEventListener(n,f,false);else o['on'+n]=f;},_remove:function(o,n,f){if(o){try{if(o.detachEvent)o.detachEvent('on'+n,f);else if(o.removeEventListener)o.removeEventListener(n,f,false);else o['on'+n]=null;}catch(ex){}}},_pageInit:function(){var e=Event;e._remove(window,'DOMContentLoaded',e._pageInit);e.domLoaded=true;each(e.inits,function(c){c();});e.inits=[];},_wait:function(){var t;if(window.tinyMCE_GZ&&tinyMCE_GZ.loaded){Event.domLoaded=1;return;}if(isIE&&document.location.protocol!='https:'){document.write('<script id=__ie_onload defer src=\'javascript:""\';><\/script>');DOM.get("__ie_onload").onreadystatechange=function(){if(this.readyState=="complete"){Event._pageInit();DOM.get("__ie_onload").onreadystatechange=null;}};}else{Event._add(window,'DOMContentLoaded',Event._pageInit,Event);if(isIE||isWebKit){t=setInterval(function(){if(/loaded|complete/.test(document.readyState)){clearInterval(t);Event._pageInit();}},10);}}}});Event=tinymce.dom.Event;Event._wait();tinymce.addUnload(Event._unload);})();(function(){var each=tinymce.each;tinymce.create('tinymce.dom.Element',{Element:function(id,s){var t=this,dom,el;s=s||{};t.id=id;t.dom=dom=s.dom||tinymce.DOM;t.settings=s;if(!tinymce.isIE)el=t.dom.get(t.id);each(['getPos','getRect','getParent','add','setStyle','getStyle','setStyles','setAttrib','setAttribs','getAttrib','addClass','removeClass','hasClass','getOuterHTML','setOuterHTML','remove','show','hide','isHidden','setHTML','get'],function(k){t[k]=function(){var a=arguments,o;if(tinymce.isOpera){a=[id];each(arguments,function(v){a.push(v);});}else Array.prototype.unshift.call(a,el||id);o=dom[k].apply(dom,a);t.update(k);return o;};});},on:function(n,f,s){return tinymce.dom.Event.add(this.id,n,f,s);},getXY:function(){return{x:parseInt(this.getStyle('left')),y:parseInt(this.getStyle('top'))};},getSize:function(){var n=this.dom.get(this.id);return{w:parseInt(this.getStyle('width')||n.clientWidth),h:parseInt(this.getStyle('height')||n.clientHeight)};},moveTo:function(x,y){this.setStyles({left:x,top:y});},moveBy:function(x,y){var p=this.getXY();this.moveTo(p.x+x,p.y+y);},resizeTo:function(w,h){this.setStyles({width:w,height:h});},resizeBy:function(w,h){var s=this.getSize();this.resizeTo(s.w+w,s.h+h);},update:function(k){var t=this,b,dom=t.dom;if(tinymce.isIE6&&t.settings.blocker){k=k||'';if(k.indexOf('get')===0||k.indexOf('has')===0||k.indexOf('is')===0)return;if(k=='remove'){dom.remove(t.blocker);return;}if(!t.blocker){t.blocker=dom.uniqueId();b=dom.add(t.settings.container||dom.getRoot(),'iframe',{id:t.blocker,style:'position:absolute;',frameBorder:0,src:'javascript:""'});dom.setStyle(b,'opacity',0);}else b=dom.get(t.blocker);dom.setStyle(b,'left',t.getStyle('left',1));dom.setStyle(b,'top',t.getStyle('top',1));dom.setStyle(b,'width',t.getStyle('width',1));dom.setStyle(b,'height',t.getStyle('height',1));dom.setStyle(b,'display',t.getStyle('display',1));dom.setStyle(b,'zIndex',parseInt(t.getStyle('zIndex',1)||0)-1);}}});})();(function(){function trimNl(s){return s.replace(/[\n\r]+/g,'');};var is=tinymce.is,isIE=tinymce.isIE,each=tinymce.each;tinymce.create('tinymce.dom.Selection',{Selection:function(dom,win,serializer){var t=this;t.dom=dom;t.win=win;t.serializer=serializer;tinymce.addUnload(t.destroy,t);},getContent:function(s){var t=this,r=t.getRng(),e=t.dom.create("body"),se=t.getSel(),wb,wa,n;s=s||{};wb=wa='';s.get=true;s.format=s.format||'html';if(s.format=='text')return t.isCollapsed()?'':(r.text||(se.toString?se.toString():''));if(r.cloneContents){n=r.cloneContents();if(n)e.appendChild(n);}else if(is(r.item)||is(r.htmlText))e.innerHTML=r.item?r.item(0).outerHTML:r.htmlText;else e.innerHTML=r.toString();if(/^\s/.test(e.innerHTML))wb=' ';if(/\s+$/.test(e.innerHTML))wa=' ';s.getInner=true;return t.isCollapsed()?'':wb+t.serializer.serialize(e,s)+wa;},setContent:function(h,s){var t=this,r=t.getRng(),c,d=t.win.document;s=s||{format:'html'};s.set=true;h=t.dom.processHTML(h);if(r.insertNode){h+='<span id="__caret">_</span>';r.deleteContents();r.insertNode(t.getRng().createContextualFragment(h));c=t.dom.get('__caret');r=d.createRange();r.setStartBefore(c);r.setEndAfter(c);t.setRng(r);d.execCommand('Delete',false,null);t.dom.remove('__caret');}else{if(r.item){d.execCommand('Delete',false,null);r=t.getRng();}r.pasteHTML(h);}},getStart:function(){var t=this,r=t.getRng(),e;if(isIE){if(r.item)return r.item(0);r=r.duplicate();r.collapse(1);e=r.parentElement();if(e&&e.nodeName=='BODY')return e.firstChild;return e;}else{e=r.startContainer;if(e.nodeName=='BODY')return e.firstChild;return t.dom.getParent(e,function(n){return n.nodeType==1;});}},getEnd:function(){var t=this,r=t.getRng(),e;if(isIE){if(r.item)return r.item(0);r=r.duplicate();r.collapse(0);e=r.parentElement();if(e&&e.nodeName=='BODY')return e.lastChild;return e;}else{e=r.endContainer;if(e.nodeName=='BODY')return e.lastChild;return t.dom.getParent(e,function(n){return n.nodeType==1;});}},getBookmark:function(si){var t=this,r=t.getRng(),tr,sx,sy,vp=t.dom.getViewPort(t.win),e,sp,bp,le,c=-0xFFFFFF,s,ro=t.dom.getRoot(),wb=0,wa=0,nv;sx=vp.x;sy=vp.y;if(si=='simple')return{rng:r,scrollX:sx,scrollY:sy};if(isIE){if(r.item){e=r.item(0);each(t.dom.select(e.nodeName),function(n,i){if(e==n){sp=i;return false;}});return{tag:e.nodeName,index:sp,scrollX:sx,scrollY:sy};}tr=t.dom.doc.body.createTextRange();tr.moveToElementText(ro);tr.collapse(true);bp=Math.abs(tr.move('character',c));tr=r.duplicate();tr.collapse(true);sp=Math.abs(tr.move('character',c));tr=r.duplicate();tr.collapse(false);le=Math.abs(tr.move('character',c))-sp;return{start:sp-bp,length:le,scrollX:sx,scrollY:sy};}e=t.getNode();s=t.getSel();if(!s)return null;if(e&&e.nodeName=='IMG'){return{scrollX:sx,scrollY:sy};}function getPos(r,sn,en){var w=t.dom.doc.createTreeWalker(r,NodeFilter.SHOW_TEXT,null,false),n,p=0,d={};while((n=w.nextNode())!=null){if(n==sn)d.start=p;if(n==en){d.end=p;return d;}p+=trimNl(n.nodeValue||'').length;}return null;};if(s.anchorNode==s.focusNode&&s.anchorOffset==s.focusOffset){e=getPos(ro,s.anchorNode,s.focusNode);if(!e)return{scrollX:sx,scrollY:sy};trimNl(s.anchorNode.nodeValue||'').replace(/^\s+/,function(a){wb=a.length;});return{start:Math.max(e.start+s.anchorOffset-wb,0),end:Math.max(e.end+s.focusOffset-wb,0),scrollX:sx,scrollY:sy,beg:s.anchorOffset-wb==0};}else{e=getPos(ro,r.startContainer,r.endContainer);if(!e)return{scrollX:sx,scrollY:sy};return{start:Math.max(e.start+r.startOffset-wb,0),end:Math.max(e.end+r.endOffset-wa,0),scrollX:sx,scrollY:sy,beg:r.startOffset-wb==0};}},moveToBookmark:function(b){var t=this,r=t.getRng(),s=t.getSel(),ro=t.dom.getRoot(),sd,nvl,nv;function getPos(r,sp,ep){var w=t.dom.doc.createTreeWalker(r,NodeFilter.SHOW_TEXT,null,false),n,p=0,d={},o,v,wa,wb;while((n=w.nextNode())!=null){wa=wb=0;nv=n.nodeValue||'';nvl=trimNl(nv).length;p+=nvl;if(p>=sp&&!d.startNode){o=sp-(p-nvl);if(b.beg&&o>=nvl)continue;d.startNode=n;d.startOffset=o+wb;}if(p>=ep){d.endNode=n;d.endOffset=ep-(p-nvl)+wb;return d;}}return null;};if(!b)return false;t.win.scrollTo(b.scrollX,b.scrollY);if(isIE){if(r=b.rng){try{r.select();}catch(ex){}return true;}t.win.focus();if(b.tag){r=ro.createControlRange();each(t.dom.select(b.tag),function(n,i){if(i==b.index)r.addElement(n);});}else{try{if(b.start<0)return true;r=s.createRange();r.moveToElementText(ro);r.collapse(true);r.moveStart('character',b.start);r.moveEnd('character',b.length);}catch(ex2){return true;}}try{r.select();}catch(ex){}return true;}if(!s)return false;if(b.rng){s.removeAllRanges();s.addRange(b.rng);}else{if(is(b.start)&&is(b.end)){try{sd=getPos(ro,b.start,b.end);if(sd){r=t.dom.doc.createRange();r.setStart(sd.startNode,sd.startOffset);r.setEnd(sd.endNode,sd.endOffset);s.removeAllRanges();s.addRange(r);}if(!tinymce.isOpera)t.win.focus();}catch(ex){}}}},select:function(n,c){var t=this,r=t.getRng(),s=t.getSel(),b,fn,ln,d=t.win.document;function first(n){return n?d.createTreeWalker(n,NodeFilter.SHOW_TEXT,null,false).nextNode():null;};function last(n){var c,o,w;if(!n)return null;w=d.createTreeWalker(n,NodeFilter.SHOW_TEXT,null,false);while(c=w.nextNode())o=c;return o;};if(isIE){try{b=d.body;if(/^(IMG|TABLE)$/.test(n.nodeName)){r=b.createControlRange();r.addElement(n);}else{r=b.createTextRange();r.moveToElementText(n);}r.select();}catch(ex){}}else{if(c){fn=first(n);ln=last(n);if(fn&&ln){r=d.createRange();r.setStart(fn,0);r.setEnd(ln,ln.nodeValue.length);}else r.selectNode(n);}else r.selectNode(n);t.setRng(r);}return n;},isCollapsed:function(){var t=this,r=t.getRng(),s=t.getSel();if(!r||r.item)return false;return!s||r.boundingWidth==0||r.collapsed;},collapse:function(b){var t=this,r=t.getRng(),n;if(r.item){n=r.item(0);r=this.win.document.body.createTextRange();r.moveToElementText(n);}r.collapse(!!b);t.setRng(r);},getSel:function(){var t=this,w=this.win;return w.getSelection?w.getSelection():w.document.selection;},getRng:function(){var t=this,s=t.getSel(),r;try{if(s)r=s.rangeCount>0?s.getRangeAt(0):(s.createRange?s.createRange():t.win.document.createRange());}catch(ex){}if(!r)r=isIE?t.win.document.body.createTextRange():t.win.document.createRange();return r;},setRng:function(r){var s;if(!isIE){s=this.getSel();if(s){s.removeAllRanges();s.addRange(r);}}else{try{r.select();}catch(ex){}}},setNode:function(n){var t=this;t.setContent(t.dom.getOuterHTML(n));return n;},getNode:function(){var t=this,r=t.getRng(),s=t.getSel(),e;if(!isIE){if(!r)return t.dom.getRoot();e=r.commonAncestorContainer;if(!r.collapsed){if(tinymce.isWebKit&&s.anchorNode&&s.anchorNode.nodeType==1)return s.anchorNode.childNodes[s.anchorOffset];if(r.startContainer==r.endContainer){if(r.startOffset-r.endOffset<2){if(r.startContainer.hasChildNodes())e=r.startContainer.childNodes[r.startOffset];}}}return t.dom.getParent(e,function(n){return n.nodeType==1;});}return r.item?r.item(0):r.parentElement();},destroy:function(s){var t=this;t.win=null;if(!s)tinymce.removeUnload(t.destroy);}});})();(function(){tinymce.create('tinymce.dom.XMLWriter',{node:null,XMLWriter:function(s){function getXML(){var i=document.implementation;if(!i||!i.createDocument){try{return new ActiveXObject('MSXML2.DOMDocument');}catch(ex){}try{return new ActiveXObject('Microsoft.XmlDom');}catch(ex){}}else return i.createDocument('','',null);};this.doc=getXML();this.valid=tinymce.isOpera||tinymce.isWebKit;this.reset();},reset:function(){var t=this,d=t.doc;if(d.firstChild)d.removeChild(d.firstChild);t.node=d.appendChild(d.createElement("html"));},writeStartElement:function(n){var t=this;t.node=t.node.appendChild(t.doc.createElement(n));},writeAttribute:function(n,v){if(this.valid)v=v.replace(/>/g,'%MCGT%');this.node.setAttribute(n,v);},writeEndElement:function(){this.node=this.node.parentNode;},writeFullEndElement:function(){var t=this,n=t.node;n.appendChild(t.doc.createTextNode(""));t.node=n.parentNode;},writeText:function(v){if(this.valid)v=v.replace(/>/g,'%MCGT%');this.node.appendChild(this.doc.createTextNode(v));},writeCDATA:function(v){this.node.appendChild(this.doc.createCDATA(v));},writeComment:function(v){this.node.appendChild(this.doc.createComment(v.replace(/\-\-/g,' ')));},getContent:function(){var h;h=this.doc.xml||new XMLSerializer().serializeToString(this.doc);h=h.replace(/<\?[^?]+\?>|<html>|<\/html>|<html\/>|<!DOCTYPE[^>]+>/g,'');h=h.replace(/ ?\/>/g,' />');if(this.valid)h=h.replace(/\%MCGT%/g,'>');return h;}});})();(function(){tinymce.create('tinymce.dom.StringWriter',{str:null,tags:null,count:0,settings:null,indent:null,StringWriter:function(s){this.settings=tinymce.extend({indent_char:' ',indentation:1},s);this.reset();},reset:function(){this.indent='';this.str="";this.tags=[];this.count=0;},writeStartElement:function(n){this._writeAttributesEnd();this.writeRaw('<'+n);this.tags.push(n);this.inAttr=true;this.count++;this.elementCount=this.count;},writeAttribute:function(n,v){var t=this;t.writeRaw(" "+t.encode(n)+'="'+t.encode(v)+'"');},writeEndElement:function(){var n;if(this.tags.length>0){n=this.tags.pop();if(this._writeAttributesEnd(1))this.writeRaw('</'+n+'>');if(this.settings.indentation>0)this.writeRaw('\n');}},writeFullEndElement:function(){if(this.tags.length>0){this._writeAttributesEnd();this.writeRaw('</'+this.tags.pop()+'>');if(this.settings.indentation>0)this.writeRaw('\n');}},writeText:function(v){this._writeAttributesEnd();this.writeRaw(this.encode(v));this.count++;},writeCDATA:function(v){this._writeAttributesEnd();this.writeRaw('<![CDATA['+v+']]>');this.count++;},writeComment:function(v){this._writeAttributesEnd();this.writeRaw('<!-- '+v+'-->');this.count++;},writeRaw:function(v){this.str+=v;},encode:function(s){return s.replace(/[<>&"]/g,function(v){switch(v){case'<':return'<';case'>':return'>';case'&':return'&';case'"':return'"';}return v;});},getContent:function(){return this.str;},_writeAttributesEnd:function(s){if(!this.inAttr)return;this.inAttr=false;if(s&&this.elementCount==this.count){this.writeRaw(' />');return false;}this.writeRaw('>');return true;}});})();(function(){var extend=tinymce.extend,each=tinymce.each,Dispatcher=tinymce.util.Dispatcher,isIE=tinymce.isIE,isGecko=tinymce.isGecko;function getIEAtts(n){var o=[];if(n.nodeName=='OBJECT')return n.attributes;n.cloneNode(false).outerHTML.replace(/([a-z0-9\:\-_]+)=/gi,function(a,b){o.push({specified:1,nodeName:b});});return o;};function wildcardToRE(s){return s.replace(/([?+*])/g,'.$1');};tinymce.create('tinymce.dom.Serializer',{Serializer:function(s){var t=this;t.key=0;t.onPreProcess=new Dispatcher(t);t.onPostProcess=new Dispatcher(t);if(tinymce.relaxedDomain&&tinymce.isGecko){t.writer=new tinymce.dom.StringWriter();}else{try{t.writer=new tinymce.dom.XMLWriter();}catch(ex){t.writer=new tinymce.dom.StringWriter();}}t.settings=s=extend({dom:tinymce.DOM,valid_nodes:0,node_filter:0,attr_filter:0,invalid_attrs:/^(mce_|_moz_)/,closed:/(br|hr|input|meta|img|link|param)/,entity_encoding:'named',entities:'160,nbsp,161,iexcl,162,cent,163,pound,164,curren,165,yen,166,brvbar,167,sect,168,uml,169,copy,170,ordf,171,laquo,172,not,173,shy,174,reg,175,macr,176,deg,177,plusmn,178,sup2,179,sup3,180,acute,181,micro,182,para,183,middot,184,cedil,185,sup1,186,ordm,187,raquo,188,frac14,189,frac12,190,frac34,191,iquest,192,Agrave,193,Aacute,194,Acirc,195,Atilde,196,Auml,197,Aring,198,AElig,199,Ccedil,200,Egrave,201,Eacute,202,Ecirc,203,Euml,204,Igrave,205,Iacute,206,Icirc,207,Iuml,208,ETH,209,Ntilde,210,Ograve,211,Oacute,212,Ocirc,213,Otilde,214,Ouml,215,times,216,Oslash,217,Ugrave,218,Uacute,219,Ucirc,220,Uuml,221,Yacute,222,THORN,223,szlig,224,agrave,225,aacute,226,acirc,227,atilde,228,auml,229,aring,230,aelig,231,ccedil,232,egrave,233,eacute,234,ecirc,235,euml,236,igrave,237,iacute,238,icirc,239,iuml,240,eth,241,ntilde,242,ograve,243,oacute,244,ocirc,245,otilde,246,ouml,247,divide,248,oslash,249,ugrave,250,uacute,251,ucirc,252,uuml,253,yacute,254,thorn,255,yuml,402,fnof,913,Alpha,914,Beta,915,Gamma,916,Delta,917,Epsilon,918,Zeta,919,Eta,920,Theta,921,Iota,922,Kappa,923,Lambda,924,Mu,925,Nu,926,Xi,927,Omicron,928,Pi,929,Rho,931,Sigma,932,Tau,933,Upsilon,934,Phi,935,Chi,936,Psi,937,Omega,945,alpha,946,beta,947,gamma,948,delta,949,epsilon,950,zeta,951,eta,952,theta,953,iota,954,kappa,955,lambda,956,mu,957,nu,958,xi,959,omicron,960,pi,961,rho,962,sigmaf,963,sigma,964,tau,965,upsilon,966,phi,967,chi,968,psi,969,omega,977,thetasym,978,upsih,982,piv,8226,bull,8230,hellip,8242,prime,8243,Prime,8254,oline,8260,frasl,8472,weierp,8465,image,8476,real,8482,trade,8501,alefsym,8592,larr,8593,uarr,8594,rarr,8595,darr,8596,harr,8629,crarr,8656,lArr,8657,uArr,8658,rArr,8659,dArr,8660,hArr,8704,forall,8706,part,8707,exist,8709,empty,8711,nabla,8712,isin,8713,notin,8715,ni,8719,prod,8721,sum,8722,minus,8727,lowast,8730,radic,8733,prop,8734,infin,8736,ang,8743,and,8744,or,8745,cap,8746,cup,8747,int,8756,there4,8764,sim,8773,cong,8776,asymp,8800,ne,8801,equiv,8804,le,8805,ge,8834,sub,8835,sup,8836,nsub,8838,sube,8839,supe,8853,oplus,8855,otimes,8869,perp,8901,sdot,8968,lceil,8969,rceil,8970,lfloor,8971,rfloor,9001,lang,9002,rang,9674,loz,9824,spades,9827,clubs,9829,hearts,9830,diams,338,OElig,339,oelig,352,Scaron,353,scaron,376,Yuml,710,circ,732,tilde,8194,ensp,8195,emsp,8201,thinsp,8204,zwnj,8205,zwj,8206,lrm,8207,rlm,8211,ndash,8212,mdash,8216,lsquo,8217,rsquo,8218,sbquo,8220,ldquo,8221,rdquo,8222,bdquo,8224,dagger,8225,Dagger,8240,permil,8249,lsaquo,8250,rsaquo,8364,euro',valid_elements:'*[*]',extended_valid_elements:0,valid_child_elements:0,invalid_elements:0,fix_table_elements:0,fix_list_elements:true,fix_content_duplication:true,convert_fonts_to_spans:false,font_size_classes:0,font_size_style_values:0,apply_source_formatting:0,indent_mode:'simple',indent_char:'\t',indent_levels:1,remove_linebreaks:1,remove_redundant_brs:1},s);t.dom=s.dom;if(s.remove_redundant_brs){t.onPostProcess.add(function(se,o){o.content=o.content.replace(/<br \/>(\s*<\/li>)/g,'$1');});}if(s.fix_list_elements){t.onPreProcess.add(function(se,o){var nl,x,a=['ol','ul'],i,n,p,r=/^(OL|UL)$/,np;function prevNode(e,n){var a=n.split(','),i;while((e=e.previousSibling)!=null){for(i=0;i<a.length;i++){if(e.nodeName==a[i])return e;}}return null;};for(x=0;x<a.length;x++){nl=t.dom.select(a[x],o.node);for(i=0;i<nl.length;i++){n=nl[i];p=n.parentNode;if(r.test(p.nodeName)){np=prevNode(n,'LI');if(!np){np=t.dom.create('li');np.innerHTML=' ';np.appendChild(n);p.insertBefore(np,p.firstChild);}else np.appendChild(n);}}}});}if(s.fix_table_elements){t.onPreProcess.add(function(se,o){each(t.dom.select('table',o.node),function(e){var pa=t.dom.getParent(e,'H1,H2,H3,H4,H5,H6,P'),pa2,n,tm,pl=[],i,ns;if(pa){pa2=pa.cloneNode(false);pl.push(e);for(n=e;n=n.parentNode;){pl.push(n);if(n==pa)break;}tm=pa2;for(i=pl.length-1;i>=0;i--){if(i==pl.length-1){while(ns=pl[i-1].nextSibling)tm.appendChild(ns.parentNode.removeChild(ns));}else{n=pl[i].cloneNode(false);if(i!=0){while(ns=pl[i-1].nextSibling)n.appendChild(ns.parentNode.removeChild(ns));}tm=tm.appendChild(n);}}e=t.dom.insertAfter(e.parentNode.removeChild(e),pa);t.dom.insertAfter(e,pa);t.dom.insertAfter(pa2,e);}});});}},setEntities:function(s){var t=this,a,i,l={},re='',v;if(t.entityLookup)return;a=s.split(',');for(i=0;i<a.length;i+=2){v=a[i];if(v==34||v==38||v==60||v==62)continue;l[String.fromCharCode(a[i])]=a[i+1];v=parseInt(a[i]).toString(16);re+='\\u'+'0000'.substring(v.length)+v;}if(!re){t.settings.entity_encoding='raw';return;}t.entitiesRE=new RegExp('['+re+']','g');t.entityLookup=l;},setValidChildRules:function(s){this.childRules=null;this.addValidChildRules(s);},addValidChildRules:function(s){var t=this,inst,intr,bloc;if(!s)return;inst='A|BR|SPAN|BDO|MAP|OBJECT|IMG|TT|I|B|BIG|SMALL|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|#text|#comment';intr='A|BR|SPAN|BDO|OBJECT|APPLET|IMG|MAP|IFRAME|TT|I|B|U|S|STRIKE|BIG|SMALL|FONT|BASEFONT|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|INPUT|SELECT|TEXTAREA|LABEL|BUTTON|#text|#comment';bloc='H[1-6]|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|FORM|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP';each(s.split(','),function(s){var p=s.split(/\[|\]/),re;s='';each(p[1].split('|'),function(v){if(s)s+='|';switch(v){case'%itrans':v=intr;break;case'%itrans_na':v=intr.substring(2);break;case'%istrict':v=inst;break;case'%istrict_na':v=inst.substring(2);break;case'%btrans':v=bloc;break;case'%bstrict':v=bloc;break;}s+=v;});re=new RegExp('^('+s.toLowerCase()+')$','i');each(p[0].split('/'),function(s){t.childRules=t.childRules||{};t.childRules[s]=re;});});s='';each(t.childRules,function(v,k){if(s)s+='|';s+=k;});t.parentElementsRE=new RegExp('^('+s.toLowerCase()+')$','i');},setRules:function(s){var t=this;t._setup();t.rules={};t.wildRules=[];t.validElements={};return t.addRules(s);},addRules:function(s){var t=this,dr;if(!s)return;t._setup();each(s.split(','),function(s){var p=s.split(/\[|\]/),tn=p[0].split('/'),ra,at,wat,va=[];if(dr)at=tinymce.extend([],dr.attribs);if(p.length>1){each(p[1].split('|'),function(s){var ar={},i;at=at||[];s=s.replace(/::/g,'~');s=/^([!\-])?([\w*.?~_\-]+|)([=:<])?(.+)?$/.exec(s);s[2]=s[2].replace(/~/g,':');if(s[1]=='!'){ra=ra||[];ra.push(s[2]);}if(s[1]=='-'){for(i=0;i<at.length;i++){if(at[i].name==s[2]){at.splice(i,1);return;}}}switch(s[3]){case'=':ar.defaultVal=s[4]||'';break;case':':ar.forcedVal=s[4];break;case'<':ar.validVals=s[4].split('?');break;}if(/[*.?]/.test(s[2])){wat=wat||[];ar.nameRE=new RegExp('^'+wildcardToRE(s[2])+'$');wat.push(ar);}else{ar.name=s[2];at.push(ar);}va.push(s[2]);});}each(tn,function(s,i){var pr=s.charAt(0),x=1,ru={};if(dr){if(dr.noEmpty)ru.noEmpty=dr.noEmpty;if(dr.fullEnd)ru.fullEnd=dr.fullEnd;if(dr.padd)ru.padd=dr.padd;}switch(pr){case'-':ru.noEmpty=true;break;case'+':ru.fullEnd=true;break;case'#':ru.padd=true;break;default:x=0;}tn[i]=s=s.substring(x);t.validElements[s]=1;if(/[*.?]/.test(tn[0])){ru.nameRE=new RegExp('^'+wildcardToRE(tn[0])+'$');t.wildRules=t.wildRules||{};t.wildRules.push(ru);}else{ru.name=tn[0];if(tn[0]=='@')dr=ru;t.rules[s]=ru;}ru.attribs=at;if(ra)ru.requiredAttribs=ra;if(wat){s='';each(va,function(v){if(s)s+='|';s+='('+wildcardToRE(v)+')';});ru.validAttribsRE=new RegExp('^'+s.toLowerCase()+'$');ru.wildAttribs=wat;}});});s='';each(t.validElements,function(v,k){if(s)s+='|';if(k!='@')s+=k;});t.validElementsRE=new RegExp('^('+wildcardToRE(s.toLowerCase())+')$');},findRule:function(n){var t=this,rl=t.rules,i,r;t._setup();r=rl[n];if(r)return r;rl=t.wildRules;for(i=0;i<rl.length;i++){if(rl[i].nameRE.test(n))return rl[i];}return null;},findAttribRule:function(ru,n){var i,wa=ru.wildAttribs;for(i=0;i<wa.length;i++){if(wa[i].nameRE.test(n))return wa[i];}return null;},serialize:function(n,o){var h,t=this;t._setup();o=o||{};o.format=o.format||'html';t.processObj=o;n=n.cloneNode(true);t.key=''+(parseInt(t.key)+1);if(!o.no_events){o.node=n;t.onPreProcess.dispatch(t,o);}t.writer.reset();t._serializeNode(n,o.getInner);o.content=t.writer.getContent();if(!o.no_events)t.onPostProcess.dispatch(t,o);t._postProcess(o);o.node=null;return tinymce.trim(o.content);},_postProcess:function(o){var t=this,s=t.settings,h=o.content,sc=[],p;if(o.format=='html'){p=t._protect({content:h,patterns:[{pattern:/(<script[^>]*>)(.*?)(<\/script>)/g},{pattern:/(<style[^>]*>)(.*?)(<\/style>)/g},{pattern:/(<pre[^>]*>)(.*?)(<\/pre>)/g,encode:1},{pattern:/(<!--\[CDATA\[)(.*?)(\]\]-->)/g}]});h=p.content;if(s.entity_encoding!=='raw')h=t._encode(h);if(!o.set){h=h.replace(/<p>\s+<\/p>|<p([^>]+)>\s+<\/p>/g,s.entity_encoding=='numeric'?'<p$1> </p>':'<p$1> </p>');if(s.remove_linebreaks){h=h.replace(/\r?\n|\r/g,' ');h=h.replace(/(<[^>]+>)\s+/g,'$1 ');h=h.replace(/\s+(<\/[^>]+>)/g,' $1');h=h.replace(/<(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object) ([^>]+)>\s+/g,'<$1 $2>');h=h.replace(/<(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object)>\s+/g,'<$1>');h=h.replace(/\s+<\/(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object)>/g,'</$1>');}if(s.apply_source_formatting&&s.indent_mode=='simple'){h=h.replace(/<(\/?)(ul|hr|table|meta|link|tbody|tr|object|body|head|html|map)(|[^>]+)>\s*/g,'\n<$1$2$3>\n');h=h.replace(/\s*<(p|h[1-6]|blockquote|div|title|style|pre|script|td|li|area)(|[^>]+)>/g,'\n<$1$2>');h=h.replace(/<\/(p|h[1-6]|blockquote|div|title|style|pre|script|td|li)>\s*/g,'</$1>\n');h=h.replace(/\n\n/g,'\n');}}h=t._unprotect(h,p);h=h.replace(/<!--\[CDATA\[([\s\S]+)\]\]-->/g,'<![CDATA[$1]]>');if(s.entity_encoding=='raw')h=h.replace(/<p> <\/p>|<p([^>]+)> <\/p>/g,'<p$1>\u00a0</p>');}o.content=h;},_serializeNode:function(n,inn){var t=this,s=t.settings,w=t.writer,hc,el,cn,i,l,a,at,no,v,nn,ru,ar,iv;if(!s.node_filter||s.node_filter(n)){switch(n.nodeType){case 1:if(n.hasAttribute?n.hasAttribute('mce_bogus'):n.getAttribute('mce_bogus'))return;iv=false;hc=n.hasChildNodes();nn=n.getAttribute('mce_name')||n.nodeName.toLowerCase();if(isIE){if(n.scopeName!=='HTML'&&n.scopeName!=='html')nn=n.scopeName+':'+nn;}if(nn.indexOf('mce:')===0)nn=nn.substring(4);if(!t.validElementsRE.test(nn)||(t.invalidElementsRE&&t.invalidElementsRE.test(nn))||inn){iv=true;break;}if(isIE){if(s.fix_content_duplication){if(n.mce_serialized==t.key)return;n.mce_serialized=t.key;}if(nn.charAt(0)=='/')nn=nn.substring(1);}else if(isGecko){if(n.nodeName==='BR'&&n.getAttribute('type')=='_moz')return;}if(t.childRules){if(t.parentElementsRE.test(t.elementName)){if(!t.childRules[t.elementName].test(nn)){iv=true;break;}}t.elementName=nn;}ru=t.findRule(nn);nn=ru.name||nn;if((!hc&&ru.noEmpty)||(isIE&&!nn)){iv=true;break;}if(ru.requiredAttribs){a=ru.requiredAttribs;for(i=a.length-1;i>=0;i--){if(this.dom.getAttrib(n,a[i])!=='')break;}if(i==-1){iv=true;break;}}w.writeStartElement(nn);if(ru.attribs){for(i=0,at=ru.attribs,l=at.length;i<l;i++){a=at[i];v=t._getAttrib(n,a);if(v!==null)w.writeAttribute(a.name,v);}}if(ru.validAttribsRE){at=isIE?getIEAtts(n):n.attributes;for(i=at.length-1;i>-1;i--){no=at[i];if(no.specified){a=no.nodeName.toLowerCase();if(s.invalid_attrs.test(a)||!ru.validAttribsRE.test(a))continue;ar=t.findAttribRule(ru,a);v=t._getAttrib(n,ar,a);if(v!==null)w.writeAttribute(a,v);}}}if(!hc&&ru.padd)w.writeText('\u00a0');break;case 3:if(t.childRules&&t.parentElementsRE.test(t.elementName)){if(!t.childRules[t.elementName].test(n.nodeName))return;}return w.writeText(n.nodeValue);case 4:return w.writeCDATA(n.nodeValue);case 8:return w.writeComment(n.nodeValue);}}else if(n.nodeType==1)hc=n.hasChildNodes();if(hc){cn=n.firstChild;while(cn){t._serializeNode(cn);t.elementName=nn;cn=cn.nextSibling;}}if(!iv){if(hc||!s.closed.test(nn))w.writeFullEndElement();else w.writeEndElement();}},_protect:function(o){var t=this;o.items=o.items||[];function enc(s){return s.replace(/[\r\n\\]/g,function(c){if(c==='\n')return'\\n';else if(c==='\\')return'\\\\';return'\\r';});};function dec(s){return s.replace(/\\[\\rn]/g,function(c){if(c==='\\n')return'\n';else if(c==='\\\\')return'\\';return'\r';});};each(o.patterns,function(p){o.content=dec(enc(o.content).replace(p.pattern,function(x,a,b,c){b=dec(b);if(p.encode)b=t._encode(b);o.items.push(b);return a+'<!--mce:'+(o.items.length-1)+'-->'+c;}));});return o;},_unprotect:function(h,o){h=h.replace(/\<!--mce:([0-9]+)--\>/g,function(a,b){return o.items[parseInt(b)];});o.items=[];return h;},_encode:function(h){var t=this,s=t.settings,l;if(s.entity_encoding!=='raw'){if(s.entity_encoding.indexOf('named')!=-1){t.setEntities(s.entities);l=t.entityLookup;h=h.replace(t.entitiesRE,function(a){var v;if(v=l[a])a='&'+v+';';return a;});}if(s.entity_encoding.indexOf('numeric')!=-1){h=h.replace(/[\u007E-\uFFFF]/g,function(a){return'&#'+a.charCodeAt(0)+';';});}}return h;},_setup:function(){var t=this,s=this.settings;if(t.done)return;t.done=1;t.setRules(s.valid_elements);t.addRules(s.extended_valid_elements);t.addValidChildRules(s.valid_child_elements);if(s.invalid_elements)t.invalidElementsRE=new RegExp('^('+wildcardToRE(s.invalid_elements.replace(/,/g,'|').toLowerCase())+')$');if(s.attrib_value_filter)t.attribValueFilter=s.attribValueFilter;},_getAttrib:function(n,a,na){var i,v;na=na||a.name;if(a.forcedVal&&(v=a.forcedVal)){if(v==='{$uid}')return this.dom.uniqueId();return v;}v=this.dom.getAttrib(n,na);switch(na){case'rowspan':case'colspan':if(v=='1')v='';break;}if(this.attribValueFilter)v=this.attribValueFilter(na,v,n);if(a.validVals){for(i=a.validVals.length-1;i>=0;i--){if(v==a.validVals[i])break;}if(i==-1)return null;}if(v===''&&typeof(a.defaultVal)!='undefined'){v=a.defaultVal;if(v==='{$uid}')return this.dom.uniqueId();return v;}else{if(na=='class'&&this.processObj.get)v=v.replace(/\s?mceItem\w+\s?/g,'');}if(v==='')return null;return v;}});})();(function(){var each=tinymce.each;tinymce.create('tinymce.dom.ScriptLoader',{ScriptLoader:function(s){this.settings=s||{};this.queue=[];this.lookup={};},isDone:function(u){return this.lookup[u]?this.lookup[u].state==2:0;},markDone:function(u){this.lookup[u]={state:2,url:u};},add:function(u,cb,s,pr){var t=this,lo=t.lookup,o;if(o=lo[u]){if(cb&&o.state==2)cb.call(s||this);return o;}o={state:0,url:u,func:cb,scope:s||this};if(pr)t.queue.unshift(o);else t.queue.push(o);lo[u]=o;return o;},load:function(u,cb,s){var t=this,o;if(o=t.lookup[u]){if(cb&&o.state==2)cb.call(s||t);return o;}function loadScript(u){if(tinymce.dom.Event.domLoaded||t.settings.strict_mode){tinymce.util.XHR.send({url:tinymce._addVer(u),error:t.settings.error,async:false,success:function(co){t.eval(co);}});}else document.write('<script type="text/javascript" src="'+tinymce._addVer(u)+'"></script>');};if(!tinymce.is(u,'string')){each(u,function(u){loadScript(u);});if(cb)cb.call(s||t);}else{loadScript(u);if(cb)cb.call(s||t);}},loadQueue:function(cb,s){var t=this;if(!t.queueLoading){t.queueLoading=1;t.queueCallbacks=[];t.loadScripts(t.queue,function(){t.queueLoading=0;if(cb)cb.call(s||t);each(t.queueCallbacks,function(o){o.func.call(o.scope);});});}else if(cb)t.queueCallbacks.push({func:cb,scope:s||t});},eval:function(co){var w=window;if(!w.execScript){try{eval.call(w,co);}catch(ex){eval(co,w);}}else w.execScript(co);},loadScripts:function(sc,cb,s){var t=this,lo=t.lookup;function done(o){o.state=2;if(o.func)o.func.call(o.scope||t);};function allDone(){var l;l=sc.length;each(sc,function(o){o=lo[o.url];if(o.state===2){done(o);l--;}else load(o);});if(l===0&&cb){cb.call(s||t);cb=0;}};function load(o){if(o.state>0)return;o.state=1;tinymce.util.XHR.send({url:o.url,error:t.settings.error,success:function(co){t.eval(co);done(o);allDone();}});};each(sc,function(o){var u=o.url;if(!lo[u]){lo[u]=o;t.queue.push(o);}else o=lo[u];if(o.state>0)return;if(!tinymce.dom.Event.domLoaded&&!t.settings.strict_mode){var ix,ol='';if(cb||o.func){o.state=1;ix=tinymce.dom.ScriptLoader._addOnLoad(function(){done(o);allDone();});if(tinymce.isIE)ol=' onreadystatechange="';else ol=' onload="';ol+='tinymce.dom.ScriptLoader._onLoad(this,\''+u+'\','+ix+');"';}document.write('<script type="text/javascript" src="'+tinymce._addVer(u)+'"'+ol+'></script>');if(!o.func)done(o);}else load(o);});allDone();},'static':{_addOnLoad:function(f){var t=this;t._funcs=t._funcs||[];t._funcs.push(f);return t._funcs.length-1;},_onLoad:function(e,u,ix){if(!tinymce.isIE||e.readyState=='complete')this._funcs[ix].call(this);}}});tinymce.ScriptLoader=new tinymce.dom.ScriptLoader();})();(function(){var DOM=tinymce.DOM,is=tinymce.is;tinymce.create('tinymce.ui.Control',{Control:function(id,s){this.id=id;this.settings=s=s||{};this.rendered=false;this.onRender=new tinymce.util.Dispatcher(this);this.classPrefix='';this.scope=s.scope||this;this.disabled=0;this.active=0;},setDisabled:function(s){var e;if(s!=this.disabled){e=DOM.get(this.id);if(e&&this.settings.unavailable_prefix){if(s){this.prevTitle=e.title;e.title=this.settings.unavailable_prefix+": "+e.title;}else e.title=this.prevTitle;}this.setState('Disabled',s);this.setState('Enabled',!s);this.disabled=s;}},isDisabled:function(){return this.disabled;},setActive:function(s){if(s!=this.active){this.setState('Active',s);this.active=s;}},isActive:function(){return this.active;},setState:function(c,s){var n=DOM.get(this.id);c=this.classPrefix+c;if(s)DOM.addClass(n,c);else DOM.removeClass(n,c);},isRendered:function(){return this.rendered;},renderHTML:function(){},renderTo:function(n){DOM.setHTML(n,this.renderHTML());},postRender:function(){var t=this,b;if(is(t.disabled)){b=t.disabled;t.disabled=-1;t.setDisabled(b);}if(is(t.active)){b=t.active;t.active=-1;t.setActive(b);}},remove:function(){DOM.remove(this.id);this.destroy();},destroy:function(){tinymce.dom.Event.clear(this.id);}});})();tinymce.create('tinymce.ui.Container:tinymce.ui.Control',{Container:function(id,s){this.parent(id,s);this.controls=[];this.lookup={};},add:function(c){this.lookup[c.id]=c;this.controls.push(c);return c;},get:function(n){return this.lookup[n];}});tinymce.create('tinymce.ui.Separator:tinymce.ui.Control',{Separator:function(id,s){this.parent(id,s);this.classPrefix='mceSeparator';},renderHTML:function(){return tinymce.DOM.createHTML('span',{'class':this.classPrefix});}});(function(){var is=tinymce.is,DOM=tinymce.DOM,each=tinymce.each,walk=tinymce.walk;tinymce.create('tinymce.ui.MenuItem:tinymce.ui.Control',{MenuItem:function(id,s){this.parent(id,s);this.classPrefix='mceMenuItem';},setSelected:function(s){this.setState('Selected',s);this.selected=s;},isSelected:function(){return this.selected;},postRender:function(){var t=this;t.parent();if(is(t.selected))t.setSelected(t.selected);}});})();(function(){var is=tinymce.is,DOM=tinymce.DOM,each=tinymce.each,walk=tinymce.walk;tinymce.create('tinymce.ui.Menu:tinymce.ui.MenuItem',{Menu:function(id,s){var t=this;t.parent(id,s);t.items={};t.collapsed=false;t.menuCount=0;t.onAddItem=new tinymce.util.Dispatcher(this);},expand:function(d){var t=this;if(d){walk(t,function(o){if(o.expand)o.expand();},'items',t);}t.collapsed=false;},collapse:function(d){var t=this;if(d){walk(t,function(o){if(o.collapse)o.collapse();},'items',t);}t.collapsed=true;},isCollapsed:function(){return this.collapsed;},add:function(o){if(!o.settings)o=new tinymce.ui.MenuItem(o.id||DOM.uniqueId(),o);this.onAddItem.dispatch(this,o);return this.items[o.id]=o;},addSeparator:function(){return this.add({separator:true});},addMenu:function(o){if(!o.collapse)o=this.createMenu(o);this.menuCount++;return this.add(o);},hasMenus:function(){return this.menuCount!==0;},remove:function(o){delete this.items[o.id];},removeAll:function(){var t=this;walk(t,function(o){if(o.removeAll)o.removeAll();else o.remove();o.destroy();},'items',t);t.items={};},createMenu:function(o){var m=new tinymce.ui.Menu(o.id||DOM.uniqueId(),o);m.onAddItem.add(this.onAddItem.dispatch,this.onAddItem);return m;}});})();(function(){var is=tinymce.is,DOM=tinymce.DOM,each=tinymce.each,Event=tinymce.dom.Event,Element=tinymce.dom.Element;tinymce.create('tinymce.ui.DropMenu:tinymce.ui.Menu',{DropMenu:function(id,s){s=s||{};s.container=s.container||DOM.doc.body;s.offset_x=s.offset_x||0;s.offset_y=s.offset_y||0;s.vp_offset_x=s.vp_offset_x||0;s.vp_offset_y=s.vp_offset_y||0;if(is(s.icons)&&!s.icons)s['class']+=' mceNoIcons';this.parent(id,s);this.onShowMenu=new tinymce.util.Dispatcher(this);this.onHideMenu=new tinymce.util.Dispatcher(this);this.classPrefix='mceMenu';},createMenu:function(s){var t=this,cs=t.settings,m;s.container=s.container||cs.container;s.parent=t;s.constrain=s.constrain||cs.constrain;s['class']=s['class']||cs['class'];s.vp_offset_x=s.vp_offset_x||cs.vp_offset_x;s.vp_offset_y=s.vp_offset_y||cs.vp_offset_y;m=new tinymce.ui.DropMenu(s.id||DOM.uniqueId(),s);m.onAddItem.add(t.onAddItem.dispatch,t.onAddItem);return m;},update:function(){var t=this,s=t.settings,tb=DOM.get('menu_'+t.id+'_tbl'),co=DOM.get('menu_'+t.id+'_co'),tw,th;tw=s.max_width?Math.min(tb.clientWidth,s.max_width):tb.clientWidth;th=s.max_height?Math.min(tb.clientHeight,s.max_height):tb.clientHeight;if(!DOM.boxModel)t.element.setStyles({width:tw+2,height:th+2});else t.element.setStyles({width:tw,height:th});if(s.max_width)DOM.setStyle(co,'width',tw);if(s.max_height){DOM.setStyle(co,'height',th);if(tb.clientHeight<s.max_height)DOM.setStyle(co,'overflow','hidden');}},showMenu:function(x,y,px){var t=this,s=t.settings,co,vp=DOM.getViewPort(),w,h,mx,my,ot=2,dm,tb,cp=t.classPrefix;t.collapse(1);if(t.isMenuVisible)return;if(!t.rendered){co=DOM.add(t.settings.container,t.renderNode());each(t.items,function(o){o.postRender();});t.element=new Element('menu_'+t.id,{blocker:1,container:s.container});}else co=DOM.get('menu_'+t.id);if(!tinymce.isOpera)DOM.setStyles(co,{left:-0xFFFF,top:-0xFFFF});DOM.show(co);t.update();x+=s.offset_x||0;y+=s.offset_y||0;vp.w-=4;vp.h-=4;if(s.constrain){w=co.clientWidth-ot;h=co.clientHeight-ot;mx=vp.x+vp.w;my=vp.y+vp.h;if((x+s.vp_offset_x+w)>mx)x=px?px-w:Math.max(0,(mx-s.vp_offset_x)-w);if((y+s.vp_offset_y+h)>my)y=Math.max(0,(my-s.vp_offset_y)-h);}DOM.setStyles(co,{left:x,top:y});t.element.update();t.isMenuVisible=1;t.mouseClickFunc=Event.add(co,'click',function(e){var m;e=e.target;if(e&&(e=DOM.getParent(e,'TR'))&&!DOM.hasClass(e,cp+'ItemSub')){m=t.items[e.id];if(m.isDisabled())return;dm=t;while(dm){if(dm.hideMenu)dm.hideMenu();dm=dm.settings.parent;}if(m.settings.onclick)m.settings.onclick(e);return Event.cancel(e);}});if(t.hasMenus()){t.mouseOverFunc=Event.add(co,'mouseover',function(e){var m,r,mi;e=e.target;if(e&&(e=DOM.getParent(e,'TR'))){m=t.items[e.id];if(t.lastMenu)t.lastMenu.collapse(1);if(m.isDisabled())return;if(e&&DOM.hasClass(e,cp+'ItemSub')){r=DOM.getRect(e);m.showMenu((r.x+r.w-ot),r.y-ot,r.x);t.lastMenu=m;DOM.addClass(DOM.get(m.id).firstChild,cp+'ItemActive');}}});}t.onShowMenu.dispatch(t);if(s.keyboard_focus){Event.add(co,'keydown',t._keyHandler,t);DOM.select('a','menu_'+t.id)[0].focus();t._focusIdx=0;}},hideMenu:function(c){var t=this,co=DOM.get('menu_'+t.id),e;if(!t.isMenuVisible)return;Event.remove(co,'mouseover',t.mouseOverFunc);Event.remove(co,'click',t.mouseClickFunc);Event.remove(co,'keydown',t._keyHandler);DOM.hide(co);t.isMenuVisible=0;if(!c)t.collapse(1);if(t.element)t.element.hide();if(e=DOM.get(t.id))DOM.removeClass(e.firstChild,t.classPrefix+'ItemActive');t.onHideMenu.dispatch(t);},add:function(o){var t=this,co;o=t.parent(o);if(t.isRendered&&(co=DOM.get('menu_'+t.id)))t._add(DOM.select('tbody',co)[0],o);return o;},collapse:function(d){this.parent(d);this.hideMenu(1);},remove:function(o){DOM.remove(o.id);this.destroy();return this.parent(o);},destroy:function(){var t=this,co=DOM.get('menu_'+t.id);Event.remove(co,'mouseover',t.mouseOverFunc);Event.remove(co,'click',t.mouseClickFunc);if(t.element)t.element.remove();DOM.remove(co);},renderNode:function(){var t=this,s=t.settings,n,tb,co,w;w=DOM.create('div',{id:'menu_'+t.id,'class':s['class'],'style':'position:absolute;left:0;top:0;z-index:200000'});co=DOM.add(w,'div',{id:'menu_'+t.id+'_co','class':t.classPrefix+(s['class']?' '+s['class']:'')});t.element=new Element('menu_'+t.id,{blocker:1,container:s.container});if(s.menu_line)DOM.add(co,'span',{'class':t.classPrefix+'Line'});n=DOM.add(co,'table',{id:'menu_'+t.id+'_tbl',border:0,cellPadding:0,cellSpacing:0});tb=DOM.add(n,'tbody');each(t.items,function(o){t._add(tb,o);});t.rendered=true;return w;},_keyHandler:function(e){var t=this,kc=e.keyCode;function focus(d){var i=t._focusIdx+d,e=DOM.select('a','menu_'+t.id)[i];if(e){t._focusIdx=i;e.focus();}};switch(kc){case 38:focus(-1);return;case 40:focus(1);return;case 13:return;case 27:return this.hideMenu();}},_add:function(tb,o){var n,s=o.settings,a,ro,it,cp=this.classPrefix;if(s.separator){ro=DOM.add(tb,'tr',{id:o.id,'class':cp+'ItemSeparator'});DOM.add(ro,'td',{'class':cp+'ItemSeparator'});if(n=ro.previousSibling)DOM.addClass(n,'mceLast');return;}n=ro=DOM.add(tb,'tr',{id:o.id,'class':cp+'Item '+cp+'ItemEnabled'});n=it=DOM.add(n,'td');n=a=DOM.add(n,'a',{href:'javascript:;',onclick:"return false;",onmousedown:'return false;'});DOM.addClass(it,s['class']);DOM.add(n,'span',{'class':'mceIcon'+(s.icon?' mce_'+s.icon:'')});n=DOM.add(n,s.element||'span',{'class':'mceText',title:o.settings.title},o.settings.title);if(o.settings.style)DOM.setAttrib(n,'style',o.settings.style);if(tb.childNodes.length==1)DOM.addClass(ro,'mceFirst');if((n=ro.previousSibling)&&DOM.hasClass(n,cp+'ItemSeparator'))DOM.addClass(ro,'mceFirst');if(o.collapse)DOM.addClass(ro,cp+'ItemSub');if(n=ro.previousSibling)DOM.removeClass(n,'mceLast');DOM.addClass(ro,'mceLast');}});})();(function(){var DOM=tinymce.DOM;tinymce.create('tinymce.ui.Button:tinymce.ui.Control',{Button:function(id,s){this.parent(id,s);this.classPrefix='mceButton';},renderHTML:function(){var cp=this.classPrefix,s=this.settings,h,l;l=DOM.encode(s.label||'');h='<a id="'+this.id+'" href="javascript:;" class="'+cp+' '+cp+'Enabled '+s['class']+(l?' '+cp+'Labeled':'')+'" onmousedown="return false;" onclick="return false;" title="'+DOM.encode(s.title)+'">';if(s.image)h+='<img class="mceIcon" src="'+s.image+'" />'+l+'</a>';else h+='<span class="mceIcon '+s['class']+'"></span>'+(l?'<span class="'+cp+'Label">'+l+'</span>':'')+'</a>';return h;},postRender:function(){var t=this,s=t.settings;tinymce.dom.Event.add(t.id,'click',function(e){if(!t.isDisabled())return s.onclick.call(s.scope,e);});}});})();(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,each=tinymce.each,Dispatcher=tinymce.util.Dispatcher;tinymce.create('tinymce.ui.ListBox:tinymce.ui.Control',{ListBox:function(id,s){var t=this;t.parent(id,s);t.items=[];t.onChange=new Dispatcher(t);t.onPostRender=new Dispatcher(t);t.onAdd=new Dispatcher(t);t.onRenderMenu=new tinymce.util.Dispatcher(this);t.classPrefix='mceListBox';},select:function(v){var t=this,e,fv;if(v!=t.selectedValue){e=DOM.get(t.id+'_text');t.selectedValue=v;each(t.items,function(o){if(o.value==v){DOM.setHTML(e,DOM.encode(o.title));fv=1;return false;}});if(!fv){DOM.setHTML(e,DOM.encode(t.settings.title));DOM.addClass(e,'mceTitle');e=0;return;}else DOM.removeClass(e,'mceTitle');}e=0;},add:function(n,v,o){var t=this;o=o||{};o=tinymce.extend(o,{title:n,value:v});t.items.push(o);t.onAdd.dispatch(t,o);},getLength:function(){return this.items.length;},renderHTML:function(){var h='',t=this,s=t.settings,cp=t.classPrefix;h='<table id="'+t.id+'" cellpadding="0" cellspacing="0" class="'+cp+' '+cp+'Enabled'+(s['class']?(' '+s['class']):'')+'"><tbody><tr>';h+='<td>'+DOM.createHTML('a',{id:t.id+'_text',href:'javascript:;','class':'mceText',onclick:"return false;",onmousedown:'return false;'},DOM.encode(t.settings.title))+'</td>';h+='<td>'+DOM.createHTML('a',{id:t.id+'_open',tabindex:-1,href:'javascript:;','class':'mceOpen',onclick:"return false;",onmousedown:'return false;'},'<span></span>')+'</td>';h+='</tr></tbody></table>';return h;},showMenu:function(){var t=this,p1,p2,e=DOM.get(this.id),m;if(t.isDisabled()||t.items.length==0)return;if(t.menu&&t.menu.isMenuVisible)return t.hideMenu();if(!t.isMenuRendered){t.renderMenu();t.isMenuRendered=true;}p1=DOM.getPos(this.settings.menu_container);p2=DOM.getPos(e);m=t.menu;m.settings.offset_x=p2.x;m.settings.offset_y=p2.y;m.settings.keyboard_focus=!tinymce.isOpera;if(t.oldID)m.items[t.oldID].setSelected(0);each(t.items,function(o){if(o.value===t.selectedValue){m.items[o.id].setSelected(1);t.oldID=o.id;}});m.showMenu(0,e.clientHeight);Event.add(DOM.doc,'mousedown',t.hideMenu,t);DOM.addClass(t.id,t.classPrefix+'Selected');},hideMenu:function(e){var t=this;if(e&&e.type=="mousedown"&&(e.target.id==t.id+'_text'||e.target.id==t.id+'_open'))return;if(!e||!DOM.getParent(e.target,function(n){return DOM.hasClass(n,'mceMenu');})){DOM.removeClass(t.id,t.classPrefix+'Selected');Event.remove(DOM.doc,'mousedown',t.hideMenu,t);if(t.menu)t.menu.hideMenu();}},renderMenu:function(){var t=this,m;m=t.settings.control_manager.createDropMenu(t.id+'_menu',{menu_line:1,'class':t.classPrefix+'Menu mceNoIcons',max_width:150,max_height:150});m.onHideMenu.add(t.hideMenu,t);m.add({title:t.settings.title,'class':'mceMenuItemTitle',onclick:function(){if(t.settings.onselect('')!==false)t.select('');}});each(t.items,function(o){o.id=DOM.uniqueId();o.onclick=function(){if(t.settings.onselect(o.value)!==false)t.select(o.value);};m.add(o);});t.onRenderMenu.dispatch(t,m);t.menu=m;},postRender:function(){var t=this,cp=t.classPrefix;Event.add(t.id,'click',t.showMenu,t);Event.add(t.id+'_text','focus',function(e){if(!t._focused){t.keyDownHandler=Event.add(t.id+'_text','keydown',function(e){var idx=-1,v,kc=e.keyCode;each(t.items,function(v,i){if(t.selectedValue==v.value)idx=i;});if(kc==38)v=t.items[idx-1];else if(kc==40)v=t.items[idx+1];else if(kc==13){v=t.selectedValue;t.selectedValue=null;t.settings.onselect(v);return Event.cancel(e);}if(v){t.hideMenu();t.select(v.value);}});}t._focused=1;});Event.add(t.id+'_text','blur',function(){Event.remove(t.id+'_text','keydown',t.keyDownHandler);t._focused=0;});if(tinymce.isIE6||!DOM.boxModel){Event.add(t.id,'mouseover',function(){if(!DOM.hasClass(t.id,cp+'Disabled'))DOM.addClass(t.id,cp+'Hover');});Event.add(t.id,'mouseout',function(){if(!DOM.hasClass(t.id,cp+'Disabled'))DOM.removeClass(t.id,cp+'Hover');});}t.onPostRender.dispatch(t,DOM.get(t.id));},destroy:function(){this.parent();Event.clear(this.id+'_text');}});})();(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,each=tinymce.each,Dispatcher=tinymce.util.Dispatcher;tinymce.create('tinymce.ui.NativeListBox:tinymce.ui.ListBox',{NativeListBox:function(id,s){this.parent(id,s);this.classPrefix='mceNativeListBox';},setDisabled:function(s){DOM.get(this.id).disabled=s;},isDisabled:function(){return DOM.get(this.id).disabled;},select:function(v){var e=DOM.get(this.id),ol=e.options;v=''+(v||'');e.selectedIndex=0;each(ol,function(o,i){if(o.value==v){e.selectedIndex=i;return false;}});},add:function(n,v,a){var o,t=this;a=a||{};a.value=v;if(t.isRendered())DOM.add(DOM.get(this.id),'option',a,n);o={title:n,value:v,attribs:a};t.items.push(o);t.onAdd.dispatch(t,o);},getLength:function(){return DOM.get(this.id).options.length-1;},renderHTML:function(){var h,t=this;h=DOM.createHTML('option',{value:''},'-- '+t.settings.title+' --');each(t.items,function(it){h+=DOM.createHTML('option',{value:it.value},it.title);});h=DOM.createHTML('select',{id:t.id,'class':'mceNativeListBox'},h);return h;},postRender:function(){var t=this,ch;t.rendered=true;function onChange(e){var v=e.target.options[e.target.selectedIndex].value;t.onChange.dispatch(t,v);if(t.settings.onselect)t.settings.onselect(v);};Event.add(t.id,'change',onChange);Event.add(t.id,'keydown',function(e){var bf;Event.remove(t.id,'change',ch);bf=Event.add(t.id,'blur',function(){Event.add(t.id,'change',onChange);Event.remove(t.id,'blur',bf);});if(e.keyCode==13||e.keyCode==32){onChange(e);return Event.cancel(e);}});t.onPostRender.dispatch(t,DOM.get(t.id));}});})();(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,each=tinymce.each;tinymce.create('tinymce.ui.MenuButton:tinymce.ui.Button',{MenuButton:function(id,s){this.parent(id,s);this.onRenderMenu=new tinymce.util.Dispatcher(this);s.menu_container=s.menu_container||DOM.doc.body;},showMenu:function(){var t=this,p1,p2,e=DOM.get(t.id),m;if(t.isDisabled())return;if(!t.isMenuRendered){t.renderMenu();t.isMenuRendered=true;}if(t.isMenuVisible)return t.hideMenu();p1=DOM.getPos(t.settings.menu_container);p2=DOM.getPos(e);m=t.menu;m.settings.offset_x=p2.x;m.settings.offset_y=p2.y;m.settings.vp_offset_x=p2.x;m.settings.vp_offset_y=p2.y;m.settings.keyboard_focus=t._focused;m.showMenu(0,e.clientHeight);Event.add(DOM.doc,'mousedown',t.hideMenu,t);t.setState('Selected',1);t.isMenuVisible=1;},renderMenu:function(){var t=this,m;m=t.settings.control_manager.createDropMenu(t.id+'_menu',{menu_line:1,'class':this.classPrefix+'Menu',icons:t.settings.icons});m.onHideMenu.add(t.hideMenu,t);t.onRenderMenu.dispatch(t,m);t.menu=m;},hideMenu:function(e){var t=this;if(e&&e.type=="mousedown"&&DOM.getParent(e.target,function(e){return e.id===t.id||e.id===t.id+'_open';}))return;if(!e||!DOM.getParent(e.target,function(n){return DOM.hasClass(n,'mceMenu');})){t.setState('Selected',0);Event.remove(DOM.doc,'mousedown',t.hideMenu,t);if(t.menu)t.menu.hideMenu();}t.isMenuVisible=0;},postRender:function(){var t=this,s=t.settings;Event.add(t.id,'click',function(){if(!t.isDisabled()){if(s.onclick)s.onclick(t.value);t.showMenu();}});}});})();(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,each=tinymce.each;tinymce.create('tinymce.ui.SplitButton:tinymce.ui.MenuButton',{SplitButton:function(id,s){this.parent(id,s);this.classPrefix='mceSplitButton';},renderHTML:function(){var h,t=this,s=t.settings,h1;h='<tbody><tr>';if(s.image)h1=DOM.createHTML('img ',{src:s.image,'class':'mceAction '+s['class']});else h1=DOM.createHTML('span',{'class':'mceAction '+s['class']},'');h+='<td>'+DOM.createHTML('a',{id:t.id+'_action',href:'javascript:;','class':'mceAction '+s['class'],onclick:"return false;",onmousedown:'return false;',title:s.title},h1)+'</td>';h1=DOM.createHTML('span',{'class':'mceOpen '+s['class']});h+='<td>'+DOM.createHTML('a',{id:t.id+'_open',href:'javascript:;','class':'mceOpen '+s['class'],onclick:"return false;",onmousedown:'return false;',title:s.title},h1)+'</td>';h+='</tr></tbody>';return DOM.createHTML('table',{id:t.id,'class':'mceSplitButton mceSplitButtonEnabled '+s['class'],cellpadding:'0',cellspacing:'0',onmousedown:'return false;',title:s.title},h);},postRender:function(){var t=this,s=t.settings;if(s.onclick){Event.add(t.id+'_action','click',function(){if(!t.isDisabled())s.onclick(t.value);});}Event.add(t.id+'_open','click',t.showMenu,t);Event.add(t.id+'_open','focus',function(){t._focused=1;});Event.add(t.id+'_open','blur',function(){t._focused=0;});if(tinymce.isIE6||!DOM.boxModel){Event.add(t.id,'mouseover',function(){if(!DOM.hasClass(t.id,'mceSplitButtonDisabled'))DOM.addClass(t.id,'mceSplitButtonHover');});Event.add(t.id,'mouseout',function(){if(!DOM.hasClass(t.id,'mceSplitButtonDisabled'))DOM.removeClass(t.id,'mceSplitButtonHover');});}},destroy:function(){this.parent();Event.clear(this.id+'_action');Event.clear(this.id+'_open');}});})();(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,is=tinymce.is,each=tinymce.each;tinymce.create('tinymce.ui.ColorSplitButton:tinymce.ui.SplitButton',{ColorSplitButton:function(id,s){var t=this;t.parent(id,s);t.settings=s=tinymce.extend({colors:'000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,008000,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF',grid_width:8,default_color:'#888888'},t.settings);t.onShowMenu=new tinymce.util.Dispatcher(t);t.onHideMenu=new tinymce.util.Dispatcher(t);t.value=s.default_color;},showMenu:function(){var t=this,r,p,e,p2;if(t.isDisabled())return;if(!t.isMenuRendered){t.renderMenu();t.isMenuRendered=true;}if(t.isMenuVisible)return t.hideMenu();e=DOM.get(t.id);DOM.show(t.id+'_menu');DOM.addClass(e,'mceSplitButtonSelected');p2=DOM.getPos(e);DOM.setStyles(t.id+'_menu',{left:p2.x,top:p2.y+e.clientHeight,zIndex:200000});e=0;Event.add(DOM.doc,'mousedown',t.hideMenu,t);if(t._focused){t._keyHandler=Event.add(t.id+'_menu','keydown',function(e){if(e.keyCode==27)t.hideMenu();});DOM.select('a',t.id+'_menu')[0].focus();}t.onShowMenu.dispatch(t);t.isMenuVisible=1;},hideMenu:function(e){var t=this;if(e&&e.type=="mousedown"&&DOM.getParent(e.target,function(e){return e.id===t.id+'_open';}))return;if(!e||!DOM.getParent(e.target,function(n){return DOM.hasClass(n,'mceSplitButtonMenu');})){DOM.removeClass(t.id,'mceSplitButtonSelected');Event.remove(DOM.doc,'mousedown',t.hideMenu,t);Event.remove(t.id+'_menu','keydown',t._keyHandler);DOM.hide(t.id+'_menu');}t.onHideMenu.dispatch(t);t.isMenuVisible=0;},renderMenu:function(){var t=this,m,i=0,s=t.settings,n,tb,tr,w;w=DOM.add(s.menu_container,'div',{id:t.id+'_menu','class':s['menu_class']+' '+s['class'],style:'position:absolute;left:0;top:-1000px;'});m=DOM.add(w,'div',{'class':s['class']+' mceSplitButtonMenu'});DOM.add(m,'span',{'class':'mceMenuLine'});n=DOM.add(m,'table',{'class':'mceColorSplitMenu'});tb=DOM.add(n,'tbody');i=0;each(is(s.colors,'array')?s.colors:s.colors.split(','),function(c){c=c.replace(/^#/,'');if(!i--){tr=DOM.add(tb,'tr');i=s.grid_width-1;}n=DOM.add(tr,'td');n=DOM.add(n,'a',{href:'javascript:;',style:{backgroundColor:'#'+c},mce_color:'#'+c});});if(s.more_colors_func){n=DOM.add(tb,'tr');n=DOM.add(n,'td',{colspan:s.grid_width,'class':'mceMoreColors'});n=DOM.add(n,'a',{id:t.id+'_more',href:'javascript:;',onclick:'return false;','class':'mceMoreColors'},s.more_colors_title);Event.add(n,'click',function(e){s.more_colors_func.call(s.more_colors_scope||this);return Event.cancel(e);});}DOM.addClass(m,'mceColorSplitMenu');Event.add(t.id+'_menu','click',function(e){var c;e=e.target;if(e.nodeName=='A'&&(c=e.getAttribute('mce_color')))t.setColor(c);return Event.cancel(e);});return w;},setColor:function(c){var t=this;DOM.setStyle(t.id+'_preview','backgroundColor',c);t.value=c;t.hideMenu();t.settings.onselect(c);},postRender:function(){var t=this,id=t.id;t.parent();DOM.add(id+'_action','div',{id:id+'_preview','class':'mceColorPreview'});},destroy:function(){this.parent();Event.clear(this.id+'_menu');Event.clear(this.id+'_more');DOM.remove(this.id+'_menu');}});})();tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container',{renderHTML:function(){var t=this,h='',c,co,dom=tinymce.DOM,s=t.settings,i,pr,nx,cl;cl=t.controls;for(i=0;i<cl.length;i++){co=cl[i];pr=cl[i-1];nx=cl[i+1];if(i===0){c='mceToolbarStart';if(co.Button)c+=' mceToolbarStartButton';else if(co.SplitButton)c+=' mceToolbarStartSplitButton';else if(co.ListBox)c+=' mceToolbarStartListBox';h+=dom.createHTML('td',{'class':c},dom.createHTML('span',null,'<!-- IE -->'));}if(pr&&co.ListBox){if(pr.Button||pr.SplitButton)h+=dom.createHTML('td',{'class':'mceToolbarEnd'},dom.createHTML('span',null,'<!-- IE -->'));}if(dom.stdMode)h+='<td style="position: relative">'+co.renderHTML()+'</td>';else h+='<td>'+co.renderHTML()+'</td>';if(nx&&co.ListBox){if(nx.Button||nx.SplitButton)h+=dom.createHTML('td',{'class':'mceToolbarStart'},dom.createHTML('span',null,'<!-- IE -->'));}}c='mceToolbarEnd';if(co.Button)c+=' mceToolbarEndButton';else if(co.SplitButton)c+=' mceToolbarEndSplitButton';else if(co.ListBox)c+=' mceToolbarEndListBox';h+=dom.createHTML('td',{'class':c},dom.createHTML('span',null,'<!-- IE -->'));return dom.createHTML('table',{id:t.id,'class':'mceToolbar'+(s['class']?' '+s['class']:''),cellpadding:'0',cellspacing:'0',align:t.settings.align||''},'<tbody><tr>'+h+'</tr></tbody>');}});(function(){var Dispatcher=tinymce.util.Dispatcher,each=tinymce.each;tinymce.create('tinymce.AddOnManager',{items:[],urls:{},lookup:{},onAdd:new Dispatcher(this),get:function(n){return this.lookup[n];},requireLangPack:function(n){var u,s=tinymce.EditorManager.settings;if(s&&s.language){u=this.urls[n]+'/langs/'+s.language+'.js';if(!tinymce.dom.Event.domLoaded&&!s.strict_mode)tinymce.ScriptLoader.load(u);else tinymce.ScriptLoader.add(u);}},add:function(id,o){this.items.push(o);this.lookup[id]=o;this.onAdd.dispatch(this,id,o);return o;},load:function(n,u,cb,s){var t=this;if(t.urls[n])return;if(u.indexOf('/')!=0&&u.indexOf('://')==-1)u=tinymce.baseURL+'/'+u;t.urls[n]=u.substring(0,u.lastIndexOf('/'));tinymce.ScriptLoader.add(u,cb,s);}});tinymce.PluginManager=new tinymce.AddOnManager();tinymce.ThemeManager=new tinymce.AddOnManager();}());(function(){var each=tinymce.each,extend=tinymce.extend,DOM=tinymce.DOM,Event=tinymce.dom.Event,ThemeManager=tinymce.ThemeManager,PluginManager=tinymce.PluginManager,explode=tinymce.explode;tinymce.create('static tinymce.EditorManager',{editors:{},i18n:{},activeEditor:null,preInit:function(){var t=this,lo=window.location;tinymce.documentBaseURL=lo.href.replace(/[\?#].*$/,'').replace(/[\/\\][^\/]+$/,'');if(!/[\/\\]$/.test(tinymce.documentBaseURL))tinymce.documentBaseURL+='/';tinymce.baseURL=new tinymce.util.URI(tinymce.documentBaseURL).toAbsolute(tinymce.baseURL);tinymce.EditorManager.baseURI=new tinymce.util.URI(tinymce.baseURL);if(document.domain&&lo.hostname!=document.domain)tinymce.relaxedDomain=document.domain;if(!tinymce.relaxedDomain&&tinymce.EditorManager.baseURI.host!=lo.hostname&&lo.hostname)document.domain=tinymce.relaxedDomain=lo.hostname.replace(/.*\.(.+\..+)$/,'$1');t.onBeforeUnload=new tinymce.util.Dispatcher(t);Event.add(window,'beforeunload',function(e){t.onBeforeUnload.dispatch(t,e);});},init:function(s){var t=this,pl,sl=tinymce.ScriptLoader,c,e,el=[],ed;function execCallback(se,n,s){var f=se[n];if(!f)return;if(tinymce.is(f,'string')){s=f.replace(/\.\w+$/,'');s=s?tinymce.resolve(s):0;f=tinymce.resolve(f);}return f.apply(s||this,Array.prototype.slice.call(arguments,2));};s=extend({theme:"simple",language:"en",strict_loading_mode:document.contentType=='application/xhtml+xml'},s);t.settings=s;if(!Event.domLoaded&&!s.strict_loading_mode){if(s.language)sl.add(tinymce.baseURL+'/langs/'+s.language+'.js');if(s.theme&&s.theme.charAt(0)!='-'&&!ThemeManager.urls[s.theme])ThemeManager.load(s.theme,'themes/'+s.theme+'/editor_template'+tinymce.suffix+'.js');if(s.plugins){pl=explode(s.plugins);if(tinymce.inArray(pl,'compat2x')!=-1)PluginManager.load('compat2x','plugins/compat2x/editor_plugin'+tinymce.suffix+'.js');each(pl,function(v){if(v&&v.charAt(0)!='-'&&!PluginManager.urls[v]){if(!tinymce.isWebKit&&v=='safari')return;PluginManager.load(v,'plugins/'+v+'/editor_plugin'+tinymce.suffix+'.js');}});}sl.loadQueue();}Event.add(document,'init',function(){var l,co;execCallback(s,'onpageload');if(s.browsers){l=false;each(explode(s.browsers),function(v){switch(v){case'ie':case'msie':if(tinymce.isIE)l=true;break;case'gecko':if(tinymce.isGecko)l=true;break;case'safari':case'webkit':if(tinymce.isWebKit)l=true;break;case'opera':if(tinymce.isOpera)l=true;break;}});if(!l)return;}switch(s.mode){case"exact":l=s.elements||'';if(l.length>0){each(explode(l),function(v){if(DOM.get(v)){ed=new tinymce.Editor(v,s);el.push(ed);ed.render(1);}else{c=0;each(document.forms,function(f){each(f.elements,function(e){if(e.name===v){v='mce_editor_'+c;DOM.setAttrib(e,'id',v);ed=new tinymce.Editor(v,s);el.push(ed);ed.render(1);}});});}});}break;case"textareas":case"specific_textareas":function hasClass(n,c){return c.constructor===RegExp?c.test(n.className):DOM.hasClass(n,c);};each(DOM.select('textarea'),function(v){if(s.editor_deselector&&hasClass(v,s.editor_deselector))return;if(!s.editor_selector||hasClass(v,s.editor_selector)){e=DOM.get(v.name);if(!v.id&&!e)v.id=v.name;if(!v.id||t.get(v.id))v.id=DOM.uniqueId();ed=new tinymce.Editor(v.id,s);el.push(ed);ed.render(1);}});break;}if(s.oninit){l=co=0;each(el,function(ed){co++;if(!ed.initialized){ed.onInit.add(function(){l++;if(l==co)execCallback(s,'oninit');});}else l++;if(l==co)execCallback(s,'oninit');});}});},get:function(id){return this.editors[id];},getInstanceById:function(id){return this.get(id);},add:function(e){this.editors[e.id]=e;this._setActive(e);return e;},remove:function(e){var t=this;if(!t.editors[e.id])return null;delete t.editors[e.id];if(t.activeEditor==e){each(t.editors,function(e){t._setActive(e);return false;});}e.destroy();return e;},execCommand:function(c,u,v){var t=this,ed=t.get(v),w;switch(c){case"mceFocus":ed.focus();return true;case"mceAddEditor":case"mceAddControl":if(!t.get(v))new tinymce.Editor(v,t.settings).render();return true;case"mceAddFrameControl":w=v.window;w.tinyMCE=tinyMCE;w.tinymce=tinymce;tinymce.DOM.doc=w.document;tinymce.DOM.win=w;ed=new tinymce.Editor(v.element_id,v);ed.render();if(tinymce.isIE){function clr(){ed.destroy();w.detachEvent('onunload',clr);w=w.tinyMCE=w.tinymce=null;};w.attachEvent('onunload',clr);}v.page_window=null;return true;case"mceRemoveEditor":case"mceRemoveControl":ed.remove();return true;case'mceToggleEditor':if(!ed){t.execCommand('mceAddControl',0,v);return true;}if(ed.isHidden())ed.show();else ed.hide();return true;}if(t.activeEditor)return t.activeEditor.execCommand(c,u,v);return false;},execInstanceCommand:function(id,c,u,v){var ed=this.get(id);if(ed)return ed.execCommand(c,u,v);return false;},triggerSave:function(){each(this.editors,function(e){e.save();});},addI18n:function(p,o){var lo,i18n=this.i18n;if(!tinymce.is(p,'string')){each(p,function(o,lc){each(o,function(o,g){each(o,function(o,k){if(g==='common')i18n[lc+'.'+k]=o;else i18n[lc+'.'+g+'.'+k]=o;});});});}else{each(o,function(o,k){i18n[p+'.'+k]=o;});}},_setActive:function(e){this.selectedInstance=this.activeEditor=e;}});tinymce.EditorManager.preInit();})();var tinyMCE=window.tinyMCE=tinymce.EditorManager;(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,extend=tinymce.extend,Dispatcher=tinymce.util.Dispatcher;var each=tinymce.each,isGecko=tinymce.isGecko,isIE=tinymce.isIE,isWebKit=tinymce.isWebKit;var is=tinymce.is,ThemeManager=tinymce.ThemeManager,PluginManager=tinymce.PluginManager,EditorManager=tinymce.EditorManager;var inArray=tinymce.inArray,grep=tinymce.grep,explode=tinymce.explode;tinymce.create('tinymce.Editor',{Editor:function(id,s){var t=this;t.id=t.editorId=id;t.execCommands={};t.queryStateCommands={};t.queryValueCommands={};t.plugins={};each(['onPreInit','onBeforeRenderUI','onPostRender','onInit','onRemove','onActivate','onDeactivate','onClick','onEvent','onMouseUp','onMouseDown','onDblClick','onKeyDown','onKeyUp','onKeyPress','onContextMenu','onSubmit','onReset','onPaste','onPreProcess','onPostProcess','onBeforeSetContent','onBeforeGetContent','onSetContent','onGetContent','onLoadContent','onSaveContent','onNodeChange','onChange','onBeforeExecCommand','onExecCommand','onUndo','onRedo','onVisualAid','onSetProgressState'],function(e){t[e]=new Dispatcher(t);});t.settings=s=extend({id:id,language:'en',docs_language:'en',theme:'simple',skin:'default',delta_width:0,delta_height:0,popup_css:'',plugins:'',document_base_url:tinymce.documentBaseURL,add_form_submit_trigger:1,submit_patch:1,add_unload_trigger:1,convert_urls:1,relative_urls:1,remove_script_host:1,table_inline_editing:0,object_resizing:1,cleanup:1,accessibility_focus:1,custom_shortcuts:1,custom_undo_redo_keyboard_shortcuts:1,custom_undo_redo_restore_selection:1,custom_undo_redo:1,doctype:'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">',visual_table_class:'mceItemTable',visual:1,inline_styles:true,convert_fonts_to_spans:true,font_size_style_values:'xx-small,x-small,small,medium,large,x-large,xx-large',apply_source_formatting:1,directionality:'ltr',forced_root_block:'p',valid_elements:'@[id|class|style|title|dir<ltr?rtl|lang|xml::lang|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup],a[rel|rev|charset|hreflang|tabindex|accesskey|type|name|href|target|title|class|onfocus|onblur],strong/b,em/i,strike,u,#p[align],-ol[type|compact],-ul[type|compact],-li,br,img[longdesc|usemap|src|border|alt=|title|hspace|vspace|width|height|align],-sub,-sup,-blockquote[cite],-table[border=0|cellspacing|cellpadding|width|frame|rules|height|align|summary|bgcolor|background|bordercolor],-tr[rowspan|width|height|align|valign|bgcolor|background|bordercolor],tbody,thead,tfoot,#td[colspan|rowspan|width|height|align|valign|bgcolor|background|bordercolor|scope],#th[colspan|rowspan|width|height|align|valign|scope],caption,-div,-span,-code,-pre,address,-h1,-h2,-h3,-h4,-h5,-h6,hr[size|noshade],-font[face|size|color],dd,dl,dt,cite,abbr,acronym,del[datetime|cite],ins[datetime|cite],object[classid|width|height|codebase|*],param[name|value],embed[type|width|height|src|*],script[src|type],map[name],area[shape|coords|href|alt|target],bdo,button,col[align|char|charoff|span|valign|width],colgroup[align|char|charoff|span|valign|width],dfn,fieldset,form[action|accept|accept-charset|enctype|method],input[accept|alt|checked|disabled|maxlength|name|readonly|size|src|type|value|tabindex|accesskey],kbd,label[for],legend,noscript,optgroup[label|disabled],option[disabled|label|selected|value],q[cite],samp,select[disabled|multiple|name|size],small,textarea[cols|rows|disabled|name|readonly],tt,var,big',hidden_input:1,padd_empty_editor:1,render_ui:1,init_theme:1,force_p_newlines:1,indentation:'30px'},s);t.documentBaseURI=new tinymce.util.URI(s.document_base_url||tinymce.documentBaseURL,{base_uri:tinyMCE.baseURI});t.baseURI=EditorManager.baseURI;t.execCallback('setup',t);},render:function(nst){var t=this,s=t.settings,id=t.id,sl=tinymce.ScriptLoader;if(!Event.domLoaded){Event.add(document,'init',function(){t.render();});return;}if(!nst){s.strict_loading_mode=1;tinyMCE.settings=s;}if(!t.getElement())return;if(s.strict_loading_mode){sl.settings.strict_mode=s.strict_loading_mode;tinymce.DOM.settings.strict=1;}if(!/TEXTAREA|INPUT/i.test(t.getElement().nodeName)&&s.hidden_input&&DOM.getParent(id,'form'))DOM.insertAfter(DOM.create('input',{type:'hidden',name:id}),id);t.windowManager=new tinymce.WindowManager(t);if(s.encoding=='xml'){t.onGetContent.add(function(ed,o){if(o.save)o.content=DOM.encode(o.content);});}if(s.add_form_submit_trigger){t.onSubmit.addToTop(function(){if(t.initialized){t.save();t.isNotDirty=1;}});}if(s.add_unload_trigger&&!s.ask){t._beforeUnload=tinyMCE.onBeforeUnload.add(function(){if(t.initialized&&!t.destroyed&&!t.isHidden())t.save({format:'raw',no_events:true});});}tinymce.addUnload(t.destroy,t);if(s.submit_patch){t.onBeforeRenderUI.add(function(){var n=t.getElement().form;if(!n)return;if(n._mceOldSubmit)return;if(!n.submit.nodeType&&!n.submit.length){t.formElement=n;n._mceOldSubmit=n.submit;n.submit=function(){EditorManager.triggerSave();t.isNotDirty=1;return this._mceOldSubmit(this);};}n=null;});}function loadScripts(){if(s.language)sl.add(tinymce.baseURL+'/langs/'+s.language+'.js');if(s.theme.charAt(0)!='-'&&!ThemeManager.urls[s.theme])ThemeManager.load(s.theme,'themes/'+s.theme+'/editor_template'+tinymce.suffix+'.js');each(explode(s.plugins),function(p){if(p&&p.charAt(0)!='-'&&!PluginManager.urls[p]){if(!isWebKit&&p=='safari')return;PluginManager.load(p,'plugins/'+p+'/editor_plugin'+tinymce.suffix+'.js');}});sl.loadQueue(function(){if(s.ask){function ask(){window.setTimeout(function(){Event.remove(t.id,'focus',ask);t.windowManager.confirm(t.getLang('edit_confirm'),function(s){if(s)t.init();});},0);};Event.add(t.id,'focus',ask);return;}if(!t.removed)t.init();});};if(s.plugins.indexOf('compat2x')!=-1){PluginManager.load('compat2x','plugins/compat2x/editor_plugin'+tinymce.suffix+'.js');sl.loadQueue(loadScripts);}else loadScripts();},init:function(){var n,t=this,s=t.settings,w,h,e=t.getElement(),o,ti,u,bi,bc,re;EditorManager.add(t);s.theme=s.theme.replace(/-/,'');o=ThemeManager.get(s.theme);t.theme=new o();if(t.theme.init&&s.init_theme)t.theme.init(t,ThemeManager.urls[s.theme]||tinymce.documentBaseURL.replace(/\/$/,''));each(explode(s.plugins.replace(/\-/g,'')),function(p){var c=PluginManager.get(p),u=PluginManager.urls[p]||tinymce.documentBaseURL.replace(/\/$/,''),po;if(c){po=new c(t,u);t.plugins[p]=po;if(po.init)po.init(t,u);}});if(s.popup_css)s.popup_css=t.documentBaseURI.toAbsolute(s.popup_css);else s.popup_css=t.baseURI.toAbsolute("themes/"+s.theme+"/skins/"+s.skin+"/dialog.css");if(s.popup_css_add)s.popup_css+=','+t.documentBaseURI.toAbsolute(s.popup_css_add);t.controlManager=new tinymce.ControlManager(t);t.undoManager=new tinymce.UndoManager(t);t.undoManager.onAdd.add(function(um,l){if(!l.initial)return t.onChange.dispatch(t,l,um);});t.undoManager.onUndo.add(function(um,l){return t.onUndo.dispatch(t,l,um);});t.undoManager.onRedo.add(function(um,l){return t.onRedo.dispatch(t,l,um);});if(s.custom_undo_redo){t.onExecCommand.add(function(ed,cmd,ui,val,a){if(cmd!='Undo'&&cmd!='Redo'&&cmd!='mceRepaint'&&(!a||!a.skip_undo))t.undoManager.add();});}t.onExecCommand.add(function(ed,c){if(!/^(FontName|FontSize)$/.test(c))t.nodeChanged();});if(isGecko){function repaint(a,o){if(!o||!o.initial)t.execCommand('mceRepaint');};t.onUndo.add(repaint);t.onRedo.add(repaint);t.onSetContent.add(repaint);}t.onBeforeRenderUI.dispatch(t,t.controlManager);if(s.render_ui){w=s.width||e.style.width||e.offsetWidth;h=s.height||e.style.height||e.offsetHeight;t.orgDisplay=e.style.display;re=/^[0-9\.]+(|px)$/i;if(re.test(''+w))w=Math.max(parseInt(w)+(o.deltaWidth||0),100);if(re.test(''+h))h=Math.max(parseInt(h)+(o.deltaHeight||0),100);o=t.theme.renderUI({targetNode:e,width:w,height:h,deltaWidth:s.delta_width,deltaHeight:s.delta_height});t.editorContainer=o.editorContainer;}DOM.setStyles(o.sizeContainer||o.editorContainer,{width:w,height:h});h=(o.iframeHeight||h)+((h+'').indexOf('%')==-1?(o.deltaHeight||0):'');if(h<100)h=100;t.iframeHTML=s.doctype+'<html><head xmlns="http://www.w3.org/1999/xhtml"><base href="'+t.documentBaseURI.getURI()+'" />';t.iframeHTML+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';if(tinymce.relaxedDomain)t.iframeHTML+='<script type="text/javascript">document.domain = "'+tinymce.relaxedDomain+'";</script>';bi=s.body_id||'tinymce';if(bi.indexOf('=')!=-1){bi=t.getParam('body_id','','hash');bi=bi[t.id]||bi;}bc=s.body_class||'';if(bc.indexOf('=')!=-1){bc=t.getParam('body_class','','hash');bc=bc[t.id]||'';}t.iframeHTML+='</head><body id="'+bi+'" class="mceContentBody '+bc+'"></body></html>';if(tinymce.relaxedDomain){if(isIE||(tinymce.isOpera&&parseFloat(opera.version())>=9.5))u='javascript:(function(){document.open();document.domain="'+document.domain+'";var ed = window.parent.tinyMCE.get("'+t.id+'");document.write(ed.iframeHTML);document.close();ed.setupIframe();})()';else if(tinymce.isOpera)u='javascript:(function(){document.open();document.domain="'+document.domain+'";document.close();ed.setupIframe();})()';}n=DOM.add(o.iframeContainer,'iframe',{id:t.id+"_ifr",src:u||'javascript:""',frameBorder:'0',style:{width:'100%',height:h}});t.contentAreaContainer=o.iframeContainer;DOM.get(o.editorContainer).style.display=t.orgDisplay;DOM.get(t.id).style.display='none';if(tinymce.isOldWebKit){Event.add(n,'load',t.setupIframe,t);n.src=tinymce.baseURL+'/plugins/safari/blank.htm';}else{if(!isIE||!tinymce.relaxedDomain)t.setupIframe();e=n=o=null;}},setupIframe:function(){var t=this,s=t.settings,e=DOM.get(t.id),d=t.getDoc(),h,b;if(!isIE||!tinymce.relaxedDomain){d.open();d.write(t.iframeHTML);d.close();}if(!isIE){try{if(!s.readonly)d.designMode='On';}catch(ex){}}if(isIE){b=t.getBody();DOM.hide(b);if(!s.readonly)b.contentEditable=true;DOM.show(b);}t.dom=new tinymce.DOM.DOMUtils(t.getDoc(),{keep_values:true,url_converter:t.convertURL,url_converter_scope:t,hex_colors:s.force_hex_style_colors,class_filter:s.class_filter,update_styles:1,fix_ie_paragraphs:1});t.serializer=new tinymce.dom.Serializer({entity_encoding:s.entity_encoding,entities:s.entities,valid_elements:s.verify_html===false?'*[*]':s.valid_elements,extended_valid_elements:s.extended_valid_elements,valid_child_elements:s.valid_child_elements,invalid_elements:s.invalid_elements,fix_table_elements:s.fix_table_elements,fix_list_elements:s.fix_list_elements,fix_content_duplication:s.fix_content_duplication,convert_fonts_to_spans:s.convert_fonts_to_spans,font_size_classes:s.font_size_classes,font_size_style_values:s.font_size_style_values,apply_source_formatting:s.apply_source_formatting,remove_linebreaks:s.remove_linebreaks,dom:t.dom});t.selection=new tinymce.dom.Selection(t.dom,t.getWin(),t.serializer);t.forceBlocks=new tinymce.ForceBlocks(t,{forced_root_block:s.forced_root_block});t.editorCommands=new tinymce.EditorCommands(t);t.serializer.onPreProcess.add(function(se,o){return t.onPreProcess.dispatch(t,o,se);});t.serializer.onPostProcess.add(function(se,o){return t.onPostProcess.dispatch(t,o,se);});t.onPreInit.dispatch(t);if(!s.gecko_spellcheck)t.getBody().spellcheck=0;if(!s.readonly)t._addEvents();t.controlManager.onPostRender.dispatch(t,t.controlManager);t.onPostRender.dispatch(t);if(s.directionality)t.getBody().dir=s.directionality;if(s.nowrap)t.getBody().style.whiteSpace="nowrap";if(s.auto_resize)t.onNodeChange.add(t.resizeToContent,t);if(s.custom_elements){function handleCustom(ed,o){each(explode(s.custom_elements),function(v){var n;if(v.indexOf('~')===0){v=v.substring(1);n='span';}else n='div';o.content=o.content.replace(new RegExp('<('+v+')([^>]*)>','g'),'<'+n+' mce_name="$1"$2>');o.content=o.content.replace(new RegExp('</('+v+')>','g'),'</'+n+'>');});};t.onBeforeSetContent.add(handleCustom);t.onPostProcess.add(function(ed,o){if(o.set)handleCustom(ed,o)});}if(s.handle_node_change_callback){t.onNodeChange.add(function(ed,cm,n){t.execCallback('handle_node_change_callback',t.id,n,-1,-1,true,t.selection.isCollapsed());});}if(s.save_callback){t.onSaveContent.add(function(ed,o){var h=t.execCallback('save_callback',t.id,o.content,t.getBody());if(h)o.content=h;});}if(s.onchange_callback){t.onChange.add(function(ed,l){t.execCallback('onchange_callback',t,l);});}if(s.convert_newlines_to_brs){t.onBeforeSetContent.add(function(ed,o){if(o.initial)o.content=o.content.replace(/\r?\n/g,'<br />');});}if(s.fix_nesting&&isIE){t.onBeforeSetContent.add(function(ed,o){o.content=t._fixNesting(o.content);});}if(s.preformatted){t.onPostProcess.add(function(ed,o){o.content=o.content.replace(/^\s*<pre.*?>/,'');o.content=o.content.replace(/<\/pre>\s*$/,'');if(o.set)o.content='<pre class="mceItemHidden">'+o.content+'</pre>';});}if(s.verify_css_classes){t.serializer.attribValueFilter=function(n,v){var s,cl;if(n=='class'){if(!t.classesRE){cl=t.dom.getClasses();if(cl.length>0){s='';each(cl,function(o){s+=(s?'|':'')+o['class'];});t.classesRE=new RegExp('('+s+')','gi');}}return!t.classesRE||/(\bmceItem\w+\b|\bmceTemp\w+\b)/g.test(v)||t.classesRE.test(v)?v:'';}return v;};}if(s.convert_fonts_to_spans)t._convertFonts();if(s.inline_styles)t._convertInlineElements();if(s.cleanup_callback){t.onBeforeSetContent.add(function(ed,o){o.content=t.execCallback('cleanup_callback','insert_to_editor',o.content,o);});t.onPreProcess.add(function(ed,o){if(o.set)t.execCallback('cleanup_callback','insert_to_editor_dom',o.node,o);if(o.get)t.execCallback('cleanup_callback','get_from_editor_dom',o.node,o);});t.onPostProcess.add(function(ed,o){if(o.set)o.content=t.execCallback('cleanup_callback','insert_to_editor',o.content,o);if(o.get)o.content=t.execCallback('cleanup_callback','get_from_editor',o.content,o);});}if(s.save_callback){t.onGetContent.add(function(ed,o){if(o.save)o.content=t.execCallback('save_callback',t.id,o.content,t.getBody());});}if(s.handle_event_callback){t.onEvent.add(function(ed,e,o){if(t.execCallback('handle_event_callback',e,ed,o)===false)Event.cancel(e);});}t.onSetContent.add(function(){t.addVisual(t.getBody());});if(s.padd_empty_editor){t.onPostProcess.add(function(ed,o){o.content=o.content.replace(/^(<p>( | |\s|\u00a0|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/,'');});}if(isGecko&&!s.readonly){try{d.designMode='Off';d.designMode='On';}catch(ex){}}setTimeout(function(){if(t.removed)return;t.load({initial:true,format:(s.cleanup_on_startup?'html':'raw')});t.startContent=t.getContent({format:'raw'});t.undoManager.add({initial:true});t.initialized=true;t.onInit.dispatch(t);t.execCallback('setupcontent_callback',t.id,t.getBody(),t.getDoc());t.execCallback('init_instance_callback',t);t.focus(true);t.nodeChanged({initial:1});if(s.content_css){tinymce.each(explode(s.content_css),function(u){t.dom.loadCSS(t.documentBaseURI.toAbsolute(u));});}if(s.auto_focus){setTimeout(function(){var ed=EditorManager.get(s.auto_focus);ed.selection.select(ed.getBody(),1);ed.selection.collapse(1);ed.getWin().focus();},100);}},1);e=null;},focus:function(sf){var oed,t=this,ce=t.settings.content_editable;if(!sf){if(!ce&&(!isIE||t.selection.getNode().ownerDocument!=t.getDoc()))t.getWin().focus();}if(EditorManager.activeEditor!=t){if((oed=EditorManager.activeEditor)!=null)oed.onDeactivate.dispatch(oed,t);t.onActivate.dispatch(t,oed);}EditorManager._setActive(t);},execCallback:function(n){var t=this,f=t.settings[n],s;if(!f)return;if(t.callbackLookup&&(s=t.callbackLookup[n])){f=s.func;s=s.scope;}if(is(f,'string')){s=f.replace(/\.\w+$/,'');s=s?tinymce.resolve(s):0;f=tinymce.resolve(f);t.callbackLookup=t.callbackLookup||{};t.callbackLookup[n]={func:f,scope:s};}return f.apply(s||t,Array.prototype.slice.call(arguments,1));},translate:function(s){var c=this.settings.language||'en',i18n=EditorManager.i18n;if(!s)return'';return i18n[c+'.'+s]||s.replace(/{\#([^}]+)\}/g,function(a,b){return i18n[c+'.'+b]||'{#'+b+'}';});},getLang:function(n,dv){return EditorManager.i18n[(this.settings.language||'en')+'.'+n]||(is(dv)?dv:'{#'+n+'}');},getParam:function(n,dv,ty){var tr=tinymce.trim,v=is(this.settings[n])?this.settings[n]:dv,o;if(ty==='hash'){o={};if(is(v,'string')){each(v.indexOf('=')>0?v.split(/[;,](?![^=;,]*(?:[;,]|$))/):v.split(','),function(v){v=v.split('=');if(v.length>1)o[tr(v[0])]=tr(v[1]);else o[tr(v[0])]=tr(v);});}else o=v;return o;}return v;},nodeChanged:function(o){var t=this,s=t.selection,n=s.getNode()||t.getBody();if(t.initialized){t.onNodeChange.dispatch(t,o?o.controlManager||t.controlManager:t.controlManager,isIE&&n.ownerDocument!=t.getDoc()?t.getBody():n,s.isCollapsed(),o);}},addButton:function(n,s){var t=this;t.buttons=t.buttons||{};t.buttons[n]=s;},addCommand:function(n,f,s){this.execCommands[n]={func:f,scope:s||this};},addQueryStateHandler:function(n,f,s){this.queryStateCommands[n]={func:f,scope:s||this};},addQueryValueHandler:function(n,f,s){this.queryValueCommands[n]={func:f,scope:s||this};},addShortcut:function(pa,desc,cmd_func,sc){var t=this,c;if(!t.settings.custom_shortcuts)return false;t.shortcuts=t.shortcuts||{};if(is(cmd_func,'string')){c=cmd_func;cmd_func=function(){t.execCommand(c,false,null);};}if(is(cmd_func,'object')){c=cmd_func;cmd_func=function(){t.execCommand(c[0],c[1],c[2]);};}each(explode(pa),function(pa){var o={func:cmd_func,scope:sc||this,desc:desc,alt:false,ctrl:false,shift:false};each(explode(pa,'+'),function(v){switch(v){case'alt':case'ctrl':case'shift':o[v]=true;break;default:o.charCode=v.charCodeAt(0);o.keyCode=v.toUpperCase().charCodeAt(0);}});t.shortcuts[(o.ctrl?'ctrl':'')+','+(o.alt?'alt':'')+','+(o.shift?'shift':'')+','+o.keyCode]=o;});return true;},execCommand:function(cmd,ui,val,a){var t=this,s=0,o,st;if(!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint|SelectAll)$/.test(cmd)&&(!a||!a.skip_focus))t.focus();o={};t.onBeforeExecCommand.dispatch(t,cmd,ui,val,o);if(o.terminate)return false;if(t.execCallback('execcommand_callback',t.id,t.selection.getNode(),cmd,ui,val)){t.onExecCommand.dispatch(t,cmd,ui,val,a);return true;}if(o=t.execCommands[cmd]){st=o.func.call(o.scope,ui,val);if(st!==true){t.onExecCommand.dispatch(t,cmd,ui,val,a);return st;}}each(t.plugins,function(p){if(p.execCommand&&p.execCommand(cmd,ui,val)){t.onExecCommand.dispatch(t,cmd,ui,val,a);s=1;return false;}});if(s)return true;if(t.theme.execCommand&&t.theme.execCommand(cmd,ui,val)){t.onExecCommand.dispatch(t,cmd,ui,val,a);return true;}if(t.editorCommands.execCommand(cmd,ui,val)){t.onExecCommand.dispatch(t,cmd,ui,val,a);return true;}t.getDoc().execCommand(cmd,ui,val);t.onExecCommand.dispatch(t,cmd,ui,val,a);},queryCommandState:function(c){var t=this,o,s;if(t._isHidden())return;if(o=t.queryStateCommands[c]){s=o.func.call(o.scope);if(s!==true)return s;}o=t.editorCommands.queryCommandState(c);if(o!==-1)return o;try{return this.getDoc().queryCommandState(c);}catch(ex){}},queryCommandValue:function(c){var t=this,o,s;if(t._isHidden())return;if(o=t.queryValueCommands[c]){s=o.func.call(o.scope);if(s!==true)return s;}o=t.editorCommands.queryCommandValue(c);if(is(o))return o;try{return this.getDoc().queryCommandValue(c);}catch(ex){}},show:function(){var t=this;DOM.show(t.getContainer());DOM.hide(t.id);t.load();},hide:function(){var t=this,d=t.getDoc();if(isIE&&d)d.execCommand('SelectAll');t.save();DOM.hide(t.getContainer());DOM.setStyle(t.id,'display',t.orgDisplay);},isHidden:function(){return!DOM.isHidden(this.id);},setProgressState:function(b,ti,o){this.onSetProgressState.dispatch(this,b,ti,o);return b;},resizeToContent:function(){var t=this;DOM.setStyle(t.id+"_ifr",'height',t.getBody().scrollHeight);},load:function(o){var t=this,e=t.getElement(),h;o=o||{};o.load=true;h=t.setContent(is(e.value)?e.value:e.innerHTML,o);o.element=e;if(!o.no_events)t.onLoadContent.dispatch(t,o);o.element=e=null;return h;},save:function(o){var t=this,e=t.getElement(),h,f;if(!t.initialized)return;o=o||{};o.save=true;if(!o.no_events){t.undoManager.typing=0;t.undoManager.add();}o.element=e;h=o.content=t.getContent(o);if(!o.no_events)t.onSaveContent.dispatch(t,o);h=o.content;if(!/TEXTAREA|INPUT/i.test(e.nodeName)){e.innerHTML=h;if(f=DOM.getParent(t.id,'form')){each(f.elements,function(e){if(e.name==t.id){e.value=h;return false;}});}}else e.value=h;o.element=e=null;return h;},setContent:function(h,o){var t=this;o=o||{};o.format=o.format||'html';o.set=true;o.content=h;if(!o.no_events)t.onBeforeSetContent.dispatch(t,o);if(!tinymce.isIE&&(h.length===0||/^\s+$/.test(h))){o.content=t.dom.setHTML(t.getBody(),'<br mce_bogus="1" />');o.format='raw';}o.content=t.dom.setHTML(t.getBody(),tinymce.trim(o.content));if(o.format!='raw'&&t.settings.cleanup){o.getInner=true;o.content=t.dom.setHTML(t.getBody(),t.serializer.serialize(t.getBody(),o));}if(!o.no_events)t.onSetContent.dispatch(t,o);return o.content;},getContent:function(o){var t=this,h;o=o||{};o.format=o.format||'html';o.get=true;if(!o.no_events)t.onBeforeGetContent.dispatch(t,o);if(o.format!='raw'&&t.settings.cleanup){o.getInner=true;h=t.serializer.serialize(t.getBody(),o);}else h=t.getBody().innerHTML;h=h.replace(/^\s*|\s*$/g,'');o.content=h;if(!o.no_events)t.onGetContent.dispatch(t,o);return o.content;},isDirty:function(){var t=this;return tinymce.trim(t.startContent)!=tinymce.trim(t.getContent({format:'raw',no_events:1}))&&!t.isNotDirty;},getContainer:function(){var t=this;if(!t.container)t.container=DOM.get(t.editorContainer||t.id+'_parent');return t.container;},getContentAreaContainer:function(){return this.contentAreaContainer;},getElement:function(){return DOM.get(this.settings.content_element||this.id);},getWin:function(){var t=this,e;if(!t.contentWindow){e=DOM.get(t.id+"_ifr");if(e)t.contentWindow=e.contentWindow;}return t.contentWindow;},getDoc:function(){var t=this,w;if(!t.contentDocument){w=t.getWin();if(w)t.contentDocument=w.document;}return t.contentDocument;},getBody:function(){return this.bodyElement||this.getDoc().body;},convertURL:function(u,n,e){var t=this,s=t.settings;if(s.urlconverter_callback)return t.execCallback('urlconverter_callback',u,e,true,n);if(!s.convert_urls||(e&&e.nodeName=='LINK')||u.indexOf('file:')===0)return u;if(s.relative_urls)return t.documentBaseURI.toRelative(u);u=t.documentBaseURI.toAbsolute(u,s.remove_script_host);return u;},addVisual:function(e){var t=this,s=t.settings;e=e||t.getBody();if(!is(t.hasVisual))t.hasVisual=s.visual;each(t.dom.select('table,a',e),function(e){var v;switch(e.nodeName){case'TABLE':v=t.dom.getAttrib(e,'border');if(!v||v=='0'){if(t.hasVisual)t.dom.addClass(e,s.visual_table_class);else t.dom.removeClass(e,s.visual_table_class);}return;case'A':v=t.dom.getAttrib(e,'name');if(v){if(t.hasVisual)t.dom.addClass(e,'mceItemAnchor');else t.dom.removeClass(e,'mceItemAnchor');}return;}});t.onVisualAid.dispatch(t,e,t.hasVisual);},remove:function(){var t=this,e=t.getContainer();t.removed=1;t.hide();t.execCallback('remove_instance_callback',t);t.onRemove.dispatch(t);t.onExecCommand.listeners=[];EditorManager.remove(t);DOM.remove(e);},destroy:function(s){var t=this;if(t.destroyed)return;if(!s){tinymce.removeUnload(t.destroy);tinyMCE.onBeforeUnload.remove(t._beforeUnload);if(t.theme.destroy)t.theme.destroy();t.controlManager.destroy();t.selection.destroy();t.dom.destroy();if(!t.settings.content_editable){Event.clear(t.getWin());Event.clear(t.getDoc());}Event.clear(t.getBody());Event.clear(t.formElement);}if(t.formElement){t.formElement.submit=t.formElement._mceOldSubmit;t.formElement._mceOldSubmit=null;}t.contentAreaContainer=t.formElement=t.container=t.settings.content_element=t.bodyElement=t.contentDocument=t.contentWindow=null;if(t.selection)t.selection=t.selection.win=t.selection.dom=t.selection.dom.doc=null;t.destroyed=1;},_addEvents:function(){var t=this,i,s=t.settings,lo={mouseup:'onMouseUp',mousedown:'onMouseDown',click:'onClick',keyup:'onKeyUp',keydown:'onKeyDown',keypress:'onKeyPress',submit:'onSubmit',reset:'onReset',contextmenu:'onContextMenu',dblclick:'onDblClick',paste:'onPaste'};function eventHandler(e,o){var ty=e.type;if(t.removed)return;if(t.onEvent.dispatch(t,e,o)!==false){t[lo[e.fakeType||e.type]].dispatch(t,e,o);}};each(lo,function(v,k){switch(k){case'contextmenu':if(tinymce.isOpera){Event.add(t.getBody(),'mousedown',function(e){if(e.ctrlKey){e.fakeType='contextmenu';eventHandler(e);}});}else Event.add(t.getBody(),k,eventHandler);break;case'paste':Event.add(t.getBody(),k,function(e){var tx,h,el,r;if(e.clipboardData)tx=e.clipboardData.getData('text/plain');else if(tinymce.isIE)tx=t.getWin().clipboardData.getData('Text');eventHandler(e,{text:tx,html:h});});break;case'submit':case'reset':Event.add(t.getElement().form||DOM.getParent(t.id,'form'),k,eventHandler);break;default:Event.add(s.content_editable?t.getBody():t.getDoc(),k,eventHandler);}});Event.add(s.content_editable?t.getBody():(isGecko?t.getDoc():t.getWin()),'focus',function(e){t.focus(true);});if(tinymce.isGecko){Event.add(t.getDoc(),'DOMNodeInserted',function(e){var v;e=e.target;if(e.nodeType===1&&e.nodeName==='IMG'&&(v=e.getAttribute('mce_src')))e.src=t.documentBaseURI.toAbsolute(v);});}if(isGecko){function setOpts(){var t=this,d=t.getDoc(),s=t.settings;if(isGecko&&!s.readonly){if(t._isHidden()){try{if(!s.content_editable)d.designMode='On';}catch(ex){}}try{d.execCommand("styleWithCSS",0,false);}catch(ex){if(!t._isHidden())try{d.execCommand("useCSS",0,true);}catch(ex){}}if(!s.table_inline_editing)try{d.execCommand('enableInlineTableEditing',false,false);}catch(ex){}if(!s.object_resizing)try{d.execCommand('enableObjectResizing',false,false);}catch(ex){}}};t.onBeforeExecCommand.add(setOpts);t.onMouseDown.add(setOpts);}t.onMouseUp.add(t.nodeChanged);t.onClick.add(t.nodeChanged);t.onKeyUp.add(function(ed,e){var c=e.keyCode;if((c>=33&&c<=36)||(c>=37&&c<=40)||c==13||c==45||c==46||c==8||(tinymce.isMac&&c>=91&&c<=93)||e.ctrlKey)t.nodeChanged();});t.onReset.add(function(){t.setContent(t.startContent,{format:'raw'});});if(t.getParam('tab_focus')){function tabCancel(ed,e){if(e.keyCode===9)return Event.cancel(e);};function tabHandler(ed,e){var x,i,f,el,v;function find(d){f=DOM.getParent(ed.id,'form');el=f.elements;if(f){each(el,function(e,i){if(e.id==ed.id){x=i;return false;}});if(d>0){for(i=x+1;i<el.length;i++){if(el[i].type!='hidden')return el[i];}}else{for(i=x-1;i>=0;i--){if(el[i].type!='hidden')return el[i];}}}return null;};if(e.keyCode===9){v=explode(ed.getParam('tab_focus'));if(v.length==1){v[1]=v[0];v[0]=':prev';}if(e.shiftKey){if(v[0]==':prev')el=find(-1);else el=DOM.get(v[0]);}else{if(v[1]==':next')el=find(1);else el=DOM.get(v[1]);}if(el){if(ed=EditorManager.get(el.id||el.name))ed.focus();else window.setTimeout(function(){window.focus();el.focus();},10);return Event.cancel(e);}}};t.onKeyUp.add(tabCancel);if(isGecko){t.onKeyPress.add(tabHandler);t.onKeyDown.add(tabCancel);}else t.onKeyDown.add(tabHandler);}if(s.custom_shortcuts){if(s.custom_undo_redo_keyboard_shortcuts){t.addShortcut('ctrl+z',t.getLang('undo_desc'),'Undo');t.addShortcut('ctrl+y',t.getLang('redo_desc'),'Redo');}if(isGecko){t.addShortcut('ctrl+b',t.getLang('bold_desc'),'Bold');t.addShortcut('ctrl+i',t.getLang('italic_desc'),'Italic');t.addShortcut('ctrl+u',t.getLang('underline_desc'),'Underline');}for(i=1;i<=6;i++)t.addShortcut('ctrl+'+i,'',['FormatBlock',false,'<h'+i+'>']);t.addShortcut('ctrl+7','',['FormatBlock',false,'<p>']);t.addShortcut('ctrl+8','',['FormatBlock',false,'<div>']);t.addShortcut('ctrl+9','',['FormatBlock',false,'<address>']);function find(e){var v=null;if(!e.altKey&&!e.ctrlKey&&!e.metaKey)return v;each(t.shortcuts,function(o){if(o.ctrl!=e.ctrlKey&&(!tinymce.isMac||o.ctrl==e.metaKey))return;if(o.alt!=e.altKey)return;if(o.shift!=e.shiftKey)return;if(e.keyCode==o.keyCode||(e.charCode&&e.charCode==o.charCode)){v=o;return false;}});return v;};t.onKeyUp.add(function(ed,e){var o=find(e);if(o)return Event.cancel(e);});t.onKeyPress.add(function(ed,e){var o=find(e);if(o)return Event.cancel(e);});t.onKeyDown.add(function(ed,e){var o=find(e);if(o){o.func.call(o.scope);return Event.cancel(e);}});}if(tinymce.isIE){Event.add(t.getDoc(),'controlselect',function(e){var re=t.resizeInfo,cb;e=e.target;if(e.nodeName!=='IMG')return;if(re)Event.remove(re.node,re.ev,re.cb);if(!t.dom.hasClass(e,'mceItemNoResize')){ev='resizeend';cb=Event.add(e,ev,function(e){var v;e=e.target;if(v=t.dom.getStyle(e,'width')){t.dom.setAttrib(e,'width',v.replace(/[^0-9%]+/g,''));t.dom.setStyle(e,'width','');}if(v=t.dom.getStyle(e,'height')){t.dom.setAttrib(e,'height',v.replace(/[^0-9%]+/g,''));t.dom.setStyle(e,'height','');}});}else{ev='resizestart';cb=Event.add(e,'resizestart',Event.cancel,Event);}re=t.resizeInfo={node:e,ev:ev,cb:cb};});t.onKeyDown.add(function(ed,e){switch(e.keyCode){case 8:if(t.selection.getRng().item){t.selection.getRng().item(0).removeNode();return Event.cancel(e);}}});}if(tinymce.isOpera){t.onClick.add(function(ed,e){Event.prevent(e);});}if(s.custom_undo_redo){function addUndo(){t.undoManager.typing=0;t.undoManager.add();};if(tinymce.isIE){Event.add(t.getWin(),'blur',function(e){var n;if(t.selection){n=t.selection.getNode();if(!t.removed&&n.ownerDocument&&n.ownerDocument!=t.getDoc())addUndo();}});}else{Event.add(t.getDoc(),'blur',function(){if(t.selection&&!t.removed)addUndo();});}t.onMouseDown.add(addUndo);t.onKeyUp.add(function(ed,e){if((e.keyCode>=33&&e.keyCode<=36)||(e.keyCode>=37&&e.keyCode<=40)||e.keyCode==13||e.keyCode==45||e.ctrlKey){t.undoManager.typing=0;t.undoManager.add();}});t.onKeyDown.add(function(ed,e){if((e.keyCode>=33&&e.keyCode<=36)||(e.keyCode>=37&&e.keyCode<=40)||e.keyCode==13||e.keyCode==45){if(t.undoManager.typing){t.undoManager.add();t.undoManager.typing=0;}return;}if(!t.undoManager.typing){t.undoManager.add();t.undoManager.typing=1;}});}},_convertInlineElements:function(){var t=this,s=t.settings,dom=t.dom,v,e,na,st,sp;function convert(ed,o){if(!s.inline_styles)return;if(o.get){each(t.dom.select('table,u,strike',o.node),function(n){switch(n.nodeName){case'TABLE':if(v=dom.getAttrib(n,'height')){dom.setStyle(n,'height',v);dom.setAttrib(n,'height','');}break;case'U':case'STRIKE':n.style.textDecoration=n.nodeName=='U'?'underline':'line-through';dom.setAttrib(n,'mce_style','');dom.setAttrib(n,'mce_name','span');break;}});}else if(o.set){each(t.dom.select('table,span',o.node).reverse(),function(n){if(n.nodeName=='TABLE'){if(v=dom.getStyle(n,'height'))dom.setAttrib(n,'height',v.replace(/[^0-9%]+/g,''));}else{if(n.style.textDecoration=='underline')na='u';else if(n.style.textDecoration=='line-through')na='strike';else na='';if(na){n.style.textDecoration='';dom.setAttrib(n,'mce_style','');e=dom.create(na,{style:dom.getAttrib(n,'style')});dom.replace(e,n,1);}}});}};t.onPreProcess.add(convert);if(!s.cleanup_on_startup){t.onSetContent.add(function(ed,o){if(o.initial)convert(t,{node:t.getBody(),set:1});});}},_convertFonts:function(){var t=this,s=t.settings,dom=t.dom,fz,fzn,sl,cl;if(!s.inline_styles)return;fz=[8,10,12,14,18,24,36];fzn=['xx-small','x-small','small','medium','large','x-large','xx-large'];if(sl=s.font_size_style_values)sl=explode(sl);if(cl=s.font_size_classes)cl=explode(cl);function convertToFonts(no){var n,f,nl,x,i,v,st;if(tinymce.isWebKit||!s.inline_styles)return;nl=t.dom.select('span',no);for(x=nl.length-1;x>=0;x--){n=nl[x];f=dom.create('font',{color:dom.toHex(dom.getStyle(n,'color')),face:dom.getStyle(n,'fontFamily'),style:dom.getAttrib(n,'style'),'class':dom.getAttrib(n,'class')});st=f.style;if(st.color||st.fontFamily){st.color=st.fontFamily='';dom.setAttrib(f,'mce_style','');}if(sl){i=inArray(sl,dom.getStyle(n,'fontSize'));if(i!=-1){dom.setAttrib(f,'size',''+(i+1||1));}}else if(cl){i=inArray(cl,dom.getAttrib(n,'class'));v=dom.getStyle(n,'fontSize');if(i==-1&&v.indexOf('pt')>0)i=inArray(fz,parseInt(v));if(i==-1)i=inArray(fzn,v);if(i!=-1){dom.setAttrib(f,'size',''+(i+1||1));f.style.fontSize='';}}if(f.color||f.face||f.size){f.style.fontFamily='';dom.setAttrib(f,'mce_style','');dom.replace(f,n,1);}f=n=null;}};t.onSetContent.add(function(ed,o){convertToFonts(ed.getBody());});t.onPreProcess.add(function(ed,o){var n,sp,nl,x;if(!s.inline_styles)return;if(o.get){nl=t.dom.select('font',o.node);for(x=nl.length-1;x>=0;x--){n=nl[x];sp=dom.create('span',{style:dom.getAttrib(n,'style'),'class':dom.getAttrib(n,'class')});dom.setStyles(sp,{fontFamily:dom.getAttrib(n,'face'),color:dom.getAttrib(n,'color'),backgroundColor:n.style.backgroundColor});if(n.size){if(sl)dom.setStyle(sp,'fontSize',sl[parseInt(n.size)-1]);else dom.setAttrib(sp,'class',cl[parseInt(n.size)-1]);}dom.setAttrib(sp,'mce_style','');dom.replace(sp,n,1);}}});},_isHidden:function(){var s;if(!isGecko)return 0;s=this.selection.getSel();return(!s||!s.rangeCount||s.rangeCount==0);},_fixNesting:function(s){var d=[],i;s=s.replace(/<(\/)?([^\s>]+)[^>]*?>/g,function(a,b,c){var e;if(b==='/'){if(!d.length)return'';if(c!==d[d.length-1].tag){for(i=d.length-1;i>=0;i--){if(d[i].tag===c){d[i].close=1;break;}}return'';}else{d.pop();if(d.length&&d[d.length-1].close){a=a+'</'+d[d.length-1].tag+'>';d.pop();}}}else{if(/^(br|hr|input|meta|img|link|param)$/i.test(c))return a;if(/\/>$/.test(a))return a;d.push({tag:c});}return a;});for(i=d.length-1;i>=0;i--)s+='</'+d[i].tag+'>';return s;}});})();(function(){var each=tinymce.each,isIE=tinymce.isIE,isGecko=tinymce.isGecko,isOpera=tinymce.isOpera,isWebKit=tinymce.isWebKit;tinymce.create('tinymce.EditorCommands',{EditorCommands:function(ed){this.editor=ed;},execCommand:function(cmd,ui,val){var t=this,ed=t.editor,f;switch(cmd){case'Cut':case'Copy':case'Paste':try{ed.getDoc().execCommand(cmd,ui,val);}catch(ex){if(isGecko){ed.windowManager.confirm(ed.getLang('clipboard_msg'),function(s){if(s)window.open('http://www.mozilla.org/editor/midasdemo/securityprefs.html','mceExternal');});}else ed.windowManager.alert(ed.getLang('clipboard_no_support'));}return true;case'mceResetDesignMode':case'mceBeginUndoLevel':return true;case'unlink':t.UnLink();return true;case'JustifyLeft':case'JustifyCenter':case'JustifyRight':case'JustifyFull':t.mceJustify(cmd,cmd.substring(7).toLowerCase());return true;case'mceEndUndoLevel':case'mceAddUndoLevel':ed.undoManager.add();return true;default:f=this[cmd];if(f){f.call(this,ui,val);return true;}}return false;},Indent:function(){var ed=this.editor,d=ed.dom,s=ed.selection,e,iv,iu;iv=ed.settings.indentation;iu=/[a-z%]+$/i.exec(iv);iv=parseInt(iv);if(ed.settings.inline_styles&&(!this.queryStateInsertUnorderedList()&&!this.queryStateInsertOrderedList())){each(this._getSelectedBlocks(),function(e){d.setStyle(e,'paddingLeft',(parseInt(e.style.paddingLeft||0)+iv)+iu);});return;}ed.getDoc().execCommand('Indent',false,null);if(isIE){d.getParent(s.getNode(),function(n){if(n.nodeName=='BLOCKQUOTE'){n.dir=n.style.cssText='';}});}},Outdent:function(){var ed=this.editor,d=ed.dom,s=ed.selection,e,v,iv,iu;iv=ed.settings.indentation;iu=/[a-z%]+$/i.exec(iv);iv=parseInt(iv);if(ed.settings.inline_styles&&(!this.queryStateInsertUnorderedList()&&!this.queryStateInsertOrderedList())){each(this._getSelectedBlocks(),function(e){v=Math.max(0,parseInt(e.style.paddingLeft||0)-iv);d.setStyle(e,'paddingLeft',v?v+iu:'');});return;}ed.getDoc().execCommand('Outdent',false,null);},mceSetAttribute:function(u,v){var ed=this.editor,d=ed.dom,e;if(e=d.getParent(ed.selection.getNode(),d.isBlock))d.setAttrib(e,v.name,v.value);},mceSetContent:function(u,v){this.editor.setContent(v);},mceToggleVisualAid:function(){var ed=this.editor;ed.hasVisual=!ed.hasVisual;ed.addVisual();},mceReplaceContent:function(u,v){var s=this.editor.selection;s.setContent(v.replace(/\{\$selection\}/g,s.getContent({format:'text'})));},mceInsertLink:function(u,v){var ed=this.editor,s=ed.selection,e=ed.dom.getParent(s.getNode(),'A');if(tinymce.is(v,'string'))v={href:v};function set(e){each(v,function(v,k){ed.dom.setAttrib(e,k,v);});};if(!e){ed.execCommand('CreateLink',false,'javascript:mctmp(0);');each(ed.dom.select('a'),function(e){if(e.href=='javascript:mctmp(0);')set(e);});}else{if(v.href)set(e);else ed.dom.remove(e,1);}},UnLink:function(){var ed=this.editor,s=ed.selection;if(s.isCollapsed())s.select(s.getNode());ed.getDoc().execCommand('unlink',false,null);s.collapse(0);},FontName:function(u,v){var t=this,ed=t.editor,s=ed.selection,e;if(!v){if(s.isCollapsed())s.select(s.getNode());t.RemoveFormat();}else ed.getDoc().execCommand('FontName',false,v);},FontSize:function(u,v){var ed=this.editor,s=ed.settings,fz=tinymce.explode(s.font_size_style_values),fzc=tinymce.explode(s.font_size_classes),h,bm;each(ed.dom.select('font'),function(e){e.style.fontSize='';});ed.getDoc().execCommand('FontSize',false,v);if(s.inline_styles){each(ed.dom.select('font'),function(e){if(e.parentNode.nodeName=='FONT'&&e.size==e.parentNode.size){if(!bm)bm=ed.selection.getBookmark();ed.dom.remove(e,1);return;}if(v=e.size){if(fzc&&fzc.length>0)ed.dom.setAttrib(e,'class',fzc[parseInt(v)-1]);else ed.dom.setStyle(e,'fontSize',fz[parseInt(v)-1]);}});}ed.selection.moveToBookmark(bm);},queryCommandValue:function(c){var f=this['queryValue'+c];if(f)return f.call(this,c);return false;},queryCommandState:function(cmd){var f;switch(cmd){case'JustifyLeft':case'JustifyCenter':case'JustifyRight':case'JustifyFull':return this.queryStateJustify(cmd,cmd.substring(7).toLowerCase());default:if(f=this['queryState'+cmd])return f.call(this,cmd);}return-1;},_queryState:function(c){try{return this.editor.getDoc().queryCommandState(c);}catch(ex){}},_queryVal:function(c){try{return this.editor.getDoc().queryCommandValue(c);}catch(ex){}},queryValueFontSize:function(){var ed=this.editor,v=0,p;if(isOpera||isWebKit){if(p=ed.dom.getParent(ed.selection.getNode(),'FONT'))v=p.size;return v;}return this._queryVal('FontSize');},queryValueFontName:function(){var ed=this.editor,v=0,p;if(p=ed.dom.getParent(ed.selection.getNode(),'FONT'))v=p.face;if(!v)v=this._queryVal('FontName');return v;},mceJustify:function(c,v){var ed=this.editor,se=ed.selection,n=se.getNode(),nn=n.nodeName,bl,nb,dom=ed.dom,rm;if(ed.settings.inline_styles&&this.queryStateJustify(c,v))rm=1;bl=dom.getParent(n,ed.dom.isBlock);if(nn=='IMG'){if(v=='full')return;if(rm){if(v=='center')dom.setStyle(bl||n.parentNode,'textAlign','');dom.setStyle(n,'float','');this.mceRepaint();return;}if(v=='center'){if(bl&&/^(TD|TH)$/.test(bl.nodeName))bl=0;if(!bl||bl.childNodes.length>1){nb=dom.create('p');nb.appendChild(n.cloneNode(false));if(bl)dom.insertAfter(nb,bl);else dom.insertAfter(nb,n);dom.remove(n);n=nb.firstChild;bl=nb;}dom.setStyle(bl,'textAlign',v);dom.setStyle(n,'float','');}else{dom.setStyle(n,'float',v);dom.setStyle(bl||n.parentNode,'textAlign','');}this.mceRepaint();return;}if(ed.settings.inline_styles&&ed.settings.forced_root_block){if(rm)v='';each(this._getSelectedBlocks(dom.getParent(se.getStart(),dom.isBlock),dom.getParent(se.getEnd(),dom.isBlock)),function(e){dom.setAttrib(e,'align','');dom.setStyle(e,'textAlign',v=='full'?'justify':v);});return;}else if(!rm)ed.getDoc().execCommand(c,false,null);if(ed.settings.inline_styles){if(rm){dom.getParent(ed.selection.getNode(),function(n){if(n.style&&n.style.textAlign)dom.setStyle(n,'textAlign','');});return;}each(dom.select('*'),function(n){var v=n.align;if(v){if(v=='full')v='justify';dom.setStyle(n,'textAlign',v);dom.setAttrib(n,'align','');}});}},mceSetCSSClass:function(u,v){this.mceSetStyleInfo(0,{command:'setattrib',name:'class',value:v});},getSelectedElement:function(){var t=this,ed=t.editor,dom=ed.dom,se=ed.selection,r=se.getRng(),r1,r2,sc,ec,so,eo,e,sp,ep,re;if(se.isCollapsed()||r.item)return se.getNode();re=ed.settings.merge_styles_invalid_parents;if(tinymce.is(re,'string'))re=new RegExp(re,'i');if(isIE){r1=r.duplicate();r1.collapse(true);sc=r1.parentElement();r2=r.duplicate();r2.collapse(false);ec=r2.parentElement();if(sc!=ec){r1.move('character',1);sc=r1.parentElement();}if(sc==ec){r1=r.duplicate();r1.moveToElementText(sc);if(r1.compareEndPoints('StartToStart',r)==0&&r1.compareEndPoints('EndToEnd',r)==0)return re&&re.test(sc.nodeName)?null:sc;}}else{function getParent(n){return dom.getParent(n,function(n){return n.nodeType==1;});};sc=r.startContainer;ec=r.endContainer;so=r.startOffset;eo=r.endOffset;if(!r.collapsed){if(sc==ec){if(so-eo<2){if(sc.hasChildNodes()){sp=sc.childNodes[so];return re&&re.test(sp.nodeName)?null:sp;}}}}if(sc.nodeType!=3||ec.nodeType!=3)return null;if(so==0){sp=getParent(sc);if(sp&&sp.firstChild!=sc)sp=null;}if(so==sc.nodeValue.length){e=sc.nextSibling;if(e&&e.nodeType==1)sp=sc.nextSibling;}if(eo==0){e=ec.previousSibling;if(e&&e.nodeType==1)ep=e;}if(eo==ec.nodeValue.length){ep=getParent(ec);if(ep&&ep.lastChild!=ec)ep=null;}if(sp==ep)return re&&sp&&re.test(sp.nodeName)?null:sp;}return null;},InsertHorizontalRule:function(){if(isGecko||isIE)this.editor.selection.setContent('<hr />');else this.editor.getDoc().execCommand('InsertHorizontalRule',false,'');},RemoveFormat:function(){var t=this,ed=t.editor,s=ed.selection,b;if(isWebKit)s.setContent(s.getContent({format:'raw'}).replace(/(<(span|b|i|strong|em|strike) [^>]+>|<(span|b|i|strong|em|strike)>|<\/(span|b|i|strong|em|strike)>|)/g,''),{format:'raw'});else ed.getDoc().execCommand('RemoveFormat',false,null);t.mceSetStyleInfo(0,{command:'removeformat'});ed.addVisual();},mceSetStyleInfo:function(u,v){var t=this,ed=t.editor,d=ed.getDoc(),dom=ed.dom,e,b,s=ed.selection,nn=v.wrapper||'span',b=s.getBookmark(),re;function set(n,e){if(n.nodeType==1){switch(v.command){case'setattrib':return dom.setAttrib(n,v.name,v.value);case'setstyle':return dom.setStyle(n,v.name,v.value);case'removeformat':return dom.setAttrib(n,'class','');}}};re=ed.settings.merge_styles_invalid_parents;if(tinymce.is(re,'string'))re=new RegExp(re,'i');if((e=t.getSelectedElement())&&!ed.settings.force_span_wrappers)set(e,1);else{d.execCommand('FontName',false,'__');each(isWebKit?dom.select('span'):dom.select('font'),function(n){var sp,e;if(dom.getAttrib(n,'face')=='__'||n.style.fontFamily==='__'){sp=dom.create(nn,{mce_new:'1'});set(sp);each(n.childNodes,function(n){sp.appendChild(n.cloneNode(true));});dom.replace(sp,n);}});}each(dom.select(nn).reverse(),function(n){var p=n.parentNode;if(!dom.getAttrib(n,'mce_new')){p=dom.getParent(n,function(n){return n.nodeType==1&&dom.getAttrib(n,'mce_new');});if(p)dom.remove(n,1);}});each(dom.select(nn).reverse(),function(n){var p=n.parentNode;if(!p||!dom.getAttrib(n,'mce_new'))return;if(ed.settings.force_span_wrappers&&p.nodeName!='SPAN')return;if(p.nodeName==nn.toUpperCase()&&p.childNodes.length==1)return dom.remove(p,1);if(n.nodeType==1&&(!re||!re.test(p.nodeName))&&p.childNodes.length==1){set(p);dom.setAttrib(n,'class','');}});each(dom.select(nn).reverse(),function(n){if(dom.getAttrib(n,'mce_new')||(dom.getAttribs(n).length<=1&&n.className==='')){if(!dom.getAttrib(n,'class')&&!dom.getAttrib(n,'style'))return dom.remove(n,1);dom.setAttrib(n,'mce_new','');}});s.moveToBookmark(b);},queryStateJustify:function(c,v){var ed=this.editor,n=ed.selection.getNode(),dom=ed.dom;if(n&&n.nodeName=='IMG'){if(dom.getStyle(n,'float')==v)return 1;return n.parentNode.style.textAlign==v;}n=dom.getParent(ed.selection.getStart(),function(n){return n.nodeType==1&&n.style.textAlign;});if(v=='full')v='justify';if(ed.settings.inline_styles)return(n&&n.style.textAlign==v);return this._queryState(c);},HiliteColor:function(ui,val){var t=this,ed=t.editor,d=ed.getDoc();function set(s){if(!isGecko)return;try{d.execCommand("styleWithCSS",0,s);}catch(ex){d.execCommand("useCSS",0,!s);}};if(isGecko||isOpera){set(true);d.execCommand('hilitecolor',false,val);set(false);}else d.execCommand('BackColor',false,val);},Undo:function(){var ed=this.editor;if(ed.settings.custom_undo_redo){ed.undoManager.undo();ed.nodeChanged();}else ed.getDoc().execCommand('Undo',false,null);},Redo:function(){var ed=this.editor;if(ed.settings.custom_undo_redo){ed.undoManager.redo();ed.nodeChanged();}else ed.getDoc().execCommand('Redo',false,null);},FormatBlock:function(ui,val){var t=this,ed=t.editor,s=ed.selection,dom=ed.dom,bl,nb,b;function isBlock(n){return/^(P|DIV|H[1-6]|ADDRESS|BLOCKQUOTE|PRE)$/.test(n.nodeName);};bl=dom.getParent(s.getNode(),function(n){return isBlock(n);});if(bl){if((isIE&&isBlock(bl.parentNode))||bl.nodeName=='DIV'){nb=ed.dom.create(val);each(dom.getAttribs(bl),function(v){dom.setAttrib(nb,v.nodeName,dom.getAttrib(bl,v.nodeName));});b=s.getBookmark();dom.replace(nb,bl,1);s.moveToBookmark(b);ed.nodeChanged();return;}}val=ed.settings.forced_root_block?(val||'<p>'):val;if(val.indexOf('<')==-1)val='<'+val+'>';if(tinymce.isGecko)val=val.replace(/<(div|blockquote|code|dt|dd|dl|samp)>/gi,'$1');ed.getDoc().execCommand('FormatBlock',false,val);},mceCleanup:function(){var ed=this.editor,s=ed.selection,b=s.getBookmark();ed.setContent(ed.getContent());s.moveToBookmark(b);},mceRemoveNode:function(ui,val){var ed=this.editor,s=ed.selection,b,n=val||s.getNode();if(n==ed.getBody())return;b=s.getBookmark();ed.dom.remove(n,1);s.moveToBookmark(b);ed.nodeChanged();},mceSelectNodeDepth:function(ui,val){var ed=this.editor,s=ed.selection,c=0;ed.dom.getParent(s.getNode(),function(n){if(n.nodeType==1&&c++==val){s.select(n);ed.nodeChanged();return false;}},ed.getBody());},mceSelectNode:function(u,v){this.editor.selection.select(v);},mceInsertContent:function(ui,val){this.editor.selection.setContent(val);},mceInsertRawHTML:function(ui,val){var ed=this.editor;ed.selection.setContent('tiny_mce_marker');ed.setContent(ed.getContent().replace(/tiny_mce_marker/g,val));},mceRepaint:function(){var s,b,e=this.editor;if(tinymce.isGecko){try{s=e.selection;b=s.getBookmark(true);if(s.getSel())s.getSel().selectAllChildren(e.getBody());s.collapse(true);s.moveToBookmark(b);}catch(ex){}}},queryStateUnderline:function(){var ed=this.editor,n=ed.selection.getNode();if(n&&n.nodeName=='A')return false;return this._queryState('Underline');},queryStateOutdent:function(){var ed=this.editor,n;if(ed.settings.inline_styles){if((n=ed.dom.getParent(ed.selection.getStart(),ed.dom.isBlock))&&parseInt(n.style.paddingLeft)>0)return true;if((n=ed.dom.getParent(ed.selection.getEnd(),ed.dom.isBlock))&&parseInt(n.style.paddingLeft)>0)return true;}else return!!ed.dom.getParent(ed.selection.getNode(),'BLOCKQUOTE');return this.queryStateInsertUnorderedList()||this.queryStateInsertOrderedList();},queryStateInsertUnorderedList:function(){return this.editor.dom.getParent(this.editor.selection.getNode(),'UL');},queryStateInsertOrderedList:function(){return this.editor.dom.getParent(this.editor.selection.getNode(),'OL');},queryStatemceBlockQuote:function(){return!!this.editor.dom.getParent(this.editor.selection.getStart(),function(n){return n.nodeName==='BLOCKQUOTE';});},mceBlockQuote:function(){var t=this,ed=t.editor,s=ed.selection,dom=ed.dom,sb,eb,n,bm,bq,r,bq2,i,nl;function getBQ(e){return dom.getParent(e,function(n){return n.nodeName==='BLOCKQUOTE';});};sb=dom.getParent(s.getStart(),dom.isBlock);eb=dom.getParent(s.getEnd(),dom.isBlock);if(bq=getBQ(sb)){if(sb!=eb||sb.childNodes.length>1||(sb.childNodes.length==1&&sb.firstChild.nodeName!='BR'))bm=s.getBookmark();if(getBQ(eb)){bq2=bq.cloneNode(false);while(n=eb.nextSibling)bq2.appendChild(n.parentNode.removeChild(n));}if(bq2)dom.insertAfter(bq2,bq);nl=t._getSelectedBlocks(sb,eb);for(i=nl.length-1;i>=0;i--){dom.insertAfter(nl[i],bq);}if(/^\s*$/.test(bq.innerHTML))dom.remove(bq,1);if(bq2&&/^\s*$/.test(bq2.innerHTML))dom.remove(bq2,1);if(!bm){if(!isIE){r=ed.getDoc().createRange();r.setStart(sb,0);r.setEnd(sb,0);s.setRng(r);}else{s.select(sb);s.collapse(0);if(dom.getParent(s.getStart(),dom.isBlock)!=sb){r=s.getRng();r.move('character',-1);r.select();}}}else t.editor.selection.moveToBookmark(bm);return;}if(isIE&&!sb&&!eb){t.editor.getDoc().execCommand('Indent');n=getBQ(s.getNode());n.style.margin=n.dir='';return;}if(!sb||!eb)return;if(sb!=eb||sb.childNodes.length>1||(sb.childNodes.length==1&&sb.firstChild.nodeName!='BR'))bm=s.getBookmark();each(t._getSelectedBlocks(getBQ(s.getStart()),getBQ(s.getEnd())),function(e){if(e.nodeName=='BLOCKQUOTE'&&!bq){bq=e;return;}if(!bq){bq=dom.create('blockquote');e.parentNode.insertBefore(bq,e);}if(e.nodeName=='BLOCKQUOTE'&&bq){n=e.firstChild;while(n){bq.appendChild(n.cloneNode(true));n=n.nextSibling;}dom.remove(e);return;}bq.appendChild(dom.remove(e));});if(!bm){if(!isIE){r=ed.getDoc().createRange();r.setStart(sb,0);r.setEnd(sb,0);s.setRng(r);}else{s.select(sb);s.collapse(1);}}else s.moveToBookmark(bm);},_getSelectedBlocks:function(st,en){var ed=this.editor,dom=ed.dom,s=ed.selection,sb,eb,n,bl=[];sb=dom.getParent(st||s.getStart(),dom.isBlock);eb=dom.getParent(en||s.getEnd(),dom.isBlock);if(sb)bl.push(sb);if(sb&&eb&&sb!=eb){n=sb;while((n=n.nextSibling)&&n!=eb){if(dom.isBlock(n))bl.push(n);}}if(eb&&sb!=eb)bl.push(eb);return bl;}});})();tinymce.create('tinymce.UndoManager',{index:0,data:null,typing:0,UndoManager:function(ed){var t=this,Dispatcher=tinymce.util.Dispatcher;t.editor=ed;t.data=[];t.onAdd=new Dispatcher(this);t.onUndo=new Dispatcher(this);t.onRedo=new Dispatcher(this);},add:function(l){var t=this,i,ed=t.editor,b,s=ed.settings,la;l=l||{};l.content=l.content||ed.getContent({format:'raw',no_events:1});l.content=l.content.replace(/^\s*|\s*$/g,'');la=t.data[t.index>0&&(t.index==0||t.index==t.data.length)?t.index-1:t.index];if(!l.initial&&la&&l.content==la.content)return null;if(s.custom_undo_redo_levels){if(t.data.length>s.custom_undo_redo_levels){for(i=0;i<t.data.length-1;i++)t.data[i]=t.data[i+1];t.data.length--;t.index=t.data.length;}}if(s.custom_undo_redo_restore_selection&&!l.initial)l.bookmark=b=l.bookmark||ed.selection.getBookmark();if(t.index<t.data.length)t.index++;if(t.data.length===0&&!l.initial)return null;t.data.length=t.index+1;t.data[t.index++]=l;if(l.initial)t.index=0;if(t.data.length==2&&t.data[0].initial)t.data[0].bookmark=b;t.onAdd.dispatch(t,l);ed.isNotDirty=0;return l;},undo:function(){var t=this,ed=t.editor,l=l,i;if(t.typing){t.add();t.typing=0;}if(t.index>0){if(t.index==t.data.length&&t.index>1){i=t.index;t.typing=0;if(!t.add())t.index=i;--t.index;}l=t.data[--t.index];ed.setContent(l.content,{format:'raw'});ed.selection.moveToBookmark(l.bookmark);t.onUndo.dispatch(t,l);}return l;},redo:function(){var t=this,ed=t.editor,l=null;if(t.index<t.data.length-1){l=t.data[++t.index];ed.setContent(l.content,{format:'raw'});ed.selection.moveToBookmark(l.bookmark);t.onRedo.dispatch(t,l);}return l;},clear:function(){var t=this;t.data=[];t.index=0;t.typing=0;t.add({initial:true});},hasUndo:function(){return this.index!=0||this.typing;},hasRedo:function(){return this.index<this.data.length-1;}});(function(){var Event,isIE,isGecko,isOpera,each,extend;Event=tinymce.dom.Event;isIE=tinymce.isIE;isGecko=tinymce.isGecko;isOpera=tinymce.isOpera;each=tinymce.each;extend=tinymce.extend;tinymce.create('tinymce.ForceBlocks',{ForceBlocks:function(ed){var t=this,s=ed.settings,elm;t.editor=ed;t.dom=ed.dom;elm=(s.forced_root_block||'p').toLowerCase();s.element=elm.toUpperCase();ed.onPreInit.add(t.setup,t);t.reOpera=new RegExp('(\\u00a0| | )<\/'+elm+'>','gi');t.rePadd=new RegExp('<p( )([^>]+)><\\\/p>|<p( )([^>]+)\\\/>|<p( )([^>]+)>\\s+<\\\/p>|<p><\\\/p>|<p\\\/>|<p>\\s+<\\\/p>'.replace(/p/g,elm),'gi');t.reNbsp2BR1=new RegExp('<p( )([^>]+)>[\\s\\u00a0]+<\\\/p>|<p>[\\s\\u00a0]+<\\\/p>'.replace(/p/g,elm),'gi');t.reNbsp2BR2=new RegExp('<p( )([^>]+)>( | )<\\\/p>|<p>( | )<\\\/p>'.replace(/p/g,elm),'gi');t.reBR2Nbsp=new RegExp('<p( )([^>]+)>\\s*<br \\\/>\\s*<\\\/p>|<p>\\s*<br \\\/>\\s*<\\\/p>'.replace(/p/g,elm),'gi');t.reTrailBr=new RegExp('\\s*<br \\/>\\s*<\\\/p>'.replace(/p/g,elm),'gi');function padd(ed,o){if(isOpera)o.content=o.content.replace(t.reOpera,'</'+elm+'>');o.content=o.content.replace(t.rePadd,'<'+elm+'$1$2$3$4$5$6>\u00a0</'+elm+'>');if(!isIE&&!isOpera&&o.set){o.content=o.content.replace(t.reNbsp2BR1,'<'+elm+'$1$2><br /></'+elm+'>');o.content=o.content.replace(t.reNbsp2BR2,'<'+elm+'$1$2><br /></'+elm+'>');}else{o.content=o.content.replace(t.reBR2Nbsp,'<'+elm+'$1$2>\u00a0</'+elm+'>');o.content=o.content.replace(t.reTrailBr,'</'+elm+'>');}};ed.onBeforeSetContent.add(padd);ed.onPostProcess.add(padd);if(s.forced_root_block){ed.onInit.add(t.forceRoots,t);ed.onSetContent.add(t.forceRoots,t);ed.onBeforeGetContent.add(t.forceRoots,t);}},setup:function(){var t=this,ed=t.editor,s=ed.settings;if(s.forced_root_block){ed.onKeyUp.add(t.forceRoots,t);ed.onPreProcess.add(t.forceRoots,t);}if(s.force_br_newlines){if(isIE){ed.onKeyPress.add(function(ed,e){var n,s=ed.selection;if(e.keyCode==13&&s.getNode().nodeName!='LI'){s.setContent('<br id="__" /> ',{format:'raw'});n=ed.dom.get('__');n.removeAttribute('id');s.select(n);s.collapse();return Event.cancel(e);}});}return;}if(!isIE&&s.force_p_newlines){ed.onKeyPress.add(function(ed,e){if(e.keyCode==13&&!e.shiftKey){if(!t.insertPara(e))Event.cancel(e);}});if(isGecko){ed.onKeyDown.add(function(ed,e){if((e.keyCode==8||e.keyCode==46)&&!e.shiftKey)t.backspaceDelete(e,e.keyCode==8);});}}function ren(rn,na){var ne=ed.dom.create(na);each(rn.attributes,function(a){if(a.specified&&a.nodeValue)ne.setAttribute(a.nodeName.toLowerCase(),a.nodeValue);});each(rn.childNodes,function(n){ne.appendChild(n.cloneNode(true));});rn.parentNode.replaceChild(ne,rn);return ne;};if(isIE&&s.element!='P'){ed.onKeyPress.add(function(ed,e){t.lastElm=ed.selection.getNode().nodeName;});ed.onKeyUp.add(function(ed,e){var bl,sel=ed.selection,n=sel.getNode(),b=ed.getBody();if(b.childNodes.length===1&&n.nodeName=='P'){n=ren(n,s.element);sel.select(n);sel.collapse();ed.nodeChanged();}else if(e.keyCode==13&&!e.shiftKey&&t.lastElm!='P'){bl=ed.dom.getParent(n,'P');if(bl){ren(bl,s.element);ed.nodeChanged();}}});}},find:function(n,t,s){var ed=this.editor,w=ed.getDoc().createTreeWalker(n,4,null,false),c=-1;while(n=w.nextNode()){c++;if(t==0&&n==s)return c;if(t==1&&c==s)return n;}return-1;},forceRoots:function(ed,e){var t=this,ed=t.editor,b=ed.getBody(),d=ed.getDoc(),se=ed.selection,s=se.getSel(),r=se.getRng(),si=-2,ei,so,eo,tr,c=-0xFFFFFF;var nx,bl,bp,sp,le,nl=b.childNodes,i;if(e&&e.keyCode==13)return true;for(i=nl.length-1;i>=0;i--){nx=nl[i];if(nx.nodeType==3||(!t.dom.isBlock(nx)&&nx.nodeType!=8)){if(!bl){if(nx.nodeType!=3||/[^\s]/g.test(nx.nodeValue)){if(si==-2&&r){if(!isIE){if(ed.dom.getParent(r.startContainer,function(e){return e===b;})){so=r.startOffset;eo=r.endOffset;si=t.find(b,0,r.startContainer);ei=t.find(b,0,r.endContainer);}}else{tr=d.body.createTextRange();tr.moveToElementText(b);tr.collapse(1);bp=tr.move('character',c)*-1;tr=r.duplicate();tr.collapse(1);sp=tr.move('character',c)*-1;tr=r.duplicate();tr.collapse(0);le=(tr.move('character',c)*-1)-sp;si=sp-bp;ei=le;}}bl=ed.dom.create(ed.settings.forced_root_block);bl.appendChild(nx.cloneNode(1));nx.parentNode.replaceChild(bl,nx);}}else{if(bl.hasChildNodes())bl.insertBefore(nx,bl.firstChild);else bl.appendChild(nx);}}else bl=null;}if(si!=-2){if(!isIE){bl=b.getElementsByTagName(ed.settings.element)[0];r=d.createRange();if(si!=-1)r.setStart(t.find(b,1,si),so);else r.setStart(bl,0);if(ei!=-1)r.setEnd(t.find(b,1,ei),eo);else r.setEnd(bl,0);if(s){s.removeAllRanges();s.addRange(r);}}else{try{r=s.createRange();r.moveToElementText(b);r.collapse(1);r.moveStart('character',si);r.moveEnd('character',ei);r.select();}catch(ex){}}}},getParentBlock:function(n){var d=this.dom;return d.getParent(n,d.isBlock);},insertPara:function(e){var t=this,ed=t.editor,dom=ed.dom,d=ed.getDoc(),se=ed.settings,s=ed.selection.getSel(),r=s.getRangeAt(0),b=d.body;var rb,ra,dir,sn,so,en,eo,sb,eb,bn,bef,aft,sc,ec,n,vp=dom.getViewPort(ed.getWin()),y,ch;function isEmpty(n){n=n.innerHTML;n=n.replace(/<(img|hr|table)/gi,'-');n=n.replace(/<[^>]+>/g,'');return n.replace(/[ \t\r\n]+/g,'')=='';};rb=d.createRange();rb.setStart(s.anchorNode,s.anchorOffset);rb.collapse(true);ra=d.createRange();ra.setStart(s.focusNode,s.focusOffset);ra.collapse(true);dir=rb.compareBoundaryPoints(rb.START_TO_END,ra)<0;sn=dir?s.anchorNode:s.focusNode;so=dir?s.anchorOffset:s.focusOffset;en=dir?s.focusNode:s.anchorNode;eo=dir?s.focusOffset:s.anchorOffset;if(sn===en&&/^(TD|TH)$/.test(sn.nodeName)){dom.remove(sn.firstChild);ed.dom.add(sn,se.element,null,'<br />');aft=ed.dom.add(sn,se.element,null,'<br />');r=d.createRange();r.selectNodeContents(aft);r.collapse(1);ed.selection.setRng(r);return false;}if(sn==b&&en==b&&b.firstChild&&ed.dom.isBlock(b.firstChild)){sn=en=sn.firstChild;so=eo=0;rb=d.createRange();rb.setStart(sn,0);ra=d.createRange();ra.setStart(en,0);}sn=sn.nodeName=="HTML"?d.body:sn;sn=sn.nodeName=="BODY"?sn.firstChild:sn;en=en.nodeName=="HTML"?d.body:en;en=en.nodeName=="BODY"?en.firstChild:en;sb=t.getParentBlock(sn);eb=t.getParentBlock(en);bn=sb?sb.nodeName:se.element;if(t.dom.getParent(sb,function(n){return/OL|UL|PRE/.test(n.nodeName);}))return true;if(sb&&(sb.nodeName=='CAPTION'||/absolute|relative|static/gi.test(sb.style.position))){bn=se.element;sb=null;}if(eb&&(eb.nodeName=='CAPTION'||/absolute|relative|static/gi.test(eb.style.position))){bn=se.element;eb=null;}if(/(TD|TABLE|TH|CAPTION)/.test(bn)||(sb&&bn=="DIV"&&/left|right/gi.test(sb.style.cssFloat))){bn=se.element;sb=eb=null;}bef=(sb&&sb.nodeName==bn)?sb.cloneNode(0):ed.dom.create(bn);aft=(eb&&eb.nodeName==bn)?eb.cloneNode(0):ed.dom.create(bn);aft.removeAttribute('id');if(/^(H[1-6])$/.test(bn)&&sn.nodeValue&&so==sn.nodeValue.length)aft=ed.dom.create(se.element);n=sc=sn;do{if(n==b||n.nodeType==9||t.dom.isBlock(n)||/(TD|TABLE|TH|CAPTION)/.test(n.nodeName))break;sc=n;}while((n=n.previousSibling?n.previousSibling:n.parentNode));n=ec=en;do{if(n==b||n.nodeType==9||t.dom.isBlock(n)||/(TD|TABLE|TH|CAPTION)/.test(n.nodeName))break;ec=n;}while((n=n.nextSibling?n.nextSibling:n.parentNode));if(sc.nodeName==bn)rb.setStart(sc,0);else rb.setStartBefore(sc);rb.setEnd(sn,so);bef.appendChild(rb.cloneContents()||d.createTextNode(''));try{ra.setEndAfter(ec);}catch(ex){}ra.setStart(en,eo);aft.appendChild(ra.cloneContents()||d.createTextNode(''));r=d.createRange();if(!sc.previousSibling&&sc.parentNode.nodeName==bn){r.setStartBefore(sc.parentNode);}else{if(rb.startContainer.nodeName==bn&&rb.startOffset==0)r.setStartBefore(rb.startContainer);else r.setStart(rb.startContainer,rb.startOffset);}if(!ec.nextSibling&&ec.parentNode.nodeName==bn)r.setEndAfter(ec.parentNode);else r.setEnd(ra.endContainer,ra.endOffset);r.deleteContents();if(isOpera)ed.getWin().scrollTo(0,vp.y);if(bef.firstChild&&bef.firstChild.nodeName==bn)bef.innerHTML=bef.firstChild.innerHTML;if(aft.firstChild&&aft.firstChild.nodeName==bn)aft.innerHTML=aft.firstChild.innerHTML;if(isEmpty(bef))bef.innerHTML='<br />';if(isEmpty(aft))aft.innerHTML=isOpera?' ':'<br />';if(isOpera&&parseFloat(opera.version())<9.5){r.insertNode(bef);r.insertNode(aft);}else{r.insertNode(aft);r.insertNode(bef);}aft.normalize();bef.normalize();function first(n){return d.createTreeWalker(n,NodeFilter.SHOW_TEXT,null,false).nextNode()||n;};r=d.createRange();r.selectNodeContents(isGecko?first(aft):aft);r.collapse(1);s.removeAllRanges();s.addRange(r);y=ed.dom.getPos(aft).y;ch=aft.clientHeight;if(y<vp.y||y+ch>vp.y+vp.h){ed.getWin().scrollTo(0,y<vp.y?y:y-vp.h+25);}return false;},backspaceDelete:function(e,bs){var t=this,ed=t.editor,b=ed.getBody(),n,se=ed.selection,r=se.getRng(),sc=r.startContainer,n,w,tn;if(sc&&ed.dom.isBlock(sc)&&!/^(TD|TH)$/.test(sc.nodeName)&&bs){if(sc.childNodes.length==0||(sc.childNodes.length==1&&sc.firstChild.nodeName=='BR')){n=sc;while((n=n.previousSibling)&&!ed.dom.isBlock(n));if(n){if(sc!=b.firstChild){w=ed.dom.doc.createTreeWalker(n,NodeFilter.SHOW_TEXT,null,false);while(tn=w.nextNode())n=tn;r=ed.getDoc().createRange();r.setStart(n,n.nodeValue?n.nodeValue.length:0);r.setEnd(n,n.nodeValue?n.nodeValue.length:0);se.setRng(r);ed.dom.remove(sc);}return Event.cancel(e);}}}function handler(e){var pr;e=e.target;if(e&&e.parentNode&&e.nodeName=='BR'&&(n=t.getParentBlock(e))){pr=e.previousSibling;Event.remove(b,'DOMNodeInserted',handler);if(pr&&pr.nodeType==3&&/\s+$/.test(pr.nodeValue))return;if(e.previousSibling||e.nextSibling)ed.dom.remove(e);}};Event._add(b,'DOMNodeInserted',handler);window.setTimeout(function(){Event._remove(b,'DOMNodeInserted',handler);},1);}});})();(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,each=tinymce.each,extend=tinymce.extend;tinymce.create('tinymce.ControlManager',{ControlManager:function(ed,s){var t=this,i;s=s||{};t.editor=ed;t.controls={};t.onAdd=new tinymce.util.Dispatcher(t);t.onPostRender=new tinymce.util.Dispatcher(t);t.prefix=s.prefix||ed.id+'_';t._cls={};t.onPostRender.add(function(){each(t.controls,function(c){c.postRender();});});},get:function(id){return this.controls[this.prefix+id]||this.controls[id];},setActive:function(id,s){var c=null;if(c=this.get(id))c.setActive(s);return c;},setDisabled:function(id,s){var c=null;if(c=this.get(id))c.setDisabled(s);return c;},add:function(c){var t=this;if(c){t.controls[c.id]=c;t.onAdd.dispatch(c,t);}return c;},createControl:function(n){var c,t=this,ed=t.editor;each(ed.plugins,function(p){if(p.createControl){c=p.createControl(n,t);if(c)return false;}});switch(n){case"|":case"separator":return t.createSeparator();}if(!c&&ed.buttons&&(c=ed.buttons[n]))return t.createButton(n,c);return t.add(c);},createDropMenu:function(id,s,cc){var t=this,ed=t.editor,c,bm,v,cls;s=extend({'class':'mceDropDown',constrain:ed.settings.constrain_menus},s);s['class']=s['class']+' '+ed.getParam('skin')+'Skin';if(v=ed.getParam('skin_variant'))s['class']+=' '+ed.getParam('skin')+'Skin'+v.substring(0,1).toUpperCase()+v.substring(1);id=t.prefix+id;cls=cc||t._cls.dropmenu||tinymce.ui.DropMenu;c=t.controls[id]=new cls(id,s);c.onAddItem.add(function(c,o){var s=o.settings;s.title=ed.getLang(s.title,s.title);if(!s.onclick){s.onclick=function(v){ed.execCommand(s.cmd,s.ui||false,s.value);};}});ed.onRemove.add(function(){c.destroy();});if(tinymce.isIE){c.onShowMenu.add(function(){bm=ed.selection.getBookmark(1);});c.onHideMenu.add(function(){if(bm)ed.selection.moveToBookmark(bm);});}return t.add(c);},createListBox:function(id,s,cc){var t=this,ed=t.editor,cmd,c,cls;if(t.get(id))return null;s.title=ed.translate(s.title);s.scope=s.scope||ed;if(!s.onselect){s.onselect=function(v){ed.execCommand(s.cmd,s.ui||false,v||s.value);};}s=extend({title:s.title,'class':'mce_'+id,scope:s.scope,control_manager:t},s);id=t.prefix+id;if(ed.settings.use_native_selects)c=new tinymce.ui.NativeListBox(id,s);else{cls=cc||t._cls.listbox||tinymce.ui.ListBox;c=new cls(id,s);}t.controls[id]=c;if(tinymce.isWebKit){c.onPostRender.add(function(c,n){Event.add(n,'mousedown',function(){ed.bookmark=ed.selection.getBookmark('simple');});Event.add(n,'focus',function(){ed.selection.moveToBookmark(ed.bookmark);ed.bookmark=null;});});}if(c.hideMenu)ed.onMouseDown.add(c.hideMenu,c);return t.add(c);},createButton:function(id,s,cc){var t=this,ed=t.editor,o,c,cls;if(t.get(id))return null;s.title=ed.translate(s.title);s.label=ed.translate(s.label);s.scope=s.scope||ed;if(!s.onclick&&!s.menu_button){s.onclick=function(){ed.execCommand(s.cmd,s.ui||false,s.value);};}s=extend({title:s.title,'class':'mce_'+id,unavailable_prefix:ed.getLang('unavailable',''),scope:s.scope,control_manager:t},s);id=t.prefix+id;if(s.menu_button){cls=cc||t._cls.menubutton||tinymce.ui.MenuButton;c=new cls(id,s);ed.onMouseDown.add(c.hideMenu,c);}else{cls=t._cls.button||tinymce.ui.Button;c=new cls(id,s);}return t.add(c);},createMenuButton:function(id,s){s=s||{};s.menu_button=1;return this.createButton(id,s);},createSplitButton:function(id,s,cc){var t=this,ed=t.editor,cmd,c,cls;if(t.get(id))return null;s.title=ed.translate(s.title);s.scope=s.scope||ed;if(!s.onclick){s.onclick=function(v){ed.execCommand(s.cmd,s.ui||false,v||s.value);};}if(!s.onselect){s.onselect=function(v){ed.execCommand(s.cmd,s.ui||false,v||s.value);};}s=extend({title:s.title,'class':'mce_'+id,scope:s.scope,control_manager:t},s);id=t.prefix+id;cls=cc||t._cls.splitbutton||tinymce.ui.SplitButton;c=t.add(new cls(id,s));ed.onMouseDown.add(c.hideMenu,c);return c;},createColorSplitButton:function(id,s,cc){var t=this,ed=t.editor,cmd,c,cls,bm;if(t.get(id))return null;s.title=ed.translate(s.title);s.scope=s.scope||ed;if(!s.onclick){s.onclick=function(v){ed.execCommand(s.cmd,s.ui||false,v||s.value);};}if(!s.onselect){s.onselect=function(v){ed.execCommand(s.cmd,s.ui||false,v||s.value);};}s=extend({title:s.title,'class':'mce_'+id,'menu_class':ed.getParam('skin')+'Skin',scope:s.scope,more_colors_title:ed.getLang('more_colors')},s);id=t.prefix+id;cls=cc||t._cls.colorsplitbutton||tinymce.ui.ColorSplitButton;c=new cls(id,s);ed.onMouseDown.add(c.hideMenu,c);ed.onRemove.add(function(){c.destroy();});if(tinymce.isIE){c.onShowMenu.add(function(){bm=ed.selection.getBookmark(1);});c.onHideMenu.add(function(){if(bm){ed.selection.moveToBookmark(bm);bm=0;}});}return t.add(c);},createToolbar:function(id,s,cc){var c,t=this,cls;id=t.prefix+id;cls=cc||t._cls.toolbar||tinymce.ui.Toolbar;c=new cls(id,s);if(t.get(id))return null;return t.add(c);},createSeparator:function(cc){var cls=cc||this._cls.separator||tinymce.ui.Separator;return new cls();},setControlType:function(n,c){return this._cls[n.toLowerCase()]=c;},destroy:function(){each(this.controls,function(c){c.destroy();});this.controls=null;}});})();(function(){var Dispatcher=tinymce.util.Dispatcher,each=tinymce.each,isIE=tinymce.isIE,isOpera=tinymce.isOpera;tinymce.create('tinymce.WindowManager',{WindowManager:function(ed){var t=this;t.editor=ed;t.onOpen=new Dispatcher(t);t.onClose=new Dispatcher(t);t.params={};t.features={};},open:function(s,p){var t=this,f='',x,y,mo=t.editor.settings.dialog_type=='modal',w,sw,sh,vp=tinymce.DOM.getViewPort(),u;s=s||{};p=p||{};sw=isOpera?vp.w:screen.width;sh=isOpera?vp.h:screen.height;s.name=s.name||'mc_'+new Date().getTime();s.width=parseInt(s.width||320);s.height=parseInt(s.height||240);s.resizable=true;s.left=s.left||parseInt(sw/ 2.0) - (s.width /2.0);s.top=s.top||parseInt(sh/ 2.0) - (s.height /2.0);p.inline=false;p.mce_width=s.width;p.mce_height=s.height;p.mce_auto_focus=s.auto_focus;if(mo){if(isIE){s.center=true;s.help=false;s.dialogWidth=s.width+'px';s.dialogHeight=s.height+'px';s.scroll=s.scrollbars||false;}}each(s,function(v,k){if(tinymce.is(v,'boolean'))v=v?'yes':'no';if(!/^(name|url)$/.test(k)){if(isIE&&mo)f+=(f?';':'')+k+':'+v;else f+=(f?',':'')+k+'='+v;}});t.features=s;t.params=p;t.onOpen.dispatch(t,s,p);u=s.url||s.file;if(tinymce.relaxedDomain)u+=(u.indexOf('?')==-1?'?':'&')+'mce_rdomain='+tinymce.relaxedDomain;u=tinymce._addVer(u);try{if(isIE&&mo){w=1;window.showModalDialog(u,window,f);}else w=window.open(u,s.name,f);}catch(ex){}if(!w)alert(t.editor.getLang('popup_blocked'));},close:function(w){w.close();this.onClose.dispatch(this);},createInstance:function(cl,a,b,c,d,e){var f=tinymce.resolve(cl);return new f(a,b,c,d,e);},confirm:function(t,cb,s,w){w=w||window;cb.call(s||this,w.confirm(this._decode(this.editor.getLang(t,t))));},alert:function(tx,cb,s,w){var t=this;w=w||window;w.alert(t._decode(t.editor.getLang(tx,tx)));if(cb)cb.call(s||t);},_decode:function(s){return tinymce.DOM.decode(s).replace(/\\n/g,'\n');}});}());
\ No newline at end of file
+++ /dev/null
-// Some global instances\r
-var tinymce = null, tinyMCEPopup, tinyMCE;\r
-\r
-tinyMCEPopup = {\r
- init : function() {\r
- var t = this, w, ti, li, q, i, it;\r
-\r
- li = ('' + document.location.search).replace(/^\?/, '').split('&');\r
- q = {};\r
- for (i=0; i<li.length; i++) {\r
- it = li[i].split('=');\r
- q[unescape(it[0])] = unescape(it[1]);\r
- }\r
-\r
- if (q.mce_rdomain)\r
- document.domain = q.mce_rdomain;\r
-\r
- // Find window & API\r
- w = t.getWin();\r
- tinymce = w.tinymce;\r
- tinyMCE = w.tinyMCE;\r
- t.editor = tinymce.EditorManager.activeEditor;\r
- t.params = t.editor.windowManager.params;\r
- t.features = t.editor.windowManager.features;\r
-\r
- // Setup local DOM\r
- t.dom = t.editor.windowManager.createInstance('tinymce.dom.DOMUtils', document);\r
- t.dom.loadCSS(t.features.popup_css || t.editor.settings.popup_css);\r
-\r
- // Setup on init listeners\r
- t.listeners = [];\r
- t.onInit = {\r
- add : function(f, s) {\r
- t.listeners.push({func : f, scope : s});\r
- }\r
- };\r
-\r
- t.isWindow = !t.getWindowArg('mce_inline');\r
- t.id = t.getWindowArg('mce_window_id');\r
- t.editor.windowManager.onOpen.dispatch(t.editor.windowManager, window);\r
- },\r
-\r
- getWin : function() {\r
- return window.dialogArguments || opener || parent || top;\r
- },\r
-\r
- getWindowArg : function(n, dv) {\r
- var v = this.params[n];\r
-\r
- return tinymce.is(v) ? v : dv;\r
- },\r
-\r
- getParam : function(n, dv) {\r
- return this.editor.getParam(n, dv);\r
- },\r
-\r
- getLang : function(n, dv) {\r
- return this.editor.getLang(n, dv);\r
- },\r
-\r
- execCommand : function(cmd, ui, val, a) {\r
- a = a || {};\r
- a.skip_focus = 1;\r
-\r
- this.restoreSelection();\r
- return this.editor.execCommand(cmd, ui, val, a);\r
- },\r
-\r
- resizeToInnerSize : function() {\r
- var t = this, n, b = document.body, vp = t.dom.getViewPort(window), dw, dh;\r
-\r
- dw = t.getWindowArg('mce_width') - vp.w;\r
- dh = t.getWindowArg('mce_height') - vp.h;\r
-\r
- if (t.isWindow)\r
- window.resizeBy(dw, dh);\r
- else\r
- t.editor.windowManager.resizeBy(dw, dh, t.id);\r
- },\r
-\r
- executeOnLoad : function(s) {\r
- this.onInit.add(function() {\r
- eval(s);\r
- });\r
- },\r
-\r
- storeSelection : function() {\r
- this.editor.windowManager.bookmark = tinyMCEPopup.editor.selection.getBookmark('simple');\r
- },\r
-\r
- restoreSelection : function() {\r
- var t = tinyMCEPopup;\r
-\r
- if (!t.isWindow && tinymce.isIE)\r
- t.editor.selection.moveToBookmark(t.editor.windowManager.bookmark);\r
- },\r
-\r
- requireLangPack : function() {\r
- var u = this.getWindowArg('plugin_url') || this.getWindowArg('theme_url');\r
-\r
- if (u && this.editor.settings.language) {\r
- u += '/langs/' + this.editor.settings.language + '_dlg.js';\r
-\r
- if (!tinymce.ScriptLoader.isDone(u)) {\r
- document.write('<script type="text/javascript" src="' + tinymce._addVer(u) + '"></script>');\r
- tinymce.ScriptLoader.markDone(u);\r
- }\r
- }\r
- },\r
-\r
- pickColor : function(e, element_id) {\r
- this.execCommand('mceColorPicker', true, {\r
- color : document.getElementById(element_id).value,\r
- func : function(c) {\r
- document.getElementById(element_id).value = c;\r
-\r
- try {\r
- document.getElementById(element_id).onchange();\r
- } catch (ex) {\r
- // Try fire event, ignore errors\r
- }\r
- }\r
- });\r
- },\r
-\r
- openBrowser : function(element_id, type, option) {\r
- tinyMCEPopup.restoreSelection();\r
- this.editor.execCallback('file_browser_callback', element_id, document.getElementById(element_id).value, type, window);\r
- },\r
-\r
- confirm : function(t, cb, s) {\r
- this.editor.windowManager.confirm(t, cb, s, window);\r
- },\r
-\r
- alert : function(tx, cb, s) {\r
- this.editor.windowManager.alert(tx, cb, s, window);\r
- },\r
-\r
- close : function() {\r
- var t = this;\r
-\r
- // To avoid domain relaxing issue in Opera\r
- function close() {\r
- t.editor.windowManager.close(window);\r
- tinymce = tinyMCE = t.editor = t.params = t.dom = t.dom.doc = null; // Cleanup\r
- };\r
-\r
- if (tinymce.isOpera)\r
- t.getWin().setTimeout(close, 0);\r
- else\r
- close();\r
- },\r
-\r
- // Internal functions \r
-\r
- _restoreSelection : function() {\r
- var e = window.event.srcElement;\r
-\r
- if (e.nodeName == 'INPUT' && (e.type == 'submit' || e.type == 'button'))\r
- tinyMCEPopup.restoreSelection();\r
- },\r
-\r
-/* _restoreSelection : function() {\r
- var e = window.event.srcElement;\r
-\r
- // If user focus a non text input or textarea\r
- if ((e.nodeName != 'INPUT' && e.nodeName != 'TEXTAREA') || e.type != 'text')\r
- tinyMCEPopup.restoreSelection();\r
- },*/\r
-\r
- _onDOMLoaded : function() {\r
- var t = this, ti = document.title, bm, h;\r
-\r
- // Translate page\r
- h = document.body.innerHTML;\r
-\r
- // Replace a=x with a="x" in IE\r
- if (tinymce.isIE)\r
- h = h.replace(/ (value|title|alt)=([^"][^\s>]+)/gi, ' $1="$2"')\r
-\r
- document.dir = t.editor.getParam('directionality','');\r
- document.body.innerHTML = t.editor.translate(h);\r
- document.title = ti = t.editor.translate(ti);\r
- document.body.style.display = '';\r
-\r
- // Restore selection in IE when focus is placed on a non textarea or input element of the type text\r
- if (tinymce.isIE)\r
- document.attachEvent('onmouseup', tinyMCEPopup._restoreSelection);\r
-\r
- t.restoreSelection();\r
- t.resizeToInnerSize();\r
-\r
- // Set inline title\r
- if (!t.isWindow)\r
- t.editor.windowManager.setTitle(window, ti);\r
- else\r
- window.focus();\r
-\r
- if (!tinymce.isIE && !t.isWindow) {\r
- tinymce.dom.Event._add(document, 'focus', function() {\r
- t.editor.windowManager.focus(t.id)\r
- });\r
- }\r
-\r
- // Patch for accessibility\r
- tinymce.each(t.dom.select('select'), function(e) {\r
- e.onkeydown = tinyMCEPopup._accessHandler;\r
- });\r
-\r
- // Call onInit\r
- // Init must be called before focus so the selection won't get lost by the focus call\r
- tinymce.each(t.listeners, function(o) {\r
- o.func.call(o.scope, t.editor);\r
- });\r
-\r
- // Move focus to window\r
- if (t.getWindowArg('mce_auto_focus', true)) {\r
- window.focus();\r
-\r
- // Focus element with mceFocus class\r
- tinymce.each(document.forms, function(f) {\r
- tinymce.each(f.elements, function(e) {\r
- if (t.dom.hasClass(e, 'mceFocus') && !e.disabled) {\r
- e.focus();\r
- return false; // Break loop\r
- }\r
- });\r
- });\r
- }\r
-\r
- document.onkeyup = tinyMCEPopup._closeWinKeyHandler;\r
- },\r
-\r
- _accessHandler : function(e) {\r
- e = e || window.event;\r
-\r
- if (e.keyCode == 13 || e.keyCode == 32) {\r
- e = e.target || e.srcElement;\r
-\r
- if (e.onchange)\r
- e.onchange();\r
-\r
- return tinymce.dom.Event.cancel(e);\r
- }\r
- },\r
-\r
- _closeWinKeyHandler : function(e) {\r
- e = e || window.event;\r
-\r
- if (e.keyCode == 27)\r
- tinyMCEPopup.close();\r
- },\r
-\r
- _wait : function() {\r
- var t = this, ti;\r
-\r
- if (tinymce.isIE && document.location.protocol != 'https:') {\r
- // Fake DOMContentLoaded on IE\r
- document.write('<script id=__ie_onload defer src=\'javascript:""\';><\/script>');\r
- document.getElementById("__ie_onload").onreadystatechange = function() {\r
- if (this.readyState == "complete") {\r
- t._onDOMLoaded();\r
- document.getElementById("__ie_onload").onreadystatechange = null; // Prevent leak\r
- }\r
- };\r
- } else {\r
- if (tinymce.isIE || tinymce.isWebKit) {\r
- ti = setInterval(function() {\r
- if (/loaded|complete/.test(document.readyState)) {\r
- clearInterval(ti);\r
- t._onDOMLoaded();\r
- }\r
- }, 10);\r
- } else {\r
- window.addEventListener('DOMContentLoaded', function() {\r
- t._onDOMLoaded();\r
- }, false);\r
- }\r
- }\r
- }\r
-};\r
-\r
-tinyMCEPopup.init();\r
-tinyMCEPopup._wait(); // Wait for DOM Content Loaded\r
+++ /dev/null
-/**\r
- * $Id: editable_selects.js 867 2008-06-09 20:33:40Z spocke $\r
- *\r
- * Makes select boxes editable.\r
- *\r
- * @author Moxiecode\r
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-var TinyMCE_EditableSelects = {\r
- editSelectElm : null,\r
-\r
- init : function() {\r
- var nl = document.getElementsByTagName("select"), i, d = document, o;\r
-\r
- for (i=0; i<nl.length; i++) {\r
- if (nl[i].className.indexOf('mceEditableSelect') != -1) {\r
- o = new Option('(value)', '__mce_add_custom__');\r
-\r
- o.className = 'mceAddSelectValue';\r
-\r
- nl[i].options[nl[i].options.length] = o;\r
- nl[i].onchange = TinyMCE_EditableSelects.onChangeEditableSelect;\r
- }\r
- }\r
- },\r
-\r
- onChangeEditableSelect : function(e) {\r
- var d = document, ne, se = window.event ? window.event.srcElement : e.target;\r
-\r
- if (se.options[se.selectedIndex].value == '__mce_add_custom__') {\r
- ne = d.createElement("input");\r
- ne.id = se.id + "_custom";\r
- ne.name = se.name + "_custom";\r
- ne.type = "text";\r
-\r
- ne.style.width = se.offsetWidth + 'px';\r
- se.parentNode.insertBefore(ne, se);\r
- se.style.display = 'none';\r
- ne.focus();\r
- ne.onblur = TinyMCE_EditableSelects.onBlurEditableSelectInput;\r
- ne.onkeydown = TinyMCE_EditableSelects.onKeyDown;\r
- TinyMCE_EditableSelects.editSelectElm = se;\r
- }\r
- },\r
-\r
- onBlurEditableSelectInput : function() {\r
- var se = TinyMCE_EditableSelects.editSelectElm;\r
-\r
- if (se) {\r
- if (se.previousSibling.value != '') {\r
- addSelectValue(document.forms[0], se.id, se.previousSibling.value, se.previousSibling.value);\r
- selectByValue(document.forms[0], se.id, se.previousSibling.value);\r
- } else\r
- selectByValue(document.forms[0], se.id, '');\r
-\r
- se.style.display = 'inline';\r
- se.parentNode.removeChild(se.previousSibling);\r
- TinyMCE_EditableSelects.editSelectElm = null;\r
- }\r
- },\r
-\r
- onKeyDown : function(e) {\r
- e = e || window.event;\r
-\r
- if (e.keyCode == 13)\r
- TinyMCE_EditableSelects.onBlurEditableSelectInput();\r
- }\r
-};\r
+++ /dev/null
-/**\r
- * $Id: form_utils.js 673 2008-03-06 13:26:20Z spocke $\r
- *\r
- * Various form utilitiy functions.\r
- *\r
- * @author Moxiecode\r
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-var themeBaseURL = tinyMCEPopup.editor.baseURI.toAbsolute('themes/' + tinyMCEPopup.getParam("theme"));\r
-\r
-function getColorPickerHTML(id, target_form_element) {\r
- var h = "";\r
-\r
- h += '<a id="' + id + '_link" href="javascript:;" onclick="tinyMCEPopup.pickColor(event,\'' + target_form_element +'\');" onmousedown="return false;" class="pickcolor">';\r
- h += '<span id="' + id + '" title="' + tinyMCEPopup.getLang('browse') + '"></span></a>';\r
-\r
- return h;\r
-}\r
-\r
-function updateColor(img_id, form_element_id) {\r
- document.getElementById(img_id).style.backgroundColor = document.forms[0].elements[form_element_id].value;\r
-}\r
-\r
-function setBrowserDisabled(id, state) {\r
- var img = document.getElementById(id);\r
- var lnk = document.getElementById(id + "_link");\r
-\r
- if (lnk) {\r
- if (state) {\r
- lnk.setAttribute("realhref", lnk.getAttribute("href"));\r
- lnk.removeAttribute("href");\r
- tinyMCEPopup.dom.addClass(img, 'disabled');\r
- } else {\r
- if (lnk.getAttribute("realhref"))\r
- lnk.setAttribute("href", lnk.getAttribute("realhref"));\r
-\r
- tinyMCEPopup.dom.removeClass(img, 'disabled');\r
- }\r
- }\r
-}\r
-\r
-function getBrowserHTML(id, target_form_element, type, prefix) {\r
- var option = prefix + "_" + type + "_browser_callback", cb, html;\r
-\r
- cb = tinyMCEPopup.getParam(option, tinyMCEPopup.getParam("file_browser_callback"));\r
-\r
- if (!cb)\r
- return "";\r
-\r
- html = "";\r
- html += '<a id="' + id + '_link" href="javascript:openBrowser(\'' + id + '\',\'' + target_form_element + '\', \'' + type + '\',\'' + option + '\');" onmousedown="return false;" class="browse">';\r
- html += '<span id="' + id + '" title="' + tinyMCEPopup.getLang('browse') + '"></span></a>';\r
-\r
- return html;\r
-}\r
-\r
-function openBrowser(img_id, target_form_element, type, option) {\r
- var img = document.getElementById(img_id);\r
-\r
- if (img.className != "mceButtonDisabled")\r
- tinyMCEPopup.openBrowser(target_form_element, type, option);\r
-}\r
-\r
-function selectByValue(form_obj, field_name, value, add_custom, ignore_case) {\r
- if (!form_obj || !form_obj.elements[field_name])\r
- return;\r
-\r
- var sel = form_obj.elements[field_name];\r
-\r
- var found = false;\r
- for (var i=0; i<sel.options.length; i++) {\r
- var option = sel.options[i];\r
-\r
- if (option.value == value || (ignore_case && option.value.toLowerCase() == value.toLowerCase())) {\r
- option.selected = true;\r
- found = true;\r
- } else\r
- option.selected = false;\r
- }\r
-\r
- if (!found && add_custom && value != '') {\r
- var option = new Option(value, value);\r
- option.selected = true;\r
- sel.options[sel.options.length] = option;\r
- sel.selectedIndex = sel.options.length - 1;\r
- }\r
-\r
- return found;\r
-}\r
-\r
-function getSelectValue(form_obj, field_name) {\r
- var elm = form_obj.elements[field_name];\r
-\r
- if (elm == null || elm.options == null)\r
- return "";\r
-\r
- return elm.options[elm.selectedIndex].value;\r
-}\r
-\r
-function addSelectValue(form_obj, field_name, name, value) {\r
- var s = form_obj.elements[field_name];\r
- var o = new Option(name, value);\r
- s.options[s.options.length] = o;\r
-}\r
-\r
-function addClassesToList(list_id, specific_option) {\r
- // Setup class droplist\r
- var styleSelectElm = document.getElementById(list_id);\r
- var styles = tinyMCEPopup.getParam('theme_advanced_styles', false);\r
- styles = tinyMCEPopup.getParam(specific_option, styles);\r
-\r
- if (styles) {\r
- var stylesAr = styles.split(';');\r
-\r
- for (var i=0; i<stylesAr.length; i++) {\r
- if (stylesAr != "") {\r
- var key, value;\r
-\r
- key = stylesAr[i].split('=')[0];\r
- value = stylesAr[i].split('=')[1];\r
-\r
- styleSelectElm.options[styleSelectElm.length] = new Option(key, value);\r
- }\r
- }\r
- } else {\r
- tinymce.each(tinyMCEPopup.editor.dom.getClasses(), function(o) {\r
- styleSelectElm.options[styleSelectElm.length] = new Option(o.title || o['class'], o['class']);\r
- });\r
- }\r
-}\r
-\r
-function isVisible(element_id) {\r
- var elm = document.getElementById(element_id);\r
-\r
- return elm && elm.style.display != "none";\r
-}\r
-\r
-function convertRGBToHex(col) {\r
- var re = new RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)", "gi");\r
-\r
- var rgb = col.replace(re, "$1,$2,$3").split(',');\r
- if (rgb.length == 3) {\r
- r = parseInt(rgb[0]).toString(16);\r
- g = parseInt(rgb[1]).toString(16);\r
- b = parseInt(rgb[2]).toString(16);\r
-\r
- r = r.length == 1 ? '0' + r : r;\r
- g = g.length == 1 ? '0' + g : g;\r
- b = b.length == 1 ? '0' + b : b;\r
-\r
- return "#" + r + g + b;\r
- }\r
-\r
- return col;\r
-}\r
-\r
-function convertHexToRGB(col) {\r
- if (col.indexOf('#') != -1) {\r
- col = col.replace(new RegExp('[^0-9A-F]', 'gi'), '');\r
-\r
- r = parseInt(col.substring(0, 2), 16);\r
- g = parseInt(col.substring(2, 4), 16);\r
- b = parseInt(col.substring(4, 6), 16);\r
-\r
- return "rgb(" + r + "," + g + "," + b + ")";\r
- }\r
-\r
- return col;\r
-}\r
-\r
-function trimSize(size) {\r
- return size.replace(/([0-9\.]+)px|(%|in|cm|mm|em|ex|pt|pc)/, '$1$2');\r
-}\r
-\r
-function getCSSSize(size) {\r
- size = trimSize(size);\r
-\r
- if (size == "")\r
- return "";\r
-\r
- // Add px\r
- if (/^[0-9]+$/.test(size))\r
- size += 'px';\r
-\r
- return size;\r
-}\r
-\r
-function getStyle(elm, attrib, style) {\r
- var val = tinyMCEPopup.dom.getAttrib(elm, attrib);\r
-\r
- if (val != '')\r
- return '' + val;\r
-\r
- if (typeof(style) == 'undefined')\r
- style = attrib;\r
-\r
- return tinyMCEPopup.dom.getStyle(elm, style);\r
-}\r
+++ /dev/null
-/**\r
- * $Id: mctabs.js 758 2008-03-30 13:53:29Z spocke $\r
- *\r
- * Moxiecode DHTML Tabs script.\r
- *\r
- * @author Moxiecode\r
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-function MCTabs() {\r
- this.settings = [];\r
-};\r
-\r
-MCTabs.prototype.init = function(settings) {\r
- this.settings = settings;\r
-};\r
-\r
-MCTabs.prototype.getParam = function(name, default_value) {\r
- var value = null;\r
-\r
- value = (typeof(this.settings[name]) == "undefined") ? default_value : this.settings[name];\r
-\r
- // Fix bool values\r
- if (value == "true" || value == "false")\r
- return (value == "true");\r
-\r
- return value;\r
-};\r
-\r
-MCTabs.prototype.displayTab = function(tab_id, panel_id) {\r
- var panelElm, panelContainerElm, tabElm, tabContainerElm, selectionClass, nodes, i;\r
-\r
- panelElm= document.getElementById(panel_id);\r
- panelContainerElm = panelElm ? panelElm.parentNode : null;\r
- tabElm = document.getElementById(tab_id);\r
- tabContainerElm = tabElm ? tabElm.parentNode : null;\r
- selectionClass = this.getParam('selection_class', 'current');\r
-\r
- if (tabElm && tabContainerElm) {\r
- nodes = tabContainerElm.childNodes;\r
-\r
- // Hide all other tabs\r
- for (i = 0; i < nodes.length; i++) {\r
- if (nodes[i].nodeName == "LI")\r
- nodes[i].className = '';\r
- }\r
-\r
- // Show selected tab\r
- tabElm.className = 'current';\r
- }\r
-\r
- if (panelElm && panelContainerElm) {\r
- nodes = panelContainerElm.childNodes;\r
-\r
- // Hide all other panels\r
- for (i = 0; i < nodes.length; i++) {\r
- if (nodes[i].nodeName == "DIV")\r
- nodes[i].className = 'panel';\r
- }\r
-\r
- // Show selected panel\r
- panelElm.className = 'current';\r
- }\r
-};\r
-\r
-MCTabs.prototype.getAnchor = function() {\r
- var pos, url = document.location.href;\r
-\r
- if ((pos = url.lastIndexOf('#')) != -1)\r
- return url.substring(pos + 1);\r
-\r
- return "";\r
-};\r
-\r
-// Global instance\r
-var mcTabs = new MCTabs();\r
+++ /dev/null
-/**\r
- * $Id: validate.js 758 2008-03-30 13:53:29Z spocke $\r
- *\r
- * Various form validation methods.\r
- *\r
- * @author Moxiecode\r
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-/**\r
- // String validation:\r
-\r
- if (!Validator.isEmail('myemail'))\r
- alert('Invalid email.');\r
-\r
- // Form validation:\r
-\r
- var f = document.forms['myform'];\r
-\r
- if (!Validator.isEmail(f.myemail))\r
- alert('Invalid email.');\r
-*/\r
-\r
-var Validator = {\r
- isEmail : function(s) {\r
- return this.test(s, '^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+@[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$');\r
- },\r
-\r
- isAbsUrl : function(s) {\r
- return this.test(s, '^(news|telnet|nttp|file|http|ftp|https)://[-A-Za-z0-9\\.]+\\/?.*$');\r
- },\r
-\r
- isSize : function(s) {\r
- return this.test(s, '^[0-9]+(%|in|cm|mm|em|ex|pt|pc|px)?$');\r
- },\r
-\r
- isId : function(s) {\r
- return this.test(s, '^[A-Za-z_]([A-Za-z0-9_])*$');\r
- },\r
-\r
- isEmpty : function(s) {\r
- var nl, i;\r
-\r
- if (s.nodeName == 'SELECT' && s.selectedIndex < 1)\r
- return true;\r
-\r
- if (s.type == 'checkbox' && !s.checked)\r
- return true;\r
-\r
- if (s.type == 'radio') {\r
- for (i=0, nl = s.form.elements; i<nl.length; i++) {\r
- if (nl[i].type == "radio" && nl[i].name == s.name && nl[i].checked)\r
- return false;\r
- }\r
-\r
- return true;\r
- }\r
-\r
- return new RegExp('^\\s*$').test(s.nodeType == 1 ? s.value : s);\r
- },\r
-\r
- isNumber : function(s, d) {\r
- return !isNaN(s.nodeType == 1 ? s.value : s) && (!d || !this.test(s, '^-?[0-9]*\\.[0-9]*$'));\r
- },\r
-\r
- test : function(s, p) {\r
- s = s.nodeType == 1 ? s.value : s;\r
-\r
- return s == '' || new RegExp(p).test(s);\r
- }\r
-};\r
-\r
-var AutoValidator = {\r
- settings : {\r
- id_cls : 'id',\r
- int_cls : 'int',\r
- url_cls : 'url',\r
- number_cls : 'number',\r
- email_cls : 'email',\r
- size_cls : 'size',\r
- required_cls : 'required',\r
- invalid_cls : 'invalid',\r
- min_cls : 'min',\r
- max_cls : 'max'\r
- },\r
-\r
- init : function(s) {\r
- var n;\r
-\r
- for (n in s)\r
- this.settings[n] = s[n];\r
- },\r
-\r
- validate : function(f) {\r
- var i, nl, s = this.settings, c = 0;\r
-\r
- nl = this.tags(f, 'label');\r
- for (i=0; i<nl.length; i++)\r
- this.removeClass(nl[i], s.invalid_cls);\r
-\r
- c += this.validateElms(f, 'input');\r
- c += this.validateElms(f, 'select');\r
- c += this.validateElms(f, 'textarea');\r
-\r
- return c == 3;\r
- },\r
-\r
- invalidate : function(n) {\r
- this.mark(n.form, n);\r
- },\r
-\r
- reset : function(e) {\r
- var t = ['label', 'input', 'select', 'textarea'];\r
- var i, j, nl, s = this.settings;\r
-\r
- if (e == null)\r
- return;\r
-\r
- for (i=0; i<t.length; i++) {\r
- nl = this.tags(e.form ? e.form : e, t[i]);\r
- for (j=0; j<nl.length; j++)\r
- this.removeClass(nl[j], s.invalid_cls);\r
- }\r
- },\r
-\r
- validateElms : function(f, e) {\r
- var nl, i, n, s = this.settings, st = true, va = Validator, v;\r
-\r
- nl = this.tags(f, e);\r
- for (i=0; i<nl.length; i++) {\r
- n = nl[i];\r
-\r
- this.removeClass(n, s.invalid_cls);\r
-\r
- if (this.hasClass(n, s.required_cls) && va.isEmpty(n))\r
- st = this.mark(f, n);\r
-\r
- if (this.hasClass(n, s.number_cls) && !va.isNumber(n))\r
- st = this.mark(f, n);\r
-\r
- if (this.hasClass(n, s.int_cls) && !va.isNumber(n, true))\r
- st = this.mark(f, n);\r
-\r
- if (this.hasClass(n, s.url_cls) && !va.isAbsUrl(n))\r
- st = this.mark(f, n);\r
-\r
- if (this.hasClass(n, s.email_cls) && !va.isEmail(n))\r
- st = this.mark(f, n);\r
-\r
- if (this.hasClass(n, s.size_cls) && !va.isSize(n))\r
- st = this.mark(f, n);\r
-\r
- if (this.hasClass(n, s.id_cls) && !va.isId(n))\r
- st = this.mark(f, n);\r
-\r
- if (this.hasClass(n, s.min_cls, true)) {\r
- v = this.getNum(n, s.min_cls);\r
-\r
- if (isNaN(v) || parseInt(n.value) < parseInt(v))\r
- st = this.mark(f, n);\r
- }\r
-\r
- if (this.hasClass(n, s.max_cls, true)) {\r
- v = this.getNum(n, s.max_cls);\r
-\r
- if (isNaN(v) || parseInt(n.value) > parseInt(v))\r
- st = this.mark(f, n);\r
- }\r
- }\r
-\r
- return st;\r
- },\r
-\r
- hasClass : function(n, c, d) {\r
- return new RegExp('\\b' + c + (d ? '[0-9]+' : '') + '\\b', 'g').test(n.className);\r
- },\r
-\r
- getNum : function(n, c) {\r
- c = n.className.match(new RegExp('\\b' + c + '([0-9]+)\\b', 'g'))[0];\r
- c = c.replace(/[^0-9]/g, '');\r
-\r
- return c;\r
- },\r
-\r
- addClass : function(n, c, b) {\r
- var o = this.removeClass(n, c);\r
- n.className = b ? c + (o != '' ? (' ' + o) : '') : (o != '' ? (o + ' ') : '') + c;\r
- },\r
-\r
- removeClass : function(n, c) {\r
- c = n.className.replace(new RegExp("(^|\\s+)" + c + "(\\s+|$)"), ' ');\r
- return n.className = c != ' ' ? c : '';\r
- },\r
-\r
- tags : function(f, s) {\r
- return f.getElementsByTagName(s);\r
- },\r
-\r
- mark : function(f, n) {\r
- var s = this.settings;\r
-\r
- this.addClass(n, s.invalid_cls);\r
- this.markLabels(f, n, s.invalid_cls);\r
-\r
- return false;\r
- },\r
-\r
- markLabels : function(f, n, ic) {\r
- var nl, i;\r
-\r
- nl = this.tags(f, "label");\r
- for (i=0; i<nl.length; i++) {\r
- if (nl[i].getAttribute("for") == n.id || nl[i].htmlFor == n.id)\r
- this.addClass(nl[i], ic);\r
- }\r
-\r
- return null;\r
- }\r
-};\r
--- /dev/null
+/**\r
+ * FusionCharts: Flash Player detection and Chart embedding.\r
+ * Version: 1.2.3 (15th September, 2008) - Added fix for % and & characters. Additional fixes to properly handle double quotes and single quotes in setDataXML() function.\r
+ * Version: 1.2.2 (10th July, 2008) - Added fix for % scaled dimensions, fixes in setDataXML() and setDataURL() functions\r
+ * Version: 1.2.1 (21st December, 2007) - Added setting up transparent/opaque mode: setTransparent() function \r
+ * Version: 1.2 (1st November, 2007) - Added FORM fixes for IE \r
+ * Version: 1.1 (29th June, 2007) - Added Player detection, New conditional fixes for IE\r
+ *\r
+ * Morphed from SWFObject (http://blog.deconcept.com/swfobject/) under MIT License:\r
+ * http://www.opensource.org/licenses/mit-license.php\r
+ *\r
+ */\r
+if(typeof infosoftglobal == "undefined") var infosoftglobal = new Object();\r
+if(typeof infosoftglobal.FusionChartsUtil == "undefined") infosoftglobal.FusionChartsUtil = new Object();\r
+infosoftglobal.FusionCharts = function(swf, id, w, h, debugMode, registerWithJS, c, scaleMode, lang, detectFlashVersion, autoInstallRedirect){\r
+ if (!document.getElementById) { return; }\r
+ \r
+ //Flag to see whether data has been set initially\r
+ this.initialDataSet = false;\r
+ \r
+ //Create container objects\r
+ this.params = new Object();\r
+ this.variables = new Object();\r
+ this.attributes = new Array();\r
+ \r
+ //Set attributes for the SWF\r
+ if(swf) { this.setAttribute('swf', swf); }\r
+ if(id) { this.setAttribute('id', id); }\r
+\r
+ debugMode = debugMode ? debugMode : 0;\r
+ this.addVariable('debugMode', debugMode);\r
+\r
+ w=w.toString().replace(/\%$/,"%25");\r
+ if(w) { this.setAttribute('width', w); }\r
+ h=h.toString().replace(/\%$/,"%25");\r
+ if(h) { this.setAttribute('height', h); }\r
+\r
+ \r
+ //Set background color\r
+ if(c) { this.addParam('bgcolor', c); }\r
+ \r
+ //Set Quality \r
+ this.addParam('quality', 'high');\r
+ \r
+ //Add scripting access parameter\r
+ this.addParam('allowScriptAccess', 'always');\r
+ \r
+ //Pass width and height to be appended as chartWidth and chartHeight\r
+ this.addVariable('chartWidth', w);\r
+ this.addVariable('chartHeight', h);\r
+\r
+ //Whether in debug mode\r
+ //Pass DOM ID to Chart\r
+ this.addVariable('DOMId', id);\r
+ //Whether to registed with JavaScript\r
+ registerWithJS = registerWithJS ? registerWithJS : 0;\r
+ this.addVariable('registerWithJS', registerWithJS);\r
+ \r
+ //Scale Mode of chart\r
+ scaleMode = scaleMode ? scaleMode : 'noScale';\r
+ this.addVariable('scaleMode', scaleMode);\r
+ \r
+ //Application Message Language\r
+ lang = lang ? lang : 'EN';\r
+ this.addVariable('lang', lang);\r
+ \r
+ //Whether to auto detect and re-direct to Flash Player installation\r
+ this.detectFlashVersion = detectFlashVersion?detectFlashVersion:1;\r
+ this.autoInstallRedirect = autoInstallRedirect?autoInstallRedirect:1;\r
+ \r
+ //Ger Flash Player version \r
+ this.installedVer = infosoftglobal.FusionChartsUtil.getPlayerVersion();\r
+ \r
+ if (!window.opera && document.all && this.installedVer.major > 7) {\r
+ // Only add the onunload cleanup if the Flash Player version supports External Interface and we are in IE\r
+ infosoftglobal.FusionCharts.doPrepUnload = true;\r
+ }\r
+}\r
+\r
+infosoftglobal.FusionCharts.prototype = {\r
+ setAttribute: function(name, value){\r
+ this.attributes[name] = value;\r
+ },\r
+ getAttribute: function(name){\r
+ return this.attributes[name];\r
+ },\r
+ addParam: function(name, value){\r
+ this.params[name] = value;\r
+ },\r
+ getParams: function(){\r
+ return this.params;\r
+ },\r
+ addVariable: function(name, value){\r
+ this.variables[name] = value;\r
+ },\r
+ getVariable: function(name){\r
+ return this.variables[name];\r
+ },\r
+ getVariables: function(){\r
+ return this.variables;\r
+ },\r
+ getVariablePairs: function(){\r
+ var variablePairs = new Array();\r
+ var key;\r
+ var variables = this.getVariables();\r
+ for(key in variables){\r
+ variablePairs.push(key +"="+ variables[key]);\r
+ }\r
+ return variablePairs;\r
+ },\r
+ getSWFHTML: function() {\r
+ var swfNode = "";\r
+ if (navigator.plugins && navigator.mimeTypes && navigator.mimeTypes.length) { \r
+ // netscape plugin architecture \r
+ swfNode = '<embed type="application/x-shockwave-flash" src="'+ this.getAttribute('swf') +'" width="'+ this.getAttribute('width') +'" height="'+ this.getAttribute('height') +'" ';\r
+ swfNode += ' id="'+ this.getAttribute('id') +'" name="'+ this.getAttribute('id') +'" ';\r
+ var params = this.getParams();\r
+ for(var key in params){ swfNode += [key] +'="'+ params[key] +'" '; }\r
+ var pairs = this.getVariablePairs().join("&");\r
+ if (pairs.length > 0){ swfNode += 'flashvars="'+ pairs +'"'; }\r
+ swfNode += '/>';\r
+ } else { // PC IE \r
+ swfNode = '<object id="'+ this.getAttribute('id') +'" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+ this.getAttribute('width') +'" height="'+ this.getAttribute('height') +'">';\r
+ swfNode += '<param name="movie" value="'+ this.getAttribute('swf') +'" />';\r
+ var params = this.getParams();\r
+ for(var key in params) {\r
+ swfNode += '<param name="'+ key +'" value="'+ params[key] +'" />';\r
+ }\r
+ var pairs = this.getVariablePairs().join("&"); \r
+ if(pairs.length > 0) {swfNode += '<param name="flashvars" value="'+ pairs +'" />';}\r
+ swfNode += "</object>";\r
+ }\r
+ return swfNode;\r
+ },\r
+ setDataURL: function(strDataURL){\r
+ //This method sets the data URL for the chart.\r
+ //If being set initially\r
+ if (this.initialDataSet==false){\r
+ this.addVariable('dataURL',strDataURL);\r
+ //Update flag\r
+ this.initialDataSet = true;\r
+ }else{\r
+ //Else, we update the chart data using External Interface\r
+ //Get reference to chart object\r
+ var chartObj = infosoftglobal.FusionChartsUtil.getChartObject(this.getAttribute('id'));\r
+ \r
+ if (!chartObj.setDataURL)\r
+ {\r
+ __flash__addCallback(chartObj, "setDataURL");\r
+ }\r
+ \r
+ chartObj.setDataURL(strDataURL);\r
+ }\r
+ },\r
+ //This function :\r
+ //fixes the double quoted attributes to single quotes\r
+ //Encodes all quotes inside attribute values\r
+ //Encodes % to %25 and & to %26;\r
+ encodeDataXML: function(strDataXML){\r
+ \r
+ var regExpReservedCharacters=["\\$","\\+"];\r
+ var arrDQAtt=strDataXML.match(/=\s*\".*?\"/g);\r
+ if (arrDQAtt){\r
+ for(var i=0;i<arrDQAtt.length;i++){\r
+ var repStr=arrDQAtt[i].replace(/^=\s*\"|\"$/g,"");\r
+ repStr=repStr.replace(/\'/g,"%26apos;");\r
+ var strTo=strDataXML.indexOf(arrDQAtt[i]);\r
+ var repStrr="='"+repStr+"'";\r
+ var strStart=strDataXML.substring(0,strTo);\r
+ var strEnd=strDataXML.substring(strTo+arrDQAtt[i].length);\r
+ var strDataXML=strStart+repStrr+strEnd;\r
+ }\r
+ }\r
+ \r
+ strDataXML=strDataXML.replace(/\"/g,"%26quot;");\r
+ strDataXML=strDataXML.replace(/%(?![\da-f]{2}|[\da-f]{4})/ig,"%25");\r
+ strDataXML=strDataXML.replace(/\&/g,"%26");\r
+\r
+ return strDataXML;\r
+\r
+ },\r
+ setDataXML: function(strDataXML){\r
+ //If being set initially\r
+ if (this.initialDataSet==false){\r
+ //This method sets the data XML for the chart INITIALLY.\r
+ this.addVariable('dataXML',this.encodeDataXML(strDataXML));\r
+ //Update flag\r
+ this.initialDataSet = true;\r
+ }else{\r
+ //Else, we update the chart data using External Interface\r
+ //Get reference to chart object\r
+ var chartObj = infosoftglobal.FusionChartsUtil.getChartObject(this.getAttribute('id'));\r
+ chartObj.setDataXML(strDataXML);\r
+ }\r
+ },\r
+ setTransparent: function(isTransparent){\r
+ //Sets chart to transparent mode when isTransparent is true (default)\r
+ //When no parameter is passed, we assume transparent to be true.\r
+ if(typeof isTransparent=="undefined") {\r
+ isTransparent=true;\r
+ } \r
+ //Set the property\r
+ if(isTransparent)\r
+ this.addParam('WMode', 'transparent');\r
+ else\r
+ this.addParam('WMode', 'Opaque');\r
+ },\r
+ \r
+ render: function(elementId){\r
+ //First check for installed version of Flash Player - we need a minimum of 8\r
+ if((this.detectFlashVersion==1) && (this.installedVer.major < 8)){\r
+ if (this.autoInstallRedirect==1){\r
+ //If we can auto redirect to install the player?\r
+ var installationConfirm = window.confirm("You need Adobe Flash Player 8 (or above) to view the charts. It is a free and lightweight installation from Adobe.com. Please click on Ok to install the same.");\r
+ if (installationConfirm){\r
+ window.location = "http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash";\r
+ }else{\r
+ return false;\r
+ }\r
+ }else{\r
+ //Else, do not take an action. It means the developer has specified a message in the DIV (and probably a link).\r
+ //So, expect the developers to provide a course of way to their end users.\r
+ //window.alert("You need Adobe Flash Player 8 (or above) to view the charts. It is a free and lightweight installation from Adobe.com. ");\r
+ return false;\r
+ } \r
+ }else{\r
+ //Render the chart\r
+ var n = (typeof elementId == 'string') ? document.getElementById(elementId) : elementId;\r
+ n.innerHTML = this.getSWFHTML();\r
+ \r
+ //Added <FORM> compatibility\r
+ //Check if it's added in Mozilla embed array or if already exits \r
+ if(!document.embeds[this.getAttribute('id')] && !window[this.getAttribute('id')])\r
+ window[this.getAttribute('id')]=document.getElementById(this.getAttribute('id')); \r
+ //or else document.forms[formName/formIndex][chartId] \r
+ return true; \r
+ }\r
+ }\r
+}\r
+\r
+/* ---- detection functions ---- */\r
+infosoftglobal.FusionChartsUtil.getPlayerVersion = function(){\r
+ var PlayerVersion = new infosoftglobal.PlayerVersion([0,0,0]);\r
+ if(navigator.plugins && navigator.mimeTypes.length){\r
+ var x = navigator.plugins["Shockwave Flash"];\r
+ if(x && x.description) {\r
+ PlayerVersion = new infosoftglobal.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/, "").replace(/(\s+r|\s+b[0-9]+)/, ".").split("."));\r
+ }\r
+ }else if (navigator.userAgent && navigator.userAgent.indexOf("Windows CE") >= 0){ \r
+ //If Windows CE\r
+ var axo = 1;\r
+ var counter = 3;\r
+ while(axo) {\r
+ try {\r
+ counter++;\r
+ axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+ counter);\r
+ PlayerVersion = new infosoftglobal.PlayerVersion([counter,0,0]);\r
+ } catch (e) {\r
+ axo = null;\r
+ }\r
+ }\r
+ } else { \r
+ // Win IE (non mobile)\r
+ // Do minor version lookup in IE, but avoid Flash Player 6 crashing issues\r
+ try{\r
+ var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");\r
+ }catch(e){\r
+ try {\r
+ var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");\r
+ PlayerVersion = new infosoftglobal.PlayerVersion([6,0,21]);\r
+ axo.AllowScriptAccess = "always"; // error if player version < 6.0.47 (thanks to Michael Williams @ Adobe for this code)\r
+ } catch(e) {\r
+ if (PlayerVersion.major == 6) {\r
+ return PlayerVersion;\r
+ }\r
+ }\r
+ try {\r
+ axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");\r
+ } catch(e) {}\r
+ }\r
+ if (axo != null) {\r
+ PlayerVersion = new infosoftglobal.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));\r
+ }\r
+ }\r
+ return PlayerVersion;\r
+}\r
+infosoftglobal.PlayerVersion = function(arrVersion){\r
+ this.major = arrVersion[0] != null ? parseInt(arrVersion[0]) : 0;\r
+ this.minor = arrVersion[1] != null ? parseInt(arrVersion[1]) : 0;\r
+ this.rev = arrVersion[2] != null ? parseInt(arrVersion[2]) : 0;\r
+}\r
+// ------------ Fix for Out of Memory Bug in IE in FP9 ---------------//\r
+/* Fix for video streaming bug */\r
+infosoftglobal.FusionChartsUtil.cleanupSWFs = function() {\r
+ var objects = document.getElementsByTagName("OBJECT");\r
+ for (var i = objects.length - 1; i >= 0; i--) {\r
+ objects[i].style.display = 'none';\r
+ for (var x in objects[i]) {\r
+ if (typeof objects[i][x] == 'function') {\r
+ objects[i][x] = function(){};\r
+ }\r
+ }\r
+ }\r
+}\r
+// Fixes bug in fp9\r
+if (infosoftglobal.FusionCharts.doPrepUnload) {\r
+ if (!infosoftglobal.unloadSet) {\r
+ infosoftglobal.FusionChartsUtil.prepUnload = function() {\r
+ __flash_unloadHandler = function(){};\r
+ __flash_savedUnloadHandler = function(){};\r
+ window.attachEvent("onunload", infosoftglobal.FusionChartsUtil.cleanupSWFs);\r
+ }\r
+ window.attachEvent("onbeforeunload", infosoftglobal.FusionChartsUtil.prepUnload);\r
+ infosoftglobal.unloadSet = true;\r
+ }\r
+}\r
+/* Add document.getElementById if needed (mobile IE < 5) */\r
+if (!document.getElementById && document.all) { document.getElementById = function(id) { return document.all[id]; }}\r
+/* Add Array.push if needed (ie5) */\r
+if (Array.prototype.push == null) { Array.prototype.push = function(item) { this[this.length] = item; return this.length; }}\r
+\r
+/* Function to return Flash Object from ID */\r
+infosoftglobal.FusionChartsUtil.getChartObject = function(id)\r
+{\r
+ var chartRef=null;\r
+ if (navigator.appName.indexOf("Microsoft Internet")==-1) {\r
+ if (document.embeds && document.embeds[id])\r
+ chartRef = document.embeds[id]; \r
+ else\r
+ chartRef = window.document[id];\r
+ }\r
+ else {\r
+ chartRef = window[id];\r
+ }\r
+ if (!chartRef)\r
+ chartRef = document.getElementById(id);\r
+ \r
+ return chartRef;\r
+}\r
+/* Aliases for easy usage */\r
+var getChartFromId = infosoftglobal.FusionChartsUtil.getChartObject;\r
+var FusionCharts = infosoftglobal.FusionCharts;
\ No newline at end of file
--- /dev/null
+/* Block IE 5 */
+@import "null.css?\"\{";
+
+/* Import other styles */
+@import url('global.css');
+@import url('layout.css');
+
+/* Import patch for IE 6 Windows */
+/*\*/ @import "patch-iewin.css"; /**/
--- /dev/null
+@import url('base.css');
+
+/* CHANGELISTS */
+#changelist { position:relative; width:100%; }
+#changelist table { width:100%; }
+.change-list .filtered table { border-right:1px solid #ddd; }
+.change-list .filtered { min-height:400px; }
+.change-list .filtered { background:white url(../img/changelist-bg.gif) top right repeat-y !important; }
+.change-list .filtered table, .change-list .filtered .paginator, .filtered #toolbar, .filtered div.xfull { margin-right:200px !important; width:auto !important; }
+.change-list .filtered table tbody th { padding-right:1em; }
+#changelist .toplinks { border-bottom:1px solid #ccc !important; }
+#changelist .paginator { color:#666; border-top:1px solid #eee; border-bottom:1px solid #eee; background:white url(../img/nav-bg.gif) 0 180% repeat-x; overflow:hidden; }
+.change-list .filtered .paginator { border-right:1px solid #ddd; }
+
+/* CHANGELIST TABLES */
+#changelist table thead th { white-space:nowrap; }
+#changelist table tbody td { border-left: 1px solid #ddd; }
+#changelist table tfoot { color: #666; }
+
+/* TOOLBAR */
+#changelist #toolbar { padding:3px; border-bottom:1px solid #ddd; background:#e1e1e1 url(../img/nav-bg.gif) top left repeat-x; color:#666; }
+#changelist #toolbar form input { font-size:11px; padding:1px 2px; }
+#changelist #toolbar form #searchbar { padding:2px; }
+#changelist #changelist-search img { vertical-align:middle; }
+
+/* FILTER COLUMN */
+#changelist-filter { position:absolute; top:0; right:0; z-index:1000; width:200px; border-left:1px solid #ddd; background:#efefef; margin:0; }
+#changelist-filter h2 { font-size:11px; padding:2px 5px; border-bottom:1px solid #ddd; }
+#changelist-filter h3 { font-size:12px; margin-bottom:0; }
+#changelist-filter ul { padding-left:0;margin-left:10px; }
+#changelist-filter li { list-style-type:none; margin-left:0; padding-left:0; }
+#changelist-filter a { color:#999; }
+#changelist-filter a:hover { color:#036; }
+#changelist-filter li.selected { border-left:5px solid #ccc; padding-left:5px;margin-left:-10px; }
+#changelist-filter li.selected a { color:#5b80b2 !important; }
+
+/* DATE DRILLDOWN */
+.change-list ul.toplinks { display:block; background:white url(../img/nav-bg-reverse.gif) 0 -10px repeat-x; border-top:1px solid white; float:left; padding:0 !important; margin:0 !important; width:100%; }
+.change-list ul.toplinks li { float: left; width: 9em; padding:3px 6px; font-weight: bold; list-style-type:none; }
+.change-list ul.toplinks .date-back a { color:#999; }
+.change-list ul.toplinks .date-back a:hover { color:#036; }
+
+/* PAGINATOR */
+.paginator { font-size:11px; padding-top:10px; padding-bottom:10px; line-height:22px; margin:0; border-top:1px solid #ddd; }
+.paginator a:link, .paginator a:visited { padding:2px 6px; border:solid 1px #ccc; background:white; text-decoration:none; }
+.paginator a.showall { padding:0 !important; border:none !important; }
+.paginator a.showall:hover { color:#036 !important; background:transparent !important; }
+.paginator .end { border-width:2px !important; margin-right:6px; }
+.paginator .this-page { border:solid 1px #ccc; padding:2px 6px; font-weight:bold; vertical-align:top; }
+.paginator a:hover { color:white; background:#5b80b2; border-color:#036; }
+
+.ItemsDragClass{background-color:#E3F3FE;}
--- /dev/null
+@import url('base.css');
+
+/* DASHBOARD */
+.dashboard .module table th { width:100%; }
+.dashboard .module table td { white-space:nowrap; }
+.dashboard .module table td a { display:block; padding-right:.6em; }
+
+/* RECENT ACTIONS MODULE */
+.module ul.actionlist { margin-left:0; }
+ul.actionlist li { list-style-type:none; }
\ No newline at end of file
--- /dev/null
+@import url('base.css');
+@import url('widgets.css');
+
+/* FORM ROWS */
+.form-row { overflow:hidden; padding:8px 12px; font-size:11px; border-bottom:1px solid #eee; }
+.form-row img { vertical-align:middle; }
+.form-row input { vertical-align:middle; width: 300px; }
+.form-row textarea { width: 300px; height: 180px; }
+form .form-row p { padding-left:0; font-size:11px; }
+
+/* FORM GROUP TITLE */
+.form-group-title {
+ background-color:#CFCFCF;
+ padding:2px 8px 3px 16px; font-size:12px; color:#006A95; border-top:1px solid #CCC; border-bottom:1px solid #CCC; text-align:left;
+ font-weight:bold;
+}
+
+/* FORM LABELS */
+form h4 { margin:0 !important; padding:0 !important; border:none !important; }
+label { font-weight:normal !important; color:#666; font-size:12px; }
+label.inline { margin-left:20px; }
+.required label, label.required { font-weight:bold !important; color:#333 !important; }
+
+/* RADIO BUTTONS */
+form ul.radiolist li { list-style-type:none; }
+form ul.radiolist label { float:none; display:inline; }
+form ul.inline { margin-left:0; padding:0; }
+form ul.inline li { float:left; padding-right:7px; }
+
+.checkgroup_master li {list-style: none outside none}
+.checkgroup_master li label {width:auto;float:none}
+
+/* ALIGNED FIELDSETS */
+.aligned label { display:block; padding:0 1em 3px 0; float:left; width:8em; }
+.aligned label.inline { display:inline; float:none; }
+label.file_remove{display:inline; float:none; padding:0; margin:0 20px 0 0; }
+.colMS .aligned .vLargeTextField, .colMS .aligned .vXMLLargeTextField { width:350px; }
+form .aligned p, form .aligned ul { margin-left:7em; padding-left:30px; }
+form .aligned table p { margin-left:0; padding-left:0; }
+form .aligned p.help { padding-left:38px; }
+.aligned .vCheckboxLabel { float:none !important; display:inline; padding-left:4px; }
+.colM .aligned .vLargeTextField, .colM .aligned .vXMLLargeTextField { width:610px; }
+.checkbox-row p.help { margin-left:0; padding-left:0 !important; }
+
+/* WIDE FIELDSETS */
+.wide label { width:15em !important; }
+form .wide p { margin-left:15em; }
+form .wide p.help { padding-left:38px; }
+.colM fieldset.wide .vLargeTextField, .colM fieldset.wide .vXMLLargeTextField { width:450px; }
+
+/* COLLAPSED FIELDSETS */
+fieldset.collapsed * { display:none; }
+fieldset.collapsed h2, fieldset.collapsed { display:block !important; }
+fieldset.collapsed h2 { background-image:url(../img/nav-bg.gif); background-position:bottom left; color:#999; }
+fieldset.collapsed .collapse-toggle { padding:3px 5px !important; background:transparent; display:inline !important;}
+
+/* MONOSPACE TEXTAREAS */
+fieldset.monospace textarea { font-family:"Bitstream Vera Sans Mono",Monaco,"Courier New",Courier,monospace; }
+
+/* INLINE */
+.inline-related table {width: 100%;}
+
+/* INLINE REORDER */
+.ItemsDragClass{background-color:#E3F3FE;}
+
+/* SUBMIT ROW */
+.submit-row { padding:5px 7px; text-align:right; background:white url(../img/nav-bg.gif) 0 100% repeat-x; border:1px solid #ccc; margin:5px 0; }
+.submit-row input { margin:0 0 0 5px; }
+.submit-row p { margin-top:0.3em; }
+.submit-row .deletelink { background:url(../img/icon_deletelink.gif) 0 50% no-repeat; padding-left:14px; }
+
+/* CUSTOM FORM FIELDS */
+.vSelectMultipleField { vertical-align:top !important; }
+.vCheckboxField { border:none; }
+.vDateField, .vTimeField { margin-right:2px; }
+.vURLField { width:30em; }
+.vLargeTextField, .vXMLLargeTextField { width:48em; }
+.flatpages-flatpage #id_content { height:40.2em; }
+.module table .vPositiveSmallIntegerField { width:2.2em; }
+
--- /dev/null
+body { margin:0; padding:0; font-size:12px; font-family:"Lucida Grande","DejaVu Sans","Bitstream Vera Sans",Verdana,Arial,sans-serif; color:#333; background:#fff; }
+
+/* LINKS */
+a:link, a:visited { color:#006A95; text-decoration:none; }
+a:hover { color: #036; }
+a img { border:none; }
+
+/* GLOBAL DEFAULTS */
+p, ol, ul, dl { margin:.2em 0 .8em 0; }
+p { padding:0; line-height:140%; }
+
+h1,h2,h3,h4,h5 { font-weight:bold; }
+h1 { font-size:18px; color:#666; padding:0 6px 0 0; margin:0 0 .2em 0; }
+h2 { font-size:16px; margin:1em 0 .5em 0; }
+h2.subhead { font-weight:normal;margin-top:0; }
+h3 { font-size:14px; margin:.8em 0 .3em 0; color:#666; font-weight:bold; }
+h4 { font-size:12px; margin:1em 0 .8em 0; padding-bottom:3px; }
+h5 { font-size:10px; margin:1.5em 0 .5em 0; color:#666; text-transform:uppercase; letter-spacing:1px; }
+
+ul li { list-style-type:square; padding:1px 0; }
+ul.plainlist { margin-left:0 !important; }
+ul.plainlist li { list-style-type:none; }
+li ul { margin-bottom:0; }
+li, dt, dd { font-size:11px; line-height:14px; }
+dt { font-weight:bold; margin-top:4px; }
+dd { margin-left:0; }
+
+form { margin:0; padding:0; }
+fieldset { margin:0; padding:0; }
+
+blockquote { font-size:11px; color:#777; margin-left:2px; padding-left:10px; border-left:5px solid #ddd; }
+code, pre { font-family:"Bitstream Vera Sans Mono", Monaco, "Courier New", Courier, monospace; background:inherit; color:#666; font-size:11px; }
+pre.literal-block { margin:10px; background:#eee; padding:6px 8px; }
+code strong { color:#930; }
+hr { clear:both; color:#eee; background-color:#eee; height:1px; border:none; margin:0; padding:0; font-size:1px; line-height:1px; }
+
+/* TEXT STYLES & MODIFIERS */
+.small { font-size:11px; }
+.tiny { font-size:10px; }
+p.tiny { margin-top:-2px; }
+.mini { font-size:9px; }
+p.mini { margin-top:-3px; }
+.help, p.help { font-size:10px !important; color:#999; }
+p img, h1 img, h2 img, h3 img, h4 img, td img { vertical-align:middle; }
+.quiet, a.quiet:link, a.quiet:visited { color:#999 !important;font-weight:normal !important; }
+.quiet strong { font-weight:bold !important; }
+.float-right { float:right; }
+.float-left { float:left; }
+.clear { clear:both; }
+.align-left { text-align:left; }
+.align-right { text-align:right; }
+.example { margin:10px 0; padding:5px 10px; background:#efefef; }
+.nowrap { white-space:nowrap; }
+
+/* TABLES */
+table { border-collapse:collapse; border-color:#ccc; }
+td, th { font-size:11px; line-height:13px; border-bottom:1px solid #eee; vertical-align:top; padding:5px; font-family:"Lucida Grande", Verdana, Arial, sans-serif; }
+th { text-align:left; font-size:12px; font-weight:bold; }
+thead th,
+tfoot td { color:#666; padding:2px 5px; font-size:11px; background:#e1e1e1 url(../img/nav-bg.gif) top left repeat-x; border-left:1px solid #ddd; border-bottom:1px solid #ddd; }
+tfoot td { border-bottom:none; border-top:1px solid #ddd; }
+thead th:first-child,
+tfoot td:first-child { border-left:none !important; }
+thead th.optional { font-weight:normal !important; }
+fieldset table { border-right:1px solid #eee; }
+tr.row-label td { font-size:9px; padding-top:2px; padding-bottom:0; border-bottom:none; color:#666; margin-top:-1px; }
+tr.alt { background:#f6f6f6; }
+.row1 { background:#EDF3FE; }
+.row2 { background:white; }
+
+/* SORTABLE TABLES */
+thead th a:link, thead th a:visited { color:#666; display:block; }
+table thead th.sorted { background-position:bottom left !important; }
+table thead th.sorted a { padding-right:13px; }
+table thead th.ascending a { background:url(../img/arrow-down.gif) right .4em no-repeat; }
+table thead th.descending a { background:url(../img/arrow-up.gif) right .4em no-repeat; }
+
+/* ORDERABLE TABLES */
+table.orderable tbody tr td:hover { cursor:move; }
+table.orderable tbody tr td:first-child { padding-left:14px; background-image:url(../img/nav-bg-grabber.gif); background-repeat:repeat-y; }
+table.orderable-initalized .order-cell, body>tr>td.order-cell { display:none; }
+
+/* FORM DEFAULTS */
+input, textarea, select { margin:2px 0; padding:2px 3px; vertical-align:middle; font-family:"Lucida Grande", Verdana, Arial, sans-serif; font-weight:normal; font-size:11px; }
+textarea { vertical-align:top !important; }
+input[type=text], input[type=password], textarea, select, .vTextField { border:1px solid #ccc; }
+
+/* FORM BUTTONS */
+input[type=submit], input[type=button], .submit-row input { background:white url(../img/nav-bg.gif) bottom repeat-x; padding:3px; color:black; border:1px solid #bbb; border-color:#ddd #aaa #aaa #ddd; }
+input[type=submit]:active, input[type=button]:active { background-image:url(../img/nav-bg-reverse.gif); background-position:top; }
+input[type=submit].default, .submit-row input.default { border:2px solid #888; background:#DADFE3 url(../img/nav-bg.gif) bottom repeat-x; font-weight:bold; color:black; }
+input[type=submit].default:active { background-image:url(../img/nav-bg-reverse.gif); background-position:top; }
+
+/* MODULES */
+.module { border:1px solid #ccc; margin-bottom:5px; background:white; }
+.module p, .module ul, .module h3, .module h4, .module dl, .module pre { padding-left:10px; padding-right:10px; }
+.module blockquote { margin-left:12px; }
+.module ul, .module ol { margin-left:1.5em; }
+.module h3 { margin-top:.6em; }
+.module h2, .module caption { margin:0; padding:2px 5px 3px 5px; font-size:11px; text-align:left; font-weight:bold; background:#DADFE3 url(../img/default-bg.gif) top left repeat-x; color:#444; }
+.module table { border-collapse: collapse; }
+
+/* MESSAGES & ERRORS */
+ul.messagelist { padding:0 0 5px 0; margin:0; }
+ul.messagelist li { font-size:12px; display:block; padding:4px 5px 4px 25px; margin:0 0 3px 0; border-bottom:1px solid #ddd; color:#666; background:#ffc url(../img/icon_success.gif) 5px .3em no-repeat; }
+.errornote { font-size:12px !important; display:block; padding:4px 5px 4px 25px; margin:0 0 3px 0; border:1px solid red; color:red;background:#ffc url(../img/icon_error.gif) 5px .3em no-repeat; }
+ul.errorlist { margin:0 !important; padding:0 !important; }
+.errorlist li { font-size:12px !important; display:block; padding:4px 5px 4px 25px; margin:0 0 3px 0; border:1px solid #844; color:maroon; background:#fee url(../img/icon_alert.gif) 5px .3em no-repeat; }
+td ul.errorlist { margin:0 !important; padding:0 !important; }
+td ul.errorlist li { margin:0 !important; }
+.error { background:#ffc; }
+.error input, .error select { border:1px solid red; }
+div.system-message { background: #ffc; margin: 10px; padding: 6px 8px; font-size: .8em; }
+div.system-message p.system-message-title { padding:4px 5px 4px 25px; margin:0; color:red; background:#ffc url(../img/icon_error.gif) 5px .3em no-repeat; }
+.description { font-size:12px; padding:5px 0 0 12px; }
+
+/* BREADCRUMBS */
+div.breadcrumbs { background:#AFAFAF url(../img/breadcrubms-bg.gif) left repeat-x; padding:2px 8px 3px 16px; font-size:11px; color:#444; border-top:1px solid #DCDCDC; border-bottom:1px solid #8C8C8C; text-align:left; }
+
+/* ACTION ICONS */
+.addlink { padding-left:12px; background:url(../img/icon_addlink.gif) 0 .2em no-repeat; }
+.changelink { padding-left:12px; background:url(../img/icon_changelink.gif) 0 .2em no-repeat; }
+.deletelink { padding-left:12px; background:url(../img/icon_deletelink.gif) 0 .25em no-repeat; }
+a.deletelink:link, a.deletelink:visited { color:#CC3434; }
+a.deletelink:hover { color:#993333; }
+
+/* OBJECT TOOLS */
+.object-tools { font-size:10px; font-weight:bold; font-family:Arial,Helvetica,sans-serif; padding-left:0; float:right; position:relative; margin-top:-2.4em; margin-bottom:-2em; }
+.form-row .object-tools { margin-top:5px; margin-bottom:5px; float:none; height:2em; padding-left:3.5em; }
+.object-tools li { display:block; float:left; background:url(../img/tool-left.gif) 0 0 no-repeat; padding:0 0 0 8px; margin-left:2px; height:16px; }
+.object-tools li:hover { background:url(../img/tool-left_over.gif) 0 0 no-repeat; }
+.object-tools a:link, .object-tools a:visited { display:block; float:left; color:white; padding:.1em 14px .1em 8px; height:14px; background:#999 url(../img/tool-right.gif) 100% 0 no-repeat; }
+.object-tools a:hover, .object-tools li:hover a { background:#5b80b2 url(../img/tool-right_over.gif) 100% 0 no-repeat; }
+.object-tools a.viewsitelink, .object-tools a.golink { background:#999 url(../img/tooltag-arrowright.gif) top right no-repeat; padding-right:28px; }
+.object-tools a.viewsitelink:hover, .object-tools a.golink:hover { background:#5b80b2 url(../img/tooltag-arrowright_over.gif) top right no-repeat; }
+.object-tools a.addlink { background:#999 url(../img/tooltag-add.gif) top right no-repeat; padding-right:28px; }
+.object-tools a.addlink:hover { background:#5b80b2 url(../img/tooltag-add_over.gif) top right no-repeat; }
+
+/* OBJECT HISTORY */
+table#change-history { width:100%; }
+table#change-history tbody th { width:16em; }
--- /dev/null
+/*
+ * jQuery UI CSS Framework 1.8.13
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.ui-helper-hidden { display: none; }
+.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+.ui-helper-clearfix { display: inline-block; }
+/* required comment for clearfix to work in Opera \*/
+* html .ui-helper-clearfix { height:1%; }
+.ui-helper-clearfix { display:block; }
+/* end clearfix */
+.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*
+ * jQuery UI CSS Framework 1.8.13
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana,Arial,sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
+ */
+
+
+/* Component containers
+----------------------------------*/
+.ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; }
+.ui-widget .ui-widget { font-size: 1em; }
+.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; }
+.ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(../img-ui/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; }
+.ui-widget-content a { color: #222222; }
+.ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(../img-ui/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; }
+.ui-widget-header a { color: #222222; }
+
+/* Interaction states
+----------------------------------*/
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(../img-ui/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #dadada url(../img-ui/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
+.ui-state-hover a, .ui-state-hover a:hover { color: #212121; text-decoration: none; }
+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(../img-ui/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; }
+.ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url(../img-ui/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; }
+.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
+.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(../img-ui/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }
+.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }
+.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
+.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { width: 16px; height: 16px; background-image: url(../img-ui/ui-icons_222222_256x240.png); }
+.ui-widget-content .ui-icon {background-image: url(../img-ui/ui-icons_222222_256x240.png); }
+.ui-widget-header .ui-icon {background-image: url(../img-ui/ui-icons_222222_256x240.png); }
+.ui-state-default .ui-icon { background-image: url(../img-ui/ui-icons_888888_256x240.png); }
+.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(../img-ui/ui-icons_454545_256x240.png); }
+.ui-state-active .ui-icon {background-image: url(../img-ui/ui-icons_454545_256x240.png); }
+.ui-state-highlight .ui-icon {background-image: url(../img-ui/ui-icons_2e83ff_256x240.png); }
+.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(../img-ui/ui-icons_cd0a0a_256x240.png); }
+
+/* positioning */
+.ui-icon-carat-1-n { background-position: 0 0; }
+.ui-icon-carat-1-ne { background-position: -16px 0; }
+.ui-icon-carat-1-e { background-position: -32px 0; }
+.ui-icon-carat-1-se { background-position: -48px 0; }
+.ui-icon-carat-1-s { background-position: -64px 0; }
+.ui-icon-carat-1-sw { background-position: -80px 0; }
+.ui-icon-carat-1-w { background-position: -96px 0; }
+.ui-icon-carat-1-nw { background-position: -112px 0; }
+.ui-icon-carat-2-n-s { background-position: -128px 0; }
+.ui-icon-carat-2-e-w { background-position: -144px 0; }
+.ui-icon-triangle-1-n { background-position: 0 -16px; }
+.ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.ui-icon-triangle-1-e { background-position: -32px -16px; }
+.ui-icon-triangle-1-se { background-position: -48px -16px; }
+.ui-icon-triangle-1-s { background-position: -64px -16px; }
+.ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.ui-icon-triangle-1-w { background-position: -96px -16px; }
+.ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.ui-icon-arrow-1-n { background-position: 0 -32px; }
+.ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.ui-icon-arrow-1-e { background-position: -32px -32px; }
+.ui-icon-arrow-1-se { background-position: -48px -32px; }
+.ui-icon-arrow-1-s { background-position: -64px -32px; }
+.ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.ui-icon-arrow-1-w { background-position: -96px -32px; }
+.ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.ui-icon-arrow-4 { background-position: 0 -80px; }
+.ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.ui-icon-extlink { background-position: -32px -80px; }
+.ui-icon-newwin { background-position: -48px -80px; }
+.ui-icon-refresh { background-position: -64px -80px; }
+.ui-icon-shuffle { background-position: -80px -80px; }
+.ui-icon-transfer-e-w { background-position: -96px -80px; }
+.ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.ui-icon-folder-collapsed { background-position: 0 -96px; }
+.ui-icon-folder-open { background-position: -16px -96px; }
+.ui-icon-document { background-position: -32px -96px; }
+.ui-icon-document-b { background-position: -48px -96px; }
+.ui-icon-note { background-position: -64px -96px; }
+.ui-icon-mail-closed { background-position: -80px -96px; }
+.ui-icon-mail-open { background-position: -96px -96px; }
+.ui-icon-suitcase { background-position: -112px -96px; }
+.ui-icon-comment { background-position: -128px -96px; }
+.ui-icon-person { background-position: -144px -96px; }
+.ui-icon-print { background-position: -160px -96px; }
+.ui-icon-trash { background-position: -176px -96px; }
+.ui-icon-locked { background-position: -192px -96px; }
+.ui-icon-unlocked { background-position: -208px -96px; }
+.ui-icon-bookmark { background-position: -224px -96px; }
+.ui-icon-tag { background-position: -240px -96px; }
+.ui-icon-home { background-position: 0 -112px; }
+.ui-icon-flag { background-position: -16px -112px; }
+.ui-icon-calendar { background-position: -32px -112px; }
+.ui-icon-cart { background-position: -48px -112px; }
+.ui-icon-pencil { background-position: -64px -112px; }
+.ui-icon-clock { background-position: -80px -112px; }
+.ui-icon-disk { background-position: -96px -112px; }
+.ui-icon-calculator { background-position: -112px -112px; }
+.ui-icon-zoomin { background-position: -128px -112px; }
+.ui-icon-zoomout { background-position: -144px -112px; }
+.ui-icon-search { background-position: -160px -112px; }
+.ui-icon-wrench { background-position: -176px -112px; }
+.ui-icon-gear { background-position: -192px -112px; }
+.ui-icon-heart { background-position: -208px -112px; }
+.ui-icon-star { background-position: -224px -112px; }
+.ui-icon-link { background-position: -240px -112px; }
+.ui-icon-cancel { background-position: 0 -128px; }
+.ui-icon-plus { background-position: -16px -128px; }
+.ui-icon-plusthick { background-position: -32px -128px; }
+.ui-icon-minus { background-position: -48px -128px; }
+.ui-icon-minusthick { background-position: -64px -128px; }
+.ui-icon-close { background-position: -80px -128px; }
+.ui-icon-closethick { background-position: -96px -128px; }
+.ui-icon-key { background-position: -112px -128px; }
+.ui-icon-lightbulb { background-position: -128px -128px; }
+.ui-icon-scissors { background-position: -144px -128px; }
+.ui-icon-clipboard { background-position: -160px -128px; }
+.ui-icon-copy { background-position: -176px -128px; }
+.ui-icon-contact { background-position: -192px -128px; }
+.ui-icon-image { background-position: -208px -128px; }
+.ui-icon-video { background-position: -224px -128px; }
+.ui-icon-script { background-position: -240px -128px; }
+.ui-icon-alert { background-position: 0 -144px; }
+.ui-icon-info { background-position: -16px -144px; }
+.ui-icon-notice { background-position: -32px -144px; }
+.ui-icon-help { background-position: -48px -144px; }
+.ui-icon-check { background-position: -64px -144px; }
+.ui-icon-bullet { background-position: -80px -144px; }
+.ui-icon-radio-off { background-position: -96px -144px; }
+.ui-icon-radio-on { background-position: -112px -144px; }
+.ui-icon-pin-w { background-position: -128px -144px; }
+.ui-icon-pin-s { background-position: -144px -144px; }
+.ui-icon-play { background-position: 0 -160px; }
+.ui-icon-pause { background-position: -16px -160px; }
+.ui-icon-seek-next { background-position: -32px -160px; }
+.ui-icon-seek-prev { background-position: -48px -160px; }
+.ui-icon-seek-end { background-position: -64px -160px; }
+.ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.ui-icon-seek-first { background-position: -80px -160px; }
+.ui-icon-stop { background-position: -96px -160px; }
+.ui-icon-eject { background-position: -112px -160px; }
+.ui-icon-volume-off { background-position: -128px -160px; }
+.ui-icon-volume-on { background-position: -144px -160px; }
+.ui-icon-power { background-position: 0 -176px; }
+.ui-icon-signal-diag { background-position: -16px -176px; }
+.ui-icon-signal { background-position: -32px -176px; }
+.ui-icon-battery-0 { background-position: -48px -176px; }
+.ui-icon-battery-1 { background-position: -64px -176px; }
+.ui-icon-battery-2 { background-position: -80px -176px; }
+.ui-icon-battery-3 { background-position: -96px -176px; }
+.ui-icon-circle-plus { background-position: 0 -192px; }
+.ui-icon-circle-minus { background-position: -16px -192px; }
+.ui-icon-circle-close { background-position: -32px -192px; }
+.ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.ui-icon-circle-zoomin { background-position: -176px -192px; }
+.ui-icon-circle-zoomout { background-position: -192px -192px; }
+.ui-icon-circle-check { background-position: -208px -192px; }
+.ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.ui-icon-circlesmall-close { background-position: -32px -208px; }
+.ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.ui-icon-squaresmall-close { background-position: -80px -208px; }
+.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; }
+.ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; }
+.ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
+.ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
+.ui-corner-top { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; }
+.ui-corner-bottom { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
+.ui-corner-right { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
+.ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
+.ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; }
+
+/* Overlays */
+.ui-widget-overlay { background: #aaaaaa url(../img-ui/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
+.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(../img-ui/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/*
+ * jQuery UI Datepicker 1.8.13
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Datepicker#theming
+ */
+.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
+.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
+.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
+.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
+.ui-datepicker .ui-datepicker-prev { left:2px; }
+.ui-datepicker .ui-datepicker-next { right:2px; }
+.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
+.ui-datepicker .ui-datepicker-next-hover { right:1px; }
+.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
+.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
+.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
+.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
+.ui-datepicker select.ui-datepicker-month,
+.ui-datepicker select.ui-datepicker-year { width: 49%;}
+.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
+.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
+.ui-datepicker td { border: 0; padding: 1px; }
+.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
+.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
+.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
+.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
+
+/* with multiple calendars */
+.ui-datepicker.ui-datepicker-multi { width:auto; }
+.ui-datepicker-multi .ui-datepicker-group { float:left; }
+.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
+.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
+.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
+.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
+.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
+.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
+.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
+.ui-datepicker-row-break { clear:both; width:100%; }
+
+/* RTL support */
+.ui-datepicker-rtl { direction: rtl; }
+.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
+.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
+.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
+.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
+.ui-datepicker-rtl .ui-datepicker-group { float:right; }
+.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+
+/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
+.ui-datepicker-cover {
+ display: none; /*sorry for IE5*/
+ display/**/: block; /*sorry for IE5*/
+ position: absolute; /*must have*/
+ z-index: -1; /*must have*/
+ filter: mask(); /*must have*/
+ top: -4px; /*must have*/
+ left: -4px; /*must have*/
+ width: 200px; /*must have*/
+ height: 200px; /*must have*/
+}
--- /dev/null
+/* PAGE STRUCTURE */
+#container { position:relative; width:100%; min-width:760px; padding:0; }
+#content { margin:10px 15px; }
+#header { width:100%; }
+#content-main { float:left; width:100%; }
+#content-related { float:right; width:18em; position:relative; margin-right:-19em; }
+#footer { clear:both; padding:10px; }
+
+/* COLUMN TYPES */
+.colMS { margin-right:20em !important; }
+.colSM { margin-left:20em !important; }
+.colSM #content-related { float:left; margin-right:0; margin-left:-19em; }
+.colSM #content-main { float:right; }
+.popup .colM { width:95%; }
+.subcol { float:left; width:46%; margin-right:15px; }
+.dashboard #content { width:500px; }
+
+/* HEADER */
+#header { background:#BDBDBD url(../img/topbg.gif) left repeat-x; color:#565656; overflow:hidden; border-bottom:1px solid #8B8B8B;}
+#header a:link, #header a:visited { color:#006A95; }
+#header a:hover { text-decoration:underline; }
+#branding h1 { padding:0 16px; font-size:18px; margin:8px 0; font-weight:normal; }
+#branding h2 { padding:0 10px; font-size:14px; margin:-8px 0 8px 0; font-weight:normal; color:#ffc; }
+#user-tools { position:absolute; top:0; right:0; padding:8px 10px; font-size:11px; text-align:right; }
+#user-tools span{ font-size:9px; color:#ADA9AD;}
+
+/* SIDEBAR */
+#content-related h3 { font-size:12px; color:#666; margin-bottom:3px; }
+#content-related h4 { font-size:11px; }
+#content-related .module h2 { background:#eee url(../img/nav-bg.gif) bottom left repeat-x; color:#666; }
\ No newline at end of file
--- /dev/null
+@import url('base.css');
+@import url('layout.css');
+
+/* LOGIN FORM */
+body.login { background:#eee; }
+.login #container { background:white; border:1px solid #ccc; width:28em; min-width:300px; margin-left:auto; margin-right:auto; margin-top:100px; }
+.login #content-main { width:100%; }
+.login form { margin-top:1em; }
+.login .form-row { padding:4px 0; float:left; width:100%; }
+.login .form-row label { float:left; width:9em; padding-right:0.5em; line-height:2em; text-align:right; font-size:1em; color:#333; }
+.login .form-row #id_username, .login .form-row #id_password { width:14em; }
+.login span.help { font-size:10px; display:block; }
+.login .submit-row { clear:both; padding:1em 0 0 9.4em; }
\ No newline at end of file
--- /dev/null
+/* Nothing to see here. Dummy file to feed to the high pass filter which hides CSS from IE5/win. Details: http://tantek.com/CSS/Examples/highpass.html */
\ No newline at end of file
--- /dev/null
+* html #container { position:static; } /* keep header from flowing off the page */
+* html .colMS #content-related { margin-right:0; margin-left:10px; position:static; } /* put the right sidebars back on the page */
+* html .colSM #content-related { margin-right:10px; margin-left:-115px; position:static; } /* put the left sidebars back on the page */
+* html .form-row { height:1%; }
+* html .dashboard #content { width:768px; } /* proper fixed width for dashboard in IE6 */
+* html .dashboard #content-main { width:535px; } /* proper fixed width for dashboard in IE6 */
+* html #changelist-filter ul { margin-right:-10px; } /* fix right margin for changelist filters in IE6 */
+* html .change-list .filtered { height:400px; } /* IE ignores min-height, but treats height as if it were min-height */
\ No newline at end of file
--- /dev/null
+#content {margin:0;}
+#changelist-filter{display:none;}
+#header{display:none;}
+#footer{display:none;}
+.breadcrumbs{display:none;}
+.paginator{display:none;}
+.object-tools{display:none;}
\ No newline at end of file
--- /dev/null
+body { direction: rtl; }
+
+/* login styles */
+
+.login .form-row { float:right; }
+.login .form-row label { float:right; padding-left:0.5em; padding-right:0; text-align:left;}
+.login .submit-row { clear:both; padding:1em 9.4em 0 0; }
+
+
+/* global styles */
+th { text-align: right; }
+.module h2, .module caption { text-align: right; }
+.addlink, .changelink { padding-left:0px; padding-right:12px; background-position:100% 0.2em; }
+.deletelink { padding-left:0px; padding-right:12px; background-position:100% 0.25em; }
+.object-tools { float:left; }
+
+
+/* layout styles */
+#user-tools { right:auto; left:0; text-align:left; }
+div.breadcrumbs { text-align:right; }
+#content-main { float:right;}
+#content-related { float:left; margin-left:-19em; margin-right:auto;}
+.colMS { margin-left:20em !important; margin-right:10px !important;}
+
+/* dashboard styles */
+.dashboard .module table td a { padding-left:.6em; padding-right:12px; }
+
+/* changelists styles */
+.change-list .filtered { background:white url(../img/changelist-bg_rtl.gif) top left repeat-y !important; }
+.change-list .filtered table { border-left:1px solid #ddd; border-right:0px none; }
+#changelist-filter { right:auto; left:0; border-left:0px none; border-right:1px solid #ddd;}
+.change-list .filtered table, .change-list .filtered .paginator, .filtered #toolbar, .filtered div.xfull { margin-right:0px !important; margin-left:160px !important; }
+#changelist-filter li.selected { border-left:0px none; padding-left:0px; margin-left:0; border-right:5px solid #ccc; padding-right:5px;margin-right:-10px; }
+
+/* fomrs styles */
+.aligned label { padding:0 0 3px 1em; float:right; }
+.submit-row { text-align: left }
+.vDateField, .vTimeField { margin-left:2px; }
+
+/* widget styles */
+.calendarnav-previous { top:0; left:auto; right:0; }
+.calendarnav-next { top:0; right:auto; left:0;}
+.calendar caption, .calendarbox h2 { text-align:center; }
+
+.selector { float: right;}
+.selector .selector-filter { text-align: right;}
--- /dev/null
+/* SELECTOR (FILTER INTERFACE) */
+.selector { width:580px; float:left; }
+.selector select { width:270px; height:17.2em; }
+.selector-available, .selector-chosen { float:left; width:270px; text-align:center; margin-bottom:5px; }
+.selector-available h2, .selector-chosen h2 { border:1px solid #ccc; }
+.selector .selector-available h2 { background:white url(../img/nav-bg.gif) bottom left repeat-x; color:#666; }
+.selector .selector-filter { background:white; border:1px solid #ccc; border-width:0 1px; padding:3px; color:#999; font-size:10px; margin:0; text-align:left; }
+.selector .selector-chosen .selector-filter { padding:4px 5px; }
+.selector .selector-available input { width:230px; }
+.selector ul.selector-chooser { float:left; width:22px; height:50px; background:url(../img/chooser-bg.gif) top center no-repeat; margin:8em 3px 0 3px; padding:0; }
+.selector-chooser li { margin:0; padding:3px; list-style-type:none; }
+.selector select { margin-bottom:5px; margin-top:0; }
+.selector-add, .selector-remove { width:16px; height:16px; display:block; text-indent:-3000px; }
+.selector-add { background:url(../img/selector-add.gif) top center no-repeat; margin-bottom:2px; }
+.selector-remove { background:url(../img/selector-remove.gif) top center no-repeat; }
+a.selector-chooseall, a.selector-clearall { display:block; width:6em; text-align:left; margin-left:auto; margin-right:auto; font-weight:bold; color:#666; padding:3px 0 3px 18px; }
+a.selector-chooseall:hover, a.selector-clearall:hover { color:#036; }
+a.selector-chooseall { width:7em; background:url(../img/selector-addall.gif) left center no-repeat; }
+a.selector-clearall { background:url(../img/selector-removeall.gif) left center no-repeat; }
+
+/* STACKED SELECTORS */
+.stacked { float:left; width:500px; }
+.stacked select { width:480px; height:10.1em; }
+.stacked .selector-available, .stacked .selector-chosen { width:480px; }
+.stacked .selector-available { margin-bottom:0; }
+.stacked .selector-available input { width:442px; }
+.stacked ul.selector-chooser { height:22px; width:50px; margin:0 0 3px 40%; background:url(../img/chooser_stacked-bg.gif) top center no-repeat; }
+.stacked .selector-chooser li { float:left; padding:3px 3px 3px 5px; }
+.stacked .selector-chooseall, .stacked .selector-clearall { display:none; }
+.stacked .selector-add { background-image:url(../img/selector_stacked-add.gif); }
+.stacked .selector-remove { background-image:url(../img/selector_stacked-remove.gif); }
+
+/* DATE AND TIME */
+p.datetime { line-height:20px; margin:0; padding:0; color:#666; font-size:11px; font-weight:bold; }
+.datetime span { font-size:11px; color:#ccc; font-weight:normal; white-space:nowrap; }
+.vDateField { margin-left:4px; }
+table p.datetime { font-size:10px; margin-left:0; padding-left:0; }
+
+/* FILE UPLOADS */
+p.file-upload { line-height:20px; margin:0; padding:0; color:#666; font-size:11px; font-weight:bold; }
+.file-upload a { font-weight:normal; }
+.file-upload .deletelink { margin-left:5px; }
+
+/* CALENDARS & CLOCKS */
+.calendarbox, .clockbox { margin:5px auto; font-size:11px; width:16em; text-align:center; background:white; position:relative; }
+.clockbox { width:auto; }
+.calendar { margin:0; padding: 0; }
+.calendar table { margin:0; padding:0; border-collapse:collapse; background:white; width:99%; }
+.calendar caption, .calendarbox h2 { margin: 0; font-size:11px; text-align:center; border-top:none; }
+.calendar th { font-size:10px; color:#666; padding:2px 3px; text-align:center; background:#e1e1e1 url(../img/nav-bg.gif) 0 50% repeat-x; border-bottom:1px solid #ddd; }
+.calendar td { font-size:11px; text-align: center; padding: 0; border-top:1px solid #eee; border-bottom:none; }
+.calendar td.selected a { background: #C9DBED; }
+.calendar td.nonday { background:#efefef; }
+.calendar td.today a { background:#ffc; }
+.calendar td a, .timelist a { display: block; font-weight:bold; padding:4px; text-decoration: none; color:#444; }
+.calendar td a:hover, .timelist a:hover { background: #5b80b2; color:white; }
+.calendar td a:active, .timelist a:active { background: #036; color:white; }
+.calendarnav { font-size:10px; text-align: center; color:#ccc; margin:0; padding:1px 3px; }
+.calendarnav a:link, #calendarnav a:visited, #calendarnav a:hover { color: #999; }
+.calendar-shortcuts { background:white; font-size:10px; line-height:11px; border-top:1px solid #eee; padding:3px 0 4px; color:#ccc; }
+.calendarbox .calendarnav-previous, .calendarbox .calendarnav-next { display:block; position:absolute; font-weight:bold; font-size:12px; background:#C9DBED url(../img/default-bg.gif) bottom left repeat-x; padding:1px 4px 2px 4px; color:white; }
+.calendarnav-previous:hover, .calendarnav-next:hover { background:#036; }
+.calendarnav-previous { top:0; left:0; }
+.calendarnav-next { top:0; right:0; }
+.calendar-cancel { margin:0 !important; padding:0; font-size:10px; background:#e1e1e1 url(../img/nav-bg.gif) 0 50% repeat-x; border-top:1px solid #ddd; }
+.calendar-cancel a { padding:2px; color:#999; }
+ul.timelist, .timelist li { list-style-type:none; margin:0; padding:0; }
+.timelist a { padding:2px; }
+
+/* INLINE ORDERER */
+ul.orderer { position:relative; padding:0 !important; margin:0 !important; list-style-type:none; }
+ul.orderer li { list-style-type:none; display:block; padding:0; margin:0; border:1px solid #bbb; border-width:0 1px 1px 0; white-space:nowrap; overflow:hidden; background:#e2e2e2 url(../img/nav-bg-grabber.gif) repeat-y; }
+ul.orderer li:hover { cursor:move; background-color:#ddd; }
+ul.orderer li a.selector { margin-left:12px; overflow:hidden; width:83%; font-size:10px !important; padding:0.6em 0; }
+ul.orderer li a:link, ul.orderer li a:visited { color:#333; }
+ul.orderer li .inline-deletelink { position:absolute; right:4px; margin-top:0.6em; }
+ul.orderer li.selected { background-color:#f8f8f8; border-right-color:#f8f8f8; }
+ul.orderer li.deleted { background:#bbb url(../img/deleted-overlay.gif); }
+ul.orderer li.deleted a:link, ul.orderer li.deleted a:visited { color:#888; }
+ul.orderer li.deleted .inline-deletelink { background-image:url(../img/inline-restore.png); }
+ul.orderer li.deleted:hover, ul.orderer li.deleted a.selector:hover { cursor:default; }
+
+/* EDIT INLINE */
+.inline-deletelink { display:block; text-indent:-9999px; background:transparent url(../img/inline-delete.png) no-repeat; width:15px; height:15px; margin:0.4em 0; border: 0px none; }
+.inline-deletelink:hover { background-position:-15px 0; cursor:pointer; }
+.editinline button.addlink { border: 0px none; color: #5b80b2; font-size: 100%; cursor: pointer; }
+.editinline button.addlink:hover { color: #036; cursor: pointer; }
+.editinline table .help { text-align:right; float:right; padding-left:2em; }
+.editinline tfoot .addlink { white-space:nowrap; }
+.editinline table thead th:last-child { border-left:none; }
+.editinline tr.deleted { background:#ddd url(../img/deleted-overlay.gif); }
+.editinline tr.deleted .inline-deletelink { background-image:url(../img/inline-restore.png); }
+.editinline tr.deleted td:hover { cursor:default; }
+.editinline tr.deleted td:first-child { background-image:none !important; }
+
+/* EDIT INLINE - STACKED */
+.editinline-stacked { min-width:758px; }
+.editinline-stacked .inline-object { margin-left:210px; background:white; }
+.editinline-stacked .inline-source { float:left; width:200px; background:#f8f8f8; }
+.editinline-stacked .inline-splitter { float:left; width:9px; background:#f8f8f8 url(../img/inline-splitter-bg.gif) 50% 50% no-repeat; border-right:1px solid #ccc; }
+.editinline-stacked .controls { clear:both; background:#e1e1e1 url(../img/nav-bg.gif) top left repeat-x; padding:3px 4px; font-size:11px; border-top:1px solid #ddd; }
\ No newline at end of file
--- /dev/null
+$(function(){
+ $('.dateinput').datepicker({dateFormat: 'yy-mm-dd'});
+
+ $('.checkgroup').closest('ul').each(function(){
+ var master = $(this),
+ tools = $('<ul class="object-tools"><li><a href="#" class="checkall">Check All</a></li><li><a href="#">Uncheck All</a></li></ul>');
+ master.before(tools).addClass('checkgroup_master');
+ tools.find('a').click(function(){
+ var check = $(this).hasClass('checkall');
+ master.find('input').attr('checked', check);
+ return false;
+ });
+ });
+});
+
--- /dev/null
+/*!
+ * jQuery UI 1.8.13
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI
+ */
+(function(c,j){function k(a,b){var d=a.nodeName.toLowerCase();if("area"===d){b=a.parentNode;d=b.name;if(!a.href||!d||b.nodeName.toLowerCase()!=="map")return false;a=c("img[usemap=#"+d+"]")[0];return!!a&&l(a)}return(/input|select|textarea|button|object/.test(d)?!a.disabled:"a"==d?a.href||b:b)&&l(a)}function l(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.13",
+keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});c.fn.extend({_focus:c.fn.focus,focus:function(a,b){return typeof a==="number"?this.each(function(){var d=this;setTimeout(function(){c(d).focus();
+b&&b.call(d)},a)}):this._focus.apply(this,arguments)},scrollParent:function(){var a;a=c.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(c.curCSS(this,"position",1))&&/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,
+"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!a.length?c(document):a},zIndex:function(a){if(a!==j)return this.css("zIndex",a);if(this.length){a=c(this[0]);for(var b;a.length&&a[0]!==document;){b=a.css("position");if(b==="absolute"||b==="relative"||b==="fixed"){b=parseInt(a.css("zIndex"),10);if(!isNaN(b)&&b!==0)return b}a=a.parent()}}return 0},disableSelection:function(){return this.bind((c.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",
+function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});c.each(["Width","Height"],function(a,b){function d(f,g,m,n){c.each(e,function(){g-=parseFloat(c.curCSS(f,"padding"+this,true))||0;if(m)g-=parseFloat(c.curCSS(f,"border"+this+"Width",true))||0;if(n)g-=parseFloat(c.curCSS(f,"margin"+this,true))||0});return g}var e=b==="Width"?["Left","Right"]:["Top","Bottom"],h=b.toLowerCase(),i={innerWidth:c.fn.innerWidth,innerHeight:c.fn.innerHeight,outerWidth:c.fn.outerWidth,
+outerHeight:c.fn.outerHeight};c.fn["inner"+b]=function(f){if(f===j)return i["inner"+b].call(this);return this.each(function(){c(this).css(h,d(this,f)+"px")})};c.fn["outer"+b]=function(f,g){if(typeof f!=="number")return i["outer"+b].call(this,f);return this.each(function(){c(this).css(h,d(this,f,true,g)+"px")})}});c.extend(c.expr[":"],{data:function(a,b,d){return!!c.data(a,d[3])},focusable:function(a){return k(a,!isNaN(c.attr(a,"tabindex")))},tabbable:function(a){var b=c.attr(a,"tabindex"),d=isNaN(b);
+return(d||b>=0)&&k(a,!d)}});c(function(){var a=document.body,b=a.appendChild(b=document.createElement("div"));c.extend(b.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});c.support.minHeight=b.offsetHeight===100;c.support.selectstart="onselectstart"in b;a.removeChild(b).style.display="none"});c.extend(c.ui,{plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=
+0;e<b.length;e++)a.options[b[e][0]]&&b[e][1].apply(a.element,d)}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(a,b){if(c(a).css("overflow")==="hidden")return false;b=b&&b==="left"?"scrollLeft":"scrollTop";var d=false;if(a[b]>0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a<b+d},isOver:function(a,b,d,e,h,i){return c.ui.isOverAxis(a,d,h)&&c.ui.isOverAxis(b,e,i)}})}})(jQuery);
+;/*
+ * jQuery UI Datepicker 1.8.13
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Datepicker
+ *
+ * Depends:
+ * jquery.ui.core.js
+ */
+(function(d,B){function M(){this.debug=false;this._curInst=null;this._keyEvent=false;this._disabledInputs=[];this._inDialog=this._datepickerShowing=false;this._mainDivId="ui-datepicker-div";this._inlineClass="ui-datepicker-inline";this._appendClass="ui-datepicker-append";this._triggerClass="ui-datepicker-trigger";this._dialogClass="ui-datepicker-dialog";this._disableClass="ui-datepicker-disabled";this._unselectableClass="ui-datepicker-unselectable";this._currentClass="ui-datepicker-current-day";this._dayOverClass=
+"ui-datepicker-days-cell-over";this.regional=[];this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su",
+"Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:false,showMonthAfterYear:false,yearSuffix:""};this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:false,hideIfNoPrevNext:false,navigationAsDateFormat:false,gotoCurrent:false,changeMonth:false,changeYear:false,yearRange:"c-10:c+10",showOtherMonths:false,selectOtherMonths:false,showWeek:false,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",
+minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:true,showButtonPanel:false,autoSize:false};d.extend(this._defaults,this.regional[""]);this.dpDiv=N(d('<div id="'+this._mainDivId+'" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}function N(a){return a.delegate("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a",
+"mouseout",function(){d(this).removeClass("ui-state-hover");this.className.indexOf("ui-datepicker-prev")!=-1&&d(this).removeClass("ui-datepicker-prev-hover");this.className.indexOf("ui-datepicker-next")!=-1&&d(this).removeClass("ui-datepicker-next-hover")}).delegate("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a","mouseover",function(){if(!d.datepicker._isDisabledDatepicker(J.inline?a.parent()[0]:J.input[0])){d(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");
+d(this).addClass("ui-state-hover");this.className.indexOf("ui-datepicker-prev")!=-1&&d(this).addClass("ui-datepicker-prev-hover");this.className.indexOf("ui-datepicker-next")!=-1&&d(this).addClass("ui-datepicker-next-hover")}})}function H(a,b){d.extend(a,b);for(var c in b)if(b[c]==null||b[c]==B)a[c]=b[c];return a}d.extend(d.ui,{datepicker:{version:"1.8.13"}});var z=(new Date).getTime(),J;d.extend(M.prototype,{markerClassName:"hasDatepicker",log:function(){this.debug&&console.log.apply("",arguments)},
+_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(a){H(this._defaults,a||{});return this},_attachDatepicker:function(a,b){var c=null;for(var e in this._defaults){var f=a.getAttribute("date:"+e);if(f){c=c||{};try{c[e]=eval(f)}catch(h){c[e]=f}}}e=a.nodeName.toLowerCase();f=e=="div"||e=="span";if(!a.id){this.uuid+=1;a.id="dp"+this.uuid}var i=this._newInst(d(a),f);i.settings=d.extend({},b||{},c||{});if(e=="input")this._connectDatepicker(a,i);else f&&this._inlineDatepicker(a,i)},_newInst:function(a,
+b){return{id:a[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1"),input:a,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:b,dpDiv:!b?this.dpDiv:N(d('<div class="'+this._inlineClass+' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}},_connectDatepicker:function(a,b){var c=d(a);b.append=d([]);b.trigger=d([]);if(!c.hasClass(this.markerClassName)){this._attachments(c,b);c.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",
+function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});this._autoSize(b);d.data(a,"datepicker",b)}},_attachments:function(a,b){var c=this._get(b,"appendText"),e=this._get(b,"isRTL");b.append&&b.append.remove();if(c){b.append=d('<span class="'+this._appendClass+'">'+c+"</span>");a[e?"before":"after"](b.append)}a.unbind("focus",this._showDatepicker);b.trigger&&b.trigger.remove();c=this._get(b,"showOn");if(c=="focus"||c=="both")a.focus(this._showDatepicker);
+if(c=="button"||c=="both"){c=this._get(b,"buttonText");var f=this._get(b,"buttonImage");b.trigger=d(this._get(b,"buttonImageOnly")?d("<img/>").addClass(this._triggerClass).attr({src:f,alt:c,title:c}):d('<button type="button"></button>').addClass(this._triggerClass).html(f==""?c:d("<img/>").attr({src:f,alt:c,title:c})));a[e?"before":"after"](b.trigger);b.trigger.click(function(){d.datepicker._datepickerShowing&&d.datepicker._lastInput==a[0]?d.datepicker._hideDatepicker():d.datepicker._showDatepicker(a[0]);
+return false})}},_autoSize:function(a){if(this._get(a,"autoSize")&&!a.inline){var b=new Date(2009,11,20),c=this._get(a,"dateFormat");if(c.match(/[DM]/)){var e=function(f){for(var h=0,i=0,g=0;g<f.length;g++)if(f[g].length>h){h=f[g].length;i=g}return i};b.setMonth(e(this._get(a,c.match(/MM/)?"monthNames":"monthNamesShort")));b.setDate(e(this._get(a,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-b.getDay())}a.input.attr("size",this._formatDate(a,b).length)}},_inlineDatepicker:function(a,b){var c=d(a);
+if(!c.hasClass(this.markerClassName)){c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker",function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});d.data(a,"datepicker",b);this._setDate(b,this._getDefaultDate(b),true);this._updateDatepicker(b);this._updateAlternate(b);b.dpDiv.show()}},_dialogDatepicker:function(a,b,c,e,f){a=this._dialogInst;if(!a){this.uuid+=1;this._dialogInput=d('<input type="text" id="'+("dp"+this.uuid)+'" style="position: absolute; top: -100px; width: 0px; z-index: -10;"/>');
+this._dialogInput.keydown(this._doKeyDown);d("body").append(this._dialogInput);a=this._dialogInst=this._newInst(this._dialogInput,false);a.settings={};d.data(this._dialogInput[0],"datepicker",a)}H(a.settings,e||{});b=b&&b.constructor==Date?this._formatDate(a,b):b;this._dialogInput.val(b);this._pos=f?f.length?f:[f.pageX,f.pageY]:null;if(!this._pos)this._pos=[document.documentElement.clientWidth/2-100+(document.documentElement.scrollLeft||document.body.scrollLeft),document.documentElement.clientHeight/
+2-150+(document.documentElement.scrollTop||document.body.scrollTop)];this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px");a.settings.onSelect=c;this._inDialog=true;this.dpDiv.addClass(this._dialogClass);this._showDatepicker(this._dialogInput[0]);d.blockUI&&d.blockUI(this.dpDiv);d.data(this._dialogInput[0],"datepicker",a);return this},_destroyDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();d.removeData(a,
+"datepicker");if(e=="input"){c.append.remove();c.trigger.remove();b.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)}else if(e=="div"||e=="span")b.removeClass(this.markerClassName).empty()}},_enableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=false;c.trigger.filter("button").each(function(){this.disabled=
+false}).end().filter("img").css({opacity:"1.0",cursor:""})}else if(e=="div"||e=="span"){b=b.children("."+this._inlineClass);b.children().removeClass("ui-state-disabled");b.find("select.ui-datepicker-month, select.ui-datepicker-year").removeAttr("disabled")}this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null:f})}},_disableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=
+true;c.trigger.filter("button").each(function(){this.disabled=true}).end().filter("img").css({opacity:"0.5",cursor:"default"})}else if(e=="div"||e=="span"){b=b.children("."+this._inlineClass);b.children().addClass("ui-state-disabled");b.find("select.ui-datepicker-month, select.ui-datepicker-year").attr("disabled","disabled")}this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null:f});this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(a){if(!a)return false;
+for(var b=0;b<this._disabledInputs.length;b++)if(this._disabledInputs[b]==a)return true;return false},_getInst:function(a){try{return d.data(a,"datepicker")}catch(b){throw"Missing instance data for this datepicker";}},_optionDatepicker:function(a,b,c){var e=this._getInst(a);if(arguments.length==2&&typeof b=="string")return b=="defaults"?d.extend({},d.datepicker._defaults):e?b=="all"?d.extend({},e.settings):this._get(e,b):null;var f=b||{};if(typeof b=="string"){f={};f[b]=c}if(e){this._curInst==e&&
+this._hideDatepicker();var h=this._getDateDatepicker(a,true),i=this._getMinMaxDate(e,"min"),g=this._getMinMaxDate(e,"max");H(e.settings,f);if(i!==null&&f.dateFormat!==B&&f.minDate===B)e.settings.minDate=this._formatDate(e,i);if(g!==null&&f.dateFormat!==B&&f.maxDate===B)e.settings.maxDate=this._formatDate(e,g);this._attachments(d(a),e);this._autoSize(e);this._setDate(e,h);this._updateAlternate(e);this._updateDatepicker(e)}},_changeDatepicker:function(a,b,c){this._optionDatepicker(a,b,c)},_refreshDatepicker:function(a){(a=
+this._getInst(a))&&this._updateDatepicker(a)},_setDateDatepicker:function(a,b){if(a=this._getInst(a)){this._setDate(a,b);this._updateDatepicker(a);this._updateAlternate(a)}},_getDateDatepicker:function(a,b){(a=this._getInst(a))&&!a.inline&&this._setDateFromField(a,b);return a?this._getDate(a):null},_doKeyDown:function(a){var b=d.datepicker._getInst(a.target),c=true,e=b.dpDiv.is(".ui-datepicker-rtl");b._keyEvent=true;if(d.datepicker._datepickerShowing)switch(a.keyCode){case 9:d.datepicker._hideDatepicker();
+c=false;break;case 13:c=d("td."+d.datepicker._dayOverClass+":not(."+d.datepicker._currentClass+")",b.dpDiv);c[0]?d.datepicker._selectDay(a.target,b.selectedMonth,b.selectedYear,c[0]):d.datepicker._hideDatepicker();return false;case 27:d.datepicker._hideDatepicker();break;case 33:d.datepicker._adjustDate(a.target,a.ctrlKey?-d.datepicker._get(b,"stepBigMonths"):-d.datepicker._get(b,"stepMonths"),"M");break;case 34:d.datepicker._adjustDate(a.target,a.ctrlKey?+d.datepicker._get(b,"stepBigMonths"):+d.datepicker._get(b,
+"stepMonths"),"M");break;case 35:if(a.ctrlKey||a.metaKey)d.datepicker._clearDate(a.target);c=a.ctrlKey||a.metaKey;break;case 36:if(a.ctrlKey||a.metaKey)d.datepicker._gotoToday(a.target);c=a.ctrlKey||a.metaKey;break;case 37:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,e?+1:-1,"D");c=a.ctrlKey||a.metaKey;if(a.originalEvent.altKey)d.datepicker._adjustDate(a.target,a.ctrlKey?-d.datepicker._get(b,"stepBigMonths"):-d.datepicker._get(b,"stepMonths"),"M");break;case 38:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,
+-7,"D");c=a.ctrlKey||a.metaKey;break;case 39:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,e?-1:+1,"D");c=a.ctrlKey||a.metaKey;if(a.originalEvent.altKey)d.datepicker._adjustDate(a.target,a.ctrlKey?+d.datepicker._get(b,"stepBigMonths"):+d.datepicker._get(b,"stepMonths"),"M");break;case 40:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,+7,"D");c=a.ctrlKey||a.metaKey;break;default:c=false}else if(a.keyCode==36&&a.ctrlKey)d.datepicker._showDatepicker(this);else c=false;if(c){a.preventDefault();
+a.stopPropagation()}},_doKeyPress:function(a){var b=d.datepicker._getInst(a.target);if(d.datepicker._get(b,"constrainInput")){b=d.datepicker._possibleChars(d.datepicker._get(b,"dateFormat"));var c=String.fromCharCode(a.charCode==B?a.keyCode:a.charCode);return a.ctrlKey||a.metaKey||c<" "||!b||b.indexOf(c)>-1}},_doKeyUp:function(a){a=d.datepicker._getInst(a.target);if(a.input.val()!=a.lastVal)try{if(d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),a.input?a.input.val():null,d.datepicker._getFormatConfig(a))){d.datepicker._setDateFromField(a);
+d.datepicker._updateAlternate(a);d.datepicker._updateDatepicker(a)}}catch(b){d.datepicker.log(b)}return true},_showDatepicker:function(a){a=a.target||a;if(a.nodeName.toLowerCase()!="input")a=d("input",a.parentNode)[0];if(!(d.datepicker._isDisabledDatepicker(a)||d.datepicker._lastInput==a)){var b=d.datepicker._getInst(a);d.datepicker._curInst&&d.datepicker._curInst!=b&&d.datepicker._curInst.dpDiv.stop(true,true);var c=d.datepicker._get(b,"beforeShow");H(b.settings,c?c.apply(a,[a,b]):{});b.lastVal=
+null;d.datepicker._lastInput=a;d.datepicker._setDateFromField(b);if(d.datepicker._inDialog)a.value="";if(!d.datepicker._pos){d.datepicker._pos=d.datepicker._findPos(a);d.datepicker._pos[1]+=a.offsetHeight}var e=false;d(a).parents().each(function(){e|=d(this).css("position")=="fixed";return!e});if(e&&d.browser.opera){d.datepicker._pos[0]-=document.documentElement.scrollLeft;d.datepicker._pos[1]-=document.documentElement.scrollTop}c={left:d.datepicker._pos[0],top:d.datepicker._pos[1]};d.datepicker._pos=
+null;b.dpDiv.empty();b.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});d.datepicker._updateDatepicker(b);c=d.datepicker._checkOffset(b,c,e);b.dpDiv.css({position:d.datepicker._inDialog&&d.blockUI?"static":e?"fixed":"absolute",display:"none",left:c.left+"px",top:c.top+"px"});if(!b.inline){c=d.datepicker._get(b,"showAnim");var f=d.datepicker._get(b,"duration"),h=function(){var i=b.dpDiv.find("iframe.ui-datepicker-cover");if(i.length){var g=d.datepicker._getBorders(b.dpDiv);i.css({left:-g[0],
+top:-g[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()})}};b.dpDiv.zIndex(d(a).zIndex()+1);d.datepicker._datepickerShowing=true;d.effects&&d.effects[c]?b.dpDiv.show(c,d.datepicker._get(b,"showOptions"),f,h):b.dpDiv[c||"show"](c?f:null,h);if(!c||!f)h();b.input.is(":visible")&&!b.input.is(":disabled")&&b.input.focus();d.datepicker._curInst=b}}},_updateDatepicker:function(a){var b=d.datepicker._getBorders(a.dpDiv);J=a;a.dpDiv.empty().append(this._generateHTML(a));var c=a.dpDiv.find("iframe.ui-datepicker-cover");
+c.length&&c.css({left:-b[0],top:-b[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()});a.dpDiv.find("."+this._dayOverClass+" a").mouseover();b=this._getNumberOfMonths(a);c=b[1];a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");c>1&&a.dpDiv.addClass("ui-datepicker-multi-"+c).css("width",17*c+"em");a.dpDiv[(b[0]!=1||b[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi");a.dpDiv[(this._get(a,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl");
+a==d.datepicker._curInst&&d.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&&!a.input.is(":disabled")&&a.input[0]!=document.activeElement&&a.input.focus();if(a.yearshtml){var e=a.yearshtml;setTimeout(function(){e===a.yearshtml&&a.yearshtml&&a.dpDiv.find("select.ui-datepicker-year:first").replaceWith(a.yearshtml);e=a.yearshtml=null},0)}},_getBorders:function(a){var b=function(c){return{thin:1,medium:2,thick:3}[c]||c};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]},
+_checkOffset:function(a,b,c){var e=a.dpDiv.outerWidth(),f=a.dpDiv.outerHeight(),h=a.input?a.input.outerWidth():0,i=a.input?a.input.outerHeight():0,g=document.documentElement.clientWidth+d(document).scrollLeft(),j=document.documentElement.clientHeight+d(document).scrollTop();b.left-=this._get(a,"isRTL")?e-h:0;b.left-=c&&b.left==a.input.offset().left?d(document).scrollLeft():0;b.top-=c&&b.top==a.input.offset().top+i?d(document).scrollTop():0;b.left-=Math.min(b.left,b.left+e>g&&g>e?Math.abs(b.left+e-
+g):0);b.top-=Math.min(b.top,b.top+f>j&&j>f?Math.abs(f+i):0);return b},_findPos:function(a){for(var b=this._get(this._getInst(a),"isRTL");a&&(a.type=="hidden"||a.nodeType!=1||d.expr.filters.hidden(a));)a=a[b?"previousSibling":"nextSibling"];a=d(a).offset();return[a.left,a.top]},_hideDatepicker:function(a){var b=this._curInst;if(!(!b||a&&b!=d.data(a,"datepicker")))if(this._datepickerShowing){a=this._get(b,"showAnim");var c=this._get(b,"duration"),e=function(){d.datepicker._tidyDialog(b);this._curInst=
+null};d.effects&&d.effects[a]?b.dpDiv.hide(a,d.datepicker._get(b,"showOptions"),c,e):b.dpDiv[a=="slideDown"?"slideUp":a=="fadeIn"?"fadeOut":"hide"](a?c:null,e);a||e();if(a=this._get(b,"onClose"))a.apply(b.input?b.input[0]:null,[b.input?b.input.val():"",b]);this._datepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute",left:"0",top:"-100px"});if(d.blockUI){d.unblockUI();d("body").append(this.dpDiv)}}this._inDialog=false}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},
+_checkExternalClick:function(a){if(d.datepicker._curInst){a=d(a.target);a[0].id!=d.datepicker._mainDivId&&a.parents("#"+d.datepicker._mainDivId).length==0&&!a.hasClass(d.datepicker.markerClassName)&&!a.hasClass(d.datepicker._triggerClass)&&d.datepicker._datepickerShowing&&!(d.datepicker._inDialog&&d.blockUI)&&d.datepicker._hideDatepicker()}},_adjustDate:function(a,b,c){a=d(a);var e=this._getInst(a[0]);if(!this._isDisabledDatepicker(a[0])){this._adjustInstDate(e,b+(c=="M"?this._get(e,"showCurrentAtPos"):
+0),c);this._updateDatepicker(e)}},_gotoToday:function(a){a=d(a);var b=this._getInst(a[0]);if(this._get(b,"gotoCurrent")&&b.currentDay){b.selectedDay=b.currentDay;b.drawMonth=b.selectedMonth=b.currentMonth;b.drawYear=b.selectedYear=b.currentYear}else{var c=new Date;b.selectedDay=c.getDate();b.drawMonth=b.selectedMonth=c.getMonth();b.drawYear=b.selectedYear=c.getFullYear()}this._notifyChange(b);this._adjustDate(a)},_selectMonthYear:function(a,b,c){a=d(a);var e=this._getInst(a[0]);e._selectingMonthYear=
+false;e["selected"+(c=="M"?"Month":"Year")]=e["draw"+(c=="M"?"Month":"Year")]=parseInt(b.options[b.selectedIndex].value,10);this._notifyChange(e);this._adjustDate(a)},_clickMonthYear:function(a){var b=this._getInst(d(a)[0]);b.input&&b._selectingMonthYear&&setTimeout(function(){b.input.focus()},0);b._selectingMonthYear=!b._selectingMonthYear},_selectDay:function(a,b,c,e){var f=d(a);if(!(d(e).hasClass(this._unselectableClass)||this._isDisabledDatepicker(f[0]))){f=this._getInst(f[0]);f.selectedDay=f.currentDay=
+d("a",e).html();f.selectedMonth=f.currentMonth=b;f.selectedYear=f.currentYear=c;this._selectDate(a,this._formatDate(f,f.currentDay,f.currentMonth,f.currentYear))}},_clearDate:function(a){a=d(a);this._getInst(a[0]);this._selectDate(a,"")},_selectDate:function(a,b){a=this._getInst(d(a)[0]);b=b!=null?b:this._formatDate(a);a.input&&a.input.val(b);this._updateAlternate(a);var c=this._get(a,"onSelect");if(c)c.apply(a.input?a.input[0]:null,[b,a]);else a.input&&a.input.trigger("change");if(a.inline)this._updateDatepicker(a);
+else{this._hideDatepicker();this._lastInput=a.input[0];typeof a.input[0]!="object"&&a.input.focus();this._lastInput=null}},_updateAlternate:function(a){var b=this._get(a,"altField");if(b){var c=this._get(a,"altFormat")||this._get(a,"dateFormat"),e=this._getDate(a),f=this.formatDate(c,e,this._getFormatConfig(a));d(b).each(function(){d(this).val(f)})}},noWeekends:function(a){a=a.getDay();return[a>0&&a<6,""]},iso8601Week:function(a){a=new Date(a.getTime());a.setDate(a.getDate()+4-(a.getDay()||7));var b=
+a.getTime();a.setMonth(0);a.setDate(1);return Math.floor(Math.round((b-a)/864E5)/7)+1},parseDate:function(a,b,c){if(a==null||b==null)throw"Invalid arguments";b=typeof b=="object"?b.toString():b+"";if(b=="")return null;var e=(c?c.shortYearCutoff:null)||this._defaults.shortYearCutoff;e=typeof e!="string"?e:(new Date).getFullYear()%100+parseInt(e,10);for(var f=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,h=(c?c.dayNames:null)||this._defaults.dayNames,i=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,
+g=(c?c.monthNames:null)||this._defaults.monthNames,j=c=-1,l=-1,u=-1,k=false,o=function(p){(p=A+1<a.length&&a.charAt(A+1)==p)&&A++;return p},m=function(p){var C=o(p);p=new RegExp("^\\d{1,"+(p=="@"?14:p=="!"?20:p=="y"&&C?4:p=="o"?3:2)+"}");p=b.substring(s).match(p);if(!p)throw"Missing number at position "+s;s+=p[0].length;return parseInt(p[0],10)},n=function(p,C,K){p=d.map(o(p)?K:C,function(w,x){return[[x,w]]}).sort(function(w,x){return-(w[1].length-x[1].length)});var E=-1;d.each(p,function(w,x){w=
+x[1];if(b.substr(s,w.length).toLowerCase()==w.toLowerCase()){E=x[0];s+=w.length;return false}});if(E!=-1)return E+1;else throw"Unknown name at position "+s;},r=function(){if(b.charAt(s)!=a.charAt(A))throw"Unexpected literal at position "+s;s++},s=0,A=0;A<a.length;A++)if(k)if(a.charAt(A)=="'"&&!o("'"))k=false;else r();else switch(a.charAt(A)){case "d":l=m("d");break;case "D":n("D",f,h);break;case "o":u=m("o");break;case "m":j=m("m");break;case "M":j=n("M",i,g);break;case "y":c=m("y");break;case "@":var v=
+new Date(m("@"));c=v.getFullYear();j=v.getMonth()+1;l=v.getDate();break;case "!":v=new Date((m("!")-this._ticksTo1970)/1E4);c=v.getFullYear();j=v.getMonth()+1;l=v.getDate();break;case "'":if(o("'"))r();else k=true;break;default:r()}if(c==-1)c=(new Date).getFullYear();else if(c<100)c+=(new Date).getFullYear()-(new Date).getFullYear()%100+(c<=e?0:-100);if(u>-1){j=1;l=u;do{e=this._getDaysInMonth(c,j-1);if(l<=e)break;j++;l-=e}while(1)}v=this._daylightSavingAdjust(new Date(c,j-1,l));if(v.getFullYear()!=
+c||v.getMonth()+1!=j||v.getDate()!=l)throw"Invalid date";return v},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1E7,formatDate:function(a,b,c){if(!b)return"";var e=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,f=(c?c.dayNames:null)||this._defaults.dayNames,
+h=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort;c=(c?c.monthNames:null)||this._defaults.monthNames;var i=function(o){(o=k+1<a.length&&a.charAt(k+1)==o)&&k++;return o},g=function(o,m,n){m=""+m;if(i(o))for(;m.length<n;)m="0"+m;return m},j=function(o,m,n,r){return i(o)?r[m]:n[m]},l="",u=false;if(b)for(var k=0;k<a.length;k++)if(u)if(a.charAt(k)=="'"&&!i("'"))u=false;else l+=a.charAt(k);else switch(a.charAt(k)){case "d":l+=g("d",b.getDate(),2);break;case "D":l+=j("D",b.getDay(),e,f);break;
+case "o":l+=g("o",(b.getTime()-(new Date(b.getFullYear(),0,0)).getTime())/864E5,3);break;case "m":l+=g("m",b.getMonth()+1,2);break;case "M":l+=j("M",b.getMonth(),h,c);break;case "y":l+=i("y")?b.getFullYear():(b.getYear()%100<10?"0":"")+b.getYear()%100;break;case "@":l+=b.getTime();break;case "!":l+=b.getTime()*1E4+this._ticksTo1970;break;case "'":if(i("'"))l+="'";else u=true;break;default:l+=a.charAt(k)}return l},_possibleChars:function(a){for(var b="",c=false,e=function(h){(h=f+1<a.length&&a.charAt(f+
+1)==h)&&f++;return h},f=0;f<a.length;f++)if(c)if(a.charAt(f)=="'"&&!e("'"))c=false;else b+=a.charAt(f);else switch(a.charAt(f)){case "d":case "m":case "y":case "@":b+="0123456789";break;case "D":case "M":return null;case "'":if(e("'"))b+="'";else c=true;break;default:b+=a.charAt(f)}return b},_get:function(a,b){return a.settings[b]!==B?a.settings[b]:this._defaults[b]},_setDateFromField:function(a,b){if(a.input.val()!=a.lastVal){var c=this._get(a,"dateFormat"),e=a.lastVal=a.input?a.input.val():null,
+f,h;f=h=this._getDefaultDate(a);var i=this._getFormatConfig(a);try{f=this.parseDate(c,e,i)||h}catch(g){this.log(g);e=b?"":e}a.selectedDay=f.getDate();a.drawMonth=a.selectedMonth=f.getMonth();a.drawYear=a.selectedYear=f.getFullYear();a.currentDay=e?f.getDate():0;a.currentMonth=e?f.getMonth():0;a.currentYear=e?f.getFullYear():0;this._adjustInstDate(a)}},_getDefaultDate:function(a){return this._restrictMinMax(a,this._determineDate(a,this._get(a,"defaultDate"),new Date))},_determineDate:function(a,b,
+c){var e=function(h){var i=new Date;i.setDate(i.getDate()+h);return i},f=function(h){try{return d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),h,d.datepicker._getFormatConfig(a))}catch(i){}var g=(h.toLowerCase().match(/^c/)?d.datepicker._getDate(a):null)||new Date,j=g.getFullYear(),l=g.getMonth();g=g.getDate();for(var u=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,k=u.exec(h);k;){switch(k[2]||"d"){case "d":case "D":g+=parseInt(k[1],10);break;case "w":case "W":g+=parseInt(k[1],10)*7;break;case "m":case "M":l+=
+parseInt(k[1],10);g=Math.min(g,d.datepicker._getDaysInMonth(j,l));break;case "y":case "Y":j+=parseInt(k[1],10);g=Math.min(g,d.datepicker._getDaysInMonth(j,l));break}k=u.exec(h)}return new Date(j,l,g)};if(b=(b=b==null||b===""?c:typeof b=="string"?f(b):typeof b=="number"?isNaN(b)?c:e(b):new Date(b.getTime()))&&b.toString()=="Invalid Date"?c:b){b.setHours(0);b.setMinutes(0);b.setSeconds(0);b.setMilliseconds(0)}return this._daylightSavingAdjust(b)},_daylightSavingAdjust:function(a){if(!a)return null;
+a.setHours(a.getHours()>12?a.getHours()+2:0);return a},_setDate:function(a,b,c){var e=!b,f=a.selectedMonth,h=a.selectedYear;b=this._restrictMinMax(a,this._determineDate(a,b,new Date));a.selectedDay=a.currentDay=b.getDate();a.drawMonth=a.selectedMonth=a.currentMonth=b.getMonth();a.drawYear=a.selectedYear=a.currentYear=b.getFullYear();if((f!=a.selectedMonth||h!=a.selectedYear)&&!c)this._notifyChange(a);this._adjustInstDate(a);if(a.input)a.input.val(e?"":this._formatDate(a))},_getDate:function(a){return!a.currentYear||
+a.input&&a.input.val()==""?null:this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay))},_generateHTML:function(a){var b=new Date;b=this._daylightSavingAdjust(new Date(b.getFullYear(),b.getMonth(),b.getDate()));var c=this._get(a,"isRTL"),e=this._get(a,"showButtonPanel"),f=this._get(a,"hideIfNoPrevNext"),h=this._get(a,"navigationAsDateFormat"),i=this._getNumberOfMonths(a),g=this._get(a,"showCurrentAtPos"),j=this._get(a,"stepMonths"),l=i[0]!=1||i[1]!=1,u=this._daylightSavingAdjust(!a.currentDay?
+new Date(9999,9,9):new Date(a.currentYear,a.currentMonth,a.currentDay)),k=this._getMinMaxDate(a,"min"),o=this._getMinMaxDate(a,"max");g=a.drawMonth-g;var m=a.drawYear;if(g<0){g+=12;m--}if(o){var n=this._daylightSavingAdjust(new Date(o.getFullYear(),o.getMonth()-i[0]*i[1]+1,o.getDate()));for(n=k&&n<k?k:n;this._daylightSavingAdjust(new Date(m,g,1))>n;){g--;if(g<0){g=11;m--}}}a.drawMonth=g;a.drawYear=m;n=this._get(a,"prevText");n=!h?n:this.formatDate(n,this._daylightSavingAdjust(new Date(m,g-j,1)),this._getFormatConfig(a));
+n=this._canAdjustMonth(a,-1,m,g)?'<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery_'+z+".datepicker._adjustDate('#"+a.id+"', -"+j+", 'M');\" title=\""+n+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"e":"w")+'">'+n+"</span></a>":f?"":'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+n+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"e":"w")+'">'+n+"</span></a>";var r=this._get(a,"nextText");r=!h?r:this.formatDate(r,this._daylightSavingAdjust(new Date(m,
+g+j,1)),this._getFormatConfig(a));f=this._canAdjustMonth(a,+1,m,g)?'<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery_'+z+".datepicker._adjustDate('#"+a.id+"', +"+j+", 'M');\" title=\""+r+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"w":"e")+'">'+r+"</span></a>":f?"":'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+r+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"w":"e")+'">'+r+"</span></a>";j=this._get(a,"currentText");r=this._get(a,"gotoCurrent")&&
+a.currentDay?u:b;j=!h?j:this.formatDate(j,r,this._getFormatConfig(a));h=!a.inline?'<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery_'+z+'.datepicker._hideDatepicker();">'+this._get(a,"closeText")+"</button>":"";e=e?'<div class="ui-datepicker-buttonpane ui-widget-content">'+(c?h:"")+(this._isInRange(a,r)?'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery_'+
+z+".datepicker._gotoToday('#"+a.id+"');\">"+j+"</button>":"")+(c?"":h)+"</div>":"";h=parseInt(this._get(a,"firstDay"),10);h=isNaN(h)?0:h;j=this._get(a,"showWeek");r=this._get(a,"dayNames");this._get(a,"dayNamesShort");var s=this._get(a,"dayNamesMin"),A=this._get(a,"monthNames"),v=this._get(a,"monthNamesShort"),p=this._get(a,"beforeShowDay"),C=this._get(a,"showOtherMonths"),K=this._get(a,"selectOtherMonths");this._get(a,"calculateWeek");for(var E=this._getDefaultDate(a),w="",x=0;x<i[0];x++){for(var O=
+"",G=0;G<i[1];G++){var P=this._daylightSavingAdjust(new Date(m,g,a.selectedDay)),t=" ui-corner-all",y="";if(l){y+='<div class="ui-datepicker-group';if(i[1]>1)switch(G){case 0:y+=" ui-datepicker-group-first";t=" ui-corner-"+(c?"right":"left");break;case i[1]-1:y+=" ui-datepicker-group-last";t=" ui-corner-"+(c?"left":"right");break;default:y+=" ui-datepicker-group-middle";t="";break}y+='">'}y+='<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'+t+'">'+(/all|left/.test(t)&&x==0?c?
+f:n:"")+(/all|right/.test(t)&&x==0?c?n:f:"")+this._generateMonthYearHeader(a,g,m,k,o,x>0||G>0,A,v)+'</div><table class="ui-datepicker-calendar"><thead><tr>';var D=j?'<th class="ui-datepicker-week-col">'+this._get(a,"weekHeader")+"</th>":"";for(t=0;t<7;t++){var q=(t+h)%7;D+="<th"+((t+h+6)%7>=5?' class="ui-datepicker-week-end"':"")+'><span title="'+r[q]+'">'+s[q]+"</span></th>"}y+=D+"</tr></thead><tbody>";D=this._getDaysInMonth(m,g);if(m==a.selectedYear&&g==a.selectedMonth)a.selectedDay=Math.min(a.selectedDay,
+D);t=(this._getFirstDayOfMonth(m,g)-h+7)%7;D=l?6:Math.ceil((t+D)/7);q=this._daylightSavingAdjust(new Date(m,g,1-t));for(var Q=0;Q<D;Q++){y+="<tr>";var R=!j?"":'<td class="ui-datepicker-week-col">'+this._get(a,"calculateWeek")(q)+"</td>";for(t=0;t<7;t++){var I=p?p.apply(a.input?a.input[0]:null,[q]):[true,""],F=q.getMonth()!=g,L=F&&!K||!I[0]||k&&q<k||o&&q>o;R+='<td class="'+((t+h+6)%7>=5?" ui-datepicker-week-end":"")+(F?" ui-datepicker-other-month":"")+(q.getTime()==P.getTime()&&g==a.selectedMonth&&
+a._keyEvent||E.getTime()==q.getTime()&&E.getTime()==P.getTime()?" "+this._dayOverClass:"")+(L?" "+this._unselectableClass+" ui-state-disabled":"")+(F&&!C?"":" "+I[1]+(q.getTime()==u.getTime()?" "+this._currentClass:"")+(q.getTime()==b.getTime()?" ui-datepicker-today":""))+'"'+((!F||C)&&I[2]?' title="'+I[2]+'"':"")+(L?"":' onclick="DP_jQuery_'+z+".datepicker._selectDay('#"+a.id+"',"+q.getMonth()+","+q.getFullYear()+', this);return false;"')+">"+(F&&!C?" ":L?'<span class="ui-state-default">'+q.getDate()+
+"</span>":'<a class="ui-state-default'+(q.getTime()==b.getTime()?" ui-state-highlight":"")+(q.getTime()==u.getTime()?" ui-state-active":"")+(F?" ui-priority-secondary":"")+'" href="#">'+q.getDate()+"</a>")+"</td>";q.setDate(q.getDate()+1);q=this._daylightSavingAdjust(q)}y+=R+"</tr>"}g++;if(g>11){g=0;m++}y+="</tbody></table>"+(l?"</div>"+(i[0]>0&&G==i[1]-1?'<div class="ui-datepicker-row-break"></div>':""):"");O+=y}w+=O}w+=e+(d.browser.msie&&parseInt(d.browser.version,10)<7&&!a.inline?'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>':
+"");a._keyEvent=false;return w},_generateMonthYearHeader:function(a,b,c,e,f,h,i,g){var j=this._get(a,"changeMonth"),l=this._get(a,"changeYear"),u=this._get(a,"showMonthAfterYear"),k='<div class="ui-datepicker-title">',o="";if(h||!j)o+='<span class="ui-datepicker-month">'+i[b]+"</span>";else{i=e&&e.getFullYear()==c;var m=f&&f.getFullYear()==c;o+='<select class="ui-datepicker-month" onchange="DP_jQuery_'+z+".datepicker._selectMonthYear('#"+a.id+"', this, 'M');\" onclick=\"DP_jQuery_"+z+".datepicker._clickMonthYear('#"+
+a.id+"');\">";for(var n=0;n<12;n++)if((!i||n>=e.getMonth())&&(!m||n<=f.getMonth()))o+='<option value="'+n+'"'+(n==b?' selected="selected"':"")+">"+g[n]+"</option>";o+="</select>"}u||(k+=o+(h||!(j&&l)?" ":""));if(!a.yearshtml){a.yearshtml="";if(h||!l)k+='<span class="ui-datepicker-year">'+c+"</span>";else{g=this._get(a,"yearRange").split(":");var r=(new Date).getFullYear();i=function(s){s=s.match(/c[+-].*/)?c+parseInt(s.substring(1),10):s.match(/[+-].*/)?r+parseInt(s,10):parseInt(s,10);return isNaN(s)?
+r:s};b=i(g[0]);g=Math.max(b,i(g[1]||""));b=e?Math.max(b,e.getFullYear()):b;g=f?Math.min(g,f.getFullYear()):g;for(a.yearshtml+='<select class="ui-datepicker-year" onchange="DP_jQuery_'+z+".datepicker._selectMonthYear('#"+a.id+"', this, 'Y');\" onclick=\"DP_jQuery_"+z+".datepicker._clickMonthYear('#"+a.id+"');\">";b<=g;b++)a.yearshtml+='<option value="'+b+'"'+(b==c?' selected="selected"':"")+">"+b+"</option>";a.yearshtml+="</select>";k+=a.yearshtml;a.yearshtml=null}}k+=this._get(a,"yearSuffix");if(u)k+=
+(h||!(j&&l)?" ":"")+o;k+="</div>";return k},_adjustInstDate:function(a,b,c){var e=a.drawYear+(c=="Y"?b:0),f=a.drawMonth+(c=="M"?b:0);b=Math.min(a.selectedDay,this._getDaysInMonth(e,f))+(c=="D"?b:0);e=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(e,f,b)));a.selectedDay=e.getDate();a.drawMonth=a.selectedMonth=e.getMonth();a.drawYear=a.selectedYear=e.getFullYear();if(c=="M"||c=="Y")this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,
+"max");b=c&&b<c?c:b;return b=a&&b>a?a:b},_notifyChange:function(a){var b=this._get(a,"onChangeMonthYear");if(b)b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){a=this._get(a,"numberOfMonths");return a==null?[1,1]:typeof a=="number"?[1,a]:a},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,b){return 32-this._daylightSavingAdjust(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,
+b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,e){var f=this._getNumberOfMonths(a);c=this._daylightSavingAdjust(new Date(c,e+(b<0?b:f[0]*f[1]),1));b<0&&c.setDate(this._getDaysInMonth(c.getFullYear(),c.getMonth()));return this._isInRange(a,c)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!a||b.getTime()<=a.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff");b=typeof b!=
+"string"?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a,"dayNamesShort"),dayNames:this._get(a,"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,e){if(!b){a.currentDay=a.selectedDay;a.currentMonth=a.selectedMonth;a.currentYear=a.selectedYear}b=b?typeof b=="object"?b:this._daylightSavingAdjust(new Date(e,c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));
+return this.formatDate(this._get(a,"dateFormat"),b,this._getFormatConfig(a))}});d.fn.datepicker=function(a){if(!this.length)return this;if(!d.datepicker.initialized){d(document).mousedown(d.datepicker._checkExternalClick).find("body").append(d.datepicker.dpDiv);d.datepicker.initialized=true}var b=Array.prototype.slice.call(arguments,1);if(typeof a=="string"&&(a=="isDisabled"||a=="getDate"||a=="widget"))return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));if(a=="option"&&
+arguments.length==2&&typeof arguments[1]=="string")return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));return this.each(function(){typeof a=="string"?d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this].concat(b)):d.datepicker._attachDatepicker(this,a)})};d.datepicker=new M;d.datepicker.initialized=false;d.datepicker.uuid=(new Date).getTime();d.datepicker.version="1.8.13";window["DP_jQuery_"+z]=d})(jQuery);
+;
\ No newline at end of file
--- /dev/null
+/*!
+ * jQuery JavaScript Library v1.4.3
+ * http://jquery.com/
+ *
+ * Copyright 2010, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2010, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Thu Oct 14 23:10:06 2010 -0400
+ */
+(function(E,A){function U(){return false}function ba(){return true}function ja(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function Ga(a){var b,d,e=[],f=[],h,k,l,n,s,v,B,D;k=c.data(this,this.nodeType?"events":"__events__");if(typeof k==="function")k=k.events;if(!(a.liveFired===this||!k||!k.live||a.button&&a.type==="click")){if(a.namespace)D=RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)");a.liveFired=this;var H=k.live.slice(0);for(n=0;n<H.length;n++){k=H[n];k.origType.replace(X,
+"")===a.type?f.push(k.selector):H.splice(n--,1)}f=c(a.target).closest(f,a.currentTarget);s=0;for(v=f.length;s<v;s++){B=f[s];for(n=0;n<H.length;n++){k=H[n];if(B.selector===k.selector&&(!D||D.test(k.namespace))){l=B.elem;h=null;if(k.preType==="mouseenter"||k.preType==="mouseleave"){a.type=k.preType;h=c(a.relatedTarget).closest(k.selector)[0]}if(!h||h!==l)e.push({elem:l,handleObj:k,level:B.level})}}}s=0;for(v=e.length;s<v;s++){f=e[s];if(d&&f.level>d)break;a.currentTarget=f.elem;a.data=f.handleObj.data;
+a.handleObj=f.handleObj;D=f.handleObj.origHandler.apply(f.elem,arguments);if(D===false||a.isPropagationStopped()){d=f.level;if(D===false)b=false}}return b}}function Y(a,b){return(a&&a!=="*"?a+".":"")+b.replace(Ha,"`").replace(Ia,"&")}function ka(a,b,d){if(c.isFunction(b))return c.grep(a,function(f,h){return!!b.call(f,h,f)===d});else if(b.nodeType)return c.grep(a,function(f){return f===b===d});else if(typeof b==="string"){var e=c.grep(a,function(f){return f.nodeType===1});if(Ja.test(b))return c.filter(b,
+e,!d);else b=c.filter(b,e)}return c.grep(a,function(f){return c.inArray(f,b)>=0===d})}function la(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var e=c.data(a[d++]),f=c.data(this,e);if(e=e&&e.events){delete f.handle;f.events={};for(var h in e)for(var k in e[h])c.event.add(this,h,e[h][k],e[h][k].data)}}})}function Ka(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}
+function ma(a,b,d){var e=b==="width"?a.offsetWidth:a.offsetHeight;if(d==="border")return e;c.each(b==="width"?La:Ma,function(){d||(e-=parseFloat(c.css(a,"padding"+this))||0);if(d==="margin")e+=parseFloat(c.css(a,"margin"+this))||0;else e-=parseFloat(c.css(a,"border"+this+"Width"))||0});return e}function ca(a,b,d,e){if(c.isArray(b)&&b.length)c.each(b,function(f,h){d||Na.test(a)?e(a,h):ca(a+"["+(typeof h==="object"||c.isArray(h)?f:"")+"]",h,d,e)});else if(!d&&b!=null&&typeof b==="object")c.isEmptyObject(b)?
+e(a,""):c.each(b,function(f,h){ca(a+"["+f+"]",h,d,e)});else e(a,b)}function S(a,b){var d={};c.each(na.concat.apply([],na.slice(0,b)),function(){d[this]=a});return d}function oa(a){if(!da[a]){var b=c("<"+a+">").appendTo("body"),d=b.css("display");b.remove();if(d==="none"||d==="")d="block";da[a]=d}return da[a]}function ea(a){return c.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var u=E.document,c=function(){function a(){if(!b.isReady){try{u.documentElement.doScroll("left")}catch(i){setTimeout(a,
+1);return}b.ready()}}var b=function(i,r){return new b.fn.init(i,r)},d=E.jQuery,e=E.$,f,h=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,k=/\S/,l=/^\s+/,n=/\s+$/,s=/\W/,v=/\d/,B=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,D=/^[\],:{}\s]*$/,H=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,w=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,G=/(?:^|:|,)(?:\s*\[)+/g,M=/(webkit)[ \/]([\w.]+)/,g=/(opera)(?:.*version)?[ \/]([\w.]+)/,j=/(msie) ([\w.]+)/,o=/(mozilla)(?:.*? rv:([\w.]+))?/,m=navigator.userAgent,p=false,
+q=[],t,x=Object.prototype.toString,C=Object.prototype.hasOwnProperty,P=Array.prototype.push,N=Array.prototype.slice,R=String.prototype.trim,Q=Array.prototype.indexOf,L={};b.fn=b.prototype={init:function(i,r){var y,z,F;if(!i)return this;if(i.nodeType){this.context=this[0]=i;this.length=1;return this}if(i==="body"&&!r&&u.body){this.context=u;this[0]=u.body;this.selector="body";this.length=1;return this}if(typeof i==="string")if((y=h.exec(i))&&(y[1]||!r))if(y[1]){F=r?r.ownerDocument||r:u;if(z=B.exec(i))if(b.isPlainObject(r)){i=
+[u.createElement(z[1])];b.fn.attr.call(i,r,true)}else i=[F.createElement(z[1])];else{z=b.buildFragment([y[1]],[F]);i=(z.cacheable?z.fragment.cloneNode(true):z.fragment).childNodes}return b.merge(this,i)}else{if((z=u.getElementById(y[2]))&&z.parentNode){if(z.id!==y[2])return f.find(i);this.length=1;this[0]=z}this.context=u;this.selector=i;return this}else if(!r&&!s.test(i)){this.selector=i;this.context=u;i=u.getElementsByTagName(i);return b.merge(this,i)}else return!r||r.jquery?(r||f).find(i):b(r).find(i);
+else if(b.isFunction(i))return f.ready(i);if(i.selector!==A){this.selector=i.selector;this.context=i.context}return b.makeArray(i,this)},selector:"",jquery:"1.4.3",length:0,size:function(){return this.length},toArray:function(){return N.call(this,0)},get:function(i){return i==null?this.toArray():i<0?this.slice(i)[0]:this[i]},pushStack:function(i,r,y){var z=b();b.isArray(i)?P.apply(z,i):b.merge(z,i);z.prevObject=this;z.context=this.context;if(r==="find")z.selector=this.selector+(this.selector?" ":
+"")+y;else if(r)z.selector=this.selector+"."+r+"("+y+")";return z},each:function(i,r){return b.each(this,i,r)},ready:function(i){b.bindReady();if(b.isReady)i.call(u,b);else q&&q.push(i);return this},eq:function(i){return i===-1?this.slice(i):this.slice(i,+i+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(N.apply(this,arguments),"slice",N.call(arguments).join(","))},map:function(i){return this.pushStack(b.map(this,function(r,y){return i.call(r,
+y,r)}))},end:function(){return this.prevObject||b(null)},push:P,sort:[].sort,splice:[].splice};b.fn.init.prototype=b.fn;b.extend=b.fn.extend=function(){var i=arguments[0]||{},r=1,y=arguments.length,z=false,F,I,K,J,fa;if(typeof i==="boolean"){z=i;i=arguments[1]||{};r=2}if(typeof i!=="object"&&!b.isFunction(i))i={};if(y===r){i=this;--r}for(;r<y;r++)if((F=arguments[r])!=null)for(I in F){K=i[I];J=F[I];if(i!==J)if(z&&J&&(b.isPlainObject(J)||(fa=b.isArray(J)))){if(fa){fa=false;clone=K&&b.isArray(K)?K:[]}else clone=
+K&&b.isPlainObject(K)?K:{};i[I]=b.extend(z,clone,J)}else if(J!==A)i[I]=J}return i};b.extend({noConflict:function(i){E.$=e;if(i)E.jQuery=d;return b},isReady:false,readyWait:1,ready:function(i){i===true&&b.readyWait--;if(!b.readyWait||i!==true&&!b.isReady){if(!u.body)return setTimeout(b.ready,1);b.isReady=true;if(!(i!==true&&--b.readyWait>0)){if(q){for(var r=0;i=q[r++];)i.call(u,b);q=null}b.fn.triggerHandler&&b(u).triggerHandler("ready")}}},bindReady:function(){if(!p){p=true;if(u.readyState==="complete")return setTimeout(b.ready,
+1);if(u.addEventListener){u.addEventListener("DOMContentLoaded",t,false);E.addEventListener("load",b.ready,false)}else if(u.attachEvent){u.attachEvent("onreadystatechange",t);E.attachEvent("onload",b.ready);var i=false;try{i=E.frameElement==null}catch(r){}u.documentElement.doScroll&&i&&a()}}},isFunction:function(i){return b.type(i)==="function"},isArray:Array.isArray||function(i){return b.type(i)==="array"},isWindow:function(i){return i&&typeof i==="object"&&"setInterval"in i},isNaN:function(i){return i==
+null||!v.test(i)||isNaN(i)},type:function(i){return i==null?String(i):L[x.call(i)]||"object"},isPlainObject:function(i){if(!i||b.type(i)!=="object"||i.nodeType||b.isWindow(i))return false;if(i.constructor&&!C.call(i,"constructor")&&!C.call(i.constructor.prototype,"isPrototypeOf"))return false;for(var r in i);return r===A||C.call(i,r)},isEmptyObject:function(i){for(var r in i)return false;return true},error:function(i){throw i;},parseJSON:function(i){if(typeof i!=="string"||!i)return null;i=b.trim(i);
+if(D.test(i.replace(H,"@").replace(w,"]").replace(G,"")))return E.JSON&&E.JSON.parse?E.JSON.parse(i):(new Function("return "+i))();else b.error("Invalid JSON: "+i)},noop:function(){},globalEval:function(i){if(i&&k.test(i)){var r=u.getElementsByTagName("head")[0]||u.documentElement,y=u.createElement("script");y.type="text/javascript";if(b.support.scriptEval)y.appendChild(u.createTextNode(i));else y.text=i;r.insertBefore(y,r.firstChild);r.removeChild(y)}},nodeName:function(i,r){return i.nodeName&&i.nodeName.toUpperCase()===
+r.toUpperCase()},each:function(i,r,y){var z,F=0,I=i.length,K=I===A||b.isFunction(i);if(y)if(K)for(z in i){if(r.apply(i[z],y)===false)break}else for(;F<I;){if(r.apply(i[F++],y)===false)break}else if(K)for(z in i){if(r.call(i[z],z,i[z])===false)break}else for(y=i[0];F<I&&r.call(y,F,y)!==false;y=i[++F]);return i},trim:R?function(i){return i==null?"":R.call(i)}:function(i){return i==null?"":i.toString().replace(l,"").replace(n,"")},makeArray:function(i,r){var y=r||[];if(i!=null){var z=b.type(i);i.length==
+null||z==="string"||z==="function"||z==="regexp"||b.isWindow(i)?P.call(y,i):b.merge(y,i)}return y},inArray:function(i,r){if(r.indexOf)return r.indexOf(i);for(var y=0,z=r.length;y<z;y++)if(r[y]===i)return y;return-1},merge:function(i,r){var y=i.length,z=0;if(typeof r.length==="number")for(var F=r.length;z<F;z++)i[y++]=r[z];else for(;r[z]!==A;)i[y++]=r[z++];i.length=y;return i},grep:function(i,r,y){var z=[],F;y=!!y;for(var I=0,K=i.length;I<K;I++){F=!!r(i[I],I);y!==F&&z.push(i[I])}return z},map:function(i,
+r,y){for(var z=[],F,I=0,K=i.length;I<K;I++){F=r(i[I],I,y);if(F!=null)z[z.length]=F}return z.concat.apply([],z)},guid:1,proxy:function(i,r,y){if(arguments.length===2)if(typeof r==="string"){y=i;i=y[r];r=A}else if(r&&!b.isFunction(r)){y=r;r=A}if(!r&&i)r=function(){return i.apply(y||this,arguments)};if(i)r.guid=i.guid=i.guid||r.guid||b.guid++;return r},access:function(i,r,y,z,F,I){var K=i.length;if(typeof r==="object"){for(var J in r)b.access(i,J,r[J],z,F,y);return i}if(y!==A){z=!I&&z&&b.isFunction(y);
+for(J=0;J<K;J++)F(i[J],r,z?y.call(i[J],J,F(i[J],r)):y,I);return i}return K?F(i[0],r):A},now:function(){return(new Date).getTime()},uaMatch:function(i){i=i.toLowerCase();i=M.exec(i)||g.exec(i)||j.exec(i)||i.indexOf("compatible")<0&&o.exec(i)||[];return{browser:i[1]||"",version:i[2]||"0"}},browser:{}});b.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(i,r){L["[object "+r+"]"]=r.toLowerCase()});m=b.uaMatch(m);if(m.browser){b.browser[m.browser]=true;b.browser.version=
+m.version}if(b.browser.webkit)b.browser.safari=true;if(Q)b.inArray=function(i,r){return Q.call(r,i)};if(!/\s/.test("\u00a0")){l=/^[\s\xA0]+/;n=/[\s\xA0]+$/}f=b(u);if(u.addEventListener)t=function(){u.removeEventListener("DOMContentLoaded",t,false);b.ready()};else if(u.attachEvent)t=function(){if(u.readyState==="complete"){u.detachEvent("onreadystatechange",t);b.ready()}};return E.jQuery=E.$=b}();(function(){c.support={};var a=u.documentElement,b=u.createElement("script"),d=u.createElement("div"),
+e="script"+c.now();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";var f=d.getElementsByTagName("*"),h=d.getElementsByTagName("a")[0],k=u.createElement("select"),l=k.appendChild(u.createElement("option"));if(!(!f||!f.length||!h)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(h.getAttribute("style")),
+hrefNormalized:h.getAttribute("href")==="/a",opacity:/^0.55$/.test(h.style.opacity),cssFloat:!!h.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:l.selected,optDisabled:false,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableHiddenOffsets:true};k.disabled=true;c.support.optDisabled=!l.disabled;b.type="text/javascript";try{b.appendChild(u.createTextNode("window."+e+"=1;"))}catch(n){}a.insertBefore(b,
+a.firstChild);if(E[e]){c.support.scriptEval=true;delete E[e]}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function s(){c.support.noCloneEvent=false;d.detachEvent("onclick",s)});d.cloneNode(true).fireEvent("onclick")}d=u.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=u.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var s=u.createElement("div");
+s.style.width=s.style.paddingLeft="1px";u.body.appendChild(s);c.boxModel=c.support.boxModel=s.offsetWidth===2;if("zoom"in s.style){s.style.display="inline";s.style.zoom=1;c.support.inlineBlockNeedsLayout=s.offsetWidth===2;s.style.display="";s.innerHTML="<div style='width:4px;'></div>";c.support.shrinkWrapBlocks=s.offsetWidth!==2}s.innerHTML="<table><tr><td style='padding:0;display:none'></td><td>t</td></tr></table>";var v=s.getElementsByTagName("td");c.support.reliableHiddenOffsets=v[0].offsetHeight===
+0;v[0].style.display="";v[1].style.display="none";c.support.reliableHiddenOffsets=c.support.reliableHiddenOffsets&&v[0].offsetHeight===0;s.innerHTML="";u.body.removeChild(s).style.display="none"});a=function(s){var v=u.createElement("div");s="on"+s;var B=s in v;if(!B){v.setAttribute(s,"return;");B=typeof v[s]==="function"}return B};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=f=h=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",
+cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var pa={},Oa=/^(?:\{.*\}|\[.*\])$/;c.extend({cache:{},uuid:0,expando:"jQuery"+c.now(),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},data:function(a,b,d){if(c.acceptData(a)){a=a==E?pa:a;var e=a.nodeType,f=e?a[c.expando]:null,h=c.cache;if(!(e&&!f&&typeof b==="string"&&d===A)){if(e)f||(a[c.expando]=f=++c.uuid);else h=a;if(typeof b==="object")if(e)h[f]=
+c.extend(h[f],b);else c.extend(h,b);else if(e&&!h[f])h[f]={};a=e?h[f]:h;if(d!==A)a[b]=d;return typeof b==="string"?a[b]:a}}},removeData:function(a,b){if(c.acceptData(a)){a=a==E?pa:a;var d=a.nodeType,e=d?a[c.expando]:a,f=c.cache,h=d?f[e]:e;if(b){if(h){delete h[b];d&&c.isEmptyObject(h)&&c.removeData(a)}}else if(d&&c.support.deleteExpando)delete a[c.expando];else if(a.removeAttribute)a.removeAttribute(c.expando);else if(d)delete f[e];else for(var k in a)delete a[k]}},acceptData:function(a){if(a.nodeName){var b=
+c.noData[a.nodeName.toLowerCase()];if(b)return!(b===true||a.getAttribute("classid")!==b)}return true}});c.fn.extend({data:function(a,b){if(typeof a==="undefined")return this.length?c.data(this[0]):null;else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===A){var e=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(e===A&&this.length){e=c.data(this[0],a);if(e===A&&this[0].nodeType===1){e=this[0].getAttribute("data-"+a);if(typeof e===
+"string")try{e=e==="true"?true:e==="false"?false:e==="null"?null:!c.isNaN(e)?parseFloat(e):Oa.test(e)?c.parseJSON(e):e}catch(f){}else e=A}}return e===A&&d[1]?this.data(d[0]):e}else return this.each(function(){var h=c(this),k=[d[0],b];h.triggerHandler("setData"+d[1]+"!",k);c.data(this,a,b);h.triggerHandler("changeData"+d[1]+"!",k)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var e=c.data(a,b);if(!d)return e||
+[];if(!e||c.isArray(d))e=c.data(a,b,c.makeArray(d));else e.push(d);return e}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),e=d.shift();if(e==="inprogress")e=d.shift();if(e){b==="fx"&&d.unshift("inprogress");e.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===A)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,
+a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var qa=/[\n\t]/g,ga=/\s+/,Pa=/\r/g,Qa=/^(?:href|src|style)$/,Ra=/^(?:button|input)$/i,Sa=/^(?:button|input|object|select|textarea)$/i,Ta=/^a(?:rea)?$/i,ra=/^(?:radio|checkbox)$/i;c.fn.extend({attr:function(a,b){return c.access(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,
+a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(s){var v=c(this);v.addClass(a.call(this,s,v.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ga),d=0,e=this.length;d<e;d++){var f=this[d];if(f.nodeType===1)if(f.className){for(var h=" "+f.className+" ",k=f.className,l=0,n=b.length;l<n;l++)if(h.indexOf(" "+b[l]+" ")<0)k+=" "+b[l];f.className=c.trim(k)}else f.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(n){var s=
+c(this);s.removeClass(a.call(this,n,s.attr("class")))});if(a&&typeof a==="string"||a===A)for(var b=(a||"").split(ga),d=0,e=this.length;d<e;d++){var f=this[d];if(f.nodeType===1&&f.className)if(a){for(var h=(" "+f.className+" ").replace(qa," "),k=0,l=b.length;k<l;k++)h=h.replace(" "+b[k]+" "," ");f.className=c.trim(h)}else f.className=""}return this},toggleClass:function(a,b){var d=typeof a,e=typeof b==="boolean";if(c.isFunction(a))return this.each(function(f){var h=c(this);h.toggleClass(a.call(this,
+f,h.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var f,h=0,k=c(this),l=b,n=a.split(ga);f=n[h++];){l=e?l:!k.hasClass(f);k[l?"addClass":"removeClass"](f)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(qa," ").indexOf(a)>-1)return true;return false},
+val:function(a){if(!arguments.length){var b=this[0];if(b){if(c.nodeName(b,"option")){var d=b.attributes.value;return!d||d.specified?b.value:b.text}if(c.nodeName(b,"select")){var e=b.selectedIndex;d=[];var f=b.options;b=b.type==="select-one";if(e<0)return null;var h=b?e:0;for(e=b?e+1:f.length;h<e;h++){var k=f[h];if(k.selected&&(c.support.optDisabled?!k.disabled:k.getAttribute("disabled")===null)&&(!k.parentNode.disabled||!c.nodeName(k.parentNode,"optgroup"))){a=c(k).val();if(b)return a;d.push(a)}}return d}if(ra.test(b.type)&&
+!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Pa,"")}return A}var l=c.isFunction(a);return this.each(function(n){var s=c(this),v=a;if(this.nodeType===1){if(l)v=a.call(this,n,s.val());if(v==null)v="";else if(typeof v==="number")v+="";else if(c.isArray(v))v=c.map(v,function(D){return D==null?"":D+""});if(c.isArray(v)&&ra.test(this.type))this.checked=c.inArray(s.val(),v)>=0;else if(c.nodeName(this,"select")){var B=c.makeArray(v);c("option",this).each(function(){this.selected=
+c.inArray(c(this).val(),B)>=0});if(!B.length)this.selectedIndex=-1}else this.value=v}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,e){if(!a||a.nodeType===3||a.nodeType===8)return A;if(e&&b in c.attrFn)return c(a)[b](d);e=a.nodeType!==1||!c.isXMLDoc(a);var f=d!==A;b=e&&c.props[b]||b;if(a.nodeType===1){var h=Qa.test(b);if((b in a||a[b]!==A)&&e&&!h){if(f){b==="type"&&Ra.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
+if(d===null)a.nodeType===1&&a.removeAttribute(b);else a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:Sa.test(a.nodeName)||Ta.test(a.nodeName)&&a.href?0:A;return a[b]}if(!c.support.style&&e&&b==="style"){if(f)a.style.cssText=""+d;return a.style.cssText}f&&a.setAttribute(b,""+d);if(!a.attributes[b]&&a.hasAttribute&&!a.hasAttribute(b))return A;a=!c.support.hrefNormalized&&e&&
+h?a.getAttribute(b,2):a.getAttribute(b);return a===null?A:a}}});var X=/\.(.*)$/,ha=/^(?:textarea|input|select)$/i,Ha=/\./g,Ia=/ /g,Ua=/[^\w\s.|`]/g,Va=function(a){return a.replace(Ua,"\\$&")},sa={focusin:0,focusout:0};c.event={add:function(a,b,d,e){if(!(a.nodeType===3||a.nodeType===8)){if(c.isWindow(a)&&a!==E&&!a.frameElement)a=E;if(d===false)d=U;var f,h;if(d.handler){f=d;d=f.handler}if(!d.guid)d.guid=c.guid++;if(h=c.data(a)){var k=a.nodeType?"events":"__events__",l=h[k],n=h.handle;if(typeof l===
+"function"){n=l.handle;l=l.events}else if(!l){a.nodeType||(h[k]=h=function(){});h.events=l={}}if(!n)h.handle=n=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(n.elem,arguments):A};n.elem=a;b=b.split(" ");for(var s=0,v;k=b[s++];){h=f?c.extend({},f):{handler:d,data:e};if(k.indexOf(".")>-1){v=k.split(".");k=v.shift();h.namespace=v.slice(0).sort().join(".")}else{v=[];h.namespace=""}h.type=k;if(!h.guid)h.guid=d.guid;var B=l[k],D=c.event.special[k]||{};if(!B){B=l[k]=[];
+if(!D.setup||D.setup.call(a,e,v,n)===false)if(a.addEventListener)a.addEventListener(k,n,false);else a.attachEvent&&a.attachEvent("on"+k,n)}if(D.add){D.add.call(a,h);if(!h.handler.guid)h.handler.guid=d.guid}B.push(h);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,e){if(!(a.nodeType===3||a.nodeType===8)){if(d===false)d=U;var f,h,k=0,l,n,s,v,B,D,H=a.nodeType?"events":"__events__",w=c.data(a),G=w&&w[H];if(w&&G){if(typeof G==="function"){w=G;G=G.events}if(b&&b.type){d=b.handler;b=b.type}if(!b||
+typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(f in G)c.event.remove(a,f+b)}else{for(b=b.split(" ");f=b[k++];){v=f;l=f.indexOf(".")<0;n=[];if(!l){n=f.split(".");f=n.shift();s=RegExp("(^|\\.)"+c.map(n.slice(0).sort(),Va).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(B=G[f])if(d){v=c.event.special[f]||{};for(h=e||0;h<B.length;h++){D=B[h];if(d.guid===D.guid){if(l||s.test(D.namespace)){e==null&&B.splice(h--,1);v.remove&&v.remove.call(a,D)}if(e!=null)break}}if(B.length===0||e!=null&&B.length===1){if(!v.teardown||
+v.teardown.call(a,n)===false)c.removeEvent(a,f,w.handle);delete G[f]}}else for(h=0;h<B.length;h++){D=B[h];if(l||s.test(D.namespace)){c.event.remove(a,v,D.handler,h);B.splice(h--,1)}}}if(c.isEmptyObject(G)){if(b=w.handle)b.elem=null;delete w.events;delete w.handle;if(typeof w==="function")c.removeData(a,H);else c.isEmptyObject(w)&&c.removeData(a)}}}}},trigger:function(a,b,d,e){var f=a.type||a;if(!e){a=typeof a==="object"?a[c.expando]?a:c.extend(c.Event(f),a):c.Event(f);if(f.indexOf("!")>=0){a.type=
+f=f.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[f]&&c.each(c.cache,function(){this.events&&this.events[f]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return A;a.result=A;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(e=d.nodeType?c.data(d,"handle"):(c.data(d,"__events__")||{}).handle)&&e.apply(d,b);e=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+f]&&d["on"+f].apply(d,b)===
+false){a.result=false;a.preventDefault()}}catch(h){}if(!a.isPropagationStopped()&&e)c.event.trigger(a,b,e,true);else if(!a.isDefaultPrevented()){e=a.target;var k,l=f.replace(X,""),n=c.nodeName(e,"a")&&l==="click",s=c.event.special[l]||{};if((!s._default||s._default.call(d,a)===false)&&!n&&!(e&&e.nodeName&&c.noData[e.nodeName.toLowerCase()])){try{if(e[l]){if(k=e["on"+l])e["on"+l]=null;c.event.triggered=true;e[l]()}}catch(v){}if(k)e["on"+l]=k;c.event.triggered=false}}},handle:function(a){var b,d,e;
+d=[];var f,h=c.makeArray(arguments);a=h[0]=c.event.fix(a||E.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;if(!b){e=a.type.split(".");a.type=e.shift();d=e.slice(0).sort();e=RegExp("(^|\\.)"+d.join("\\.(?:.*\\.)?")+"(\\.|$)")}a.namespace=a.namespace||d.join(".");f=c.data(this,this.nodeType?"events":"__events__");if(typeof f==="function")f=f.events;d=(f||{})[a.type];if(f&&d){d=d.slice(0);f=0;for(var k=d.length;f<k;f++){var l=d[f];if(b||e.test(l.namespace)){a.handler=l.handler;a.data=
+l.data;a.handleObj=l;l=l.handler.apply(this,h);if(l!==A){a.result=l;if(l===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
+fix:function(a){if(a[c.expando])return a;var b=a;a=c.Event(b);for(var d=this.props.length,e;d;){e=this.props[--d];a[e]=b[e]}if(!a.target)a.target=a.srcElement||u;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=u.documentElement;d=u.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
+d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(a.which==null&&(a.charCode!=null||a.keyCode!=null))a.which=a.charCode!=null?a.charCode:a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==A)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,Y(a.origType,a.selector),c.extend({},a,{handler:Ga,guid:a.handler.guid}))},remove:function(a){c.event.remove(this,
+Y(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,d){if(c.isWindow(this))this.onbeforeunload=d},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};c.removeEvent=u.removeEventListener?function(a,b,d){a.removeEventListener&&a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent&&a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=a;this.type=a.type}else this.type=a;this.timeStamp=
+c.now();this[c.expando]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=ba;var a=this.originalEvent;if(a)if(a.preventDefault)a.preventDefault();else a.returnValue=false},stopPropagation:function(){this.isPropagationStopped=ba;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=ba;this.stopPropagation()},isDefaultPrevented:U,isPropagationStopped:U,isImmediatePropagationStopped:U};
+var ta=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},ua=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?ua:ta,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?ua:ta)}}});if(!c.support.submitBubbles)c.event.special.submit={setup:function(){if(this.nodeName.toLowerCase()!==
+"form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length){a.liveFired=A;return ja("submit",this,arguments)}});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13){a.liveFired=A;return ja("submit",this,arguments)}})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};if(!c.support.changeBubbles){var V,
+va=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(e){return e.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},Z=function(a,b){var d=a.target,e,f;if(!(!ha.test(d.nodeName)||d.readOnly)){e=c.data(d,"_change_data");f=va(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",f);if(!(e===A||f===e))if(e!=null||f){a.type="change";a.liveFired=
+A;return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:Z,beforedeactivate:Z,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return Z.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return Z.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,"_change_data",va(a))}},setup:function(){if(this.type===
+"file")return false;for(var a in V)c.event.add(this,a+".specialChange",V[a]);return ha.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return ha.test(this.nodeName)}};V=c.event.special.change.filters;V.focus=V.beforeactivate}u.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(e){e=c.event.fix(e);e.type=b;return c.event.trigger(e,null,e.target)}c.event.special[b]={setup:function(){sa[b]++===0&&u.addEventListener(a,d,true)},teardown:function(){--sa[b]===
+0&&u.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,e,f){if(typeof d==="object"){for(var h in d)this[b](h,e,d[h],f);return this}if(c.isFunction(e)||e===false){f=e;e=A}var k=b==="one"?c.proxy(f,function(n){c(this).unbind(n,k);return f.apply(this,arguments)}):f;if(d==="unload"&&b!=="one")this.one(d,e,f);else{h=0;for(var l=this.length;h<l;h++)c.event.add(this[h],d,k,e)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&!a.preventDefault)for(var d in a)this.unbind(d,
+a[d]);else{d=0;for(var e=this.length;d<e;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,e){return this.live(b,d,e,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){var d=c.Event(a);d.preventDefault();d.stopPropagation();c.event.trigger(d,b,this[0]);return d.result}},toggle:function(a){for(var b=arguments,d=
+1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(e){var f=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,f+1);e.preventDefault();return b[f].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var wa={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,e,f,h){var k,l=0,n,s,v=h||this.selector;h=h?this:c(this.context);if(typeof d===
+"object"&&!d.preventDefault){for(k in d)h[b](k,e,d[k],v);return this}if(c.isFunction(e)){f=e;e=A}for(d=(d||"").split(" ");(k=d[l++])!=null;){n=X.exec(k);s="";if(n){s=n[0];k=k.replace(X,"")}if(k==="hover")d.push("mouseenter"+s,"mouseleave"+s);else{n=k;if(k==="focus"||k==="blur"){d.push(wa[k]+s);k+=s}else k=(wa[k]||k)+s;if(b==="live"){s=0;for(var B=h.length;s<B;s++)c.event.add(h[s],"live."+Y(k,v),{data:e,selector:v,handler:f,origType:k,origHandler:f,preType:n})}else h.unbind("live."+Y(k,v),f)}}return this}});
+c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),function(a,b){c.fn[b]=function(d,e){if(e==null){e=d;d=null}return arguments.length>0?this.bind(b,d,e):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});E.attachEvent&&!E.addEventListener&&c(E).bind("unload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});
+(function(){function a(g,j,o,m,p,q){p=0;for(var t=m.length;p<t;p++){var x=m[p];if(x){x=x[g];for(var C=false;x;){if(x.sizcache===o){C=m[x.sizset];break}if(x.nodeType===1&&!q){x.sizcache=o;x.sizset=p}if(x.nodeName.toLowerCase()===j){C=x;break}x=x[g]}m[p]=C}}}function b(g,j,o,m,p,q){p=0;for(var t=m.length;p<t;p++){var x=m[p];if(x){x=x[g];for(var C=false;x;){if(x.sizcache===o){C=m[x.sizset];break}if(x.nodeType===1){if(!q){x.sizcache=o;x.sizset=p}if(typeof j!=="string"){if(x===j){C=true;break}}else if(l.filter(j,
+[x]).length>0){C=x;break}}x=x[g]}m[p]=C}}}var d=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,f=Object.prototype.toString,h=false,k=true;[0,0].sort(function(){k=false;return 0});var l=function(g,j,o,m){o=o||[];var p=j=j||u;if(j.nodeType!==1&&j.nodeType!==9)return[];if(!g||typeof g!=="string")return o;var q=[],t,x,C,P,N=true,R=l.isXML(j),Q=g,L;do{d.exec("");if(t=d.exec(Q)){Q=t[3];q.push(t[1]);if(t[2]){P=t[3];
+break}}}while(t);if(q.length>1&&s.exec(g))if(q.length===2&&n.relative[q[0]])x=M(q[0]+q[1],j);else for(x=n.relative[q[0]]?[j]:l(q.shift(),j);q.length;){g=q.shift();if(n.relative[g])g+=q.shift();x=M(g,x)}else{if(!m&&q.length>1&&j.nodeType===9&&!R&&n.match.ID.test(q[0])&&!n.match.ID.test(q[q.length-1])){t=l.find(q.shift(),j,R);j=t.expr?l.filter(t.expr,t.set)[0]:t.set[0]}if(j){t=m?{expr:q.pop(),set:D(m)}:l.find(q.pop(),q.length===1&&(q[0]==="~"||q[0]==="+")&&j.parentNode?j.parentNode:j,R);x=t.expr?l.filter(t.expr,
+t.set):t.set;if(q.length>0)C=D(x);else N=false;for(;q.length;){t=L=q.pop();if(n.relative[L])t=q.pop();else L="";if(t==null)t=j;n.relative[L](C,t,R)}}else C=[]}C||(C=x);C||l.error(L||g);if(f.call(C)==="[object Array]")if(N)if(j&&j.nodeType===1)for(g=0;C[g]!=null;g++){if(C[g]&&(C[g]===true||C[g].nodeType===1&&l.contains(j,C[g])))o.push(x[g])}else for(g=0;C[g]!=null;g++)C[g]&&C[g].nodeType===1&&o.push(x[g]);else o.push.apply(o,C);else D(C,o);if(P){l(P,p,o,m);l.uniqueSort(o)}return o};l.uniqueSort=function(g){if(w){h=
+k;g.sort(w);if(h)for(var j=1;j<g.length;j++)g[j]===g[j-1]&&g.splice(j--,1)}return g};l.matches=function(g,j){return l(g,null,null,j)};l.matchesSelector=function(g,j){return l(j,null,null,[g]).length>0};l.find=function(g,j,o){var m;if(!g)return[];for(var p=0,q=n.order.length;p<q;p++){var t=n.order[p],x;if(x=n.leftMatch[t].exec(g)){var C=x[1];x.splice(1,1);if(C.substr(C.length-1)!=="\\"){x[1]=(x[1]||"").replace(/\\/g,"");m=n.find[t](x,j,o);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=j.getElementsByTagName("*"));
+return{set:m,expr:g}};l.filter=function(g,j,o,m){for(var p=g,q=[],t=j,x,C,P=j&&j[0]&&l.isXML(j[0]);g&&j.length;){for(var N in n.filter)if((x=n.leftMatch[N].exec(g))!=null&&x[2]){var R=n.filter[N],Q,L;L=x[1];C=false;x.splice(1,1);if(L.substr(L.length-1)!=="\\"){if(t===q)q=[];if(n.preFilter[N])if(x=n.preFilter[N](x,t,o,q,m,P)){if(x===true)continue}else C=Q=true;if(x)for(var i=0;(L=t[i])!=null;i++)if(L){Q=R(L,x,i,t);var r=m^!!Q;if(o&&Q!=null)if(r)C=true;else t[i]=false;else if(r){q.push(L);C=true}}if(Q!==
+A){o||(t=q);g=g.replace(n.match[N],"");if(!C)return[];break}}}if(g===p)if(C==null)l.error(g);else break;p=g}return t};l.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=l.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+\-]*)\))?/,
+POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},relative:{"+":function(g,j){var o=typeof j==="string",m=o&&!/\W/.test(j);o=o&&!m;if(m)j=j.toLowerCase();m=0;for(var p=g.length,q;m<p;m++)if(q=g[m]){for(;(q=q.previousSibling)&&q.nodeType!==1;);g[m]=o||q&&q.nodeName.toLowerCase()===
+j?q||false:q===j}o&&l.filter(j,g,true)},">":function(g,j){var o=typeof j==="string",m,p=0,q=g.length;if(o&&!/\W/.test(j))for(j=j.toLowerCase();p<q;p++){if(m=g[p]){o=m.parentNode;g[p]=o.nodeName.toLowerCase()===j?o:false}}else{for(;p<q;p++)if(m=g[p])g[p]=o?m.parentNode:m.parentNode===j;o&&l.filter(j,g,true)}},"":function(g,j,o){var m=e++,p=b,q;if(typeof j==="string"&&!/\W/.test(j)){q=j=j.toLowerCase();p=a}p("parentNode",j,m,g,q,o)},"~":function(g,j,o){var m=e++,p=b,q;if(typeof j==="string"&&!/\W/.test(j)){q=
+j=j.toLowerCase();p=a}p("previousSibling",j,m,g,q,o)}},find:{ID:function(g,j,o){if(typeof j.getElementById!=="undefined"&&!o)return(g=j.getElementById(g[1]))&&g.parentNode?[g]:[]},NAME:function(g,j){if(typeof j.getElementsByName!=="undefined"){for(var o=[],m=j.getElementsByName(g[1]),p=0,q=m.length;p<q;p++)m[p].getAttribute("name")===g[1]&&o.push(m[p]);return o.length===0?null:o}},TAG:function(g,j){return j.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,j,o,m,p,q){g=" "+g[1].replace(/\\/g,
+"")+" ";if(q)return g;q=0;for(var t;(t=j[q])!=null;q++)if(t)if(p^(t.className&&(" "+t.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))o||m.push(t);else if(o)j[q]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},CHILD:function(g){if(g[1]==="nth"){var j=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=j[1]+(j[2]||1)-0;g[3]=j[3]-0}g[0]=e++;return g},ATTR:function(g,j,o,
+m,p,q){j=g[1].replace(/\\/g,"");if(!q&&n.attrMap[j])g[1]=n.attrMap[j];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,j,o,m,p){if(g[1]==="not")if((d.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=l(g[3],null,null,j);else{g=l.filter(g[3],j,o,true^p);o||m.push.apply(m,g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===
+true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,j,o){return!!l(o[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===
+g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},setFilters:{first:function(g,j){return j===0},last:function(g,j,o,m){return j===m.length-1},even:function(g,j){return j%2===0},odd:function(g,j){return j%2===1},lt:function(g,j,o){return j<o[3]-0},gt:function(g,j,o){return j>o[3]-0},nth:function(g,j,o){return o[3]-
+0===j},eq:function(g,j,o){return o[3]-0===j}},filter:{PSEUDO:function(g,j,o,m){var p=j[1],q=n.filters[p];if(q)return q(g,o,j,m);else if(p==="contains")return(g.textContent||g.innerText||l.getText([g])||"").indexOf(j[3])>=0;else if(p==="not"){j=j[3];o=0;for(m=j.length;o<m;o++)if(j[o]===g)return false;return true}else l.error("Syntax error, unrecognized expression: "+p)},CHILD:function(g,j){var o=j[1],m=g;switch(o){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(o===
+"first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":o=j[2];var p=j[3];if(o===1&&p===0)return true;var q=j[0],t=g.parentNode;if(t&&(t.sizcache!==q||!g.nodeIndex)){var x=0;for(m=t.firstChild;m;m=m.nextSibling)if(m.nodeType===1)m.nodeIndex=++x;t.sizcache=q}m=g.nodeIndex-p;return o===0?m===0:m%o===0&&m/o>=0}},ID:function(g,j){return g.nodeType===1&&g.getAttribute("id")===j},TAG:function(g,j){return j==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===
+j},CLASS:function(g,j){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(j)>-1},ATTR:function(g,j){var o=j[1];o=n.attrHandle[o]?n.attrHandle[o](g):g[o]!=null?g[o]:g.getAttribute(o);var m=o+"",p=j[2],q=j[4];return o==null?p==="!=":p==="="?m===q:p==="*="?m.indexOf(q)>=0:p==="~="?(" "+m+" ").indexOf(q)>=0:!q?m&&o!==false:p==="!="?m!==q:p==="^="?m.indexOf(q)===0:p==="$="?m.substr(m.length-q.length)===q:p==="|="?m===q||m.substr(0,q.length+1)===q+"-":false},POS:function(g,j,o,m){var p=n.setFilters[j[2]];
+if(p)return p(g,o,j,m)}}},s=n.match.POS,v=function(g,j){return"\\"+(j-0+1)},B;for(B in n.match){n.match[B]=RegExp(n.match[B].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[B]=RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[B].source.replace(/\\(\d+)/g,v))}var D=function(g,j){g=Array.prototype.slice.call(g,0);if(j){j.push.apply(j,g);return j}return g};try{Array.prototype.slice.call(u.documentElement.childNodes,0)}catch(H){D=function(g,j){var o=j||[],m=0;if(f.call(g)==="[object Array]")Array.prototype.push.apply(o,
+g);else if(typeof g.length==="number")for(var p=g.length;m<p;m++)o.push(g[m]);else for(;g[m];m++)o.push(g[m]);return o}}var w,G;if(u.documentElement.compareDocumentPosition)w=function(g,j){if(g===j){h=true;return 0}if(!g.compareDocumentPosition||!j.compareDocumentPosition)return g.compareDocumentPosition?-1:1;return g.compareDocumentPosition(j)&4?-1:1};else{w=function(g,j){var o=[],m=[],p=g.parentNode,q=j.parentNode,t=p;if(g===j){h=true;return 0}else if(p===q)return G(g,j);else if(p){if(!q)return 1}else return-1;
+for(;t;){o.unshift(t);t=t.parentNode}for(t=q;t;){m.unshift(t);t=t.parentNode}p=o.length;q=m.length;for(t=0;t<p&&t<q;t++)if(o[t]!==m[t])return G(o[t],m[t]);return t===p?G(g,m[t],-1):G(o[t],j,1)};G=function(g,j,o){if(g===j)return o;for(g=g.nextSibling;g;){if(g===j)return-1;g=g.nextSibling}return 1}}l.getText=function(g){for(var j="",o,m=0;g[m];m++){o=g[m];if(o.nodeType===3||o.nodeType===4)j+=o.nodeValue;else if(o.nodeType!==8)j+=l.getText(o.childNodes)}return j};(function(){var g=u.createElement("div"),
+j="script"+(new Date).getTime();g.innerHTML="<a name='"+j+"'/>";var o=u.documentElement;o.insertBefore(g,o.firstChild);if(u.getElementById(j)){n.find.ID=function(m,p,q){if(typeof p.getElementById!=="undefined"&&!q)return(p=p.getElementById(m[1]))?p.id===m[1]||typeof p.getAttributeNode!=="undefined"&&p.getAttributeNode("id").nodeValue===m[1]?[p]:A:[]};n.filter.ID=function(m,p){var q=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&q&&q.nodeValue===p}}o.removeChild(g);
+o=g=null})();(function(){var g=u.createElement("div");g.appendChild(u.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(j,o){var m=o.getElementsByTagName(j[1]);if(j[1]==="*"){for(var p=[],q=0;m[q];q++)m[q].nodeType===1&&p.push(m[q]);m=p}return m};g.innerHTML="<a href='#'></a>";if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(j){return j.getAttribute("href",2)};g=null})();u.querySelectorAll&&
+function(){var g=l,j=u.createElement("div");j.innerHTML="<p class='TEST'></p>";if(!(j.querySelectorAll&&j.querySelectorAll(".TEST").length===0)){l=function(m,p,q,t){p=p||u;if(!t&&!l.isXML(p))if(p.nodeType===9)try{return D(p.querySelectorAll(m),q)}catch(x){}else if(p.nodeType===1&&p.nodeName.toLowerCase()!=="object"){var C=p.id,P=p.id="__sizzle__";try{return D(p.querySelectorAll("#"+P+" "+m),q)}catch(N){}finally{if(C)p.id=C;else p.removeAttribute("id")}}return g(m,p,q,t)};for(var o in g)l[o]=g[o];
+j=null}}();(function(){var g=u.documentElement,j=g.matchesSelector||g.mozMatchesSelector||g.webkitMatchesSelector||g.msMatchesSelector,o=false;try{j.call(u.documentElement,":sizzle")}catch(m){o=true}if(j)l.matchesSelector=function(p,q){try{if(o||!n.match.PSEUDO.test(q))return j.call(p,q)}catch(t){}return l(q,null,null,[p]).length>0}})();(function(){var g=u.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===
+0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(j,o,m){if(typeof o.getElementsByClassName!=="undefined"&&!m)return o.getElementsByClassName(j[1])};g=null}}})();l.contains=u.documentElement.contains?function(g,j){return g!==j&&(g.contains?g.contains(j):true)}:function(g,j){return!!(g.compareDocumentPosition(j)&16)};l.isXML=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false};var M=function(g,
+j){for(var o=[],m="",p,q=j.nodeType?[j]:j;p=n.match.PSEUDO.exec(g);){m+=p[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;p=0;for(var t=q.length;p<t;p++)l(g,q[p],o);return l.filter(m,o)};c.find=l;c.expr=l.selectors;c.expr[":"]=c.expr.filters;c.unique=l.uniqueSort;c.text=l.getText;c.isXMLDoc=l.isXML;c.contains=l.contains})();var Wa=/Until$/,Xa=/^(?:parents|prevUntil|prevAll)/,Ya=/,/,Ja=/^.[^:#\[\.,]*$/,Za=Array.prototype.slice,$a=c.expr.match.POS;c.fn.extend({find:function(a){for(var b=this.pushStack("",
+"find",a),d=0,e=0,f=this.length;e<f;e++){d=b.length;c.find(a,this[e],b);if(e>0)for(var h=d;h<b.length;h++)for(var k=0;k<d;k++)if(b[k]===b[h]){b.splice(h--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,e=b.length;d<e;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(ka(this,a,false),"not",a)},filter:function(a){return this.pushStack(ka(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,
+b){var d=[],e,f,h=this[0];if(c.isArray(a)){var k={},l,n=1;if(h&&a.length){e=0;for(f=a.length;e<f;e++){l=a[e];k[l]||(k[l]=c.expr.match.POS.test(l)?c(l,b||this.context):l)}for(;h&&h.ownerDocument&&h!==b;){for(l in k){e=k[l];if(e.jquery?e.index(h)>-1:c(h).is(e))d.push({selector:l,elem:h,level:n})}h=h.parentNode;n++}}return d}k=$a.test(a)?c(a,b||this.context):null;e=0;for(f=this.length;e<f;e++)for(h=this[e];h;)if(k?k.index(h)>-1:c.find.matchesSelector(h,a)){d.push(h);break}else{h=h.parentNode;if(!h||
+!h.ownerDocument||h===b)break}d=d.length>1?c.unique(d):d;return this.pushStack(d,"closest",a)},index:function(a){if(!a||typeof a==="string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var d=typeof a==="string"?c(a,b||this.context):c.makeArray(a),e=c.merge(this.get(),d);return this.pushStack(!d[0]||!d[0].parentNode||d[0].parentNode.nodeType===11||!e[0]||!e[0].parentNode||e[0].parentNode.nodeType===11?e:c.unique(e))},andSelf:function(){return this.add(this.prevObject)}});
+c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",
+d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,e){var f=c.map(this,b,d);Wa.test(a)||(e=d);if(e&&typeof e==="string")f=c.filter(e,f);f=this.length>1?c.unique(f):f;if((this.length>1||Ya.test(e))&&Xa.test(a))f=f.reverse();return this.pushStack(f,a,Za.call(arguments).join(","))}});
+c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return b.length===1?c.find.matchesSelector(b[0],a)?[b[0]]:[]:c.find.matches(a,b)},dir:function(a,b,d){var e=[];for(a=a[b];a&&a.nodeType!==9&&(d===A||a.nodeType!==1||!c(a).is(d));){a.nodeType===1&&e.push(a);a=a[b]}return e},nth:function(a,b,d){b=b||1;for(var e=0;a;a=a[d])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var xa=/ jQuery\d+="(?:\d+|null)"/g,
+$=/^\s+/,ya=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,za=/<([\w:]+)/,ab=/<tbody/i,bb=/<|&#?\w+;/,Aa=/<(?:script|object|embed|option|style)/i,Ba=/checked\s*(?:[^=]|=\s*.checked.)/i,cb=/\=([^="'>\s]+\/)>/g,O={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],
+area:[1,"<map>","</map>"],_default:[0,"",""]};O.optgroup=O.option;O.tbody=O.tfoot=O.colgroup=O.caption=O.thead;O.th=O.td;if(!c.support.htmlSerialize)O._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==A)return this.empty().append((this[0]&&this[0].ownerDocument||u).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,
+d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},
+unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=
+c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,e;(e=this[d])!=null;d++)if(!a||c.filter(a,[e]).length){if(!b&&e.nodeType===1){c.cleanData(e.getElementsByTagName("*"));
+c.cleanData([e])}e.parentNode&&e.parentNode.removeChild(e)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,e=this.ownerDocument;if(!d){d=e.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(xa,"").replace(cb,'="$1">').replace($,
+"")],e)[0]}else return this.cloneNode(true)});if(a===true){la(this,b);la(this.find("*"),b.find("*"))}return b},html:function(a){if(a===A)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(xa,""):null;else if(typeof a==="string"&&!Aa.test(a)&&(c.support.leadingWhitespace||!$.test(a))&&!O[(za.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(ya,"<$1></$2>");try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(e){this.empty().append(a)}}else c.isFunction(a)?
+this.each(function(f){var h=c(this);h.html(a.call(this,f,h.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),e=d.html();d.replaceWith(a.call(this,b,e))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,
+true)},domManip:function(a,b,d){var e,f,h=a[0],k=[],l;if(!c.support.checkClone&&arguments.length===3&&typeof h==="string"&&Ba.test(h))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(h))return this.each(function(s){var v=c(this);a[0]=h.call(this,s,b?v.html():A);v.domManip(a,b,d)});if(this[0]){e=h&&h.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:c.buildFragment(a,this,k);l=e.fragment;if(f=l.childNodes.length===1?l=l.firstChild:
+l.firstChild){b=b&&c.nodeName(f,"tr");f=0;for(var n=this.length;f<n;f++)d.call(b?c.nodeName(this[f],"table")?this[f].getElementsByTagName("tbody")[0]||this[f].appendChild(this[f].ownerDocument.createElement("tbody")):this[f]:this[f],f>0||e.cacheable||this.length>1?l.cloneNode(true):l)}k.length&&c.each(k,Ka)}return this}});c.buildFragment=function(a,b,d){var e,f,h;b=b&&b[0]?b[0].ownerDocument||b[0]:u;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===u&&!Aa.test(a[0])&&(c.support.checkClone||
+!Ba.test(a[0]))){f=true;if(h=c.fragments[a[0]])if(h!==1)e=h}if(!e){e=b.createDocumentFragment();c.clean(a,b,e,d)}if(f)c.fragments[a[0]]=h?e:1;return{fragment:e,cacheable:f}};c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var e=[];d=c(d);var f=this.length===1&&this[0].parentNode;if(f&&f.nodeType===11&&f.childNodes.length===1&&d.length===1){d[b](this[0]);return this}else{f=0;for(var h=
+d.length;f<h;f++){var k=(f>0?this.clone(true):this).get();c(d[f])[b](k);e=e.concat(k)}return this.pushStack(e,a,d.selector)}}});c.extend({clean:function(a,b,d,e){b=b||u;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||u;for(var f=[],h=0,k;(k=a[h])!=null;h++){if(typeof k==="number")k+="";if(k){if(typeof k==="string"&&!bb.test(k))k=b.createTextNode(k);else if(typeof k==="string"){k=k.replace(ya,"<$1></$2>");var l=(za.exec(k)||["",""])[1].toLowerCase(),n=O[l]||O._default,
+s=n[0],v=b.createElement("div");for(v.innerHTML=n[1]+k+n[2];s--;)v=v.lastChild;if(!c.support.tbody){s=ab.test(k);l=l==="table"&&!s?v.firstChild&&v.firstChild.childNodes:n[1]==="<table>"&&!s?v.childNodes:[];for(n=l.length-1;n>=0;--n)c.nodeName(l[n],"tbody")&&!l[n].childNodes.length&&l[n].parentNode.removeChild(l[n])}!c.support.leadingWhitespace&&$.test(k)&&v.insertBefore(b.createTextNode($.exec(k)[0]),v.firstChild);k=v.childNodes}if(k.nodeType)f.push(k);else f=c.merge(f,k)}}if(d)for(h=0;f[h];h++)if(e&&
+c.nodeName(f[h],"script")&&(!f[h].type||f[h].type.toLowerCase()==="text/javascript"))e.push(f[h].parentNode?f[h].parentNode.removeChild(f[h]):f[h]);else{f[h].nodeType===1&&f.splice.apply(f,[h+1,0].concat(c.makeArray(f[h].getElementsByTagName("script"))));d.appendChild(f[h])}return f},cleanData:function(a){for(var b,d,e=c.cache,f=c.event.special,h=c.support.deleteExpando,k=0,l;(l=a[k])!=null;k++)if(!(l.nodeName&&c.noData[l.nodeName.toLowerCase()]))if(d=l[c.expando]){if((b=e[d])&&b.events)for(var n in b.events)f[n]?
+c.event.remove(l,n):c.removeEvent(l,n,b.handle);if(h)delete l[c.expando];else l.removeAttribute&&l.removeAttribute(c.expando);delete e[d]}}});var Ca=/alpha\([^)]*\)/i,db=/opacity=([^)]*)/,eb=/-([a-z])/ig,fb=/([A-Z])/g,Da=/^-?\d+(?:px)?$/i,gb=/^-?\d/,hb={position:"absolute",visibility:"hidden",display:"block"},La=["Left","Right"],Ma=["Top","Bottom"],W,ib=u.defaultView&&u.defaultView.getComputedStyle,jb=function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){if(arguments.length===2&&b===A)return this;
+return c.access(this,a,b,true,function(d,e,f){return f!==A?c.style(d,e,f):c.css(d,e)})};c.extend({cssHooks:{opacity:{get:function(a,b){if(b){var d=W(a,"opacity","opacity");return d===""?"1":d}else return a.style.opacity}}},cssNumber:{zIndex:true,fontWeight:true,opacity:true,zoom:true,lineHeight:true},cssProps:{"float":c.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,d,e){if(!(!a||a.nodeType===3||a.nodeType===8||!a.style)){var f,h=c.camelCase(b),k=a.style,l=c.cssHooks[h];b=c.cssProps[h]||
+h;if(d!==A){if(!(typeof d==="number"&&isNaN(d)||d==null)){if(typeof d==="number"&&!c.cssNumber[h])d+="px";if(!l||!("set"in l)||(d=l.set(a,d))!==A)try{k[b]=d}catch(n){}}}else{if(l&&"get"in l&&(f=l.get(a,false,e))!==A)return f;return k[b]}}},css:function(a,b,d){var e,f=c.camelCase(b),h=c.cssHooks[f];b=c.cssProps[f]||f;if(h&&"get"in h&&(e=h.get(a,true,d))!==A)return e;else if(W)return W(a,b,f)},swap:function(a,b,d){var e={},f;for(f in b){e[f]=a.style[f];a.style[f]=b[f]}d.call(a);for(f in b)a.style[f]=
+e[f]},camelCase:function(a){return a.replace(eb,jb)}});c.curCSS=c.css;c.each(["height","width"],function(a,b){c.cssHooks[b]={get:function(d,e,f){var h;if(e){if(d.offsetWidth!==0)h=ma(d,b,f);else c.swap(d,hb,function(){h=ma(d,b,f)});return h+"px"}},set:function(d,e){if(Da.test(e)){e=parseFloat(e);if(e>=0)return e+"px"}else return e}}});if(!c.support.opacity)c.cssHooks.opacity={get:function(a,b){return db.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":
+b?"1":""},set:function(a,b){var d=a.style;d.zoom=1;var e=c.isNaN(b)?"":"alpha(opacity="+b*100+")",f=d.filter||"";d.filter=Ca.test(f)?f.replace(Ca,e):d.filter+" "+e}};if(ib)W=function(a,b,d){var e;d=d.replace(fb,"-$1").toLowerCase();if(!(b=a.ownerDocument.defaultView))return A;if(b=b.getComputedStyle(a,null)){e=b.getPropertyValue(d);if(e===""&&!c.contains(a.ownerDocument.documentElement,a))e=c.style(a,d)}return e};else if(u.documentElement.currentStyle)W=function(a,b){var d,e,f=a.currentStyle&&a.currentStyle[b],
+h=a.style;if(!Da.test(f)&&gb.test(f)){d=h.left;e=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;h.left=b==="fontSize"?"1em":f||0;f=h.pixelLeft+"px";h.left=d;a.runtimeStyle.left=e}return f};if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=a.offsetHeight;return a.offsetWidth===0&&b===0||!c.support.reliableHiddenOffsets&&(a.style.display||c.css(a,"display"))==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var kb=c.now(),lb=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
+mb=/^(?:select|textarea)/i,nb=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,ob=/^(?:GET|HEAD|DELETE)$/,Na=/\[\]$/,T=/\=\?(&|$)/,ia=/\?/,pb=/([?&])_=[^&]*/,qb=/^(\w+:)?\/\/([^\/?#]+)/,rb=/%20/g,sb=/#.*$/,Ea=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!=="string"&&Ea)return Ea.apply(this,arguments);else if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var f=a.slice(e,a.length);a=a.slice(0,e)}e="GET";if(b)if(c.isFunction(b)){d=
+b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);e="POST"}var h=this;c.ajax({url:a,type:e,dataType:"html",data:b,complete:function(k,l){if(l==="success"||l==="notmodified")h.html(f?c("<div>").append(k.responseText.replace(lb,"")).find(f):k.responseText);d&&h.each(d,[k.responseText,l,k])}});return this},serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&
+!this.disabled&&(this.checked||mb.test(this.nodeName)||nb.test(this.type))}).map(function(a,b){var d=c(this).val();return d==null?null:c.isArray(d)?c.map(d,function(e){return{name:b.name,value:e}}):{name:b.name,value:d}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,e){if(c.isFunction(b)){e=e||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:e})},
+getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,e){if(c.isFunction(b)){e=e||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:e})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return new E.XMLHttpRequest},accepts:{xml:"application/xml, text/xml",html:"text/html",
+script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},ajax:function(a){var b=c.extend(true,{},c.ajaxSettings,a),d,e,f,h=b.type.toUpperCase(),k=ob.test(h);b.url=b.url.replace(sb,"");b.context=a&&a.context!=null?a.context:b;if(b.data&&b.processData&&typeof b.data!=="string")b.data=c.param(b.data,b.traditional);if(b.dataType==="jsonp"){if(h==="GET")T.test(b.url)||(b.url+=(ia.test(b.url)?"&":"?")+(b.jsonp||"callback")+"=?");else if(!b.data||
+!T.test(b.data))b.data=(b.data?b.data+"&":"")+(b.jsonp||"callback")+"=?";b.dataType="json"}if(b.dataType==="json"&&(b.data&&T.test(b.data)||T.test(b.url))){d=b.jsonpCallback||"jsonp"+kb++;if(b.data)b.data=(b.data+"").replace(T,"="+d+"$1");b.url=b.url.replace(T,"="+d+"$1");b.dataType="script";var l=E[d];E[d]=function(m){f=m;c.handleSuccess(b,w,e,f);c.handleComplete(b,w,e,f);if(c.isFunction(l))l(m);else{E[d]=A;try{delete E[d]}catch(p){}}v&&v.removeChild(B)}}if(b.dataType==="script"&&b.cache===null)b.cache=
+false;if(b.cache===false&&h==="GET"){var n=c.now(),s=b.url.replace(pb,"$1_="+n);b.url=s+(s===b.url?(ia.test(b.url)?"&":"?")+"_="+n:"")}if(b.data&&h==="GET")b.url+=(ia.test(b.url)?"&":"?")+b.data;b.global&&c.active++===0&&c.event.trigger("ajaxStart");n=(n=qb.exec(b.url))&&(n[1]&&n[1]!==location.protocol||n[2]!==location.host);if(b.dataType==="script"&&h==="GET"&&n){var v=u.getElementsByTagName("head")[0]||u.documentElement,B=u.createElement("script");if(b.scriptCharset)B.charset=b.scriptCharset;B.src=
+b.url;if(!d){var D=false;B.onload=B.onreadystatechange=function(){if(!D&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){D=true;c.handleSuccess(b,w,e,f);c.handleComplete(b,w,e,f);B.onload=B.onreadystatechange=null;v&&B.parentNode&&v.removeChild(B)}}}v.insertBefore(B,v.firstChild);return A}var H=false,w=b.xhr();if(w){b.username?w.open(h,b.url,b.async,b.username,b.password):w.open(h,b.url,b.async);try{if(b.data!=null&&!k||a&&a.contentType)w.setRequestHeader("Content-Type",
+b.contentType);if(b.ifModified){c.lastModified[b.url]&&w.setRequestHeader("If-Modified-Since",c.lastModified[b.url]);c.etag[b.url]&&w.setRequestHeader("If-None-Match",c.etag[b.url])}n||w.setRequestHeader("X-Requested-With","XMLHttpRequest");w.setRequestHeader("Accept",b.dataType&&b.accepts[b.dataType]?b.accepts[b.dataType]+", */*; q=0.01":b.accepts._default)}catch(G){}if(b.beforeSend&&b.beforeSend.call(b.context,w,b)===false){b.global&&c.active--===1&&c.event.trigger("ajaxStop");w.abort();return false}b.global&&
+c.triggerGlobal(b,"ajaxSend",[w,b]);var M=w.onreadystatechange=function(m){if(!w||w.readyState===0||m==="abort"){H||c.handleComplete(b,w,e,f);H=true;if(w)w.onreadystatechange=c.noop}else if(!H&&w&&(w.readyState===4||m==="timeout")){H=true;w.onreadystatechange=c.noop;e=m==="timeout"?"timeout":!c.httpSuccess(w)?"error":b.ifModified&&c.httpNotModified(w,b.url)?"notmodified":"success";var p;if(e==="success")try{f=c.httpData(w,b.dataType,b)}catch(q){e="parsererror";p=q}if(e==="success"||e==="notmodified")d||
+c.handleSuccess(b,w,e,f);else c.handleError(b,w,e,p);d||c.handleComplete(b,w,e,f);m==="timeout"&&w.abort();if(b.async)w=null}};try{var g=w.abort;w.abort=function(){w&&g.call&&g.call(w);M("abort")}}catch(j){}b.async&&b.timeout>0&&setTimeout(function(){w&&!H&&M("timeout")},b.timeout);try{w.send(k||b.data==null?null:b.data)}catch(o){c.handleError(b,w,null,o);c.handleComplete(b,w,e,f)}b.async||M();return w}},param:function(a,b){var d=[],e=function(h,k){k=c.isFunction(k)?k():k;d[d.length]=encodeURIComponent(h)+
+"="+encodeURIComponent(k)};if(b===A)b=c.ajaxSettings.traditional;if(c.isArray(a)||a.jquery)c.each(a,function(){e(this.name,this.value)});else for(var f in a)ca(f,a[f],b,e);return d.join("&").replace(rb,"+")}});c.extend({active:0,lastModified:{},etag:{},handleError:function(a,b,d,e){a.error&&a.error.call(a.context,b,d,e);a.global&&c.triggerGlobal(a,"ajaxError",[b,a,e])},handleSuccess:function(a,b,d,e){a.success&&a.success.call(a.context,e,d,b);a.global&&c.triggerGlobal(a,"ajaxSuccess",[b,a])},handleComplete:function(a,
+b,d){a.complete&&a.complete.call(a.context,b,d);a.global&&c.triggerGlobal(a,"ajaxComplete",[b,a]);a.global&&c.active--===1&&c.event.trigger("ajaxStop")},triggerGlobal:function(a,b,d){(a.context&&a.context.url==null?c(a.context):c.event).trigger(b,d)},httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===1223}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),e=a.getResponseHeader("Etag");
+if(d)c.lastModified[b]=d;if(e)c.etag[b]=e;return a.status===304},httpData:function(a,b,d){var e=a.getResponseHeader("content-type")||"",f=b==="xml"||!b&&e.indexOf("xml")>=0;a=f?a.responseXML:a.responseText;f&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b==="json"||!b&&e.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&e.indexOf("javascript")>=0)c.globalEval(a);return a}});if(E.ActiveXObject)c.ajaxSettings.xhr=
+function(){if(E.location.protocol!=="file:")try{return new E.XMLHttpRequest}catch(a){}try{return new E.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}};c.support.ajax=!!c.ajaxSettings.xhr();var da={},tb=/^(?:toggle|show|hide)$/,ub=/^([+\-]=)?([\d+.\-]+)(.*)$/,aa,na=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b,d){if(a||a===0)return this.animate(S("show",3),a,b,d);else{a=
+0;for(b=this.length;a<b;a++){if(!c.data(this[a],"olddisplay")&&this[a].style.display==="none")this[a].style.display="";this[a].style.display===""&&c.css(this[a],"display")==="none"&&c.data(this[a],"olddisplay",oa(this[a].nodeName))}for(a=0;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b,d){if(a||a===0)return this.animate(S("hide",3),a,b,d);else{a=0;for(b=this.length;a<b;a++){d=c.css(this[a],"display");d!=="none"&&c.data(this[a],"olddisplay",d)}for(a=
+0;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b,d){var e=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||e?this.each(function(){var f=e?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(S("toggle",3),a,b,d);return this},fadeTo:function(a,b,d,e){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d,e)},animate:function(a,b,d,e){var f=c.speed(b,d,e);if(c.isEmptyObject(a))return this.each(f.complete);
+return this[f.queue===false?"each":"queue"](function(){var h=c.extend({},f),k,l=this.nodeType===1,n=l&&c(this).is(":hidden"),s=this;for(k in a){var v=c.camelCase(k);if(k!==v){a[v]=a[k];delete a[k];k=v}if(a[k]==="hide"&&n||a[k]==="show"&&!n)return h.complete.call(this);if(l&&(k==="height"||k==="width")){h.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY];if(c.css(this,"display")==="inline"&&c.css(this,"float")==="none")if(c.support.inlineBlockNeedsLayout)if(oa(this.nodeName)===
+"inline")this.style.display="inline-block";else{this.style.display="inline";this.style.zoom=1}else this.style.display="inline-block"}if(c.isArray(a[k])){(h.specialEasing=h.specialEasing||{})[k]=a[k][1];a[k]=a[k][0]}}if(h.overflow!=null)this.style.overflow="hidden";h.curAnim=c.extend({},a);c.each(a,function(B,D){var H=new c.fx(s,h,B);if(tb.test(D))H[D==="toggle"?n?"show":"hide":D](a);else{var w=ub.exec(D),G=H.cur(true)||0;if(w){var M=parseFloat(w[2]),g=w[3]||"px";if(g!=="px"){c.style(s,B,(M||1)+g);
+G=(M||1)/H.cur(true)*G;c.style(s,B,G+g)}if(w[1])M=(w[1]==="-="?-1:1)*M+G;H.custom(G,M,g)}else H.custom(G,D,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);this.each(function(){for(var e=d.length-1;e>=0;e--)if(d[e].elem===this){b&&d[e](true);d.splice(e,1)}});b||this.dequeue();return this}});c.each({slideDown:S("show",1),slideUp:S("hide",1),slideToggle:S("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,e,f){return this.animate(b,
+d,e,f)}});c.extend({speed:function(a,b,d){var e=a&&typeof a==="object"?c.extend({},a):{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};e.duration=c.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in c.fx.speeds?c.fx.speeds[e.duration]:c.fx.speeds._default;e.old=e.complete;e.complete=function(){e.queue!==false&&c(this).dequeue();c.isFunction(e.old)&&e.old.call(this)};return e},easing:{linear:function(a,b,d,e){return d+e*a},swing:function(a,b,d,e){return(-Math.cos(a*
+Math.PI)/2+0.5)*e+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||c.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a=parseFloat(c.css(this.elem,this.prop));return a&&a>-1E4?a:0},custom:function(a,b,d){function e(h){return f.step(h)}
+this.startTime=c.now();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;this.pos=this.state=0;var f=this;a=c.fx;e.elem=this.elem;if(e()&&c.timers.push(e)&&!aa)aa=setInterval(a.tick,a.interval)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;
+this.custom(this.cur(),0)},step:function(a){var b=c.now(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var e in this.options.curAnim)if(this.options.curAnim[e]!==true)d=false;if(d){if(this.options.overflow!=null&&!c.support.shrinkWrapBlocks){var f=this.elem,h=this.options;c.each(["","X","Y"],function(l,n){f.style["overflow"+n]=h.overflow[l]})}this.options.hide&&c(this.elem).hide();if(this.options.hide||
+this.options.show)for(var k in this.options.curAnim)c.style(this.elem,k,this.options.orig[k]);this.options.complete.call(this.elem)}return false}else{a=b-this.startTime;this.state=a/this.options.duration;b=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||b](this.state,a,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=
+c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||c.fx.stop()},interval:13,stop:function(){clearInterval(aa);aa=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===
+b.elem}).length};var vb=/^t(?:able|d|h)$/i,Fa=/^(?:body|html)$/i;c.fn.offset="getBoundingClientRect"in u.documentElement?function(a){var b=this[0],d;if(a)return this.each(function(k){c.offset.setOffset(this,a,k)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);try{d=b.getBoundingClientRect()}catch(e){}var f=b.ownerDocument,h=f.documentElement;if(!d||!c.contains(h,b))return d||{top:0,left:0};b=f.body;f=ea(f);return{top:d.top+(f.pageYOffset||c.support.boxModel&&
+h.scrollTop||b.scrollTop)-(h.clientTop||b.clientTop||0),left:d.left+(f.pageXOffset||c.support.boxModel&&h.scrollLeft||b.scrollLeft)-(h.clientLeft||b.clientLeft||0)}}:function(a){var b=this[0];if(a)return this.each(function(s){c.offset.setOffset(this,a,s)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,e=b.ownerDocument,f,h=e.documentElement,k=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;
+for(var l=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==k&&b!==h;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;f=e?e.getComputedStyle(b,null):b.currentStyle;l-=b.scrollTop;n-=b.scrollLeft;if(b===d){l+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&vb.test(b.nodeName))){l+=parseFloat(f.borderTopWidth)||0;n+=parseFloat(f.borderLeftWidth)||0}d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&f.overflow!=="visible"){l+=
+parseFloat(f.borderTopWidth)||0;n+=parseFloat(f.borderLeftWidth)||0}f=f}if(f.position==="relative"||f.position==="static"){l+=k.offsetTop;n+=k.offsetLeft}if(c.offset.supportsFixedPosition&&f.position==="fixed"){l+=Math.max(h.scrollTop,k.scrollTop);n+=Math.max(h.scrollLeft,k.scrollLeft)}return{top:l,left:n}};c.offset={initialize:function(){var a=u.body,b=u.createElement("div"),d,e,f,h=parseFloat(c.css(a,"marginTop"))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",
+height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";a.insertBefore(b,a.firstChild);d=b.firstChild;e=d.firstChild;f=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=e.offsetTop!==5;this.doesAddBorderForTableAndCells=
+f.offsetTop===5;e.style.position="fixed";e.style.top="20px";this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15;e.style.position=e.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==h;a.removeChild(b);c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.css(a,
+"marginTop"))||0;d+=parseFloat(c.css(a,"marginLeft"))||0}return{top:b,left:d}},setOffset:function(a,b,d){var e=c.css(a,"position");if(e==="static")a.style.position="relative";var f=c(a),h=f.offset(),k=c.css(a,"top"),l=c.css(a,"left"),n=e==="absolute"&&c.inArray("auto",[k,l])>-1;e={};var s={};if(n)s=f.position();k=n?s.top:parseInt(k,10)||0;l=n?s.left:parseInt(l,10)||0;if(c.isFunction(b))b=b.call(a,d,h);if(b.top!=null)e.top=b.top-h.top+k;if(b.left!=null)e.left=b.left-h.left+l;"using"in b?b.using.call(a,
+e):f.css(e)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),e=Fa.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.css(a,"marginTop"))||0;d.left-=parseFloat(c.css(a,"marginLeft"))||0;e.top+=parseFloat(c.css(b[0],"borderTopWidth"))||0;e.left+=parseFloat(c.css(b[0],"borderLeftWidth"))||0;return{top:d.top-e.top,left:d.left-e.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||u.body;a&&!Fa.test(a.nodeName)&&
+c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(e){var f=this[0],h;if(!f)return null;if(e!==A)return this.each(function(){if(h=ea(this))h.scrollTo(!a?e:c(h).scrollLeft(),a?e:c(h).scrollTop());else this[d]=e});else return(h=ea(f))?"pageXOffset"in h?h[a?"pageYOffset":"pageXOffset"]:c.support.boxModel&&h.document.documentElement[d]||h.document.body[d]:f[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();
+c.fn["inner"+b]=function(){return this[0]?parseFloat(c.css(this[0],d,"padding")):null};c.fn["outer"+b]=function(e){return this[0]?parseFloat(c.css(this[0],d,e?"margin":"border")):null};c.fn[d]=function(e){var f=this[0];if(!f)return e==null?null:this;if(c.isFunction(e))return this.each(function(h){var k=c(this);k[d](e.call(this,h,k[d]()))});return c.isWindow(f)?f.document.compatMode==="CSS1Compat"&&f.document.documentElement["client"+b]||f.document.body["client"+b]:f.nodeType===9?Math.max(f.documentElement["client"+
+b],f.body["scroll"+b],f.documentElement["scroll"+b],f.body["offset"+b],f.documentElement["offset"+b]):e===A?parseFloat(c.css(f,d)):this.css(d,typeof e==="string"?e:e+"px")}})})(window);
--- /dev/null
+jQuery.tableDnD = {
+ /** Keep hold of the current table being dragged */
+ currentTable : null,
+ /** Keep hold of the current drag object if any */
+ dragObject: null,
+ /** The current mouse offset */
+ mouseOffset: null,
+ /** Remember the old value of Y so that we don't do too much processing */
+ oldY: 0,
+
+ /** Actually build the structure */
+ build: function(options) {
+ // Set up the defaults if any
+
+ this.each(function() {
+ // This is bound to each matching table, set up the defaults and override with user options
+ this.tableDnDConfig = jQuery.extend({
+ onDragStyle: null,
+ onDropStyle: null,
+ // Add in the default class for whileDragging
+ onDragClass: "tDnD_whileDrag",
+ onDrop: null,
+ onDragStart: null,
+ scrollAmount: 5,
+ serializeRegexp: /[^\-]*$/, // The regular expression to use to trim row IDs
+ serializeParamName: null, // If you want to specify another parameter name instead of the table ID
+ dragHandle: null // If you give the name of a class here, then only Cells with this class will be draggable
+ }, options || {});
+ // Now make the rows draggable
+ jQuery.tableDnD.makeDraggable(this);
+ });
+
+ // Now we need to capture the mouse up and mouse move event
+ // We can use bind so that we don't interfere with other event handlers
+ jQuery(document)
+ .bind('mousemove', jQuery.tableDnD.mousemove)
+ .bind('mouseup', jQuery.tableDnD.mouseup);
+
+ // Don't break the chain
+ return this;
+ },
+
+ /** This function makes all the rows on the table draggable apart from those marked as "NoDrag" */
+ makeDraggable: function(table) {
+ var config = table.tableDnDConfig;
+ if (table.tableDnDConfig.dragHandle) {
+ // We only need to add the event to the specified cells
+ var cells = jQuery("td."+table.tableDnDConfig.dragHandle, table);
+ cells.each(function() {
+ // The cell is bound to "this"
+ jQuery(this).mousedown(function(ev) {
+ jQuery.tableDnD.dragObject = this.parentNode;
+ jQuery.tableDnD.currentTable = table;
+ jQuery.tableDnD.mouseOffset = jQuery.tableDnD.getMouseOffset(this, ev);
+ if (config.onDragStart) {
+ // Call the onDrop method if there is one
+ config.onDragStart(table, this);
+ }
+ return false;
+ });
+ })
+ } else {
+ // For backwards compatibility, we add the event to the whole row
+ var rows = jQuery("tr", table); // get all the rows as a wrapped set
+ rows.each(function() {
+ // Iterate through each row, the row is bound to "this"
+ var row = jQuery(this);
+ if (! row.hasClass("nodrag")) {
+ row.mousedown(function(ev) {
+ if (ev.target.tagName == "TD") {
+ jQuery.tableDnD.dragObject = this;
+ jQuery.tableDnD.currentTable = table;
+ jQuery.tableDnD.mouseOffset = jQuery.tableDnD.getMouseOffset(this, ev);
+ if (config.onDragStart) {
+ // Call the onDrop method if there is one
+ config.onDragStart(table, this);
+ }
+ return false;
+ }
+ }).css("cursor", "move"); // Store the tableDnD object
+ }
+ });
+ }
+ },
+
+ updateTables: function() {
+ this.each(function() {
+ // this is now bound to each matching table
+ if (this.tableDnDConfig) {
+ jQuery.tableDnD.makeDraggable(this);
+ }
+ })
+ },
+
+ /** Get the mouse coordinates from the event (allowing for browser differences) */
+ mouseCoords: function(ev){
+ if(ev.pageX || ev.pageY){
+ return {x:ev.pageX, y:ev.pageY};
+ }
+ return {
+ x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
+ y:ev.clientY + document.body.scrollTop - document.body.clientTop
+ };
+ },
+
+ /** Given a target element and a mouse event, get the mouse offset from that element.
+ To do this we need the element's position and the mouse position */
+ getMouseOffset: function(target, ev) {
+ ev = ev || window.event;
+
+ var docPos = this.getPosition(target);
+ var mousePos = this.mouseCoords(ev);
+ return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y};
+ },
+
+ /** Get the position of an element by going up the DOM tree and adding up all the offsets */
+ getPosition: function(e){
+ var left = 0;
+ var top = 0;
+ /** Safari fix -- thanks to Luis Chato for this! */
+ if (e.offsetHeight == 0) {
+ /** Safari 2 doesn't correctly grab the offsetTop of a table row
+ this is detailed here:
+ http://jacob.peargrove.com/blog/2006/technical/table-row-offsettop-bug-in-safari/
+ the solution is likewise noted there, grab the offset of a table cell in the row - the firstChild.
+ note that firefox will return a text node as a first child, so designing a more thorough
+ solution may need to take that into account, for now this seems to work in firefox, safari, ie */
+ e = e.firstChild; // a table cell
+ }
+
+ while (e.offsetParent){
+ left += e.offsetLeft;
+ top += e.offsetTop;
+ e = e.offsetParent;
+ }
+
+ left += e.offsetLeft;
+ top += e.offsetTop;
+
+ return {x:left, y:top};
+ },
+
+ mousemove: function(ev) {
+ if (jQuery.tableDnD.dragObject == null) {
+ return;
+ }
+
+ var dragObj = jQuery(jQuery.tableDnD.dragObject);
+ var config = jQuery.tableDnD.currentTable.tableDnDConfig;
+ var mousePos = jQuery.tableDnD.mouseCoords(ev);
+ var y = mousePos.y - jQuery.tableDnD.mouseOffset.y;
+ //auto scroll the window
+ var yOffset = window.pageYOffset;
+ if (document.all) {
+ // Windows version
+ //yOffset=document.body.scrollTop;
+ if (typeof document.compatMode != 'undefined' &&
+ document.compatMode != 'BackCompat') {
+ yOffset = document.documentElement.scrollTop;
+ }
+ else if (typeof document.body != 'undefined') {
+ yOffset=document.body.scrollTop;
+ }
+
+ }
+
+ if (mousePos.y-yOffset < config.scrollAmount) {
+ window.scrollBy(0, -config.scrollAmount);
+ } else {
+ var windowHeight = window.innerHeight ? window.innerHeight
+ : document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight;
+ if (windowHeight-(mousePos.y-yOffset) < config.scrollAmount) {
+ window.scrollBy(0, config.scrollAmount);
+ }
+ }
+
+
+ if (y != jQuery.tableDnD.oldY) {
+ // work out if we're going up or down...
+ var movingDown = y > jQuery.tableDnD.oldY;
+ // update the old value
+ jQuery.tableDnD.oldY = y;
+ // update the style to show we're dragging
+ if (config.onDragClass) {
+ dragObj.addClass(config.onDragClass);
+ } else {
+ dragObj.css(config.onDragStyle);
+ }
+ // If we're over a row then move the dragged row to there so that the user sees the
+ // effect dynamically
+ var currentRow = jQuery.tableDnD.findDropTargetRow(dragObj, y);
+ if (currentRow) {
+ // TODO worry about what happens when there are multiple TBODIES
+ if (movingDown && jQuery.tableDnD.dragObject != currentRow) {
+ jQuery.tableDnD.dragObject.parentNode.insertBefore(jQuery.tableDnD.dragObject, currentRow.nextSibling);
+ } else if (! movingDown && jQuery.tableDnD.dragObject != currentRow) {
+ jQuery.tableDnD.dragObject.parentNode.insertBefore(jQuery.tableDnD.dragObject, currentRow);
+ }
+ }
+ }
+
+ return false;
+ },
+
+ /** We're only worried about the y position really, because we can only move rows up and down */
+ findDropTargetRow: function(draggedRow, y) {
+ var rows = jQuery.tableDnD.currentTable.rows;
+ for (var i=0; i<rows.length; i++) {
+ var row = rows[i];
+ var rowY = this.getPosition(row).y;
+ var rowHeight = parseInt(row.offsetHeight)/2;
+ if (row.offsetHeight == 0) {
+ rowY = this.getPosition(row.firstChild).y;
+ rowHeight = parseInt(row.firstChild.offsetHeight)/2;
+ }
+ // Because we always have to insert before, we need to offset the height a bit
+ if ((y > rowY - rowHeight) && (y < (rowY + rowHeight))) {
+ // that's the row we're over
+ // If it's the same as the current row, ignore it
+ if (row == draggedRow) {return null;}
+ var config = jQuery.tableDnD.currentTable.tableDnDConfig;
+ if (config.onAllowDrop) {
+ if (config.onAllowDrop(draggedRow, row)) {
+ return row;
+ } else {
+ return null;
+ }
+ } else {
+ // If a row has nodrop class, then don't allow dropping (inspired by John Tarr and Famic)
+ var nodrop = jQuery(row).hasClass("nodrop");
+ if (! nodrop) {
+ return row;
+ } else {
+ return null;
+ }
+ }
+ return row;
+ }
+ }
+ return null;
+ },
+
+ mouseup: function(e) {
+ if (jQuery.tableDnD.currentTable && jQuery.tableDnD.dragObject) {
+ var droppedRow = jQuery.tableDnD.dragObject;
+ var config = jQuery.tableDnD.currentTable.tableDnDConfig;
+ // If we have a dragObject, then we need to release it,
+ // The row will already have been moved to the right place so we just reset stuff
+ if (config.onDragClass) {
+ jQuery(droppedRow).removeClass(config.onDragClass);
+ } else {
+ jQuery(droppedRow).css(config.onDropStyle);
+ }
+ jQuery.tableDnD.dragObject = null;
+ if (config.onDrop) {
+ // Call the onDrop method if there is one
+ config.onDrop(jQuery.tableDnD.currentTable, droppedRow);
+ }
+ jQuery.tableDnD.currentTable = null; // let go of the table too
+ }
+ },
+
+ serialize: function() {
+ if (jQuery.tableDnD.currentTable) {
+ return jQuery.tableDnD.serializeTable(jQuery.tableDnD.currentTable);
+ } else {
+ return "Error: No Table id set, you need to set an id on your table and every row";
+ }
+ },
+
+ serializeTable: function(table) {
+ var result = "";
+ var tableId = table.id;
+ var rows = table.rows;
+ for (var i=0; i<rows.length; i++) {
+ var rowId = rows[i].id;
+ if (rowId && rowId && table.tableDnDConfig && table.tableDnDConfig.serializeRegexp) {
+ rowId = rowId.match(table.tableDnDConfig.serializeRegexp)[0];
+ }
+ if (result.length > 0) result += ",";
+ result += rowId;
+ }
+ return result;
+ },
+
+ serializeTables: function() {
+ var result = "";
+ this.each(function() {
+ // this is now bound to each matching table
+ result += jQuery.tableDnD.serializeTable(this);
+ });
+ return result;
+ }
+
+}
+
+jQuery.fn.extend(
+ {
+ tableDnD : jQuery.tableDnD.build,
+ tableDnDUpdate : jQuery.tableDnD.updateTables,
+ tableDnDSerialize: jQuery.tableDnD.serializeTables
+ }
+);
\ No newline at end of file
--- /dev/null
+/**\r
+ * SWFObject v1.4.1: Flash Player detection and embed - http://blog.deconcept.com/swfobject/\r
+ *\r
+ * SWFObject is (c) 2006 Geoff Stearns and is released under the MIT License:\r
+ * http://www.opensource.org/licenses/mit-license.php\r
+ *\r
+ * **SWFObject is the SWF embed script formerly known as FlashObject. The name was changed for\r
+ * legal reasons.\r
+ */\r
+if(typeof deconcept=="undefined"){var deconcept=new Object();}\r
+if(typeof deconcept.util=="undefined"){deconcept.util=new Object();}\r
+if(typeof deconcept.SWFObjectUtil=="undefined"){deconcept.SWFObjectUtil=new Object();}\r
+deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a,_b){\r
+if(!document.createElement||!document.getElementById){return;}\r
+this.DETECT_KEY=_b?_b:"detectflash";\r
+this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);\r
+this.params=new Object();\r
+this.variables=new Object();\r
+this.attributes=new Array();\r
+if(_1){this.setAttribute("swf",_1);}\r
+if(id){this.setAttribute("id",id);}\r
+if(w){this.setAttribute("width",w);}\r
+if(h){this.setAttribute("height",h);}\r
+if(_5){this.setAttribute("version",new deconcept.PlayerVersion(_5.toString().split(".")));}\r
+this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion(this.getAttribute("version"),_7);\r
+if(c){this.addParam("bgcolor",c);}\r
+var q=_8?_8:"high";\r
+this.addParam("quality",q);\r
+this.setAttribute("useExpressInstall",_7);\r
+this.setAttribute("doExpressInstall",false);\r
+var _d=(_9)?_9:window.location;\r
+this.setAttribute("xiRedirectUrl",_d);\r
+this.setAttribute("redirectUrl","");\r
+if(_a){this.setAttribute("redirectUrl",_a);}};\r
+deconcept.SWFObject.prototype={setAttribute:function(_e,_f){\r
+this.attributes[_e]=_f;\r
+},getAttribute:function(_10){\r
+return this.attributes[_10];\r
+},addParam:function(_11,_12){\r
+this.params[_11]=_12;\r
+},getParams:function(){\r
+return this.params;\r
+},addVariable:function(_13,_14){\r
+this.variables[_13]=_14;\r
+},getVariable:function(_15){\r
+return this.variables[_15];\r
+},getVariables:function(){\r
+return this.variables;\r
+},getVariablePairs:function(){\r
+var _16=new Array();\r
+var key;\r
+var _18=this.getVariables();\r
+for(key in _18){_16.push(key+"="+_18[key]);}\r
+return _16;\r
+},getSWFHTML:function(){\r
+var _19="";\r
+if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){\r
+if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","PlugIn");}\r
+_19="<embed type=\"application/x-shockwave-flash\" src=\""+this.getAttribute("swf")+"\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\"";\r
+_19+=" id=\""+this.getAttribute("id")+"\" name=\""+this.getAttribute("id")+"\" ";\r
+var _1a=this.getParams();\r
+for(var key in _1a){_19+=[key]+"=\""+_1a[key]+"\" ";}\r
+var _1c=this.getVariablePairs().join("&");\r
+if(_1c.length>0){_19+="flashvars=\""+_1c+"\"";}\r
+_19+="/>";}else{if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","ActiveX");}\r
+_19="<object id=\""+this.getAttribute("id")+"\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\">";\r
+_19+="<param name=\"movie\" value=\""+this.getAttribute("swf")+"\" />";\r
+var _1d=this.getParams();\r
+for(var key in _1d){_19+="<param name=\""+key+"\" value=\""+_1d[key]+"\" />";}\r
+var _1f=this.getVariablePairs().join("&");\r
+if(_1f.length>0){_19+="<param name=\"flashvars\" value=\""+_1f+"\" />";}_19+="</object>";}\r
+return _19;},write:function(_20){\r
+if(this.getAttribute("useExpressInstall")){\r
+var _21=new deconcept.PlayerVersion([6,0,65]);\r
+if(this.installedVer.versionIsValid(_21)&&!this.installedVer.versionIsValid(this.getAttribute("version"))){\r
+this.setAttribute("doExpressInstall",true);\r
+this.addVariable("MMredirectURL",escape(this.getAttribute("xiRedirectUrl")));\r
+document.title=document.title.slice(0,47)+" - Flash Player Installation";\r
+this.addVariable("MMdoctitle",document.title);}}\r
+if(this.skipDetect||this.getAttribute("doExpressInstall")||this.installedVer.versionIsValid(this.getAttribute("version"))){\r
+var n=(typeof _20=="string")?document.getElementById(_20):_20;\r
+n.innerHTML=this.getSWFHTML();return true;\r
+}else{if(this.getAttribute("redirectUrl")!=""){document.location.replace(this.getAttribute("redirectUrl"));}}return false;}};\r
+deconcept.SWFObjectUtil.getPlayerVersion=function(_23,_24){\r
+var _25=new deconcept.PlayerVersion([0,0,0]);\r
+if(navigator.plugins&&navigator.mimeTypes.length){\r
+var x=navigator.plugins["Shockwave Flash"];\r
+if(x&&x.description){_25=new deconcept.PlayerVersion(x.description.replace(/([a-z]|[A-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."));}\r
+}else{try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");\r
+for(var i=3;axo!=null;i++){axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+i);_25=new deconcept.PlayerVersion([i,0,0]);}}\r
+catch(e){}\r
+if(_23&&_25.major>_23.major){return _25;}\r
+if(!_23||((_23.minor!=0||_23.rev!=0)&&_25.major==_23.major)||_25.major!=6||_24){\r
+try{_25=new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));}\r
+catch(e){}}}return _25;};\r
+deconcept.PlayerVersion=function(_29){\r
+this.major=parseInt(_29[0])!=null?parseInt(_29[0]):0;\r
+this.minor=parseInt(_29[1])||0;\r
+this.rev=parseInt(_29[2])||0;};\r
+deconcept.PlayerVersion.prototype.versionIsValid=function(fv){\r
+if(this.major<fv.major){return false;}\r
+if(this.major>fv.major){return true;}\r
+if(this.minor<fv.minor){return false;}\r
+if(this.minor>fv.minor){return true;}\r
+if(this.rev<fv.rev){return false;}return true;};\r
+deconcept.util={getRequestParameter:function(_2b){\r
+var q=document.location.search||document.location.hash;\r
+if(q){var _2d=q.indexOf(_2b+"=");\r
+var _2e=(q.indexOf("&",_2d)>-1)?q.indexOf("&",_2d):q.length;\r
+if(q.length>1&&_2d>-1){return q.substring(q.indexOf("=",_2d)+1,_2e);}}\r
+return "";}};\r
+deconcept.SWFObjectUtil.cleanupSWFs=function(){\r
+var _2f=document.getElementsByTagName("OBJECT");\r
+for(var i=0;i<_2f.length;i++){\r
+for(var x in _2f[i]){if(typeof _2f[i][x]=="function"){_2f[i][x]=null;}}}};\r
+if(typeof window.onunload=="function"){\r
+var oldunload=window.onunload;\r
+window.onunload=function(){deconcept.SWFObjectUtil.cleanupSWFs();oldunload();};\r
+}else{window.onunload=deconcept.SWFObjectUtil.cleanupSWFs;}\r
+if(Array.prototype.push==null){\r
+Array.prototype.push=function(_32){\r
+this[this.length]=_32;\r
+return this.length;};}\r
+\r
+var getQueryParamValue = deconcept.util.getRequestParameter;\r
+var FlashObject = deconcept.SWFObject; // for backwards compatibility\r
+var SWFObject = deconcept.SWFObject;\r
+\r
--- /dev/null
+tinyMCE.addI18n({en:{\r
+common:{\r
+edit_confirm:"Do you want to use the WYSIWYG mode for this textarea?",\r
+apply:"Apply",\r
+insert:"Insert",\r
+update:"Update",\r
+cancel:"Cancel",\r
+close:"Close",\r
+browse:"Browse",\r
+class_name:"Class",\r
+not_set:"-- Not set --",\r
+clipboard_msg:"Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?",\r
+clipboard_no_support:"Currently not supported by your browser, use keyboard shortcuts instead.",\r
+popup_blocked:"Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.",\r
+invalid_data:"Error: Invalid values entered, these are marked in red.",\r
+more_colors:"More colors"\r
+},\r
+contextmenu:{\r
+align:"Alignment",\r
+left:"Left",\r
+center:"Center",\r
+right:"Right",\r
+full:"Full"\r
+},\r
+insertdatetime:{\r
+date_fmt:"%Y-%m-%d",\r
+time_fmt:"%H:%M:%S",\r
+insertdate_desc:"Insert date",\r
+inserttime_desc:"Insert time",\r
+months_long:"January,February,March,April,May,June,July,August,September,October,November,December",\r
+months_short:"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec",\r
+day_long:"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday",\r
+day_short:"Sun,Mon,Tue,Wed,Thu,Fri,Sat,Sun"\r
+},\r
+print:{\r
+print_desc:"Print"\r
+},\r
+preview:{\r
+preview_desc:"Preview"\r
+},\r
+directionality:{\r
+ltr_desc:"Direction left to right",\r
+rtl_desc:"Direction right to left"\r
+},\r
+layer:{\r
+insertlayer_desc:"Insert new layer",\r
+forward_desc:"Move forward",\r
+backward_desc:"Move backward",\r
+absolute_desc:"Toggle absolute positioning",\r
+content:"New layer..."\r
+},\r
+save:{\r
+save_desc:"Save",\r
+cancel_desc:"Cancel all changes"\r
+},\r
+nonbreaking:{\r
+nonbreaking_desc:"Insert non-breaking space character"\r
+},\r
+iespell:{\r
+iespell_desc:"Run spell checking",\r
+download:"ieSpell not detected. Do you want to install it now?"\r
+},\r
+advhr:{\r
+advhr_desc:"Horizontal rule"\r
+},\r
+emotions:{\r
+emotions_desc:"Emotions"\r
+},\r
+searchreplace:{\r
+search_desc:"Find",\r
+replace_desc:"Find/Replace"\r
+},\r
+advimage:{\r
+image_desc:"Insert/edit image"\r
+},\r
+advlink:{\r
+link_desc:"Insert/edit link"\r
+},\r
+xhtmlxtras:{\r
+cite_desc:"Citation",\r
+abbr_desc:"Abbreviation",\r
+acronym_desc:"Acronym",\r
+del_desc:"Deletion",\r
+ins_desc:"Insertion",\r
+attribs_desc:"Insert/Edit Attributes"\r
+},\r
+style:{\r
+desc:"Edit CSS Style"\r
+},\r
+paste:{\r
+paste_text_desc:"Paste as Plain Text",\r
+paste_word_desc:"Paste from Word",\r
+selectall_desc:"Select All"\r
+},\r
+paste_dlg:{\r
+text_title:"Use CTRL+V on your keyboard to paste the text into the window.",\r
+text_linebreaks:"Keep linebreaks",\r
+word_title:"Use CTRL+V on your keyboard to paste the text into the window."\r
+},\r
+table:{\r
+desc:"Inserts a new table",\r
+row_before_desc:"Insert row before",\r
+row_after_desc:"Insert row after",\r
+delete_row_desc:"Delete row",\r
+col_before_desc:"Insert column before",\r
+col_after_desc:"Insert column after",\r
+delete_col_desc:"Remove column",\r
+split_cells_desc:"Split merged table cells",\r
+merge_cells_desc:"Merge table cells",\r
+row_desc:"Table row properties",\r
+cell_desc:"Table cell properties",\r
+props_desc:"Table properties",\r
+paste_row_before_desc:"Paste table row before",\r
+paste_row_after_desc:"Paste table row after",\r
+cut_row_desc:"Cut table row",\r
+copy_row_desc:"Copy table row",\r
+del:"Delete table",\r
+row:"Row",\r
+col:"Column",\r
+cell:"Cell"\r
+},\r
+autosave:{\r
+unload_msg:"The changes you made will be lost if you navigate away from this page."\r
+},\r
+fullscreen:{\r
+desc:"Toggle fullscreen mode"\r
+},\r
+media:{\r
+desc:"Insert / edit embedded media",\r
+edit:"Edit embedded media"\r
+},\r
+fullpage:{\r
+desc:"Document properties"\r
+},\r
+template:{\r
+desc:"Insert predefined template content"\r
+},\r
+visualchars:{\r
+desc:"Visual control characters on/off."\r
+},\r
+spellchecker:{\r
+desc:"Toggle spellchecker",\r
+menu:"Spellchecker settings",\r
+ignore_word:"Ignore word",\r
+ignore_words:"Ignore all",\r
+langs:"Languages",\r
+wait:"Please wait...",\r
+sug:"Suggestions",\r
+no_sug:"No suggestions",\r
+no_mpell:"No misspellings found."\r
+},\r
+pagebreak:{\r
+desc:"Insert page break."\r
+}}});
\ No newline at end of file
--- /dev/null
+input.radio {border:1px none #000; background:transparent; vertical-align:middle;}\r
+.panel_wrapper div.current {height:80px;}\r
+#width {width:50px; vertical-align:middle;}\r
+#width2 {width:50px; vertical-align:middle;}\r
+#size {width:100px;}\r
--- /dev/null
+(function(){tinymce.create('tinymce.plugins.AdvancedHRPlugin',{init:function(ed,url){ed.addCommand('mceAdvancedHr',function(){ed.windowManager.open({file:url+'/rule.htm',width:250+parseInt(ed.getLang('advhr.delta_width',0)),height:160+parseInt(ed.getLang('advhr.delta_height',0)),inline:1},{plugin_url:url});});ed.addButton('advhr',{title:'advhr.advhr_desc',cmd:'mceAdvancedHr'});ed.onNodeChange.add(function(ed,cm,n){cm.setActive('advhr',n.nodeName=='HR');});ed.onClick.add(function(ed,e){e=e.target;if(e.nodeName==='HR')ed.selection.select(e);});},getInfo:function(){return{longname:'Advanced HR',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advhr',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('advhr',tinymce.plugins.AdvancedHRPlugin);})();
\ No newline at end of file
--- /dev/null
+/**\r
+ * $Id: editor_plugin_src.js 520 2008-01-07 16:30:32Z spocke $\r
+ *\r
+ * @author Moxiecode\r
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+(function() {\r
+ tinymce.create('tinymce.plugins.AdvancedHRPlugin', {\r
+ init : function(ed, url) {\r
+ // Register commands\r
+ ed.addCommand('mceAdvancedHr', function() {\r
+ ed.windowManager.open({\r
+ file : url + '/rule.htm',\r
+ width : 250 + parseInt(ed.getLang('advhr.delta_width', 0)),\r
+ height : 160 + parseInt(ed.getLang('advhr.delta_height', 0)),\r
+ inline : 1\r
+ }, {\r
+ plugin_url : url\r
+ });\r
+ });\r
+\r
+ // Register buttons\r
+ ed.addButton('advhr', {\r
+ title : 'advhr.advhr_desc',\r
+ cmd : 'mceAdvancedHr'\r
+ });\r
+\r
+ ed.onNodeChange.add(function(ed, cm, n) {\r
+ cm.setActive('advhr', n.nodeName == 'HR');\r
+ });\r
+\r
+ ed.onClick.add(function(ed, e) {\r
+ e = e.target;\r
+\r
+ if (e.nodeName === 'HR')\r
+ ed.selection.select(e);\r
+ });\r
+ },\r
+\r
+ getInfo : function() {\r
+ return {\r
+ longname : 'Advanced HR',\r
+ author : 'Moxiecode Systems AB',\r
+ authorurl : 'http://tinymce.moxiecode.com',\r
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advhr',\r
+ version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+ };\r
+ }\r
+ });\r
+\r
+ // Register plugin\r
+ tinymce.PluginManager.add('advhr', tinymce.plugins.AdvancedHRPlugin);\r
+})();
\ No newline at end of file
--- /dev/null
+var AdvHRDialog = {\r
+ init : function(ed) {\r
+ var dom = ed.dom, f = document.forms[0], n = ed.selection.getNode(), w;\r
+\r
+ w = dom.getAttrib(n, 'width');\r
+ f.width.value = w ? parseInt(w) : (dom.getStyle('width') || '');\r
+ f.size.value = dom.getAttrib(n, 'size') || parseInt(dom.getStyle('height')) || '';\r
+ f.noshade.checked = !!dom.getAttrib(n, 'noshade') || !!dom.getStyle('border-width');\r
+ selectByValue(f, 'width2', w.indexOf('%') != -1 ? '%' : 'px');\r
+ },\r
+\r
+ update : function() {\r
+ var ed = tinyMCEPopup.editor, h, f = document.forms[0], st = '';\r
+\r
+ h = '<hr';\r
+\r
+ if (f.size.value) {\r
+ h += ' size="' + f.size.value + '"';\r
+ st += ' height:' + f.size.value + 'px;';\r
+ }\r
+\r
+ if (f.width.value) {\r
+ h += ' width="' + f.width.value + (f.width2.value == '%' ? '%' : '') + '"';\r
+ st += ' width:' + f.width.value + (f.width2.value == '%' ? '%' : 'px') + ';';\r
+ }\r
+\r
+ if (f.noshade.checked) {\r
+ h += ' noshade="noshade"';\r
+ st += ' border-width: 1px; border-style: solid; border-color: #CCCCCC; color: #ffffff;';\r
+ }\r
+\r
+ if (ed.settings.inline_styles)\r
+ h += ' style="' + tinymce.trim(st) + '"';\r
+\r
+ h += ' />';\r
+\r
+ ed.execCommand("mceInsertContent", false, h);\r
+ tinyMCEPopup.close();\r
+ }\r
+};\r
+\r
+tinyMCEPopup.requireLangPack();\r
+tinyMCEPopup.onInit.add(AdvHRDialog.init, AdvHRDialog);\r
--- /dev/null
+tinyMCE.addI18n('en.advhr_dlg',{\r
+width:"Width",\r
+size:"Height",\r
+noshade:"No shadow"\r
+});
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+ <title>{#advhr.advhr_desc}</title>\r
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
+ <script type="text/javascript" src="js/rule.js"></script>\r
+ <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
+ <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
+ <link href="css/advhr.css" rel="stylesheet" type="text/css" />\r
+ <base target="_self" />\r
+</head>\r
+<body>\r
+<form onsubmit="AdvHRDialog.update();return false;" action="#">\r
+ <div class="tabs">\r
+ <ul>\r
+ <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advhr.advhr_desc}</a></span></li>\r
+ </ul>\r
+ </div>\r
+\r
+ <div class="panel_wrapper">\r
+ <div id="general_panel" class="panel current">\r
+ <table border="0" cellpadding="4" cellspacing="0">\r
+ <tr>\r
+ <td><label for="width">{#advhr_dlg.width}</label></td>\r
+ <td nowrap="nowrap">\r
+ <input id="width" name="width" type="text" value="" class="mceFocus" />\r
+ <select name="width2" id="width2">\r
+ <option value="">px</option>\r
+ <option value="%">%</option>\r
+ </select>\r
+ </td>\r
+ </tr>\r
+ <tr>\r
+ <td><label for="size">{#advhr_dlg.size}</label></td>\r
+ <td><select id="size" name="size">\r
+ <option value="">Normal</option>\r
+ <option value="1">1</option>\r
+ <option value="2">2</option>\r
+ <option value="3">3</option>\r
+ <option value="4">4</option>\r
+ <option value="5">5</option>\r
+ </select></td>\r
+ </tr>\r
+ <tr>\r
+ <td><label for="noshade">{#advhr_dlg.noshade}</label></td>\r
+ <td><input type="checkbox" name="noshade" id="noshade" class="radio" /></td>\r
+ </tr>\r
+ </table>\r
+ </div>\r
+ </div>\r
+\r
+ <div class="mceActionPanel">\r
+ <div style="float: left">\r
+ <input type="submit" id="insert" name="insert" value="{#insert}" />\r
+ </div>\r
+\r
+ <div style="float: right">\r
+ <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
+ </div>\r
+ </div>\r
+</form>\r
+</body>\r
+</html>\r
--- /dev/null
+#src_list, #over_list, #out_list {width:280px;}\r
+.mceActionPanel {margin-top:7px;}\r
+.alignPreview {border:1px solid #000; width:140px; height:140px; overflow:hidden; padding:5px;}\r
+.checkbox {border:0;}\r
+.panel_wrapper div.current {height:305px;}\r
+#prev {margin:0; border:1px solid #000; width:428px; height:150px; overflow:auto;}\r
+#align, #classlist {width:150px;}\r
+#width, #height {vertical-align:middle; width:50px; text-align:center;}\r
+#vspace, #hspace, #border {vertical-align:middle; width:30px; text-align:center;}\r
+#class_list {width:180px;}\r
+input {width: 280px;}\r
+#constrain, #onmousemovecheck {width:auto;}\r
+#id, #dir, #lang, #usemap, #longdesc {width:200px;}\r
--- /dev/null
+(function(){tinymce.create('tinymce.plugins.AdvancedImagePlugin',{init:function(ed,url){ed.addCommand('mceAdvImage',function(){if(ed.dom.getAttrib(ed.selection.getNode(),'class').indexOf('mceItem')!=-1)return;ed.windowManager.open({file:url+'/image.htm',width:480+parseInt(ed.getLang('advimage.delta_width',0)),height:385+parseInt(ed.getLang('advimage.delta_height',0)),inline:1},{plugin_url:url});});ed.addButton('image',{title:'advimage.image_desc',cmd:'mceAdvImage'});},getInfo:function(){return{longname:'Advanced image',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advimage',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('advimage',tinymce.plugins.AdvancedImagePlugin);})();
\ No newline at end of file
--- /dev/null
+/**\r
+ * $Id: editor_plugin_src.js 677 2008-03-07 13:52:41Z spocke $\r
+ *\r
+ * @author Moxiecode\r
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+(function() {\r
+ tinymce.create('tinymce.plugins.AdvancedImagePlugin', {\r
+ init : function(ed, url) {\r
+ // Register commands\r
+ ed.addCommand('mceAdvImage', function() {\r
+ // Internal image object like a flash placeholder\r
+ if (ed.dom.getAttrib(ed.selection.getNode(), 'class').indexOf('mceItem') != -1)\r
+ return;\r
+\r
+ ed.windowManager.open({\r
+ file : url + '/image.htm',\r
+ width : 480 + parseInt(ed.getLang('advimage.delta_width', 0)),\r
+ height : 385 + parseInt(ed.getLang('advimage.delta_height', 0)),\r
+ inline : 1\r
+ }, {\r
+ plugin_url : url\r
+ });\r
+ });\r
+\r
+ // Register buttons\r
+ ed.addButton('image', {\r
+ title : 'advimage.image_desc',\r
+ cmd : 'mceAdvImage'\r
+ });\r
+ },\r
+\r
+ getInfo : function() {\r
+ return {\r
+ longname : 'Advanced image',\r
+ author : 'Moxiecode Systems AB',\r
+ authorurl : 'http://tinymce.moxiecode.com',\r
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advimage',\r
+ version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+ };\r
+ }\r
+ });\r
+\r
+ // Register plugin\r
+ tinymce.PluginManager.add('advimage', tinymce.plugins.AdvancedImagePlugin);\r
+})();
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+ <title>{#advimage_dlg.dialog_title}</title>\r
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
+ <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
+ <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
+ <script type="text/javascript" src="../../utils/validate.js"></script>\r
+ <script type="text/javascript" src="../../utils/editable_selects.js"></script>\r
+ <script type="text/javascript" src="js/image.js"></script>\r
+ <link href="css/advimage.css" rel="stylesheet" type="text/css" />\r
+ <base target="_self" />\r
+</head>\r
+<body id="advimage" style="display: none">\r
+ <form onsubmit="ImageDialog.insert();return false;" action="#"> \r
+ <div class="tabs">\r
+ <ul>\r
+ <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advimage_dlg.tab_general}</a></span></li>\r
+ <li id="appearance_tab"><span><a href="javascript:mcTabs.displayTab('appearance_tab','appearance_panel');" onmousedown="return false;">{#advimage_dlg.tab_appearance}</a></span></li>\r
+ <li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#advimage_dlg.tab_advanced}</a></span></li>\r
+ </ul>\r
+ </div>\r
+\r
+ <div class="panel_wrapper">\r
+ <div id="general_panel" class="panel current">\r
+ <fieldset>\r
+ <legend>{#advimage_dlg.general}</legend>\r
+\r
+ <table class="properties">\r
+ <tr>\r
+ <td class="column1"><label id="srclabel" for="src">{#advimage_dlg.src}</label></td>\r
+ <td colspan="2"><table border="0" cellspacing="0" cellpadding="0">\r
+ <tr> \r
+ <td><input name="src" type="text" id="src" value="" class="mceFocus" onchange="ImageDialog.showPreviewImage(this.value);" /></td> \r
+ <td id="srcbrowsercontainer"> </td>\r
+ </tr>\r
+ </table></td>\r
+ </tr>\r
+ <tr>\r
+ <td><label for="src_list">{#advimage_dlg.image_list}</label></td>\r
+ <td><select id="src_list" name="src_list" onchange="document.getElementById('src').value=this.options[this.selectedIndex].value;document.getElementById('alt').value=this.options[this.selectedIndex].text;document.getElementById('title').value=this.options[this.selectedIndex].text;ImageDialog.showPreviewImage(this.options[this.selectedIndex].value);"></select></td>\r
+ </tr>\r
+ <tr> \r
+ <td class="column1"><label id="altlabel" for="alt">{#advimage_dlg.alt}</label></td> \r
+ <td colspan="2"><input id="alt" name="alt" type="text" value="" /></td> \r
+ </tr> \r
+ <tr> \r
+ <td class="column1"><label id="titlelabel" for="title">{#advimage_dlg.title}</label></td> \r
+ <td colspan="2"><input id="title" name="title" type="text" value="" /></td> \r
+ </tr>\r
+ </table>\r
+ </fieldset>\r
+\r
+ <fieldset>\r
+ <legend>{#advimage_dlg.preview}</legend>\r
+ <div id="prev"></div>\r
+ </fieldset>\r
+ </div>\r
+\r
+ <div id="appearance_panel" class="panel">\r
+ <fieldset>\r
+ <legend>{#advimage_dlg.tab_appearance}</legend>\r
+\r
+ <table border="0" cellpadding="4" cellspacing="0">\r
+ <tr> \r
+ <td class="column1"><label id="alignlabel" for="align">{#advimage_dlg.align}</label></td> \r
+ <td><select id="align" name="align" onchange="ImageDialog.updateStyle('align');ImageDialog.changeAppearance();"> \r
+ <option value="">{#not_set}</option> \r
+ <option value="baseline">{#advimage_dlg.align_baseline}</option>\r
+ <option value="top">{#advimage_dlg.align_top}</option>\r
+ <option value="middle">{#advimage_dlg.align_middle}</option>\r
+ <option value="bottom">{#advimage_dlg.align_bottom}</option>\r
+ <option value="text-top">{#advimage_dlg.align_texttop}</option>\r
+ <option value="text-bottom">{#advimage_dlg.align_textbottom}</option>\r
+ <option value="left">{#advimage_dlg.align_left}</option>\r
+ <option value="right">{#advimage_dlg.align_right}</option>\r
+ </select> \r
+ </td>\r
+ <td rowspan="6" valign="top">\r
+ <div class="alignPreview">\r
+ <img id="alignSampleImg" src="img/sample.gif" alt="{#advimage_dlg.example_img}" />\r
+ Lorem ipsum, Dolor sit amet, consectetuer adipiscing loreum ipsum edipiscing elit, sed diam\r
+ nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.Loreum ipsum\r
+ edipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam\r
+ erat volutpat.\r
+ </div>\r
+ </td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="column1"><label id="widthlabel" for="width">{#advimage_dlg.dimensions}</label></td>\r
+ <td nowrap="nowrap">\r
+ <input name="width" type="text" id="width" value="" size="5" maxlength="5" class="size" onchange="ImageDialog.changeHeight();" /> x \r
+ <input name="height" type="text" id="height" value="" size="5" maxlength="5" class="size" onchange="ImageDialog.changeWidth();" /> px\r
+ </td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td> </td>\r
+ <td><table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input id="constrain" type="checkbox" name="constrain" class="checkbox" /></td>\r
+ <td><label id="constrainlabel" for="constrain">{#advimage_dlg.constrain_proportions}</label></td>\r
+ </tr>\r
+ </table></td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="column1"><label id="vspacelabel" for="vspace">{#advimage_dlg.vspace}</label></td> \r
+ <td><input name="vspace" type="text" id="vspace" value="" size="3" maxlength="3" class="number" onchange="ImageDialog.updateStyle('vspace');ImageDialog.changeAppearance();" onblur="ImageDialog.updateStyle('vspace');ImageDialog.changeAppearance();" />\r
+ </td>\r
+ </tr>\r
+\r
+ <tr> \r
+ <td class="column1"><label id="hspacelabel" for="hspace">{#advimage_dlg.hspace}</label></td> \r
+ <td><input name="hspace" type="text" id="hspace" value="" size="3" maxlength="3" class="number" onchange="ImageDialog.updateStyle('hspace');ImageDialog.changeAppearance();" onblur="ImageDialog.updateStyle('hspace');ImageDialog.changeAppearance();" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="column1"><label id="borderlabel" for="border">{#advimage_dlg.border}</label></td> \r
+ <td><input id="border" name="border" type="text" value="" size="3" maxlength="3" class="number" onchange="ImageDialog.updateStyle('border');ImageDialog.changeAppearance();" onblur="ImageDialog.updateStyle('border');ImageDialog.changeAppearance();" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td><label for="class_list">{#class_name}</label></td>\r
+ <td colspan="2"><select id="class_list" name="class_list" class="mceEditableSelect"></select></td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="column1"><label id="stylelabel" for="style">{#advimage_dlg.style}</label></td> \r
+ <td colspan="2"><input id="style" name="style" type="text" value="" onchange="ImageDialog.changeAppearance();" /></td> \r
+ </tr>\r
+\r
+ <!-- <tr>\r
+ <td class="column1"><label id="classeslabel" for="classes">{#advimage_dlg.classes}</label></td> \r
+ <td colspan="2"><input id="classes" name="classes" type="text" value="" onchange="selectByValue(this.form,'classlist',this.value,true);" /></td> \r
+ </tr> -->\r
+ </table>\r
+ </fieldset>\r
+ </div>\r
+\r
+ <div id="advanced_panel" class="panel">\r
+ <fieldset>\r
+ <legend>{#advimage_dlg.swap_image}</legend>\r
+\r
+ <input type="checkbox" id="onmousemovecheck" name="onmousemovecheck" class="checkbox" onclick="ImageDialog.setSwapImage(this.checked);" />\r
+ <label id="onmousemovechecklabel" for="onmousemovecheck">{#advimage_dlg.alt_image}</label>\r
+\r
+ <table border="0" cellpadding="4" cellspacing="0" width="100%">\r
+ <tr>\r
+ <td class="column1"><label id="onmouseoversrclabel" for="onmouseoversrc">{#advimage_dlg.mouseover}</label></td> \r
+ <td><table border="0" cellspacing="0" cellpadding="0"> \r
+ <tr> \r
+ <td><input id="onmouseoversrc" name="onmouseoversrc" type="text" value="" /></td> \r
+ <td id="onmouseoversrccontainer"> </td>\r
+ </tr>\r
+ </table></td>\r
+ </tr>\r
+ <tr>\r
+ <td><label for="over_list">{#advimage_dlg.image_list}</label></td>\r
+ <td><select id="over_list" name="over_list" onchange="document.getElementById('onmouseoversrc').value=this.options[this.selectedIndex].value;"></select></td>\r
+ </tr>\r
+ <tr> \r
+ <td class="column1"><label id="onmouseoutsrclabel" for="onmouseoutsrc">{#advimage_dlg.mouseout}</label></td> \r
+ <td class="column2"><table border="0" cellspacing="0" cellpadding="0"> \r
+ <tr> \r
+ <td><input id="onmouseoutsrc" name="onmouseoutsrc" type="text" value="" /></td> \r
+ <td id="onmouseoutsrccontainer"> </td>\r
+ </tr> \r
+ </table></td> \r
+ </tr>\r
+ <tr>\r
+ <td><label for="out_list">{#advimage_dlg.image_list}</label></td>\r
+ <td><select id="out_list" name="out_list" onchange="document.getElementById('onmouseoutsrc').value=this.options[this.selectedIndex].value;"></select></td>\r
+ </tr>\r
+ </table>\r
+ </fieldset>\r
+\r
+ <fieldset>\r
+ <legend>{#advimage_dlg.misc}</legend>\r
+\r
+ <table border="0" cellpadding="4" cellspacing="0">\r
+ <tr>\r
+ <td class="column1"><label id="idlabel" for="id">{#advimage_dlg.id}</label></td> \r
+ <td><input id="id" name="id" type="text" value="" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="column1"><label id="dirlabel" for="dir">{#advimage_dlg.langdir}</label></td> \r
+ <td>\r
+ <select id="dir" name="dir" onchange="ImageDialog.changeAppearance();"> \r
+ <option value="">{#not_set}</option> \r
+ <option value="ltr">{#advimage_dlg.ltr}</option> \r
+ <option value="rtl">{#advimage_dlg.rtl}</option> \r
+ </select>\r
+ </td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="column1"><label id="langlabel" for="lang">{#advimage_dlg.langcode}</label></td> \r
+ <td>\r
+ <input id="lang" name="lang" type="text" value="" />\r
+ </td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="column1"><label id="usemaplabel" for="usemap">{#advimage_dlg.map}</label></td> \r
+ <td>\r
+ <input id="usemap" name="usemap" type="text" value="" />\r
+ </td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="column1"><label id="longdesclabel" for="longdesc">{#advimage_dlg.long_desc}</label></td>\r
+ <td><table border="0" cellspacing="0" cellpadding="0">\r
+ <tr>\r
+ <td><input id="longdesc" name="longdesc" type="text" value="" /></td>\r
+ <td id="longdesccontainer"> </td>\r
+ </tr>\r
+ </table></td> \r
+ </tr>\r
+ </table>\r
+ </fieldset>\r
+ </div>\r
+ </div>\r
+\r
+ <div class="mceActionPanel">\r
+ <div style="float: left">\r
+ <input type="submit" id="insert" name="insert" value="{#insert}" />\r
+ </div>\r
+\r
+ <div style="float: right">\r
+ <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
+ </div>\r
+ </div>\r
+ </form>\r
+</body> \r
+</html> \r
--- /dev/null
+var ImageDialog = {\r
+ preInit : function() {\r
+ var url;\r
+\r
+ tinyMCEPopup.requireLangPack();\r
+\r
+ if (url = tinyMCEPopup.getParam("external_image_list_url"))\r
+ document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>');\r
+ },\r
+\r
+ init : function(ed) {\r
+ var f = document.forms[0], nl = f.elements, ed = tinyMCEPopup.editor, dom = ed.dom, n = ed.selection.getNode();\r
+\r
+ tinyMCEPopup.resizeToInnerSize();\r
+ this.fillClassList('class_list');\r
+ this.fillFileList('src_list', 'tinyMCEImageList');\r
+ this.fillFileList('over_list', 'tinyMCEImageList');\r
+ this.fillFileList('out_list', 'tinyMCEImageList');\r
+ TinyMCE_EditableSelects.init();\r
+\r
+ if (n.nodeName == 'IMG') {\r
+ nl.src.value = dom.getAttrib(n, 'src');\r
+ nl.width.value = dom.getAttrib(n, 'width');\r
+ nl.height.value = dom.getAttrib(n, 'height');\r
+ nl.alt.value = dom.getAttrib(n, 'alt');\r
+ nl.title.value = dom.getAttrib(n, 'title');\r
+ nl.vspace.value = this.getAttrib(n, 'vspace');\r
+ nl.hspace.value = this.getAttrib(n, 'hspace');\r
+ nl.border.value = this.getAttrib(n, 'border');\r
+ selectByValue(f, 'align', this.getAttrib(n, 'align'));\r
+ selectByValue(f, 'class_list', dom.getAttrib(n, 'class'), true, true);\r
+ nl.style.value = dom.getAttrib(n, 'style');\r
+ nl.id.value = dom.getAttrib(n, 'id');\r
+ nl.dir.value = dom.getAttrib(n, 'dir');\r
+ nl.lang.value = dom.getAttrib(n, 'lang');\r
+ nl.usemap.value = dom.getAttrib(n, 'usemap');\r
+ nl.longdesc.value = dom.getAttrib(n, 'longdesc');\r
+ nl.insert.value = ed.getLang('update');\r
+\r
+ if (/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/.test(dom.getAttrib(n, 'onmouseover')))\r
+ nl.onmouseoversrc.value = dom.getAttrib(n, 'onmouseover').replace(/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/, '$1');\r
+\r
+ if (/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/.test(dom.getAttrib(n, 'onmouseout')))\r
+ nl.onmouseoutsrc.value = dom.getAttrib(n, 'onmouseout').replace(/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/, '$1');\r
+\r
+ if (ed.settings.inline_styles) {\r
+ // Move attribs to styles\r
+ if (dom.getAttrib(n, 'align'))\r
+ this.updateStyle('align');\r
+\r
+ if (dom.getAttrib(n, 'hspace'))\r
+ this.updateStyle('hspace');\r
+\r
+ if (dom.getAttrib(n, 'border'))\r
+ this.updateStyle('border');\r
+\r
+ if (dom.getAttrib(n, 'vspace'))\r
+ this.updateStyle('vspace');\r
+ }\r
+ }\r
+\r
+ // Setup browse button\r
+ document.getElementById('srcbrowsercontainer').innerHTML = getBrowserHTML('srcbrowser','src','image','theme_advanced_image');\r
+ if (isVisible('srcbrowser'))\r
+ document.getElementById('src').style.width = '260px';\r
+\r
+ // Setup browse button\r
+ document.getElementById('onmouseoversrccontainer').innerHTML = getBrowserHTML('overbrowser','onmouseoversrc','image','theme_advanced_image');\r
+ if (isVisible('overbrowser'))\r
+ document.getElementById('onmouseoversrc').style.width = '260px';\r
+\r
+ // Setup browse button\r
+ document.getElementById('onmouseoutsrccontainer').innerHTML = getBrowserHTML('outbrowser','onmouseoutsrc','image','theme_advanced_image');\r
+ if (isVisible('outbrowser'))\r
+ document.getElementById('onmouseoutsrc').style.width = '260px';\r
+\r
+ // If option enabled default contrain proportions to checked\r
+ if (ed.getParam("advimage_constrain_proportions", true))\r
+ f.constrain.checked = true;\r
+\r
+ // Check swap image if valid data\r
+ if (nl.onmouseoversrc.value || nl.onmouseoutsrc.value)\r
+ this.setSwapImage(true);\r
+ else\r
+ this.setSwapImage(false);\r
+\r
+ this.changeAppearance();\r
+ this.showPreviewImage(nl.src.value, 1);\r
+ },\r
+\r
+ insert : function(file, title) {\r
+ var ed = tinyMCEPopup.editor, t = this, f = document.forms[0];\r
+\r
+ if (f.src.value === '') {\r
+ if (ed.selection.getNode().nodeName == 'IMG') {\r
+ ed.dom.remove(ed.selection.getNode());\r
+ ed.execCommand('mceRepaint');\r
+ }\r
+\r
+ tinyMCEPopup.close();\r
+ return;\r
+ }\r
+\r
+ if (tinyMCEPopup.getParam("accessibility_warnings", 1)) {\r
+ if (!f.alt.value) {\r
+ tinyMCEPopup.confirm(tinyMCEPopup.getLang('advimage_dlg.missing_alt'), function(s) {\r
+ if (s)\r
+ t.insertAndClose();\r
+ });\r
+\r
+ return;\r
+ }\r
+ }\r
+\r
+ t.insertAndClose();\r
+ },\r
+\r
+ insertAndClose : function() {\r
+ var ed = tinyMCEPopup.editor, f = document.forms[0], nl = f.elements, v, args = {}, el;\r
+\r
+ tinyMCEPopup.restoreSelection();\r
+\r
+ // Fixes crash in Safari\r
+ if (tinymce.isWebKit)\r
+ ed.getWin().focus();\r
+\r
+ if (!ed.settings.inline_styles) {\r
+ args = {\r
+ vspace : nl.vspace.value,\r
+ hspace : nl.hspace.value,\r
+ border : nl.border.value,\r
+ align : getSelectValue(f, 'align')\r
+ };\r
+ } else {\r
+ // Remove deprecated values\r
+ args = {\r
+ vspace : '',\r
+ hspace : '',\r
+ border : '',\r
+ align : ''\r
+ };\r
+ }\r
+\r
+ tinymce.extend(args, {\r
+ src : nl.src.value,\r
+ width : nl.width.value,\r
+ height : nl.height.value,\r
+ alt : nl.alt.value,\r
+ title : nl.title.value,\r
+ 'class' : getSelectValue(f, 'class_list'),\r
+ style : nl.style.value,\r
+ id : nl.id.value,\r
+ dir : nl.dir.value,\r
+ lang : nl.lang.value,\r
+ usemap : nl.usemap.value,\r
+ longdesc : nl.longdesc.value\r
+ });\r
+\r
+ args.onmouseover = args.onmouseout = '';\r
+\r
+ if (f.onmousemovecheck.checked) {\r
+ if (nl.onmouseoversrc.value)\r
+ args.onmouseover = "this.src='" + nl.onmouseoversrc.value + "';";\r
+\r
+ if (nl.onmouseoutsrc.value)\r
+ args.onmouseout = "this.src='" + nl.onmouseoutsrc.value + "';";\r
+ }\r
+\r
+ el = ed.selection.getNode();\r
+\r
+ if (el && el.nodeName == 'IMG') {\r
+ ed.dom.setAttribs(el, args);\r
+ } else {\r
+ ed.execCommand('mceInsertContent', false, '<img id="__mce_tmp" />', {skip_undo : 1});\r
+ ed.dom.setAttribs('__mce_tmp', args);\r
+ ed.dom.setAttrib('__mce_tmp', 'id', '');\r
+ ed.undoManager.add();\r
+ }\r
+\r
+ tinyMCEPopup.close();\r
+ },\r
+\r
+ getAttrib : function(e, at) {\r
+ var ed = tinyMCEPopup.editor, dom = ed.dom, v, v2;\r
+\r
+ if (ed.settings.inline_styles) {\r
+ switch (at) {\r
+ case 'align':\r
+ if (v = dom.getStyle(e, 'float'))\r
+ return v;\r
+\r
+ if (v = dom.getStyle(e, 'vertical-align'))\r
+ return v;\r
+\r
+ break;\r
+\r
+ case 'hspace':\r
+ v = dom.getStyle(e, 'margin-left')\r
+ v2 = dom.getStyle(e, 'margin-right');\r
+\r
+ if (v && v == v2)\r
+ return parseInt(v.replace(/[^0-9]/g, ''));\r
+\r
+ break;\r
+\r
+ case 'vspace':\r
+ v = dom.getStyle(e, 'margin-top')\r
+ v2 = dom.getStyle(e, 'margin-bottom');\r
+ if (v && v == v2)\r
+ return parseInt(v.replace(/[^0-9]/g, ''));\r
+\r
+ break;\r
+\r
+ case 'border':\r
+ v = 0;\r
+\r
+ tinymce.each(['top', 'right', 'bottom', 'left'], function(sv) {\r
+ sv = dom.getStyle(e, 'border-' + sv + '-width');\r
+\r
+ // False or not the same as prev\r
+ if (!sv || (sv != v && v !== 0)) {\r
+ v = 0;\r
+ return false;\r
+ }\r
+\r
+ if (sv)\r
+ v = sv;\r
+ });\r
+\r
+ if (v)\r
+ return parseInt(v.replace(/[^0-9]/g, ''));\r
+\r
+ break;\r
+ }\r
+ }\r
+\r
+ if (v = dom.getAttrib(e, at))\r
+ return v;\r
+\r
+ return '';\r
+ },\r
+\r
+ setSwapImage : function(st) {\r
+ var f = document.forms[0];\r
+\r
+ f.onmousemovecheck.checked = st;\r
+ setBrowserDisabled('overbrowser', !st);\r
+ setBrowserDisabled('outbrowser', !st);\r
+\r
+ if (f.over_list)\r
+ f.over_list.disabled = !st;\r
+\r
+ if (f.out_list)\r
+ f.out_list.disabled = !st;\r
+\r
+ f.onmouseoversrc.disabled = !st;\r
+ f.onmouseoutsrc.disabled = !st;\r
+ },\r
+\r
+ fillClassList : function(id) {\r
+ var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;\r
+\r
+ if (v = tinyMCEPopup.getParam('theme_advanced_styles')) {\r
+ cl = [];\r
+\r
+ tinymce.each(v.split(';'), function(v) {\r
+ var p = v.split('=');\r
+\r
+ cl.push({'title' : p[0], 'class' : p[1]});\r
+ });\r
+ } else\r
+ cl = tinyMCEPopup.editor.dom.getClasses();\r
+\r
+ if (cl.length > 0) {\r
+ lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), '');\r
+\r
+ tinymce.each(cl, function(o) {\r
+ lst.options[lst.options.length] = new Option(o.title || o['class'], o['class']);\r
+ });\r
+ } else\r
+ dom.remove(dom.getParent(id, 'tr'));\r
+ },\r
+\r
+ fillFileList : function(id, l) {\r
+ var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;\r
+\r
+ l = window[l];\r
+\r
+ if (l && l.length > 0) {\r
+ lst.options[lst.options.length] = new Option('', '');\r
+\r
+ tinymce.each(l, function(o) {\r
+ lst.options[lst.options.length] = new Option(o[0], o[1]);\r
+ });\r
+ } else\r
+ dom.remove(dom.getParent(id, 'tr'));\r
+ },\r
+\r
+ resetImageData : function() {\r
+ var f = document.forms[0];\r
+\r
+ f.elements.width.value = f.elements.height.value = '';\r
+ },\r
+\r
+ updateImageData : function(img, st) {\r
+ var f = document.forms[0];\r
+\r
+ if (!st) {\r
+ f.elements.width.value = img.width;\r
+ f.elements.height.value = img.height;\r
+ }\r
+\r
+ this.preloadImg = img;\r
+ },\r
+\r
+ changeAppearance : function() {\r
+ var ed = tinyMCEPopup.editor, f = document.forms[0], img = document.getElementById('alignSampleImg');\r
+\r
+ if (img) {\r
+ if (ed.getParam('inline_styles')) {\r
+ ed.dom.setAttrib(img, 'style', f.style.value);\r
+ } else {\r
+ img.align = f.align.value;\r
+ img.border = f.border.value;\r
+ img.hspace = f.hspace.value;\r
+ img.vspace = f.vspace.value;\r
+ }\r
+ }\r
+ },\r
+\r
+ changeHeight : function() {\r
+ var f = document.forms[0], tp, t = this;\r
+\r
+ if (!f.constrain.checked || !t.preloadImg) {\r
+ return;\r
+ }\r
+\r
+ if (f.width.value == "" || f.height.value == "")\r
+ return;\r
+\r
+ tp = (parseInt(f.width.value) / parseInt(t.preloadImg.width)) * t.preloadImg.height;\r
+ f.height.value = tp.toFixed(0);\r
+ },\r
+\r
+ changeWidth : function() {\r
+ var f = document.forms[0], tp, t = this;\r
+\r
+ if (!f.constrain.checked || !t.preloadImg) {\r
+ return;\r
+ }\r
+\r
+ if (f.width.value == "" || f.height.value == "")\r
+ return;\r
+\r
+ tp = (parseInt(f.height.value) / parseInt(t.preloadImg.height)) * t.preloadImg.width;\r
+ f.width.value = tp.toFixed(0);\r
+ },\r
+\r
+ updateStyle : function(ty) {\r
+ var dom = tinyMCEPopup.dom, st, v, f = document.forms[0], img = dom.create('img', {style : dom.get('style').value});\r
+\r
+ if (tinyMCEPopup.editor.settings.inline_styles) {\r
+ // Handle align\r
+ if (ty == 'align') {\r
+ dom.setStyle(img, 'float', '');\r
+ dom.setStyle(img, 'vertical-align', '');\r
+\r
+ v = getSelectValue(f, 'align');\r
+ if (v) {\r
+ if (v == 'left' || v == 'right')\r
+ dom.setStyle(img, 'float', v);\r
+ else\r
+ img.style.verticalAlign = v;\r
+ }\r
+ }\r
+\r
+ // Handle border\r
+ if (ty == 'border') {\r
+ dom.setStyle(img, 'border', '');\r
+\r
+ v = f.border.value;\r
+ if (v || v == '0') {\r
+ if (v == '0')\r
+ img.style.border = '0';\r
+ else\r
+ img.style.border = v + 'px solid black';\r
+ }\r
+ }\r
+\r
+ // Handle hspace\r
+ if (ty == 'hspace') {\r
+ dom.setStyle(img, 'marginLeft', '');\r
+ dom.setStyle(img, 'marginRight', '');\r
+\r
+ v = f.hspace.value;\r
+ if (v) {\r
+ img.style.marginLeft = v + 'px';\r
+ img.style.marginRight = v + 'px';\r
+ }\r
+ }\r
+\r
+ // Handle vspace\r
+ if (ty == 'vspace') {\r
+ dom.setStyle(img, 'marginTop', '');\r
+ dom.setStyle(img, 'marginBottom', '');\r
+\r
+ v = f.vspace.value;\r
+ if (v) {\r
+ img.style.marginTop = v + 'px';\r
+ img.style.marginBottom = v + 'px';\r
+ }\r
+ }\r
+\r
+ // Merge\r
+ dom.get('style').value = dom.serializeStyle(dom.parseStyle(img.style.cssText));\r
+ }\r
+ },\r
+\r
+ changeMouseMove : function() {\r
+ },\r
+\r
+ showPreviewImage : function(u, st) {\r
+ if (!u) {\r
+ tinyMCEPopup.dom.setHTML('prev', '');\r
+ return;\r
+ }\r
+\r
+ if (!st && tinyMCEPopup.getParam("advimage_update_dimensions_onchange", true))\r
+ this.resetImageData();\r
+\r
+ u = tinyMCEPopup.editor.documentBaseURI.toAbsolute(u);\r
+\r
+ if (!st)\r
+ tinyMCEPopup.dom.setHTML('prev', '<img id="previewImg" src="' + u + '" border="0" onload="ImageDialog.updateImageData(this);" onerror="ImageDialog.resetImageData();" />');\r
+ else\r
+ tinyMCEPopup.dom.setHTML('prev', '<img id="previewImg" src="' + u + '" border="0" onload="ImageDialog.updateImageData(this, 1);" />');\r
+ }\r
+};\r
+\r
+ImageDialog.preInit();\r
+tinyMCEPopup.onInit.add(ImageDialog.init, ImageDialog);\r
--- /dev/null
+tinyMCE.addI18n('en.advimage_dlg',{\r
+tab_general:"General",\r
+tab_appearance:"Appearance",\r
+tab_advanced:"Advanced",\r
+general:"General",\r
+title:"Title",\r
+preview:"Preview",\r
+constrain_proportions:"Constrain proportions",\r
+langdir:"Language direction",\r
+langcode:"Language code",\r
+long_desc:"Long description link",\r
+style:"Style",\r
+classes:"Classes",\r
+ltr:"Left to right",\r
+rtl:"Right to left",\r
+id:"Id",\r
+map:"Image map",\r
+swap_image:"Swap image",\r
+alt_image:"Alternative image",\r
+mouseover:"for mouse over",\r
+mouseout:"for mouse out",\r
+misc:"Miscellaneous",\r
+example_img:"Appearance preview image",\r
+missing_alt:"Are you sure you want to continue without including an Image Description? Without it the image may not be accessible to some users with disabilities, or to those using a text browser, or browsing the Web with images turned off.",\r
+dialog_title:"Insert/edit image",\r
+src:"Image URL",\r
+alt:"Image description",\r
+list:"Image list",\r
+border:"Border",\r
+dimensions:"Dimensions",\r
+vspace:"Vertical space",\r
+hspace:"Horizontal space",\r
+align:"Alignment",\r
+align_baseline:"Baseline",\r
+align_top:"Top",\r
+align_middle:"Middle",\r
+align_bottom:"Bottom",\r
+align_texttop:"Text top",\r
+align_textbottom:"Text bottom",\r
+align_left:"Left",\r
+align_right:"Right",\r
+image_list:"Image list"\r
+});
\ No newline at end of file
--- /dev/null
+.mceLinkList, .mceAnchorList, #targetlist {width:280px;}\r
+.mceActionPanel {margin-top:7px;}\r
+.panel_wrapper div.current {height:320px;}\r
+#classlist, #title, #href {width:280px;}\r
+#popupurl, #popupname {width:200px;}\r
+#popupwidth, #popupheight, #popupleft, #popuptop {width:30px;vertical-align:middle;text-align:center;}\r
+#id, #style, #classes, #target, #dir, #hreflang, #lang, #charset, #type, #rel, #rev, #tabindex, #accesskey {width:200px;}\r
+#events_panel input {width:200px;}\r
--- /dev/null
+(function(){tinymce.create('tinymce.plugins.AdvancedLinkPlugin',{init:function(ed,url){this.editor=ed;ed.addCommand('mceAdvLink',function(){var se=ed.selection;if(se.isCollapsed()&&!ed.dom.getParent(se.getNode(),'A'))return;ed.windowManager.open({file:url+'/link.htm',width:480+parseInt(ed.getLang('advlink.delta_width',0)),height:400+parseInt(ed.getLang('advlink.delta_height',0)),inline:1},{plugin_url:url});});ed.addButton('link',{title:'advlink.link_desc',cmd:'mceAdvLink'});ed.addShortcut('ctrl+k','advlink.advlink_desc','mceAdvLink');ed.onNodeChange.add(function(ed,cm,n,co){cm.setDisabled('link',co&&n.nodeName!='A');cm.setActive('link',n.nodeName=='A'&&!n.name);});},getInfo:function(){return{longname:'Advanced link',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlink',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('advlink',tinymce.plugins.AdvancedLinkPlugin);})();
\ No newline at end of file
--- /dev/null
+/**\r
+ * $Id: editor_plugin_src.js 539 2008-01-14 19:08:58Z spocke $\r
+ *\r
+ * @author Moxiecode\r
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+(function() {\r
+ tinymce.create('tinymce.plugins.AdvancedLinkPlugin', {\r
+ init : function(ed, url) {\r
+ this.editor = ed;\r
+\r
+ // Register commands\r
+ ed.addCommand('mceAdvLink', function() {\r
+ var se = ed.selection;\r
+\r
+ // No selection and not in link\r
+ if (se.isCollapsed() && !ed.dom.getParent(se.getNode(), 'A'))\r
+ return;\r
+\r
+ ed.windowManager.open({\r
+ file : url + '/link.htm',\r
+ width : 480 + parseInt(ed.getLang('advlink.delta_width', 0)),\r
+ height : 400 + parseInt(ed.getLang('advlink.delta_height', 0)),\r
+ inline : 1\r
+ }, {\r
+ plugin_url : url\r
+ });\r
+ });\r
+\r
+ // Register buttons\r
+ ed.addButton('link', {\r
+ title : 'advlink.link_desc',\r
+ cmd : 'mceAdvLink'\r
+ });\r
+\r
+ ed.addShortcut('ctrl+k', 'advlink.advlink_desc', 'mceAdvLink');\r
+\r
+ ed.onNodeChange.add(function(ed, cm, n, co) {\r
+ cm.setDisabled('link', co && n.nodeName != 'A');\r
+ cm.setActive('link', n.nodeName == 'A' && !n.name);\r
+ });\r
+ },\r
+\r
+ getInfo : function() {\r
+ return {\r
+ longname : 'Advanced link',\r
+ author : 'Moxiecode Systems AB',\r
+ authorurl : 'http://tinymce.moxiecode.com',\r
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlink',\r
+ version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+ };\r
+ }\r
+ });\r
+\r
+ // Register plugin\r
+ tinymce.PluginManager.add('advlink', tinymce.plugins.AdvancedLinkPlugin);\r
+})();
\ No newline at end of file
--- /dev/null
+/* Functions for the advlink plugin popup */\r
+\r
+tinyMCEPopup.requireLangPack();\r
+\r
+var templates = {\r
+ "window.open" : "window.open('${url}','${target}','${options}')"\r
+};\r
+\r
+function preinit() {\r
+ var url;\r
+\r
+ if (url = tinyMCEPopup.getParam("external_link_list_url"))\r
+ document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>');\r
+}\r
+\r
+function changeClass() {\r
+ var f = document.forms[0];\r
+\r
+ f.classes.value = getSelectValue(f, 'classlist');\r
+}\r
+\r
+function init() {\r
+ tinyMCEPopup.resizeToInnerSize();\r
+\r
+ var formObj = document.forms[0];\r
+ var inst = tinyMCEPopup.editor;\r
+ var elm = inst.selection.getNode();\r
+ var action = "insert";\r
+ var html;\r
+\r
+ document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser','href','file','advlink');\r
+ document.getElementById('popupurlbrowsercontainer').innerHTML = getBrowserHTML('popupurlbrowser','popupurl','file','advlink');\r
+ document.getElementById('linklisthrefcontainer').innerHTML = getLinkListHTML('linklisthref','href');\r
+ document.getElementById('anchorlistcontainer').innerHTML = getAnchorListHTML('anchorlist','href');\r
+ document.getElementById('targetlistcontainer').innerHTML = getTargetListHTML('targetlist','target');\r
+\r
+ // Link list\r
+ html = getLinkListHTML('linklisthref','href');\r
+ if (html == "")\r
+ document.getElementById("linklisthrefrow").style.display = 'none';\r
+ else\r
+ document.getElementById("linklisthrefcontainer").innerHTML = html;\r
+\r
+ // Resize some elements\r
+ if (isVisible('hrefbrowser'))\r
+ document.getElementById('href').style.width = '260px';\r
+\r
+ if (isVisible('popupurlbrowser'))\r
+ document.getElementById('popupurl').style.width = '180px';\r
+\r
+ elm = inst.dom.getParent(elm, "A");\r
+ if (elm != null && elm.nodeName == "A")\r
+ action = "update";\r
+\r
+ formObj.insert.value = tinyMCEPopup.getLang(action, 'Insert', true); \r
+\r
+ setPopupControlsDisabled(true);\r
+\r
+ if (action == "update") {\r
+ var href = inst.dom.getAttrib(elm, 'href');\r
+ var onclick = inst.dom.getAttrib(elm, 'onclick');\r
+\r
+ // Setup form data\r
+ setFormValue('href', href);\r
+ setFormValue('title', inst.dom.getAttrib(elm, 'title'));\r
+ setFormValue('id', inst.dom.getAttrib(elm, 'id'));\r
+ setFormValue('style', inst.dom.getAttrib(elm, "style"));\r
+ setFormValue('rel', inst.dom.getAttrib(elm, 'rel'));\r
+ setFormValue('rev', inst.dom.getAttrib(elm, 'rev'));\r
+ setFormValue('charset', inst.dom.getAttrib(elm, 'charset'));\r
+ setFormValue('hreflang', inst.dom.getAttrib(elm, 'hreflang'));\r
+ setFormValue('dir', inst.dom.getAttrib(elm, 'dir'));\r
+ setFormValue('lang', inst.dom.getAttrib(elm, 'lang'));\r
+ setFormValue('tabindex', inst.dom.getAttrib(elm, 'tabindex', typeof(elm.tabindex) != "undefined" ? elm.tabindex : ""));\r
+ setFormValue('accesskey', inst.dom.getAttrib(elm, 'accesskey', typeof(elm.accesskey) != "undefined" ? elm.accesskey : ""));\r
+ setFormValue('type', inst.dom.getAttrib(elm, 'type'));\r
+ setFormValue('onfocus', inst.dom.getAttrib(elm, 'onfocus'));\r
+ setFormValue('onblur', inst.dom.getAttrib(elm, 'onblur'));\r
+ setFormValue('onclick', onclick);\r
+ setFormValue('ondblclick', inst.dom.getAttrib(elm, 'ondblclick'));\r
+ setFormValue('onmousedown', inst.dom.getAttrib(elm, 'onmousedown'));\r
+ setFormValue('onmouseup', inst.dom.getAttrib(elm, 'onmouseup'));\r
+ setFormValue('onmouseover', inst.dom.getAttrib(elm, 'onmouseover'));\r
+ setFormValue('onmousemove', inst.dom.getAttrib(elm, 'onmousemove'));\r
+ setFormValue('onmouseout', inst.dom.getAttrib(elm, 'onmouseout'));\r
+ setFormValue('onkeypress', inst.dom.getAttrib(elm, 'onkeypress'));\r
+ setFormValue('onkeydown', inst.dom.getAttrib(elm, 'onkeydown'));\r
+ setFormValue('onkeyup', inst.dom.getAttrib(elm, 'onkeyup'));\r
+ setFormValue('target', inst.dom.getAttrib(elm, 'target'));\r
+ setFormValue('classes', inst.dom.getAttrib(elm, 'class'));\r
+\r
+ // Parse onclick data\r
+ if (onclick != null && onclick.indexOf('window.open') != -1)\r
+ parseWindowOpen(onclick);\r
+ else\r
+ parseFunction(onclick);\r
+\r
+ // Select by the values\r
+ selectByValue(formObj, 'dir', inst.dom.getAttrib(elm, 'dir'));\r
+ selectByValue(formObj, 'rel', inst.dom.getAttrib(elm, 'rel'));\r
+ selectByValue(formObj, 'rev', inst.dom.getAttrib(elm, 'rev'));\r
+ selectByValue(formObj, 'linklisthref', href);\r
+\r
+ if (href.charAt(0) == '#')\r
+ selectByValue(formObj, 'anchorlist', href);\r
+\r
+ addClassesToList('classlist', 'advlink_styles');\r
+\r
+ selectByValue(formObj, 'classlist', inst.dom.getAttrib(elm, 'class'), true);\r
+ selectByValue(formObj, 'targetlist', inst.dom.getAttrib(elm, 'target'), true);\r
+ } else\r
+ addClassesToList('classlist', 'advlink_styles');\r
+}\r
+\r
+function checkPrefix(n) {\r
+ if (n.value && Validator.isEmail(n) && !/^\s*mailto:/i.test(n.value) && confirm(tinyMCEPopup.getLang('advlink_dlg.is_email')))\r
+ n.value = 'mailto:' + n.value;\r
+\r
+ if (/^\s*www./i.test(n.value) && confirm(tinyMCEPopup.getLang('advlink_dlg.is_external')))\r
+ n.value = 'http://' + n.value;\r
+}\r
+\r
+function setFormValue(name, value) {\r
+ document.forms[0].elements[name].value = value;\r
+}\r
+\r
+function parseWindowOpen(onclick) {\r
+ var formObj = document.forms[0];\r
+\r
+ // Preprocess center code\r
+ if (onclick.indexOf('return false;') != -1) {\r
+ formObj.popupreturn.checked = true;\r
+ onclick = onclick.replace('return false;', '');\r
+ } else\r
+ formObj.popupreturn.checked = false;\r
+\r
+ var onClickData = parseLink(onclick);\r
+\r
+ if (onClickData != null) {\r
+ formObj.ispopup.checked = true;\r
+ setPopupControlsDisabled(false);\r
+\r
+ var onClickWindowOptions = parseOptions(onClickData['options']);\r
+ var url = onClickData['url'];\r
+\r
+ formObj.popupname.value = onClickData['target'];\r
+ formObj.popupurl.value = url;\r
+ formObj.popupwidth.value = getOption(onClickWindowOptions, 'width');\r
+ formObj.popupheight.value = getOption(onClickWindowOptions, 'height');\r
+\r
+ formObj.popupleft.value = getOption(onClickWindowOptions, 'left');\r
+ formObj.popuptop.value = getOption(onClickWindowOptions, 'top');\r
+\r
+ if (formObj.popupleft.value.indexOf('screen') != -1)\r
+ formObj.popupleft.value = "c";\r
+\r
+ if (formObj.popuptop.value.indexOf('screen') != -1)\r
+ formObj.popuptop.value = "c";\r
+\r
+ formObj.popuplocation.checked = getOption(onClickWindowOptions, 'location') == "yes";\r
+ formObj.popupscrollbars.checked = getOption(onClickWindowOptions, 'scrollbars') == "yes";\r
+ formObj.popupmenubar.checked = getOption(onClickWindowOptions, 'menubar') == "yes";\r
+ formObj.popupresizable.checked = getOption(onClickWindowOptions, 'resizable') == "yes";\r
+ formObj.popuptoolbar.checked = getOption(onClickWindowOptions, 'toolbar') == "yes";\r
+ formObj.popupstatus.checked = getOption(onClickWindowOptions, 'status') == "yes";\r
+ formObj.popupdependent.checked = getOption(onClickWindowOptions, 'dependent') == "yes";\r
+\r
+ buildOnClick();\r
+ }\r
+}\r
+\r
+function parseFunction(onclick) {\r
+ var formObj = document.forms[0];\r
+ var onClickData = parseLink(onclick);\r
+\r
+ // TODO: Add stuff here\r
+}\r
+\r
+function getOption(opts, name) {\r
+ return typeof(opts[name]) == "undefined" ? "" : opts[name];\r
+}\r
+\r
+function setPopupControlsDisabled(state) {\r
+ var formObj = document.forms[0];\r
+\r
+ formObj.popupname.disabled = state;\r
+ formObj.popupurl.disabled = state;\r
+ formObj.popupwidth.disabled = state;\r
+ formObj.popupheight.disabled = state;\r
+ formObj.popupleft.disabled = state;\r
+ formObj.popuptop.disabled = state;\r
+ formObj.popuplocation.disabled = state;\r
+ formObj.popupscrollbars.disabled = state;\r
+ formObj.popupmenubar.disabled = state;\r
+ formObj.popupresizable.disabled = state;\r
+ formObj.popuptoolbar.disabled = state;\r
+ formObj.popupstatus.disabled = state;\r
+ formObj.popupreturn.disabled = state;\r
+ formObj.popupdependent.disabled = state;\r
+\r
+ setBrowserDisabled('popupurlbrowser', state);\r
+}\r
+\r
+function parseLink(link) {\r
+ link = link.replace(new RegExp(''', 'g'), "'");\r
+\r
+ var fnName = link.replace(new RegExp("\\s*([A-Za-z0-9\.]*)\\s*\\(.*", "gi"), "$1");\r
+\r
+ // Is function name a template function\r
+ var template = templates[fnName];\r
+ if (template) {\r
+ // Build regexp\r
+ var variableNames = template.match(new RegExp("'?\\$\\{[A-Za-z0-9\.]*\\}'?", "gi"));\r
+ var regExp = "\\s*[A-Za-z0-9\.]*\\s*\\(";\r
+ var replaceStr = "";\r
+ for (var i=0; i<variableNames.length; i++) {\r
+ // Is string value\r
+ if (variableNames[i].indexOf("'${") != -1)\r
+ regExp += "'(.*)'";\r
+ else // Number value\r
+ regExp += "([0-9]*)";\r
+\r
+ replaceStr += "$" + (i+1);\r
+\r
+ // Cleanup variable name\r
+ variableNames[i] = variableNames[i].replace(new RegExp("[^A-Za-z0-9]", "gi"), "");\r
+\r
+ if (i != variableNames.length-1) {\r
+ regExp += "\\s*,\\s*";\r
+ replaceStr += "<delim>";\r
+ } else\r
+ regExp += ".*";\r
+ }\r
+\r
+ regExp += "\\);?";\r
+\r
+ // Build variable array\r
+ var variables = [];\r
+ variables["_function"] = fnName;\r
+ var variableValues = link.replace(new RegExp(regExp, "gi"), replaceStr).split('<delim>');\r
+ for (var i=0; i<variableNames.length; i++)\r
+ variables[variableNames[i]] = variableValues[i];\r
+\r
+ return variables;\r
+ }\r
+\r
+ return null;\r
+}\r
+\r
+function parseOptions(opts) {\r
+ if (opts == null || opts == "")\r
+ return [];\r
+\r
+ // Cleanup the options\r
+ opts = opts.toLowerCase();\r
+ opts = opts.replace(/;/g, ",");\r
+ opts = opts.replace(/[^0-9a-z=,]/g, "");\r
+\r
+ var optionChunks = opts.split(',');\r
+ var options = [];\r
+\r
+ for (var i=0; i<optionChunks.length; i++) {\r
+ var parts = optionChunks[i].split('=');\r
+\r
+ if (parts.length == 2)\r
+ options[parts[0]] = parts[1];\r
+ }\r
+\r
+ return options;\r
+}\r
+\r
+function buildOnClick() {\r
+ var formObj = document.forms[0];\r
+\r
+ if (!formObj.ispopup.checked) {\r
+ formObj.onclick.value = "";\r
+ return;\r
+ }\r
+\r
+ var onclick = "window.open('";\r
+ var url = formObj.popupurl.value;\r
+\r
+ onclick += url + "','";\r
+ onclick += formObj.popupname.value + "','";\r
+\r
+ if (formObj.popuplocation.checked)\r
+ onclick += "location=yes,";\r
+\r
+ if (formObj.popupscrollbars.checked)\r
+ onclick += "scrollbars=yes,";\r
+\r
+ if (formObj.popupmenubar.checked)\r
+ onclick += "menubar=yes,";\r
+\r
+ if (formObj.popupresizable.checked)\r
+ onclick += "resizable=yes,";\r
+\r
+ if (formObj.popuptoolbar.checked)\r
+ onclick += "toolbar=yes,";\r
+\r
+ if (formObj.popupstatus.checked)\r
+ onclick += "status=yes,";\r
+\r
+ if (formObj.popupdependent.checked)\r
+ onclick += "dependent=yes,";\r
+\r
+ if (formObj.popupwidth.value != "")\r
+ onclick += "width=" + formObj.popupwidth.value + ",";\r
+\r
+ if (formObj.popupheight.value != "")\r
+ onclick += "height=" + formObj.popupheight.value + ",";\r
+\r
+ if (formObj.popupleft.value != "") {\r
+ if (formObj.popupleft.value != "c")\r
+ onclick += "left=" + formObj.popupleft.value + ",";\r
+ else\r
+ onclick += "left='+(screen.availWidth/2-" + (formObj.popupwidth.value/2) + ")+',";\r
+ }\r
+\r
+ if (formObj.popuptop.value != "") {\r
+ if (formObj.popuptop.value != "c")\r
+ onclick += "top=" + formObj.popuptop.value + ",";\r
+ else\r
+ onclick += "top='+(screen.availHeight/2-" + (formObj.popupheight.value/2) + ")+',";\r
+ }\r
+\r
+ if (onclick.charAt(onclick.length-1) == ',')\r
+ onclick = onclick.substring(0, onclick.length-1);\r
+\r
+ onclick += "');";\r
+\r
+ if (formObj.popupreturn.checked)\r
+ onclick += "return false;";\r
+\r
+ // tinyMCE.debug(onclick);\r
+\r
+ formObj.onclick.value = onclick;\r
+\r
+ if (formObj.href.value == "")\r
+ formObj.href.value = url;\r
+}\r
+\r
+function setAttrib(elm, attrib, value) {\r
+ var formObj = document.forms[0];\r
+ var valueElm = formObj.elements[attrib.toLowerCase()];\r
+ var dom = tinyMCEPopup.editor.dom;\r
+\r
+ if (typeof(value) == "undefined" || value == null) {\r
+ value = "";\r
+\r
+ if (valueElm)\r
+ value = valueElm.value;\r
+ }\r
+\r
+ // Clean up the style\r
+ if (attrib == 'style')\r
+ value = dom.serializeStyle(dom.parseStyle(value));\r
+\r
+ dom.setAttrib(elm, attrib, value);\r
+}\r
+\r
+function getAnchorListHTML(id, target) {\r
+ var inst = tinyMCEPopup.editor;\r
+ var nodes = inst.dom.select('a.mceItemAnchor,img.mceItemAnchor'), name, i;\r
+ var html = "";\r
+\r
+ html += '<select id="' + id + '" name="' + id + '" class="mceAnchorList" o2nfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target + '.value=';\r
+ html += 'this.options[this.selectedIndex].value;">';\r
+ html += '<option value="">---</option>';\r
+\r
+ for (i=0; i<nodes.length; i++) {\r
+ if ((name = inst.dom.getAttrib(nodes[i], "name")) != "")\r
+ html += '<option value="#' + name + '">' + name + '</option>';\r
+ }\r
+\r
+ html += '</select>';\r
+\r
+ return html;\r
+}\r
+\r
+function insertAction() {\r
+ var inst = tinyMCEPopup.editor;\r
+ var elm, elementArray, i;\r
+\r
+ elm = inst.selection.getNode();\r
+ checkPrefix(document.forms[0].href);\r
+\r
+ elm = inst.dom.getParent(elm, "A");\r
+\r
+ // Remove element if there is no href\r
+ if (!document.forms[0].href.value) {\r
+ tinyMCEPopup.execCommand("mceBeginUndoLevel");\r
+ i = inst.selection.getBookmark();\r
+ inst.dom.remove(elm, 1);\r
+ inst.selection.moveToBookmark(i);\r
+ tinyMCEPopup.execCommand("mceEndUndoLevel");\r
+ tinyMCEPopup.close();\r
+ return;\r
+ }\r
+\r
+ tinyMCEPopup.execCommand("mceBeginUndoLevel");\r
+\r
+ // Create new anchor elements\r
+ if (elm == null) {\r
+ tinyMCEPopup.execCommand("CreateLink", false, "#mce_temp_url#", {skip_undo : 1});\r
+\r
+ elementArray = tinymce.grep(inst.dom.select("a"), function(n) {return inst.dom.getAttrib(n, 'href') == '#mce_temp_url#';});\r
+ for (i=0; i<elementArray.length; i++)\r
+ setAllAttribs(elm = elementArray[i]);\r
+ } else\r
+ setAllAttribs(elm);\r
+\r
+ // Don't move caret if selection was image\r
+ if (elm.childNodes.length != 1 || elm.firstChild.nodeName != 'IMG') {\r
+ inst.focus();\r
+ inst.selection.select(elm);\r
+ inst.selection.collapse(0);\r
+ tinyMCEPopup.storeSelection();\r
+ }\r
+\r
+ tinyMCEPopup.execCommand("mceEndUndoLevel");\r
+ tinyMCEPopup.close();\r
+}\r
+\r
+function setAllAttribs(elm) {\r
+ var formObj = document.forms[0];\r
+ var href = formObj.href.value;\r
+ var target = getSelectValue(formObj, 'targetlist');\r
+\r
+ setAttrib(elm, 'href', href);\r
+ setAttrib(elm, 'title');\r
+ setAttrib(elm, 'target', target == '_self' ? '' : target);\r
+ setAttrib(elm, 'id');\r
+ setAttrib(elm, 'style');\r
+ setAttrib(elm, 'class', getSelectValue(formObj, 'classlist'));\r
+ setAttrib(elm, 'rel');\r
+ setAttrib(elm, 'rev');\r
+ setAttrib(elm, 'charset');\r
+ setAttrib(elm, 'hreflang');\r
+ setAttrib(elm, 'dir');\r
+ setAttrib(elm, 'lang');\r
+ setAttrib(elm, 'tabindex');\r
+ setAttrib(elm, 'accesskey');\r
+ setAttrib(elm, 'type');\r
+ setAttrib(elm, 'onfocus');\r
+ setAttrib(elm, 'onblur');\r
+ setAttrib(elm, 'onclick');\r
+ setAttrib(elm, 'ondblclick');\r
+ setAttrib(elm, 'onmousedown');\r
+ setAttrib(elm, 'onmouseup');\r
+ setAttrib(elm, 'onmouseover');\r
+ setAttrib(elm, 'onmousemove');\r
+ setAttrib(elm, 'onmouseout');\r
+ setAttrib(elm, 'onkeypress');\r
+ setAttrib(elm, 'onkeydown');\r
+ setAttrib(elm, 'onkeyup');\r
+\r
+ // Refresh in old MSIE\r
+ if (tinyMCE.isMSIE5)\r
+ elm.outerHTML = elm.outerHTML;\r
+}\r
+\r
+function getSelectValue(form_obj, field_name) {\r
+ var elm = form_obj.elements[field_name];\r
+\r
+ if (!elm || elm.options == null || elm.selectedIndex == -1)\r
+ return "";\r
+\r
+ return elm.options[elm.selectedIndex].value;\r
+}\r
+\r
+function getLinkListHTML(elm_id, target_form_element, onchange_func) {\r
+ if (typeof(tinyMCELinkList) == "undefined" || tinyMCELinkList.length == 0)\r
+ return "";\r
+\r
+ var html = "";\r
+\r
+ html += '<select id="' + elm_id + '" name="' + elm_id + '"';\r
+ html += ' class="mceLinkList" onfoc2us="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target_form_element + '.value=';\r
+ html += 'this.options[this.selectedIndex].value;';\r
+\r
+ if (typeof(onchange_func) != "undefined")\r
+ html += onchange_func + '(\'' + target_form_element + '\',this.options[this.selectedIndex].text,this.options[this.selectedIndex].value);';\r
+\r
+ html += '"><option value="">---</option>';\r
+\r
+ for (var i=0; i<tinyMCELinkList.length; i++)\r
+ html += '<option value="' + tinyMCELinkList[i][1] + '">' + tinyMCELinkList[i][0] + '</option>';\r
+\r
+ html += '</select>';\r
+\r
+ return html;\r
+\r
+ // tinyMCE.debug('-- image list start --', html, '-- image list end --');\r
+}\r
+\r
+function getTargetListHTML(elm_id, target_form_element) {\r
+ var targets = tinyMCEPopup.getParam('theme_advanced_link_targets', '').split(';');\r
+ var html = '';\r
+\r
+ html += '<select id="' + elm_id + '" name="' + elm_id + '" onf2ocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target_form_element + '.value=';\r
+ html += 'this.options[this.selectedIndex].value;">';\r
+ html += '<option value="_self">' + tinyMCEPopup.getLang('advlink_dlg.target_same') + '</option>';\r
+ html += '<option value="_blank">' + tinyMCEPopup.getLang('advlink_dlg.target_blank') + ' (_blank)</option>';\r
+ html += '<option value="_parent">' + tinyMCEPopup.getLang('advlink_dlg.target_parent') + ' (_parent)</option>';\r
+ html += '<option value="_top">' + tinyMCEPopup.getLang('advlink_dlg.target_top') + ' (_top)</option>';\r
+\r
+ for (var i=0; i<targets.length; i++) {\r
+ var key, value;\r
+\r
+ if (targets[i] == "")\r
+ continue;\r
+\r
+ key = targets[i].split('=')[0];\r
+ value = targets[i].split('=')[1];\r
+\r
+ html += '<option value="' + key + '">' + value + ' (' + key + ')</option>';\r
+ }\r
+\r
+ html += '</select>';\r
+\r
+ return html;\r
+}\r
+\r
+// While loading\r
+preinit();\r
+tinyMCEPopup.onInit.add(init);\r
--- /dev/null
+tinyMCE.addI18n('en.advlink_dlg',{\r
+title:"Insert/edit link",\r
+url:"Link URL",\r
+target:"Target",\r
+titlefield:"Title",\r
+is_email:"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?",\r
+is_external:"The URL you entered seems to external link, do you want to add the required http:// prefix?",\r
+list:"Link list",\r
+general_tab:"General",\r
+popup_tab:"Popup",\r
+events_tab:"Events",\r
+advanced_tab:"Advanced",\r
+general_props:"General properties",\r
+popup_props:"Popup properties",\r
+event_props:"Events",\r
+advanced_props:"Advanced properties",\r
+popup_opts:"Options",\r
+anchor_names:"Anchors",\r
+target_same:"Open in this window / frame",\r
+target_parent:"Open in parent window / frame",\r
+target_top:"Open in top frame (replaces all frames)",\r
+target_blank:"Open in new window",\r
+popup:"Javascript popup",\r
+popup_url:"Popup URL",\r
+popup_name:"Window name",\r
+popup_return:"Insert 'return false'",\r
+popup_scrollbars:"Show scrollbars",\r
+popup_statusbar:"Show status bar",\r
+popup_toolbar:"Show toolbars",\r
+popup_menubar:"Show menu bar",\r
+popup_location:"Show location bar",\r
+popup_resizable:"Make window resizable",\r
+popup_dependent:"Dependent (Mozilla/Firefox only)",\r
+popup_size:"Size",\r
+popup_position:"Position (X/Y)",\r
+id:"Id",\r
+style:"Style",\r
+classes:"Classes",\r
+target_name:"Target name",\r
+langdir:"Language direction",\r
+target_langcode:"Target language",\r
+langcode:"Language code",\r
+encoding:"Target character encoding",\r
+mime:"Target MIME type",\r
+rel:"Relationship page to target",\r
+rev:"Relationship target to page",\r
+tabindex:"Tabindex",\r
+accesskey:"Accesskey",\r
+ltr:"Left to right",\r
+rtl:"Right to left",\r
+link_list:"Link list"\r
+});
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+ <title>{#advlink_dlg.title}</title>\r
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
+ <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
+ <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
+ <script type="text/javascript" src="../../utils/validate.js"></script>\r
+ <script type="text/javascript" src="js/advlink.js"></script>\r
+ <link href="css/advlink.css" rel="stylesheet" type="text/css" />\r
+ <base target="_self" />\r
+</head>\r
+<body id="advlink" style="display: none">\r
+ <form onsubmit="insertAction();return false;" action="#">\r
+ <div class="tabs">\r
+ <ul>\r
+ <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advlink_dlg.general_tab}</a></span></li>\r
+ <li id="popup_tab"><span><a href="javascript:mcTabs.displayTab('popup_tab','popup_panel');" onmousedown="return false;">{#advlink_dlg.popup_tab}</a></span></li>\r
+ <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#advlink_dlg.events_tab}</a></span></li>\r
+ <li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#advlink_dlg.advanced_tab}</a></span></li>\r
+ </ul>\r
+ </div>\r
+\r
+ <div class="panel_wrapper">\r
+ <div id="general_panel" class="panel current">\r
+ <fieldset>\r
+ <legend>{#advlink_dlg.general_props}</legend>\r
+\r
+ <table border="0" cellpadding="4" cellspacing="0">\r
+ <tr>\r
+ <td nowrap="nowrap"><label id="hreflabel" for="href">{#advlink_dlg.url}</label></td>\r
+ <td><table border="0" cellspacing="0" cellpadding="0">\r
+ <tr>\r
+ <td><input id="href" name="href" type="text" class="mceFocus" value="" onchange="selectByValue(this.form,'linklisthref',this.value);" /></td>\r
+ <td id="hrefbrowsercontainer"> </td>\r
+ </tr>\r
+ </table></td>\r
+ </tr>\r
+ <tr id="linklisthrefrow">\r
+ <td class="column1"><label for="linklisthref">{#advlink_dlg.list}</label></td>\r
+ <td colspan="2" id="linklisthrefcontainer"> </td>\r
+ </tr>\r
+ <tr>\r
+ <td class="column1"><label for="anchorlist">{#advlink_dlg.anchor_names}</label></td>\r
+ <td colspan="2" id="anchorlistcontainer"> </td>\r
+ </tr>\r
+ <tr>\r
+ <td><label id="targetlistlabel" for="targetlist">{#advlink_dlg.target}</label></td>\r
+ <td id="targetlistcontainer"> </td>\r
+ </tr>\r
+ <tr>\r
+ <td nowrap="nowrap"><label id="titlelabel" for="title">{#advlink_dlg.titlefield}</label></td>\r
+ <td><input id="title" name="title" type="text" value="" /></td>\r
+ </tr>\r
+ <tr>\r
+ <td><label id="classlabel" for="classlist">{#class_name}</label></td>\r
+ <td>\r
+ <select id="classlist" name="classlist" onchange="changeClass();">\r
+ <option value="" selected>{#not_set}</option>\r
+ </select>\r
+ </td>\r
+ </tr>\r
+ </table>\r
+ </fieldset>\r
+ </div>\r
+\r
+ <div id="popup_panel" class="panel">\r
+ <fieldset>\r
+ <legend>{#advlink_dlg.popup_props}</legend>\r
+\r
+ <input type="checkbox" id="ispopup" name="ispopup" class="radio" onclick="setPopupControlsDisabled(!this.checked);buildOnClick();" />\r
+ <label id="ispopuplabel" for="ispopup">{#advlink_dlg.popup}</label>\r
+\r
+ <table border="0" cellpadding="0" cellspacing="4">\r
+ <tr>\r
+ <td nowrap="nowrap"><label for="popupurl">{#advlink_dlg.popup_url}</label> </td>\r
+ <td>\r
+ <table border="0" cellspacing="0" cellpadding="0">\r
+ <tr>\r
+ <td><input type="text" name="popupurl" id="popupurl" value="" onchange="buildOnClick();" /></td>\r
+ <td id="popupurlbrowsercontainer"> </td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+ </tr>\r
+ <tr>\r
+ <td nowrap="nowrap"><label for="popupname">{#advlink_dlg.popup_name}</label> </td>\r
+ <td><input type="text" name="popupname" id="popupname" value="" onchange="buildOnClick();" /></td>\r
+ </tr>\r
+ <tr>\r
+ <td nowrap="nowrap"><label>{#advlink_dlg.popup_size}</label> </td>\r
+ <td nowrap="nowrap">\r
+ <input type="text" id="popupwidth" name="popupwidth" value="" onchange="buildOnClick();" /> x\r
+ <input type="text" id="popupheight" name="popupheight" value="" onchange="buildOnClick();" /> px\r
+ </td>\r
+ </tr>\r
+ <tr>\r
+ <td nowrap="nowrap" id="labelleft"><label>{#advlink_dlg.popup_position}</label> </td>\r
+ <td nowrap="nowrap">\r
+ <input type="text" id="popupleft" name="popupleft" value="" onchange="buildOnClick();" /> / \r
+ <input type="text" id="popuptop" name="popuptop" value="" onchange="buildOnClick();" /> (c /c = center)\r
+ </td>\r
+ </tr>\r
+ </table>\r
+\r
+ <fieldset>\r
+ <legend>{#advlink_dlg.popup_opts}</legend>\r
+\r
+ <table border="0" cellpadding="0" cellspacing="4">\r
+ <tr>\r
+ <td><input type="checkbox" id="popuplocation" name="popuplocation" class="checkbox" onchange="buildOnClick();" /></td>\r
+ <td nowrap="nowrap"><label id="popuplocationlabel" for="popuplocation">{#advlink_dlg.popup_location}</label></td>\r
+ <td><input type="checkbox" id="popupscrollbars" name="popupscrollbars" class="checkbox" onchange="buildOnClick();" /></td>\r
+ <td nowrap="nowrap"><label id="popupscrollbarslabel" for="popupscrollbars">{#advlink_dlg.popup_scrollbars}</label></td>\r
+ </tr>\r
+ <tr>\r
+ <td><input type="checkbox" id="popupmenubar" name="popupmenubar" class="checkbox" onchange="buildOnClick();" /></td>\r
+ <td nowrap="nowrap"><label id="popupmenubarlabel" for="popupmenubar">{#advlink_dlg.popup_menubar}</label></td>\r
+ <td><input type="checkbox" id="popupresizable" name="popupresizable" class="checkbox" onchange="buildOnClick();" /></td>\r
+ <td nowrap="nowrap"><label id="popupresizablelabel" for="popupresizable">{#advlink_dlg.popup_resizable}</label></td>\r
+ </tr>\r
+ <tr>\r
+ <td><input type="checkbox" id="popuptoolbar" name="popuptoolbar" class="checkbox" onchange="buildOnClick();" /></td>\r
+ <td nowrap="nowrap"><label id="popuptoolbarlabel" for="popuptoolbar">{#advlink_dlg.popup_toolbar}</label></td>\r
+ <td><input type="checkbox" id="popupdependent" name="popupdependent" class="checkbox" onchange="buildOnClick();" /></td>\r
+ <td nowrap="nowrap"><label id="popupdependentlabel" for="popupdependent">{#advlink_dlg.popup_dependent}</label></td>\r
+ </tr>\r
+ <tr>\r
+ <td><input type="checkbox" id="popupstatus" name="popupstatus" class="checkbox" onchange="buildOnClick();" /></td>\r
+ <td nowrap="nowrap"><label id="popupstatuslabel" for="popupstatus">{#advlink_dlg.popup_statusbar}</label></td>\r
+ <td><input type="checkbox" id="popupreturn" name="popupreturn" class="checkbox" onchange="buildOnClick();" checked="checked" /></td>\r
+ <td nowrap="nowrap"><label id="popupreturnlabel" for="popupreturn">{#advlink_dlg.popup_return}</label></td>\r
+ </tr>\r
+ </table>\r
+ </fieldset>\r
+ </fieldset>\r
+ </div>\r
+\r
+ <div id="advanced_panel" class="panel">\r
+ <fieldset>\r
+ <legend>{#advlink_dlg.advanced_props}</legend>\r
+\r
+ <table border="0" cellpadding="0" cellspacing="4">\r
+ <tr>\r
+ <td class="column1"><label id="idlabel" for="id">{#advlink_dlg.id}</label></td> \r
+ <td><input id="id" name="id" type="text" value="" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td><label id="stylelabel" for="style">{#advlink_dlg.style}</label></td>\r
+ <td><input type="text" id="style" name="style" value="" /></td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td><label id="classeslabel" for="classes">{#advlink_dlg.classes}</label></td>\r
+ <td><input type="text" id="classes" name="classes" value="" onchange="selectByValue(this.form,'classlist',this.value,true);" /></td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td><label id="targetlabel" for="target">{#advlink_dlg.target_name}</label></td>\r
+ <td><input type="text" id="target" name="target" value="" onchange="selectByValue(this.form,'targetlist',this.value,true);" /></td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="column1"><label id="dirlabel" for="dir">{#advlink_dlg.langdir}</label></td> \r
+ <td>\r
+ <select id="dir" name="dir"> \r
+ <option value="">{#not_set}</option> \r
+ <option value="ltr">{#advlink_dlg.ltr}</option> \r
+ <option value="rtl">{#advlink_dlg.rtl}</option> \r
+ </select>\r
+ </td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td><label id="hreflanglabel" for="hreflang">{#advlink_dlg.target_langcode}</label></td>\r
+ <td><input type="text" id="hreflang" name="hreflang" value="" /></td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="column1"><label id="langlabel" for="lang">{#advlink_dlg.langcode}</label></td> \r
+ <td>\r
+ <input id="lang" name="lang" type="text" value="" />\r
+ </td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td><label id="charsetlabel" for="charset">{#advlink_dlg.encoding}</label></td>\r
+ <td><input type="text" id="charset" name="charset" value="" /></td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td><label id="typelabel" for="type">{#advlink_dlg.mime}</label></td>\r
+ <td><input type="text" id="type" name="type" value="" /></td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td><label id="rellabel" for="rel">{#advlink_dlg.rel}</label></td>\r
+ <td><select id="rel" name="rel"> \r
+ <option value="">{#not_set}</option> \r
+ <option value="lightbox">Lightbox</option> \r
+ <option value="alternate">Alternate</option> \r
+ <option value="designates">Designates</option> \r
+ <option value="stylesheet">Stylesheet</option> \r
+ <option value="start">Start</option> \r
+ <option value="next">Next</option> \r
+ <option value="prev">Prev</option> \r
+ <option value="contents">Contents</option> \r
+ <option value="index">Index</option> \r
+ <option value="glossary">Glossary</option> \r
+ <option value="copyright">Copyright</option> \r
+ <option value="chapter">Chapter</option> \r
+ <option value="subsection">Subsection</option> \r
+ <option value="appendix">Appendix</option> \r
+ <option value="help">Help</option> \r
+ <option value="bookmark">Bookmark</option>\r
+ <option value="nofollow">No Follow</option>\r
+ <option value="tag">Tag</option>\r
+ </select> \r
+ </td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td><label id="revlabel" for="rev">{#advlink_dlg.rev}</label></td>\r
+ <td><select id="rev" name="rev"> \r
+ <option value="">{#not_set}</option> \r
+ <option value="alternate">Alternate</option> \r
+ <option value="designates">Designates</option> \r
+ <option value="stylesheet">Stylesheet</option> \r
+ <option value="start">Start</option> \r
+ <option value="next">Next</option> \r
+ <option value="prev">Prev</option> \r
+ <option value="contents">Contents</option> \r
+ <option value="index">Index</option> \r
+ <option value="glossary">Glossary</option> \r
+ <option value="copyright">Copyright</option> \r
+ <option value="chapter">Chapter</option> \r
+ <option value="subsection">Subsection</option> \r
+ <option value="appendix">Appendix</option> \r
+ <option value="help">Help</option> \r
+ <option value="bookmark">Bookmark</option> \r
+ </select> \r
+ </td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td><label id="tabindexlabel" for="tabindex">{#advlink_dlg.tabindex}</label></td>\r
+ <td><input type="text" id="tabindex" name="tabindex" value="" /></td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td><label id="accesskeylabel" for="accesskey">{#advlink_dlg.accesskey}</label></td>\r
+ <td><input type="text" id="accesskey" name="accesskey" value="" /></td>\r
+ </tr>\r
+ </table>\r
+ </fieldset>\r
+ </div>\r
+\r
+ <div id="events_panel" class="panel">\r
+ <fieldset>\r
+ <legend>{#advlink_dlg.event_props}</legend>\r
+\r
+ <table border="0" cellpadding="0" cellspacing="4">\r
+ <tr>\r
+ <td class="column1"><label for="onfocus">onfocus</label></td> \r
+ <td><input id="onfocus" name="onfocus" type="text" value="" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="column1"><label for="onblur">onblur</label></td> \r
+ <td><input id="onblur" name="onblur" type="text" value="" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="column1"><label for="onclick">onclick</label></td> \r
+ <td><input id="onclick" name="onclick" type="text" value="" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="column1"><label for="ondblclick">ondblclick</label></td> \r
+ <td><input id="ondblclick" name="ondblclick" type="text" value="" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="column1"><label for="onmousedown">onmousedown</label></td> \r
+ <td><input id="onmousedown" name="onmousedown" type="text" value="" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="column1"><label for="onmouseup">onmouseup</label></td> \r
+ <td><input id="onmouseup" name="onmouseup" type="text" value="" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="column1"><label for="onmouseover">onmouseover</label></td> \r
+ <td><input id="onmouseover" name="onmouseover" type="text" value="" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="column1"><label for="onmousemove">onmousemove</label></td> \r
+ <td><input id="onmousemove" name="onmousemove" type="text" value="" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="column1"><label for="onmouseout">onmouseout</label></td> \r
+ <td><input id="onmouseout" name="onmouseout" type="text" value="" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="column1"><label for="onkeypress">onkeypress</label></td> \r
+ <td><input id="onkeypress" name="onkeypress" type="text" value="" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="column1"><label for="onkeydown">onkeydown</label></td> \r
+ <td><input id="onkeydown" name="onkeydown" type="text" value="" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="column1"><label for="onkeyup">onkeyup</label></td> \r
+ <td><input id="onkeyup" name="onkeyup" type="text" value="" /></td> \r
+ </tr>\r
+ </table>\r
+ </fieldset>\r
+ </div>\r
+ </div>\r
+\r
+ <div class="mceActionPanel">\r
+ <div style="float: left">\r
+ <input type="submit" id="insert" name="insert" value="{#insert}" />\r
+ </div>\r
+\r
+ <div style="float: right">\r
+ <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
+ </div>\r
+ </div>\r
+ </form>\r
+</body>\r
+</html>\r
--- /dev/null
+(function(){tinymce.create('tinymce.plugins.AutoSavePlugin',{init:function(ed,url){var t=this;t.editor=ed;window.onbeforeunload=tinymce.plugins.AutoSavePlugin._beforeUnloadHandler;},getInfo:function(){return{longname:'Auto save',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autosave',version:tinymce.majorVersion+"."+tinymce.minorVersion};},'static':{_beforeUnloadHandler:function(){var msg;tinymce.each(tinyMCE.editors,function(ed){if(ed.getParam("fullscreen_is_enabled"))return;if(ed.isDirty()){msg=ed.getLang("autosave.unload_msg");return false;}});return msg;}}});tinymce.PluginManager.add('autosave',tinymce.plugins.AutoSavePlugin);})();
\ No newline at end of file
--- /dev/null
+/**\r
+ * $Id: editor_plugin_src.js 520 2008-01-07 16:30:32Z spocke $\r
+ *\r
+ * @author Moxiecode\r
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+(function() {\r
+ tinymce.create('tinymce.plugins.AutoSavePlugin', {\r
+ init : function(ed, url) {\r
+ var t = this;\r
+\r
+ t.editor = ed;\r
+\r
+ window.onbeforeunload = tinymce.plugins.AutoSavePlugin._beforeUnloadHandler;\r
+ },\r
+\r
+ getInfo : function() {\r
+ return {\r
+ longname : 'Auto save',\r
+ author : 'Moxiecode Systems AB',\r
+ authorurl : 'http://tinymce.moxiecode.com',\r
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autosave',\r
+ version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+ };\r
+ },\r
+\r
+ // Private plugin internal methods\r
+\r
+ 'static' : {\r
+ _beforeUnloadHandler : function() {\r
+ var msg;\r
+\r
+ tinymce.each(tinyMCE.editors, function(ed) {\r
+ if (ed.getParam("fullscreen_is_enabled"))\r
+ return;\r
+\r
+ if (ed.isDirty()) {\r
+ msg = ed.getLang("autosave.unload_msg");\r
+ return false;\r
+ }\r
+ });\r
+\r
+ return msg;\r
+ }\r
+ }\r
+ });\r
+\r
+ // Register plugin\r
+ tinymce.PluginManager.add('autosave', tinymce.plugins.AutoSavePlugin);\r
+})();
\ No newline at end of file
--- /dev/null
+(function(){tinymce.create('tinymce.plugins.BBCodePlugin',{init:function(ed,url){var t=this,dialect=ed.getParam('bbcode_dialect','punbb').toLowerCase();ed.onBeforeSetContent.add(function(ed,o){o.content=t['_'+dialect+'_bbcode2html'](o.content);});ed.onPostProcess.add(function(ed,o){if(o.set)o.content=t['_'+dialect+'_bbcode2html'](o.content);if(o.get)o.content=t['_'+dialect+'_html2bbcode'](o.content);});},getInfo:function(){return{longname:'BBCode Plugin',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/bbcode',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_punbb_html2bbcode:function(s){s=tinymce.trim(s);function rep(re,str){s=s.replace(re,str);};rep(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]");rep(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");rep(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");rep(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");rep(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");rep(/<span style=\"color: ?(.*?);\">(.*?)<\/span>/gi,"[color=$1]$2[/color]");rep(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[color=$1]$2[/color]");rep(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi,"[size=$1]$2[/size]");rep(/<font>(.*?)<\/font>/gi,"$1");rep(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]");rep(/<span class=\"codeStyle\">(.*?)<\/span>/gi,"[code]$1[/code]");rep(/<span class=\"quoteStyle\">(.*?)<\/span>/gi,"[quote]$1[/quote]");rep(/<strong class=\"codeStyle\">(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]");rep(/<strong class=\"quoteStyle\">(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]");rep(/<em class=\"codeStyle\">(.*?)<\/em>/gi,"[code][i]$1[/i][/code]");rep(/<em class=\"quoteStyle\">(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]");rep(/<u class=\"codeStyle\">(.*?)<\/u>/gi,"[code][u]$1[/u][/code]");rep(/<u class=\"quoteStyle\">(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]");rep(/<\/(strong|b)>/gi,"[/b]");rep(/<(strong|b)>/gi,"[b]");rep(/<\/(em|i)>/gi,"[/i]");rep(/<(em|i)>/gi,"[i]");rep(/<\/u>/gi,"[/u]");rep(/<span style=\"text-decoration: ?underline;\">(.*?)<\/span>/gi,"[u]$1[/u]");rep(/<u>/gi,"[u]");rep(/<blockquote[^>]*>/gi,"[quote]");rep(/<\/blockquote>/gi,"[/quote]");rep(/<br \/>/gi,"\n");rep(/<br\/>/gi,"\n");rep(/<br>/gi,"\n");rep(/<p>/gi,"");rep(/<\/p>/gi,"\n");rep(/ /gi," ");rep(/"/gi,"\"");rep(/</gi,"<");rep(/>/gi,">");rep(/&/gi,"&");return s;},_punbb_bbcode2html:function(s){s=tinymce.trim(s);function rep(re,str){s=s.replace(re,str);};rep(/\n/gi,"<br />");rep(/\[b\]/gi,"<strong>");rep(/\[\/b\]/gi,"</strong>");rep(/\[i\]/gi,"<em>");rep(/\[\/i\]/gi,"</em>");rep(/\[u\]/gi,"<u>");rep(/\[\/u\]/gi,"</u>");rep(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,"<a href=\"$1\">$2</a>");rep(/\[url\](.*?)\[\/url\]/gi,"<a href=\"$1\">$1</a>");rep(/\[img\](.*?)\[\/img\]/gi,"<img src=\"$1\" />");rep(/\[color=(.*?)\](.*?)\[\/color\]/gi,"<font color=\"$1\">$2</font>");rep(/\[code\](.*?)\[\/code\]/gi,"<span class=\"codeStyle\">$1</span> ");rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"<span class=\"quoteStyle\">$1</span> ");return s;}});tinymce.PluginManager.add('bbcode',tinymce.plugins.BBCodePlugin);})();
\ No newline at end of file
--- /dev/null
+/**\r
+ * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $\r
+ *\r
+ * @author Moxiecode\r
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+(function() {\r
+ tinymce.create('tinymce.plugins.BBCodePlugin', {\r
+ init : function(ed, url) {\r
+ var t = this, dialect = ed.getParam('bbcode_dialect', 'punbb').toLowerCase();\r
+\r
+ ed.onBeforeSetContent.add(function(ed, o) {\r
+ o.content = t['_' + dialect + '_bbcode2html'](o.content);\r
+ });\r
+\r
+ ed.onPostProcess.add(function(ed, o) {\r
+ if (o.set)\r
+ o.content = t['_' + dialect + '_bbcode2html'](o.content);\r
+\r
+ if (o.get)\r
+ o.content = t['_' + dialect + '_html2bbcode'](o.content);\r
+ });\r
+ },\r
+\r
+ getInfo : function() {\r
+ return {\r
+ longname : 'BBCode Plugin',\r
+ author : 'Moxiecode Systems AB',\r
+ authorurl : 'http://tinymce.moxiecode.com',\r
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/bbcode',\r
+ version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+ };\r
+ },\r
+\r
+ // Private methods\r
+\r
+ // HTML -> BBCode in PunBB dialect\r
+ _punbb_html2bbcode : function(s) {\r
+ s = tinymce.trim(s);\r
+\r
+ function rep(re, str) {\r
+ s = s.replace(re, str);\r
+ };\r
+\r
+ // example: <strong> to [b]\r
+ rep(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]");\r
+ rep(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");\r
+ rep(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");\r
+ rep(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");\r
+ rep(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");\r
+ rep(/<span style=\"color: ?(.*?);\">(.*?)<\/span>/gi,"[color=$1]$2[/color]");\r
+ rep(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[color=$1]$2[/color]");\r
+ rep(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi,"[size=$1]$2[/size]");\r
+ rep(/<font>(.*?)<\/font>/gi,"$1");\r
+ rep(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]");\r
+ rep(/<span class=\"codeStyle\">(.*?)<\/span>/gi,"[code]$1[/code]");\r
+ rep(/<span class=\"quoteStyle\">(.*?)<\/span>/gi,"[quote]$1[/quote]");\r
+ rep(/<strong class=\"codeStyle\">(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]");\r
+ rep(/<strong class=\"quoteStyle\">(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]");\r
+ rep(/<em class=\"codeStyle\">(.*?)<\/em>/gi,"[code][i]$1[/i][/code]");\r
+ rep(/<em class=\"quoteStyle\">(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]");\r
+ rep(/<u class=\"codeStyle\">(.*?)<\/u>/gi,"[code][u]$1[/u][/code]");\r
+ rep(/<u class=\"quoteStyle\">(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]");\r
+ rep(/<\/(strong|b)>/gi,"[/b]");\r
+ rep(/<(strong|b)>/gi,"[b]");\r
+ rep(/<\/(em|i)>/gi,"[/i]");\r
+ rep(/<(em|i)>/gi,"[i]");\r
+ rep(/<\/u>/gi,"[/u]");\r
+ rep(/<span style=\"text-decoration: ?underline;\">(.*?)<\/span>/gi,"[u]$1[/u]");\r
+ rep(/<u>/gi,"[u]");\r
+ rep(/<blockquote[^>]*>/gi,"[quote]");\r
+ rep(/<\/blockquote>/gi,"[/quote]");\r
+ rep(/<br \/>/gi,"\n");\r
+ rep(/<br\/>/gi,"\n");\r
+ rep(/<br>/gi,"\n");\r
+ rep(/<p>/gi,"");\r
+ rep(/<\/p>/gi,"\n");\r
+ rep(/ /gi," ");\r
+ rep(/"/gi,"\"");\r
+ rep(/</gi,"<");\r
+ rep(/>/gi,">");\r
+ rep(/&/gi,"&");\r
+\r
+ return s; \r
+ },\r
+\r
+ // BBCode -> HTML from PunBB dialect\r
+ _punbb_bbcode2html : function(s) {\r
+ s = tinymce.trim(s);\r
+\r
+ function rep(re, str) {\r
+ s = s.replace(re, str);\r
+ };\r
+\r
+ // example: [b] to <strong>\r
+ rep(/\n/gi,"<br />");\r
+ rep(/\[b\]/gi,"<strong>");\r
+ rep(/\[\/b\]/gi,"</strong>");\r
+ rep(/\[i\]/gi,"<em>");\r
+ rep(/\[\/i\]/gi,"</em>");\r
+ rep(/\[u\]/gi,"<u>");\r
+ rep(/\[\/u\]/gi,"</u>");\r
+ rep(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,"<a href=\"$1\">$2</a>");\r
+ rep(/\[url\](.*?)\[\/url\]/gi,"<a href=\"$1\">$1</a>");\r
+ rep(/\[img\](.*?)\[\/img\]/gi,"<img src=\"$1\" />");\r
+ rep(/\[color=(.*?)\](.*?)\[\/color\]/gi,"<font color=\"$1\">$2</font>");\r
+ rep(/\[code\](.*?)\[\/code\]/gi,"<span class=\"codeStyle\">$1</span> ");\r
+ rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"<span class=\"quoteStyle\">$1</span> ");\r
+\r
+ return s; \r
+ }\r
+ });\r
+\r
+ // Register plugin\r
+ tinymce.PluginManager.add('bbcode', tinymce.plugins.BBCodePlugin);\r
+})();
\ No newline at end of file
--- /dev/null
+(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,each=tinymce.each,is=tinymce.is;tinymce.create('tinymce.plugins.Compat2x',{getInfo:function(){return{longname:'Compat2x',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/compat2x',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion};}});(function(){tinymce.extend(tinyMCE,{addToLang:function(p,l){each(l,function(v,k){tinyMCE.i18n[(tinyMCE.settings.language||'en')+'.'+(p?p+'_':'')+k]=v;});},getInstanceById:function(n){return this.get(n);}});})();(function(){var EditorManager=tinymce.EditorManager;tinyMCE.instances={};tinyMCE.plugins={};tinymce.PluginManager.onAdd.add(function(pm,n,p){tinyMCE.plugins[n]=p;});tinyMCE.majorVersion=tinymce.majorVersion;tinyMCE.minorVersion=tinymce.minorVersion;tinyMCE.releaseDate=tinymce.releaseDate;tinyMCE.baseURL=tinymce.baseURL;tinyMCE.isIE=tinyMCE.isMSIE=tinymce.isIE||tinymce.isOpera;tinyMCE.isMSIE5=tinymce.isIE;tinyMCE.isMSIE5_0=tinymce.isIE;tinyMCE.isMSIE7=tinymce.isIE;tinyMCE.isGecko=tinymce.isGecko;tinyMCE.isSafari=tinymce.isWebKit;tinyMCE.isOpera=tinymce.isOpera;tinyMCE.isMac=false;tinyMCE.isNS7=false;tinyMCE.isNS71=false;tinyMCE.compat=true;TinyMCE_Engine=tinyMCE;tinymce.extend(tinyMCE,{getParam:function(n,dv){return this.activeEditor.getParam(n,dv);},addEvent:function(e,na,f,sc){tinymce.dom.Event.add(e,na,f,sc||this);},getControlHTML:function(n){return EditorManager.activeEditor.controlManager.createControl(n);},loadCSS:function(u){tinymce.DOM.loadCSS(u);},importCSS:function(doc,u){if(doc==document)this.loadCSS(u);else new tinymce.dom.DOMUtils(doc).loadCSS(u);},log:function(){console.debug.apply(console,arguments);},getLang:function(n,dv){var v=EditorManager.activeEditor.getLang(n.replace(/^lang_/g,''),dv);if(/^[0-9\-.]+$/g.test(v))return parseInt(v);return v;},isInstance:function(o){return o!=null&&typeof(o)=="object"&&o.execCommand;},triggerNodeChange:function(){EditorManager.activeEditor.nodeChanged();},regexpReplace:function(in_str,reg_exp,replace_str,opts){var re;if(in_str==null)return in_str;if(typeof(opts)=="undefined")opts='g';re=new RegExp(reg_exp,opts);return in_str.replace(re,replace_str);},trim:function(s){return tinymce.trim(s);},xmlEncode:function(s){return tinymce.DOM.encode(s);},explode:function(s,d){var o=[];tinymce.each(s.split(d),function(v){if(v!='')o.push(v);});return o;},switchClass:function(id,cls){var b;if(/^mceButton/.test(cls)){b=EditorManager.activeEditor.controlManager.get(id);if(!b)return;switch(cls){case"mceButtonNormal":b.setDisabled(false);b.setActive(false);return;case"mceButtonDisabled":b.setDisabled(true);return;case"mceButtonSelected":b.setActive(true);b.setDisabled(false);return;}}},addCSSClass:function(e,n,b){return tinymce.DOM.addClass(e,n,b);},hasCSSClass:function(e,n){return tinymce.DOM.hasClass(e,n);},removeCSSClass:function(e,n){return tinymce.DOM.removeClass(e,n);},getCSSClasses:function(){var cl=EditorManager.activeEditor.dom.getClasses(),o=[];each(cl,function(c){o.push(c['class']);});return o;},setWindowArg:function(n,v){EditorManager.activeEditor.windowManager.params[n]=v;},getWindowArg:function(n,dv){var wm=EditorManager.activeEditor.windowManager,v;v=wm.getParam(n);if(v==='')return'';return v||wm.getFeature(n)||dv;},getParentNode:function(n,f){return this._getDOM().getParent(n,f);},selectElements:function(n,na,f){var i,a=[],nl,x;for(x=0,na=na.split(',');x<na.length;x++)for(i=0,nl=n.getElementsByTagName(na[x]);i<nl.length;i++)(!f||f(nl[i]))&&a.push(nl[i]);return a;},getNodeTree:function(n,na,t,nn){return this.selectNodes(n,function(n){return(!t||n.nodeType==t)&&(!nn||n.nodeName==nn);},na?na:[]);},getAttrib:function(e,n,dv){return this._getDOM().getAttrib(e,n,dv);},setAttrib:function(e,n,v){return this._getDOM().setAttrib(e,n,v);},getElementsByAttributeValue:function(n,e,a,v){var i,nl=n.getElementsByTagName(e),o=[];for(i=0;i<nl.length;i++){if(tinyMCE.getAttrib(nl[i],a).indexOf(v)!=-1)o[o.length]=nl[i];}return o;},selectNodes:function(n,f,a){var i;if(!a)a=[];if(f(n))a[a.length]=n;if(n.hasChildNodes()){for(i=0;i<n.childNodes.length;i++)tinyMCE.selectNodes(n.childNodes[i],f,a);}return a;},getContent:function(){return EditorManager.activeEditor.getContent();},getParentElement:function(n,na,f){if(na)na=new RegExp('^('+na.toUpperCase().replace(/,/g,'|')+')$','g');return this._getDOM().getParent(n,function(n){return n.nodeType==1&&(!na||na.test(n.nodeName))&&(!f||f(n));},this.activeEditor.getBody());},importPluginLanguagePack:function(n){tinymce.PluginManager.requireLangPack(n);},getButtonHTML:function(cn,lang,img,c,u,v){var ed=EditorManager.activeEditor;img=img.replace(/\{\$pluginurl\}/g,tinyMCE.pluginURL);img=img.replace(/\{\$themeurl\}/g,tinyMCE.themeURL);lang=lang.replace(/^lang_/g,'');return ed.controlManager.createButton(cn,{title:lang,command:c,ui:u,value:v,scope:this,'class':'compat',image:img});},addSelectAccessibility:function(e,s,w){if(!s._isAccessible){s.onkeydown=tinyMCE.accessibleEventHandler;s.onblur=tinyMCE.accessibleEventHandler;s._isAccessible=true;s._win=w;}return false;},accessibleEventHandler:function(e){var elm,win=this._win;e=tinymce.isIE?win.event:e;elm=tinymce.isIE?e.srcElement:e.target;if(e.type=="blur"){if(elm.oldonchange){elm.onchange=elm.oldonchange;elm.oldonchange=null;}return true;}if(elm.nodeName=="SELECT"&&!elm.oldonchange){elm.oldonchange=elm.onchange;elm.onchange=null;}if(e.keyCode==13||e.keyCode==32){elm.onchange=elm.oldonchange;elm.onchange();elm.oldonchange=null;tinyMCE.cancelEvent(e);return false;}return true;},cancelEvent:function(e){return tinymce.dom.Event.cancel(e);},handleVisualAid:function(e){EditorManager.activeEditor.addVisual(e);},getAbsPosition:function(n,r){return tinymce.DOM.getPos(n,r);},cleanupEventStr:function(s){s=""+s;s=s.replace('function anonymous()\n{\n','');s=s.replace('\n}','');s=s.replace(/^return true;/gi,'');return s;},getVisualAidClass:function(s){return s;},parseStyle:function(s){return this._getDOM().parseStyle(s);},serializeStyle:function(s){return this._getDOM().serializeStyle(s);},openWindow:function(tpl,args){var ed=EditorManager.activeEditor,o={},n;for(n in tpl)o[n]=tpl[n];tpl=o;args=args||{};tpl.url=new tinymce.util.URI(tinymce.ThemeManager.themeURLs[ed.settings.theme]).toAbsolute(tpl.file);tpl.inline=tpl.inline||args.inline;ed.windowManager.open(tpl,args);},closeWindow:function(win){EditorManager.activeEditor.windowManager.close(win);},getOuterHTML:function(e){return tinymce.DOM.getOuterHTML(e);},setOuterHTML:function(e,h,d){return tinymce.DOM.setOuterHTML(e,h,d);},hasPlugin:function(n){return tinymce.PluginManager.get(n)!=null;},_setEventsEnabled:function(){},addPlugin:function(pn,f){var t=this;function PluginWrapper(ed){tinyMCE.selectedInstance=ed;ed.onInit.add(function(){t.settings=ed.settings;t.settings['base_href']=tinyMCE.documentBasePath;tinyMCE.settings=t.settings;tinyMCE.documentBasePath=ed.documentBasePath;if(f.initInstance)f.initInstance(ed);ed.contentDocument=ed.getDoc();ed.contentWindow=ed.getWin();ed.undoRedo=ed.undoManager;ed.startContent=ed.getContent({format:'raw'});tinyMCE.instances[ed.id]=ed;tinyMCE.loadedFiles=[];});ed.onActivate.add(function(){tinyMCE.settings=ed.settings;tinyMCE.selectedInstance=ed;});if(f.handleNodeChange){ed.onNodeChange.add(function(ed,cm,n){f.handleNodeChange(ed.id,n,0,0,false,!ed.selection.isCollapsed());});}if(f.onChange){ed.onChange.add(function(ed,n){return f.onChange(ed);});}if(f.cleanup){ed.onGetContent.add(function(){});}this.getInfo=function(){return f.getInfo();};this.createControl=function(n){tinyMCE.pluginURL=tinymce.baseURL+'/plugins/'+pn;tinyMCE.themeURL=tinymce.baseURL+'/themes/'+tinyMCE.activeEditor.settings.theme;if(f.getControlHTML)return f.getControlHTML(n);return null;};this.execCommand=function(cmd,ui,val){if(f.execCommand)return f.execCommand(ed.id,ed.getBody(),cmd,ui,val);return false;};};tinymce.PluginManager.add(pn,PluginWrapper);},_getDOM:function(){return tinyMCE.activeEditor?tinyMCE.activeEditor.dom:tinymce.DOM;},convertRelativeToAbsoluteURL:function(b,u){return new tinymce.util.URI(b).toAbsolute(u);},convertAbsoluteURLToRelativeURL:function(b,u){return new tinymce.util.URI(b).toRelative(u);}});tinymce.extend(tinymce.Editor.prototype,{getFocusElement:function(){return this.selection.getNode();},getData:function(n){if(!this.data)this.data=[];if(!this.data[n])this.data[n]=[];return this.data[n];},hasPlugin:function(n){return this.plugins[n]!=null;},getContainerWin:function(){return window;},getHTML:function(raw){return this.getContent({format:raw?'raw':'html'});},setHTML:function(h){this.setContent(h);},getSel:function(){return this.selection.getSel();},getRng:function(){return this.selection.getRng();},isHidden:function(){var s;if(!tinymce.isGecko)return false;s=this.getSel();return(!s||!s.rangeCount||s.rangeCount==0);},translate:function(s){var c=this.settings.language,o;if(!s)return s;o=tinymce.EditorManager.i18n[c+'.'+s]||s.replace(/{\#([^}]+)\}/g,function(a,b){return tinymce.EditorManager.i18n[c+'.'+b]||'{#'+b+'}';});o=o.replace(/{\$lang_([^}]+)\}/g,function(a,b){return tinymce.EditorManager.i18n[c+'.'+b]||'{$lang_'+b+'}';});return o;},repaint:function(){this.execCommand('mceRepaint');}});tinymce.extend(tinymce.dom.Selection.prototype,{getSelectedText:function(){return this.getContent({format:'text'});},getSelectedHTML:function(){return this.getContent({format:'html'});},getFocusElement:function(){return this.getNode();},selectNode:function(node,collapse,select_text_node,to_start){var t=this;t.select(node,select_text_node||0);if(!is(collapse))collapse=true;if(collapse){if(!is(to_start))to_start=true;t.collapse(to_start);}}});}).call(this);tinymce.PluginManager.add('compat2x',tinymce.plugins.Compat2x);})();
\ No newline at end of file
--- /dev/null
+/**\r
+ * $Id: editor_plugin_src.js 264 2007-04-26 20:53:09Z spocke $\r
+ *\r
+ * @author Moxiecode\r
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+(function() {\r
+ var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, is = tinymce.is;\r
+\r
+ tinymce.create('tinymce.plugins.Compat2x', {\r
+ getInfo : function() {\r
+ return {\r
+ longname : 'Compat2x',\r
+ author : 'Moxiecode Systems AB',\r
+ authorurl : 'http://tinymce.moxiecode.com',\r
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/compat2x',\r
+ version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion\r
+ };\r
+ }\r
+ });\r
+\r
+ (function() {\r
+ // Extend tinyMCE/EditorManager\r
+ tinymce.extend(tinyMCE, {\r
+ addToLang : function(p, l) {\r
+ each(l, function(v, k) {\r
+ tinyMCE.i18n[(tinyMCE.settings.language || 'en') + '.' + (p ? p + '_' : '') + k] = v;\r
+ });\r
+ },\r
+\r
+ getInstanceById : function(n) {\r
+ return this.get(n);\r
+ }\r
+ });\r
+ })();\r
+\r
+ (function() {\r
+ var EditorManager = tinymce.EditorManager;\r
+\r
+ tinyMCE.instances = {};\r
+ tinyMCE.plugins = {};\r
+ tinymce.PluginManager.onAdd.add(function(pm, n, p) {\r
+ tinyMCE.plugins[n] = p;\r
+ });\r
+\r
+ tinyMCE.majorVersion = tinymce.majorVersion;\r
+ tinyMCE.minorVersion = tinymce.minorVersion;\r
+ tinyMCE.releaseDate = tinymce.releaseDate;\r
+ tinyMCE.baseURL = tinymce.baseURL;\r
+ tinyMCE.isIE = tinyMCE.isMSIE = tinymce.isIE || tinymce.isOpera;\r
+ tinyMCE.isMSIE5 = tinymce.isIE;\r
+ tinyMCE.isMSIE5_0 = tinymce.isIE;\r
+ tinyMCE.isMSIE7 = tinymce.isIE;\r
+ tinyMCE.isGecko = tinymce.isGecko;\r
+ tinyMCE.isSafari = tinymce.isWebKit;\r
+ tinyMCE.isOpera = tinymce.isOpera;\r
+ tinyMCE.isMac = false;\r
+ tinyMCE.isNS7 = false;\r
+ tinyMCE.isNS71 = false;\r
+ tinyMCE.compat = true;\r
+\r
+ // Extend tinyMCE class\r
+ TinyMCE_Engine = tinyMCE;\r
+ tinymce.extend(tinyMCE, {\r
+ getParam : function(n, dv) {\r
+ return this.activeEditor.getParam(n, dv);\r
+ },\r
+\r
+ addEvent : function(e, na, f, sc) {\r
+ tinymce.dom.Event.add(e, na, f, sc || this);\r
+ },\r
+\r
+ getControlHTML : function(n) {\r
+ return EditorManager.activeEditor.controlManager.createControl(n);\r
+ },\r
+\r
+ loadCSS : function(u) {\r
+ tinymce.DOM.loadCSS(u);\r
+ },\r
+\r
+ importCSS : function(doc, u) {\r
+ if (doc == document)\r
+ this.loadCSS(u);\r
+ else\r
+ new tinymce.dom.DOMUtils(doc).loadCSS(u);\r
+ },\r
+\r
+ log : function() {\r
+ console.debug.apply(console, arguments);\r
+ },\r
+\r
+ getLang : function(n, dv) {\r
+ var v = EditorManager.activeEditor.getLang(n.replace(/^lang_/g, ''), dv);\r
+\r
+ // Is number\r
+ if (/^[0-9\-.]+$/g.test(v))\r
+ return parseInt(v);\r
+\r
+ return v;\r
+ },\r
+\r
+ isInstance : function(o) {\r
+ return o != null && typeof(o) == "object" && o.execCommand;\r
+ },\r
+\r
+ triggerNodeChange : function() {\r
+ EditorManager.activeEditor.nodeChanged();\r
+ },\r
+\r
+ regexpReplace : function(in_str, reg_exp, replace_str, opts) {\r
+ var re;\r
+\r
+ if (in_str == null)\r
+ return in_str;\r
+\r
+ if (typeof(opts) == "undefined")\r
+ opts = 'g';\r
+\r
+ re = new RegExp(reg_exp, opts);\r
+\r
+ return in_str.replace(re, replace_str);\r
+ },\r
+\r
+ trim : function(s) {\r
+ return tinymce.trim(s);\r
+ },\r
+\r
+ xmlEncode : function(s) {\r
+ return tinymce.DOM.encode(s);\r
+ },\r
+\r
+ explode : function(s, d) {\r
+ var o = [];\r
+\r
+ tinymce.each(s.split(d), function(v) {\r
+ if (v != '')\r
+ o.push(v);\r
+ });\r
+\r
+ return o;\r
+ },\r
+\r
+ switchClass : function(id, cls) {\r
+ var b;\r
+\r
+ if (/^mceButton/.test(cls)) {\r
+ b = EditorManager.activeEditor.controlManager.get(id);\r
+\r
+ if (!b)\r
+ return;\r
+\r
+ switch (cls) {\r
+ case "mceButtonNormal":\r
+ b.setDisabled(false);\r
+ b.setActive(false);\r
+ return;\r
+\r
+ case "mceButtonDisabled":\r
+ b.setDisabled(true);\r
+ return;\r
+\r
+ case "mceButtonSelected":\r
+ b.setActive(true);\r
+ b.setDisabled(false);\r
+ return;\r
+ }\r
+ }\r
+ },\r
+\r
+ addCSSClass : function(e, n, b) {\r
+ return tinymce.DOM.addClass(e, n, b);\r
+ },\r
+\r
+ hasCSSClass : function(e, n) {\r
+ return tinymce.DOM.hasClass(e, n);\r
+ },\r
+\r
+ removeCSSClass : function(e, n) {\r
+ return tinymce.DOM.removeClass(e, n);\r
+ },\r
+\r
+ getCSSClasses : function() {\r
+ var cl = EditorManager.activeEditor.dom.getClasses(), o = [];\r
+\r
+ each(cl, function(c) {\r
+ o.push(c['class']);\r
+ });\r
+\r
+ return o;\r
+ },\r
+\r
+ setWindowArg : function(n, v) {\r
+ EditorManager.activeEditor.windowManager.params[n] = v;\r
+ },\r
+\r
+ getWindowArg : function(n, dv) {\r
+ var wm = EditorManager.activeEditor.windowManager, v;\r
+\r
+ v = wm.getParam(n);\r
+ if (v === '')\r
+ return '';\r
+\r
+ return v || wm.getFeature(n) || dv;\r
+ },\r
+\r
+ getParentNode : function(n, f) {\r
+ return this._getDOM().getParent(n, f);\r
+ },\r
+\r
+ selectElements : function(n, na, f) {\r
+ var i, a = [], nl, x;\r
+\r
+ for (x=0, na = na.split(','); x<na.length; x++)\r
+ for (i=0, nl = n.getElementsByTagName(na[x]); i<nl.length; i++)\r
+ (!f || f(nl[i])) && a.push(nl[i]);\r
+\r
+ return a;\r
+ },\r
+\r
+ getNodeTree : function(n, na, t, nn) {\r
+ return this.selectNodes(n, function(n) {\r
+ return (!t || n.nodeType == t) && (!nn || n.nodeName == nn);\r
+ }, na ? na : []);\r
+ },\r
+\r
+ getAttrib : function(e, n, dv) {\r
+ return this._getDOM().getAttrib(e, n, dv);\r
+ },\r
+\r
+ setAttrib : function(e, n, v) {\r
+ return this._getDOM().setAttrib(e, n, v);\r
+ },\r
+\r
+ getElementsByAttributeValue : function(n, e, a, v) {\r
+ var i, nl = n.getElementsByTagName(e), o = [];\r
+\r
+ for (i=0; i<nl.length; i++) {\r
+ if (tinyMCE.getAttrib(nl[i], a).indexOf(v) != -1)\r
+ o[o.length] = nl[i];\r
+ }\r
+\r
+ return o;\r
+ },\r
+\r
+ selectNodes : function(n, f, a) {\r
+ var i;\r
+\r
+ if (!a)\r
+ a = [];\r
+\r
+ if (f(n))\r
+ a[a.length] = n;\r
+\r
+ if (n.hasChildNodes()) {\r
+ for (i=0; i<n.childNodes.length; i++)\r
+ tinyMCE.selectNodes(n.childNodes[i], f, a);\r
+ }\r
+\r
+ return a;\r
+ },\r
+\r
+ getContent : function() {\r
+ return EditorManager.activeEditor.getContent();\r
+ },\r
+\r
+ getParentElement : function(n, na, f) {\r
+ if (na)\r
+ na = new RegExp('^(' + na.toUpperCase().replace(/,/g, '|') + ')$', 'g');\r
+\r
+ return this._getDOM().getParent(n, function(n) {\r
+ return n.nodeType == 1 && (!na || na.test(n.nodeName)) && (!f || f(n));\r
+ }, this.activeEditor.getBody());\r
+ },\r
+\r
+ importPluginLanguagePack : function(n) {\r
+ tinymce.PluginManager.requireLangPack(n);\r
+ },\r
+\r
+ getButtonHTML : function(cn, lang, img, c, u, v) {\r
+ var ed = EditorManager.activeEditor;\r
+\r
+ img = img.replace(/\{\$pluginurl\}/g, tinyMCE.pluginURL);\r
+ img = img.replace(/\{\$themeurl\}/g, tinyMCE.themeURL);\r
+ lang = lang.replace(/^lang_/g, '');\r
+\r
+ return ed.controlManager.createButton(cn, {\r
+ title : lang,\r
+ command : c,\r
+ ui : u,\r
+ value : v,\r
+ scope : this,\r
+ 'class' : 'compat',\r
+ image : img\r
+ });\r
+ },\r
+\r
+ addSelectAccessibility : function(e, s, w) {\r
+ // Add event handlers \r
+ if (!s._isAccessible) {\r
+ s.onkeydown = tinyMCE.accessibleEventHandler;\r
+ s.onblur = tinyMCE.accessibleEventHandler;\r
+ s._isAccessible = true;\r
+ s._win = w;\r
+ }\r
+\r
+ return false;\r
+ },\r
+\r
+ accessibleEventHandler : function(e) {\r
+ var elm, win = this._win;\r
+\r
+ e = tinymce.isIE ? win.event : e;\r
+ elm = tinymce.isIE ? e.srcElement : e.target;\r
+\r
+ // Unpiggyback onchange on blur\r
+ if (e.type == "blur") {\r
+ if (elm.oldonchange) {\r
+ elm.onchange = elm.oldonchange;\r
+ elm.oldonchange = null;\r
+ }\r
+\r
+ return true;\r
+ }\r
+\r
+ // Piggyback onchange\r
+ if (elm.nodeName == "SELECT" && !elm.oldonchange) {\r
+ elm.oldonchange = elm.onchange;\r
+ elm.onchange = null;\r
+ }\r
+\r
+ // Execute onchange and remove piggyback\r
+ if (e.keyCode == 13 || e.keyCode == 32) {\r
+ elm.onchange = elm.oldonchange;\r
+ elm.onchange();\r
+ elm.oldonchange = null;\r
+\r
+ tinyMCE.cancelEvent(e);\r
+ return false;\r
+ }\r
+\r
+ return true;\r
+ },\r
+\r
+ cancelEvent : function(e) {\r
+ return tinymce.dom.Event.cancel(e);\r
+ },\r
+\r
+ handleVisualAid : function(e) {\r
+ EditorManager.activeEditor.addVisual(e);\r
+ },\r
+\r
+ getAbsPosition : function(n, r) {\r
+ return tinymce.DOM.getPos(n, r);\r
+ },\r
+\r
+ cleanupEventStr : function(s) {\r
+ s = "" + s;\r
+ s = s.replace('function anonymous()\n{\n', '');\r
+ s = s.replace('\n}', '');\r
+ s = s.replace(/^return true;/gi, ''); // Remove event blocker\r
+\r
+ return s;\r
+ },\r
+\r
+ getVisualAidClass : function(s) {\r
+ // TODO: Implement\r
+ return s;\r
+ },\r
+\r
+ parseStyle : function(s) {\r
+ return this._getDOM().parseStyle(s);\r
+ },\r
+\r
+ serializeStyle : function(s) {\r
+ return this._getDOM().serializeStyle(s);\r
+ },\r
+\r
+ openWindow : function(tpl, args) {\r
+ var ed = EditorManager.activeEditor, o = {}, n;\r
+\r
+ // Convert name/value array to object\r
+ for (n in tpl)\r
+ o[n] = tpl[n];\r
+\r
+ tpl = o;\r
+\r
+ args = args || {};\r
+ tpl.url = new tinymce.util.URI(tinymce.ThemeManager.themeURLs[ed.settings.theme]).toAbsolute(tpl.file);\r
+ tpl.inline = tpl.inline || args.inline;\r
+\r
+ ed.windowManager.open(tpl, args);\r
+ },\r
+\r
+ closeWindow : function(win) {\r
+ EditorManager.activeEditor.windowManager.close(win);\r
+ },\r
+\r
+ getOuterHTML : function(e) {\r
+ return tinymce.DOM.getOuterHTML(e);\r
+ },\r
+\r
+ setOuterHTML : function(e, h, d) {\r
+ return tinymce.DOM.setOuterHTML(e, h, d);\r
+ },\r
+\r
+ hasPlugin : function(n) {\r
+ return tinymce.PluginManager.get(n) != null;\r
+ },\r
+\r
+ _setEventsEnabled : function() {\r
+ // Ignore it!!\r
+ },\r
+\r
+ addPlugin : function(pn, f) {\r
+ var t = this;\r
+\r
+ function PluginWrapper(ed) {\r
+ tinyMCE.selectedInstance = ed;\r
+\r
+ ed.onInit.add(function() {\r
+ t.settings = ed.settings;\r
+ t.settings['base_href'] = tinyMCE.documentBasePath;\r
+ tinyMCE.settings = t.settings;\r
+ tinyMCE.documentBasePath = ed.documentBasePath;\r
+ //ed.formElement = DOM.get(ed.id);\r
+\r
+ if (f.initInstance)\r
+ f.initInstance(ed);\r
+\r
+ ed.contentDocument = ed.getDoc();\r
+ ed.contentWindow = ed.getWin();\r
+ ed.undoRedo = ed.undoManager;\r
+ ed.startContent = ed.getContent({format : 'raw'});\r
+\r
+ tinyMCE.instances[ed.id] = ed;\r
+ tinyMCE.loadedFiles = [];\r
+ });\r
+\r
+ ed.onActivate.add(function() {\r
+ tinyMCE.settings = ed.settings;\r
+ tinyMCE.selectedInstance = ed;\r
+ });\r
+\r
+ /* if (f.removeInstance) {\r
+ ed.onDestroy.add(function() {\r
+ return f.removeInstance(ed.id);\r
+ });\r
+ }*/\r
+\r
+ if (f.handleNodeChange) {\r
+ ed.onNodeChange.add(function(ed, cm, n) {\r
+ f.handleNodeChange(ed.id, n, 0, 0, false, !ed.selection.isCollapsed());\r
+ });\r
+ }\r
+\r
+ if (f.onChange) {\r
+ ed.onChange.add(function(ed, n) {\r
+ return f.onChange(ed);\r
+ });\r
+ }\r
+\r
+ if (f.cleanup) {\r
+ ed.onGetContent.add(function() {\r
+ //f.cleanup(type, content, inst);\r
+ });\r
+ }\r
+\r
+ this.getInfo = function() {\r
+ return f.getInfo();\r
+ };\r
+\r
+ this.createControl = function(n) {\r
+ tinyMCE.pluginURL = tinymce.baseURL + '/plugins/' + pn;\r
+ tinyMCE.themeURL = tinymce.baseURL + '/themes/' + tinyMCE.activeEditor.settings.theme;\r
+\r
+ if (f.getControlHTML)\r
+ return f.getControlHTML(n);\r
+\r
+ return null;\r
+ };\r
+\r
+ this.execCommand = function(cmd, ui, val) {\r
+ if (f.execCommand)\r
+ return f.execCommand(ed.id, ed.getBody(), cmd, ui, val);\r
+\r
+ return false;\r
+ };\r
+ };\r
+\r
+ tinymce.PluginManager.add(pn, PluginWrapper);\r
+ },\r
+\r
+ _getDOM : function() {\r
+ return tinyMCE.activeEditor ? tinyMCE.activeEditor.dom : tinymce.DOM;\r
+ },\r
+\r
+ convertRelativeToAbsoluteURL : function(b, u) {\r
+ return new tinymce.util.URI(b).toAbsolute(u);\r
+ },\r
+\r
+ convertAbsoluteURLToRelativeURL : function(b, u) {\r
+ return new tinymce.util.URI(b).toRelative(u);\r
+ }\r
+ });\r
+\r
+ // Extend Editor class\r
+ tinymce.extend(tinymce.Editor.prototype, {\r
+ getFocusElement : function() {\r
+ return this.selection.getNode();\r
+ },\r
+\r
+ getData : function(n) {\r
+ if (!this.data)\r
+ this.data = [];\r
+\r
+ if (!this.data[n])\r
+ this.data[n] = [];\r
+\r
+ return this.data[n];\r
+ },\r
+\r
+ hasPlugin : function(n) {\r
+ return this.plugins[n] != null;\r
+ },\r
+\r
+ getContainerWin : function() {\r
+ return window;\r
+ },\r
+\r
+ getHTML : function(raw) {\r
+ return this.getContent({ format : raw ? 'raw' : 'html'});\r
+ },\r
+\r
+ setHTML : function(h) {\r
+ this.setContent(h);\r
+ },\r
+\r
+ getSel : function() {\r
+ return this.selection.getSel();\r
+ },\r
+\r
+ getRng : function() {\r
+ return this.selection.getRng();\r
+ },\r
+\r
+ isHidden : function() {\r
+ var s;\r
+\r
+ if (!tinymce.isGecko)\r
+ return false;\r
+\r
+ s = this.getSel();\r
+\r
+ // Weird, wheres that cursor selection?\r
+ return (!s || !s.rangeCount || s.rangeCount == 0);\r
+ },\r
+\r
+ translate : function(s) {\r
+ var c = this.settings.language, o;\r
+\r
+ if (!s)\r
+ return s;\r
+\r
+ o = tinymce.EditorManager.i18n[c + '.' + s] || s.replace(/{\#([^}]+)\}/g, function(a, b) {\r
+ return tinymce.EditorManager.i18n[c + '.' + b] || '{#' + b + '}';\r
+ });\r
+\r
+ o = o.replace(/{\$lang_([^}]+)\}/g, function(a, b) {\r
+ return tinymce.EditorManager.i18n[c + '.' + b] || '{$lang_' + b + '}';\r
+ });\r
+\r
+ return o;\r
+ },\r
+\r
+ repaint : function() {\r
+ this.execCommand('mceRepaint');\r
+ }\r
+ });\r
+\r
+ // Extend selection\r
+ tinymce.extend(tinymce.dom.Selection.prototype, {\r
+ getSelectedText : function() {\r
+ return this.getContent({format : 'text'});\r
+ },\r
+\r
+ getSelectedHTML : function() {\r
+ return this.getContent({format : 'html'});\r
+ },\r
+\r
+ getFocusElement : function() {\r
+ return this.getNode();\r
+ },\r
+\r
+ selectNode : function(node, collapse, select_text_node, to_start) {\r
+ var t = this;\r
+\r
+ t.select(node, select_text_node || 0);\r
+\r
+ if (!is(collapse))\r
+ collapse = true;\r
+\r
+ if (collapse) {\r
+ if (!is(to_start))\r
+ to_start = true;\r
+\r
+ t.collapse(to_start);\r
+ }\r
+ }\r
+ });\r
+ }).call(this);\r
+\r
+ // Register plugin\r
+ tinymce.PluginManager.add('compat2x', tinymce.plugins.Compat2x);\r
+})();\r
+\r
--- /dev/null
+(function(){var Event=tinymce.dom.Event,each=tinymce.each,DOM=tinymce.DOM;tinymce.create('tinymce.plugins.ContextMenu',{init:function(ed){var t=this;t.editor=ed;t.onContextMenu=new tinymce.util.Dispatcher(this);ed.onContextMenu.add(function(ed,e){if(!e.ctrlKey){t._getMenu(ed).showMenu(e.clientX,e.clientY);Event.add(ed.getDoc(),'click',hide);Event.cancel(e);}});function hide(){if(t._menu){t._menu.removeAll();t._menu.destroy();Event.remove(ed.getDoc(),'click',hide);}};ed.onMouseDown.add(hide);ed.onKeyDown.add(hide);},getInfo:function(){return{longname:'Contextmenu',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/contextmenu',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_getMenu:function(ed){var t=this,m=t._menu,se=ed.selection,col=se.isCollapsed(),el=se.getNode()||ed.getBody(),am,p1,p2;if(m){m.removeAll();m.destroy();}p1=DOM.getPos(ed.getContentAreaContainer());p2=DOM.getPos(ed.getContainer());m=ed.controlManager.createDropMenu('contextmenu',{offset_x:p1.x+ed.getParam('contextmenu_offset_x',0),offset_y:p1.y+ed.getParam('contextmenu_offset_y',0),constrain:1});t._menu=m;m.add({title:'advanced.cut_desc',icon:'cut',cmd:'Cut'}).setDisabled(col);m.add({title:'advanced.copy_desc',icon:'copy',cmd:'Copy'}).setDisabled(col);m.add({title:'advanced.paste_desc',icon:'paste',cmd:'Paste'});if((el.nodeName=='A'&&!ed.dom.getAttrib(el,'name'))||!col){m.addSeparator();m.add({title:'advanced.link_desc',icon:'link',cmd:ed.plugins.advlink?'mceAdvLink':'mceLink',ui:true});m.add({title:'advanced.unlink_desc',icon:'unlink',cmd:'UnLink'});}m.addSeparator();m.add({title:'advanced.image_desc',icon:'image',cmd:ed.plugins.advimage?'mceAdvImage':'mceImage',ui:true});m.addSeparator();am=m.addMenu({title:'contextmenu.align'});am.add({title:'contextmenu.left',icon:'justifyleft',cmd:'JustifyLeft'});am.add({title:'contextmenu.center',icon:'justifycenter',cmd:'JustifyCenter'});am.add({title:'contextmenu.right',icon:'justifyright',cmd:'JustifyRight'});am.add({title:'contextmenu.full',icon:'justifyfull',cmd:'JustifyFull'});t.onContextMenu.dispatch(t,m,el,col);return m;}});tinymce.PluginManager.add('contextmenu',tinymce.plugins.ContextMenu);})();
\ No newline at end of file
--- /dev/null
+/**\r
+ * $Id: editor_plugin_src.js 848 2008-05-15 11:54:40Z spocke $\r
+ *\r
+ * @author Moxiecode\r
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+(function() {\r
+ var Event = tinymce.dom.Event, each = tinymce.each, DOM = tinymce.DOM;\r
+\r
+ tinymce.create('tinymce.plugins.ContextMenu', {\r
+ init : function(ed) {\r
+ var t = this;\r
+\r
+ t.editor = ed;\r
+ t.onContextMenu = new tinymce.util.Dispatcher(this);\r
+\r
+ ed.onContextMenu.add(function(ed, e) {\r
+ if (!e.ctrlKey) {\r
+ t._getMenu(ed).showMenu(e.clientX, e.clientY);\r
+ Event.add(ed.getDoc(), 'click', hide);\r
+ Event.cancel(e);\r
+ }\r
+ });\r
+\r
+ function hide() {\r
+ if (t._menu) {\r
+ t._menu.removeAll();\r
+ t._menu.destroy();\r
+ Event.remove(ed.getDoc(), 'click', hide);\r
+ }\r
+ };\r
+\r
+ ed.onMouseDown.add(hide);\r
+ ed.onKeyDown.add(hide);\r
+ },\r
+\r
+ getInfo : function() {\r
+ return {\r
+ longname : 'Contextmenu',\r
+ author : 'Moxiecode Systems AB',\r
+ authorurl : 'http://tinymce.moxiecode.com',\r
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/contextmenu',\r
+ version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+ };\r
+ },\r
+\r
+ _getMenu : function(ed) {\r
+ var t = this, m = t._menu, se = ed.selection, col = se.isCollapsed(), el = se.getNode() || ed.getBody(), am, p1, p2;\r
+\r
+ if (m) {\r
+ m.removeAll();\r
+ m.destroy();\r
+ }\r
+\r
+ p1 = DOM.getPos(ed.getContentAreaContainer());\r
+ p2 = DOM.getPos(ed.getContainer());\r
+\r
+ m = ed.controlManager.createDropMenu('contextmenu', {\r
+ offset_x : p1.x + ed.getParam('contextmenu_offset_x', 0),\r
+ offset_y : p1.y + ed.getParam('contextmenu_offset_y', 0),\r
+ constrain : 1\r
+ });\r
+\r
+ t._menu = m;\r
+\r
+ m.add({title : 'advanced.cut_desc', icon : 'cut', cmd : 'Cut'}).setDisabled(col);\r
+ m.add({title : 'advanced.copy_desc', icon : 'copy', cmd : 'Copy'}).setDisabled(col);\r
+ m.add({title : 'advanced.paste_desc', icon : 'paste', cmd : 'Paste'});\r
+\r
+ if ((el.nodeName == 'A' && !ed.dom.getAttrib(el, 'name')) || !col) {\r
+ m.addSeparator();\r
+ m.add({title : 'advanced.link_desc', icon : 'link', cmd : ed.plugins.advlink ? 'mceAdvLink' : 'mceLink', ui : true});\r
+ m.add({title : 'advanced.unlink_desc', icon : 'unlink', cmd : 'UnLink'});\r
+ }\r
+\r
+ m.addSeparator();\r
+ m.add({title : 'advanced.image_desc', icon : 'image', cmd : ed.plugins.advimage ? 'mceAdvImage' : 'mceImage', ui : true});\r
+\r
+ m.addSeparator();\r
+ am = m.addMenu({title : 'contextmenu.align'});\r
+ am.add({title : 'contextmenu.left', icon : 'justifyleft', cmd : 'JustifyLeft'});\r
+ am.add({title : 'contextmenu.center', icon : 'justifycenter', cmd : 'JustifyCenter'});\r
+ am.add({title : 'contextmenu.right', icon : 'justifyright', cmd : 'JustifyRight'});\r
+ am.add({title : 'contextmenu.full', icon : 'justifyfull', cmd : 'JustifyFull'});\r
+\r
+ t.onContextMenu.dispatch(t, m, el, col);\r
+\r
+ return m;\r
+ }\r
+ });\r
+\r
+ // Register plugin\r
+ tinymce.PluginManager.add('contextmenu', tinymce.plugins.ContextMenu);\r
+})();
\ No newline at end of file
--- /dev/null
+(function(){tinymce.create('tinymce.plugins.Directionality',{init:function(ed,url){var t=this;t.editor=ed;ed.addCommand('mceDirectionLTR',function(){var e=ed.dom.getParent(ed.selection.getNode(),ed.dom.isBlock);if(e){if(ed.dom.getAttrib(e,"dir")!="ltr")ed.dom.setAttrib(e,"dir","ltr");else ed.dom.setAttrib(e,"dir","");}ed.nodeChanged();});ed.addCommand('mceDirectionRTL',function(){var e=ed.dom.getParent(ed.selection.getNode(),ed.dom.isBlock);if(e){if(ed.dom.getAttrib(e,"dir")!="rtl")ed.dom.setAttrib(e,"dir","rtl");else ed.dom.setAttrib(e,"dir","");}ed.nodeChanged();});ed.addButton('ltr',{title:'directionality.ltr_desc',cmd:'mceDirectionLTR'});ed.addButton('rtl',{title:'directionality.rtl_desc',cmd:'mceDirectionRTL'});ed.onNodeChange.add(t._nodeChange,t);},getInfo:function(){return{longname:'Directionality',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/directionality',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_nodeChange:function(ed,cm,n){var dom=ed.dom,dir;n=dom.getParent(n,dom.isBlock);if(!n){cm.setDisabled('ltr',1);cm.setDisabled('rtl',1);return;}dir=dom.getAttrib(n,'dir');cm.setActive('ltr',dir=="ltr");cm.setDisabled('ltr',0);cm.setActive('rtl',dir=="rtl");cm.setDisabled('rtl',0);}});tinymce.PluginManager.add('directionality',tinymce.plugins.Directionality);})();
\ No newline at end of file
--- /dev/null
+/**\r
+ * $Id: editor_plugin_src.js 520 2008-01-07 16:30:32Z spocke $\r
+ *\r
+ * @author Moxiecode\r
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+(function() {\r
+ tinymce.create('tinymce.plugins.Directionality', {\r
+ init : function(ed, url) {\r
+ var t = this;\r
+\r
+ t.editor = ed;\r
+\r
+ ed.addCommand('mceDirectionLTR', function() {\r
+ var e = ed.dom.getParent(ed.selection.getNode(), ed.dom.isBlock);\r
+\r
+ if (e) {\r
+ if (ed.dom.getAttrib(e, "dir") != "ltr")\r
+ ed.dom.setAttrib(e, "dir", "ltr");\r
+ else\r
+ ed.dom.setAttrib(e, "dir", "");\r
+ }\r
+\r
+ ed.nodeChanged();\r
+ });\r
+\r
+ ed.addCommand('mceDirectionRTL', function() {\r
+ var e = ed.dom.getParent(ed.selection.getNode(), ed.dom.isBlock);\r
+\r
+ if (e) {\r
+ if (ed.dom.getAttrib(e, "dir") != "rtl")\r
+ ed.dom.setAttrib(e, "dir", "rtl");\r
+ else\r
+ ed.dom.setAttrib(e, "dir", "");\r
+ }\r
+\r
+ ed.nodeChanged();\r
+ });\r
+\r
+ ed.addButton('ltr', {title : 'directionality.ltr_desc', cmd : 'mceDirectionLTR'});\r
+ ed.addButton('rtl', {title : 'directionality.rtl_desc', cmd : 'mceDirectionRTL'});\r
+\r
+ ed.onNodeChange.add(t._nodeChange, t);\r
+ },\r
+\r
+ getInfo : function() {\r
+ return {\r
+ longname : 'Directionality',\r
+ author : 'Moxiecode Systems AB',\r
+ authorurl : 'http://tinymce.moxiecode.com',\r
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/directionality',\r
+ version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+ };\r
+ },\r
+\r
+ // Private methods\r
+\r
+ _nodeChange : function(ed, cm, n) {\r
+ var dom = ed.dom, dir;\r
+\r
+ n = dom.getParent(n, dom.isBlock);\r
+ if (!n) {\r
+ cm.setDisabled('ltr', 1);\r
+ cm.setDisabled('rtl', 1);\r
+ return;\r
+ }\r
+\r
+ dir = dom.getAttrib(n, 'dir');\r
+ cm.setActive('ltr', dir == "ltr");\r
+ cm.setDisabled('ltr', 0);\r
+ cm.setActive('rtl', dir == "rtl");\r
+ cm.setDisabled('rtl', 0);\r
+ }\r
+ });\r
+\r
+ // Register plugin\r
+ tinymce.PluginManager.add('directionality', tinymce.plugins.Directionality);\r
+})();
\ No newline at end of file
--- /dev/null
+(function(){tinymce.create('tinymce.plugins.EmotionsPlugin',{init:function(ed,url){ed.addCommand('mceEmotion',function(){ed.windowManager.open({file:url+'/emotions.htm',width:250+parseInt(ed.getLang('emotions.delta_width',0)),height:160+parseInt(ed.getLang('emotions.delta_height',0)),inline:1},{plugin_url:url});});ed.addButton('emotions',{title:'emotions.emotions_desc',cmd:'mceEmotion'});},getInfo:function(){return{longname:'Emotions',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/emotions',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('emotions',tinymce.plugins.EmotionsPlugin);})();
\ No newline at end of file
--- /dev/null
+/**\r
+ * $Id: editor_plugin_src.js 520 2008-01-07 16:30:32Z spocke $\r
+ *\r
+ * @author Moxiecode\r
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+(function() {\r
+ tinymce.create('tinymce.plugins.EmotionsPlugin', {\r
+ init : function(ed, url) {\r
+ // Register commands\r
+ ed.addCommand('mceEmotion', function() {\r
+ ed.windowManager.open({\r
+ file : url + '/emotions.htm',\r
+ width : 250 + parseInt(ed.getLang('emotions.delta_width', 0)),\r
+ height : 160 + parseInt(ed.getLang('emotions.delta_height', 0)),\r
+ inline : 1\r
+ }, {\r
+ plugin_url : url\r
+ });\r
+ });\r
+\r
+ // Register buttons\r
+ ed.addButton('emotions', {title : 'emotions.emotions_desc', cmd : 'mceEmotion'});\r
+ },\r
+\r
+ getInfo : function() {\r
+ return {\r
+ longname : 'Emotions',\r
+ author : 'Moxiecode Systems AB',\r
+ authorurl : 'http://tinymce.moxiecode.com',\r
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/emotions',\r
+ version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+ };\r
+ }\r
+ });\r
+\r
+ // Register plugin\r
+ tinymce.PluginManager.add('emotions', tinymce.plugins.EmotionsPlugin);\r
+})();
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+ <title>{#emotions_dlg.title}</title>\r
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
+ <script type="text/javascript" src="js/emotions.js"></script>\r
+ <base target="_self" />\r
+</head>\r
+<body style="display: none">\r
+ <div align="center">\r
+ <div class="title">{#emotions_dlg.title}:<br /><br /></div>\r
+\r
+ <table border="0" cellspacing="0" cellpadding="4">\r
+ <tr>\r
+ <td><a href="javascript:EmotionsDialog.insert('smiley-cool.gif','emotions_dlg.cool');"><img src="img/smiley-cool.gif" width="18" height="18" border="0" alt="{#emotions_dlg.cool}" title="{#emotions_dlg.cool}" /></a></td>\r
+ <td><a href="javascript:EmotionsDialog.insert('smiley-cry.gif','emotions_dlg.cry');"><img src="img/smiley-cry.gif" width="18" height="18" border="0" alt="{#emotions_dlg.cry}" title="{#emotions_dlg.cry}" /></a></td>\r
+ <td><a href="javascript:EmotionsDialog.insert('smiley-embarassed.gif','emotions_dlg.embarassed');"><img src="img/smiley-embarassed.gif" width="18" height="18" border="0" alt="{#emotions_dlg.embarassed}" title="{#emotions_dlg.embarassed}" /></a></td>\r
+ <td><a href="javascript:EmotionsDialog.insert('smiley-foot-in-mouth.gif','emotions_dlg.foot_in_mouth');"><img src="img/smiley-foot-in-mouth.gif" width="18" height="18" border="0" alt="{#emotions_dlg.foot_in_mouth}" title="{#emotions_dlg.foot_in_mouth}" /></a></td>\r
+ </tr>\r
+ <tr>\r
+ <td><a href="javascript:EmotionsDialog.insert('smiley-frown.gif','emotions_dlg.frown');"><img src="img/smiley-frown.gif" width="18" height="18" border="0" alt="{#emotions_dlg.frown}" title="{#emotions_dlg.frown}" /></a></td>\r
+ <td><a href="javascript:EmotionsDialog.insert('smiley-innocent.gif','emotions_dlg.innocent');"><img src="img/smiley-innocent.gif" width="18" height="18" border="0" alt="{#emotions_dlg.innocent}" title="{#emotions_dlg.innocent}" /></a></td>\r
+ <td><a href="javascript:EmotionsDialog.insert('smiley-kiss.gif','emotions_dlg.kiss');"><img src="img/smiley-kiss.gif" width="18" height="18" border="0" alt="{#emotions_dlg.kiss}" title="{#emotions_dlg.kiss}" /></a></td>\r
+ <td><a href="javascript:EmotionsDialog.insert('smiley-laughing.gif','emotions_dlg.laughing');"><img src="img/smiley-laughing.gif" width="18" height="18" border="0" alt="{#emotions_dlg.laughing}" title="{#emotions_dlg.laughing}" /></a></td>\r
+ </tr>\r
+ <tr>\r
+ <td><a href="javascript:EmotionsDialog.insert('smiley-money-mouth.gif','emotions_dlg.money_mouth');"><img src="img/smiley-money-mouth.gif" width="18" height="18" border="0" alt="{#emotions_dlg.money_mouth}" title="{#emotions_dlg.money_mouth}" /></a></td>\r
+ <td><a href="javascript:EmotionsDialog.insert('smiley-sealed.gif','emotions_dlg.sealed');"><img src="img/smiley-sealed.gif" width="18" height="18" border="0" alt="{#emotions_dlg.sealed}" title="{#emotions_dlg.sealed}" /></a></td>\r
+ <td><a href="javascript:EmotionsDialog.insert('smiley-smile.gif','emotions_dlg.smile');"><img src="img/smiley-smile.gif" width="18" height="18" border="0" alt="{#emotions_dlg.smile}" title="{#emotions_dlg.smile}" /></a></td>\r
+ <td><a href="javascript:EmotionsDialog.insert('smiley-surprised.gif','emotions_dlg.surprised');"><img src="img/smiley-surprised.gif" width="18" height="18" border="0" alt="{#emotions_dlg.surprised}" title="{#emotions_dlg.surprised}" /></a></td>\r
+ </tr>\r
+ <tr>\r
+ <td><a href="javascript:EmotionsDialog.insert('smiley-tongue-out.gif','emotions_dlg.tongue_out');"><img src="img/smiley-tongue-out.gif" width="18" height="18" border="0" alt="{#emotions_dlg.tongue-out}" title="{#emotions_dlg.tongue_out}" /></a></td>\r
+ <td><a href="javascript:EmotionsDialog.insert('smiley-undecided.gif','emotions_dlg.undecided');"><img src="img/smiley-undecided.gif" width="18" height="18" border="0" alt="{#emotions_dlg.undecided}" title="{#emotions_dlg.undecided}" /></a></td>\r
+ <td><a href="javascript:EmotionsDialog.insert('smiley-wink.gif','emotions_dlg.wink');"><img src="img/smiley-wink.gif" width="18" height="18" border="0" alt="{#emotions_dlg.wink}" title="{#emotions_dlg.wink}" /></a></td>\r
+ <td><a href="javascript:EmotionsDialog.insert('smiley-yell.gif','emotions_dlg.yell');"><img src="img/smiley-yell.gif" width="18" height="18" border="0" alt="{#emotions_dlg.yell}" title="{#emotions_dlg.yell}" /></a></td>\r
+ </tr>\r
+ </table>\r
+ </div>\r
+</body>\r
+</html>\r
--- /dev/null
+tinyMCEPopup.requireLangPack();\r
+\r
+var EmotionsDialog = {\r
+ init : function(ed) {\r
+ tinyMCEPopup.resizeToInnerSize();\r
+ },\r
+\r
+ insert : function(file, title) {\r
+ var ed = tinyMCEPopup.editor, dom = ed.dom;\r
+\r
+ tinyMCEPopup.execCommand('mceInsertContent', false, dom.createHTML('img', {\r
+ src : tinyMCEPopup.getWindowArg('plugin_url') + '/img/' + file,\r
+ alt : ed.getLang(title),\r
+ title : ed.getLang(title),\r
+ border : 0\r
+ }));\r
+\r
+ tinyMCEPopup.close();\r
+ }\r
+};\r
+\r
+tinyMCEPopup.onInit.add(EmotionsDialog.init, EmotionsDialog);\r
--- /dev/null
+tinyMCE.addI18n('en.emotions_dlg',{\r
+title:"Insert emotion",\r
+desc:"Emotions",\r
+cool:"Cool",\r
+cry:"Cry",\r
+embarassed:"Embarassed",\r
+foot_in_mouth:"Foot in mouth",\r
+frown:"Frown",\r
+innocent:"Innocent",\r
+kiss:"Kiss",\r
+laughing:"Laughing",\r
+money_mouth:"Money mouth",\r
+sealed:"Sealed",\r
+smile:"Smile",\r
+surprised:"Surprised",\r
+tongue_out:"Tongue out",\r
+undecided:"Undecided",\r
+wink:"Wink",\r
+yell:"Yell"\r
+});
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+ <title>{#example_dlg.title}</title>\r
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
+ <script type="text/javascript" src="js/dialog.js"></script>\r
+</head>\r
+<body>\r
+\r
+<form onsubmit="ExampleDialog.insert();return false;" action="#">\r
+ <p>Here is a example dialog.</p>\r
+ <p>Selected text: <input id="someval" name="someval" type="text" class="text" /></p>\r
+ <p>Custom arg: <input id="somearg" name="somearg" type="text" class="text" /></p>\r
+\r
+ <div class="mceActionPanel">\r
+ <div style="float: left">\r
+ <input type="button" id="insert" name="insert" value="{#insert}" onclick="ExampleDialog.insert();" />\r
+ </div>\r
+\r
+ <div style="float: right">\r
+ <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
+ </div>\r
+ </div>\r
+</form>\r
+\r
+</body>\r
+</html>\r
--- /dev/null
+(function(){tinymce.PluginManager.requireLangPack('example');tinymce.create('tinymce.plugins.ExamplePlugin',{init:function(ed,url){ed.addCommand('mceExample',function(){ed.windowManager.open({file:url+'/dialog.htm',width:320+parseInt(ed.getLang('example.delta_width',0)),height:120+parseInt(ed.getLang('example.delta_height',0)),inline:1},{plugin_url:url,some_custom_arg:'custom arg'});});ed.addButton('example',{title:'example.desc',cmd:'mceExample',image:url+'/img/example.gif'});ed.onNodeChange.add(function(ed,cm,n){cm.setActive('example',n.nodeName=='IMG');});},createControl:function(n,cm){return null;},getInfo:function(){return{longname:'Example plugin',author:'Some author',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/example',version:"1.0"};}});tinymce.PluginManager.add('example',tinymce.plugins.ExamplePlugin);})();
\ No newline at end of file
--- /dev/null
+/**\r
+ * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $\r
+ *\r
+ * @author Moxiecode\r
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+(function() {\r
+ // Load plugin specific language pack\r
+ tinymce.PluginManager.requireLangPack('example');\r
+\r
+ tinymce.create('tinymce.plugins.ExamplePlugin', {\r
+ /**\r
+ * Initializes the plugin, this will be executed after the plugin has been created.\r
+ * This call is done before the editor instance has finished it's initialization so use the onInit event\r
+ * of the editor instance to intercept that event.\r
+ *\r
+ * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in.\r
+ * @param {string} url Absolute URL to where the plugin is located.\r
+ */\r
+ init : function(ed, url) {\r
+ // Register the command so that it can be invoked by using tinyMCE.activeEditor.execCommand('mceExample');\r
+ ed.addCommand('mceExample', function() {\r
+ ed.windowManager.open({\r
+ file : url + '/dialog.htm',\r
+ width : 320 + parseInt(ed.getLang('example.delta_width', 0)),\r
+ height : 120 + parseInt(ed.getLang('example.delta_height', 0)),\r
+ inline : 1\r
+ }, {\r
+ plugin_url : url, // Plugin absolute URL\r
+ some_custom_arg : 'custom arg' // Custom argument\r
+ });\r
+ });\r
+\r
+ // Register example button\r
+ ed.addButton('example', {\r
+ title : 'example.desc',\r
+ cmd : 'mceExample',\r
+ image : url + '/img/example.gif'\r
+ });\r
+\r
+ // Add a node change handler, selects the button in the UI when a image is selected\r
+ ed.onNodeChange.add(function(ed, cm, n) {\r
+ cm.setActive('example', n.nodeName == 'IMG');\r
+ });\r
+ },\r
+\r
+ /**\r
+ * Creates control instances based in the incomming name. This method is normally not\r
+ * needed since the addButton method of the tinymce.Editor class is a more easy way of adding buttons\r
+ * but you sometimes need to create more complex controls like listboxes, split buttons etc then this\r
+ * method can be used to create those.\r
+ *\r
+ * @param {String} n Name of the control to create.\r
+ * @param {tinymce.ControlManager} cm Control manager to use inorder to create new control.\r
+ * @return {tinymce.ui.Control} New control instance or null if no control was created.\r
+ */\r
+ createControl : function(n, cm) {\r
+ return null;\r
+ },\r
+\r
+ /**\r
+ * Returns information about the plugin as a name/value array.\r
+ * The current keys are longname, author, authorurl, infourl and version.\r
+ *\r
+ * @return {Object} Name/value array containing information about the plugin.\r
+ */\r
+ getInfo : function() {\r
+ return {\r
+ longname : 'Example plugin',\r
+ author : 'Some author',\r
+ authorurl : 'http://tinymce.moxiecode.com',\r
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/example',\r
+ version : "1.0"\r
+ };\r
+ }\r
+ });\r
+\r
+ // Register plugin\r
+ tinymce.PluginManager.add('example', tinymce.plugins.ExamplePlugin);\r
+})();
\ No newline at end of file
--- /dev/null
+tinyMCEPopup.requireLangPack();\r
+\r
+var ExampleDialog = {\r
+ init : function() {\r
+ var f = document.forms[0];\r
+\r
+ // Get the selected contents as text and place it in the input\r
+ f.someval.value = tinyMCEPopup.editor.selection.getContent({format : 'text'});\r
+ f.somearg.value = tinyMCEPopup.getWindowArg('some_custom_arg');\r
+ },\r
+\r
+ insert : function() {\r
+ // Insert the contents from the input into the document\r
+ tinyMCEPopup.editor.execCommand('mceInsertContent', false, document.forms[0].someval.value);\r
+ tinyMCEPopup.close();\r
+ }\r
+};\r
+\r
+tinyMCEPopup.onInit.add(ExampleDialog.init, ExampleDialog);\r
--- /dev/null
+tinyMCE.addI18n('en.example',{\r
+ desc : 'This is just a template button'\r
+});\r
--- /dev/null
+tinyMCE.addI18n('en.example_dlg',{\r
+ title : 'This is just a example title'\r
+});\r
--- /dev/null
+/* Hide the advanced tab */\r
+#advanced_tab {\r
+ display: none;\r
+}\r
+\r
+#metatitle, #metakeywords, #metadescription, #metaauthor, #metacopyright {\r
+ width: 280px;\r
+}\r
+\r
+#doctype, #docencoding {\r
+ width: 200px;\r
+}\r
+\r
+#langcode {\r
+ width: 30px;\r
+}\r
+\r
+#bgimage {\r
+ width: 220px; \r
+}\r
+\r
+#fontface {\r
+ width: 240px;\r
+}\r
+\r
+#leftmargin, #rightmargin, #topmargin, #bottommargin {\r
+ width: 50px;\r
+}\r
+\r
+.panel_wrapper div.current {\r
+ height: 400px;\r
+}\r
+\r
+#stylesheet, #style {\r
+ width: 240px;\r
+}\r
+\r
+/* Head list classes */\r
+\r
+.headlistwrapper {\r
+ width: 100%;\r
+}\r
+\r
+.addbutton, .removebutton, .moveupbutton, .movedownbutton {\r
+ border-top: 1px solid;\r
+ border-left: 1px solid;\r
+ border-bottom: 1px solid;\r
+ border-right: 1px solid;\r
+ border-color: #F0F0EE;\r
+ cursor: default;\r
+ display: block;\r
+ width: 20px;\r
+ height: 20px;\r
+}\r
+\r
+#doctypes {\r
+ width: 200px;\r
+}\r
+\r
+.addbutton:hover, .removebutton:hover, .moveupbutton:hover, .movedownbutton:hover {\r
+ border: 1px solid #0A246A;\r
+ background-color: #B6BDD2;\r
+}\r
+\r
+.addbutton {\r
+ background-image: url('../images/add.gif');\r
+ float: left;\r
+ margin-right: 3px;\r
+}\r
+\r
+.removebutton {\r
+ background-image: url('../images/remove.gif');\r
+ float: left;\r
+}\r
+\r
+.moveupbutton {\r
+ background-image: url('../images/move_up.gif');\r
+ float: left;\r
+ margin-right: 3px;\r
+}\r
+\r
+.movedownbutton {\r
+ background-image: url('../images/move_down.gif');\r
+ float: left;\r
+}\r
+\r
+.selected {\r
+ border: 1px solid #0A246A;\r
+ background-color: #B6BDD2;\r
+}\r
+\r
+.toolbar {\r
+ width: 100%;\r
+}\r
+\r
+#headlist {\r
+ width: 100%;\r
+ margin-top: 3px;\r
+ font-size: 11px;\r
+}\r
+\r
+#info, #title_element, #meta_element, #script_element, #style_element, #base_element, #link_element, #comment_element, #unknown_element {\r
+ display: none;\r
+}\r
+\r
+#addmenu {\r
+ position: absolute;\r
+ border: 1px solid gray;\r
+ display: none;\r
+ z-index: 100;\r
+ background-color: white;\r
+}\r
+\r
+#addmenu a {\r
+ display: block;\r
+ width: 100%;\r
+ line-height: 20px;\r
+ text-decoration: none;\r
+ background-color: white;\r
+}\r
+\r
+#addmenu a:hover {\r
+ background-color: #B6BDD2;\r
+ color: black;\r
+}\r
+\r
+#addmenu span {\r
+ padding-left: 10px;\r
+ padding-right: 10px;\r
+}\r
+\r
+#updateElementPanel {\r
+ display: none;\r
+}\r
+\r
+#script_element .panel_wrapper div.current {\r
+ height: 108px;\r
+}\r
+\r
+#style_element .panel_wrapper div.current {\r
+ height: 108px;\r
+}\r
+\r
+#link_element .panel_wrapper div.current {\r
+ height: 140px;\r
+}\r
+\r
+#element_script_value {\r
+ width: 100%;\r
+ height: 100px;\r
+}\r
+\r
+#element_comment_value {\r
+ width: 100%;\r
+ height: 120px;\r
+}\r
+\r
+#element_style_value {\r
+ width: 100%;\r
+ height: 100px;\r
+}\r
+\r
+#element_title, #element_script_src, #element_meta_name, #element_meta_content, #element_base_href, #element_link_href, #element_link_title {\r
+ width: 250px;\r
+}\r
+\r
+.updateElementButton {\r
+ margin-top: 3px;\r
+}\r
+\r
+/* MSIE specific styles */\r
+\r
+* html .addbutton, * html .removebutton, * html .moveupbutton, * html .movedownbutton {\r
+ width: 22px;\r
+ height: 22px;\r
+}\r
+\r
+textarea {\r
+ height: 55px;\r
+}\r
+\r
+.panel_wrapper div.current {height:420px;}
\ No newline at end of file
--- /dev/null
+(function(){tinymce.create('tinymce.plugins.FullPagePlugin',{init:function(ed,url){var t=this;t.editor=ed;ed.addCommand('mceFullPageProperties',function(){ed.windowManager.open({file:url+'/fullpage.htm',width:430+parseInt(ed.getLang('fullpage.delta_width',0)),height:495+parseInt(ed.getLang('fullpage.delta_height',0)),inline:1},{plugin_url:url,head_html:t.head});});ed.addButton('fullpage',{title:'fullpage.desc',cmd:'mceFullPageProperties'});ed.onBeforeSetContent.add(t._setContent,t);ed.onSetContent.add(t._setBodyAttribs,t);ed.onGetContent.add(t._getContent,t);},getInfo:function(){return{longname:'Fullpage',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullpage',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_setBodyAttribs:function(ed,o){var bdattr,i,len,kv,k,v,t,attr=this.head.match(/body(.*?)>/i);if(attr&&attr[1]){bdattr=attr[1].match(/\s*(\w+\s*=\s*".*?"|\w+\s*=\s*'.*?'|\w+\s*=\s*\w+|\w+)\s*/g);for(i=0,len=bdattr.length;i<len;i++){kv=bdattr[i].split('=');k=kv[0].replace(/\s/,'');v=kv[1];if(v){v=v.replace(/^\s+/,'').replace(/\s+$/,'');t=v.match(/^["'](.*)["']$/);if(t)v=t[1];}else v=k;ed.dom.setAttrib(ed.getBody(),'style',v);}}},_createSerializer:function(){return new tinymce.dom.Serializer({dom:this.editor.dom,apply_source_formatting:true});},_setContent:function(ed,o){var t=this,sp,ep,c=o.content,v,st='';c=c.replace(/<(\/?)BODY/gi,'<$1body');sp=c.indexOf('<body');if(sp!=-1){sp=c.indexOf('>',sp);t.head=c.substring(0,sp+1);ep=c.indexOf('</body',sp);if(ep==-1)ep=c.indexOf('</body',ep);o.content=c.substring(sp+1,ep);t.foot=c.substring(ep);function low(s){return s.replace(/<\/?[A-Z]+/g,function(a){return a.toLowerCase();})};t.head=low(t.head);t.foot=low(t.foot);}else{t.head='';if(ed.getParam('fullpage_default_xml_pi'))t.head+='<?xml version="1.0" encoding="'+ed.getParam('fullpage_default_encoding','ISO-8859-1')+'" ?>\n';t.head+=ed.getParam('fullpage_default_doctype','<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">');t.head+='\n<html>\n<head>\n<title>'+ed.getParam('fullpage_default_title','Untitled document')+'</title>\n';if(v=ed.getParam('fullpage_default_encoding'))t.head+='<meta http-equiv="Content-Type" content="'+v+'" />\n';if(v=ed.getParam('fullpage_default_font_family'))st+='font-family: '+v+';';if(v=ed.getParam('fullpage_default_font_size'))st+='font-size: '+v+';';if(v=ed.getParam('fullpage_default_text_color'))st+='color: '+v+';';t.head+='</head>\n<body'+(st?' style="'+st+'"':'')+'>\n';t.foot='\n</body>\n</html>';}},_getContent:function(ed,o){var t=this;o.content=tinymce.trim(t.head)+'\n'+tinymce.trim(o.content)+'\n'+tinymce.trim(t.foot);}});tinymce.PluginManager.add('fullpage',tinymce.plugins.FullPagePlugin);})();
\ No newline at end of file
--- /dev/null
+/**\r
+ * $Id: editor_plugin_src.js 827 2008-04-29 15:02:42Z spocke $\r
+ *\r
+ * @author Moxiecode\r
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+(function() {\r
+ tinymce.create('tinymce.plugins.FullPagePlugin', {\r
+ init : function(ed, url) {\r
+ var t = this;\r
+\r
+ t.editor = ed;\r
+\r
+ // Register commands\r
+ ed.addCommand('mceFullPageProperties', function() {\r
+ ed.windowManager.open({\r
+ file : url + '/fullpage.htm',\r
+ width : 430 + parseInt(ed.getLang('fullpage.delta_width', 0)),\r
+ height : 495 + parseInt(ed.getLang('fullpage.delta_height', 0)),\r
+ inline : 1\r
+ }, {\r
+ plugin_url : url,\r
+ head_html : t.head\r
+ });\r
+ });\r
+\r
+ // Register buttons\r
+ ed.addButton('fullpage', {title : 'fullpage.desc', cmd : 'mceFullPageProperties'});\r
+\r
+ ed.onBeforeSetContent.add(t._setContent, t);\r
+ ed.onSetContent.add(t._setBodyAttribs, t);\r
+ ed.onGetContent.add(t._getContent, t);\r
+ },\r
+\r
+ getInfo : function() {\r
+ return {\r
+ longname : 'Fullpage',\r
+ author : 'Moxiecode Systems AB',\r
+ authorurl : 'http://tinymce.moxiecode.com',\r
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullpage',\r
+ version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+ };\r
+ },\r
+\r
+ // Private plugin internal methods\r
+\r
+ _setBodyAttribs : function(ed, o) {\r
+ var bdattr, i, len, kv, k, v, t, attr = this.head.match(/body(.*?)>/i);\r
+\r
+ if (attr && attr[1]) {\r
+ bdattr = attr[1].match(/\s*(\w+\s*=\s*".*?"|\w+\s*=\s*'.*?'|\w+\s*=\s*\w+|\w+)\s*/g);\r
+\r
+ for(i = 0, len = bdattr.length; i < len; i++) {\r
+ kv = bdattr[i].split('=');\r
+ k = kv[0].replace(/\s/,'');\r
+ v = kv[1];\r
+\r
+ if (v) {\r
+ v = v.replace(/^\s+/,'').replace(/\s+$/,'');\r
+ t = v.match(/^["'](.*)["']$/);\r
+\r
+ if (t)\r
+ v = t[1];\r
+ } else\r
+ v = k;\r
+\r
+ ed.dom.setAttrib(ed.getBody(), 'style', v);\r
+ }\r
+ }\r
+ },\r
+\r
+ _createSerializer : function() {\r
+ return new tinymce.dom.Serializer({\r
+ dom : this.editor.dom,\r
+ apply_source_formatting : true\r
+ });\r
+ },\r
+\r
+ _setContent : function(ed, o) {\r
+ var t = this, sp, ep, c = o.content, v, st = '';\r
+\r
+ // Parse out head, body and footer\r
+ c = c.replace(/<(\/?)BODY/gi, '<$1body');\r
+ sp = c.indexOf('<body');\r
+\r
+ if (sp != -1) {\r
+ sp = c.indexOf('>', sp);\r
+ t.head = c.substring(0, sp + 1);\r
+\r
+ ep = c.indexOf('</body', sp);\r
+ if (ep == -1)\r
+ ep = c.indexOf('</body', ep);\r
+\r
+ o.content = c.substring(sp + 1, ep);\r
+ t.foot = c.substring(ep);\r
+\r
+ function low(s) {\r
+ return s.replace(/<\/?[A-Z]+/g, function(a) {\r
+ return a.toLowerCase();\r
+ })\r
+ };\r
+\r
+ t.head = low(t.head);\r
+ t.foot = low(t.foot);\r
+ } else {\r
+ t.head = '';\r
+ if (ed.getParam('fullpage_default_xml_pi'))\r
+ t.head += '<?xml version="1.0" encoding="' + ed.getParam('fullpage_default_encoding', 'ISO-8859-1') + '" ?>\n';\r
+\r
+ t.head += ed.getParam('fullpage_default_doctype', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">');\r
+ t.head += '\n<html>\n<head>\n<title>' + ed.getParam('fullpage_default_title', 'Untitled document') + '</title>\n';\r
+\r
+ if (v = ed.getParam('fullpage_default_encoding'))\r
+ t.head += '<meta http-equiv="Content-Type" content="' + v + '" />\n';\r
+\r
+ if (v = ed.getParam('fullpage_default_font_family'))\r
+ st += 'font-family: ' + v + ';';\r
+\r
+ if (v = ed.getParam('fullpage_default_font_size'))\r
+ st += 'font-size: ' + v + ';';\r
+\r
+ if (v = ed.getParam('fullpage_default_text_color'))\r
+ st += 'color: ' + v + ';';\r
+\r
+ t.head += '</head>\n<body' + (st ? ' style="' + st + '"' : '') + '>\n';\r
+ t.foot = '\n</body>\n</html>';\r
+ }\r
+ },\r
+\r
+ _getContent : function(ed, o) {\r
+ var t = this;\r
+\r
+ o.content = tinymce.trim(t.head) + '\n' + tinymce.trim(o.content) + '\n' + tinymce.trim(t.foot);\r
+ }\r
+ });\r
+\r
+ // Register plugin\r
+ tinymce.PluginManager.add('fullpage', tinymce.plugins.FullPagePlugin);\r
+})();
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+ <title>{#fullpage_dlg.title}</title>\r
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
+ <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
+ <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
+ <script type="text/javascript" src="js/fullpage.js"></script>\r
+ <link href="css/fullpage.css" rel="stylesheet" type="text/css" />\r
+ <base target="_self" />\r
+</head>\r
+<body id="advlink" style="display: none">\r
+ <form onsubmit="updateAction();return false;" name="fullpage" action="#">\r
+ <div class="tabs">\r
+ <ul>\r
+ <li id="meta_tab" class="current"><span><a href="javascript:mcTabs.displayTab('meta_tab','meta_panel');" onmousedown="return false;">{#fullpage_dlg.meta_tab}</a></span></li>\r
+ <li id="appearance_tab"><span><a href="javascript:mcTabs.displayTab('appearance_tab','appearance_panel');" onmousedown="return false;">{#fullpage_dlg.appearance_tab}</a></span></li>\r
+ <li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#fullpage_dlg.advanced_tab}</a></span></li>\r
+ </ul>\r
+ </div>\r
+\r
+ <div class="panel_wrapper">\r
+ <div id="meta_panel" class="panel current">\r
+ <fieldset>\r
+ <legend>{#fullpage_dlg.meta_props}</legend>\r
+\r
+ <table border="0" cellpadding="4" cellspacing="0">\r
+ <tr>\r
+ <td nowrap="nowrap"><label for="metatitle">{#fullpage_dlg.meta_title}</label> </td>\r
+ <td><input type="text" id="metatitle" name="metatitle" value="" class="mceFocus" /></td>\r
+ </tr>\r
+ <tr>\r
+ <td nowrap="nowrap"><label for="metakeywords">{#fullpage_dlg.meta_keywords}</label> </td>\r
+ <td><textarea id="metakeywords" name="metakeywords" rows="4"></textarea></td>\r
+ </tr>\r
+ <tr>\r
+ <td nowrap="nowrap"><label for="metadescription">{#fullpage_dlg.meta_description}</label> </td>\r
+ <td><textarea id="metadescription" name="metadescription" rows="4"></textarea></td>\r
+ </tr>\r
+ <tr>\r
+ <td nowrap="nowrap"><label for="metaauthor">{#fullpage_dlg.author}</label> </td>\r
+ <td><input type="text" id="metaauthor" name="metaauthor" value="" /></td>\r
+ </tr>\r
+ <tr>\r
+ <td nowrap="nowrap"><label for="metacopyright">{#fullpage_dlg.copyright}</label> </td>\r
+ <td><input type="text" id="metacopyright" name="metacopyright" value="" /></td>\r
+ </tr>\r
+ <tr>\r
+ <td nowrap="nowrap"><label for="metarobots">{#fullpage_dlg.meta_robots}</label> </td>\r
+ <td>\r
+ <select id="metarobots" name="metarobots">\r
+ <option value="">{#not_set}</option> \r
+ <option value="index,follow">{#fullpage_dlg.meta_index_follow}</option>\r
+ <option value="index,nofollow">{#fullpage_dlg.meta_index_nofollow}</option>\r
+ <option value="noindex,follow">{#fullpage_dlg.meta_noindex_follow}</option>\r
+ <option value="noindex,nofollow">{#fullpage_dlg.meta_noindex_nofollow}</option>\r
+ </select>\r
+ </td>\r
+ </tr>\r
+ </table>\r
+ </fieldset>\r
+\r
+ <fieldset>\r
+ <legend>{#fullpage_dlg.langprops}</legend>\r
+\r
+ <table border="0" cellpadding="4" cellspacing="0">\r
+ <tr>\r
+ <td class="column1"><label for="docencoding">{#fullpage_dlg.encoding}</label></td> \r
+ <td>\r
+ <select id="docencoding" name="docencoding"> \r
+ <option value="">{#not_set}</option>\r
+ </select>\r
+ </td> \r
+ </tr>\r
+ <tr>\r
+ <td nowrap="nowrap"><label for="doctypes">{#fullpage_dlg.doctypes}</label> </td>\r
+ <td>\r
+ <select id="doctypes" name="doctypes">\r
+ <option value="">{#not_set}</option>\r
+ </select>\r
+ </td>\r
+ </tr>\r
+ <tr>\r
+ <td nowrap="nowrap"><label for="langcode">{#fullpage_dlg.langcode}</label> </td>\r
+ <td><input type="text" id="langcode" name="langcode" value="" /></td>\r
+ </tr>\r
+ <tr>\r
+ <td class="column1"><label for="langdir">{#fullpage_dlg.langdir}</label></td> \r
+ <td>\r
+ <select id="langdir" name="langdir"> \r
+ <option value="">{#not_set}</option> \r
+ <option value="ltr">{#fullpage_dlg.ltr}</option> \r
+ <option value="rtl">{#fullpage_dlg.rtl}</option> \r
+ </select>\r
+ </td> \r
+ </tr>\r
+ <tr>\r
+ <td nowrap="nowrap"><label for="xml_pi">{#fullpage_dlg.xml_pi}</label> </td>\r
+ <td><input type="checkbox" id="xml_pi" name="xml_pi" class="checkbox" /></td>\r
+ </tr>\r
+ </table>\r
+ </fieldset>\r
+ </div>\r
+\r
+ <div id="appearance_panel" class="panel">\r
+ <fieldset>\r
+ <legend>{#fullpage_dlg.appearance_textprops}</legend>\r
+\r
+ <table border="0" cellpadding="4" cellspacing="0">\r
+ <tr>\r
+ <td class="column1"><label for="fontface">{#fullpage_dlg.fontface}</label></td> \r
+ <td>\r
+ <select id="fontface" name="fontface" onchange="changedStyleField(this);">\r
+ <option value="">{#not_set}</option>\r
+ </select>\r
+ </td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="column1"><label for="fontsize">{#fullpage_dlg.fontsize}</label></td> \r
+ <td>\r
+ <select id="fontsize" name="fontsize" onchange="changedStyleField(this);">\r
+ <option value="">{#not_set}</option>\r
+ </select>\r
+ </td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="column1"><label for="textcolor">{#fullpage_dlg.textcolor}</label></td> \r
+ <td>\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input id="textcolor" name="textcolor" type="text" value="" size="9" onchange="updateColor('textcolor_pick','textcolor');changedStyleField(this);" /></td>\r
+ <td id="textcolor_pickcontainer"> </td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+ </tr>\r
+ </table>\r
+ </fieldset>\r
+\r
+ <fieldset>\r
+ <legend>{#fullpage_dlg.appearance_bgprops}</legend>\r
+\r
+ <table border="0" cellpadding="4" cellspacing="0">\r
+ <tr>\r
+ <td class="column1"><label for="bgimage">{#fullpage_dlg.bgimage}</label></td> \r
+ <td>\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input id="bgimage" name="bgimage" type="text" value="" onchange="changedStyleField(this);" /></td>\r
+ <td id="bgimage_pickcontainer"> </td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+ </tr>\r
+ <tr>\r
+ <td class="column1"><label for="bgcolor">{#fullpage_dlg.bgcolor}</label></td> \r
+ <td>\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');changedStyleField(this);" /></td>\r
+ <td id="bgcolor_pickcontainer"> </td>\r
+ </tr>\r
+ </table>\r
+ </td> \r
+ </tr>\r
+ </table>\r
+ </fieldset>\r
+\r
+ <fieldset>\r
+ <legend>{#fullpage_dlg.appearance_marginprops}</legend>\r
+\r
+ <table border="0" cellpadding="4" cellspacing="0">\r
+ <tr>\r
+ <td class="column1"><label for="leftmargin">{#fullpage_dlg.left_margin}</label></td> \r
+ <td><input id="leftmargin" name="leftmargin" type="text" value="" onchange="changedStyleField(this);" /></td>\r
+ <td class="column1"><label for="rightmargin">{#fullpage_dlg.right_margin}</label></td> \r
+ <td><input id="rightmargin" name="rightmargin" type="text" value="" onchange="changedStyleField(this);" /></td>\r
+ </tr>\r
+ <tr>\r
+ <td class="column1"><label for="topmargin">{#fullpage_dlg.top_margin}</label></td> \r
+ <td><input id="topmargin" name="topmargin" type="text" value="" onchange="changedStyleField(this);" /></td>\r
+ <td class="column1"><label for="bottommargin">{#fullpage_dlg.bottom_margin}</label></td> \r
+ <td><input id="bottommargin" name="bottommargin" type="text" value="" onchange="changedStyleField(this);" /></td>\r
+ </tr>\r
+ </table>\r
+ </fieldset>\r
+\r
+ <fieldset>\r
+ <legend>{#fullpage_dlg.appearance_linkprops}</legend>\r
+\r
+ <table border="0" cellpadding="4" cellspacing="0">\r
+ <tr>\r
+ <td class="column1"><label for="link_color">{#fullpage_dlg.link_color}</label></td> \r
+ <td>\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input id="link_color" name="link_color" type="text" value="" size="9" onchange="updateColor('link_color_pick','link_color');changedStyleField(this);" /></td>\r
+ <td id="link_color_pickcontainer"> </td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+\r
+ <td class="column1"><label for="visited_color">{#fullpage_dlg.visited_color}</label></td> \r
+ <td>\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input id="visited_color" name="visited_color" type="text" value="" size="9" onchange="updateColor('visited_color_pick','visited_color');changedStyleField(this);" /></td>\r
+ <td id="visited_color_pickcontainer"> </td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="column1"><label for="active_color">{#fullpage_dlg.active_color}</label></td> \r
+ <td>\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input id="active_color" name="active_color" type="text" value="" size="9" onchange="updateColor('active_color_pick','active_color');changedStyleField(this);" /></td>\r
+ <td id="active_color_pickcontainer"> </td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+\r
+ <td> </td>\r
+ <td> </td>\r
+\r
+<!-- <td class="column1"><label for="hover_color">{#fullpage_dlg.hover_color}</label></td> \r
+ <td>\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input id="hover_color" name="hover_color" type="text" value="" size="9" onchange="changedStyleField(this);" /></td>\r
+ <td id="hover_color_pickcontainer"> </td>\r
+ </tr>\r
+ </table>\r
+ </td> -->\r
+ </tr>\r
+ </table>\r
+ </fieldset>\r
+\r
+ <fieldset>\r
+ <legend>{#fullpage_dlg.appearance_style}</legend>\r
+\r
+ <table border="0" cellpadding="4" cellspacing="0">\r
+ <tr>\r
+ <td class="column1"><label for="stylesheet">{#fullpage_dlg.stylesheet}</label></td> \r
+ <td><table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input id="stylesheet" name="stylesheet" type="text" value="" /></td>\r
+ <td id="stylesheet_browsercontainer"> </td>\r
+ </tr>\r
+ </table></td>\r
+ </tr>\r
+ <tr>\r
+ <td class="column1"><label for="style">{#fullpage_dlg.style}</label></td> \r
+ <td><input id="style" name="style" type="text" value="" onchange="changedStyleField(this);" /></td>\r
+ </tr>\r
+ </table>\r
+ </fieldset>\r
+ </div>\r
+\r
+ <div id="advanced_panel" class="panel">\r
+ <div id="addmenu">\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr><td><a href="javascript:addHeadElm('title');" onmousedown="return false;"><span>{#fullpage_dlg.add_title}</span></a></td></tr>\r
+ <tr><td><a href="javascript:addHeadElm('meta');" onmousedown="return false;"><span>{#fullpage_dlg.add_meta}</span></a></td></tr>\r
+ <tr><td><a href="javascript:addHeadElm('script');" onmousedown="return false;"><span>{#fullpage_dlg.add_script}</span></a></td></tr>\r
+ <tr><td><a href="javascript:addHeadElm('style');" onmousedown="return false;"><span>{#fullpage_dlg.add_style}</span></a></td></tr>\r
+ <tr><td><a href="javascript:addHeadElm('link');" onmousedown="return false;"><span>{#fullpage_dlg.add_link}</span></a></td></tr>\r
+ <tr><td><a href="javascript:addHeadElm('base');" onmousedown="return false;"><span>{#fullpage_dlg.add_base}</span></a></td></tr>\r
+ <tr><td><a href="javascript:addHeadElm('comment');" onmousedown="return false;"><span>{#fullpage_dlg.add_comment}</span></a></td></tr>\r
+ </table>\r
+ </div>\r
+\r
+ <fieldset>\r
+ <legend>{#fullpage_dlg.head_elements}</legend>\r
+\r
+ <div class="headlistwrapper">\r
+ <div class="toolbar">\r
+ <div style="float: left">\r
+ <a id="addbutton" href="javascript:showAddMenu();" onmousedown="return false;" class="addbutton" title="{#fullpage_dlg.add}"></a>\r
+ <a href="#" onmousedown="return false;" class="removebutton" title="{#fullpage_dlg.remove}"></a>\r
+ </div>\r
+ <div style="float: right">\r
+ <a href="#" onmousedown="return false;" class="moveupbutton" title="{#fullpage_dlg.moveup}"></a>\r
+ <a href="#" onmousedown="return false;" class="movedownbutton" title="{#fullpage_dlg.movedown}"></a>\r
+ </div>\r
+ <br style="clear: both" />\r
+ </div>\r
+ <select id="headlist" size="26" onchange="updateHeadElm(this.options[this.selectedIndex].value);">\r
+ <option value="title_0"><title>Some title bla bla bla</title></option>\r
+ <option value="meta_1"><meta name="keywords">Some bla bla bla</meta></option>\r
+ <option value="meta_2"><meta name="description">Some bla bla bla bla bla bla bla bla bla</meta></option>\r
+ <option value="script_3"><script language="javascript">...</script></option>\r
+ <option value="style_4"><style>...</style></option>\r
+ <option value="base_5"><base href="." /></option>\r
+ <option value="comment_6"><!-- ... --></option>\r
+ <option value="link_7"><link href="." /></option>\r
+ </select>\r
+ </div>\r
+ </fieldset>\r
+\r
+ <fieldset id="meta_element">\r
+ <legend>{#fullpage_dlg.meta_element}</legend>\r
+\r
+ <table border="0" cellpadding="4" cellspacing="0">\r
+ <tr>\r
+ <td class="column1"><label for="element_meta_type">{#fullpage_dlg.type}</label></td> \r
+ <td><select id="element_meta_type">\r
+ <option value="name">name</option>\r
+ <option value="http-equiv">http-equiv</option>\r
+ </select></td>\r
+ </tr>\r
+ <tr>\r
+ <td class="column1"><label for="element_meta_name">{#fullpage_dlg.name}</label></td> \r
+ <td><input id="element_meta_name" name="element_meta_name" type="text" value="" /></td>\r
+ </tr>\r
+ <tr>\r
+ <td class="column1"><label for="element_meta_content">{#fullpage_dlg.content}</label></td> \r
+ <td><input id="element_meta_content" name="element_meta_content" type="text" value="" /></td>\r
+ </tr>\r
+ </table>\r
+\r
+ <input type="button" id="meta_updateelement" class="updateElementButton" name="update" value="{#update}" onclick="updateElement();" />\r
+ </fieldset>\r
+\r
+ <fieldset id="title_element">\r
+ <legend>{#fullpage_dlg.title_element}</legend>\r
+\r
+ <table border="0" cellpadding="4" cellspacing="0">\r
+ <tr>\r
+ <td class="column1"><label for="element_title">{#fullpage_dlg.meta_title}</label></td> \r
+ <td><input id="element_title" name="element_title" type="text" value="" /></td>\r
+ </tr>\r
+ </table>\r
+\r
+ <input type="button" id="title_updateelement" class="updateElementButton" name="update" value="{#update}" onclick="updateElement();" />\r
+ </fieldset>\r
+\r
+ <fieldset id="script_element">\r
+ <legend>{#fullpage_dlg.script_element}</legend>\r
+\r
+ <div class="tabs">\r
+ <ul>\r
+ <li id="script_props_tab" class="current"><span><a href="javascript:mcTabs.displayTab('script_props_tab','script_props_panel');" onmousedown="return false;">{#fullpage_dlg.properties}</a></span></li>\r
+ <li id="script_value_tab"><span><a href="javascript:mcTabs.displayTab('script_value_tab','script_value_panel');" onmousedown="return false;">{#fullpage_dlg.value}</a></span></li>\r
+ </ul>\r
+ </div>\r
+\r
+ <br style="clear: both" />\r
+\r
+ <div class="panel_wrapper">\r
+ <div id="script_props_panel" class="panel current">\r
+ <table border="0" cellpadding="4" cellspacing="0">\r
+ <tr>\r
+ <td class="column1"><label for="element_script_type">{#fullpage_dlg.type}</label></td> \r
+ <td><select id="element_script_type">\r
+ <option value="text/javascript">text/javascript</option>\r
+ <option value="text/jscript">text/jscript</option>\r
+ <option value="text/vbscript">text/vbscript</option>\r
+ <option value="text/vbs">text/vbs</option>\r
+ <option value="text/ecmascript">text/ecmascript</option>\r
+ <option value="text/xml">text/xml</option>\r
+ </select></td>\r
+ </tr>\r
+ <tr>\r
+ <td class="column1"><label for="element_script_src">{#fullpage_dlg.src}</label></td> \r
+ <td><table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input id="element_script_src" name="element_script_src" type="text" value="" /></td>\r
+ <td id="script_src_pickcontainer"> </td>\r
+ </tr>\r
+ </table></td>\r
+ </tr>\r
+ <tr>\r
+ <td class="column1"><label for="element_script_charset">{#fullpage_dlg.charset}</label></td> \r
+ <td><select id="element_script_charset"><option value="">{#not_set}</option></select></td>\r
+ </tr>\r
+ <tr>\r
+ <td class="column1"><label for="element_script_defer">{#fullpage_dlg.defer}</label></td> \r
+ <td><input type="checkbox" id="element_script_defer" name="element_script_defer" class="checkbox" /></td>\r
+ </tr>\r
+ </table>\r
+ </div>\r
+\r
+ <div id="script_value_panel" class="panel">\r
+ <textarea id="element_script_value"></textarea>\r
+ </div>\r
+ </div>\r
+\r
+ <input type="button" id="script_updateelement" class="updateElementButton" name="update" value="{#update}" onclick="updateElement();" />\r
+ </fieldset>\r
+\r
+ <fieldset id="style_element">\r
+ <legend>{#fullpage_dlg.style_element}</legend>\r
+\r
+ <div class="tabs">\r
+ <ul>\r
+ <li id="style_props_tab" class="current"><span><a href="javascript:mcTabs.displayTab('style_props_tab','style_props_panel');" onmousedown="return false;">{#fullpage_dlg.properties}</a></span></li>\r
+ <li id="style_value_tab"><span><a href="javascript:mcTabs.displayTab('style_value_tab','style_value_panel');" onmousedown="return false;">{#fullpage_dlg.value}</a></span></li>\r
+ </ul>\r
+ </div>\r
+\r
+ <br style="clear: both" />\r
+\r
+ <div class="panel_wrapper">\r
+ <div id="style_props_panel" class="panel current">\r
+ <table border="0" cellpadding="4" cellspacing="0">\r
+ <tr>\r
+ <td class="column1"><label for="element_style_type">{#fullpage_dlg.type}</label></td> \r
+ <td><select id="element_style_type">\r
+ <option value="text/css">text/css</option>\r
+ </select></td>\r
+ </tr>\r
+ <tr>\r
+ <td class="column1"><label for="element_style_media">{#fullpage_dlg.media}</label></td> \r
+ <td><select id="element_style_media"></select></td>\r
+ </tr>\r
+ </table>\r
+ </div>\r
+\r
+ <div id="style_value_panel" class="panel">\r
+ <textarea id="element_style_value"></textarea>\r
+ </div>\r
+ </div>\r
+\r
+ <input type="button" id="style_updateelement" class="updateElementButton" name="update" value="{#update}" onclick="updateElement();" />\r
+ </fieldset>\r
+\r
+ <fieldset id="base_element">\r
+ <legend>{#fullpage_dlg.base_element}</legend>\r
+\r
+ <table border="0" cellpadding="4" cellspacing="0">\r
+ <tr>\r
+ <td class="column1"><label for="element_base_href">{#fullpage_dlg.href}</label></td> \r
+ <td><input id="element_base_href" name="element_base_href" type="text" value="" /></td>\r
+ </tr>\r
+ <tr>\r
+ <td class="column1"><label for="element_base_target">{#fullpage_dlg.target}</label></td> \r
+ <td><input id="element_base_target" name="element_base_target" type="text" value="" /></td>\r
+ </tr>\r
+ </table>\r
+\r
+ <input type="button" id="base_updateelement" class="updateElementButton" name="update" value="{#update}" onclick="updateElement();" />\r
+ </fieldset>\r
+\r
+ <fieldset id="link_element">\r
+ <legend>{#fullpage_dlg.link_element}</legend>\r
+\r
+ <div class="tabs">\r
+ <ul>\r
+ <li id="link_general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('link_general_tab','link_general_panel');" onmousedown="return false;">{#fullpage_dlg.general_props}</a></span></li>\r
+ <li id="link_advanced_tab"><span><a href="javascript:mcTabs.displayTab('link_advanced_tab','link_advanced_panel');" onmousedown="return false;">{#fullpage_dlg.advanced_props}</a></span></li>\r
+ </ul>\r
+ </div>\r
+\r
+ <br style="clear: both" />\r
+\r
+ <div class="panel_wrapper">\r
+ <div id="link_general_panel" class="panel current">\r
+ <table border="0" cellpadding="4" cellspacing="0">\r
+ <tr>\r
+ <td class="column1"><label for="element_link_href">{#fullpage_dlg.href}</label></td> \r
+ <td><table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input id="element_link_href" name="element_link_href" type="text" value="" /></td>\r
+ <td id="link_href_pickcontainer"> </td>\r
+ </tr>\r
+ </table></td>\r
+ </tr>\r
+ <tr>\r
+ <td class="column1"><label for="element_link_title">{#fullpage_dlg.meta_title}</label></td> \r
+ <td><input id="element_link_title" name="element_link_title" type="text" value="" /></td>\r
+ </tr>\r
+ <tr>\r
+ <td class="column1"><label for="element_link_type">{#fullpage_dlg.type}</label></td> \r
+ <td><select id="element_link_type" name="element_link_type">\r
+ <option value="text/css">text/css</option>\r
+ <option value="text/javascript">text/javascript</option>\r
+ </select></td>\r
+ </tr>\r
+ <tr>\r
+ <td class="column1"><label for="element_link_media">{#fullpage_dlg.media}</label></td> \r
+ <td><select id="element_link_media" name="element_link_media"></select></td>\r
+ </tr>\r
+ <tr>\r
+ <td><label for="element_style_rel">{#fullpage_dlg.rel}</label></td>\r
+ <td><select id="element_style_rel" name="element_style_rel"> \r
+ <option value="">{#not_set}</option> \r
+ <option value="stylesheet">Stylesheet</option>\r
+ <option value="alternate">Alternate</option>\r
+ <option value="designates">Designates</option>\r
+ <option value="start">Start</option>\r
+ <option value="next">Next</option>\r
+ <option value="prev">Prev</option>\r
+ <option value="contents">Contents</option>\r
+ <option value="index">Index</option>\r
+ <option value="glossary">Glossary</option>\r
+ <option value="copyright">Copyright</option>\r
+ <option value="chapter">Chapter</option>\r
+ <option value="subsection">Subsection</option>\r
+ <option value="appendix">Appendix</option>\r
+ <option value="help">Help</option>\r
+ <option value="bookmark">Bookmark</option>\r
+ </select> \r
+ </td>\r
+ </tr>\r
+ </table>\r
+ </div>\r
+\r
+ <div id="link_advanced_panel" class="panel">\r
+ <table border="0" cellpadding="4" cellspacing="0">\r
+ <tr>\r
+ <td class="column1"><label for="element_link_charset">{#fullpage_dlg.charset}</label></td> \r
+ <td><select id="element_link_charset"><option value="">{#not_set}</option></select></td>\r
+ </tr>\r
+ <tr>\r
+ <td class="column1"><label for="element_link_hreflang">{#fullpage_dlg.hreflang}</label></td> \r
+ <td><input id="element_link_hreflang" name="element_link_hreflang" type="text" value="" /></td>\r
+ </tr>\r
+ <tr>\r
+ <td class="column1"><label for="element_link_target">{#fullpage_dlg.target}</label></td> \r
+ <td><input id="element_link_target" name="element_link_target" type="text" value="" /></td>\r
+ </tr>\r
+ <tr>\r
+ <td><label for="element_style_rev">{#fullpage_dlg.rev}</label></td>\r
+ <td><select id="element_style_rev" name="element_style_rev"> \r
+ <option value="">{#not_set}</option> \r
+ <option value="alternate">Alternate</option> \r
+ <option value="designates">Designates</option> \r
+ <option value="stylesheet">Stylesheet</option> \r
+ <option value="start">Start</option> \r
+ <option value="next">Next</option> \r
+ <option value="prev">Prev</option> \r
+ <option value="contents">Contents</option> \r
+ <option value="index">Index</option> \r
+ <option value="glossary">Glossary</option> \r
+ <option value="copyright">Copyright</option> \r
+ <option value="chapter">Chapter</option> \r
+ <option value="subsection">Subsection</option> \r
+ <option value="appendix">Appendix</option> \r
+ <option value="help">Help</option> \r
+ <option value="bookmark">Bookmark</option> \r
+ </select> \r
+ </td>\r
+ </tr>\r
+ </table>\r
+ </div>\r
+ </div>\r
+\r
+ <input type="button" id="link_updateelement" class="updateElementButton" name="update" value="{#update}" onclick="updateElement();" />\r
+ </fieldset>\r
+\r
+ <fieldset id="comment_element">\r
+ <legend>{#fullpage_dlg.comment_element}</legend>\r
+\r
+ <textarea id="element_comment_value"></textarea>\r
+\r
+ <input type="button" id="comment_updateelement" class="updateElementButton" name="update" value="{#update}" onclick="updateElement();" />\r
+ </fieldset>\r
+ </div>\r
+ </div>\r
+\r
+ <div class="mceActionPanel">\r
+ <div style="float: left">\r
+ <input type="submit" id="insert" name="update" value="{#update}" />\r
+ </div>\r
+\r
+ <div style="float: right">\r
+ <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
+ </div>\r
+ </div>\r
+ </form>\r
+</body>\r
+</html>\r
--- /dev/null
+tinyMCEPopup.requireLangPack();\r
+\r
+var doc;\r
+\r
+var defaultDocTypes = \r
+ 'XHTML 1.0 Transitional=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">,' +\r
+ 'XHTML 1.0 Frameset=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">,' +\r
+ 'XHTML 1.0 Strict=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">,' +\r
+ 'XHTML 1.1=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">,' +\r
+ 'HTML 4.01 Transitional=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">,' +\r
+ 'HTML 4.01 Strict=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">,' +\r
+ 'HTML 4.01 Frameset=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">';\r
+\r
+var defaultEncodings = \r
+ 'Western european (iso-8859-1)=iso-8859-1,' +\r
+ 'Central European (iso-8859-2)=iso-8859-2,' +\r
+ 'Unicode (UTF-8)=utf-8,' +\r
+ 'Chinese traditional (Big5)=big5,' +\r
+ 'Cyrillic (iso-8859-5)=iso-8859-5,' +\r
+ 'Japanese (iso-2022-jp)=iso-2022-jp,' +\r
+ 'Greek (iso-8859-7)=iso-8859-7,' +\r
+ 'Korean (iso-2022-kr)=iso-2022-kr,' +\r
+ 'ASCII (us-ascii)=us-ascii';\r
+\r
+var defaultMediaTypes = \r
+ 'all=all,' +\r
+ 'screen=screen,' +\r
+ 'print=print,' +\r
+ 'tty=tty,' +\r
+ 'tv=tv,' +\r
+ 'projection=projection,' +\r
+ 'handheld=handheld,' +\r
+ 'braille=braille,' +\r
+ 'aural=aural';\r
+\r
+var defaultFontNames = 'Arial=arial,helvetica,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,times new roman,times,serif;Tahoma=tahoma,arial,helvetica,sans-serif;Times New Roman=times new roman,times,serif;Verdana=verdana,arial,helvetica,sans-serif;Impact=impact;WingDings=wingdings';\r
+var defaultFontSizes = '10px,11px,12px,13px,14px,15px,16px';\r
+\r
+function init() {\r
+ var f = document.forms['fullpage'], el = f.elements, e, i, p, doctypes, encodings, mediaTypes, fonts, ed = tinyMCEPopup.editor, dom = tinyMCEPopup.dom, style;\r
+\r
+ // Setup doctype select box\r
+ doctypes = ed.getParam("fullpage_doctypes", defaultDocTypes).split(',');\r
+ for (i=0; i<doctypes.length; i++) {\r
+ p = doctypes[i].split('=');\r
+\r
+ if (p.length > 1)\r
+ addSelectValue(f, 'doctypes', p[0], p[1]);\r
+ }\r
+\r
+ // Setup fonts select box\r
+ fonts = ed.getParam("fullpage_fonts", defaultFontNames).split(';');\r
+ for (i=0; i<fonts.length; i++) {\r
+ p = fonts[i].split('=');\r
+\r
+ if (p.length > 1)\r
+ addSelectValue(f, 'fontface', p[0], p[1]);\r
+ }\r
+\r
+ // Setup fontsize select box\r
+ fonts = ed.getParam("fullpage_fontsizes", defaultFontSizes).split(',');\r
+ for (i=0; i<fonts.length; i++)\r
+ addSelectValue(f, 'fontsize', fonts[i], fonts[i]);\r
+\r
+ // Setup mediatype select boxs\r
+ mediaTypes = ed.getParam("fullpage_media_types", defaultMediaTypes).split(',');\r
+ for (i=0; i<mediaTypes.length; i++) {\r
+ p = mediaTypes[i].split('=');\r
+\r
+ if (p.length > 1) {\r
+ addSelectValue(f, 'element_style_media', p[0], p[1]);\r
+ addSelectValue(f, 'element_link_media', p[0], p[1]);\r
+ }\r
+ }\r
+\r
+ // Setup encodings select box\r
+ encodings = ed.getParam("fullpage_encodings", defaultEncodings).split(',');\r
+ for (i=0; i<encodings.length; i++) {\r
+ p = encodings[i].split('=');\r
+\r
+ if (p.length > 1) {\r
+ addSelectValue(f, 'docencoding', p[0], p[1]);\r
+ addSelectValue(f, 'element_script_charset', p[0], p[1]);\r
+ addSelectValue(f, 'element_link_charset', p[0], p[1]);\r
+ }\r
+ }\r
+\r
+ document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');\r
+ document.getElementById('link_color_pickcontainer').innerHTML = getColorPickerHTML('link_color_pick','link_color');\r
+ //document.getElementById('hover_color_pickcontainer').innerHTML = getColorPickerHTML('hover_color_pick','hover_color');\r
+ document.getElementById('visited_color_pickcontainer').innerHTML = getColorPickerHTML('visited_color_pick','visited_color');\r
+ document.getElementById('active_color_pickcontainer').innerHTML = getColorPickerHTML('active_color_pick','active_color');\r
+ document.getElementById('textcolor_pickcontainer').innerHTML = getColorPickerHTML('textcolor_pick','textcolor');\r
+ document.getElementById('stylesheet_browsercontainer').innerHTML = getBrowserHTML('stylesheetbrowser','stylesheet','file','fullpage');\r
+ document.getElementById('link_href_pickcontainer').innerHTML = getBrowserHTML('link_href_browser','element_link_href','file','fullpage');\r
+ document.getElementById('script_src_pickcontainer').innerHTML = getBrowserHTML('script_src_browser','element_script_src','file','fullpage');\r
+ document.getElementById('bgimage_pickcontainer').innerHTML = getBrowserHTML('bgimage_browser','bgimage','image','fullpage');\r
+\r
+ // Resize some elements\r
+ if (isVisible('stylesheetbrowser'))\r
+ document.getElementById('stylesheet').style.width = '220px';\r
+\r
+ if (isVisible('link_href_browser'))\r
+ document.getElementById('element_link_href').style.width = '230px';\r
+\r
+ if (isVisible('bgimage_browser'))\r
+ document.getElementById('bgimage').style.width = '210px';\r
+\r
+ // Add iframe\r
+ dom.add(document.body, 'iframe', {id : 'documentIframe', src : 'javascript:""', style : {display : 'none'}});\r
+ doc = dom.get('documentIframe').contentWindow.document;\r
+ h = tinyMCEPopup.getWindowArg('head_html');\r
+\r
+ // Preprocess the HTML disable scripts and urls\r
+ h = h.replace(/<script>/gi, '<script type="text/javascript">');\r
+ h = h.replace(/type=([\"\'])?/gi, 'type=$1-mce-');\r
+ h = h.replace(/(src=|href=)/g, 'mce_$1');\r
+\r
+ // Write in the content in the iframe\r
+ doc.write(h + '</body></html>');\r
+ doc.close();\r
+\r
+ // Parse xml and doctype\r
+ xmlVer = getReItem(/<\?\s*?xml.*?version\s*?=\s*?"(.*?)".*?\?>/gi, h, 1);\r
+ xmlEnc = getReItem(/<\?\s*?xml.*?encoding\s*?=\s*?"(.*?)".*?\?>/gi, h, 1);\r
+ docType = getReItem(/<\!DOCTYPE.*?>/gi, h, 0);\r
+ f.langcode.value = getReItem(/lang="(.*?)"/gi, h, 1);\r
+\r
+ // Parse title\r
+ if (e = doc.getElementsByTagName('title')[0])\r
+ el.metatitle.value = e.textContent || e.text;\r
+\r
+ // Parse meta\r
+ tinymce.each(doc.getElementsByTagName('meta'), function(n) {\r
+ var na = (n.getAttribute('name', 2) || '').toLowerCase(), va = n.getAttribute('content', 2), eq = n.getAttribute('httpEquiv', 2) || '';\r
+\r
+ e = el['meta' + na];\r
+\r
+ if (na == 'robots') {\r
+ selectByValue(f, 'metarobots', tinymce.trim(va), true, true);\r
+ return;\r
+ }\r
+\r
+ switch (eq.toLowerCase()) {\r
+ case "content-type":\r
+ tmp = getReItem(/charset\s*=\s*(.*)\s*/gi, va, 1);\r
+\r
+ // Override XML encoding\r
+ if (tmp != "")\r
+ xmlEnc = tmp;\r
+\r
+ return;\r
+ }\r
+\r
+ if (e)\r
+ e.value = va;\r
+ });\r
+\r
+ selectByValue(f, 'doctypes', docType, true, true);\r
+ selectByValue(f, 'docencoding', xmlEnc, true, true);\r
+ selectByValue(f, 'langdir', doc.body.getAttribute('dir', 2) || '', true, true);\r
+\r
+ if (xmlVer != '')\r
+ el.xml_pi.checked = true;\r
+\r
+ // Parse appearance\r
+\r
+ // Parse primary stylesheet\r
+ tinymce.each(doc.getElementsByTagName("link"), function(l) {\r
+ var m = l.getAttribute('media', 2) || '', t = l.getAttribute('type', 2) || '';\r
+\r
+ if (t == "-mce-text/css" && (m == "" || m == "screen" || m == "all") && (l.getAttribute('rel', 2) || '') == "stylesheet") {\r
+ f.stylesheet.value = l.getAttribute('mce_href', 2) || '';\r
+ return false;\r
+ }\r
+ });\r
+\r
+ // Get from style elements\r
+ tinymce.each(doc.getElementsByTagName("style"), function(st) {\r
+ var tmp = parseStyleElement(st);\r
+\r
+ for (x=0; x<tmp.length; x++) {\r
+ if (tmp[x].rule.indexOf('a:visited') != -1 && tmp[x].data['color'])\r
+ f.visited_color.value = tmp[x].data['color'];\r
+\r
+ if (tmp[x].rule.indexOf('a:link') != -1 && tmp[x].data['color'])\r
+ f.link_color.value = tmp[x].data['color'];\r
+\r
+ if (tmp[x].rule.indexOf('a:active') != -1 && tmp[x].data['color'])\r
+ f.active_color.value = tmp[x].data['color'];\r
+ }\r
+ });\r
+\r
+ f.textcolor.value = tinyMCEPopup.dom.getAttrib(doc.body, "text");\r
+ f.active_color.value = tinyMCEPopup.dom.getAttrib(doc.body, "alink");\r
+ f.link_color.value = tinyMCEPopup.dom.getAttrib(doc.body, "link");\r
+ f.visited_color.value = tinyMCEPopup.dom.getAttrib(doc.body, "vlink");\r
+ f.bgcolor.value = tinyMCEPopup.dom.getAttrib(doc.body, "bgcolor");\r
+ f.bgimage.value = tinyMCEPopup.dom.getAttrib(doc.body, "background");\r
+\r
+ // Get from style info\r
+ style = tinyMCEPopup.dom.parseStyle(tinyMCEPopup.dom.getAttrib(doc.body, 'style'));\r
+\r
+ if (style['font-family'])\r
+ selectByValue(f, 'fontface', style['font-family'], true, true);\r
+ else\r
+ selectByValue(f, 'fontface', ed.getParam("fullpage_default_fontface", ""), true, true);\r
+\r
+ if (style['font-size'])\r
+ selectByValue(f, 'fontsize', style['font-size'], true, true);\r
+ else\r
+ selectByValue(f, 'fontsize', ed.getParam("fullpage_default_fontsize", ""), true, true);\r
+\r
+ if (style['color'])\r
+ f.textcolor.value = convertRGBToHex(style['color']);\r
+\r
+ if (style['background-image'])\r
+ f.bgimage.value = style['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");\r
+\r
+ if (style['background-color'])\r
+ f.bgcolor.value = style['background-color'];\r
+\r
+ if (style['margin']) {\r
+ tmp = style['margin'].replace(/[^0-9 ]/g, '');\r
+ tmp = tmp.split(/ +/);\r
+ f.topmargin.value = tmp.length > 0 ? tmp[0] : '';\r
+ f.rightmargin.value = tmp.length > 1 ? tmp[1] : tmp[0];\r
+ f.bottommargin.value = tmp.length > 2 ? tmp[2] : tmp[0];\r
+ f.leftmargin.value = tmp.length > 3 ? tmp[3] : tmp[0];\r
+ }\r
+\r
+ if (style['margin-left'])\r
+ f.leftmargin.value = style['margin-left'].replace(/[^0-9]/g, '');\r
+\r
+ if (style['margin-right'])\r
+ f.rightmargin.value = style['margin-right'].replace(/[^0-9]/g, '');\r
+\r
+ if (style['margin-top'])\r
+ f.topmargin.value = style['margin-top'].replace(/[^0-9]/g, '');\r
+\r
+ if (style['margin-bottom'])\r
+ f.bottommargin.value = style['margin-bottom'].replace(/[^0-9]/g, '');\r
+\r
+ f.style.value = tinyMCEPopup.dom.serializeStyle(style);\r
+\r
+ // Update colors\r
+ updateColor('textcolor_pick', 'textcolor');\r
+ updateColor('bgcolor_pick', 'bgcolor');\r
+ updateColor('visited_color_pick', 'visited_color');\r
+ updateColor('active_color_pick', 'active_color');\r
+ updateColor('link_color_pick', 'link_color');\r
+}\r
+\r
+function getReItem(r, s, i) {\r
+ var c = r.exec(s);\r
+\r
+ if (c && c.length > i)\r
+ return c[i];\r
+\r
+ return '';\r
+}\r
+\r
+function updateAction() {\r
+ var f = document.forms[0], nl, i, h, v, s, head, html, l, tmp, addlink = true, ser;\r
+\r
+ head = doc.getElementsByTagName('head')[0];\r
+\r
+ // Fix scripts without a type\r
+ nl = doc.getElementsByTagName('script');\r
+ for (i=0; i<nl.length; i++) {\r
+ if (tinyMCEPopup.dom.getAttrib(nl[i], 'mce_type') == '')\r
+ nl[i].setAttribute('mce_type', 'text/javascript');\r
+ }\r
+\r
+ // Get primary stylesheet\r
+ nl = doc.getElementsByTagName("link");\r
+ for (i=0; i<nl.length; i++) {\r
+ l = nl[i];\r
+\r
+ tmp = tinyMCEPopup.dom.getAttrib(l, 'media');\r
+\r
+ if (tinyMCEPopup.dom.getAttrib(l, 'mce_type') == "text/css" && (tmp == "" || tmp == "screen" || tmp == "all") && tinyMCEPopup.dom.getAttrib(l, 'rel') == "stylesheet") {\r
+ addlink = false;\r
+\r
+ if (f.stylesheet.value == '')\r
+ l.parentNode.removeChild(l);\r
+ else\r
+ l.setAttribute('mce_href', f.stylesheet.value);\r
+\r
+ break;\r
+ }\r
+ }\r
+\r
+ // Add new link\r
+ if (f.stylesheet.value != '') {\r
+ l = doc.createElement('link');\r
+\r
+ l.setAttribute('type', 'text/css');\r
+ l.setAttribute('mce_href', f.stylesheet.value);\r
+ l.setAttribute('rel', 'stylesheet');\r
+\r
+ head.appendChild(l);\r
+ }\r
+\r
+ setMeta(head, 'keywords', f.metakeywords.value);\r
+ setMeta(head, 'description', f.metadescription.value);\r
+ setMeta(head, 'author', f.metaauthor.value);\r
+ setMeta(head, 'copyright', f.metacopyright.value);\r
+ setMeta(head, 'robots', getSelectValue(f, 'metarobots'));\r
+ setMeta(head, 'Content-Type', getSelectValue(f, 'docencoding'));\r
+\r
+ doc.body.dir = getSelectValue(f, 'langdir');\r
+ doc.body.style.cssText = f.style.value;\r
+\r
+ doc.body.setAttribute('vLink', f.visited_color.value);\r
+ doc.body.setAttribute('link', f.link_color.value);\r
+ doc.body.setAttribute('text', f.textcolor.value);\r
+ doc.body.setAttribute('aLink', f.active_color.value);\r
+\r
+ doc.body.style.fontFamily = getSelectValue(f, 'fontface');\r
+ doc.body.style.fontSize = getSelectValue(f, 'fontsize');\r
+ doc.body.style.backgroundColor = f.bgcolor.value;\r
+\r
+ if (f.leftmargin.value != '')\r
+ doc.body.style.marginLeft = f.leftmargin.value + 'px';\r
+\r
+ if (f.rightmargin.value != '')\r
+ doc.body.style.marginRight = f.rightmargin.value + 'px';\r
+\r
+ if (f.bottommargin.value != '')\r
+ doc.body.style.marginBottom = f.bottommargin.value + 'px';\r
+\r
+ if (f.topmargin.value != '')\r
+ doc.body.style.marginTop = f.topmargin.value + 'px';\r
+\r
+ html = doc.getElementsByTagName('html')[0];\r
+ html.setAttribute('lang', f.langcode.value);\r
+ html.setAttribute('xml:lang', f.langcode.value);\r
+\r
+ if (f.bgimage.value != '')\r
+ doc.body.style.backgroundImage = "url('" + f.bgimage.value + "')";\r
+ else\r
+ doc.body.style.backgroundImage = '';\r
+\r
+ ser = tinyMCEPopup.editor.plugins.fullpage._createSerializer();\r
+ ser.setRules('-title,meta[http-equiv|name|content],base[href|target],link[href|rel|type|title|media],style[type],script[type|language|src],html[lang|xml::lang|xmlns],body[style|dir|vlink|link|text|alink],head');\r
+\r
+ h = ser.serialize(doc.documentElement);\r
+ h = h.substring(0, h.lastIndexOf('</body>'));\r
+\r
+ if (h.indexOf('<title>') == -1)\r
+ h = h.replace(/<head.*?>/, '$&\n' + '<title>' + tinyMCEPopup.dom.encode(f.metatitle.value) + '</title>');\r
+ else\r
+ h = h.replace(/<title>(.*?)<\/title>/, '<title>' + tinyMCEPopup.dom.encode(f.metatitle.value) + '</title>');\r
+\r
+ if ((v = getSelectValue(f, 'doctypes')) != '')\r
+ h = v + '\n' + h;\r
+\r
+ if (f.xml_pi.checked) {\r
+ s = '<?xml version="1.0"';\r
+\r
+ if ((v = getSelectValue(f, 'docencoding')) != '')\r
+ s += ' encoding="' + v + '"';\r
+\r
+ s += '?>\n';\r
+ h = s + h;\r
+ }\r
+\r
+ h = h.replace(/type=\"\-mce\-/gi, 'type="');\r
+\r
+ tinyMCEPopup.editor.plugins.fullpage.head = h;\r
+ tinyMCEPopup.editor.plugins.fullpage._setBodyAttribs(tinyMCEPopup.editor, {});\r
+ tinyMCEPopup.close();\r
+}\r
+\r
+function changedStyleField(field) {\r
+}\r
+\r
+function setMeta(he, k, v) {\r
+ var nl, i, m;\r
+\r
+ nl = he.getElementsByTagName('meta');\r
+ for (i=0; i<nl.length; i++) {\r
+ if (k == 'Content-Type' && tinyMCEPopup.dom.getAttrib(nl[i], 'http-equiv') == k) {\r
+ if (v == '')\r
+ nl[i].parentNode.removeChild(nl[i]);\r
+ else\r
+ nl[i].setAttribute('content', "text/html; charset=" + v);\r
+\r
+ return;\r
+ }\r
+\r
+ if (tinyMCEPopup.dom.getAttrib(nl[i], 'name') == k) {\r
+ if (v == '')\r
+ nl[i].parentNode.removeChild(nl[i]);\r
+ else\r
+ nl[i].setAttribute('content', v);\r
+ return;\r
+ }\r
+ }\r
+\r
+ if (v == '')\r
+ return;\r
+\r
+ m = doc.createElement('meta');\r
+\r
+ if (k == 'Content-Type')\r
+ m.httpEquiv = k;\r
+ else\r
+ m.setAttribute('name', k);\r
+\r
+ m.setAttribute('content', v);\r
+ he.appendChild(m);\r
+}\r
+\r
+function parseStyleElement(e) {\r
+ var v = e.innerHTML;\r
+ var p, i, r;\r
+\r
+ v = v.replace(/<!--/gi, '');\r
+ v = v.replace(/-->/gi, '');\r
+ v = v.replace(/[\n\r]/gi, '');\r
+ v = v.replace(/\s+/gi, ' ');\r
+\r
+ r = [];\r
+ p = v.split(/{|}/);\r
+\r
+ for (i=0; i<p.length; i+=2) {\r
+ if (p[i] != "")\r
+ r[r.length] = {rule : tinymce.trim(p[i]), data : tinyMCEPopup.dom.parseStyle(p[i+1])};\r
+ }\r
+\r
+ return r;\r
+}\r
+\r
+function serializeStyleElement(d) {\r
+ var i, s, st;\r
+\r
+ s = '<!--\n';\r
+\r
+ for (i=0; i<d.length; i++) {\r
+ s += d[i].rule + ' {\n';\r
+\r
+ st = tinyMCE.serializeStyle(d[i].data);\r
+\r
+ if (st != '')\r
+ st += ';';\r
+\r
+ s += st.replace(/;/g, ';\n');\r
+ s += '}\n';\r
+\r
+ if (i != d.length - 1)\r
+ s += '\n';\r
+ }\r
+\r
+ s += '\n-->';\r
+\r
+ return s;\r
+}\r
+\r
+tinyMCEPopup.onInit.add(init);\r
--- /dev/null
+tinyMCE.addI18n('en.fullpage_dlg',{\r
+title:"Document properties",\r
+meta_tab:"General",\r
+appearance_tab:"Appearance",\r
+advanced_tab:"Advanced",\r
+meta_props:"Meta information",\r
+langprops:"Language and encoding",\r
+meta_title:"Title",\r
+meta_keywords:"Keywords",\r
+meta_description:"Description",\r
+meta_robots:"Robots",\r
+doctypes:"Doctype",\r
+langcode:"Language code",\r
+langdir:"Language direction",\r
+ltr:"Left to right",\r
+rtl:"Right to left",\r
+xml_pi:"XML declaration",\r
+encoding:"Character encoding",\r
+appearance_bgprops:"Background properties",\r
+appearance_marginprops:"Body margins",\r
+appearance_linkprops:"Link colors",\r
+appearance_textprops:"Text properties",\r
+bgcolor:"Background color",\r
+bgimage:"Background image",\r
+left_margin:"Left margin",\r
+right_margin:"Right margin",\r
+top_margin:"Top margin",\r
+bottom_margin:"Bottom margin",\r
+text_color:"Text color",\r
+font_size:"Font size",\r
+font_face:"Font face",\r
+link_color:"Link color",\r
+hover_color:"Hover color",\r
+visited_color:"Visited color",\r
+active_color:"Active color",\r
+textcolor:"Color",\r
+fontsize:"Font size",\r
+fontface:"Font family",\r
+meta_index_follow:"Index and follow the links",\r
+meta_index_nofollow:"Index and don't follow the links",\r
+meta_noindex_follow:"Do not index but follow the links",\r
+meta_noindex_nofollow:"Do not index and don\'t follow the links",\r
+appearance_style:"Stylesheet and style properties",\r
+stylesheet:"Stylesheet",\r
+style:"Style",\r
+author:"Author",\r
+copyright:"Copyright",\r
+add:"Add new element",\r
+remove:"Remove selected element",\r
+moveup:"Move selected element up",\r
+movedown:"Move selected element down",\r
+head_elements:"Head elements",\r
+info:"Information",\r
+add_title:"Title element",\r
+add_meta:"Meta element",\r
+add_script:"Script element",\r
+add_style:"Style element",\r
+add_link:"Link element",\r
+add_base:"Base element",\r
+add_comment:"Comment node",\r
+title_element:"Title element",\r
+script_element:"Script element",\r
+style_element:"Style element",\r
+base_element:"Base element",\r
+link_element:"Link element",\r
+meta_element:"Meta element",\r
+comment_element:"Comment",\r
+src:"Src",\r
+language:"Language",\r
+href:"Href",\r
+target:"Target",\r
+type:"Type",\r
+charset:"Charset",\r
+defer:"Defer",\r
+media:"Media",\r
+properties:"Properties",\r
+name:"Name",\r
+value:"Value",\r
+content:"Content",\r
+rel:"Rel",\r
+rev:"Rev",\r
+hreflang:"Href lang",\r
+general_props:"General",\r
+advanced_props:"Advanced"\r
+});
\ No newline at end of file
--- /dev/null
+(function(){var DOM=tinymce.DOM;tinymce.create('tinymce.plugins.FullScreenPlugin',{init:function(ed,url){var t=this,s={},vp;t.editor=ed;ed.addCommand('mceFullScreen',function(){var win,de=DOM.doc.documentElement;if(ed.getParam('fullscreen_is_enabled')){if(ed.getParam('fullscreen_new_window'))closeFullscreen();else{DOM.win.setTimeout(function(){tinymce.dom.Event.remove(DOM.win,'resize',t.resizeFunc);tinyMCE.get(ed.getParam('fullscreen_editor_id')).setContent(ed.getContent({format:'raw'}),{format:'raw'});tinyMCE.remove(ed);DOM.remove('mce_fullscreen_container');de.style.overflow=ed.getParam('fullscreen_html_overflow');DOM.setStyle(DOM.doc.body,'overflow',ed.getParam('fullscreen_overflow'));DOM.win.scrollTo(ed.getParam('fullscreen_scrollx'),ed.getParam('fullscreen_scrolly'));tinyMCE.settings=tinyMCE.oldSettings;},10);}return;}if(ed.getParam('fullscreen_new_window')){win=DOM.win.open(url+"/fullscreen.htm","mceFullScreenPopup","fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width="+screen.availWidth+",height="+screen.availHeight);try{win.resizeTo(screen.availWidth,screen.availHeight);}catch(e){}}else{tinyMCE.oldSettings=tinyMCE.settings;s.fullscreen_overflow=DOM.getStyle(DOM.doc.body,'overflow',1)||'auto';s.fullscreen_html_overflow=DOM.getStyle(de,'overflow',1);vp=DOM.getViewPort();s.fullscreen_scrollx=vp.x;s.fullscreen_scrolly=vp.y;if(tinymce.isOpera&&s.fullscreen_overflow=='visible')s.fullscreen_overflow='auto';if(tinymce.isIE&&s.fullscreen_overflow=='scroll')s.fullscreen_overflow='auto';if(s.fullscreen_overflow=='0px')s.fullscreen_overflow='';DOM.setStyle(DOM.doc.body,'overflow','hidden');de.style.overflow='hidden';vp=DOM.getViewPort();DOM.win.scrollTo(0,0);if(tinymce.isIE)vp.h-=1;n=DOM.add(DOM.doc.body,'div',{id:'mce_fullscreen_container',style:'position:'+(tinymce.isIE6||(tinymce.isIE&&!DOM.boxModel)?'absolute':'fixed')+';top:0;left:0;width:'+vp.w+'px;height:'+vp.h+'px;z-index:200000;'});DOM.add(n,'div',{id:'mce_fullscreen'});tinymce.each(ed.settings,function(v,n){s[n]=v;});s.id='mce_fullscreen';s.width=n.clientWidth;s.height=n.clientHeight-15;s.fullscreen_is_enabled=true;s.fullscreen_editor_id=ed.id;s.theme_advanced_resizing=false;s.save_onsavecallback=function(){ed.setContent(tinyMCE.get(s.id).getContent({format:'raw'}),{format:'raw'});ed.execCommand('mceSave');};tinymce.each(ed.getParam('fullscreen_settings'),function(v,k){s[k]=v;});if(s.theme_advanced_toolbar_location==='external')s.theme_advanced_toolbar_location='top';t.fullscreenEditor=new tinymce.Editor('mce_fullscreen',s);t.fullscreenEditor.onInit.add(function(){t.fullscreenEditor.setContent(ed.getContent());t.fullscreenEditor.focus();});t.fullscreenEditor.render();tinyMCE.add(t.fullscreenEditor);t.fullscreenElement=new tinymce.dom.Element('mce_fullscreen_container');t.fullscreenElement.update();t.resizeFunc=tinymce.dom.Event.add(DOM.win,'resize',function(){var vp=tinymce.DOM.getViewPort();t.fullscreenEditor.theme.resizeTo(vp.w,vp.h);});}});ed.addButton('fullscreen',{title:'fullscreen.desc',cmd:'mceFullScreen'});ed.onNodeChange.add(function(ed,cm){cm.setActive('fullscreen',ed.getParam('fullscreen_is_enabled'));});},getInfo:function(){return{longname:'Fullscreen',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('fullscreen',tinymce.plugins.FullScreenPlugin);})();
\ No newline at end of file
--- /dev/null
+/**\r
+ * $Id: editor_plugin_src.js 885 2008-06-22 19:23:20Z spocke $\r
+ *\r
+ * @author Moxiecode\r
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+(function() {\r
+ var DOM = tinymce.DOM;\r
+\r
+ tinymce.create('tinymce.plugins.FullScreenPlugin', {\r
+ init : function(ed, url) {\r
+ var t = this, s = {}, vp;\r
+\r
+ t.editor = ed;\r
+\r
+ // Register commands\r
+ ed.addCommand('mceFullScreen', function() {\r
+ var win, de = DOM.doc.documentElement;\r
+\r
+ if (ed.getParam('fullscreen_is_enabled')) {\r
+ if (ed.getParam('fullscreen_new_window'))\r
+ closeFullscreen(); // Call to close in new window\r
+ else {\r
+ DOM.win.setTimeout(function() {\r
+ tinymce.dom.Event.remove(DOM.win, 'resize', t.resizeFunc);\r
+ tinyMCE.get(ed.getParam('fullscreen_editor_id')).setContent(ed.getContent({format : 'raw'}), {format : 'raw'});\r
+ tinyMCE.remove(ed);\r
+ DOM.remove('mce_fullscreen_container');\r
+ de.style.overflow = ed.getParam('fullscreen_html_overflow');\r
+ DOM.setStyle(DOM.doc.body, 'overflow', ed.getParam('fullscreen_overflow'));\r
+ DOM.win.scrollTo(ed.getParam('fullscreen_scrollx'), ed.getParam('fullscreen_scrolly'));\r
+ tinyMCE.settings = tinyMCE.oldSettings; // Restore old settings\r
+ }, 10);\r
+ }\r
+\r
+ return;\r
+ }\r
+\r
+ if (ed.getParam('fullscreen_new_window')) {\r
+ win = DOM.win.open(url + "/fullscreen.htm", "mceFullScreenPopup", "fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width=" + screen.availWidth + ",height=" + screen.availHeight);\r
+ try {\r
+ win.resizeTo(screen.availWidth, screen.availHeight);\r
+ } catch (e) {\r
+ // Ignore\r
+ }\r
+ } else {\r
+ tinyMCE.oldSettings = tinyMCE.settings; // Store old settings\r
+ s.fullscreen_overflow = DOM.getStyle(DOM.doc.body, 'overflow', 1) || 'auto';\r
+ s.fullscreen_html_overflow = DOM.getStyle(de, 'overflow', 1);\r
+ vp = DOM.getViewPort();\r
+ s.fullscreen_scrollx = vp.x;\r
+ s.fullscreen_scrolly = vp.y;\r
+\r
+ // Fixes an Opera bug where the scrollbars doesn't reappear\r
+ if (tinymce.isOpera && s.fullscreen_overflow == 'visible')\r
+ s.fullscreen_overflow = 'auto';\r
+\r
+ // Fixes an IE bug where horizontal scrollbars would appear\r
+ if (tinymce.isIE && s.fullscreen_overflow == 'scroll')\r
+ s.fullscreen_overflow = 'auto';\r
+\r
+ if (s.fullscreen_overflow == '0px')\r
+ s.fullscreen_overflow = '';\r
+\r
+ DOM.setStyle(DOM.doc.body, 'overflow', 'hidden');\r
+ de.style.overflow = 'hidden'; //Fix for IE6/7\r
+ vp = DOM.getViewPort();\r
+ DOM.win.scrollTo(0, 0);\r
+\r
+ if (tinymce.isIE)\r
+ vp.h -= 1;\r
+\r
+ n = DOM.add(DOM.doc.body, 'div', {id : 'mce_fullscreen_container', style : 'position:' + (tinymce.isIE6 || (tinymce.isIE && !DOM.boxModel) ? 'absolute' : 'fixed') + ';top:0;left:0;width:' + vp.w + 'px;height:' + vp.h + 'px;z-index:200000;'});\r
+ DOM.add(n, 'div', {id : 'mce_fullscreen'});\r
+\r
+ tinymce.each(ed.settings, function(v, n) {\r
+ s[n] = v;\r
+ });\r
+\r
+ s.id = 'mce_fullscreen';\r
+ s.width = n.clientWidth;\r
+ s.height = n.clientHeight - 15;\r
+ s.fullscreen_is_enabled = true;\r
+ s.fullscreen_editor_id = ed.id;\r
+ s.theme_advanced_resizing = false;\r
+ s.save_onsavecallback = function() {\r
+ ed.setContent(tinyMCE.get(s.id).getContent({format : 'raw'}), {format : 'raw'});\r
+ ed.execCommand('mceSave');\r
+ };\r
+\r
+ tinymce.each(ed.getParam('fullscreen_settings'), function(v, k) {\r
+ s[k] = v;\r
+ });\r
+\r
+ if (s.theme_advanced_toolbar_location === 'external')\r
+ s.theme_advanced_toolbar_location = 'top';\r
+\r
+ t.fullscreenEditor = new tinymce.Editor('mce_fullscreen', s);\r
+ t.fullscreenEditor.onInit.add(function() {\r
+ t.fullscreenEditor.setContent(ed.getContent());\r
+ t.fullscreenEditor.focus();\r
+ });\r
+\r
+ t.fullscreenEditor.render();\r
+ tinyMCE.add(t.fullscreenEditor);\r
+\r
+ t.fullscreenElement = new tinymce.dom.Element('mce_fullscreen_container');\r
+ t.fullscreenElement.update();\r
+ //document.body.overflow = 'hidden';\r
+\r
+ t.resizeFunc = tinymce.dom.Event.add(DOM.win, 'resize', function() {\r
+ var vp = tinymce.DOM.getViewPort();\r
+\r
+ t.fullscreenEditor.theme.resizeTo(vp.w, vp.h);\r
+ });\r
+ }\r
+ });\r
+\r
+ // Register buttons\r
+ ed.addButton('fullscreen', {title : 'fullscreen.desc', cmd : 'mceFullScreen'});\r
+\r
+ ed.onNodeChange.add(function(ed, cm) {\r
+ cm.setActive('fullscreen', ed.getParam('fullscreen_is_enabled'));\r
+ });\r
+ },\r
+\r
+ getInfo : function() {\r
+ return {\r
+ longname : 'Fullscreen',\r
+ author : 'Moxiecode Systems AB',\r
+ authorurl : 'http://tinymce.moxiecode.com',\r
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen',\r
+ version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+ };\r
+ }\r
+ });\r
+\r
+ // Register plugin\r
+ tinymce.PluginManager.add('fullscreen', tinymce.plugins.FullScreenPlugin);\r
+})();
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+ <title></title>\r
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />\r
+ <script type="text/javascript" src="../../tiny_mce.js"></script>\r
+ <script type="text/javascript">\r
+ function patchCallback(settings, key) {\r
+ if (settings[key])\r
+ settings[key] = "window.opener." + settings[key];\r
+ }\r
+\r
+ var settings = {}, paSe = window.opener.tinyMCE.activeEditor.settings, oeID = window.opener.tinyMCE.activeEditor.id;\r
+\r
+ // Clone array\r
+ for (var n in paSe)\r
+ settings[n] = paSe[n];\r
+\r
+ // Override options for fullscreen\r
+ for (var n in paSe.fullscreen_settings)\r
+ settings[n] = paSe.fullscreen_settings[n];\r
+\r
+ // Patch callbacks, make them point to window.opener\r
+ patchCallback(settings, 'urlconverter_callback');\r
+ patchCallback(settings, 'insertlink_callback');\r
+ patchCallback(settings, 'insertimage_callback');\r
+ patchCallback(settings, 'setupcontent_callback');\r
+ patchCallback(settings, 'save_callback');\r
+ patchCallback(settings, 'onchange_callback');\r
+ patchCallback(settings, 'init_instance_callback');\r
+ patchCallback(settings, 'file_browser_callback');\r
+ patchCallback(settings, 'cleanup_callback');\r
+ patchCallback(settings, 'execcommand_callback');\r
+ patchCallback(settings, 'oninit');\r
+\r
+ // Set options\r
+ delete settings.id;\r
+ settings['mode'] = 'exact';\r
+ settings['elements'] = 'fullscreenarea';\r
+ settings['add_unload_trigger'] = false;\r
+ settings['ask'] = false;\r
+ settings['document_base_url'] = window.opener.tinyMCE.activeEditor.documentBaseURI.getURI();\r
+ settings['fullscreen_is_enabled'] = true;\r
+ settings['fullscreen_editor_id'] = oeID;\r
+ settings['theme_advanced_resizing'] = false;\r
+ settings['strict_loading_mode'] = true;\r
+\r
+ settings.save_onsavecallback = function() {\r
+ window.opener.tinyMCE.get(oeID).setContent(tinyMCE.get('fullscreenarea').getContent({format : 'raw'}), {format : 'raw'});\r
+ window.opener.tinyMCE.get(oeID).execCommand('mceSave');\r
+ window.close();\r
+ };\r
+\r
+ function unloadHandler(e) {\r
+ moveContent();\r
+ }\r
+\r
+ function moveContent() {\r
+ window.opener.tinyMCE.get(oeID).setContent(tinyMCE.activeEditor.getContent());\r
+ }\r
+\r
+ function closeFullscreen() {\r
+ moveContent();\r
+ window.close();\r
+ }\r
+\r
+ function doParentSubmit() {\r
+ moveContent();\r
+\r
+ if (window.opener.tinyMCE.selectedInstance.formElement.form)\r
+ window.opener.tinyMCE.selectedInstance.formElement.form.submit();\r
+\r
+ window.close();\r
+\r
+ return false;\r
+ }\r
+\r
+ function render() {\r
+ var e = document.getElementById('fullscreenarea'), vp, ed, ow, oh, dom = tinymce.DOM;\r
+\r
+ e.value = window.opener.tinyMCE.get(oeID).getContent();\r
+\r
+ vp = dom.getViewPort();\r
+ settings.width = vp.w;\r
+ settings.height = vp.h - 15;\r
+\r
+ tinymce.dom.Event.add(window, 'resize', function() {\r
+ var vp = dom.getViewPort();\r
+\r
+ tinyMCE.activeEditor.theme.resizeTo(vp.w, vp.h);\r
+ });\r
+\r
+ tinyMCE.init(settings);\r
+ }\r
+\r
+ // Add onunload\r
+ tinymce.dom.Event.add(window, "beforeunload", unloadHandler);\r
+ </script>\r
+ <base target="_self" />\r
+</head>\r
+<body style="margin:0;overflow:hidden;width:100%;height:100%" scrolling="no" scroll="no">\r
+<form onsubmit="doParentSubmit();">\r
+<textarea id="fullscreenarea" style="width:100%; height:100%"></textarea>\r
+</form>\r
+\r
+<script type="text/javascript">\r
+ render();\r
+</script>\r
+\r
+</body>\r
+</html>\r
--- /dev/null
+(function(){tinymce.create('tinymce.plugins.IESpell',{init:function(ed,url){var t=this,sp;if(!tinymce.isIE)return;t.editor=ed;ed.addCommand('mceIESpell',function(){try{sp=new ActiveXObject("ieSpell.ieSpellExtension");sp.CheckDocumentNode(ed.getDoc().documentElement);}catch(e){if(e.number==-2146827859){ed.windowManager.confirm(ed.getLang("iespell.download"),function(s){if(s)window.open('http://www.iespell.com/download.php','ieSpellDownload','');});}else ed.windowManager.alert("Error Loading ieSpell: Exception "+e.number);}});ed.addButton('iespell',{title:'iespell.iespell_desc',cmd:'mceIESpell'});},getInfo:function(){return{longname:'IESpell (IE Only)',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/iespell',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('iespell',tinymce.plugins.IESpell);})();
\ No newline at end of file
--- /dev/null
+/**\r
+ * $Id: editor_plugin_src.js 520 2008-01-07 16:30:32Z spocke $\r
+ *\r
+ * @author Moxiecode\r
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+(function() {\r
+ tinymce.create('tinymce.plugins.IESpell', {\r
+ init : function(ed, url) {\r
+ var t = this, sp;\r
+\r
+ if (!tinymce.isIE)\r
+ return;\r
+\r
+ t.editor = ed;\r
+\r
+ // Register commands\r
+ ed.addCommand('mceIESpell', function() {\r
+ try {\r
+ sp = new ActiveXObject("ieSpell.ieSpellExtension");\r
+ sp.CheckDocumentNode(ed.getDoc().documentElement);\r
+ } catch (e) {\r
+ if (e.number == -2146827859) {\r
+ ed.windowManager.confirm(ed.getLang("iespell.download"), function(s) {\r
+ if (s)\r
+ window.open('http://www.iespell.com/download.php', 'ieSpellDownload', '');\r
+ });\r
+ } else\r
+ ed.windowManager.alert("Error Loading ieSpell: Exception " + e.number);\r
+ }\r
+ });\r
+\r
+ // Register buttons\r
+ ed.addButton('iespell', {title : 'iespell.iespell_desc', cmd : 'mceIESpell'});\r
+ },\r
+\r
+ getInfo : function() {\r
+ return {\r
+ longname : 'IESpell (IE Only)',\r
+ author : 'Moxiecode Systems AB',\r
+ authorurl : 'http://tinymce.moxiecode.com',\r
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/iespell',\r
+ version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+ };\r
+ }\r
+ });\r
+\r
+ // Register plugin\r
+ tinymce.PluginManager.add('iespell', tinymce.plugins.IESpell);\r
+})();
\ No newline at end of file
--- /dev/null
+.all {\r
+ width:100%;\r
+ height:100%;\r
+}\r
+html, body { height:99%; }\r
+html, body, td, th {\r
+ padding:0px;\r
+ margin:0px;\r
+ vertical-align:top;\r
+ font-family:Verdana,Arial,Helvetica,sans-serif;\r
+ font-size:10px;\r
+}\r
+img { border:none; }\r
+\r
+.header {\r
+ height:50px;\r
+}\r
+\r
+.header .path {\r
+ margin-bottom:3px;\r
+ padding:2px;\r
+ font-size:14px;\r
+ border-left: #888 solid 1px;\r
+ border-top: #888 solid 1px;\r
+ border-right: #ccc solid 1px;\r
+ border-bottom: #ccc solid 1px;\r
+}\r
+.header .path a {\r
+ background: transparent url(../images/arrow.gif) left center no-repeat;\r
+ padding: 2px 10px 3px 15px;\r
+ text-decoration:none;\r
+}\r
+.header .path a:hover { background-color:#cfe1fc; }\r
+\r
+.header img { vertical-align:middle; }\r
+.header .path .first { background:none; padding:0px 10px 0px 0px; }\r
+\r
+.panel { background:#468da0 url(../images/back/back.gif) top repeat-x; height:32px; }\r
+.p1 { background:transparent url(../images/back/left.gif) left no-repeat; height:32px; }\r
+.p2 { background:transparent url(../images/back/right.gif) right no-repeat; height:32px; }\r
+.panel .btns a {\r
+ color: white;\r
+ height:32px;\r
+ text-decoration:none;\r
+ margin:0 5px 0 10px;\r
+}\r
+.panel .btns img { vertical-align:middle; }\r
+\r
+.left {\r
+ border-right:1px solid #ddd;\r
+ width:150px;\r
+}\r
+\r
+.content {\r
+ \r
+}\r
+\r
+h1.blue_header {\r
+ font-size:16px;\r
+ font-weight:normal;\r
+ color:#6FA8DC;\r
+ margin-bottom:10px;\r
+}\r
+\r
+.folder {\r
+ background: transparent url(../images/folder.gif) left center no-repeat;\r
+ margin: 1px 10px 1px 5px;\r
+ padding:1px;\r
+ height:16px;\r
+ font-size:12px;\r
+}\r
+\r
+.folder a {\r
+ padding:0 0 0 20px;\r
+ text-decoration:none;\r
+ outline: none;\r
+}\r
+\r
+\r
+.item {\r
+ width:120px;\r
+ height:150px;\r
+ margin:5px 0 0 5px;\r
+ float:left;\r
+ overflow:hidden;\r
+}\r
+.item:hover { background-color:#deecff; }\r
+.item img { width:100px; height:100px; margin:10px; }\r
+.item .labels { color:#0a4d76; text-align:center; }\r
+.item_ {\r
+ background-color:#cfe1fc;\r
+}\r
+.item_:hover {\r
+ background-color:#bfd9ff;\r
+}\r
+\r
+.upload {\r
+ background:transparent url(../images/upload_back.gif) top repeat-x;\r
+ text-align: center;\r
+}\r
+.upload input {\r
+ font-size: 20px;\r
+ font-family: serif;\r
+ margin: 10px 0 10px 0;\r
+ width: 150px;\r
+}\r
+\r
+#mainfield {\r
+ width:530px;\r
+ height:475px;\r
+ overflow:scroll;\r
+}\r
+\r
+\r
+\r
+/* Fancy */\r
+#demo-status\r
+{\r
+ /*background-color: #F9F7ED;*/\r
+ padding: 10px 15px;\r
+ width: 420px;\r
+}\r
+ \r
+#demo-status fieldset\r
+{\r
+ padding: 0.5em 1em;\r
+ border: none;\r
+}\r
+ \r
+#demo-status legend\r
+{\r
+ display: block;\r
+ font: 1.2em bold Verdana, Geneva, Arial, Helvetica, sans-serif;\r
+}\r
+ \r
+#demo-status .progress\r
+{\r
+ background: white url(../images/progress.gif) no-repeat;\r
+ background-position: +50% 0;\r
+ margin-right: 0.5em;\r
+}\r
+ \r
+#demo-status .progress-text\r
+{\r
+ font-size: 0.9em;\r
+ font-weight: bold;\r
+}\r
+ \r
+#demo-list\r
+{\r
+ list-style: none;\r
+ width: 450px;\r
+ /*overflow: auto;*/\r
+ margin: 0;\r
+}\r
+ \r
+#demo-list li.file\r
+{\r
+ border-bottom: 1px solid #eee;\r
+ /*overflow: auto;*/\r
+ background: url(../images/file.png) no-repeat 4px 4px;\r
+}\r
+#demo-list li.file.file-uploading\r
+{\r
+ background-image: url(../images/uploading.png);\r
+ background-color: #D9DDE9;\r
+}\r
+#demo-list li.file.file-success\r
+{\r
+ background-image: url(../images/success.png);\r
+}\r
+#demo-list li.file.file-failed\r
+{\r
+ background-image: url(../images/failed.png);\r
+}\r
+ \r
+#demo-list li.file .file-name\r
+{\r
+ font-size: 1.2em;\r
+ margin-left: 44px;\r
+ display: block;\r
+ line-height: 40px;\r
+ height: 40px;\r
+ font-weight: bold;\r
+}\r
+#demo-list li.file .file-size\r
+{\r
+ line-height: 20px;\r
+ float: right;\r
+}\r
+#demo-list li.file .file-info\r
+{\r
+ display: block;\r
+ margin-left: 44px;\r
+}\r
+#demo-list li.file .file-remove\r
+{\r
+ clear: right;\r
+ float: right;\r
+ line-height: 20px;\r
+}\r
+.overall-title {\r
+ font-size: 16px;\r
+ margin: 0 0 3px 5px;\r
+}\r
+.current-title {\r
+ font-size: 16px;\r
+ margin: 8px 0 3px 5px;\r
+}\r
+.current-text {\r
+ position: absolute;\r
+ right:10px;\r
+ top: 65px;\r
+ width:320px;\r
+ font-size: 15px;\r
+}
\ No newline at end of file
--- /dev/null
+[ViewState]\r
+Mode=\r
+Vid=\r
+FolderType=NotSpecified\r
--- /dev/null
+(function(){tinymce.create('tinymce.plugins.Images',{init:function(ed,url){ed.addCommand('mceImages',function(){ed.windowManager.open({file:url+'/images.htm',width:700,height:550,inline:1},{plugin_url:url})});ed.addButton('images',{title:'images.desc',cmd:'mceImages',image:url+'/images/icon.gif'});ed.onNodeChange.add(function(ed,cm,n){cm.setActive('images',n.nodeName=='IMG')})},getInfo:function(){return{longname:'Images',author:'Antonov Andrey',authorurl:'http://dustweb.ru/',infourl:'http://dustweb.ru/log/projects/tinymce_images/',version:"1.0"}}});tinymce.PluginManager.add('images',tinymce.plugins.Images)})();
\ No newline at end of file
--- /dev/null
+(function() {\r
+ tinymce.create('tinymce.plugins.Images', {\r
+ init : function(ed, url) {\r
+ ed.addCommand('mceImages', function() {\r
+ ed.windowManager.open({\r
+ file : url + '/images.htm',\r
+ width : 700,\r
+ height : 550,\r
+ inline : 1\r
+ }, {\r
+ plugin_url : url\r
+ });\r
+ });\r
+ \r
+ ed.addButton('images', {\r
+ title : 'images.desc',\r
+ cmd : 'mceImages',\r
+ image : url + '/images/icon.gif'\r
+ });\r
+ \r
+ ed.onNodeChange.add(function(ed, cm, n) {\r
+ cm.setActive('images', n.nodeName == 'IMG');\r
+ });\r
+ },\r
+ \r
+ getInfo : function() {\r
+ return {\r
+ longname : 'Images',\r
+ author : 'Antonov Andrey',\r
+ authorurl : 'http://dustweb.ru/',\r
+ infourl : 'http://dustweb.ru/log/projects/tinymce_images/',\r
+ version : "1.0"\r
+ };\r
+ }\r
+ });\r
+ \r
+ tinymce.PluginManager.add('images', tinymce.plugins.Images);\r
+})();
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+ <title>{#images_dlg.fancy_title}</title>\r
+ <link href="css/default.css" rel="stylesheet" type="text/css"/>\r
+ \r
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
+ <script type="text/javascript" src="js/mootools.js"></script>\r
+ <script type="text/javascript" src="js/Swiff.Uploader.js"></script>\r
+ <script type="text/javascript" src="js/Fx.ProgressBar.js"></script>\r
+ <script type="text/javascript" src="js/FancyUpload2.js"></script>\r
+ <script type="text/javascript">\r
+\r
+function getURLParam(strParamName) {\r
+ var strReturn = "";\r
+ var strHref = window.location.href;\r
+ if ( strHref.indexOf("?") > -1 ){\r
+ var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase();\r
+ var aQueryString = strQueryString.split("&");\r
+ for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){\r
+ if (\r
+aQueryString[iParam].indexOf(strParamName.toLowerCase() + "=") > -1 ){\r
+ var aParam = aQueryString[iParam].split("=");\r
+ strReturn = aParam[1];\r
+ break;\r
+ }\r
+ }\r
+ }\r
+ return unescape(strReturn);\r
+}\r
+\r
+\r
+var allcookies = document.cookie;\r
+var pos = allcookies.indexOf("PHPSESSID=");\r
+if(pos != -1) {\r
+ var start = pos + 10;\r
+ var end = allcookies.indexOf(";", start);\r
+ if(end == -1) end = allcookies.length;\r
+ var value = allcookies.substring(start, end);\r
+ value = unescape(value);\r
+}\r
+\r
+var urlregexp = /([\s\S]*)\/fancy\.htm\?/im;\r
+var urlmatch = urlregexp.exec(window.location.href);\r
+var urlpart = urlmatch[1];\r
+\r
+window.addEvent('load', function() {\r
+ var swiffy = new FancyUpload2($('demo-status'), $('demo-list'), {\r
+ 'url': urlpart + '/server_connector/files_conn.php?uri=' + getURLParam('uri') + '&PHPSESSID=' + value + '&lng=' + tinyMCEPopup.editor.settings.language,\r
+ 'fieldName': 'photoupload',\r
+ 'path': 'js/Swiff.Uploader.swf'\r
+ });\r
+ /**\r
+ * Various interactions\r
+ */\r
+ $('link-2').addEvent('click', function() {\r
+ swiffy.browse({'Images (*.jpg, *.jpeg, *.gif, *.png)': '*.jpg; *.jpeg; *.gif; *.png'});\r
+ return false;\r
+ });\r
+ $('link-22').addEvent('click', function() {\r
+ swiffy.browse({'Images (*.jpg, *.jpeg, *.gif, *.png)': '*.jpg; *.jpeg; *.gif; *.png'});\r
+ return false;\r
+ });\r
+ $('link-3').addEvent('click', function() {\r
+ swiffy.removeFile();\r
+ return false;\r
+ });\r
+ $('link-4').addEvent('click', function() {\r
+ swiffy.upload();\r
+ return false;\r
+ });\r
+});\r
+</script>\r
+ <base target="_self"/>\r
+</head>\r
+<body> \r
+\r
+<div class="panel" style="margin:5px;">\r
+ <div class="p1">\r
+ <div class="p2">\r
+ <div class="btns">\r
+ <a href="#" onclick="document.location = 'images.htm?uri=' + getURLParam('uri'); return false;"><img src="images/back/larr.gif" width="16" height="32" alt="{#images_dlg.fancy_back_alt}" /> {#images_dlg.fancy_back}</a>\r
+ <a href="#" id="link-2"><img src="images/back/browse.gif" width="16" height="32" alt="{#images_dlg.fancy_browse}" /> {#images_dlg.fancy_browse}</a>\r
+ <a href="#" id="link-4"><img src="images/back/ok.gif" width="16" height="32" alt="{#images_dlg.fancy_begin_upload}"/> {#images_dlg.fancy_upload_files}</a>\r
+ <a href="#" id="link-3"><img src="images/back/clean.gif" width="13" height="32" alt="{#images_dlg.fancy_clear}"/> {#images_dlg.fancy_clear}</a>\r
+ </div>\r
+ </div>\r
+ </div>\r
+</div>\r
+\r
+<form action="/admin/files" method="post" enctype="multipart/form-data" id="form-demo">\r
+ <div id="demo-browse" style="display:block; padding:12px 0 0 22px; font-size:16px;"><a style="color:black; text-decoration: none;" href="#" id="link-22">{#images_dlg.fancy_begin_upload_files}</a></div>\r
+ <div id="demo-status" style="display:none;">\r
+ <div>\r
+ <div class="overall-title">{#images_dlg.fancy_general_status}</div>\r
+ <img src="images/bar.gif" class="progress overall-progress" />\r
+ </div>\r
+ <div>\r
+ <div class="current-title">{#images_dlg.fancy_file_status}</div>\r
+ <img src="images/bar.gif" class="progress current-progress" />\r
+ </div>\r
+ <div class="current-text"></div>\r
+ </div>\r
+ \r
+ <ul id="demo-list"></ul>\r
+ \r
+</form>\r
+\r
+</body>\r
+</html>\r
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+ <head>\r
+ <title>{#images_dlg.title}</title>\r
+ <link href="css/default.css" rel="stylesheet" type="text/css"/>\r
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
+ <script type="text/javascript" src="js/images.js"></script>\r
+ \r
+ <script type="text/javascript" src="js/mootools.js"></script>\r
+ \r
+ <base target="_self" />\r
+ <script src="js/JsHttpRequest.js" type="text/javascript"></script>\r
+ </head>\r
+ <body style="display:none;" onKeyDown="setCtrl(event)" onKeyUp="resetCtrl()">\r
+ \r
+ <div style="display: none;">\r
+ <div id="l1">{#images_dlg.del_sel_folder}</div>\r
+ <div id="l2">{#images_dlg.sel_files_for_del}</div>\r
+ <div id="l3">{#images_dlg.files_to_del}</div>\r
+ <div id="l4">{#images_dlg.delete_str}</div>\r
+ </div>\r
+ \r
+<script type="text/javascript">\r
+function getURLParam(strParamName) {\r
+ var strReturn = "";\r
+ var strHref = window.location.href;\r
+ if ( strHref.indexOf("?") > -1 ){\r
+ var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase();\r
+ var aQueryString = strQueryString.split("&");\r
+ for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){\r
+ if (\r
+aQueryString[iParam].indexOf(strParamName.toLowerCase() + "=") > -1 ){\r
+ var aParam = aQueryString[iParam].split("=");\r
+ strReturn = aParam[1];\r
+ break;\r
+ }\r
+ }\r
+ }\r
+ return unescape(strReturn);\r
+}\r
+\r
+\r
+var current = '';\r
+var current_file = new Array();\r
+var i=0;\r
+\r
+function activateItem(obj,src) {\r
+ \r
+ if(ctrlState==1) {\r
+ obj.className = 'item item_';\r
+ current = obj.childNodes[1].src;\r
+ \r
+ if(current_file.indexOf(src)==-1) current_file.push(src);\r
+ \r
+ } else {\r
+ \r
+ current_file = [src];\r
+ \r
+ var list = obj.parentNode.childNodes;\r
+ for(var i=0; i<list.length; i++) {\r
+ list[i].className = 'item';\r
+ }\r
+ \r
+ obj.className = 'item item_';\r
+ current = obj.childNodes[1].src;\r
+ }\r
+}\r
+\r
+var current_dir = '';\r
+function activateDir(obj, dir) {\r
+ var list = obj.parentNode.parentNode.childNodes;\r
+ \r
+ for(var i=0; i<list.length; i++) {\r
+ list[i].style.backgroundColor = 'transparent';\r
+ }\r
+ \r
+ obj.parentNode.style.backgroundColor = '#BFD9FF';\r
+ current_dir = dir;\r
+}\r
+\r
+var themiraclevar = '';\r
+function changeFolder(uri) {\r
+ JsHttpRequest.query('server_connector/ajax.php', { 'm': 'tinyimages->ChangeDir', 'uri': uri, 'lng': tinyMCEPopup.editor.settings.language },\r
+ function(result, errors) {\r
+ \r
+ if (result) {\r
+ document.getElementById('leftpanel').innerHTML = result['leftpanel']; \r
+ document.getElementById('addressbar').innerHTML = result['addressbar'];\r
+ document.getElementById('mainfield').innerHTML = result['mainfield'];\r
+ themiraclevar = result['uri'];\r
+ current_file = new Array();\r
+ current_dir = '';\r
+ }\r
+ },\r
+ true \r
+ );\r
+}\r
+\r
+var new_folder_state = false;\r
+function createFolder() {\r
+ if(new_folder_state == false) {\r
+ $('leftpanel').innerHTML = $('leftpanel').innerHTML + '<div class="folder"><form onsubmit="submitFolder(); return false;" style="margin-left:20px;"><input type="text" name="new_folder" onblur="submitFolder();" id="new_folder" /></form></div>';\r
+ new_folder_state = true;\r
+ $('new_folder').focus();\r
+ } else {\r
+ $('new_folder').focus();\r
+ }\r
+}\r
+\r
+function submitFolder() {\r
+ JsHttpRequest.query('server_connector/ajax.php', { 'm': 'tinyimages->MakeFolder', 'uri': themiraclevar, 'name': $('new_folder').value, 'lng': tinyMCEPopup.editor.settings.language },\r
+ function(result, errors) {\r
+ \r
+ if (result) {\r
+ if(!result['error']) {\r
+ new_folder_state = false;\r
+ changeFolder(themiraclevar);\r
+ } else {\r
+ alert(result['error']);\r
+ }\r
+ }\r
+ },\r
+ true \r
+ );\r
+}\r
+\r
+function deleteFile() {\r
+\r
+ if (current_file.length==0 && current_dir != '') {\r
+ if (!confirm(document.getElementById('l1').innerHTML)) return false;\r
+ \r
+ JsHttpRequest.query('server_connector/ajax.php', { 'm': 'tinyimages->DelDir', 'dir': current_dir, 'lng': tinyMCEPopup.editor.settings.language },\r
+ function(result, errors) {\r
+ if (result) {\r
+ if(!result['error']) {\r
+ changeFolder(themiraclevar);\r
+ } else {\r
+ alert(result['error']);\r
+ }\r
+ }\r
+ },\r
+ true \r
+ );\r
+ \r
+ \r
+ return true;\r
+ }\r
+\r
+ \r
+ if(current_file.length == 0) { alert(document.getElementById('l2').innerHTML); return false; }\r
+\r
+ if (!confirm(document.getElementById('l3').innerHTML+': ' + current_file.length+ '. '+document.getElementById('l4').innerHTML+'?')) return false;\r
+\r
+ JsHttpRequest.query('server_connector/ajax.php', { 'm': 'tinyimages->DelFile', 'src': current_file, 'lng': tinyMCEPopup.editor.settings.language },\r
+ function(result, errors) {\r
+ if (result) {\r
+ if(!result['error']) {\r
+ changeFolder(themiraclevar);\r
+ } else {\r
+ alert(result['error']);\r
+ }\r
+ }\r
+ },\r
+ true \r
+ );\r
+}\r
+\r
+function uploadImagesBtn() {\r
+ document.location = 'fancy.htm?uri='+ themiraclevar;\r
+}\r
+\r
+function addImage(obj,path,width) {\r
+ ImagesDialog.insert(path, obj.childNodes[0].alt, width);\r
+}\r
+\r
+\r
+ctrlState = 0;\r
+function setCtrl(tmp) {\r
+ var isIE = navigator.appName.indexOf("Microsoft") != -1;\r
+ if(isIE) {\r
+ if(!window.event) window.event=tmp;\r
+ tmp=window.event.keyCode;\r
+ } else {\r
+ event=tmp;\r
+ tmp=event.keyCode;\r
+ }\r
+ if(tmp==17) ctrlState = 1;\r
+}\r
+\r
+function resetCtrl() { ctrlState = 0; }\r
+\r
+\r
+\r
+if(window.opera) document.onkeydown=setCtrl;\r
+\r
+if(window.opera) document.onkeyup=resetCtrl;\r
+</script>\r
+ <table class="all" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td class="header">\r
+ <div class="path" id="addressbar">\r
+ <!-- Àäðåñíàÿ ñòðîêà -->\r
+ </div>\r
+ <div class="panel">\r
+ <div class="p1">\r
+ <div class="p2">\r
+ <div class="btns">\r
+ <a href="#" onclick="createFolder(); return false;"><img src="images/back/new_folder.gif" width="16" height="32" alt="{#images_dlg.create_new_fld}"/> {#images_dlg.create_fld}</a><a href="#" onclick="uploadImagesBtn(); return false;"><img src="images/back/files.gif" width="19" height="32" alt="{#images_dlg.upload_files}" /> {#images_dlg.upload_files}</a><a href="#" onclick="deleteFile(); return false;"><img src="images/back/del_file.gif" width="16" height="32" alt="{#images_dlg.delete_file}"/> {#images_dlg.delete_file}</a>\r
+ </div>\r
+ </div>\r
+ </div>\r
+ </div>\r
+ </td>\r
+ </tr>\r
+ <tr>\r
+ <td valign="top">\r
+ <table cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td class="left" width="150" id="leftpanel" style="padding-top:15px;">\r
+ <!-- Ñïèñîê ïàïîê â òåêóùåé äèðåêòîðèè -->\r
+ </td>\r
+ <td>\r
+ <div id="mainfield">\r
+\r
+ </div>\r
+ </td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+ </tr>\r
+ </table>\r
+ \r
+ \r
+ <script type="text/javascript">\r
+ changeFolder(getURLParam('uri'));\r
+ </script>\r
+ \r
+ </body>\r
+</html>\r
--- /dev/null
+/**\r
+ * FancyUpload - Flash meets Ajax for simply working uploads\r
+ *\r
+ * @version 2.0 beta 2\r
+ *\r
+ * @license MIT License\r
+ *\r
+ * @author Harald Kirschner <mail [at] digitarald [dot] de>\r
+ * @copyright Authors\r
+ */\r
+\r
+if(tinyMCEPopup.editor.settings.language != 'ru'){\r
+var FancyUpload2 = new Class({\r
+\r
+ Extends: Swiff.Uploader,\r
+\r
+ options: {\r
+ createElement: null,\r
+ updateElement: null,\r
+ removeElement: null\r
+ },\r
+\r
+ initialize: function(status, list, options) {\r
+ this.status = $(status);\r
+ this.list = $(list);\r
+\r
+ this.files = [];\r
+\r
+ this.overallTitle = this.status.getElement('.overall-title');\r
+ this.currentTitle = this.status.getElement('.current-title');\r
+ this.currentText = this.status.getElement('.current-text');\r
+\r
+ var progress = this.status.getElement('.overall-progress');\r
+ this.overallProgress = new Fx.ProgressBar(progress, {\r
+ text: new Element('span', {'class': 'progress-text'}).inject(progress, 'after')\r
+ });\r
+ progress = this.status.getElement('.current-progress')\r
+ this.currentProgress = new Fx.ProgressBar(progress, {\r
+ text: new Element('span', {'class': 'progress-text'}).inject(progress, 'after')\r
+ });\r
+\r
+ this.parent(options);\r
+ },\r
+\r
+ onLoad: function() {\r
+ this.log('Uploader ready!');\r
+ },\r
+\r
+ onBeforeOpen: function(file) {\r
+ this.log('Initialize upload for "{name}".', file);\r
+ },\r
+\r
+ onOpen: function(file, overall) {\r
+ this.log('Starting upload "{name}".', file);\r
+ file = this.getFile(file);\r
+ file.element.addClass('file-uploading');\r
+ this.currentProgress.cancel().set(0);\r
+ this.currentTitle.set('html', 'File Progress "{name}"'.substitute(file) );\r
+ },\r
+\r
+ onProgress: function(file, current, overall) {\r
+ this.overallProgress.start(overall.bytesLoaded, overall.bytesTotal);\r
+ var units = Date.parseIntervals(current.timeLeft || 0), timeLeft = [];\r
+ for (var unit in units) timeLeft.push(units[unit] + ' ' + unit);\r
+ this.currentText.set('html', 'Upload with {rate}/s. Est. time left: {timeLeft}'.substitute({\r
+ rate: (current.rate) ? this.sizeToKB(current.rate) : '- B',\r
+ timeLeft: timeLeft.join(', ')\r
+ }));\r
+ this.currentProgress.start(current.bytesLoaded, current.bytesTotal);\r
+ },\r
+\r
+ onSelect: function(file, index, length) {\r
+ this.log('Checked in file ' + index + '/' + length + ' "' + file.name + '" with ' + file.size + ' bytes.');\r
+ },\r
+\r
+ onAllSelect: function(files, current, overall) {\r
+ $('demo-status').style.display = 'block';\r
+ $('demo-browse').style.display = 'none';\r
+ this.log('Added ' + files.length + ' files, now we have (' + current.bytesTotal + ' bytes).', arguments);\r
+ this.overallTitle.set('html', 'Overall Progress ({size})'.substitute({size: this.sizeToKB(current.bytesTotal)}));\r
+ files.each(function(file) {\r
+ this.createFileElement(file);\r
+ this.files.push(file);\r
+ }, this);\r
+ this.status.removeClass('status-browsing');\r
+ },\r
+\r
+ onComplete: function(file, response) {\r
+ this.log('Completed upload "' + file.name + '".', arguments);\r
+ this.currentText.set('html', 'Upload complete!');\r
+ this.currentProgress.start(100);\r
+ file = this.getFile(file);\r
+ file.element.removeClass('file-uploading');\r
+ var json = $H(JSON.decode(response, true));\r
+ if (json.get('result') == 'success') {\r
+ file.element.addClass('file-success');\r
+ file.info.set('html', json.get('size'));\r
+ } else {\r
+ file.element.addClass('file-failed');\r
+ file.info.set('html', json.get('error') || response);\r
+ }\r
+ },\r
+\r
+ onError: function(file, error, info) {\r
+ this.log('Upload "' + file.name + '" failed. "{1}": "{2}".', arguments);\r
+ file = this.finishFile(file);\r
+ file.element.addClass('file-failed');\r
+ file.info.set('html', '<strong>' + error + '</strong><br />' + info);\r
+ },\r
+\r
+ onCancel: function() {\r
+ this.log('Filebrowser cancelled.', arguments);\r
+ this.status.removeClass('file-browsing');\r
+ },\r
+\r
+ onAllComplete: function(current) {\r
+ this.log('Completed all files, ' + current.bytesTotal + ' bytes.', arguments);\r
+ this.overallTitle.set('html', 'Overall Progress (' + this.sizeToKB(current.bytesTotal) + ')');\r
+ this.overallProgress.start(100);\r
+ this.status.removeClass('file-uploading');\r
+ },\r
+\r
+ browse: function(fileList) {\r
+ var ret = this.parent(fileList);\r
+ if (ret !== true){\r
+ this.log('Browse in progress.');\r
+ if (ret) alert(ret);\r
+ } else {\r
+ this.log('Browse started.');\r
+ this.status.addClass('file-browsing');\r
+ }\r
+ },\r
+\r
+ upload: function(options) {\r
+ var ret = this.parent(options);\r
+ if (ret !== true) {\r
+ this.log('Upload in progress or nothing to upload.');\r
+ if (ret) alert(ret);\r
+ } else {\r
+ this.log('Upload started.');\r
+ this.status.addClass('file-uploading');\r
+ this.overallProgress.set(0);\r
+ }\r
+ },\r
+\r
+ removeFile: function(file) {\r
+ if (!file) {\r
+ this.files.each(this.removeFileElement, this);\r
+ this.files.empty();\r
+ } else {\r
+ if (!file.element) file = this.getFile(file);\r
+ this.files.erase(file);\r
+ this.removeFileElement(file);\r
+ }\r
+ this.parent(file);\r
+ },\r
+\r
+ getFile: function(file) {\r
+ var ret = null;\r
+ this.files.some(function(value) {\r
+ if ((value.name != file.name) || (value.size != file.size)) return false;\r
+ ret = value;\r
+ return true;\r
+ });\r
+ return ret;\r
+ },\r
+\r
+ removeFileElement: function(file) {\r
+ file.element.fade('out').retrieve('tween').chain(Element.destroy.bind(Element, file.element));\r
+ },\r
+\r
+ finishFile: function(file) {\r
+ file = this.getFile(file);\r
+ file.element.removeClass('file-uploading');\r
+ file.finished = true;\r
+ return file;\r
+ },\r
+\r
+ createFileElement: function(file) {\r
+ file.info = new Element('span', {'class': 'file-info'});\r
+ file.element = new Element('li', {'class': 'file'}).adopt(\r
+ new Element('span', {'class': 'file-size', 'html': this.sizeToKB(file.size)}),\r
+ new Element('a', {\r
+ 'class': 'file-remove',\r
+ 'href': '#',\r
+ 'html': 'Remove',\r
+ 'events': {\r
+ 'click': function() {\r
+ this.removeFile(file);\r
+ return false;\r
+ }.bind(this)\r
+ }\r
+ }),\r
+ new Element('span', {'class': 'file-name', 'html': file.name}),\r
+ file.info\r
+ ).inject(this.list);\r
+ },\r
+\r
+ sizeToKB: function(size) {\r
+ var unit = 'B';\r
+ if ((size / 1048576) > 1) {\r
+ unit = 'MB';\r
+ size /= 1048576;\r
+ } else if ((size / 1024) > 1) {\r
+ unit = 'kB';\r
+ size /= 1024;\r
+ }\r
+ return size.round(1) + ' ' + unit;\r
+ },\r
+\r
+ log: function(text, args) {\r
+ if (window.console) console.log(text.substitute(args || {}));\r
+ }\r
+\r
+});\r
+\r
+Date.parseIntervals = function(sec, max) {\r
+ var units = {}, conv = Date.durations, count = 0;\r
+ for (var unit in conv) {\r
+ var value = Math.floor(sec / conv[unit]);\r
+ if (value) {\r
+ units[unit] = value;\r
+ if ((max && max <= ++count) || !(sec -= value * conv[unit])) break;\r
+ }\r
+ }\r
+ return units;\r
+};\r
+\r
+Date.intervals = {y: 31556926, mo: 2629743.83, d: 86400, h: 3600, mi: 60, s: 1, ms: 0.001};\r
+}\r
+else {\r
+var FancyUpload2 = new Class({\r
+\r
+ Extends: Swiff.Uploader,\r
+\r
+ options: {\r
+ createElement: null,\r
+ updateElement: null,\r
+ removeElement: null\r
+ },\r
+\r
+ initialize: function(status, list, options) {\r
+ this.status = $(status);\r
+ this.list = $(list);\r
+\r
+ this.files = [];\r
+\r
+ this.overallTitle = this.status.getElement('.overall-title');\r
+ this.currentTitle = this.status.getElement('.current-title');\r
+ this.currentText = this.status.getElement('.current-text');\r
+\r
+ var progress = this.status.getElement('.overall-progress');\r
+ this.overallProgress = new Fx.ProgressBar(progress, {\r
+ text: new Element('span', {'class': 'progress-text'}).inject(progress, 'after')\r
+ });\r
+ progress = this.status.getElement('.current-progress')\r
+ this.currentProgress = new Fx.ProgressBar(progress, {\r
+ text: new Element('span', {'class': 'progress-text'}).inject(progress, 'after')\r
+ });\r
+\r
+ this.parent(options);\r
+ },\r
+\r
+ onLoad: function() {\r
+ this.log('Uploader ready!');\r
+ },\r
+\r
+ onBeforeOpen: function(file) {\r
+ this.log('Initialize upload for "{name}".', file);\r
+ },\r
+\r
+ onOpen: function(file, overall) {\r
+ this.log('Starting upload "{name}".', file);\r
+ file = this.getFile(file);\r
+ file.element.addClass('file-uploading');\r
+ this.currentProgress.cancel().set(0);\r
+ this.currentTitle.set('html', 'Ñòàòóñ ôàéëà "{name}"'.substitute(file) );\r
+ },\r
+\r
+ onProgress: function(file, current, overall) {\r
+ this.overallProgress.start(overall.bytesLoaded, overall.bytesTotal);\r
+ var units = Date.parseIntervals(current.timeLeft || 0), timeLeft = [];\r
+ for (var unit in units) timeLeft.push(units[unit] + ' ' + unit);\r
+ this.currentText.set('html', 'Ñêîðîñòü çàãðóçêè {rate}/ñ. '.substitute({\r
+ rate: (current.rate) ? this.sizeToKB(current.rate) : '- B',\r
+ timeLeft: timeLeft.join(', ')\r
+ }));\r
+ this.currentProgress.start(current.bytesLoaded, current.bytesTotal);\r
+ },\r
+\r
+ onSelect: function(file, index, length) {\r
+ this.log('Checked in file ' + index + '/' + length + ' "' + file.name + '" with ' + file.size + ' bytes.');\r
+ },\r
+\r
+ onAllSelect: function(files, current, overall) {\r
+ $('demo-status').style.display = 'block';\r
+ $('demo-browse').style.display = 'none';\r
+ this.log('Added ' + files.length + ' files, now we have (' + current.bytesTotal + ' bytes).', arguments);\r
+ this.overallTitle.set('html', 'Îáùèé ñòàòóñ ({size})'.substitute({size: this.sizeToKB(current.bytesTotal)}));\r
+ files.each(function(file) {\r
+ this.createFileElement(file);\r
+ this.files.push(file);\r
+ }, this);\r
+ this.status.removeClass('status-browsing');\r
+ },\r
+\r
+ onComplete: function(file, response) {\r
+ this.log('Completed upload "' + file.name + '".', arguments);\r
+ this.currentText.set('html', 'Çàãðóçêà çàâåðøåíà!');\r
+ this.currentProgress.start(100);\r
+ file = this.getFile(file);\r
+ file.element.removeClass('file-uploading');\r
+ var json = $H(JSON.decode(response, true));\r
+ if (json.get('result') == 'success') {\r
+ file.element.addClass('file-success');\r
+ file.info.set('html', json.get('size'));\r
+ } else {\r
+ file.element.addClass('file-failed');\r
+ file.info.set('html', json.get('error') || response);\r
+ }\r
+ },\r
+\r
+ onError: function(file, error, info) {\r
+ this.log('Çàãðóçêà "' + file.name + '" íå óäàëàñü. "{1}": "{2}".', arguments);\r
+ file = this.finishFile(file);\r
+ file.element.addClass('file-failed');\r
+ file.info.set('html', '<strong>' + error + '</strong><br />' + info);\r
+ },\r
+\r
+ onCancel: function() {\r
+ this.log('Filebrowser cancelled.', arguments);\r
+ this.status.removeClass('file-browsing');\r
+ },\r
+\r
+ onAllComplete: function(current) {\r
+ this.log('Completed all files, ' + current.bytesTotal + ' bytes.', arguments);\r
+ this.overallTitle.set('html', 'Îáùèé ñòàòóñ (' + this.sizeToKB(current.bytesTotal) + ')');\r
+ this.overallProgress.start(100);\r
+ this.status.removeClass('file-uploading');\r
+ },\r
+\r
+ browse: function(fileList) {\r
+ var ret = this.parent(fileList);\r
+ if (ret !== true){\r
+ this.log('Browse in progress.');\r
+ if (ret) alert(ret);\r
+ } else {\r
+ this.log('Browse started.');\r
+ this.status.addClass('file-browsing');\r
+ }\r
+ },\r
+\r
+ upload: function(options) {\r
+ var ret = this.parent(options);\r
+ if (ret !== true) {\r
+ this.log('Upload in progress or nothing to upload.');\r
+ if (ret) alert(ret);\r
+ } else {\r
+ this.log('Upload started.');\r
+ this.status.addClass('file-uploading');\r
+ this.overallProgress.set(0);\r
+ }\r
+ },\r
+\r
+ removeFile: function(file) {\r
+ if (!file) {\r
+ this.files.each(this.removeFileElement, this);\r
+ this.files.empty();\r
+ } else {\r
+ if (!file.element) file = this.getFile(file);\r
+ this.files.erase(file);\r
+ this.removeFileElement(file);\r
+ }\r
+ this.parent(file);\r
+ },\r
+\r
+ getFile: function(file) {\r
+ var ret = null;\r
+ this.files.some(function(value) {\r
+ if ((value.name != file.name) || (value.size != file.size)) return false;\r
+ ret = value;\r
+ return true;\r
+ });\r
+ return ret;\r
+ },\r
+\r
+ removeFileElement: function(file) {\r
+ file.element.fade('out').retrieve('tween').chain(Element.destroy.bind(Element, file.element));\r
+ },\r
+\r
+ finishFile: function(file) {\r
+ file = this.getFile(file);\r
+ file.element.removeClass('file-uploading');\r
+ file.finished = true;\r
+ return file;\r
+ },\r
+\r
+ createFileElement: function(file) {\r
+ file.info = new Element('span', {'class': 'file-info'});\r
+ file.element = new Element('li', {'class': 'file'}).adopt(\r
+ new Element('span', {'class': 'file-size', 'html': this.sizeToKB(file.size)}),\r
+ new Element('a', {\r
+ 'class': 'file-remove',\r
+ 'href': '#',\r
+ 'html': 'Óáðàòü',\r
+ 'events': {\r
+ 'click': function() {\r
+ this.removeFile(file);\r
+ return false;\r
+ }.bind(this)\r
+ }\r
+ }),\r
+ new Element('span', {'class': 'file-name', 'html': file.name}),\r
+ file.info\r
+ ).inject(this.list);\r
+ },\r
+\r
+ sizeToKB: function(size) {\r
+ var unit = 'B';\r
+ if ((size / 1048576) > 1) {\r
+ unit = 'MB';\r
+ size /= 1048576;\r
+ } else if ((size / 1024) > 1) {\r
+ unit = 'kB';\r
+ size /= 1024;\r
+ }\r
+ return size.round(1) + ' ' + unit;\r
+ },\r
+\r
+ log: function(text, args) {\r
+ if (window.console) console.log(text.substitute(args || {}));\r
+ }\r
+\r
+});\r
+\r
+Date.parseIntervals = function(sec, max) {\r
+ var units = {}, conv = Date.durations, count = 0;\r
+ for (var unit in conv) {\r
+ var value = Math.floor(sec / conv[unit]);\r
+ if (value) {\r
+ units[unit] = value;\r
+ if ((max && max <= ++count) || !(sec -= value * conv[unit])) break;\r
+ }\r
+ }\r
+ return units;\r
+};\r
+\r
+Date.intervals = {y: 31556926, mo: 2629743.83, d: 86400, h: 3600, mi: 60, s: 1, ms: 0.001};\r
+}
\ No newline at end of file
--- /dev/null
+/**\r
+ * FancyUpload - Flash meets Ajax for simply working uploads\r
+ *\r
+ * @version 1.0\r
+ *\r
+ * @license MIT License\r
+ *\r
+ * @author Harald Kirschner <mail [at] digitarald [dot] de>\r
+ * @copyright Authors\r
+ */\r
+\r
+Fx.ProgressBar = new Class({\r
+\r
+ Extends: Fx,\r
+\r
+ options: {\r
+ text: null,\r
+ transition: Fx.Transitions.Circ.easeOut,\r
+ link: 'cancel'\r
+ },\r
+\r
+ initialize: function(element, options) {\r
+ this.element = $(element);\r
+ this.parent(options);\r
+ this.text = $(this.options.text);\r
+ this.set(0);\r
+ },\r
+\r
+ start: function(to, total) {\r
+ return this.parent(this.now, (arguments.length == 1) ? to.limit(0, 100) : to / total * 100);\r
+ },\r
+\r
+ set: function(to) {\r
+ this.now = to;\r
+ this.element.setStyle('backgroundPosition', (100 - to) + '% 0px');\r
+ if (this.text) this.text.set('text', Math.round(to) + '%');\r
+ return this;\r
+ }\r
+\r
+});
\ No newline at end of file
--- /dev/null
+/**\r
+ * JsHttpRequest: JavaScript "AJAX" data loader\r
+ * Minimized version: see debug directory for the complete one.\r
+ *\r
+ * @license LGPL\r
+ * @author Dmitry Koterov, http://en.dklab.ru/lib/JsHttpRequest/\r
+ * @version 5.x $Id$\r
+ */\r
+function JsHttpRequest(){\r
+var t=this;\r
+t.onreadystatechange=null;\r
+t.readyState=0;\r
+t.responseText=null;\r
+t.responseXML=null;\r
+t.status=200;\r
+t.statusText="OK";\r
+t.responseJS=null;\r
+t.caching=false;\r
+t.loader=null;\r
+t.session_name="PHPSESSID";\r
+t._ldObj=null;\r
+t._reqHeaders=[];\r
+t._openArgs=null;\r
+t._errors={inv_form_el:"Invalid FORM element detected: name=%, tag=%",must_be_single_el:"If used, <form> must be a single HTML element in the list.",js_invalid:"JavaScript code generated by backend is invalid!\n%",url_too_long:"Cannot use so long query with GET request (URL is larger than % bytes)",unk_loader:"Unknown loader: %",no_loaders:"No loaders registered at all, please check JsHttpRequest.LOADERS array",no_loader_matched:"Cannot find a loader which may process the request. Notices are:\n%"};\r
+t.abort=function(){\r
+with(this){\r
+if(_ldObj&&_ldObj.abort){\r
+_ldObj.abort();\r
+}\r
+_cleanup();\r
+if(readyState==0){\r
+return;\r
+}\r
+if(readyState==1&&!_ldObj){\r
+readyState=0;\r
+return;\r
+}\r
+_changeReadyState(4,true);\r
+}\r
+};\r
+t.open=function(_2,_3,_4,_5,_6){\r
+with(this){\r
+if(_3.match(/^((\w+)\.)?(GET|POST)\s+(.*)/i)){\r
+this.loader=RegExp.$2?RegExp.$2:null;\r
+_2=RegExp.$3;\r
+_3=RegExp.$4;\r
+}\r
+try{\r
+if(document.location.search.match(new RegExp("[&?]"+session_name+"=([^&?]*)"))||document.cookie.match(new RegExp("(?:;|^)\\s*"+session_name+"=([^;]*)"))){\r
+_3+=(_3.indexOf("?")>=0?"&":"?")+session_name+"="+this.escape(RegExp.$1);\r
+}\r
+}\r
+catch(e){\r
+}\r
+_openArgs={method:(_2||"").toUpperCase(),url:_3,asyncFlag:_4,username:_5!=null?_5:"",password:_6!=null?_6:""};\r
+_ldObj=null;\r
+_changeReadyState(1,true);\r
+return true;\r
+}\r
+};\r
+t.send=function(_7){\r
+if(!this.readyState){\r
+return;\r
+}\r
+this._changeReadyState(1,true);\r
+this._ldObj=null;\r
+var _8=[];\r
+var _9=[];\r
+if(!this._hash2query(_7,null,_8,_9)){\r
+return;\r
+}\r
+var _a=null;\r
+if(this.caching&&!_9.length){\r
+_a=this._openArgs.username+":"+this._openArgs.password+"@"+this._openArgs.url+"|"+_8+"#"+this._openArgs.method;\r
+var _b=JsHttpRequest.CACHE[_a];\r
+if(_b){\r
+this._dataReady(_b[0],_b[1]);\r
+return false;\r
+}\r
+}\r
+var _c=(this.loader||"").toLowerCase();\r
+if(_c&&!JsHttpRequest.LOADERS[_c]){\r
+return this._error("unk_loader",_c);\r
+}\r
+var _d=[];\r
+var _e=JsHttpRequest.LOADERS;\r
+for(var _f in _e){\r
+var ldr=_e[_f].loader;\r
+if(!ldr){\r
+continue;\r
+}\r
+if(_c&&_f!=_c){\r
+continue;\r
+}\r
+var _11=new ldr(this);\r
+JsHttpRequest.extend(_11,this._openArgs);\r
+JsHttpRequest.extend(_11,{queryText:_8.join("&"),queryElem:_9,id:(new Date().getTime())+""+JsHttpRequest.COUNT++,hash:_a,span:null});\r
+var _12=_11.load();\r
+if(!_12){\r
+this._ldObj=_11;\r
+JsHttpRequest.PENDING[_11.id]=this;\r
+return true;\r
+}\r
+if(!_c){\r
+_d[_d.length]="- "+_f.toUpperCase()+": "+this._l(_12);\r
+}else{\r
+return this._error(_12);\r
+}\r
+}\r
+return _f?this._error("no_loader_matched",_d.join("\n")):this._error("no_loaders");\r
+};\r
+t.getAllResponseHeaders=function(){\r
+with(this){\r
+return _ldObj&&_ldObj.getAllResponseHeaders?_ldObj.getAllResponseHeaders():[];\r
+}\r
+};\r
+t.getResponseHeader=function(_13){\r
+with(this){\r
+return _ldObj&&_ldObj.getResponseHeader?_ldObj.getResponseHeader(_13):null;\r
+}\r
+};\r
+t.setRequestHeader=function(_14,_15){\r
+with(this){\r
+_reqHeaders[_reqHeaders.length]=[_14,_15];\r
+}\r
+};\r
+t._dataReady=function(_16,js){\r
+with(this){\r
+if(caching&&_ldObj){\r
+JsHttpRequest.CACHE[_ldObj.hash]=[_16,js];\r
+}\r
+responseText=responseXML=_16;\r
+responseJS=js;\r
+if(js!==null){\r
+status=200;\r
+statusText="OK";\r
+}else{\r
+status=500;\r
+statusText="Internal Server Error";\r
+}\r
+_changeReadyState(2);\r
+_changeReadyState(3);\r
+_changeReadyState(4);\r
+_cleanup();\r
+}\r
+};\r
+t._l=function(_18){\r
+var i=0,p=0,msg=this._errors[_18[0]];\r
+while((p=msg.indexOf("%",p))>=0){\r
+var a=_18[++i]+"";\r
+msg=msg.substring(0,p)+a+msg.substring(p+1,msg.length);\r
+p+=1+a.length;\r
+}\r
+return msg;\r
+};\r
+t._error=function(msg){\r
+msg=this._l(typeof (msg)=="string"?arguments:msg);\r
+msg="JsHttpRequest: "+msg;\r
+if(!window.Error){\r
+throw msg;\r
+}else{\r
+if((new Error(1,"test")).description=="test"){\r
+throw new Error(1,msg);\r
+}else{\r
+throw new Error(msg);\r
+}\r
+}\r
+};\r
+t._hash2query=function(_1e,_1f,_20,_21){\r
+if(_1f==null){\r
+_1f="";\r
+}\r
+if((""+typeof (_1e)).toLowerCase()=="object"){\r
+var _22=false;\r
+if(_1e&&_1e.parentNode&&_1e.parentNode.appendChild&&_1e.tagName&&_1e.tagName.toUpperCase()=="FORM"){\r
+_1e={form:_1e};\r
+}\r
+for(var k in _1e){\r
+var v=_1e[k];\r
+if(v instanceof Function){\r
+continue;\r
+}\r
+var _25=_1f?_1f+"["+this.escape(k)+"]":this.escape(k);\r
+var _26=v&&v.parentNode&&v.parentNode.appendChild&&v.tagName;\r
+if(_26){\r
+var tn=v.tagName.toUpperCase();\r
+if(tn=="FORM"){\r
+_22=true;\r
+}else{\r
+if(tn=="INPUT"||tn=="TEXTAREA"||tn=="SELECT"){\r
+}else{\r
+return this._error("inv_form_el",(v.name||""),v.tagName);\r
+}\r
+}\r
+_21[_21.length]={name:_25,e:v};\r
+}else{\r
+if(v instanceof Object){\r
+this._hash2query(v,_25,_20,_21);\r
+}else{\r
+if(v===null){\r
+continue;\r
+}\r
+if(v===true){\r
+v=1;\r
+}\r
+if(v===false){\r
+v="";\r
+}\r
+_20[_20.length]=_25+"="+this.escape(""+v);\r
+}\r
+}\r
+if(_22&&_21.length>1){\r
+return this._error("must_be_single_el");\r
+}\r
+}\r
+}else{\r
+_20[_20.length]=_1e;\r
+}\r
+return true;\r
+};\r
+t._cleanup=function(){\r
+var _28=this._ldObj;\r
+if(!_28){\r
+return;\r
+}\r
+JsHttpRequest.PENDING[_28.id]=false;\r
+var _29=_28.span;\r
+if(!_29){\r
+return;\r
+}\r
+_28.span=null;\r
+var _2a=function(){\r
+_29.parentNode.removeChild(_29);\r
+};\r
+JsHttpRequest.setTimeout(_2a,50);\r
+};\r
+t._changeReadyState=function(s,_2c){\r
+with(this){\r
+if(_2c){\r
+status=statusText=responseJS=null;\r
+responseText="";\r
+}\r
+readyState=s;\r
+if(onreadystatechange){\r
+onreadystatechange();\r
+}\r
+}\r
+};\r
+t.escape=function(s){\r
+return escape(s).replace(new RegExp("\\+","g"),"%2B");\r
+};\r
+}\r
+JsHttpRequest.COUNT=0;\r
+JsHttpRequest.MAX_URL_LEN=2000;\r
+JsHttpRequest.CACHE={};\r
+JsHttpRequest.PENDING={};\r
+JsHttpRequest.LOADERS={};\r
+JsHttpRequest._dummy=function(){\r
+};\r
+JsHttpRequest.TIMEOUTS={s:window.setTimeout,c:window.clearTimeout};\r
+JsHttpRequest.setTimeout=function(_2e,dt){\r
+window.JsHttpRequest_tmp=JsHttpRequest.TIMEOUTS.s;\r
+if(typeof (_2e)=="string"){\r
+id=window.JsHttpRequest_tmp(_2e,dt);\r
+}else{\r
+var id=null;\r
+var _31=function(){\r
+_2e();\r
+delete JsHttpRequest.TIMEOUTS[id];\r
+};\r
+id=window.JsHttpRequest_tmp(_31,dt);\r
+JsHttpRequest.TIMEOUTS[id]=_31;\r
+}\r
+window.JsHttpRequest_tmp=null;\r
+return id;\r
+};\r
+JsHttpRequest.clearTimeout=function(id){\r
+window.JsHttpRequest_tmp=JsHttpRequest.TIMEOUTS.c;\r
+delete JsHttpRequest.TIMEOUTS[id];\r
+var r=window.JsHttpRequest_tmp(id);\r
+window.JsHttpRequest_tmp=null;\r
+return r;\r
+};\r
+JsHttpRequest.query=function(url,_35,_36,_37){\r
+var req=new this();\r
+req.caching=!_37;\r
+req.onreadystatechange=function(){\r
+if(req.readyState==4){\r
+_36(req.responseJS,req.responseText);\r
+}\r
+};\r
+req.open(null,url,true);\r
+req.send(_35);\r
+};\r
+JsHttpRequest.dataReady=function(d){\r
+var th=this.PENDING[d.id];\r
+delete this.PENDING[d.id];\r
+if(th){\r
+th._dataReady(d.text,d.js);\r
+}else{\r
+if(th!==false){\r
+throw "dataReady(): unknown pending id: "+d.id;\r
+}\r
+}\r
+};\r
+JsHttpRequest.extend=function(_3b,src){\r
+for(var k in src){\r
+_3b[k]=src[k];\r
+}\r
+};\r
+JsHttpRequest.LOADERS.xml={loader:function(req){\r
+JsHttpRequest.extend(req._errors,{xml_no:"Cannot use XMLHttpRequest or ActiveX loader: not supported",xml_no_diffdom:"Cannot use XMLHttpRequest to load data from different domain %",xml_no_headers:"Cannot use XMLHttpRequest loader or ActiveX loader, POST method: headers setting is not supported, needed to work with encodings correctly",xml_no_form_upl:"Cannot use XMLHttpRequest loader: direct form elements using and uploading are not implemented"});\r
+this.load=function(){\r
+if(this.queryElem.length){\r
+return ["xml_no_form_upl"];\r
+}\r
+if(this.url.match(new RegExp("^([a-z]+://[^\\/]+)(.*)","i"))){\r
+if(RegExp.$1.toLowerCase()!=document.location.protocol+"//"+document.location.hostname.toLowerCase()){\r
+return ["xml_no_diffdom",RegExp.$1];\r
+}\r
+}\r
+var xr=null;\r
+if(window.XMLHttpRequest){\r
+try{\r
+xr=new XMLHttpRequest();\r
+}\r
+catch(e){\r
+}\r
+}else{\r
+if(window.ActiveXObject){\r
+try{\r
+xr=new ActiveXObject("Microsoft.XMLHTTP");\r
+}\r
+catch(e){\r
+}\r
+if(!xr){\r
+try{\r
+xr=new ActiveXObject("Msxml2.XMLHTTP");\r
+}\r
+catch(e){\r
+}\r
+}\r
+}\r
+}\r
+if(!xr){\r
+return ["xml_no"];\r
+}\r
+var _40=window.ActiveXObject||xr.setRequestHeader;\r
+if(!this.method){\r
+this.method=_40&&this.queryText.length?"POST":"GET";\r
+}\r
+if(this.method=="GET"){\r
+if(this.queryText){\r
+this.url+=(this.url.indexOf("?")>=0?"&":"?")+this.queryText;\r
+}\r
+this.queryText="";\r
+if(this.url.length>JsHttpRequest.MAX_URL_LEN){\r
+return ["url_too_long",JsHttpRequest.MAX_URL_LEN];\r
+}\r
+}else{\r
+if(this.method=="POST"&&!_40){\r
+return ["xml_no_headers"];\r
+}\r
+}\r
+this.url+=(this.url.indexOf("?")>=0?"&":"?")+"JsHttpRequest="+(req.caching?"0":this.id)+"-xml";\r
+var id=this.id;\r
+xr.onreadystatechange=function(){\r
+if(xr.readyState!=4){\r
+return;\r
+}\r
+xr.onreadystatechange=JsHttpRequest._dummy;\r
+req.status=null;\r
+try{\r
+req.status=xr.status;\r
+req.responseText=xr.responseText;\r
+}\r
+catch(e){\r
+}\r
+if(!req.status){\r
+return;\r
+}\r
+try{\r
+eval("JsHttpRequest._tmp = function(id) { var d = "+req.responseText+"; d.id = id; JsHttpRequest.dataReady(d); }");\r
+}\r
+catch(e){\r
+return req._error("js_invalid",req.responseText);\r
+}\r
+JsHttpRequest._tmp(id);\r
+JsHttpRequest._tmp=null;\r
+};\r
+xr.open(this.method,this.url,true,this.username,this.password);\r
+if(_40){\r
+for(var i=0;i<req._reqHeaders.length;i++){\r
+xr.setRequestHeader(req._reqHeaders[i][0],req._reqHeaders[i][1]);\r
+}\r
+xr.setRequestHeader("Content-Type","application/octet-stream");\r
+}\r
+xr.send(this.queryText);\r
+this.span=null;\r
+this.xr=xr;\r
+return null;\r
+};\r
+this.getAllResponseHeaders=function(){\r
+return this.xr.getAllResponseHeaders();\r
+};\r
+this.getResponseHeader=function(_43){\r
+return this.xr.getResponseHeader(_43);\r
+};\r
+this.abort=function(){\r
+this.xr.abort();\r
+this.xr=null;\r
+};\r
+}};\r
+JsHttpRequest.LOADERS.script={loader:function(req){\r
+JsHttpRequest.extend(req._errors,{script_only_get:"Cannot use SCRIPT loader: it supports only GET method",script_no_form:"Cannot use SCRIPT loader: direct form elements using and uploading are not implemented"});\r
+this.load=function(){\r
+if(this.queryText){\r
+this.url+=(this.url.indexOf("?")>=0?"&":"?")+this.queryText;\r
+}\r
+this.url+=(this.url.indexOf("?")>=0?"&":"?")+"JsHttpRequest="+this.id+"-"+"script";\r
+this.queryText="";\r
+if(!this.method){\r
+this.method="GET";\r
+}\r
+if(this.method!=="GET"){\r
+return ["script_only_get"];\r
+}\r
+if(this.queryElem.length){\r
+return ["script_no_form"];\r
+}\r
+if(this.url.length>JsHttpRequest.MAX_URL_LEN){\r
+return ["url_too_long",JsHttpRequest.MAX_URL_LEN];\r
+}\r
+var th=this,d=document,s=null,b=d.body;\r
+if(!window.opera){\r
+this.span=s=d.createElement("SCRIPT");\r
+var _49=function(){\r
+s.language="JavaScript";\r
+if(s.setAttribute){\r
+s.setAttribute("src",th.url);\r
+}else{\r
+s.src=th.url;\r
+}\r
+b.insertBefore(s,b.lastChild);\r
+};\r
+}else{\r
+this.span=s=d.createElement("SPAN");\r
+s.style.display="none";\r
+b.insertBefore(s,b.lastChild);\r
+s.innerHTML="Workaround for IE.<s"+"cript></"+"script>";\r
+var _49=function(){\r
+s=s.getElementsByTagName("SCRIPT")[0];\r
+s.language="JavaScript";\r
+if(s.setAttribute){\r
+s.setAttribute("src",th.url);\r
+}else{\r
+s.src=th.url;\r
+}\r
+};\r
+}\r
+JsHttpRequest.setTimeout(_49,10);\r
+return null;\r
+};\r
+}};\r
+JsHttpRequest.LOADERS.form={loader:function(req){\r
+JsHttpRequest.extend(req._errors,{form_el_not_belong:"Element \"%\" does not belong to any form!",form_el_belong_diff:"Element \"%\" belongs to a different form. All elements must belong to the same form!",form_el_inv_enctype:"Attribute \"enctype\" of the form must be \"%\" (for IE), \"%\" given."});\r
+this.load=function(){\r
+var th=this;\r
+if(!th.method){\r
+th.method="POST";\r
+}\r
+th.url+=(th.url.indexOf("?")>=0?"&":"?")+"JsHttpRequest="+th.id+"-"+"form";\r
+if(th.method=="GET"){\r
+if(th.queryText){\r
+th.url+=(th.url.indexOf("?")>=0?"&":"?")+th.queryText;\r
+}\r
+if(th.url.length>JsHttpRequest.MAX_URL_LEN){\r
+return ["url_too_long",JsHttpRequest.MAX_URL_LEN];\r
+}\r
+var p=th.url.split("?",2);\r
+th.url=p[0];\r
+th.queryText=p[1]||"";\r
+}\r
+var _4d=null;\r
+var _4e=false;\r
+if(th.queryElem.length){\r
+if(th.queryElem[0].e.tagName.toUpperCase()=="FORM"){\r
+_4d=th.queryElem[0].e;\r
+_4e=true;\r
+th.queryElem=[];\r
+}else{\r
+_4d=th.queryElem[0].e.form;\r
+for(var i=0;i<th.queryElem.length;i++){\r
+var e=th.queryElem[i].e;\r
+if(!e.form){\r
+return ["form_el_not_belong",e.name];\r
+}\r
+if(e.form!=_4d){\r
+return ["form_el_belong_diff",e.name];\r
+}\r
+}\r
+}\r
+if(th.method=="POST"){\r
+var _51="multipart/form-data";\r
+var _52=(_4d.attributes.encType&&_4d.attributes.encType.nodeValue)||(_4d.attributes.enctype&&_4d.attributes.enctype.value)||_4d.enctype;\r
+if(_52!=_51){\r
+return ["form_el_inv_enctype",_51,_52];\r
+}\r
+}\r
+}\r
+var d=_4d&&(_4d.ownerDocument||_4d.document)||document;\r
+var _54="jshr_i_"+th.id;\r
+var s=th.span=d.createElement("DIV");\r
+s.style.position="absolute";\r
+s.style.display="none";\r
+s.style.visibility="hidden";\r
+s.innerHTML=(_4d?"":"<form"+(th.method=="POST"?" enctype=\"multipart/form-data\" method=\"post\"":"")+"></form>")+"<iframe name=\""+_54+"\" id=\""+_54+"\" style=\"width:0px; height:0px; overflow:hidden; border:none\"></iframe>";\r
+if(!_4d){\r
+_4d=th.span.firstChild;\r
+}\r
+d.body.insertBefore(s,d.body.lastChild);\r
+var _56=function(e,_58){\r
+var sv=[];\r
+var _5a=e;\r
+if(e.mergeAttributes){\r
+var _5a=d.createElement("form");\r
+_5a.mergeAttributes(e,false);\r
+}\r
+for(var i=0;i<_58.length;i++){\r
+var k=_58[i][0],v=_58[i][1];\r
+sv[sv.length]=[k,_5a.getAttribute(k)];\r
+_5a.setAttribute(k,v);\r
+}\r
+if(e.mergeAttributes){\r
+e.mergeAttributes(_5a,false);\r
+}\r
+return sv;\r
+};\r
+var _5e=function(){\r
+top.JsHttpRequestGlobal=JsHttpRequest;\r
+var _5f=[];\r
+if(!_4e){\r
+for(var i=0,n=_4d.elements.length;i<n;i++){\r
+_5f[i]=_4d.elements[i].name;\r
+_4d.elements[i].name="";\r
+}\r
+}\r
+var qt=th.queryText.split("&");\r
+for(var i=qt.length-1;i>=0;i--){\r
+var _63=qt[i].split("=",2);\r
+var e=d.createElement("INPUT");\r
+e.type="hidden";\r
+e.name=unescape(_63[0]);\r
+e.value=_63[1]!=null?unescape(_63[1]):"";\r
+_4d.appendChild(e);\r
+}\r
+for(var i=0;i<th.queryElem.length;i++){\r
+th.queryElem[i].e.name=th.queryElem[i].name;\r
+}\r
+var sv=_56(_4d,[["action",th.url],["method",th.method],["onsubmit",null],["target",_54]]);\r
+_4d.submit();\r
+_56(_4d,sv);\r
+for(var i=0;i<qt.length;i++){\r
+_4d.lastChild.parentNode.removeChild(_4d.lastChild);\r
+}\r
+if(!_4e){\r
+for(var i=0,n=_4d.elements.length;i<n;i++){\r
+_4d.elements[i].name=_5f[i];\r
+}\r
+}\r
+};\r
+JsHttpRequest.setTimeout(_5e,100);\r
+return null;\r
+};\r
+}};\r
+\r
--- /dev/null
+/**\r
+ * Swiff.Uploader - Flash FileReference Control\r
+ *\r
+ * @version 1.1\r
+ *\r
+ * @license MIT License\r
+ *\r
+ * @author Harald Kirschner <mail [at] digitarald [dot] de>\r
+ * @copyright Authors\r
+ */\r
+\r
+Swiff.Uploader = new Class({\r
+\r
+ Extends: Swiff,\r
+\r
+ Implements: Events,\r
+\r
+ options: {\r
+ path: 'Swiff.Uploader.swf',\r
+ multiple: true,\r
+ queued: true,\r
+ typeFilter: null,\r
+ url: null,\r
+ method: 'post',\r
+ data: null,\r
+ fieldName: 'Filedata',\r
+ callBacks: null\r
+ },\r
+\r
+ initialize: function(options){\r
+ if (Browser.Plugins.Flash.version < 9) return false;\r
+ this.setOptions(options);\r
+\r
+ var callBacks = this.options.callBacks || this;\r
+ if (callBacks.onLoad) this.addEvent('onLoad', callBacks.onLoad);\r
+\r
+ var prepare = {}, self = this;\r
+ ['onSelect', 'onAllSelect', 'onCancel', 'onBeforeOpen', 'onOpen', 'onProgress', 'onComplete', 'onError', 'onAllComplete'].each(function(index) {\r
+ var fn = (callBacks[index]) ? callBacks[index] : $empty;\r
+ prepare[index] = function() {\r
+ return fn.apply(self, arguments);\r
+ };\r
+ }, this);\r
+\r
+ prepare.onLoad = this.load.create({delay: 10, bind: this});\r
+ this.options.callBacks = prepare;\r
+\r
+ var path = this.options.path;\r
+ if (!path.contains('?')) path += '?noCache=' + $time(); // quick fix\r
+\r
+ delete this.options.params.wMode;\r
+ this.parent(path);\r
+\r
+ if (!this.options.container) document.body.appendChild(this.object);\r
+ return this;\r
+ },\r
+\r
+ load: function(){\r
+ this.remote('register', this.instance, this.options.multiple, this.options.queued);\r
+ this.fireEvent('onLoad');\r
+ },\r
+\r
+ /*\r
+ Method: browse\r
+ Open the file browser.\r
+ */\r
+\r
+ browse: function(typeFilter){\r
+ return this.remote('browse', $pick(typeFilter, this.options.typeFilter));\r
+ },\r
+\r
+ /*\r
+ Method: upload\r
+ Starts the upload of all selected files.\r
+ */\r
+\r
+ upload: function(options){\r
+ var current = this.options;\r
+ options = $extend({data: current.data, url: current.url, method: current.method, fieldName: current.fieldName}, options);\r
+ if ($type(options.data) == 'element') options.data = $(options.data).toQueryString();\r
+ return this.remote('upload', options);\r
+ },\r
+\r
+ /*\r
+ Method: removeFile\r
+ For multiple uploads cancels and removes the given file from queue.\r
+\r
+ Arguments:\r
+ name - (string) Filename\r
+ name - (string) Filesize in byte\r
+ */\r
+\r
+ removeFile: function(file){\r
+ if (file) file = {name: file.name, size: file.size};\r
+ return this.remote('removeFile', file);\r
+ },\r
+\r
+ /*\r
+ Method: getFileList\r
+ Returns one Array with with arrays containing name and size of the file.\r
+\r
+ Returns:\r
+ (array) An array with files\r
+ */\r
+\r
+ getFileList: function(){\r
+ return this.remote('getFileList');\r
+ }\r
+\r
+});\r
--- /dev/null
+tinyMCEPopup.requireLangPack();\r
+\r
+var ImagesDialog = {\r
+ init : function(ed) {\r
+ tinyMCEPopup.resizeToInnerSize();\r
+ },\r
+\r
+ insert : function(file, title, width) {\r
+ var ed = tinyMCEPopup.editor, dom = ed.dom;\r
+\r
+ tinyMCEPopup.execCommand('mceInsertContent', false, dom.createHTML('img', {\r
+ src : file,\r
+ alt : title,\r
+ title : title,\r
+ width : width,\r
+ /*height : 0,*/\r
+ border : 0\r
+ }));\r
+\r
+ tinyMCEPopup.close();\r
+ }\r
+};\r
+\r
+tinyMCEPopup.onInit.add(ImagesDialog.init, ImagesDialog);
\ No newline at end of file
--- /dev/null
+/*\r
+Script: Core.js\r
+ MooTools - My Object Oriented JavaScript Tools.\r
+\r
+License:\r
+ MIT-style license.\r
+\r
+Copyright:\r
+ Copyright (c) 2006-2007 [Valerio Proietti](http://mad4milk.net/).\r
+\r
+Code & Documentation:\r
+ [The MooTools production team](http://mootools.net/developers/).\r
+\r
+Inspiration:\r
+ - Class implementation inspired by [Base.js](http://dean.edwards.name/weblog/2006/03/base/) Copyright (c) 2006 Dean Edwards, [GNU Lesser General Public License](http://opensource.org/licenses/lgpl-license.php)\r
+ - Some functionality inspired by [Prototype.js](http://prototypejs.org) Copyright (c) 2005-2007 Sam Stephenson, [MIT License](http://opensource.org/licenses/mit-license.php)\r
+*/\r
+\r
+var MooTools = {\r
+ 'version': '1.2dev',\r
+ 'build': '%build%'\r
+};\r
+ \r
+var Native = function(options){\r
+ options = options || {};\r
+\r
+ var afterImplement = options.afterImplement || function(){};\r
+ var generics = options.generics;\r
+ generics = (generics !== false);\r
+ var legacy = options.legacy;\r
+ var initialize = options.initialize;\r
+ var protect = options.protect;\r
+ var name = options.name;\r
+\r
+ var object = initialize || legacy;\r
+\r
+ object.constructor = Native;\r
+ object.$family = {name: 'native'};\r
+ if (legacy && initialize) object.prototype = legacy.prototype;\r
+ object.prototype.constructor = object;\r
+\r
+ if (name){\r
+ var family = name.toLowerCase();\r
+ object.prototype.$family = {name: family};\r
+ Native.typize(object, family);\r
+ }\r
+\r
+ var add = function(obj, name, method, force){\r
+ if (!protect || force || !obj.prototype[name]) obj.prototype[name] = method;\r
+ if (generics) Native.genericize(obj, name, protect);\r
+ afterImplement.call(obj, name, method);\r
+ return obj;\r
+ };\r
+ \r
+ object.implement = function(a1, a2, a3){\r
+ if (typeof a1 == 'string') return add(this, a1, a2, a3);\r
+ for (var p in a1) add(this, p, a1[p], a2);\r
+ return this;\r
+ };\r
+ \r
+ object.alias = function(a1, a2, a3){\r
+ if (typeof a1 == 'string'){\r
+ a1 = this.prototype[a1];\r
+ if (a1) add(this, a2, a1, a3);\r
+ } else {\r
+ for (var a in a1) this.alias(a, a1[a], a2);\r
+ }\r
+ return this;\r
+ };\r
+\r
+ return object;\r
+};\r
+\r
+Native.implement = function(objects, properties){\r
+ for (var i = 0, l = objects.length; i < l; i++) objects[i].implement(properties);\r
+};\r
+\r
+Native.genericize = function(object, property, check){\r
+ if ((!check || !object[property]) && typeof object.prototype[property] == 'function') object[property] = function(){\r
+ var args = Array.prototype.slice.call(arguments);\r
+ return object.prototype[property].apply(args.shift(), args);\r
+ };\r
+};\r
+\r
+Native.typize = function(object, family){\r
+ if (!object.type) object.type = function(item){\r
+ return ($type(item) === family);\r
+ };\r
+};\r
+\r
+Native.alias = function(objects, a1, a2, a3){\r
+ for (var i = 0, j = objects.length; i < j; i++) objects[i].alias(a1, a2, a3);\r
+};\r
+\r
+(function(objects){\r
+ for (var name in objects) Native.typize(objects[name], name.toLowerCase());\r
+})({'Boolean': Boolean, 'Native': Native, 'Object': Object});\r
+\r
+(function(objects){\r
+ for (var name in objects) new Native({name: name, initialize: objects[name], protect: true});\r
+})({'String': String, 'Function': Function, 'Number': Number, 'Array': Array, 'RegExp': RegExp, 'Date': Date});\r
+\r
+(function(object, methods){\r
+ for (var i = 0, l = methods.length; i < l; i++) Native.genericize(object, methods[i], true);\r
+ return arguments.callee;\r
+})\r
+(Array, ['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift', 'concat', 'join', 'slice', 'toString', 'valueOf', 'indexOf', 'lastIndexOf'])\r
+(String, ['charAt', 'charCodeAt', 'concat', 'indexOf', 'lastIndexOf', 'match', 'replace', 'search', 'slice', 'split', 'substr', 'substring', 'toLowerCase', 'toUpperCase', 'valueOf']);\r
+\r
+function $chk(obj){\r
+ return !!(obj || obj === 0);\r
+};\r
+\r
+function $clear(timer){\r
+ clearTimeout(timer);\r
+ clearInterval(timer);\r
+ return null;\r
+};\r
+\r
+function $defined(obj){\r
+ return (obj != undefined);\r
+};\r
+\r
+function $empty(){};\r
+\r
+function $arguments(i){\r
+ return function(){\r
+ return arguments[i];\r
+ };\r
+};\r
+\r
+function $lambda(value){\r
+ return (typeof value == 'function') ? value : function(){\r
+ return value;\r
+ };\r
+};\r
+\r
+function $extend(original, extended){\r
+ for (var key in (extended || {})) original[key] = extended[key];\r
+ return original;\r
+};\r
+\r
+function $unlink(object){\r
+ var unlinked = null;\r
+ \r
+ switch ($type(object)){\r
+ case 'object':\r
+ unlinked = {};\r
+ for (var p in object) unlinked[p] = $unlink(object[p]);\r
+ break;\r
+ case 'hash':\r
+ unlinked = $unlink(object.getClean());\r
+ break;\r
+ case 'array':\r
+ unlinked = [];\r
+ for (var i = 0, l = object.length; i < l; i++) unlinked[i] = $unlink(object[i]);\r
+ break;\r
+ default: return object;\r
+ }\r
+ \r
+ return unlinked;\r
+};\r
+\r
+function $merge(){\r
+ var mix = {};\r
+ for (var i = 0, l = arguments.length; i < l; i++){\r
+ var object = arguments[i];\r
+ if ($type(object) != 'object') continue;\r
+ for (var key in object){\r
+ var op = object[key], mp = mix[key];\r
+ mix[key] = (mp && $type(op) == 'object' && $type(mp) == 'object') ? $merge(mp, op) : $unlink(op);\r
+ }\r
+ }\r
+ return mix;\r
+};\r
+\r
+function $pick(){\r
+ for (var i = 0, l = arguments.length; i < l; i++){\r
+ if (arguments[i] != undefined) return arguments[i];\r
+ }\r
+ return null;\r
+};\r
+\r
+function $random(min, max){\r
+ return Math.floor(Math.random() * (max - min + 1) + min);\r
+};\r
+\r
+function $splat(obj){\r
+ var type = $type(obj);\r
+ return (type) ? ((type != 'array' && type != 'arguments') ? [obj] : obj) : [];\r
+};\r
+\r
+var $time = Date.now || function(){\r
+ return new Date().getTime();\r
+};\r
+\r
+function $try(){\r
+ for (var i = 0, l = arguments.length; i < l; i++){\r
+ try {\r
+ return arguments[i]();\r
+ } catch(e){}\r
+ }\r
+ return null;\r
+};\r
+\r
+function $type(obj){\r
+ if (obj == undefined) return false;\r
+ if (obj.$family) return (obj.$family.name == 'number' && !isFinite(obj)) ? false : obj.$family.name;\r
+ if (obj.nodeName){\r
+ switch (obj.nodeType){\r
+ case 1: return 'element';\r
+ case 3: return (/\S/).test(obj.nodeValue) ? 'textnode' : 'whitespace';\r
+ }\r
+ } else if (typeof obj.length == 'number'){\r
+ if (obj.callee) return 'arguments';\r
+ else if (obj.item) return 'collection';\r
+ }\r
+ return typeof obj;\r
+};\r
+\r
+var Hash = new Native({\r
+\r
+ name: 'Hash',\r
+\r
+ initialize: function(object){\r
+ if ($type(object) == 'hash') object = $unlink(object.getClean());\r
+ for (var key in object) this[key] = object[key];\r
+ return this;\r
+ }\r
+\r
+});\r
+\r
+Hash.implement({\r
+ \r
+ getLength: function(){\r
+ var length = 0;\r
+ for (var key in this){\r
+ if (this.hasOwnProperty(key)) length++;\r
+ }\r
+ return length;\r
+ },\r
+\r
+ forEach: function(fn, bind){\r
+ for (var key in this){\r
+ if (this.hasOwnProperty(key)) fn.call(bind, this[key], key, this);\r
+ }\r
+ },\r
+ \r
+ getClean: function(){\r
+ var clean = {};\r
+ for (var key in this){\r
+ if (this.hasOwnProperty(key)) clean[key] = this[key];\r
+ }\r
+ return clean;\r
+ }\r
+\r
+});\r
+\r
+Hash.alias('forEach', 'each');\r
+\r
+function $H(object){\r
+ return new Hash(object);\r
+};\r
+\r
+Array.implement({\r
+\r
+ forEach: function(fn, bind){\r
+ for (var i = 0, l = this.length; i < l; i++) fn.call(bind, this[i], i, this);\r
+ }\r
+\r
+});\r
+\r
+Array.alias('forEach', 'each');\r
+\r
+function $A(iterable){\r
+ if (iterable.item){\r
+ var array = [];\r
+ for (var i = 0, l = iterable.length; i < l; i++) array[i] = iterable[i];\r
+ return array;\r
+ }\r
+ return Array.prototype.slice.call(iterable);\r
+};\r
+\r
+function $each(iterable, fn, bind){\r
+ var type = $type(iterable);\r
+ ((type == 'arguments' || type == 'collection' || type == 'array') ? Array : Hash).each(iterable, fn, bind);\r
+};\r
+/*\r
+Script: Browser.js\r
+ The Browser Core. Contains Browser initialization, Window and Document, and the Browser Hash.\r
+\r
+License:\r
+ MIT-style license.\r
+*/\r
+\r
+var Browser = new Hash({\r
+ Engine: {name: 'unknown', version: ''},\r
+ Platform: {name: (navigator.platform.match(/mac|win|linux/i) || ['other'])[0].toLowerCase()},\r
+ Features: {xpath: !!(document.evaluate), air: !!(window.runtime)},\r
+ Plugins: {}\r
+});\r
+\r
+if (window.opera) Browser.Engine = {name: 'presto', version: (document.getElementsByClassName) ? 950 : 925};\r
+else if (window.ActiveXObject) Browser.Engine = {name: 'trident', version: (window.XMLHttpRequest) ? 5 : 4};\r
+else if (!navigator.taintEnabled) Browser.Engine = {name: 'webkit', version: (Browser.Features.xpath) ? 420 : 419};\r
+else if (document.getBoxObjectFor != null) Browser.Engine = {name: 'gecko', version: (document.getElementsByClassName) ? 19 : 18};\r
+Browser.Engine[Browser.Engine.name] = Browser.Engine[Browser.Engine.name + Browser.Engine.version] = true;\r
+\r
+if (window.orientation != undefined) Browser.Platform.name = 'ipod';\r
+\r
+Browser.Platform[Browser.Platform.name] = true;\r
+\r
+Browser.Request = function(){\r
+ return $try(function(){\r
+ return new XMLHttpRequest();\r
+ }, function(){\r
+ return new ActiveXObject('MSXML2.XMLHTTP');\r
+ });\r
+};\r
+\r
+Browser.Features.xhr = !!(Browser.Request());\r
+\r
+Browser.Plugins.Flash = (function(){\r
+ var version = ($try(function(){\r
+ return navigator.plugins['Shockwave Flash'].description;\r
+ }, function(){\r
+ return new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version');\r
+ }) || '0 r0').match(/\d+/g);\r
+ return {version: parseInt(version[0] || 0 + '.' + version[1] || 0), build: parseInt(version[2] || 0)};\r
+})();\r
+\r
+function $exec(text){\r
+ if (!text) return text;\r
+ if (window.execScript){\r
+ window.execScript(text);\r
+ } else {\r
+ var script = document.createElement('script');\r
+ script.setAttribute('type', 'text/javascript');\r
+ script.text = text;\r
+ document.head.appendChild(script);\r
+ document.head.removeChild(script);\r
+ }\r
+ return text;\r
+};\r
+\r
+Native.UID = 1;\r
+\r
+var $uid = (Browser.Engine.trident) ? function(item){\r
+ return (item.uid || (item.uid = [Native.UID++]))[0];\r
+} : function(item){\r
+ return item.uid || (item.uid = Native.UID++);\r
+};\r
+\r
+var Window = new Native({\r
+\r
+ name: 'Window',\r
+\r
+ legacy: (Browser.Engine.trident) ? null: window.Window,\r
+\r
+ initialize: function(win){\r
+ $uid(win);\r
+ if (!win.Element){\r
+ win.Element = $empty;\r
+ if (Browser.Engine.webkit) win.document.createElement("iframe"); //fixes safari 2\r
+ win.Element.prototype = (Browser.Engine.webkit) ? window["[[DOMElement.prototype]]"] : {};\r
+ }\r
+ return $extend(win, Window.Prototype);\r
+ },\r
+\r
+ afterImplement: function(property, value){\r
+ window[property] = Window.Prototype[property] = value;\r
+ }\r
+\r
+});\r
+\r
+Window.Prototype = {$family: {name: 'window'}};\r
+\r
+new Window(window);\r
+\r
+var Document = new Native({\r
+\r
+ name: 'Document',\r
+\r
+ legacy: (Browser.Engine.trident) ? null: window.Document,\r
+\r
+ initialize: function(doc){\r
+ $uid(doc);\r
+ doc.head = doc.getElementsByTagName('head')[0];\r
+ doc.html = doc.getElementsByTagName('html')[0];\r
+ doc.window = doc.defaultView || doc.parentWindow;\r
+ if (Browser.Engine.trident4) $try(function(){\r
+ doc.execCommand("BackgroundImageCache", false, true);\r
+ });\r
+ return $extend(doc, Document.Prototype);\r
+ },\r
+\r
+ afterImplement: function(property, value){\r
+ document[property] = Document.Prototype[property] = value;\r
+ }\r
+\r
+});\r
+\r
+Document.Prototype = {$family: {name: 'document'}};\r
+\r
+new Document(document);/*\r
+Script: Array.js\r
+ Contains Array Prototypes like copy, each, contains, and remove.\r
+\r
+License:\r
+ MIT-style license.\r
+*/\r
+\r
+Array.implement({\r
+\r
+ every: function(fn, bind){\r
+ for (var i = 0, l = this.length; i < l; i++){\r
+ if (!fn.call(bind, this[i], i, this)) return false;\r
+ }\r
+ return true;\r
+ },\r
+\r
+ filter: function(fn, bind){\r
+ var results = [];\r
+ for (var i = 0, l = this.length; i < l; i++){\r
+ if (fn.call(bind, this[i], i, this)) results.push(this[i]);\r
+ }\r
+ return results;\r
+ },\r
+ \r
+ clean: function() {\r
+ return this.filter($defined);\r
+ },\r
+\r
+ indexOf: function(item, from){\r
+ var len = this.length;\r
+ for (var i = (from < 0) ? Math.max(0, len + from) : from || 0; i < len; i++){\r
+ if (this[i] === item) return i;\r
+ }\r
+ return -1;\r
+ },\r
+\r
+ map: function(fn, bind){\r
+ var results = [];\r
+ for (var i = 0, l = this.length; i < l; i++) results[i] = fn.call(bind, this[i], i, this);\r
+ return results;\r
+ },\r
+\r
+ some: function(fn, bind){\r
+ for (var i = 0, l = this.length; i < l; i++){\r
+ if (fn.call(bind, this[i], i, this)) return true;\r
+ }\r
+ return false;\r
+ },\r
+\r
+ associate: function(keys){\r
+ var obj = {}, length = Math.min(this.length, keys.length);\r
+ for (var i = 0; i < length; i++) obj[keys[i]] = this[i];\r
+ return obj;\r
+ },\r
+\r
+ link: function(object){\r
+ var result = {};\r
+ for (var i = 0, l = this.length; i < l; i++){\r
+ for (var key in object){\r
+ if (object[key](this[i])){\r
+ result[key] = this[i];\r
+ delete object[key];\r
+ break;\r
+ }\r
+ }\r
+ }\r
+ return result;\r
+ },\r
+\r
+ contains: function(item, from){\r
+ return this.indexOf(item, from) != -1;\r
+ },\r
+\r
+ extend: function(array){\r
+ for (var i = 0, j = array.length; i < j; i++) this.push(array[i]);\r
+ return this;\r
+ },\r
+\r
+ getLast: function(){\r
+ return (this.length) ? this[this.length - 1] : null;\r
+ },\r
+\r
+ getRandom: function(){\r
+ return (this.length) ? this[$random(0, this.length - 1)] : null;\r
+ },\r
+\r
+ include: function(item){\r
+ if (!this.contains(item)) this.push(item);\r
+ return this;\r
+ },\r
+\r
+ combine: function(array){\r
+ for (var i = 0, l = array.length; i < l; i++) this.include(array[i]);\r
+ return this;\r
+ },\r
+\r
+ erase: function(item){\r
+ for (var i = this.length; i--; i){\r
+ if (this[i] === item) this.splice(i, 1);\r
+ }\r
+ return this;\r
+ },\r
+\r
+ empty: function(){\r
+ this.length = 0;\r
+ return this;\r
+ },\r
+\r
+ flatten: function(){\r
+ var array = [];\r
+ for (var i = 0, l = this.length; i < l; i++){\r
+ var type = $type(this[i]);\r
+ if (!type) continue;\r
+ array = array.concat((type == 'array' || type == 'collection' || type == 'arguments') ? Array.flatten(this[i]) : this[i]);\r
+ }\r
+ return array;\r
+ },\r
+\r
+ hexToRgb: function(array){\r
+ if (this.length != 3) return null;\r
+ var rgb = this.map(function(value){\r
+ if (value.length == 1) value += value;\r
+ return value.toInt(16);\r
+ });\r
+ return (array) ? rgb : 'rgb(' + rgb + ')';\r
+ },\r
+\r
+ rgbToHex: function(array){\r
+ if (this.length < 3) return null;\r
+ if (this.length == 4 && this[3] == 0 && !array) return 'transparent';\r
+ var hex = [];\r
+ for (var i = 0; i < 3; i++){\r
+ var bit = (this[i] - 0).toString(16);\r
+ hex.push((bit.length == 1) ? '0' + bit : bit);\r
+ }\r
+ return (array) ? hex : '#' + hex.join('');\r
+ }\r
+\r
+});/*\r
+Script: Function.js\r
+ Contains Function Prototypes like create, bind, pass, and delay.\r
+\r
+License:\r
+ MIT-style license.\r
+*/\r
+\r
+Function.implement({\r
+\r
+ extend: function(properties){\r
+ for (var property in properties) this[property] = properties[property];\r
+ return this;\r
+ },\r
+\r
+ create: function(options){\r
+ var self = this;\r
+ options = options || {};\r
+ return function(event){\r
+ var args = options.arguments;\r
+ args = (args != undefined) ? $splat(args) : Array.slice(arguments, (options.event) ? 1 : 0);\r
+ if (options.event) args = [event || window.event].extend(args);\r
+ var returns = function(){\r
+ return self.apply(options.bind || null, args);\r
+ };\r
+ if (options.delay) return setTimeout(returns, options.delay);\r
+ if (options.periodical) return setInterval(returns, options.periodical);\r
+ if (options.attempt) return $try(returns);\r
+ return returns();\r
+ };\r
+ },\r
+\r
+ pass: function(args, bind){\r
+ return this.create({arguments: args, bind: bind});\r
+ },\r
+\r
+ attempt: function(args, bind){\r
+ return this.create({arguments: args, bind: bind, attempt: true})();\r
+ },\r
+\r
+ bind: function(bind, args){\r
+ return this.create({bind: bind, arguments: args});\r
+ },\r
+\r
+ bindWithEvent: function(bind, args){\r
+ return this.create({bind: bind, event: true, arguments: args});\r
+ },\r
+\r
+ delay: function(delay, bind, args){\r
+ return this.create({delay: delay, bind: bind, arguments: args})();\r
+ },\r
+\r
+ periodical: function(interval, bind, args){\r
+ return this.create({periodical: interval, bind: bind, arguments: args})();\r
+ },\r
+\r
+ run: function(args, bind){\r
+ return this.apply(bind, $splat(args));\r
+ }\r
+\r
+});/*\r
+Script: Number.js\r
+ Contains Number Prototypes like limit, round, times, and ceil.\r
+\r
+License:\r
+ MIT-style license.\r
+*/\r
+\r
+Number.implement({\r
+\r
+ limit: function(min, max){\r
+ return Math.min(max, Math.max(min, this));\r
+ },\r
+\r
+ round: function(precision){\r
+ precision = Math.pow(10, precision || 0);\r
+ return Math.round(this * precision) / precision;\r
+ },\r
+\r
+ times: function(fn, bind){\r
+ for (var i = 0; i < this; i++) fn.call(bind, i, this);\r
+ },\r
+\r
+ toFloat: function(){\r
+ return parseFloat(this);\r
+ },\r
+\r
+ toInt: function(base){\r
+ return parseInt(this, base || 10);\r
+ }\r
+\r
+});\r
+\r
+Number.alias('times', 'each');\r
+\r
+(function(math){\r
+ var methods = {};\r
+ math.each(function(name){\r
+ if (!Number[name]) methods[name] = function(){\r
+ return Math[name].apply(null, [this].concat($A(arguments)));\r
+ };\r
+ });\r
+ Number.implement(methods);\r
+})(['abs', 'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'exp', 'floor', 'log', 'max', 'min', 'pow', 'sin', 'sqrt', 'tan']);/*\r
+Script: String.js\r
+ Contains String Prototypes like camelCase, capitalize, test, and toInt.\r
+\r
+License:\r
+ MIT-style license.\r
+*/\r
+\r
+String.implement({\r
+\r
+ test: function(regex, params){\r
+ return ((typeof regex == 'string') ? new RegExp(regex, params) : regex).test(this);\r
+ },\r
+\r
+ contains: function(string, separator){\r
+ return (separator) ? (separator + this + separator).indexOf(separator + string + separator) > -1 : this.indexOf(string) > -1;\r
+ },\r
+\r
+ trim: function(){\r
+ return this.replace(/^\s+|\s+$/g, '');\r
+ },\r
+\r
+ clean: function(){\r
+ return this.replace(/\s+/g, ' ').trim();\r
+ },\r
+\r
+ camelCase: function(){\r
+ return this.replace(/-\D/g, function(match){\r
+ return match.charAt(1).toUpperCase();\r
+ });\r
+ },\r
+\r
+ hyphenate: function(){\r
+ return this.replace(/[A-Z]/g, function(match){\r
+ return ('-' + match.charAt(0).toLowerCase());\r
+ });\r
+ },\r
+\r
+ capitalize: function(){\r
+ return this.replace(/\b[a-z]/g, function(match){\r
+ return match.toUpperCase();\r
+ });\r
+ },\r
+\r
+ escapeRegExp: function(){\r
+ return this.replace(/([-.*+?^${}()|[\]\/\\])/g, '\\$1');\r
+ },\r
+\r
+ toInt: function(base){\r
+ return parseInt(this, base || 10);\r
+ },\r
+\r
+ toFloat: function(){\r
+ return parseFloat(this);\r
+ },\r
+\r
+ hexToRgb: function(array){\r
+ var hex = this.match(/^#?(\w{1,2})(\w{1,2})(\w{1,2})$/);\r
+ return (hex) ? hex.slice(1).hexToRgb(array) : null;\r
+ },\r
+\r
+ rgbToHex: function(array){\r
+ var rgb = this.match(/\d{1,3}/g);\r
+ return (rgb) ? rgb.rgbToHex(array) : null;\r
+ },\r
+\r
+ stripScripts: function(option){\r
+ var scripts = '';\r
+ var text = this.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi, function(){\r
+ scripts += arguments[1] + '\n';\r
+ return '';\r
+ });\r
+ if (option === true) $exec(scripts);\r
+ else if ($type(option) == 'function') option(scripts, text);\r
+ return text;\r
+ },\r
+\r
+ substitute: function(object, regexp){\r
+ return this.replace(regexp || (/\\?\{([^}]+)\}/g), function(match, name){\r
+ if (match.charAt(0) == '\\') return match.slice(1);\r
+ return (object[name] != undefined) ? object[name] : '';\r
+ });\r
+ }\r
+\r
+});/*\r
+Script: Hash.js\r
+ Contains Hash Prototypes. Provides a means for overcoming the JavaScript practical impossibility of extending native Objects.\r
+\r
+License:\r
+ MIT-style license.\r
+*/\r
+\r
+Hash.implement({\r
+\r
+ has: Object.prototype.hasOwnProperty,\r
+\r
+ keyOf: function(value){\r
+ for (var key in this){\r
+ if (this.hasOwnProperty(key) && this[key] === value) return key;\r
+ }\r
+ return null;\r
+ },\r
+\r
+ hasValue: function(value){\r
+ return (Hash.keyOf(this, value) !== null);\r
+ },\r
+\r
+ extend: function(properties){\r
+ Hash.each(properties, function(value, key){\r
+ Hash.set(this, key, value);\r
+ }, this);\r
+ return this;\r
+ },\r
+\r
+ combine: function(properties){\r
+ Hash.each(properties, function(value, key){\r
+ Hash.include(this, key, value);\r
+ }, this);\r
+ return this;\r
+ },\r
+\r
+ erase: function(key){\r
+ if (this.hasOwnProperty(key)) delete this[key];\r
+ return this;\r
+ },\r
+\r
+ get: function(key){\r
+ return (this.hasOwnProperty(key)) ? this[key] : null;\r
+ },\r
+\r
+ set: function(key, value){\r
+ if (!this[key] || this.hasOwnProperty(key)) this[key] = value;\r
+ return this;\r
+ },\r
+\r
+ empty: function(){\r
+ Hash.each(this, function(value, key){\r
+ delete this[key];\r
+ }, this);\r
+ return this;\r
+ },\r
+\r
+ include: function(key, value){\r
+ var k = this[key];\r
+ if (k == undefined) this[key] = value;\r
+ return this;\r
+ },\r
+\r
+ map: function(fn, bind){\r
+ var results = new Hash;\r
+ Hash.each(this, function(value, key){\r
+ results.set(key, fn.call(bind, value, key, this));\r
+ }, this);\r
+ return results;\r
+ },\r
+\r
+ filter: function(fn, bind){\r
+ var results = new Hash;\r
+ Hash.each(this, function(value, key){\r
+ if (fn.call(bind, value, key, this)) results.set(key, value);\r
+ }, this);\r
+ return results;\r
+ },\r
+\r
+ every: function(fn, bind){\r
+ for (var key in this){\r
+ if (this.hasOwnProperty(key) && !fn.call(bind, this[key], key)) return false;\r
+ }\r
+ return true;\r
+ },\r
+\r
+ some: function(fn, bind){\r
+ for (var key in this){\r
+ if (this.hasOwnProperty(key) && fn.call(bind, this[key], key)) return true;\r
+ }\r
+ return false;\r
+ },\r
+\r
+ getKeys: function(){\r
+ var keys = [];\r
+ Hash.each(this, function(value, key){\r
+ keys.push(key);\r
+ });\r
+ return keys;\r
+ },\r
+\r
+ getValues: function(){\r
+ var values = [];\r
+ Hash.each(this, function(value){\r
+ values.push(value);\r
+ });\r
+ return values;\r
+ },\r
+ \r
+ toQueryString: function(base){\r
+ var queryString = [];\r
+ Hash.each(this, function(value, key){\r
+ if (base) key = base + '[' + key + ']';\r
+ var result;\r
+ switch ($type(value)){\r
+ case 'object': result = Hash.toQueryString(value, key); break;\r
+ case 'array':\r
+ var qs = {};\r
+ value.each(function(val, i){\r
+ qs[i] = val;\r
+ });\r
+ result = Hash.toQueryString(qs, key);\r
+ break;\r
+ default: result = key + '=' + encodeURIComponent(value);\r
+ }\r
+ if (value != undefined) queryString.push(result);\r
+ });\r
+ \r
+ return queryString.join('&');\r
+ }\r
+\r
+});\r
+\r
+Hash.alias({keyOf: 'indexOf', hasValue: 'contains'});/*\r
+Script: Event.js\r
+ Contains the Event Native, to make the event object completely crossbrowser.\r
+\r
+License:\r
+ MIT-style license.\r
+*/\r
+\r
+var Event = new Native({\r
+\r
+ name: 'Event',\r
+\r
+ initialize: function(event, win){\r
+ win = win || window;\r
+ var doc = win.document;\r
+ event = event || win.event;\r
+ if (event.$extended) return event;\r
+ this.$extended = true;\r
+ var type = event.type;\r
+ var target = event.target || event.srcElement;\r
+ while (target && target.nodeType == 3) target = target.parentNode;\r
+ \r
+ if (type.test(/key/)){\r
+ var code = event.which || event.keyCode;\r
+ var key = Event.Keys.keyOf(code);\r
+ if (type == 'keydown'){\r
+ var fKey = code - 111;\r
+ if (fKey > 0 && fKey < 13) key = 'f' + fKey;\r
+ }\r
+ key = key || String.fromCharCode(code).toLowerCase();\r
+ } else if (type.match(/(click|mouse|menu)/i)){\r
+ doc = (!doc.compatMode || doc.compatMode == 'CSS1Compat') ? doc.html : doc.body;\r
+ var page = {\r
+ x: event.pageX || event.clientX + doc.scrollLeft,\r
+ y: event.pageY || event.clientY + doc.scrollTop\r
+ };\r
+ var client = {\r
+ x: (event.pageX) ? event.pageX - win.pageXOffset : event.clientX,\r
+ y: (event.pageY) ? event.pageY - win.pageYOffset : event.clientY\r
+ };\r
+ if (type.match(/DOMMouseScroll|mousewheel/)){\r
+ var wheel = (event.wheelDelta) ? event.wheelDelta / 120 : -(event.detail || 0) / 3;\r
+ }\r
+ var rightClick = (event.which == 3) || (event.button == 2);\r
+ var related = null;\r
+ if (type.match(/over|out/)){\r
+ switch (type){\r
+ case 'mouseover': related = event.relatedTarget || event.fromElement; break;\r
+ case 'mouseout': related = event.relatedTarget || event.toElement;\r
+ }\r
+ if (!(function(){\r
+ while (related && related.nodeType == 3) related = related.parentNode;\r
+ return true;\r
+ }).create({attempt: Browser.Engine.gecko})()) related = false;\r
+ }\r
+ }\r
+\r
+ return $extend(this, {\r
+ event: event,\r
+ type: type,\r
+ \r
+ page: page,\r
+ client: client,\r
+ rightClick: rightClick,\r
+ \r
+ wheel: wheel,\r
+ \r
+ relatedTarget: related,\r
+ target: target,\r
+ \r
+ code: code,\r
+ key: key,\r
+ \r
+ shift: event.shiftKey,\r
+ control: event.ctrlKey,\r
+ alt: event.altKey,\r
+ meta: event.metaKey\r
+ });\r
+ }\r
+\r
+});\r
+\r
+Event.Keys = new Hash({\r
+ 'enter': 13,\r
+ 'up': 38,\r
+ 'down': 40,\r
+ 'left': 37,\r
+ 'right': 39,\r
+ 'esc': 27,\r
+ 'space': 32,\r
+ 'backspace': 8,\r
+ 'tab': 9,\r
+ 'delete': 46\r
+});\r
+\r
+Event.implement({\r
+\r
+ stop: function(){\r
+ return this.stopPropagation().preventDefault();\r
+ },\r
+\r
+ stopPropagation: function(){\r
+ if (this.event.stopPropagation) this.event.stopPropagation();\r
+ else this.event.cancelBubble = true;\r
+ return this;\r
+ },\r
+\r
+ preventDefault: function(){\r
+ if (this.event.preventDefault) this.event.preventDefault();\r
+ else this.event.returnValue = false;\r
+ return this;\r
+ }\r
+\r
+});/*\r
+Script: Class.js\r
+ Contains the Class Function for easily creating, extending, and implementing reusable Classes.\r
+\r
+License:\r
+ MIT-style license.\r
+*/\r
+\r
+var Class = new Native({\r
+\r
+ name: 'Class',\r
+\r
+ initialize: function(properties){\r
+\r
+ properties = properties || {};\r
+\r
+ var klass = function(empty){\r
+ \r
+ for (var key in this) this[key] = $unlink(this[key]);\r
+\r
+ for (var mutator in Class.Mutators){\r
+ if (!this[mutator]) continue;\r
+ Class.Mutators[mutator](this, this[mutator]);\r
+ delete this[mutator];\r
+ }\r
+\r
+ this.constructor = klass;\r
+ \r
+ if (empty === $empty) return this;\r
+ \r
+ var self = (this.initialize) ? this.initialize.apply(this, arguments) : this;\r
+ if (this.options && this.options.initialize) this.options.initialize.call(this);\r
+\r
+ return self;\r
+ };\r
+\r
+ $extend(klass, this);\r
+ klass.constructor = Class;\r
+ klass.prototype = properties;\r
+ return klass;\r
+ }\r
+\r
+});\r
+\r
+Class.implement({\r
+\r
+ implement: function(){\r
+ Class.Mutators.Implements(this.prototype, Array.slice(arguments));\r
+ return this;\r
+ }\r
+\r
+});\r
+\r
+Class.Mutators = {};\r
+\r
+Class.Mutators.Implements = function(self, klasses){\r
+ $splat(klasses).each(function(klass){\r
+ $extend(self, ($type(klass) == 'class') ? new klass($empty) : klass);\r
+ });\r
+};\r
+\r
+Class.Mutators.Extends = function(self, klass){\r
+ \r
+ var instance = new klass($empty);\r
+ \r
+ delete instance.parent;\r
+ delete instance.parentOf;\r
+ \r
+ for (var key in instance){\r
+\r
+ var current = self[key], previous = instance[key];\r
+ \r
+ if (current == undefined){\r
+ self[key] = previous;\r
+ continue;\r
+ }\r
+\r
+ var ctype = $type(current), ptype = $type(previous);\r
+ \r
+ if (ctype != ptype) continue;\r
+ \r
+ switch (ctype){\r
+ case 'function': \r
+ \r
+ // opera does not support function.caller, so we replace the function code with brute force. Not pretty, but its just for opera.\r
+ // if future opera versions will support function.caller, this code wont be executed anymore.\r
+ // this code will be only executed if the current browser does not support function.caller (only opera).\r
+ // there is also a fix for an opera bug where in the function string, parentheses around numbers are ignored, and an error is thrown.\r
+ \r
+ if (!arguments.callee.caller) self[key] = eval('(' + String(current).replace(/\bthis\.parent\(\s*(\))?/g, function(full, close){\r
+ return 'arguments.callee._parent_.call(this' + (close || ', ');\r
+ }).replace(/(\d+)\.([A-Za-z_])/g, '($1).$2') + ')');\r
+ \r
+ // end "opera" code\r
+ \r
+ self[key]._parent_ = previous;\r
+ break;\r
+ case 'object': self[key] = $merge(previous, current);\r
+ }\r
+ \r
+ }\r
+ \r
+ self.parent = function(){\r
+ return arguments.callee.caller._parent_.apply(this, arguments);\r
+ };\r
+ \r
+ self.parentOf = function(descendant){\r
+ return descendant._parent_.apply(this, Array.slice(arguments, 1));\r
+ };\r
+\r
+};/*\r
+Script: Class.Extras.js\r
+ Contains Utility Classes that can be implemented into your own Classes to ease the execution of many common tasks.\r
+\r
+License:\r
+ MIT-style license.\r
+*/\r
+\r
+var Chain = new Class({\r
+\r
+ chain: function(){\r
+ this.$chain = (this.$chain || []).extend(arguments);\r
+ return this;\r
+ },\r
+\r
+ callChain: function(){\r
+ return (this.$chain && this.$chain.length) ? this.$chain.shift().apply(this, arguments) : false;\r
+ },\r
+\r
+ clearChain: function(){\r
+ if (this.$chain) this.$chain.empty();\r
+ return this;\r
+ }\r
+\r
+});\r
+\r
+var Events = new Class({\r
+\r
+ addEvent: function(type, fn, internal){\r
+ if (fn != $empty){\r
+ this.$events = this.$events || {};\r
+ this.$events[type] = this.$events[type] || [];\r
+ this.$events[type].include(fn);\r
+ if (internal) fn.internal = true;\r
+ }\r
+ return this;\r
+ },\r
+\r
+ addEvents: function(events){\r
+ for (var type in events) this.addEvent(type, events[type]);\r
+ return this;\r
+ },\r
+\r
+ fireEvent: function(type, args, delay){\r
+ if (!this.$events || !this.$events[type]) return this;\r
+ this.$events[type].each(function(fn){\r
+ fn.create({'bind': this, 'delay': delay, 'arguments': args})();\r
+ }, this);\r
+ return this;\r
+ },\r
+\r
+ removeEvent: function(type, fn){\r
+ if (!this.$events || !this.$events[type]) return this;\r
+ if (!fn.internal) this.$events[type].erase(fn);\r
+ return this;\r
+ },\r
+\r
+ removeEvents: function(type){\r
+ for (var e in this.$events){\r
+ if (type && type != e) continue;\r
+ var fns = this.$events[e];\r
+ for (var i = fns.length; i--; i) this.removeEvent(e, fns[i]);\r
+ }\r
+ return this;\r
+ }\r
+\r
+});\r
+\r
+var Options = new Class({\r
+\r
+ setOptions: function(){\r
+ this.options = $merge.run([this.options].extend(arguments));\r
+ if (!this.addEvent) return this;\r
+ for (var option in this.options){\r
+ if ($type(this.options[option]) != 'function' || !(/^on[A-Z]/).test(option)) continue;\r
+ this.addEvent(option, this.options[option]);\r
+ delete this.options[option];\r
+ }\r
+ return this;\r
+ }\r
+\r
+});/*\r
+Script: Element.js\r
+ One of the most important items in MooTools. Contains the dollar function, the dollars function, and an handful of cross-browser,\r
+ time-saver methods to let you easily work with HTML Elements.\r
+\r
+License:\r
+ MIT-style license.\r
+*/\r
+\r
+Document.implement({\r
+\r
+ newElement: function(tag, props){\r
+ if (Browser.Engine.trident && props){\r
+ ['name', 'type', 'checked'].each(function(attribute){\r
+ if (!props[attribute]) return;\r
+ tag += ' ' + attribute + '="' + props[attribute] + '"';\r
+ if (attribute != 'checked') delete props[attribute];\r
+ });\r
+ tag = '<' + tag + '>';\r
+ }\r
+ return $.element(this.createElement(tag)).set(props);\r
+ },\r
+\r
+ newTextNode: function(text){\r
+ return this.createTextNode(text);\r
+ },\r
+\r
+ getDocument: function(){\r
+ return this;\r
+ },\r
+\r
+ getWindow: function(){\r
+ return this.defaultView || this.parentWindow;\r
+ },\r
+\r
+ purge: function(){\r
+ var elements = this.getElementsByTagName('*');\r
+ for (var i = 0, l = elements.length; i < l; i++) Browser.freeMem(elements[i]);\r
+ }\r
+\r
+});\r
+\r
+var Element = new Native({\r
+\r
+ name: 'Element',\r
+\r
+ legacy: window.Element,\r
+\r
+ initialize: function(tag, props){\r
+ var konstructor = Element.Constructors.get(tag);\r
+ if (konstructor) return konstructor(props);\r
+ if (typeof tag == 'string') return document.newElement(tag, props);\r
+ return $(tag).set(props);\r
+ },\r
+\r
+ afterImplement: function(key, value){\r
+ if (!Array[key]) Elements.implement(key, Elements.multi(key));\r
+ Element.Prototype[key] = value;\r
+ }\r
+\r
+});\r
+\r
+Element.Prototype = {$family: {name: 'element'}};\r
+\r
+Element.Constructors = new Hash;\r
+\r
+var IFrame = new Native({\r
+\r
+ name: 'IFrame',\r
+\r
+ generics: false,\r
+\r
+ initialize: function(){\r
+ var params = Array.link(arguments, {properties: Object.type, iframe: $defined});\r
+ var props = params.properties || {};\r
+ var iframe = $(params.iframe) || false;\r
+ var onload = props.onload || $empty;\r
+ delete props.onload;\r
+ props.id = props.name = $pick(props.id, props.name, iframe.id, iframe.name, 'IFrame_' + $time());\r
+ iframe = new Element(iframe || 'iframe', props);\r
+ var onFrameLoad = function(){\r
+ var host = $try(function(){\r
+ return iframe.contentWindow.location.host;\r
+ });\r
+ if (host && host == window.location.host){\r
+ var win = new Window(iframe.contentWindow);\r
+ var doc = new Document(iframe.contentWindow.document);\r
+ $extend(win.Element.prototype, Element.Prototype);\r
+ }\r
+ onload.call(iframe.contentWindow, iframe.contentWindow.document);\r
+ };\r
+ (!window.frames[props.id]) ? iframe.addListener('load', onFrameLoad) : onFrameLoad();\r
+ return iframe;\r
+ }\r
+\r
+});\r
+\r
+var Elements = new Native({\r
+\r
+ initialize: function(elements, options){\r
+ options = $extend({ddup: true, cash: true}, options);\r
+ elements = elements || [];\r
+ if (options.ddup || options.cash){\r
+ var uniques = {}, returned = [];\r
+ for (var i = 0, l = elements.length; i < l; i++){\r
+ var el = $.element(elements[i], !options.cash);\r
+ if (options.ddup){\r
+ if (uniques[el.uid]) continue;\r
+ uniques[el.uid] = true;\r
+ }\r
+ returned.push(el);\r
+ }\r
+ elements = returned;\r
+ }\r
+ return (options.cash) ? $extend(elements, this) : elements;\r
+ }\r
+\r
+});\r
+\r
+Elements.implement({\r
+\r
+ filter: function(filter, bind){\r
+ if (!filter) return this;\r
+ return new Elements(Array.filter(this, (typeof filter == 'string') ? function(item){\r
+ return item.match(filter);\r
+ } : filter, bind));\r
+ }\r
+\r
+});\r
+\r
+Elements.multi = function(property){\r
+ return function(){\r
+ var items = [];\r
+ var elements = true;\r
+ for (var i = 0, j = this.length; i < j; i++){\r
+ var returns = this[i][property].apply(this[i], arguments);\r
+ items.push(returns);\r
+ if (elements) elements = ($type(returns) == 'element');\r
+ }\r
+ return (elements) ? new Elements(items) : items;\r
+ };\r
+};\r
+\r
+Window.implement({\r
+\r
+ $: function(el, nocash){\r
+ if (el && el.$family && el.uid) return el;\r
+ var type = $type(el);\r
+ return ($[type]) ? $[type](el, nocash, this.document) : null;\r
+ },\r
+\r
+ $$: function(selector){\r
+ if (arguments.length == 1 && typeof selector == 'string') return this.document.getElements(selector);\r
+ var elements = [];\r
+ var args = Array.flatten(arguments);\r
+ for (var i = 0, l = args.length; i < l; i++){\r
+ var item = args[i];\r
+ switch ($type(item)){\r
+ case 'element': item = [item]; break;\r
+ case 'string': item = this.document.getElements(item, true); break;\r
+ default: item = false;\r
+ }\r
+ if (item) elements.extend(item);\r
+ }\r
+ return new Elements(elements);\r
+ },\r
+\r
+ getDocument: function(){\r
+ return this.document;\r
+ },\r
+\r
+ getWindow: function(){\r
+ return this;\r
+ }\r
+\r
+});\r
+\r
+$.string = function(id, nocash, doc){\r
+ id = doc.getElementById(id);\r
+ return (id) ? $.element(id, nocash) : null;\r
+};\r
+\r
+$.element = function(el, nocash){\r
+ $uid(el);\r
+ if (!nocash && !el.$family && !(/^object|embed$/i).test(el.tagName)){\r
+ var proto = Element.Prototype;\r
+ for (var p in proto) el[p] = proto[p];\r
+ };\r
+ return el;\r
+};\r
+\r
+$.object = function(obj, nocash, doc){\r
+ if (obj.toElement) return $.element(obj.toElement(doc), nocash);\r
+ return null;\r
+};\r
+\r
+$.textnode = $.whitespace = $.window = $.document = $arguments(0);\r
+\r
+Native.implement([Element, Document], {\r
+\r
+ getElement: function(selector, nocash){\r
+ return $(this.getElements(selector, true)[0] || null, nocash);\r
+ },\r
+\r
+ getElements: function(tags, nocash){\r
+ tags = tags.split(',');\r
+ var elements = [];\r
+ var ddup = (tags.length > 1);\r
+ tags.each(function(tag){\r
+ var partial = this.getElementsByTagName(tag.trim());\r
+ (ddup) ? elements.extend(partial) : elements = partial;\r
+ }, this);\r
+ return new Elements(elements, {ddup: ddup, cash: !nocash});\r
+ }\r
+\r
+});\r
+\r
+Element.Storage = {\r
+\r
+ get: function(uid){\r
+ return (this[uid] || (this[uid] = {}));\r
+ }\r
+\r
+};\r
+\r
+Element.Inserters = new Hash({\r
+\r
+ before: function(context, element){\r
+ if (element.parentNode) element.parentNode.insertBefore(context, element);\r
+ },\r
+\r
+ after: function(context, element){\r
+ if (!element.parentNode) return;\r
+ var next = element.nextSibling;\r
+ (next) ? element.parentNode.insertBefore(context, next) : element.parentNode.appendChild(context);\r
+ },\r
+\r
+ bottom: function(context, element){\r
+ element.appendChild(context);\r
+ },\r
+\r
+ top: function(context, element){\r
+ var first = element.firstChild;\r
+ (first) ? element.insertBefore(context, first) : element.appendChild(context);\r
+ }\r
+\r
+});\r
+\r
+Element.Inserters.inside = Element.Inserters.bottom;\r
+\r
+Element.Inserters.each(function(value, key){\r
+\r
+ var Key = key.capitalize();\r
+\r
+ Element.implement('inject' + Key, function(el){\r
+ value(this, $(el, true));\r
+ return this;\r
+ });\r
+\r
+ Element.implement('grab' + Key, function(el){\r
+ value($(el, true), this);\r
+ return this;\r
+ });\r
+\r
+});\r
+\r
+Element.implement({\r
+\r
+ getDocument: function(){\r
+ return this.ownerDocument;\r
+ },\r
+\r
+ getWindow: function(){\r
+ return this.ownerDocument.getWindow();\r
+ },\r
+\r
+ getElementById: function(id, nocash){\r
+ var el = this.ownerDocument.getElementById(id);\r
+ if (!el) return null;\r
+ for (var parent = el.parentNode; parent != this; parent = parent.parentNode){\r
+ if (!parent) return null;\r
+ }\r
+ return $.element(el, nocash);\r
+ },\r
+\r
+ set: function(prop, value){\r
+ switch ($type(prop)){\r
+ case 'object':\r
+ for (var p in prop) this.set(p, prop[p]);\r
+ break;\r
+ case 'string':\r
+ var property = Element.Properties.get(prop);\r
+ (property && property.set) ? property.set.apply(this, Array.slice(arguments, 1)) : this.setProperty(prop, value);\r
+ }\r
+ return this;\r
+ },\r
+\r
+ get: function(prop){\r
+ var property = Element.Properties.get(prop);\r
+ return (property && property.get) ? property.get.apply(this, Array.slice(arguments, 1)) : this.getProperty(prop);\r
+ },\r
+\r
+ erase: function(prop){\r
+ var property = Element.Properties.get(prop);\r
+ (property && property.erase) ? property.erase.apply(this, Array.slice(arguments, 1)) : this.removeProperty(prop);\r
+ return this;\r
+ },\r
+\r
+ match: function(tag){\r
+ return (!tag || Element.get(this, 'tag') == tag);\r
+ },\r
+\r
+ inject: function(el, where){\r
+ Element.Inserters.get(where || 'bottom')(this, $(el, true));\r
+ return this;\r
+ },\r
+\r
+ wraps: function(el, where){\r
+ el = $(el, true);\r
+ return this.replaces(el).grab(el, where);\r
+ },\r
+\r
+ grab: function(el, where){\r
+ Element.Inserters.get(where || 'bottom')($(el, true), this);\r
+ return this;\r
+ },\r
+\r
+ appendText: function(text, where){\r
+ return this.grab(this.getDocument().newTextNode(text), where);\r
+ },\r
+\r
+ adopt: function(){\r
+ Array.flatten(arguments).each(function(element){\r
+ element = $(element, true);\r
+ if (element) this.appendChild(element);\r
+ }, this);\r
+ return this;\r
+ },\r
+\r
+ dispose: function(){\r
+ return (this.parentNode) ? this.parentNode.removeChild(this) : this;\r
+ },\r
+\r
+ clone: function(contents, keepid){\r
+ switch ($type(this)){\r
+ case 'element':\r
+ var attributes = {};\r
+ for (var j = 0, l = this.attributes.length; j < l; j++){\r
+ var attribute = this.attributes[j], key = attribute.nodeName.toLowerCase();\r
+ var value = (key == 'style' && this.style) ? this.style.cssText : attribute.nodeValue;\r
+ if (!$chk(value) || key == 'uid' || (key == 'id' && !keepid)) continue;\r
+ if (value != 'inherit' && ['string', 'number'].contains($type(value))) attributes[key] = value;\r
+ }\r
+ var element = new Element(this.nodeName.toLowerCase(), attributes);\r
+ if (contents !== false){\r
+ for (var i = 0, k = this.childNodes.length; i < k; i++){\r
+ var child = Element.clone(this.childNodes[i], true, keepid);\r
+ if (child) element.grab(child);\r
+ }\r
+ }\r
+ return element;\r
+ case 'textnode': return document.newTextNode(this.nodeValue);\r
+ }\r
+ return null;\r
+ },\r
+\r
+ replaces: function(el){\r
+ el = $(el, true);\r
+ el.parentNode.replaceChild(this, el);\r
+ return this;\r
+ },\r
+\r
+ hasClass: function(className){\r
+ return this.className.contains(className, ' ');\r
+ },\r
+\r
+ addClass: function(className){\r
+ if (!this.hasClass(className)) this.className = (this.className + ' ' + className).clean();\r
+ return this;\r
+ },\r
+\r
+ removeClass: function(className){\r
+ this.className = this.className.replace(new RegExp('(^|\\s)' + className + '(?:\\s|$)'), '$1').clean();\r
+ return this;\r
+ },\r
+\r
+ toggleClass: function(className){\r
+ return this.hasClass(className) ? this.removeClass(className) : this.addClass(className);\r
+ },\r
+\r
+ getComputedStyle: function(property){\r
+ if (this.currentStyle) return this.currentStyle[property.camelCase()];\r
+ var computed = this.getWindow().getComputedStyle(this, null);\r
+ return (computed) ? computed.getPropertyValue([property.hyphenate()]) : null;\r
+ },\r
+\r
+ empty: function(){\r
+ $A(this.childNodes).each(function(node){\r
+ Browser.freeMem(node);\r
+ Element.empty(node);\r
+ Element.dispose(node);\r
+ }, this);\r
+ return this;\r
+ },\r
+\r
+ destroy: function(){\r
+ Browser.freeMem(this.empty().dispose());\r
+ return null;\r
+ },\r
+\r
+ getSelected: function(){\r
+ return new Elements($A(this.options).filter(function(option){\r
+ return option.selected;\r
+ }));\r
+ },\r
+\r
+ toQueryString: function(){\r
+ var queryString = [];\r
+ this.getElements('input, select, textarea').each(function(el){\r
+ if (!el.name || el.disabled) return;\r
+ var value = (el.tagName.toLowerCase() == 'select') ? Element.getSelected(el).map(function(opt){\r
+ return opt.value;\r
+ }) : ((el.type == 'radio' || el.type == 'checkbox') && !el.checked) ? null : el.value;\r
+ $splat(value).each(function(val){\r
+ if (val) queryString.push(el.name + '=' + encodeURIComponent(val));\r
+ });\r
+ });\r
+ return queryString.join('&');\r
+ },\r
+\r
+ getProperty: function(attribute){\r
+ var EA = Element.Attributes, key = EA.Props[attribute];\r
+ var value = (key) ? this[key] : this.getAttribute(attribute, 2);\r
+ return (EA.Bools[attribute]) ? !!value : (key) ? value : value || null;\r
+ },\r
+\r
+ getProperties: function(){\r
+ var args = $A(arguments);\r
+ return args.map(function(attr){\r
+ return this.getProperty(attr);\r
+ }, this).associate(args);\r
+ },\r
+\r
+ setProperty: function(attribute, value){\r
+ var EA = Element.Attributes, key = EA.Props[attribute], hasValue = $defined(value);\r
+ if (key && EA.Bools[attribute]) value = (value || !hasValue) ? true : false;\r
+ else if (!hasValue) return this.removeProperty(attribute);\r
+ (key) ? this[key] = value : this.setAttribute(attribute, value);\r
+ return this;\r
+ },\r
+\r
+ setProperties: function(attributes){\r
+ for (var attribute in attributes) this.setProperty(attribute, attributes[attribute]);\r
+ return this;\r
+ },\r
+\r
+ removeProperty: function(attribute){\r
+ var EA = Element.Attributes, key = EA.Props[attribute], isBool = (key && EA.Bools[attribute]);\r
+ (key) ? this[key] = (isBool) ? false : '' : this.removeAttribute(attribute);\r
+ return this;\r
+ },\r
+\r
+ removeProperties: function(){\r
+ Array.each(arguments, this.removeProperty, this);\r
+ return this;\r
+ }\r
+\r
+});\r
+\r
+(function(){\r
+\r
+var walk = function(element, walk, start, match, all, nocash){\r
+ var el = element[start || walk];\r
+ var elements = [];\r
+ while (el){\r
+ if (el.nodeType == 1 && (!match || Element.match(el, match))){\r
+ elements.push(el);\r
+ if (!all) break;\r
+ }\r
+ el = el[walk];\r
+ }\r
+ return (all) ? new Elements(elements, {ddup: false, cash: !nocash}) : $(elements[0], nocash);\r
+};\r
+\r
+Element.implement({\r
+\r
+ getPrevious: function(match, nocash){\r
+ return walk(this, 'previousSibling', null, match, false, nocash);\r
+ },\r
+\r
+ getAllPrevious: function(match, nocash){\r
+ return walk(this, 'previousSibling', null, match, true, nocash);\r
+ },\r
+\r
+ getNext: function(match, nocash){\r
+ return walk(this, 'nextSibling', null, match, false, nocash);\r
+ },\r
+\r
+ getAllNext: function(match, nocash){\r
+ return walk(this, 'nextSibling', null, match, true, nocash);\r
+ },\r
+\r
+ getFirst: function(match, nocash){\r
+ return walk(this, 'nextSibling', 'firstChild', match, false, nocash);\r
+ },\r
+\r
+ getLast: function(match, nocash){\r
+ return walk(this, 'previousSibling', 'lastChild', match, false, nocash);\r
+ },\r
+\r
+ getParent: function(match, nocash){\r
+ return walk(this, 'parentNode', null, match, false, nocash);\r
+ },\r
+\r
+ getParents: function(match, nocash){\r
+ return walk(this, 'parentNode', null, match, true, nocash);\r
+ },\r
+\r
+ getChildren: function(match, nocash){\r
+ return walk(this, 'nextSibling', 'firstChild', match, true, nocash);\r
+ },\r
+\r
+ hasChild: function(el){\r
+ el = $(el, true);\r
+ return (!!el && $A(this.getElementsByTagName(el.tagName)).contains(el));\r
+ }\r
+\r
+});\r
+\r
+})();\r
+\r
+Element.Properties = new Hash;\r
+\r
+Element.Properties.style = {\r
+\r
+ set: function(style){\r
+ this.style.cssText = style;\r
+ },\r
+\r
+ get: function(){\r
+ return this.style.cssText;\r
+ },\r
+\r
+ erase: function(){\r
+ this.style.cssText = '';\r
+ }\r
+\r
+};\r
+\r
+Element.Properties.tag = {get: function(){\r
+ return this.tagName.toLowerCase();\r
+}};\r
+\r
+Element.Properties.href = {get: function(){\r
+ return (!this.href) ? null : this.href.replace(new RegExp('^' + document.location.protocol + '\/\/' + document.location.host), '');\r
+}};\r
+\r
+Element.Properties.html = {set: function(){\r
+ return this.innerHTML = Array.flatten(arguments).join('');\r
+}};\r
+\r
+Native.implement([Element, Window, Document], {\r
+\r
+ addListener: function(type, fn){\r
+ if (this.addEventListener) this.addEventListener(type, fn, false);\r
+ else this.attachEvent('on' + type, fn);\r
+ return this;\r
+ },\r
+\r
+ removeListener: function(type, fn){\r
+ if (this.removeEventListener) this.removeEventListener(type, fn, false);\r
+ else this.detachEvent('on' + type, fn);\r
+ return this;\r
+ },\r
+\r
+ retrieve: function(property, dflt){\r
+ var storage = Element.Storage.get(this.uid);\r
+ var prop = storage[property];\r
+ if ($defined(dflt) && !$defined(prop)) prop = storage[property] = dflt;\r
+ return $pick(prop);\r
+ },\r
+\r
+ store: function(property, value){\r
+ var storage = Element.Storage.get(this.uid);\r
+ storage[property] = value;\r
+ return this;\r
+ },\r
+\r
+ eliminate: function(property){\r
+ var storage = Element.Storage.get(this.uid);\r
+ delete storage[property];\r
+ return this;\r
+ }\r
+\r
+});\r
+\r
+Element.Attributes = new Hash({\r
+ Props: {'html': 'innerHTML', 'class': 'className', 'for': 'htmlFor', 'text': (Browser.Engine.trident) ? 'innerText' : 'textContent'},\r
+ Bools: ['compact', 'nowrap', 'ismap', 'declare', 'noshade', 'checked', 'disabled', 'readonly', 'multiple', 'selected', 'noresize', 'defer'],\r
+ Camels: ['value', 'accessKey', 'cellPadding', 'cellSpacing', 'colSpan', 'frameBorder', 'maxLength', 'readOnly', 'rowSpan', 'tabIndex', 'useMap']\r
+});\r
+\r
+Browser.freeMem = function(item){\r
+ if (!item) return;\r
+ if (Browser.Engine.trident && (/object/i).test(item.tagName)){\r
+ for (var p in item){\r
+ if (typeof item[p] == 'function') item[p] = $empty;\r
+ }\r
+ Element.dispose(item);\r
+ }\r
+ if (item.uid && item.removeEvents) item.removeEvents();\r
+};\r
+\r
+(function(EA){\r
+\r
+ var EAB = EA.Bools, EAC = EA.Camels;\r
+ EA.Bools = EAB = EAB.associate(EAB);\r
+ Hash.extend(Hash.combine(EA.Props, EAB), EAC.associate(EAC.map(function(v){\r
+ return v.toLowerCase();\r
+ })));\r
+ EA.erase('Camels');\r
+\r
+})(Element.Attributes);\r
+\r
+window.addListener('unload', function(){\r
+ window.removeListener('unload', arguments.callee);\r
+ document.purge();\r
+ if (Browser.Engine.trident) CollectGarbage();\r
+});/*\r
+Script: Element.Event.js\r
+ Contains Element methods for dealing with events, and custom Events.\r
+\r
+License:\r
+ MIT-style license.\r
+*/\r
+\r
+Element.Properties.events = {set: function(events){\r
+ this.addEvents(events);\r
+}};\r
+\r
+Native.implement([Element, Window, Document], {\r
+\r
+ addEvent: function(type, fn){\r
+ var events = this.retrieve('events', {});\r
+ events[type] = events[type] || {'keys': [], 'values': []};\r
+ if (events[type].keys.contains(fn)) return this;\r
+ events[type].keys.push(fn);\r
+ var realType = type, custom = Element.Events.get(type), condition = fn, self = this;\r
+ if (custom){\r
+ if (custom.onAdd) custom.onAdd.call(this, fn);\r
+ if (custom.condition){\r
+ condition = function(event){\r
+ if (custom.condition.call(this, event)) return fn.call(this, event);\r
+ return false;\r
+ };\r
+ }\r
+ realType = custom.base || realType;\r
+ }\r
+ var defn = function(){\r
+ return fn.call(self);\r
+ };\r
+ var nativeEvent = Element.NativeEvents[realType] || 0;\r
+ if (nativeEvent){\r
+ if (nativeEvent == 2){\r
+ defn = function(event){\r
+ event = new Event(event, self.getWindow());\r
+ if (condition.call(self, event) === false) event.stop();\r
+ };\r
+ }\r
+ this.addListener(realType, defn);\r
+ }\r
+ events[type].values.push(defn);\r
+ return this;\r
+ },\r
+\r
+ removeEvent: function(type, fn){\r
+ var events = this.retrieve('events');\r
+ if (!events || !events[type]) return this;\r
+ var pos = events[type].keys.indexOf(fn);\r
+ if (pos == -1) return this;\r
+ var key = events[type].keys.splice(pos, 1)[0];\r
+ var value = events[type].values.splice(pos, 1)[0];\r
+ var custom = Element.Events.get(type);\r
+ if (custom){\r
+ if (custom.onRemove) custom.onRemove.call(this, fn);\r
+ type = custom.base || type;\r
+ }\r
+ return (Element.NativeEvents[type]) ? this.removeListener(type, value) : this;\r
+ },\r
+\r
+ addEvents: function(events){\r
+ for (var event in events) this.addEvent(event, events[event]);\r
+ return this;\r
+ },\r
+\r
+ removeEvents: function(type){\r
+ var events = this.retrieve('events');\r
+ if (!events) return this;\r
+ if (!type){\r
+ for (var evType in events) this.removeEvents(evType);\r
+ events = null;\r
+ } else if (events[type]){\r
+ while (events[type].keys[0]) this.removeEvent(type, events[type].keys[0]);\r
+ events[type] = null;\r
+ }\r
+ return this;\r
+ },\r
+\r
+ fireEvent: function(type, args, delay){\r
+ var events = this.retrieve('events');\r
+ if (!events || !events[type]) return this;\r
+ events[type].keys.each(function(fn){\r
+ fn.create({'bind': this, 'delay': delay, 'arguments': args})();\r
+ }, this);\r
+ return this;\r
+ },\r
+\r
+ cloneEvents: function(from, type){\r
+ from = $(from);\r
+ var fevents = from.retrieve('events');\r
+ if (!fevents) return this;\r
+ if (!type){\r
+ for (var evType in fevents) this.cloneEvents(from, evType);\r
+ } else if (fevents[type]){\r
+ fevents[type].keys.each(function(fn){\r
+ this.addEvent(type, fn);\r
+ }, this);\r
+ }\r
+ return this;\r
+ }\r
+\r
+});\r
+\r
+Element.NativeEvents = {\r
+ click: 2, dblclick: 2, mouseup: 2, mousedown: 2, contextmenu: 2, //mouse buttons\r
+ mousewheel: 2, DOMMouseScroll: 2, //mouse wheel\r
+ mouseover: 2, mouseout: 2, mousemove: 2, selectstart: 2, selectend: 2, //mouse movement\r
+ keydown: 2, keypress: 2, keyup: 2, //keyboard\r
+ focus: 2, blur: 2, change: 2, reset: 2, select: 2, submit: 2, //form elements\r
+ load: 1, unload: 1, beforeunload: 2, resize: 1, move: 1, DOMContentLoaded: 1, readystatechange: 1, //window\r
+ error: 1, abort: 1, scroll: 1 //misc\r
+};\r
+\r
+(function(){\r
+\r
+var $check = function(event){\r
+ var related = event.relatedTarget;\r
+ if (related == undefined) return true;\r
+ if (related === false) return false;\r
+ return ($type(this) != 'document' && related != this && related.prefix != 'xul' && !this.hasChild(related));\r
+};\r
+\r
+Element.Events = new Hash({\r
+\r
+ mouseenter: {\r
+ base: 'mouseover',\r
+ condition: $check\r
+ },\r
+\r
+ mouseleave: {\r
+ base: 'mouseout',\r
+ condition: $check\r
+ },\r
+\r
+ mousewheel: {\r
+ base: (Browser.Engine.gecko) ? 'DOMMouseScroll' : 'mousewheel'\r
+ }\r
+\r
+});\r
+\r
+})();/*\r
+Script: Element.Style.js\r
+ Contains methods for interacting with the styles of Elements in a fashionable way.\r
+\r
+License:\r
+ MIT-style license.\r
+*/\r
+\r
+Element.Properties.styles = {set: function(styles){\r
+ this.setStyles(styles);\r
+}};\r
+\r
+Element.Properties.opacity = {\r
+\r
+ set: function(opacity, novisibility){\r
+ if (!novisibility){\r
+ if (opacity == 0){\r
+ if (this.style.visibility != 'hidden') this.style.visibility = 'hidden';\r
+ } else {\r
+ if (this.style.visibility != 'visible') this.style.visibility = 'visible';\r
+ }\r
+ }\r
+ if (!this.currentStyle || !this.currentStyle.hasLayout) this.style.zoom = 1;\r
+ if (Browser.Engine.trident) this.style.filter = (opacity == 1) ? '' : 'alpha(opacity=' + opacity * 100 + ')';\r
+ this.style.opacity = opacity;\r
+ this.store('opacity', opacity);\r
+ },\r
+\r
+ get: function(){\r
+ return this.retrieve('opacity', 1);\r
+ }\r
+\r
+};\r
+\r
+Element.implement({\r
+ \r
+ setOpacity: function(value){\r
+ return this.set('opacity', value, true);\r
+ },\r
+ \r
+ getOpacity: function(){\r
+ return this.get('opacity');\r
+ },\r
+\r
+ setStyle: function(property, value){\r
+ switch (property){\r
+ case 'opacity': return this.set('opacity', parseFloat(value));\r
+ case 'float': property = (Browser.Engine.trident) ? 'styleFloat' : 'cssFloat';\r
+ }\r
+ property = property.camelCase();\r
+ if ($type(value) != 'string'){\r
+ var map = (Element.Styles.get(property) || '@').split(' ');\r
+ value = $splat(value).map(function(val, i){\r
+ if (!map[i]) return '';\r
+ return ($type(val) == 'number') ? map[i].replace('@', Math.round(val)) : val;\r
+ }).join(' ');\r
+ } else if (value == String(Number(value))){\r
+ value = Math.round(value);\r
+ }\r
+ this.style[property] = value;\r
+ return this;\r
+ },\r
+\r
+ getStyle: function(property){\r
+ switch (property){\r
+ case 'opacity': return this.get('opacity');\r
+ case 'float': property = (Browser.Engine.trident) ? 'styleFloat' : 'cssFloat';\r
+ }\r
+ property = property.camelCase();\r
+ var result = this.style[property];\r
+ if (!$chk(result)){\r
+ result = [];\r
+ for (var style in Element.ShortStyles){\r
+ if (property != style) continue;\r
+ for (var s in Element.ShortStyles[style]) result.push(this.getStyle(s));\r
+ return result.join(' ');\r
+ }\r
+ result = this.getComputedStyle(property);\r
+ }\r
+ if (result){\r
+ result = String(result);\r
+ var color = result.match(/rgba?\([\d\s,]+\)/);\r
+ if (color) result = result.replace(color[0], color[0].rgbToHex());\r
+ }\r
+ if (Browser.Engine.presto || (Browser.Engine.trident && !$chk(parseInt(result)))){\r
+ if (property.test(/^(height|width)$/)){\r
+ var values = (property == 'width') ? ['left', 'right'] : ['top', 'bottom'], size = 0;\r
+ values.each(function(value){\r
+ size += this.getStyle('border-' + value + '-width').toInt() + this.getStyle('padding-' + value).toInt();\r
+ }, this);\r
+ return this['offset' + property.capitalize()] - size + 'px';\r
+ }\r
+ if (Browser.Engine.presto && String(result).test('px')) return result;\r
+ if (property.test(/(border(.+)Width|margin|padding)/)) return '0px';\r
+ }\r
+ return result;\r
+ },\r
+\r
+ setStyles: function(styles){\r
+ for (var style in styles) this.setStyle(style, styles[style]);\r
+ return this;\r
+ },\r
+\r
+ getStyles: function(){\r
+ var result = {};\r
+ Array.each(arguments, function(key){\r
+ result[key] = this.getStyle(key);\r
+ }, this);\r
+ return result;\r
+ }\r
+\r
+});\r
+\r
+Element.Styles = new Hash({\r
+ left: '@px', top: '@px', bottom: '@px', right: '@px',\r
+ width: '@px', height: '@px', maxWidth: '@px', maxHeight: '@px', minWidth: '@px', minHeight: '@px',\r
+ backgroundColor: 'rgb(@, @, @)', backgroundPosition: '@px @px', color: 'rgb(@, @, @)',\r
+ fontSize: '@px', letterSpacing: '@px', lineHeight: '@px', clip: 'rect(@px @px @px @px)',\r
+ margin: '@px @px @px @px', padding: '@px @px @px @px', border: '@px @ rgb(@, @, @) @px @ rgb(@, @, @) @px @ rgb(@, @, @)',\r
+ borderWidth: '@px @px @px @px', borderStyle: '@ @ @ @', borderColor: 'rgb(@, @, @) rgb(@, @, @) rgb(@, @, @) rgb(@, @, @)',\r
+ zIndex: '@', 'zoom': '@', fontWeight: '@', textIndent: '@px', opacity: '@'\r
+});\r
+\r
+Element.ShortStyles = {margin: {}, padding: {}, border: {}, borderWidth: {}, borderStyle: {}, borderColor: {}};\r
+\r
+['Top', 'Right', 'Bottom', 'Left'].each(function(direction){\r
+ var Short = Element.ShortStyles;\r
+ var All = Element.Styles;\r
+ ['margin', 'padding'].each(function(style){\r
+ var sd = style + direction;\r
+ Short[style][sd] = All[sd] = '@px';\r
+ });\r
+ var bd = 'border' + direction;\r
+ Short.border[bd] = All[bd] = '@px @ rgb(@, @, @)';\r
+ var bdw = bd + 'Width', bds = bd + 'Style', bdc = bd + 'Color';\r
+ Short[bd] = {};\r
+ Short.borderWidth[bdw] = Short[bd][bdw] = All[bdw] = '@px';\r
+ Short.borderStyle[bds] = Short[bd][bds] = All[bds] = '@';\r
+ Short.borderColor[bdc] = Short[bd][bdc] = All[bdc] = 'rgb(@, @, @)';\r
+});\r
+/*\r
+Script: Element.Dimensions.js\r
+ Contains methods to work with size, scroll, or positioning of Elements and the window object.\r
+\r
+License:\r
+ MIT-style license.\r
+\r
+Credits:\r
+ - Element positioning based on the [qooxdoo](http://qooxdoo.org/) code and smart browser fixes, [LGPL License](http://www.gnu.org/licenses/lgpl.html).\r
+ - Viewport dimensions based on [YUI](http://developer.yahoo.com/yui/) code, [BSD License](http://developer.yahoo.com/yui/license.html).\r
+*/\r
+\r
+(function(){\r
+\r
+Element.implement({\r
+\r
+ scrollTo: function(x, y){\r
+ if (isBody(this)){\r
+ this.getWindow().scrollTo(x, y);\r
+ } else {\r
+ this.scrollLeft = x;\r
+ this.scrollTop = y;\r
+ }\r
+ return this;\r
+ },\r
+\r
+ getSize: function(){\r
+ if (isBody(this)) return this.getWindow().getSize();\r
+ return {x: this.offsetWidth, y: this.offsetHeight};\r
+ },\r
+\r
+ getScrollSize: function(){\r
+ if (isBody(this)) return this.getWindow().getScrollSize();\r
+ return {x: this.scrollWidth, y: this.scrollHeight};\r
+ },\r
+\r
+ getScroll: function(){\r
+ if (isBody(this)) return this.getWindow().getScroll();\r
+ return {x: this.scrollLeft, y: this.scrollTop};\r
+ },\r
+\r
+ getScrolls: function(){\r
+ var element = this, position = {x: 0, y: 0};\r
+ while (element && !isBody(element)){\r
+ position.x += element.scrollLeft;\r
+ position.y += element.scrollTop;\r
+ element = element.parentNode;\r
+ }\r
+ return position;\r
+ },\r
+\r
+ getOffsets: function(){\r
+ var element = this, position = {x: 0, y: 0};\r
+ if (isBody(this)) return position;\r
+\r
+ while (element && !isBody(element)){\r
+ position.x += element.offsetLeft;\r
+ position.y += element.offsetTop;\r
+\r
+ if (Browser.Engine.gecko){\r
+ if (!borderBox(element)){\r
+ position.x += leftBorder(element);\r
+ position.y += topBorder(element);\r
+ }\r
+ var parent = element.parentNode;\r
+ if (parent && styleString(parent, 'overflow') != 'visible'){\r
+ position.x += leftBorder(parent);\r
+ position.y += topBorder(parent);\r
+ }\r
+ } else if (element != this && (Browser.Engine.trident || Browser.Engine.webkit)){\r
+ position.x += leftBorder(element);\r
+ position.y += topBorder(element);\r
+ }\r
+\r
+ element = element.offsetParent;\r
+ if (Browser.Engine.trident){\r
+ while (element && !element.currentStyle.hasLayout) element = element.offsetParent;\r
+ }\r
+ }\r
+ if (Browser.Engine.gecko && !borderBox(this)){\r
+ position.x -= leftBorder(this);\r
+ position.y -= topBorder(this);\r
+ }\r
+ return position;\r
+ },\r
+\r
+ getPosition: function(relative){\r
+ if (isBody(this)) return {x: 0, y: 0};\r
+ var offset = this.getOffsets(), scroll = this.getScrolls();\r
+ var position = {x: offset.x - scroll.x, y: offset.y - scroll.y};\r
+ var relativePosition = (relative && (relative = $(relative))) ? relative.getPosition() : {x: 0, y: 0};\r
+ return {x: position.x - relativePosition.x, y: position.y - relativePosition.y};\r
+ },\r
+\r
+ getCoordinates: function(element){\r
+ if (isBody(this)) return this.getWindow().getCoordinates();\r
+ var position = this.getPosition(element), size = this.getSize();\r
+ var obj = {left: position.x, top: position.y, width: size.x, height: size.y};\r
+ obj.right = obj.left + obj.width;\r
+ obj.bottom = obj.top + obj.height;\r
+ return obj;\r
+ },\r
+\r
+ computePosition: function(obj){\r
+ return {left: obj.x - styleNumber(this, 'margin-left'), top: obj.y - styleNumber(this, 'margin-top')};\r
+ },\r
+\r
+ position: function(obj){\r
+ return this.setStyles(this.computePosition(obj));\r
+ }\r
+\r
+});\r
+\r
+Native.implement([Document, Window], {\r
+\r
+ getSize: function(){\r
+ var win = this.getWindow();\r
+ if (Browser.Engine.presto || Browser.Engine.webkit) return {x: win.innerWidth, y: win.innerHeight};\r
+ var doc = getCompatElement(this);\r
+ return {x: doc.clientWidth, y: doc.clientHeight};\r
+ },\r
+\r
+ getScroll: function(){\r
+ var win = this.getWindow();\r
+ var doc = getCompatElement(this);\r
+ return {x: win.pageXOffset || doc.scrollLeft, y: win.pageYOffset || doc.scrollTop};\r
+ },\r
+\r
+ getScrollSize: function(){\r
+ var doc = getCompatElement(this);\r
+ var min = this.getSize();\r
+ return {x: Math.max(doc.scrollWidth, min.x), y: Math.max(doc.scrollHeight, min.y)};\r
+ },\r
+\r
+ getPosition: function(){\r
+ return {x: 0, y: 0};\r
+ },\r
+\r
+ getCoordinates: function(){\r
+ var size = this.getSize();\r
+ return {top: 0, left: 0, bottom: size.y, right: size.x, height: size.y, width: size.x};\r
+ }\r
+\r
+});\r
+\r
+// private methods\r
+\r
+var styleString = Element.getComputedStyle;\r
+\r
+function styleNumber(element, style){\r
+ return styleString(element, style).toInt() || 0;\r
+};\r
+\r
+function borderBox(element){\r
+ return styleString(element, '-moz-box-sizing') == 'border-box';\r
+};\r
+\r
+function topBorder(element){\r
+ return styleNumber(element, 'border-top-width');\r
+};\r
+\r
+function leftBorder(element){\r
+ return styleNumber(element, 'border-left-width');\r
+};\r
+\r
+function isBody(element){\r
+ return (/^(?:body|html)$/i).test(element.tagName);\r
+};\r
+\r
+function getCompatElement(element){\r
+ var doc = element.getDocument();\r
+ return (!doc.compatMode || doc.compatMode == 'CSS1Compat') ? doc.html : doc.body;\r
+};\r
+\r
+})();\r
+\r
+//aliases\r
+\r
+Native.implement([Window, Document, Element], {\r
+\r
+ getHeight: function(){\r
+ return this.getSize().y;\r
+ },\r
+\r
+ getWidth: function(){\r
+ return this.getSize().x;\r
+ },\r
+\r
+ getScrollTop: function(){\r
+ return this.getScroll().y;\r
+ },\r
+\r
+ getScrollLeft: function(){\r
+ return this.getScroll().x;\r
+ },\r
+\r
+ getScrollHeight: function(){\r
+ return this.getScrollSize().y;\r
+ },\r
+\r
+ getScrollWidth: function(){\r
+ return this.getScrollSize().x;\r
+ },\r
+\r
+ getTop: function(){\r
+ return this.getPosition().y;\r
+ },\r
+\r
+ getLeft: function(){\r
+ return this.getPosition().x;\r
+ }\r
+\r
+});/*\r
+Script: Selectors.js\r
+ Adds advanced CSS Querying capabilities for targeting elements. Also includes pseudoselectors support.\r
+\r
+License:\r
+ MIT-style license.\r
+*/\r
+\r
+Native.implement([Document, Element], {\r
+ \r
+ getElements: function(expression, nocash){\r
+ expression = expression.split(',');\r
+ var items, local = {};\r
+ for (var i = 0, l = expression.length; i < l; i++){\r
+ var selector = expression[i], elements = Selectors.Utils.search(this, selector, local);\r
+ if (i != 0 && elements.item) elements = $A(elements);\r
+ items = (i == 0) ? elements : (items.item) ? $A(items).concat(elements) : items.concat(elements);\r
+ }\r
+ return new Elements(items, {ddup: (expression.length > 1), cash: !nocash});\r
+ }\r
+ \r
+});\r
+\r
+Element.implement({\r
+ \r
+ match: function(selector){\r
+ if (!selector) return true;\r
+ var tagid = Selectors.Utils.parseTagAndID(selector);\r
+ var tag = tagid[0], id = tagid[1];\r
+ if (!Selectors.Filters.byID(this, id) || !Selectors.Filters.byTag(this, tag)) return false;\r
+ var parsed = Selectors.Utils.parseSelector(selector);\r
+ return (parsed) ? Selectors.Utils.filter(this, parsed, {}) : true;\r
+ }\r
+ \r
+});\r
+\r
+var Selectors = {Cache: {nth: {}, parsed: {}}};\r
+\r
+Selectors.RegExps = {\r
+ id: (/#([\w-]+)/),\r
+ tag: (/^(\w+|\*)/),\r
+ quick: (/^(\w+|\*)$/),\r
+ splitter: (/\s*([+>~\s])\s*([a-zA-Z#.*:\[])/g),\r
+ combined: (/\.([\w-]+)|\[(\w+)(?:([!*^$~|]?=)["']?(.*?)["']?)?\]|:([\w-]+)(?:\(["']?(.*?)?["']?\)|$)/g)\r
+};\r
+\r
+Selectors.Utils = {\r
+ \r
+ chk: function(item, uniques){\r
+ if (!uniques) return true;\r
+ var uid = $uid(item);\r
+ if (!uniques[uid]) return uniques[uid] = true;\r
+ return false;\r
+ },\r
+ \r
+ parseNthArgument: function(argument){\r
+ if (Selectors.Cache.nth[argument]) return Selectors.Cache.nth[argument];\r
+ var parsed = argument.match(/^([+-]?\d*)?([a-z]+)?([+-]?\d*)?$/);\r
+ if (!parsed) return false;\r
+ var inta = parseInt(parsed[1]);\r
+ var a = (inta || inta === 0) ? inta : 1;\r
+ var special = parsed[2] || false;\r
+ var b = parseInt(parsed[3]) || 0;\r
+ if (a != 0){\r
+ b--;\r
+ while (b < 1) b += a;\r
+ while (b >= a) b -= a;\r
+ } else {\r
+ a = b;\r
+ special = 'index';\r
+ }\r
+ switch (special){\r
+ case 'n': parsed = {a: a, b: b, special: 'n'}; break;\r
+ case 'odd': parsed = {a: 2, b: 0, special: 'n'}; break;\r
+ case 'even': parsed = {a: 2, b: 1, special: 'n'}; break;\r
+ case 'first': parsed = {a: 0, special: 'index'}; break;\r
+ case 'last': parsed = {special: 'last-child'}; break;\r
+ case 'only': parsed = {special: 'only-child'}; break;\r
+ default: parsed = {a: (a - 1), special: 'index'};\r
+ }\r
+ \r
+ return Selectors.Cache.nth[argument] = parsed;\r
+ },\r
+ \r
+ parseSelector: function(selector){\r
+ if (Selectors.Cache.parsed[selector]) return Selectors.Cache.parsed[selector];\r
+ var m, parsed = {classes: [], pseudos: [], attributes: []};\r
+ while ((m = Selectors.RegExps.combined.exec(selector))){\r
+ var cn = m[1], an = m[2], ao = m[3], av = m[4], pn = m[5], pa = m[6];\r
+ if (cn){\r
+ parsed.classes.push(cn);\r
+ } else if (pn){\r
+ var parser = Selectors.Pseudo.get(pn);\r
+ if (parser) parsed.pseudos.push({parser: parser, argument: pa});\r
+ else parsed.attributes.push({name: pn, operator: '=', value: pa});\r
+ } else if (an){\r
+ parsed.attributes.push({name: an, operator: ao, value: av});\r
+ }\r
+ }\r
+ if (!parsed.classes.length) delete parsed.classes;\r
+ if (!parsed.attributes.length) delete parsed.attributes;\r
+ if (!parsed.pseudos.length) delete parsed.pseudos;\r
+ if (!parsed.classes && !parsed.attributes && !parsed.pseudos) parsed = null;\r
+ return Selectors.Cache.parsed[selector] = parsed;\r
+ },\r
+ \r
+ parseTagAndID: function(selector){\r
+ var tag = selector.match(Selectors.RegExps.tag);\r
+ var id = selector.match(Selectors.RegExps.id);\r
+ return [(tag) ? tag[1] : '*', (id) ? id[1] : false];\r
+ },\r
+ \r
+ filter: function(item, parsed, local){\r
+ var i;\r
+ if (parsed.classes){\r
+ for (i = parsed.classes.length; i--; i){\r
+ var cn = parsed.classes[i];\r
+ if (!Selectors.Filters.byClass(item, cn)) return false;\r
+ }\r
+ }\r
+ if (parsed.attributes){\r
+ for (i = parsed.attributes.length; i--; i){\r
+ var att = parsed.attributes[i];\r
+ if (!Selectors.Filters.byAttribute(item, att.name, att.operator, att.value)) return false;\r
+ }\r
+ }\r
+ if (parsed.pseudos){\r
+ for (i = parsed.pseudos.length; i--; i){\r
+ var psd = parsed.pseudos[i];\r
+ if (!Selectors.Filters.byPseudo(item, psd.parser, psd.argument, local)) return false;\r
+ }\r
+ }\r
+ return true;\r
+ },\r
+ \r
+ getByTagAndID: function(ctx, tag, id){\r
+ if (id){\r
+ var item = ctx.getElementById(id, true);\r
+ return (item && Selectors.Filters.byTag(item, tag)) ? [item] : [];\r
+ } else {\r
+ return ctx.getElementsByTagName(tag);\r
+ }\r
+ },\r
+ \r
+ search: function(self, expression, local){\r
+ var splitters = [];\r
+ \r
+ var selectors = expression.trim().replace(Selectors.RegExps.splitter, function(m0, m1, m2){\r
+ splitters.push(m1);\r
+ return ':)' + m2;\r
+ }).split(':)');\r
+ \r
+ var items, match, filtered, item;\r
+ \r
+ for (var i = 0, l = selectors.length; i < l; i++){\r
+ \r
+ var selector = selectors[i];\r
+ \r
+ if (i == 0 && Selectors.RegExps.quick.test(selector)){\r
+ items = self.getElementsByTagName(selector);\r
+ continue;\r
+ }\r
+ \r
+ var splitter = splitters[i - 1];\r
+ \r
+ var tagid = Selectors.Utils.parseTagAndID(selector);\r
+ var tag = tagid[0], id = tagid[1];\r
+\r
+ if (i == 0){\r
+ items = Selectors.Utils.getByTagAndID(self, tag, id);\r
+ } else {\r
+ var uniques = {}, found = [];\r
+ for (var j = 0, k = items.length; j < k; j++) found = Selectors.Getters[splitter](found, items[j], tag, id, uniques);\r
+ items = found;\r
+ }\r
+ \r
+ var parsed = Selectors.Utils.parseSelector(selector);\r
+ \r
+ if (parsed){\r
+ filtered = [];\r
+ for (var m = 0, n = items.length; m < n; m++){\r
+ item = items[m];\r
+ if (Selectors.Utils.filter(item, parsed, local)) filtered.push(item);\r
+ }\r
+ items = filtered;\r
+ }\r
+ \r
+ }\r
+ \r
+ return items;\r
+ \r
+ }\r
+ \r
+};\r
+\r
+Selectors.Getters = {\r
+ \r
+ ' ': function(found, self, tag, id, uniques){\r
+ var items = Selectors.Utils.getByTagAndID(self, tag, id);\r
+ for (var i = 0, l = items.length; i < l; i++){\r
+ var item = items[i];\r
+ if (Selectors.Utils.chk(item, uniques)) found.push(item);\r
+ }\r
+ return found;\r
+ },\r
+ \r
+ '>': function(found, self, tag, id, uniques){\r
+ var children = Selectors.Utils.getByTagAndID(self, tag, id);\r
+ for (var i = 0, l = children.length; i < l; i++){\r
+ var child = children[i];\r
+ if (child.parentNode == self && Selectors.Utils.chk(child, uniques)) found.push(child);\r
+ }\r
+ return found;\r
+ },\r
+ \r
+ '+': function(found, self, tag, id, uniques){\r
+ while ((self = self.nextSibling)){\r
+ if (self.nodeType == 1){\r
+ if (Selectors.Utils.chk(self, uniques) && Selectors.Filters.byTag(self, tag) && Selectors.Filters.byID(self, id)) found.push(self);\r
+ break;\r
+ }\r
+ }\r
+ return found;\r
+ },\r
+ \r
+ '~': function(found, self, tag, id, uniques){\r
+ \r
+ while ((self = self.nextSibling)){\r
+ if (self.nodeType == 1){\r
+ if (!Selectors.Utils.chk(self, uniques)) break;\r
+ if (Selectors.Filters.byTag(self, tag) && Selectors.Filters.byID(self, id)) found.push(self);\r
+ } \r
+ }\r
+ return found;\r
+ }\r
+ \r
+};\r
+\r
+Selectors.Filters = {\r
+ \r
+ byTag: function(self, tag){\r
+ return (tag == '*' || (self.tagName && self.tagName.toLowerCase() == tag));\r
+ },\r
+ \r
+ byID: function(self, id){\r
+ return (!id || (self.id && self.id == id));\r
+ },\r
+ \r
+ byClass: function(self, klass){\r
+ return (self.className && self.className.contains(klass, ' '));\r
+ },\r
+ \r
+ byPseudo: function(self, parser, argument, local){\r
+ return parser.call(self, argument, local);\r
+ },\r
+ \r
+ byAttribute: function(self, name, operator, value){\r
+ var result = Element.prototype.getProperty.call(self, name);\r
+ if (!result) return false;\r
+ if (!operator || value == undefined) return true;\r
+ switch (operator){\r
+ case '=': return (result == value);\r
+ case '*=': return (result.contains(value));\r
+ case '^=': return (result.substr(0, value.length) == value);\r
+ case '$=': return (result.substr(result.length - value.length) == value);\r
+ case '!=': return (result != value);\r
+ case '~=': return result.contains(value, ' ');\r
+ case '|=': return result.contains(value, '-');\r
+ }\r
+ return false;\r
+ }\r
+ \r
+};\r
+\r
+Selectors.Pseudo = new Hash({\r
+ \r
+ // w3c pseudo selectors\r
+ \r
+ empty: function(){\r
+ return !(this.innerText || this.textContent || '').length;\r
+ },\r
+ \r
+ not: function(selector){\r
+ return !Element.match(this, selector);\r
+ },\r
+ \r
+ contains: function(text){\r
+ return (this.innerText || this.textContent || '').contains(text);\r
+ },\r
+ \r
+ 'first-child': function(){\r
+ return Selectors.Pseudo.index.call(this, 0);\r
+ },\r
+ \r
+ 'last-child': function(){\r
+ var element = this;\r
+ while ((element = element.nextSibling)){\r
+ if (element.nodeType == 1) return false;\r
+ }\r
+ return true;\r
+ },\r
+ \r
+ 'only-child': function(){\r
+ var prev = this;\r
+ while ((prev = prev.previousSibling)){\r
+ if (prev.nodeType == 1) return false;\r
+ }\r
+ var next = this;\r
+ while ((next = next.nextSibling)){\r
+ if (next.nodeType == 1) return false;\r
+ }\r
+ return true;\r
+ },\r
+ \r
+ 'nth-child': function(argument, local){\r
+ argument = (argument == undefined) ? 'n' : argument;\r
+ var parsed = Selectors.Utils.parseNthArgument(argument);\r
+ if (parsed.special != 'n') return Selectors.Pseudo[parsed.special].call(this, parsed.a, local);\r
+ var count = 0;\r
+ local.positions = local.positions || {};\r
+ var uid = $uid(this);\r
+ if (!local.positions[uid]){\r
+ var self = this;\r
+ while ((self = self.previousSibling)){\r
+ if (self.nodeType != 1) continue;\r
+ count ++;\r
+ var position = local.positions[$uid(self)];\r
+ if (position != undefined){\r
+ count = position + count;\r
+ break;\r
+ }\r
+ }\r
+ local.positions[uid] = count;\r
+ }\r
+ return (local.positions[uid] % parsed.a == parsed.b);\r
+ },\r
+ \r
+ // custom pseudo selectors\r
+ \r
+ index: function(index){\r
+ var element = this, count = 0;\r
+ while ((element = element.previousSibling)){\r
+ if (element.nodeType == 1 && ++count > index) return false;\r
+ }\r
+ return (count == index);\r
+ },\r
+ \r
+ even: function(argument, local){\r
+ return Selectors.Pseudo['nth-child'].call(this, '2n+1', local);\r
+ },\r
+\r
+ odd: function(argument, local){\r
+ return Selectors.Pseudo['nth-child'].call(this, '2n', local);\r
+ }\r
+ \r
+});/*\r
+Script: Domready.js\r
+ Contains the domready custom event.\r
+\r
+License:\r
+ MIT-style license.\r
+*/\r
+\r
+Element.Events.domready = {\r
+\r
+ onAdd: function(fn){\r
+ if (Browser.loaded) fn.call(this);\r
+ }\r
+\r
+};\r
+\r
+(function(){\r
+ \r
+ var domready = function(){\r
+ if (Browser.loaded) return;\r
+ Browser.loaded = true;\r
+ window.fireEvent('domready');\r
+ document.fireEvent('domready');\r
+ };\r
+ \r
+ switch (Browser.Engine.name){\r
+\r
+ case 'webkit': (function(){\r
+ (['loaded', 'complete'].contains(document.readyState)) ? domready() : arguments.callee.delay(50);\r
+ })(); break;\r
+\r
+ case 'trident':\r
+ var temp = document.createElement('div');\r
+ (function(){\r
+ ($try(function(){\r
+ temp.doScroll('left');\r
+ return $(temp).inject(document.body).set('html', 'temp').dispose();\r
+ })) ? domready() : arguments.callee.delay(50);\r
+ })();\r
+ break;\r
+ \r
+ default:\r
+ window.addEvent('load', domready);\r
+ document.addEvent('DOMContentLoaded', domready);\r
+\r
+ }\r
+ \r
+})();/*\r
+Script: JSON.js\r
+ JSON encoder and decoder.\r
+\r
+License:\r
+ MIT-style license.\r
+\r
+See Also:\r
+ <http://www.json.org/>\r
+*/\r
+\r
+var JSON = new Hash({\r
+\r
+ encode: function(obj){\r
+ switch ($type(obj)){\r
+ case 'string':\r
+ return '"' + obj.replace(/[\x00-\x1f\\"]/g, JSON.$replaceChars) + '"';\r
+ case 'array':\r
+ return '[' + String(obj.map(JSON.encode).filter($defined)) + ']';\r
+ case 'object': case 'hash':\r
+ var string = [];\r
+ Hash.each(obj, function(value, key){\r
+ var json = JSON.encode(value);\r
+ if (json) string.push(JSON.encode(key) + ':' + json);\r
+ });\r
+ return '{' + string + '}';\r
+ case 'number': case 'boolean': return String(obj);\r
+ case false: return 'null';\r
+ }\r
+ return null;\r
+ },\r
+\r
+ $specialChars: {'\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '"' : '\\"', '\\': '\\\\'},\r
+\r
+ $replaceChars: function(chr){\r
+ return JSON.$specialChars[chr] || '\\u00' + Math.floor(chr.charCodeAt() / 16).toString(16) + (chr.charCodeAt() % 16).toString(16);\r
+ },\r
+\r
+ decode: function(string, secure){\r
+ if ($type(string) != 'string' || !string.length) return null;\r
+ if (secure && !(/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(string.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, ''))) return null;\r
+ return eval('(' + string + ')');\r
+ }\r
+\r
+});\r
+\r
+Native.implement([Hash, Array, String, Number], {\r
+\r
+ toJSON: function(){\r
+ return JSON.encode(this);\r
+ }\r
+\r
+});\r
+/*\r
+Script: Cookie.js\r
+ Class for creating, loading, and saving browser Cookies.\r
+\r
+License:\r
+ MIT-style license.\r
+\r
+Credits:\r
+ Based on the functions by Peter-Paul Koch (http://quirksmode.org).\r
+*/\r
+\r
+var Cookie = new Class({\r
+\r
+ Implements: Options,\r
+\r
+ options: {\r
+ path: false,\r
+ domain: false,\r
+ duration: false,\r
+ secure: false,\r
+ document: document\r
+ },\r
+\r
+ initialize: function(key, options){\r
+ this.key = key;\r
+ this.setOptions(options);\r
+ },\r
+\r
+ write: function(value){\r
+ value = encodeURIComponent(value);\r
+ if (this.options.domain) value += '; domain=' + this.options.domain;\r
+ if (this.options.path) value += '; path=' + this.options.path;\r
+ if (this.options.duration){\r
+ var date = new Date();\r
+ date.setTime(date.getTime() + this.options.duration * 24 * 60 * 60 * 1000);\r
+ value += '; expires=' + date.toGMTString();\r
+ }\r
+ if (this.options.secure) value += '; secure';\r
+ this.options.document.cookie = this.key + '=' + value;\r
+ return this;\r
+ },\r
+\r
+ read: function(){\r
+ var value = this.options.document.cookie.match('(?:^|;)\\s*' + this.key.escapeRegExp() + '=([^;]*)');\r
+ return (value) ? decodeURIComponent(value[1]) : null;\r
+ },\r
+\r
+ dispose: function(){\r
+ new Cookie(this.key, $merge(this.options, {duration: -1})).write('');\r
+ return this;\r
+ }\r
+\r
+});\r
+\r
+Cookie.write = function(key, value, options){\r
+ return new Cookie(key, options).write(value);\r
+};\r
+\r
+Cookie.read = function(key){\r
+ return new Cookie(key).read();\r
+};\r
+\r
+Cookie.dispose = function(key, options){\r
+ return new Cookie(key, options).dispose();\r
+};/*\r
+Script: Swiff.js\r
+ Wrapper for embedding SWF movies. Supports (and fixes) External Interface Communication.\r
+\r
+License:\r
+ MIT-style license.\r
+\r
+Credits:\r
+ Flash detection & Internet Explorer + Flash Player 9 fix inspired by SWFObject.\r
+*/\r
+\r
+var Swiff = new Class({\r
+\r
+ Implements: [Options],\r
+\r
+ options: {\r
+ id: null,\r
+ height: 1,\r
+ width: 1,\r
+ container: null,\r
+ properties: {},\r
+ params: {\r
+ quality: 'high',\r
+ allowScriptAccess: 'always',\r
+ wMode: 'transparent',\r
+ swLiveConnect: true\r
+ },\r
+ callBacks: {},\r
+ vars: {}\r
+ },\r
+\r
+ toElement: function(){\r
+ return this.object;\r
+ },\r
+\r
+ initialize: function(path, options){\r
+ this.instance = 'Swiff_' + $time();\r
+\r
+ this.setOptions(options);\r
+ options = this.options;\r
+ var id = this.id = options.id || this.instance;\r
+ var container = $(options.container);\r
+\r
+ Swiff.CallBacks[this.instance] = {};\r
+\r
+ var params = options.params, vars = options.vars, callBacks = options.callBacks;\r
+ var properties = $extend({height: options.height, width: options.width}, options.properties);\r
+\r
+ var self = this;\r
+\r
+ for (var callBack in callBacks){\r
+ Swiff.CallBacks[this.instance][callBack] = (function(option){\r
+ return function(){\r
+ return option.apply(self.object, arguments);\r
+ };\r
+ })(callBacks[callBack]);\r
+ vars[callBack] = 'Swiff.CallBacks.' + this.instance + '.' + callBack;\r
+ }\r
+\r
+ params.flashVars = Hash.toQueryString(vars);\r
+ if (Browser.Engine.trident){\r
+ properties.classid = 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000';\r
+ params.movie = path;\r
+ } else {\r
+ properties.type = 'application/x-shockwave-flash';\r
+ properties.data = path;\r
+ }\r
+ var build = '<object id="' + id + '"';\r
+ for (var property in properties) build += ' ' + property + '="' + properties[property] + '"';\r
+ build += '>';\r
+ for (var param in params){\r
+ if (params[param]) build += '<param name="' + param + '" value="' + params[param] + '" />';\r
+ }\r
+ build += '</object>';\r
+ this.object = ((container) ? container.empty() : new Element('div')).set('html', build).firstChild;\r
+ },\r
+\r
+ replaces: function(element){\r
+ element = $(element, true);\r
+ element.parentNode.replaceChild(this.toElement(), element);\r
+ return this;\r
+ },\r
+\r
+ inject: function(element){\r
+ $(element, true).appendChild(this.toElement());\r
+ return this;\r
+ },\r
+\r
+ remote: function(){\r
+ return Swiff.remote.apply(Swiff, [this.toElement()].extend(arguments));\r
+ }\r
+\r
+});\r
+\r
+Swiff.CallBacks = {};\r
+\r
+Swiff.remote = function(obj, fn){\r
+ var rs = obj.CallFunction('<invoke name="' + fn + '" returntype="javascript">' + __flash__argumentsToXML(arguments, 2) + '</invoke>');\r
+ return eval(rs);\r
+};/*\r
+Script: Fx.js\r
+ Contains the basic animation logic to be extended by all other Fx Classes.\r
+\r
+License:\r
+ MIT-style license.\r
+*/\r
+\r
+var Fx = new Class({\r
+\r
+ Implements: [Chain, Events, Options],\r
+\r
+ options: {\r
+ /*\r
+ onStart: $empty,\r
+ onCancel: $empty,\r
+ onComplete: $empty,\r
+ */\r
+ fps: 50,\r
+ unit: false,\r
+ duration: 500,\r
+ link: 'ignore',\r
+ transition: function(p){\r
+ return -(Math.cos(Math.PI * p) - 1) / 2;\r
+ }\r
+ },\r
+\r
+ initialize: function(options){\r
+ this.subject = this.subject || this;\r
+ this.setOptions(options);\r
+ this.options.duration = Fx.Durations[this.options.duration] || this.options.duration.toInt();\r
+ var wait = this.options.wait;\r
+ if (wait === false) this.options.link = 'cancel';\r
+ },\r
+\r
+ step: function(){\r
+ var time = $time();\r
+ if (time < this.time + this.options.duration){\r
+ var delta = this.options.transition((time - this.time) / this.options.duration);\r
+ this.set(this.compute(this.from, this.to, delta));\r
+ } else {\r
+ this.set(this.compute(this.from, this.to, 1));\r
+ this.complete();\r
+ }\r
+ },\r
+\r
+ set: function(now){\r
+ return now;\r
+ },\r
+\r
+ compute: function(from, to, delta){\r
+ return Fx.compute(from, to, delta);\r
+ },\r
+\r
+ check: function(caller){\r
+ if (!this.timer) return true;\r
+ switch (this.options.link){\r
+ case 'cancel': this.cancel(); return true;\r
+ case 'chain': this.chain(caller.bind(this, Array.slice(arguments, 1))); return false;\r
+ }\r
+ return false;\r
+ },\r
+\r
+ start: function(from, to){\r
+ if (!this.check(arguments.callee, from, to)) return this;\r
+ this.from = from;\r
+ this.to = to;\r
+ this.time = 0;\r
+ this.startTimer();\r
+ this.onStart();\r
+ return this;\r
+ },\r
+\r
+ complete: function(){\r
+ if (this.stopTimer()) this.onComplete();\r
+ return this;\r
+ },\r
+\r
+ cancel: function(){\r
+ if (this.stopTimer()) this.onCancel();\r
+ return this;\r
+ },\r
+\r
+ onStart: function(){\r
+ this.fireEvent('onStart', this.subject);\r
+ },\r
+\r
+ onComplete: function(){\r
+ this.fireEvent('onComplete', this.subject);\r
+ if (!this.callChain()) this.fireEvent('onChainComplete', this.subject);\r
+ },\r
+\r
+ onCancel: function(){\r
+ this.fireEvent('onCancel', this.subject).clearChain();\r
+ },\r
+\r
+ pause: function(){\r
+ this.stopTimer();\r
+ return this;\r
+ },\r
+\r
+ resume: function(){\r
+ this.startTimer();\r
+ return this;\r
+ },\r
+\r
+ stopTimer: function(){\r
+ if (!this.timer) return false;\r
+ this.time = $time() - this.time;\r
+ this.timer = $clear(this.timer);\r
+ return true;\r
+ },\r
+\r
+ startTimer: function(){\r
+ if (this.timer) return false;\r
+ this.time = $time() - this.time;\r
+ this.timer = this.step.periodical(Math.round(1000 / this.options.fps), this);\r
+ return true;\r
+ }\r
+\r
+});\r
+\r
+Fx.compute = function(from, to, delta){\r
+ return (to - from) * delta + from;\r
+};\r
+\r
+Fx.Durations = {'short': 250, 'normal': 500, 'long': 1000};\r
+/*\r
+Script: Fx.CSS.js\r
+ Contains the CSS animation logic. Used by Fx.Tween, Fx.Morph, Fx.Elements.\r
+\r
+License:\r
+ MIT-style license.\r
+*/\r
+\r
+Fx.CSS = new Class({\r
+\r
+ Extends: Fx,\r
+\r
+ //prepares the base from/to object\r
+\r
+ prepare: function(element, property, values){\r
+ values = $splat(values);\r
+ var values1 = values[1];\r
+ if (!$chk(values1)){\r
+ values[1] = values[0];\r
+ values[0] = element.getStyle(property);\r
+ }\r
+ var parsed = values.map(this.parse);\r
+ return {from: parsed[0], to: parsed[1]};\r
+ },\r
+\r
+ //parses a value into an array\r
+\r
+ parse: function(value){\r
+ value = $lambda(value)();\r
+ value = (typeof value == 'string') ? value.split(' ') : $splat(value);\r
+ return value.map(function(val){\r
+ val = String(val);\r
+ var found = false;\r
+ Fx.CSS.Parsers.each(function(parser, key){\r
+ if (found) return;\r
+ var parsed = parser.parse(val);\r
+ if ($chk(parsed)) found = {value: parsed, parser: parser};\r
+ });\r
+ found = found || {value: val, parser: Fx.CSS.Parsers.String};\r
+ return found;\r
+ });\r
+ },\r
+\r
+ //computes by a from and to prepared objects, using their parsers.\r
+\r
+ compute: function(from, to, delta){\r
+ var computed = [];\r
+ (Math.min(from.length, to.length)).times(function(i){\r
+ computed.push({value: from[i].parser.compute(from[i].value, to[i].value, delta), parser: from[i].parser});\r
+ });\r
+ computed.$family = {name: 'fx:css:value'};\r
+ return computed;\r
+ },\r
+\r
+ //serves the value as settable\r
+\r
+ serve: function(value, unit){\r
+ if ($type(value) != 'fx:css:value') value = this.parse(value);\r
+ var returned = [];\r
+ value.each(function(bit){\r
+ returned = returned.concat(bit.parser.serve(bit.value, unit));\r
+ });\r
+ return returned;\r
+ },\r
+\r
+ //renders the change to an element\r
+\r
+ render: function(element, property, value, unit){\r
+ element.setStyle(property, this.serve(value, unit));\r
+ },\r
+\r
+ //searches inside the page css to find the values for a selector\r
+\r
+ search: function(selector){\r
+ if (Fx.CSS.Cache[selector]) return Fx.CSS.Cache[selector];\r
+ var to = {};\r
+ Array.each(document.styleSheets, function(sheet, j){\r
+ var href = sheet.href;\r
+ if (href && href.contains('://') && !href.contains(document.domain)) return;\r
+ var rules = sheet.rules || sheet.cssRules;\r
+ Array.each(rules, function(rule, i){\r
+ if (!rule.style) return;\r
+ var selectorText = (rule.selectorText) ? rule.selectorText.replace(/^\w+/, function(m){\r
+ return m.toLowerCase();\r
+ }) : null;\r
+ if (!selectorText || !selectorText.test('^' + selector + '$')) return;\r
+ Element.Styles.each(function(value, style){\r
+ if (!rule.style[style] || Element.ShortStyles[style]) return;\r
+ value = String(rule.style[style]);\r
+ to[style] = (value.test(/^rgb/)) ? value.rgbToHex() : value;\r
+ });\r
+ });\r
+ });\r
+ return Fx.CSS.Cache[selector] = to;\r
+ }\r
+\r
+});\r
+\r
+Fx.CSS.Cache = {};\r
+\r
+Fx.CSS.Parsers = new Hash({\r
+\r
+ Color: {\r
+ parse: function(value){\r
+ if (value.match(/^#[0-9a-f]{3,6}$/i)) return value.hexToRgb(true);\r
+ return ((value = value.match(/(\d+),\s*(\d+),\s*(\d+)/))) ? [value[1], value[2], value[3]] : false;\r
+ },\r
+ compute: function(from, to, delta){\r
+ return from.map(function(value, i){\r
+ return Math.round(Fx.compute(from[i], to[i], delta));\r
+ });\r
+ },\r
+ serve: function(value){\r
+ return value.map(Number);\r
+ }\r
+ },\r
+\r
+ Number: {\r
+ parse: parseFloat,\r
+ compute: Fx.compute,\r
+ serve: function(value, unit){\r
+ return (unit) ? value + unit : value;\r
+ }\r
+ },\r
+\r
+ String: {\r
+ parse: $lambda(false),\r
+ compute: $arguments(1),\r
+ serve: $arguments(0)\r
+ }\r
+\r
+});\r
+/*\r
+Script: Fx.Tween.js\r
+ Formerly Fx.Style, effect to transition any CSS property for an element.\r
+\r
+License:\r
+ MIT-style license.\r
+*/\r
+\r
+Fx.Tween = new Class({\r
+\r
+ Extends: Fx.CSS,\r
+\r
+ initialize: function(element, options){\r
+ this.element = this.subject = $(element);\r
+ this.parent(options);\r
+ },\r
+\r
+ set: function(property, now){\r
+ if (arguments.length == 1){\r
+ now = property;\r
+ property = this.property || this.options.property;\r
+ }\r
+ this.render(this.element, property, now, this.options.unit);\r
+ return this;\r
+ },\r
+\r
+ start: function(property, from, to){\r
+ if (!this.check(arguments.callee, property, from, to)) return this;\r
+ var args = Array.flatten(arguments);\r
+ this.property = this.options.property || args.shift();\r
+ var parsed = this.prepare(this.element, this.property, args);\r
+ return this.parent(parsed.from, parsed.to);\r
+ }\r
+\r
+});\r
+\r
+Element.Properties.tween = {\r
+\r
+ set: function(options){\r
+ var tween = this.retrieve('tween');\r
+ if (tween) tween.cancel();\r
+ return this.eliminate('tween').store('tween:options', $extend({link: 'cancel'}, options));\r
+ },\r
+\r
+ get: function(options){\r
+ if (options || !this.retrieve('tween')){\r
+ if (options || !this.retrieve('tween:options')) this.set('tween', options);\r
+ this.store('tween', new Fx.Tween(this, this.retrieve('tween:options')));\r
+ }\r
+ return this.retrieve('tween');\r
+ }\r
+\r
+};\r
+\r
+Element.implement({\r
+\r
+ tween: function(property, from, to){\r
+ this.get('tween').start(arguments);\r
+ return this;\r
+ },\r
+\r
+ fade: function(how){\r
+ var fade = this.get('tween'), o = 'opacity', toggle;\r
+ how = $pick(how, 'toggle');\r
+ switch (how){\r
+ case 'in': fade.start(o, 1); break;\r
+ case 'out': fade.start(o, 0); break;\r
+ case 'show': fade.set(o, 1); break;\r
+ case 'hide': fade.set(o, 0); break;\r
+ case 'toggle':\r
+ var flag = this.retrieve('fade:flag', this.get('opacity') == 1);\r
+ fade.start(o, (flag) ? 0 : 1);\r
+ this.store('fade:flag', !flag);\r
+ toggle = true;\r
+ break;\r
+ default: fade.start(o, arguments);\r
+ }\r
+ if (!toggle) this.eliminate('fade:flag');\r
+ return this;\r
+ },\r
+\r
+ highlight: function(start, end){\r
+ if (!end){\r
+ end = this.retrieve('highlight:original', this.getStyle('background-color'));\r
+ end = (end == 'transparent') ? '#fff' : end;\r
+ }\r
+ var tween = this.get('tween');\r
+ tween.start('background-color', start || '#ffff88', end).chain(function(){\r
+ this.setStyle('background-color', this.retrieve('highlight:original'));\r
+ tween.callChain();\r
+ }.bind(this));\r
+ return this;\r
+ }\r
+\r
+});\r
+/*\r
+Script: Fx.Morph.js\r
+ Formerly Fx.Styles, effect to transition any number of CSS properties for an element using an object of rules, or CSS based selector rules.\r
+\r
+License:\r
+ MIT-style license.\r
+*/\r
+\r
+Fx.Morph = new Class({\r
+\r
+ Extends: Fx.CSS,\r
+\r
+ initialize: function(element, options){\r
+ this.element = this.subject = $(element);\r
+ this.parent(options);\r
+ },\r
+\r
+ set: function(now){\r
+ if (typeof now == 'string') now = this.search(now);\r
+ for (var p in now) this.render(this.element, p, now[p], this.options.unit);\r
+ return this;\r
+ },\r
+\r
+ compute: function(from, to, delta){\r
+ var now = {};\r
+ for (var p in from) now[p] = this.parent(from[p], to[p], delta);\r
+ return now;\r
+ },\r
+\r
+ start: function(properties){\r
+ if (!this.check(arguments.callee, properties)) return this;\r
+ if (typeof properties == 'string') properties = this.search(properties);\r
+ var from = {}, to = {};\r
+ for (var p in properties){\r
+ var parsed = this.prepare(this.element, p, properties[p]);\r
+ from[p] = parsed.from;\r
+ to[p] = parsed.to;\r
+ }\r
+ return this.parent(from, to);\r
+ }\r
+\r
+});\r
+\r
+Element.Properties.morph = {\r
+\r
+ set: function(options){\r
+ var morph = this.retrieve('morph');\r
+ if (morph) morph.cancel();\r
+ return this.eliminate('morph').store('morph:options', $extend({link: 'cancel'}, options));\r
+ },\r
+\r
+ get: function(options){\r
+ if (options || !this.retrieve('morph')){\r
+ if (options || !this.retrieve('morph:options')) this.set('morph', options);\r
+ this.store('morph', new Fx.Morph(this, this.retrieve('morph:options')));\r
+ }\r
+ return this.retrieve('morph');\r
+ }\r
+\r
+};\r
+\r
+Element.implement({\r
+\r
+ morph: function(props){\r
+ this.get('morph').start(props);\r
+ return this;\r
+ }\r
+\r
+});/*\r
+Script: Fx.Transitions.js\r
+ Contains a set of advanced transitions to be used with any of the Fx Classes.\r
+\r
+License:\r
+ MIT-style license.\r
+\r
+Credits:\r
+ Easing Equations by Robert Penner, <http://www.robertpenner.com/easing/>, modified and optimized to be used with MooTools.\r
+*/\r
+\r
+(function(){\r
+\r
+ var old = Fx.prototype.initialize;\r
+\r
+ Fx.prototype.initialize = function(options){\r
+ old.call(this, options);\r
+ var trans = this.options.transition;\r
+ if (typeof trans == 'string' && (trans = trans.split(':'))){\r
+ var base = Fx.Transitions;\r
+ base = base[trans[0]] || base[trans[0].capitalize()];\r
+ if (trans[1]) base = base['ease' + trans[1].capitalize() + (trans[2] ? trans[2].capitalize() : '')];\r
+ this.options.transition = base;\r
+ }\r
+ };\r
+\r
+})();\r
+\r
+Fx.Transition = function(transition, params){\r
+ params = $splat(params);\r
+ return $extend(transition, {\r
+ easeIn: function(pos){\r
+ return transition(pos, params);\r
+ },\r
+ easeOut: function(pos){\r
+ return 1 - transition(1 - pos, params);\r
+ },\r
+ easeInOut: function(pos){\r
+ return (pos <= 0.5) ? transition(2 * pos, params) / 2 : (2 - transition(2 * (1 - pos), params)) / 2;\r
+ }\r
+ });\r
+};\r
+\r
+Fx.Transitions = new Hash({\r
+\r
+ linear: $arguments(0)\r
+\r
+});\r
+\r
+Fx.Transitions.extend = function(transitions){\r
+ for (var transition in transitions) Fx.Transitions[transition] = new Fx.Transition(transitions[transition]);\r
+};\r
+\r
+Fx.Transitions.extend({\r
+\r
+ Pow: function(p, x){\r
+ return Math.pow(p, x[0] || 6);\r
+ },\r
+\r
+ Expo: function(p){\r
+ return Math.pow(2, 8 * (p - 1));\r
+ },\r
+\r
+ Circ: function(p){\r
+ return 1 - Math.sin(Math.acos(p));\r
+ },\r
+\r
+ Sine: function(p){\r
+ return 1 - Math.sin((1 - p) * Math.PI / 2);\r
+ },\r
+\r
+ Back: function(p, x){\r
+ x = x[0] || 1.618;\r
+ return Math.pow(p, 2) * ((x + 1) * p - x);\r
+ },\r
+\r
+ Bounce: function(p){\r
+ var value;\r
+ for (var a = 0, b = 1; 1; a += b, b /= 2){\r
+ if (p >= (7 - 4 * a) / 11){\r
+ value = - Math.pow((11 - 6 * a - 11 * p) / 4, 2) + b * b;\r
+ break;\r
+ }\r
+ }\r
+ return value;\r
+ },\r
+\r
+ Elastic: function(p, x){\r
+ return Math.pow(2, 10 * --p) * Math.cos(20 * p * Math.PI * (x[0] || 1) / 3);\r
+ }\r
+\r
+});\r
+\r
+['Quad', 'Cubic', 'Quart', 'Quint'].each(function(transition, i){\r
+ Fx.Transitions[transition] = new Fx.Transition(function(p){\r
+ return Math.pow(p, [i + 2]);\r
+ });\r
+});\r
+/*\r
+Script: Request.js\r
+ Powerful all purpose Request Class. Uses XMLHTTPRequest.\r
+\r
+License:\r
+ MIT-style license.\r
+*/\r
+\r
+var Request = new Class({\r
+\r
+ Implements: [Chain, Events, Options],\r
+\r
+ options: {\r
+ /*onRequest: $empty,\r
+ onSuccess: $empty,\r
+ onFailure: $empty,\r
+ onException: $empty,*/\r
+ url: '',\r
+ data: '',\r
+ headers: {\r
+ 'X-Requested-With': 'XMLHttpRequest',\r
+ 'Accept': 'text/javascript, text/html, application/xml, text/xml, */*'\r
+ },\r
+ async: true,\r
+ method: 'post',\r
+ link: 'ignore',\r
+ isSuccess: null,\r
+ emulation: true,\r
+ urlEncoded: true,\r
+ encoding: 'utf-8',\r
+ evalScripts: false,\r
+ evalResponse: false\r
+ },\r
+\r
+ initialize: function(options){\r
+ this.xhr = new Browser.Request();\r
+ this.setOptions(options);\r
+ this.options.isSuccess = this.options.isSuccess || this.isSuccess;\r
+ this.headers = new Hash(this.options.headers);\r
+ },\r
+\r
+ onStateChange: function(){\r
+ if (this.xhr.readyState != 4 || !this.running) return;\r
+ this.running = false;\r
+ this.status = 0;\r
+ $try(function(){\r
+ this.status = this.xhr.status;\r
+ }.bind(this));\r
+ if (this.options.isSuccess.call(this, this.status)){\r
+ this.response = {text: this.xhr.responseText, xml: this.xhr.responseXML};\r
+ this.success(this.response.text, this.response.xml);\r
+ } else {\r
+ this.response = {text: null, xml: null};\r
+ this.failure();\r
+ }\r
+ this.xhr.onreadystatechange = $empty;\r
+ },\r
+\r
+ isSuccess: function(){\r
+ return ((this.status >= 200) && (this.status < 300));\r
+ },\r
+\r
+ processScripts: function(text){\r
+ if (this.options.evalResponse || (/(ecma|java)script/).test(this.getHeader('Content-type'))) return $exec(text);\r
+ return text.stripScripts(this.options.evalScripts);\r
+ },\r
+\r
+ success: function(text, xml){\r
+ this.onSuccess(this.processScripts(text), xml);\r
+ },\r
+ \r
+ onSuccess: function(){\r
+ this.fireEvent('onComplete', arguments).fireEvent('onSuccess', arguments).callChain();\r
+ },\r
+ \r
+ failure: function(){\r
+ this.onFailure();\r
+ },\r
+\r
+ onFailure: function(){\r
+ this.fireEvent('onComplete').fireEvent('onFailure', this.xhr);\r
+ },\r
+\r
+ setHeader: function(name, value){\r
+ this.headers.set(name, value);\r
+ return this;\r
+ },\r
+\r
+ getHeader: function(name){\r
+ return $try(function(){\r
+ return this.xhr.getResponseHeader(name);\r
+ }.bind(this));\r
+ },\r
+\r
+ check: function(caller){\r
+ if (!this.running) return true;\r
+ switch (this.options.link){\r
+ case 'cancel': this.cancel(); return true;\r
+ case 'chain': this.chain(caller.bind(this, Array.slice(arguments, 1))); return false;\r
+ }\r
+ return false;\r
+ },\r
+\r
+ send: function(options){\r
+ if (!this.check(arguments.callee, options)) return this;\r
+ this.running = true;\r
+\r
+ var type = $type(options);\r
+ if (type == 'string' || type == 'element') options = {data: options};\r
+\r
+ var old = this.options;\r
+ options = $extend({data: old.data, url: old.url, method: old.method}, options);\r
+ var data = options.data, url = options.url, method = options.method;\r
+\r
+ switch ($type(data)){\r
+ case 'element': data = $(data).toQueryString(); break;\r
+ case 'object': case 'hash': data = Hash.toQueryString(data);\r
+ }\r
+\r
+ if (this.options.emulation && ['put', 'delete'].contains(method)){\r
+ var _method = '_method=' + method;\r
+ data = (data) ? _method + '&' + data : _method;\r
+ method = 'post';\r
+ }\r
+\r
+ if (this.options.urlEncoded && method == 'post'){\r
+ var encoding = (this.options.encoding) ? '; charset=' + this.options.encoding : '';\r
+ this.headers.set('Content-type', 'application/x-www-form-urlencoded' + encoding);\r
+ }\r
+\r
+ if (data && method == 'get'){\r
+ url = url + (url.contains('?') ? '&' : '?') + data;\r
+ data = null;\r
+ }\r
+\r
+ this.xhr.open(method.toUpperCase(), url, this.options.async);\r
+\r
+ this.xhr.onreadystatechange = this.onStateChange.bind(this);\r
+\r
+ this.headers.each(function(value, key){\r
+ if (!$try(function(){\r
+ this.xhr.setRequestHeader(key, value);\r
+ return true;\r
+ }.bind(this))) this.fireEvent('onException', [key, value]);\r
+ }, this);\r
+\r
+ this.fireEvent('onRequest');\r
+ this.xhr.send(data);\r
+ if (!this.options.async) this.onStateChange();\r
+ return this;\r
+ },\r
+\r
+ cancel: function(){\r
+ if (!this.running) return this;\r
+ this.running = false;\r
+ this.xhr.abort();\r
+ this.xhr.onreadystatechange = $empty;\r
+ this.xhr = new Browser.Request();\r
+ this.fireEvent('onCancel');\r
+ return this;\r
+ }\r
+\r
+});\r
+\r
+(function(){\r
+\r
+var methods = {};\r
+['get', 'post', 'GET', 'POST', 'PUT', 'DELETE'].each(function(method){\r
+ methods[method] = function(){\r
+ var params = Array.link(arguments, {url: String.type, data: $defined});\r
+ return this.send($extend(params, {method: method.toLowerCase()}));\r
+ };\r
+});\r
+\r
+Request.implement(methods);\r
+\r
+})();\r
+\r
+Element.Properties.send = {\r
+ \r
+ set: function(options){\r
+ var send = this.retrieve('send');\r
+ if (send) send.cancel();\r
+ return this.eliminate('send').store('send:options', $extend({\r
+ data: this, link: 'cancel', method: this.get('method') || 'post', url: this.get('action')\r
+ }, options));\r
+ },\r
+\r
+ get: function(options){\r
+ if (options || !this.retrieve('send')){\r
+ if (options || !this.retrieve('send:options')) this.set('send', options);\r
+ this.store('send', new Request(this.retrieve('send:options')));\r
+ }\r
+ return this.retrieve('send');\r
+ }\r
+\r
+};\r
+\r
+Element.implement({\r
+\r
+ send: function(url){\r
+ var sender = this.get('send');\r
+ sender.send({data: this, url: url || sender.options.url});\r
+ return this;\r
+ }\r
+\r
+});\r
+/*\r
+Script: Request.HTML.js\r
+ Extends the basic Request Class with additional methods for interacting with HTML responses.\r
+\r
+License:\r
+ MIT-style license.\r
+*/\r
+\r
+Request.HTML = new Class({\r
+\r
+ Extends: Request,\r
+\r
+ options: {\r
+ update: false,\r
+ evalScripts: true,\r
+ filter: false\r
+ },\r
+\r
+ processHTML: function(text){\r
+ var match = text.match(/<body[^>]*>([\s\S]*?)<\/body>/i);\r
+ text = (match) ? match[1] : text;\r
+ \r
+ var container = new Element('div');\r
+ \r
+ return $try(function(){\r
+ var root = '<root>' + text + '</root>', doc;\r
+ if (Browser.Engine.trident){\r
+ doc = new ActiveXObject('Microsoft.XMLDOM');\r
+ doc.async = false;\r
+ doc.loadXML(root);\r
+ } else {\r
+ doc = new DOMParser().parseFromString(root, 'text/xml');\r
+ }\r
+ root = doc.getElementsByTagName('root')[0];\r
+ for (var i = 0, k = root.childNodes.length; i < k; i++){\r
+ var child = Element.clone(root.childNodes[i], true, true);\r
+ if (child) container.grab(child);\r
+ }\r
+ return container;\r
+ }) || container.set('html', text);\r
+ },\r
+\r
+ success: function(text){\r
+ var options = this.options, response = this.response;\r
+ \r
+ response.html = text.stripScripts(function(script){\r
+ response.javascript = script;\r
+ });\r
+ \r
+ var temp = this.processHTML(response.html);\r
+ \r
+ response.tree = temp.childNodes;\r
+ response.elements = temp.getElements('*');\r
+ \r
+ if (options.filter) response.tree = response.elements.filter(options.filter);\r
+ if (options.update) $(options.update).empty().adopt(response.tree);\r
+ if (options.evalScripts) $exec(response.javascript);\r
+ \r
+ this.onSuccess(response.tree, response.elements, response.html, response.javascript);\r
+ }\r
+\r
+});\r
+\r
+Element.Properties.load = {\r
+ \r
+ set: function(options){\r
+ var load = this.retrieve('load');\r
+ if (load) send.cancel();\r
+ return this.eliminate('load').store('load:options', $extend({data: this, link: 'cancel', update: this, method: 'get'}, options));\r
+ },\r
+\r
+ get: function(options){\r
+ if (options || ! this.retrieve('load')){\r
+ if (options || !this.retrieve('load:options')) this.set('load', options);\r
+ this.store('load', new Request.HTML(this.retrieve('load:options')));\r
+ }\r
+ return this.retrieve('load');\r
+ }\r
+\r
+};\r
+\r
+Element.implement({\r
+ \r
+ load: function(){\r
+ this.get('load').send(Array.link(arguments, {data: Object.type, url: String.type}));\r
+ return this;\r
+ }\r
+\r
+});\r
+/*\r
+Script: Request.JSON.js\r
+ Extends the basic Request Class with additional methods for sending and receiving JSON data.\r
+\r
+License:\r
+ MIT-style license.\r
+*/\r
+\r
+Request.JSON = new Class({\r
+\r
+ Extends: Request,\r
+\r
+ options: {\r
+ secure: true\r
+ },\r
+\r
+ initialize: function(options){\r
+ this.parent(options);\r
+ this.headers.extend({'Accept': 'application/json', 'X-Request': 'JSON'});\r
+ },\r
+\r
+ success: function(text){\r
+ this.response.json = JSON.decode(text, this.options.secure);\r
+ this.onSuccess(this.response.json, text);\r
+ }\r
+\r
+});/*\r
+Script: Fx.Slide.js\r
+ Effect to slide an element in and out of view.\r
+\r
+License:\r
+ MIT-style license.\r
+*/\r
+\r
+Fx.Slide = new Class({\r
+\r
+ Extends: Fx,\r
+\r
+ options: {\r
+ mode: 'vertical'\r
+ },\r
+\r
+ initialize: function(element, options){\r
+ this.addEvent('onComplete', function(){\r
+ this.open = (this.wrapper['offset' + this.layout.capitalize()] != 0);\r
+ if (this.open && Browser.Engine.webkit419) this.element.dispose().inject(this.wrapper);\r
+ }, true);\r
+ this.element = this.subject = $(element);\r
+ this.parent(options);\r
+ var wrapper = this.element.retrieve('wrapper');\r
+ this.wrapper = wrapper || new Element('div', {\r
+ styles: $extend(this.element.getStyles('margin', 'position'), {'overflow': 'hidden'})\r
+ }).wraps(this.element);\r
+ this.element.store('wrapper', this.wrapper).setStyle('margin', 0);\r
+ this.now = [];\r
+ this.open = true;\r
+ },\r
+\r
+ vertical: function(){\r
+ this.margin = 'margin-top';\r
+ this.layout = 'height';\r
+ this.offset = this.element.offsetHeight;\r
+ },\r
+\r
+ horizontal: function(){\r
+ this.margin = 'margin-left';\r
+ this.layout = 'width';\r
+ this.offset = this.element.offsetWidth;\r
+ },\r
+\r
+ set: function(now){\r
+ this.element.setStyle(this.margin, now[0]);\r
+ this.wrapper.setStyle(this.layout, now[1]);\r
+ return this;\r
+ },\r
+\r
+ compute: function(from, to, delta){\r
+ var now = [];\r
+ (2).times(function(i){\r
+ now[i] = Fx.compute(from[i], to[i], delta);\r
+ });\r
+ return now;\r
+ },\r
+\r
+ start: function(how, mode){\r
+ if (!this.check(arguments.callee, how, mode)) return this;\r
+ this[mode || this.options.mode]();\r
+ var margin = this.element.getStyle(this.margin).toInt();\r
+ var layout = this.wrapper.getStyle(this.layout).toInt();\r
+ var caseIn = [[margin, layout], [0, this.offset]];\r
+ var caseOut = [[margin, layout], [-this.offset, 0]];\r
+ var start;\r
+ switch (how){\r
+ case 'in': start = caseIn; break;\r
+ case 'out': start = caseOut; break;\r
+ case 'toggle': start = (this.wrapper['offset' + this.layout.capitalize()] == 0) ? caseIn : caseOut;\r
+ }\r
+ return this.parent(start[0], start[1]);\r
+ },\r
+\r
+ slideIn: function(mode){\r
+ return this.start('in', mode);\r
+ },\r
+\r
+ slideOut: function(mode){\r
+ return this.start('out', mode);\r
+ },\r
+\r
+ hide: function(mode){\r
+ this[mode || this.options.mode]();\r
+ this.open = false;\r
+ return this.set([-this.offset, 0]);\r
+ },\r
+\r
+ show: function(mode){\r
+ this[mode || this.options.mode]();\r
+ this.open = true;\r
+ return this.set([0, this.offset]);\r
+ },\r
+\r
+ toggle: function(mode){\r
+ return this.start('toggle', mode);\r
+ }\r
+\r
+});\r
+\r
+Element.Properties.slide = {\r
+\r
+ set: function(options){\r
+ var slide = this.retrieve('slide');\r
+ if (slide) slide.cancel();\r
+ return this.eliminate('slide').store('slide:options', $extend({link: 'cancel'}, options));\r
+ },\r
+ \r
+ get: function(options){\r
+ if (options || !this.retrieve('slide')){\r
+ if (options || !this.retrieve('slide:options')) this.set('slide', options);\r
+ this.store('slide', new Fx.Slide(this, this.retrieve('slide:options')));\r
+ }\r
+ return this.retrieve('slide');\r
+ }\r
+\r
+};\r
+\r
+Element.implement({\r
+\r
+ slide: function(how, mode){\r
+ how = how || 'toggle';\r
+ var slide = this.get('slide'), toggle;\r
+ switch (how){\r
+ case 'hide': slide.hide(mode); break;\r
+ case 'show': slide.show(mode); break;\r
+ case 'toggle':\r
+ var flag = this.retrieve('slide:flag', slide.open);\r
+ slide[(flag) ? 'slideOut' : 'slideIn'](mode);\r
+ this.store('slide:flag', !flag);\r
+ toggle = true;\r
+ break;\r
+ default: slide.start(how, mode);\r
+ }\r
+ if (!toggle) this.eliminate('slide:flag');\r
+ return this;\r
+ }\r
+\r
+});\r
+/*\r
+Script: Fx.Scroll.js\r
+ Effect to smoothly scroll any element, including the window.\r
+\r
+License:\r
+ MIT-style license.\r
+*/\r
+\r
+Fx.Scroll = new Class({\r
+\r
+ Extends: Fx,\r
+\r
+ options: {\r
+ offset: {'x': 0, 'y': 0},\r
+ wheelStops: true\r
+ },\r
+\r
+ initialize: function(element, options){\r
+ this.element = this.subject = $(element);\r
+ this.parent(options);\r
+ var cancel = this.cancel.bind(this, false);\r
+\r
+ if ($type(this.element) != 'element') this.element = $(this.element.getDocument().body);\r
+\r
+ var stopper = this.element;\r
+\r
+ if (this.options.wheelStops){\r
+ this.addEvent('onStart', function(){\r
+ stopper.addEvent('mousewheel', cancel);\r
+ }, true);\r
+ this.addEvent('onComplete', function(){\r
+ stopper.removeEvent('mousewheel', cancel);\r
+ }, true);\r
+ }\r
+ },\r
+\r
+ set: function(){\r
+ var now = Array.flatten(arguments);\r
+ this.element.scrollTo(now[0], now[1]);\r
+ },\r
+\r
+ compute: function(from, to, delta){\r
+ var now = [];\r
+ (2).times(function(i){\r
+ now.push(Fx.compute(from[i], to[i], delta));\r
+ });\r
+ return now;\r
+ },\r
+\r
+ start: function(x, y){\r
+ if (!this.check(arguments.callee, x, y)) return this;\r
+ var offsetSize = this.element.getSize(), scrollSize = this.element.getScrollSize();\r
+ var scroll = this.element.getScroll(), values = {x: x, y: y};\r
+ for (var z in values){\r
+ var max = scrollSize[z] - offsetSize[z];\r
+ if ($chk(values[z])) values[z] = ($type(values[z]) == 'number') ? values[z].limit(0, max) : max;\r
+ else values[z] = scroll[z];\r
+ values[z] += this.options.offset[z];\r
+ }\r
+ return this.parent([scroll.x, scroll.y], [values.x, values.y]);\r
+ },\r
+\r
+ toTop: function(){\r
+ return this.start(false, 0);\r
+ },\r
+\r
+ toLeft: function(){\r
+ return this.start(0, false);\r
+ },\r
+\r
+ toRight: function(){\r
+ return this.start('right', false);\r
+ },\r
+\r
+ toBottom: function(){\r
+ return this.start(false, 'bottom');\r
+ },\r
+\r
+ toElement: function(el){\r
+ var position = $(el).getPosition(this.element);\r
+ return this.start(position.x, position.y);\r
+ }\r
+\r
+});\r
+/*\r
+Script: Fx.Elements.js\r
+ Effect to change any number of CSS properties of any number of Elements.\r
+\r
+License:\r
+ MIT-style license.\r
+*/\r
+\r
+Fx.Elements = new Class({\r
+\r
+ Extends: Fx.CSS,\r
+\r
+ initialize: function(elements, options){\r
+ this.elements = this.subject = $$(elements);\r
+ this.parent(options);\r
+ },\r
+\r
+ compute: function(from, to, delta){\r
+ var now = {};\r
+ for (var i in from){\r
+ var iFrom = from[i], iTo = to[i], iNow = now[i] = {};\r
+ for (var p in iFrom) iNow[p] = this.parent(iFrom[p], iTo[p], delta);\r
+ }\r
+ return now;\r
+ },\r
+\r
+ set: function(now){\r
+ for (var i in now){\r
+ var iNow = now[i];\r
+ for (var p in iNow) this.render(this.elements[i], p, iNow[p], this.options.unit);\r
+ }\r
+ return this;\r
+ },\r
+\r
+ start: function(obj){\r
+ if (!this.check(arguments.callee, obj)) return this;\r
+ var from = {}, to = {};\r
+ for (var i in obj){\r
+ var iProps = obj[i], iFrom = from[i] = {}, iTo = to[i] = {};\r
+ for (var p in iProps){\r
+ var parsed = this.prepare(this.elements[i], p, iProps[p]);\r
+ iFrom[p] = parsed.from;\r
+ iTo[p] = parsed.to;\r
+ }\r
+ }\r
+ return this.parent(from, to);\r
+ }\r
+\r
+});/*\r
+Script: Drag.js\r
+ The base Drag Class. Can be used to drag and resize Elements using mouse events.\r
+\r
+License:\r
+ MIT-style license.\r
+*/\r
+\r
+var Drag = new Class({\r
+\r
+ Implements: [Events, Options],\r
+\r
+ options: {/*\r
+ onBeforeStart: $empty,\r
+ onStart: $empty,\r
+ onDrag: $empty,\r
+ onCancel: $empty,\r
+ onComplete: $empty,*/\r
+ snap: 6,\r
+ unit: 'px',\r
+ grid: false,\r
+ style: true,\r
+ limit: false,\r
+ handle: false,\r
+ invert: false,\r
+ preventDefault: false,\r
+ modifiers: {x: 'left', y: 'top'}\r
+ },\r
+\r
+ initialize: function(){\r
+ var params = Array.link(arguments, {'options': Object.type, 'element': $defined});\r
+ this.element = $(params.element);\r
+ this.document = this.element.getDocument();\r
+ this.setOptions(params.options || {});\r
+ var htype = $type(this.options.handle);\r
+ this.handles = (htype == 'array' || htype == 'collection') ? $$(this.options.handle) : $(this.options.handle) || this.element;\r
+ this.mouse = {'now': {}, 'pos': {}};\r
+ this.value = {'start': {}, 'now': {}};\r
+ \r
+ this.selection = (Browser.Engine.trident) ? 'selectstart' : 'mousedown';\r
+ \r
+ this.bound = {\r
+ start: this.start.bind(this),\r
+ check: this.check.bind(this),\r
+ drag: this.drag.bind(this),\r
+ stop: this.stop.bind(this),\r
+ cancel: this.cancel.bind(this),\r
+ eventStop: $lambda(false)\r
+ };\r
+ this.attach();\r
+ },\r
+\r
+ attach: function(){\r
+ this.handles.addEvent('mousedown', this.bound.start);\r
+ return this;\r
+ },\r
+\r
+ detach: function(){\r
+ this.handles.removeEvent('mousedown', this.bound.start);\r
+ return this;\r
+ },\r
+\r
+ start: function(event){\r
+ if (this.options.preventDefault) event.preventDefault();\r
+ this.fireEvent('onBeforeStart', this.element);\r
+ this.mouse.start = event.page;\r
+ var limit = this.options.limit;\r
+ this.limit = {'x': [], 'y': []};\r
+ for (var z in this.options.modifiers){\r
+ if (!this.options.modifiers[z]) continue;\r
+ if (this.options.style) this.value.now[z] = this.element.getStyle(this.options.modifiers[z]).toInt();\r
+ else this.value.now[z] = this.element[this.options.modifiers[z]];\r
+ if (this.options.invert) this.value.now[z] *= -1;\r
+ this.mouse.pos[z] = event.page[z] - this.value.now[z];\r
+ if (limit && limit[z]){\r
+ for (var i = 2; i--; i){\r
+ if ($chk(limit[z][i])) this.limit[z][i] = $lambda(limit[z][i])();\r
+ }\r
+ }\r
+ }\r
+ if ($type(this.options.grid) == 'number') this.options.grid = {'x': this.options.grid, 'y': this.options.grid};\r
+ this.document.addEvents({mousemove: this.bound.check, mouseup: this.bound.cancel});\r
+ this.document.addEvent(this.selection, this.bound.eventStop);\r
+ },\r
+\r
+ check: function(event){\r
+ if (this.options.preventDefault) event.preventDefault();\r
+ var distance = Math.round(Math.sqrt(Math.pow(event.page.x - this.mouse.start.x, 2) + Math.pow(event.page.y - this.mouse.start.y, 2)));\r
+ if (distance > this.options.snap){\r
+ this.cancel();\r
+ this.document.addEvents({\r
+ mousemove: this.bound.drag,\r
+ mouseup: this.bound.stop\r
+ });\r
+ this.fireEvent('onStart', this.element).fireEvent('onSnap', this.element);\r
+ }\r
+ },\r
+\r
+ drag: function(event){\r
+ if (this.options.preventDefault) event.preventDefault();\r
+ this.mouse.now = event.page;\r
+ for (var z in this.options.modifiers){\r
+ if (!this.options.modifiers[z]) continue;\r
+ this.value.now[z] = this.mouse.now[z] - this.mouse.pos[z];\r
+ if (this.options.invert) this.value.now[z] *= -1;\r
+ if (this.options.limit && this.limit[z]){\r
+ if ($chk(this.limit[z][1]) && (this.value.now[z] > this.limit[z][1])){\r
+ this.value.now[z] = this.limit[z][1];\r
+ } else if ($chk(this.limit[z][0]) && (this.value.now[z] < this.limit[z][0])){\r
+ this.value.now[z] = this.limit[z][0];\r
+ }\r
+ }\r
+ if (this.options.grid[z]) this.value.now[z] -= (this.value.now[z] % this.options.grid[z]);\r
+ if (this.options.style) this.element.setStyle(this.options.modifiers[z], this.value.now[z] + this.options.unit);\r
+ else this.element[this.options.modifiers[z]] = this.value.now[z];\r
+ }\r
+ this.fireEvent('onDrag', this.element);\r
+ },\r
+\r
+ cancel: function(event){\r
+ this.document.removeEvent('mousemove', this.bound.check);\r
+ this.document.removeEvent('mouseup', this.bound.cancel);\r
+ if (event){\r
+ this.document.removeEvent(this.selection, this.bound.eventStop);\r
+ this.fireEvent('onCancel', this.element);\r
+ }\r
+ },\r
+\r
+ stop: function(event){\r
+ this.document.removeEvent(this.selection, this.bound.eventStop);\r
+ this.document.removeEvent('mousemove', this.bound.drag);\r
+ this.document.removeEvent('mouseup', this.bound.stop);\r
+ if (event) this.fireEvent('onComplete', this.element);\r
+ }\r
+\r
+});\r
+\r
+Element.implement({\r
+ \r
+ makeResizable: function(options){\r
+ return new Drag(this, $merge({modifiers: {'x': 'width', 'y': 'height'}}, options));\r
+ }\r
+\r
+});/*\r
+Script: Drag.Move.js\r
+ A Drag extension that provides support for the constraining of draggables to containers and droppables.\r
+\r
+License:\r
+ MIT-style license.\r
+*/\r
+\r
+Drag.Move = new Class({\r
+\r
+ Extends: Drag,\r
+\r
+ options: {\r
+ droppables: [],\r
+ container: false\r
+ },\r
+\r
+ initialize: function(element, options){\r
+ this.parent(element, options);\r
+ this.droppables = $$(this.options.droppables);\r
+ this.container = $(this.options.container);\r
+ if (this.container && $type(this.container) != 'element') this.container = $(this.container.getDocument().body);\r
+ element = this.element;\r
+ \r
+ var current = element.getStyle('position');\r
+ var position = (current != 'static') ? current : 'absolute';\r
+ if (element.getStyle('left') == 'auto' || element.getStyle('top') == 'auto') element.position(element.getPosition(element.offsetParent));\r
+ \r
+ element.setStyle('position', position);\r
+ \r
+ this.addEvent('onStart', function(){\r
+ this.checkDroppables();\r
+ }, true);\r
+ },\r
+\r
+ start: function(event){\r
+ if (this.container){\r
+ var el = this.element, cont = this.container, ccoo = cont.getCoordinates(el.offsetParent), cps = {}, ems = {};\r
+\r
+ ['top', 'right', 'bottom', 'left'].each(function(pad){\r
+ cps[pad] = cont.getStyle('padding-' + pad).toInt();\r
+ ems[pad] = el.getStyle('margin-' + pad).toInt();\r
+ }, this);\r
+\r
+ var width = el.offsetWidth + ems.left + ems.right, height = el.offsetHeight + ems.top + ems.bottom;\r
+ var x = [ccoo.left + cps.left, ccoo.right - cps.right - width];\r
+ var y = [ccoo.top + cps.top, ccoo.bottom - cps.bottom - height];\r
+\r
+ this.options.limit = {x: x, y: y};\r
+ }\r
+ this.parent(event);\r
+ },\r
+\r
+ checkAgainst: function(el){\r
+ el = el.getCoordinates();\r
+ var now = this.mouse.now;\r
+ return (now.x > el.left && now.x < el.right && now.y < el.bottom && now.y > el.top);\r
+ },\r
+\r
+ checkDroppables: function(){\r
+ var overed = this.droppables.filter(this.checkAgainst, this).getLast();\r
+ if (this.overed != overed){\r
+ if (this.overed) this.fireEvent('onLeave', [this.element, this.overed]);\r
+ if (overed){\r
+ this.overed = overed;\r
+ this.fireEvent('onEnter', [this.element, overed]);\r
+ } else {\r
+ this.overed = null;\r
+ }\r
+ }\r
+ },\r
+\r
+ drag: function(event){\r
+ this.parent(event);\r
+ if (this.droppables.length) this.checkDroppables();\r
+ },\r
+\r
+ stop: function(event){\r
+ this.checkDroppables();\r
+ this.fireEvent('onDrop', [this.element, this.overed]);\r
+ this.overed = null;\r
+ return this.parent(event);\r
+ }\r
+\r
+});\r
+\r
+Element.implement({\r
+\r
+ makeDraggable: function(options){\r
+ return new Drag.Move(this, options);\r
+ }\r
+\r
+});\r
+/*\r
+Script: Color.js\r
+ Class for creating and manipulating colors in JavaScript. Supports HSB -> RGB Conversions and vice versa.\r
+\r
+License:\r
+ MIT-style license.\r
+*/\r
+\r
+var Color = new Native({\r
+ \r
+ initialize: function(color, type){\r
+ if (arguments.length >= 3){\r
+ type = "rgb"; color = Array.slice(arguments, 0, 3);\r
+ } else if (typeof color == 'string'){\r
+ if (color.match(/rgb/)) color = color.rgbToHex().hexToRgb(true);\r
+ else if (color.match(/hsb/)) color = color.hsbToRgb();\r
+ else color = color.hexToRgb(true);\r
+ }\r
+ type = type || 'rgb';\r
+ switch (type){\r
+ case 'hsb':\r
+ var old = color;\r
+ color = color.hsbToRgb();\r
+ color.hsb = old;\r
+ break;\r
+ case 'hex': color = color.hexToRgb(true); break;\r
+ }\r
+ color.rgb = color.slice(0, 3);\r
+ color.hsb = color.hsb || color.rgbToHsb();\r
+ color.hex = color.rgbToHex();\r
+ return $extend(color, this);\r
+ }\r
+\r
+});\r
+\r
+Color.implement({\r
+\r
+ mix: function(){\r
+ var colors = Array.slice(arguments);\r
+ var alpha = ($type(colors.getLast()) == 'number') ? colors.pop() : 50;\r
+ var rgb = this.slice();\r
+ colors.each(function(color){\r
+ color = new Color(color);\r
+ for (var i = 0; i < 3; i++) rgb[i] = Math.round((rgb[i] / 100 * (100 - alpha)) + (color[i] / 100 * alpha));\r
+ });\r
+ return new Color(rgb, 'rgb');\r
+ },\r
+\r
+ invert: function(){\r
+ return new Color(this.map(function(value){\r
+ return 255 - value;\r
+ }));\r
+ },\r
+\r
+ setHue: function(value){\r
+ return new Color([value, this.hsb[1], this.hsb[2]], 'hsb');\r
+ },\r
+\r
+ setSaturation: function(percent){\r
+ return new Color([this.hsb[0], percent, this.hsb[2]], 'hsb');\r
+ },\r
+\r
+ setBrightness: function(percent){\r
+ return new Color([this.hsb[0], this.hsb[1], percent], 'hsb');\r
+ }\r
+\r
+});\r
+\r
+function $RGB(r, g, b){\r
+ return new Color([r, g, b], 'rgb');\r
+};\r
+\r
+function $HSB(h, s, b){\r
+ return new Color([h, s, b], 'hsb');\r
+};\r
+\r
+function $HEX(hex){\r
+ return new Color(hex, 'hex');\r
+};\r
+\r
+Array.implement({\r
+\r
+ rgbToHsb: function(){\r
+ var red = this[0], green = this[1], blue = this[2];\r
+ var hue, saturation, brightness;\r
+ var max = Math.max(red, green, blue), min = Math.min(red, green, blue);\r
+ var delta = max - min;\r
+ brightness = max / 255;\r
+ saturation = (max != 0) ? delta / max : 0;\r
+ if (saturation == 0){\r
+ hue = 0;\r
+ } else {\r
+ var rr = (max - red) / delta;\r
+ var gr = (max - green) / delta;\r
+ var br = (max - blue) / delta;\r
+ if (red == max) hue = br - gr;\r
+ else if (green == max) hue = 2 + rr - br;\r
+ else hue = 4 + gr - rr;\r
+ hue /= 6;\r
+ if (hue < 0) hue++;\r
+ }\r
+ return [Math.round(hue * 360), Math.round(saturation * 100), Math.round(brightness * 100)];\r
+ },\r
+\r
+ hsbToRgb: function(){\r
+ var br = Math.round(this[2] / 100 * 255);\r
+ if (this[1] == 0){\r
+ return [br, br, br];\r
+ } else {\r
+ var hue = this[0] % 360;\r
+ var f = hue % 60;\r
+ var p = Math.round((this[2] * (100 - this[1])) / 10000 * 255);\r
+ var q = Math.round((this[2] * (6000 - this[1] * f)) / 600000 * 255);\r
+ var t = Math.round((this[2] * (6000 - this[1] * (60 - f))) / 600000 * 255);\r
+ switch (Math.floor(hue / 60)){\r
+ case 0: return [br, t, p];\r
+ case 1: return [q, br, p];\r
+ case 2: return [p, br, t];\r
+ case 3: return [p, q, br];\r
+ case 4: return [t, p, br];\r
+ case 5: return [br, p, q];\r
+ }\r
+ }\r
+ return false;\r
+ }\r
+\r
+});\r
+\r
+String.implement({\r
+\r
+ rgbToHsb: function(){\r
+ var rgb = this.match(/\d{1,3}/g);\r
+ return (rgb) ? hsb.rgbToHsb() : null;\r
+ },\r
+ \r
+ hsbToRgb: function(){\r
+ var hsb = this.match(/\d{1,3}/g);\r
+ return (hsb) ? hsb.hsbToRgb() : null;\r
+ }\r
+\r
+});\r
+/*\r
+Script: Group.js\r
+ Class for monitoring collections of events\r
+\r
+License:\r
+ MIT-style license.\r
+*/\r
+\r
+var Group = new Class({\r
+\r
+ initialize: function(){\r
+ this.instances = Array.flatten(arguments);\r
+ this.events = {};\r
+ this.checker = {};\r
+ },\r
+\r
+ addEvent: function(type, fn){\r
+ this.checker[type] = this.checker[type] || {};\r
+ this.events[type] = this.events[type] || [];\r
+ if (this.events[type].contains(fn)) return false;\r
+ else this.events[type].push(fn);\r
+ this.instances.each(function(instance, i){\r
+ instance.addEvent(type, this.check.bind(this, [type, instance, i]));\r
+ }, this);\r
+ return this;\r
+ },\r
+\r
+ check: function(type, instance, i){\r
+ this.checker[type][i] = true;\r
+ var every = this.instances.every(function(current, j){\r
+ return this.checker[type][j] || false;\r
+ }, this);\r
+ if (!every) return;\r
+ this.checker[type] = {};\r
+ this.events[type].each(function(event){\r
+ event.call(this, this.instances, instance);\r
+ }, this);\r
+ }\r
+\r
+});\r
+/*\r
+Script: Hash.Cookie.js\r
+ Class for creating, reading, and deleting Cookies in JSON format.\r
+\r
+License:\r
+ MIT-style license.\r
+*/\r
+\r
+Hash.Cookie = new Class({\r
+\r
+ Extends: Cookie,\r
+\r
+ options: {\r
+ autoSave: true\r
+ },\r
+\r
+ initialize: function(name, options){\r
+ this.parent(name, options);\r
+ this.load();\r
+ },\r
+\r
+ save: function(){\r
+ var value = JSON.encode(this.hash);\r
+ if (!value || value.length > 4096) return false; //cookie would be truncated!\r
+ if (value == '{}') this.dispose();\r
+ else this.write(value);\r
+ return true;\r
+ },\r
+\r
+ load: function(){\r
+ this.hash = new Hash(JSON.decode(this.read(), true));\r
+ return this;\r
+ }\r
+\r
+});\r
+\r
+Hash.Cookie.implement((function(){\r
+ \r
+ var methods = {};\r
+ \r
+ Hash.each(Hash.prototype, function(method, name){\r
+ methods[name] = function(){\r
+ var value = method.apply(this.hash, arguments);\r
+ if (this.options.autoSave) this.save();\r
+ return value;\r
+ };\r
+ });\r
+ \r
+ return methods;\r
+ \r
+})());/*\r
+Script: Sortables.js\r
+ Class for creating a drag and drop sorting interface for lists of items.\r
+\r
+License:\r
+ MIT-style license.\r
+*/\r
+\r
+var Sortables = new Class({\r
+\r
+ Implements: [Events, Options],\r
+\r
+ options: {/*\r
+ onSort: $empty,\r
+ onStart: $empty,\r
+ onComplete: $empty,*/\r
+ snap: 4,\r
+ opacity: 1,\r
+ clone: false,\r
+ revert: false,\r
+ handle: false,\r
+ constrain: false\r
+ },\r
+\r
+ initialize: function(lists, options){\r
+ this.setOptions(options);\r
+ this.elements = [];\r
+ this.lists = [];\r
+ this.idle = true;\r
+ \r
+ this.addLists($$($(lists) || lists));\r
+ if (!this.options.clone) this.options.revert = false;\r
+ if (this.options.revert) this.effect = new Fx.Morph(null, $merge({duration: 250, link: 'cancel'}, this.options.revert));\r
+ },\r
+\r
+ attach: function(){\r
+ this.addLists(this.lists);\r
+ return this;\r
+ },\r
+\r
+ detach: function(){\r
+ this.lists = this.removeLists(this.lists);\r
+ return this;\r
+ },\r
+\r
+ addItems: function(){\r
+ Array.flatten(arguments).each(function(element){\r
+ this.elements.push(element);\r
+ var start = element.retrieve('sortables:start', this.start.bindWithEvent(this, element));\r
+ (this.options.handle ? element.getElement(this.options.handle) || element : element).addEvent('mousedown', start);\r
+ }, this);\r
+ return this;\r
+ },\r
+\r
+ addLists: function(){\r
+ Array.flatten(arguments).each(function(list){\r
+ this.lists.push(list);\r
+ this.addItems(list.getChildren());\r
+ }, this);\r
+ return this;\r
+ },\r
+\r
+ removeItems: function(){\r
+ var elements = [];\r
+ Array.flatten(arguments).each(function(element){\r
+ elements.push(element);\r
+ this.elements.erase(element);\r
+ var start = element.retrieve('sortables:start');\r
+ (this.options.handle ? element.getElement(this.options.handle) || element : element).removeEvent('mousedown', start);\r
+ }, this);\r
+ return $$(elements);\r
+ },\r
+\r
+ removeLists: function(){\r
+ var lists = [];\r
+ Array.flatten(arguments).each(function(list){\r
+ lists.push(list);\r
+ this.lists.erase(list);\r
+ this.removeItems(list.getChildren());\r
+ }, this);\r
+ return $$(lists);\r
+ },\r
+\r
+ getClone: function(event, element){\r
+ if (!this.options.clone) return new Element('div').inject(document.body);\r
+ if ($type(this.options.clone) == 'function') return this.options.clone.call(this, event, element, this.list);\r
+ return element.clone(true).setStyles({\r
+ 'margin': '0px',\r
+ 'position': 'absolute',\r
+ 'visibility': 'hidden',\r
+ 'width': element.getStyle('width')\r
+ }).inject(this.list).position(element.getPosition(element.offsetParent));\r
+ },\r
+\r
+ getDroppables: function(){\r
+ var droppables = this.list.getChildren();\r
+ if (!this.options.constrain) droppables = this.lists.concat(droppables).erase(this.list);\r
+ return droppables.erase(this.clone).erase(this.element);\r
+ },\r
+\r
+ insert: function(dragging, element){\r
+ var where = 'inside';\r
+ if (this.lists.contains(element)){\r
+ this.list = element;\r
+ this.drag.droppables = this.getDroppables();\r
+ } else {\r
+ where = this.element.getAllPrevious().contains(element) ? 'before' : 'after';\r
+ }\r
+ this.element.inject(element, where);\r
+ this.fireEvent('onSort', [this.element, this.clone]);\r
+ },\r
+\r
+ start: function(event, element){\r
+ if (!this.idle) return;\r
+ this.idle = false;\r
+ this.element = element;\r
+ this.opacity = element.get('opacity');\r
+ this.list = element.getParent();\r
+ this.clone = this.getClone(event, element);\r
+ \r
+ this.drag = new Drag.Move(this.clone, {\r
+ snap: this.options.snap,\r
+ container: this.options.constrain && this.element.getParent(),\r
+ droppables: this.getDroppables(),\r
+ onSnap: function(){\r
+ event.stop();\r
+ this.clone.setStyle('visibility', 'visible');\r
+ this.element.set('opacity', this.options.opacity || 0);\r
+ this.fireEvent('onStart', [this.element, this.clone]);\r
+ }.bind(this),\r
+ onEnter: this.insert.bind(this),\r
+ onCancel: this.reset.bind(this),\r
+ onComplete: this.end.bind(this)\r
+ });\r
+ \r
+ this.clone.inject(this.element, 'before');\r
+ this.drag.start(event);\r
+ },\r
+\r
+ end: function(){\r
+ this.drag.detach();\r
+ this.element.set('opacity', this.opacity);\r
+ if (this.effect){\r
+ var dim = this.element.getStyles('width', 'height');\r
+ var pos = this.clone.computePosition(this.element.getPosition(this.clone.offsetParent));\r
+ this.effect.element = this.clone;\r
+ this.effect.start({\r
+ top: pos.top,\r
+ left: pos.left,\r
+ width: dim.width,\r
+ height: dim.height,\r
+ opacity: 0.25\r
+ }).chain(this.reset.bind(this));\r
+ } else {\r
+ this.reset();\r
+ }\r
+ },\r
+\r
+ reset: function(){\r
+ this.idle = true;\r
+ this.clone.destroy();\r
+ this.fireEvent('onComplete', this.element);\r
+ },\r
+\r
+ serialize: function(){\r
+ var params = Array.link(arguments, {modifier: Function.type, index: $defined});\r
+ var serial = this.lists.map(function(list){\r
+ return list.getChildren().map(params.modifier || function(element){\r
+ return element.get('id');\r
+ }, this);\r
+ }, this);\r
+ \r
+ var index = params.index;\r
+ if (this.lists.length == 1) index = 0;\r
+ return $chk(index) && index >= 0 && index < this.lists.length ? serial[index] : serial;\r
+ }\r
+\r
+});/*\r
+Script: Tips.js\r
+ Class for creating nice tips that follow the mouse cursor when hovering an element.\r
+\r
+License:\r
+ MIT-style license.\r
+*/\r
+\r
+var Tips = new Class({\r
+\r
+ Implements: [Events, Options],\r
+\r
+ options: {\r
+ onShow: function(tip){\r
+ tip.setStyle('visibility', 'visible');\r
+ },\r
+ onHide: function(tip){\r
+ tip.setStyle('visibility', 'hidden');\r
+ },\r
+ showDelay: 100,\r
+ hideDelay: 100,\r
+ className: null,\r
+ offsets: {x: 16, y: 16},\r
+ fixed: false\r
+ },\r
+\r
+ initialize: function(){\r
+ var params = Array.link(arguments, {options: Object.type, elements: $defined});\r
+ this.setOptions(params.options || null);\r
+ \r
+ this.tip = new Element('div').inject(document.body);\r
+ \r
+ if (this.options.className) this.tip.addClass(this.options.className);\r
+ \r
+ var top = new Element('div', {'class': 'tip-top'}).inject(this.tip);\r
+ this.container = new Element('div', {'class': 'tip'}).inject(this.tip);\r
+ var bottom = new Element('div', {'class': 'tip-bottom'}).inject(this.tip);\r
+\r
+ this.tip.setStyles({position: 'absolute', top: 0, left: 0, visibility: 'hidden'});\r
+ \r
+ if (params.elements) this.attach(params.elements);\r
+ },\r
+ \r
+ attach: function(elements){\r
+ $$(elements).each(function(element){\r
+ var title = element.retrieve('tip:title', element.get('title'));\r
+ var text = element.retrieve('tip:text', element.get('rel') || element.get('href'));\r
+ var enter = element.retrieve('tip:enter', this.elementEnter.bindWithEvent(this, element));\r
+ var leave = element.retrieve('tip:leave', this.elementLeave.bindWithEvent(this, element));\r
+ element.addEvents({mouseenter: enter, mouseleave: leave});\r
+ if (!this.options.fixed){\r
+ var move = element.retrieve('tip:move', this.elementMove.bindWithEvent(this, element));\r
+ element.addEvent('mousemove', move);\r
+ }\r
+ element.store('tip:native', element.get('title'));\r
+ element.erase('title');\r
+ }, this);\r
+ return this;\r
+ },\r
+ \r
+ detach: function(elements){\r
+ $$(elements).each(function(element){\r
+ element.removeEvent('mouseenter', element.retrieve('tip:enter') || $empty);\r
+ element.removeEvent('mouseleave', element.retrieve('tip:leave') || $empty);\r
+ element.removeEvent('mousemove', element.retrieve('tip:move') || $empty);\r
+ element.eliminate('tip:enter').eliminate('tip:leave').eliminate('tip:move');\r
+ var original = element.retrieve('tip:native');\r
+ if (original) element.set('title', original);\r
+ });\r
+ return this;\r
+ },\r
+ \r
+ elementEnter: function(event, element){\r
+ \r
+ $A(this.container.childNodes).each(Element.dispose);\r
+ \r
+ var title = element.retrieve('tip:title');\r
+ \r
+ if (title){\r
+ this.titleElement = new Element('div', {'class': 'tip-title'}).inject(this.container);\r
+ this.fill(this.titleElement, title);\r
+ }\r
+ \r
+ var text = element.retrieve('tip:text');\r
+ if (text){\r
+ this.textElement = new Element('div', {'class': 'tip-text'}).inject(this.container);\r
+ this.fill(this.textElement, text);\r
+ }\r
+ \r
+ this.timer = $clear(this.timer);\r
+ this.timer = this.show.delay(this.options.showDelay, this);\r
+\r
+ this.position((!this.options.fixed) ? event : {page: element.getPosition()});\r
+ },\r
+ \r
+ elementLeave: function(event){\r
+ $clear(this.timer);\r
+ this.timer = this.hide.delay(this.options.hideDelay, this);\r
+ },\r
+ \r
+ elementMove: function(event){\r
+ this.position(event);\r
+ },\r
+ \r
+ position: function(event){\r
+ var size = window.getSize(), scroll = window.getScroll();\r
+ var tip = {x: this.tip.offsetWidth, y: this.tip.offsetHeight};\r
+ var props = {x: 'left', y: 'top'};\r
+ for (var z in props){\r
+ var pos = event.page[z] + this.options.offsets[z];\r
+ if ((pos + tip[z] - scroll[z]) > size[z]) pos = event.page[z] - this.options.offsets[z] - tip[z];\r
+ this.tip.setStyle(props[z], pos);\r
+ }\r
+ },\r
+ \r
+ fill: function(element, contents){\r
+ (typeof contents == 'string') ? element.set('html', contents) : element.adopt(contents);\r
+ },\r
+\r
+ show: function(){\r
+ this.fireEvent('onShow', this.tip);\r
+ },\r
+\r
+ hide: function(){\r
+ this.fireEvent('onHide', this.tip);\r
+ }\r
+\r
+});/*\r
+Script: SmoothScroll.js\r
+ Class for creating a smooth scrolling effect to all internal links on the page.\r
+\r
+License:\r
+ MIT-style license.\r
+*/\r
+\r
+var SmoothScroll = new Class({\r
+\r
+ Extends: Fx.Scroll,\r
+\r
+ initialize: function(options, context){\r
+ context = context || document;\r
+ var doc = context.getDocument(), win = context.getWindow();\r
+ this.parent(doc, options);\r
+ this.links = (this.options.links) ? $$(this.options.links) : $$(doc.links);\r
+ var location = win.location.href.match(/^[^#]*/)[0] + '#';\r
+ this.links.each(function(link){\r
+ if (link.href.indexOf(location) != 0) return;\r
+ var anchor = link.href.substr(location.length);\r
+ if (anchor && $(anchor)) this.useLink(link, anchor);\r
+ }, this);\r
+ if (!Browser.Engine.webkit419) this.addEvent('onComplete', function(){\r
+ win.location.hash = this.anchor;\r
+ }, true);\r
+ },\r
+\r
+ useLink: function(link, anchor){\r
+ link.addEvent('click', function(event){\r
+ this.anchor = anchor;\r
+ this.toElement(anchor);\r
+ event.stop();\r
+ }.bind(this));\r
+ }\r
+\r
+});/*\r
+Script: Slider.js\r
+ Class for creating horizontal and vertical slider controls.\r
+\r
+License:\r
+ MIT-style license.\r
+*/\r
+\r
+var Slider = new Class({\r
+\r
+ Implements: [Events, Options],\r
+\r
+ options: {/*\r
+ onChange: $empty,\r
+ onComplete: $empty,*/\r
+ onTick: function(position){\r
+ if(this.options.snap) position = this.toPosition(this.step);\r
+ this.knob.setStyle(this.property, position);\r
+ },\r
+ snap: false,\r
+ offset: 0,\r
+ range: false,\r
+ wheel: false,\r
+ steps: 100,\r
+ mode: 'horizontal'\r
+ },\r
+\r
+ initialize: function(element, knob, options){\r
+ this.setOptions(options);\r
+ this.element = $(element);\r
+ this.knob = $(knob);\r
+ this.previousChange = this.previousEnd = this.step = -1;\r
+ this.element.addEvent('mousedown', this.clickedElement.bind(this));\r
+ if (this.options.wheel) this.element.addEvent('mousewheel', this.scrolledElement.bindWithEvent(this));\r
+ var offset, limit = {}, modifiers = {'x': false, 'y': false};\r
+ switch (this.options.mode){\r
+ case 'vertical':\r
+ this.axis = 'y';\r
+ this.property = 'top';\r
+ offset = 'offsetHeight';\r
+ break;\r
+ case 'horizontal':\r
+ this.axis = 'x';\r
+ this.property = 'left';\r
+ offset = 'offsetWidth';\r
+ }\r
+ this.half = this.knob[offset] / 2;\r
+ this.full = this.element[offset] - this.knob[offset] + (this.options.offset * 2);\r
+ this.min = $chk(this.options.range[0]) ? this.options.range[0] : 0;\r
+ this.max = $chk(this.options.range[1]) ? this.options.range[1] : this.options.steps;\r
+ this.range = this.max - this.min;\r
+ this.steps = this.options.steps || this.full;\r
+ this.stepSize = Math.abs(this.range) / this.steps;\r
+ this.stepWidth = this.stepSize * this.full / Math.abs(this.range) ;\r
+ \r
+ this.knob.setStyle('position', 'relative').setStyle(this.property, - this.options.offset);\r
+ modifiers[this.axis] = this.property;\r
+ limit[this.axis] = [- this.options.offset, this.full - this.options.offset];\r
+ this.drag = new Drag(this.knob, {\r
+ snap: 0,\r
+ limit: limit,\r
+ modifiers: modifiers,\r
+ onDrag: this.draggedKnob.bind(this),\r
+ onStart: this.draggedKnob.bind(this),\r
+ onComplete: function(){\r
+ this.draggedKnob();\r
+ this.end();\r
+ }.bind(this)\r
+ });\r
+ if (this.options.snap) {\r
+ this.drag.options.grid = Math.ceil(this.stepWidth);\r
+ this.drag.options.limit[this.axis][1] = this.full;\r
+ }\r
+ },\r
+\r
+ set: function(step){\r
+ if (!((this.range > 0) ^ (step < this.min))) step = this.min;\r
+ if (!((this.range > 0) ^ (step > this.max))) step = this.max;\r
+ \r
+ this.step = Math.round(step);\r
+ this.checkStep();\r
+ this.end();\r
+ this.fireEvent('onTick', this.toPosition(this.step));\r
+ return this;\r
+ },\r
+\r
+ clickedElement: function(event){\r
+ var dir = this.range < 0 ? -1 : 1;\r
+ var position = event.page[this.axis] - this.element.getPosition()[this.axis] - this.half;\r
+ position = position.limit(-this.options.offset, this.full -this.options.offset);\r
+ \r
+ this.step = Math.round(this.min + dir * this.toStep(position));\r
+ this.checkStep();\r
+ this.end();\r
+ this.fireEvent('onTick', position);\r
+ },\r
+ \r
+ scrolledElement: function(event){\r
+ var mode = (this.options.mode == 'horizontal') ? (event.wheel < 0) : (event.wheel > 0);\r
+ this.set(mode ? this.step - this.stepSize : this.step + this.stepSize);\r
+ event.stop();\r
+ },\r
+\r
+ draggedKnob: function(){\r
+ var dir = this.range < 0 ? -1 : 1;\r
+ var position = this.drag.value.now[this.axis];\r
+ position = position.limit(-this.options.offset, this.full -this.options.offset);\r
+ this.step = Math.round(this.min + dir * this.toStep(position));\r
+ this.checkStep();\r
+ },\r
+\r
+ checkStep: function(){\r
+ if (this.previousChange != this.step){\r
+ this.previousChange = this.step;\r
+ this.fireEvent('onChange', this.step);\r
+ }\r
+ },\r
+\r
+ end: function(){\r
+ if (this.previousEnd !== this.step){\r
+ this.previousEnd = this.step;\r
+ this.fireEvent('onComplete', this.step + '');\r
+ }\r
+ },\r
+\r
+ toStep: function(position){\r
+ var step = (position + this.options.offset) * this.stepSize / this.full * this.steps;\r
+ return this.options.steps ? Math.round(step -= step % this.stepSize) : step;\r
+ },\r
+\r
+ toPosition: function(step){\r
+ return (this.full * Math.abs(this.min - step)) / (this.steps * this.stepSize) - this.options.offset;\r
+ }\r
+\r
+});/*\r
+Script: Scroller.js\r
+ Class which scrolls the contents of any Element (including the window) when the mouse reaches the Element's boundaries.\r
+\r
+License:\r
+ MIT-style license.\r
+*/\r
+\r
+var Scroller = new Class({\r
+\r
+ Implements: [Events, Options],\r
+\r
+ options: {\r
+ area: 20,\r
+ velocity: 1,\r
+ onChange: function(x, y){\r
+ this.element.scrollTo(x, y);\r
+ }\r
+ },\r
+\r
+ initialize: function(element, options){\r
+ this.setOptions(options);\r
+ this.element = $(element);\r
+ this.listener = ($type(this.element) != 'element') ? $(this.element.getDocument().body) : this.element;\r
+ this.timer = null;\r
+ },\r
+\r
+ start: function(){\r
+ this.coord = this.getCoords.bind(this);\r
+ this.listener.addEvent('mousemove', this.coord);\r
+ },\r
+\r
+ stop: function(){\r
+ this.listener.removeEvent('mousemove', this.coord);\r
+ this.timer = $clear(this.timer);\r
+ },\r
+\r
+ getCoords: function(event){\r
+ this.page = (this.listener.get('tag') == 'body') ? event.client : event.page;\r
+ if (!this.timer) this.timer = this.scroll.periodical(50, this);\r
+ },\r
+\r
+ scroll: function(){\r
+ var size = this.element.getSize(), scroll = this.element.getScroll(), pos = this.element.getPosition(), change = {'x': 0, 'y': 0};\r
+ for (var z in this.page){\r
+ if (this.page[z] < (this.options.area + pos[z]) && scroll[z] != 0)\r
+ change[z] = (this.page[z] - this.options.area - pos[z]) * this.options.velocity;\r
+ else if (this.page[z] + this.options.area > (size[z] + pos[z]) && size[z] + size[z] != scroll[z])\r
+ change[z] = (this.page[z] - size[z] + this.options.area - pos[z]) * this.options.velocity;\r
+ }\r
+ if (change.y || change.x) this.fireEvent('onChange', [scroll.x + change.x, scroll.y + change.y]);\r
+ }\r
+\r
+});/*\r
+Script: Assets.js\r
+ Provides methods to dynamically load JavaScript, CSS, and Image files into the document.\r
+\r
+License:\r
+ MIT-style license.\r
+*/\r
+\r
+var Asset = new Hash({\r
+\r
+ javascript: function(source, properties){\r
+ properties = $extend({\r
+ onload: $empty,\r
+ document: document,\r
+ check: $lambda(true)\r
+ }, properties);\r
+ \r
+ var script = new Element('script', {'src': source, 'type': 'text/javascript'});\r
+ \r
+ var load = properties.onload.bind(script), check = properties.check, doc = properties.document;\r
+ delete properties.onload; delete properties.check; delete properties.document;\r
+ \r
+ script.addEvents({\r
+ load: load,\r
+ readystatechange: function(){\r
+ if (['loaded', 'complete'].contains(this.readyState)) load();\r
+ }\r
+ }).setProperties(properties);\r
+ \r
+ \r
+ if (Browser.Engine.webkit419) var checker = (function(){\r
+ if (!$try(check)) return;\r
+ $clear(checker);\r
+ load();\r
+ }).periodical(50);\r
+ \r
+ return script.inject(doc.head);\r
+ },\r
+\r
+ css: function(source, properties){\r
+ return new Element('link', $merge({\r
+ 'rel': 'stylesheet', 'media': 'screen', 'type': 'text/css', 'href': source\r
+ }, properties)).inject(document.head);\r
+ },\r
+\r
+ image: function(source, properties){\r
+ properties = $merge({\r
+ 'onload': $empty,\r
+ 'onabort': $empty,\r
+ 'onerror': $empty\r
+ }, properties);\r
+ var image = new Image();\r
+ var element = $(image) || new Element('img');\r
+ ['load', 'abort', 'error'].each(function(name){\r
+ var type = 'on' + name;\r
+ var event = properties[type];\r
+ delete properties[type];\r
+ image[type] = function(){\r
+ if (!image) return;\r
+ if (!element.parentNode){\r
+ element.width = image.width;\r
+ element.height = image.height;\r
+ }\r
+ image = image.onload = image.onabort = image.onerror = null;\r
+ event.delay(1, element, element);\r
+ element.fireEvent(name, element, 1);\r
+ };\r
+ });\r
+ image.src = element.src = source;\r
+ if (image && image.complete) image.onload.delay(1);\r
+ return element.setProperties(properties);\r
+ },\r
+\r
+ images: function(sources, options){\r
+ options = $merge({\r
+ onComplete: $empty,\r
+ onProgress: $empty\r
+ }, options);\r
+ if (!sources.push) sources = [sources];\r
+ var images = [];\r
+ var counter = 0;\r
+ sources.each(function(source){\r
+ var img = new Asset.image(source, {\r
+ 'onload': function(){\r
+ options.onProgress.call(this, counter, sources.indexOf(source));\r
+ counter++;\r
+ if (counter == sources.length) options.onComplete();\r
+ }\r
+ });\r
+ images.push(img);\r
+ });\r
+ return new Elements(images);\r
+ }\r
+\r
+});/*\r
+Script: Accordion.js\r
+ An Fx.Elements extension which allows you to easily create accordion type controls.\r
+\r
+License:\r
+ MIT-style license.\r
+*/\r
+\r
+var Accordion = new Class({\r
+\r
+ Extends: Fx.Elements,\r
+\r
+ options: {/*\r
+ onActive: $empty,\r
+ onBackground: $empty,*/\r
+ display: 0,\r
+ show: false,\r
+ height: true,\r
+ width: false,\r
+ opacity: true,\r
+ fixedHeight: false,\r
+ fixedWidth: false,\r
+ wait: false,\r
+ alwaysHide: false\r
+ },\r
+\r
+ initialize: function(){\r
+ var params = Array.link(arguments, {'container': Element.type, 'options': Object.type, 'togglers': $defined, 'elements': $defined});\r
+ this.parent(params.elements, params.options);\r
+ this.togglers = $$(params.togglers);\r
+ this.container = $(params.container);\r
+ this.previous = -1;\r
+ if (this.options.alwaysHide) this.options.wait = true;\r
+ if ($chk(this.options.show)){\r
+ this.options.display = false;\r
+ this.previous = this.options.show;\r
+ }\r
+ if (this.options.start){\r
+ this.options.display = false;\r
+ this.options.show = false;\r
+ }\r
+ this.effects = {};\r
+ if (this.options.opacity) this.effects.opacity = 'fullOpacity';\r
+ if (this.options.width) this.effects.width = this.options.fixedWidth ? 'fullWidth' : 'offsetWidth';\r
+ if (this.options.height) this.effects.height = this.options.fixedHeight ? 'fullHeight' : 'scrollHeight';\r
+ for (var i = 0, l = this.togglers.length; i < l; i++) this.addSection(this.togglers[i], this.elements[i]);\r
+ this.elements.each(function(el, i){\r
+ if (this.options.show === i){\r
+ this.fireEvent('onActive', [this.togglers[i], el]);\r
+ } else {\r
+ for (var fx in this.effects) el.setStyle(fx, 0);\r
+ }\r
+ }, this);\r
+ if ($chk(this.options.display)) this.display(this.options.display);\r
+ },\r
+\r
+ addSection: function(toggler, element, pos){\r
+ toggler = $(toggler);\r
+ element = $(element);\r
+ var test = this.togglers.contains(toggler);\r
+ var len = this.togglers.length;\r
+ this.togglers.include(toggler);\r
+ this.elements.include(element);\r
+ if (len && (!test || pos)){\r
+ pos = $pick(pos, len - 1);\r
+ toggler.inject(this.togglers[pos], 'before');\r
+ element.inject(toggler, 'after');\r
+ } else if (this.container && !test){\r
+ toggler.inject(this.container);\r
+ element.inject(this.container);\r
+ }\r
+ var idx = this.togglers.indexOf(toggler);\r
+ toggler.addEvent('click', this.display.bind(this, idx));\r
+ if (this.options.height) element.setStyles({'padding-top': 0, 'border-top': 'none', 'padding-bottom': 0, 'border-bottom': 'none'});\r
+ if (this.options.width) element.setStyles({'padding-left': 0, 'border-left': 'none', 'padding-right': 0, 'border-right': 'none'});\r
+ element.fullOpacity = 1;\r
+ if (this.options.fixedWidth) element.fullWidth = this.options.fixedWidth;\r
+ if (this.options.fixedHeight) element.fullHeight = this.options.fixedHeight;\r
+ element.setStyle('overflow', 'hidden');\r
+ if (!test){\r
+ for (var fx in this.effects) element.setStyle(fx, 0);\r
+ }\r
+ return this;\r
+ },\r
+\r
+ display: function(index){\r
+ index = ($type(index) == 'element') ? this.elements.indexOf(index) : index;\r
+ if ((this.timer && this.options.wait) || (index === this.previous && !this.options.alwaysHide)) return this;\r
+ this.previous = index;\r
+ var obj = {};\r
+ this.elements.each(function(el, i){\r
+ obj[i] = {};\r
+ var hide = (i != index) || (this.options.alwaysHide && (el.offsetHeight > 0));\r
+ this.fireEvent(hide ? 'onBackground' : 'onActive', [this.togglers[i], el]);\r
+ for (var fx in this.effects) obj[i][fx] = hide ? 0 : el[this.effects[fx]];\r
+ }, this);\r
+ return this.start(obj);\r
+ }\r
+\r
+});
\ No newline at end of file
--- /dev/null
+tinyMCE.addI18n('en.images',{\r
+ desc : 'Upload and insert picture'\r
+});
\ No newline at end of file
--- /dev/null
+tinyMCE.addI18n('en.images_dlg',{\r
+title:"Pictures",\r
+del_sel_folder:"Remove selected folder?",\r
+sel_files_for_del:"Select files for removal.\n\nYou can remove several files simultaneously by selecting it with Ctrl.",\r
+files_to_del:"Files for removal",\r
+delete_str:"Remove",\r
+create_new_fld:"Create new folder",\r
+create_fld:"Create folder",\r
+upload_files:"Upload files",\r
+delete_file:"Delete file",\r
+\r
+fancy_title:"Image uploading",\r
+fancy_back_alt:"Back to files list",\r
+fancy_back:"Back to files",\r
+fancy_browse:"Browse",\r
+fancy_begin_upload:"Start upload",\r
+fancy_upload_files:"Upload files",\r
+fancy_clear:"Clear list",\r
+fancy_begin_upload_files:"Start files upload",\r
+fancy_general_status:"General status",\r
+fancy_file_status:"File status"\r
+});
\ No newline at end of file
--- /dev/null
+tinyMCE.addI18n('ru.images',{\r
+ desc : '\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430\u0020\u0438\u0020\u0432\u0441\u0442\u0430\u0432\u043A\u0430\u0020\u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0439'\r
+});
\ No newline at end of file
--- /dev/null
+tinyMCE.addI18n('ru.images_dlg',{\r
+title:"\u041A\u0430\u0440\u0442\u0438\u043D\u043A\u0438",\r
+del_sel_folder:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C\u0020\u0432\u044B\u0431\u0440\u0430\u043D\u043D\u0443\u044E\u0020\u043F\u0430\u043F\u043A\u0443?",\r
+sel_files_for_del:"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435\u0020\u0444\u0430\u0439\u043B\u044B\u0020\u0434\u043B\u044F\u0020\u0443\u0434\u0430\u043B\u0435\u043D\u0438\u044F\u002E\u005C\u006E\u005C\u006E\u0414\u043B\u044F\u0020\u0443\u0434\u0430\u043B\u0435\u043D\u0438\u044F\u0020\u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u0438\u0445\u0020\u0444\u0430\u0439\u043B\u043E\u0432\u0020\u0432\u044B\u0434\u0435\u043B\u0438\u0442\u0435\u0020\u0438\u0445\u0020\u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044F\u0020\u0043\u0074\u0072\u006C\u002E",\r
+files_to_del:"\u0424\u0430\u0439\u043B\u043E\u0432\u0020\u043A\u0020\u0443\u0434\u0430\u043B\u0435\u043D\u0438\u044E",\r
+delete_str:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C",\r
+create_new_fld:"\u0421\u043E\u0437\u0434\u0430\u0442\u044C\u0020\u043D\u043E\u0432\u0443\u044E\u0020\u043F\u0430\u043F\u043A\u0443",\r
+create_fld:"\u0421\u043E\u0437\u0434\u0430\u0442\u044C\u0020\u043F\u0430\u043F\u043A\u0443",\r
+upload_files:"\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C\u0020\u0444\u0430\u0439\u043B\u044B",\r
+delete_file:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C\u0020\u0444\u0430\u0439\u043B",\r
+\r
+fancy_title:"\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430\u0020\u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0439",\r
+fancy_back_alt:"\u0412\u0435\u0440\u043D\u0443\u0442\u044C\u0441\u044F\u0020\u043A\u0020\u0441\u043F\u0438\u0441\u043A\u0443\u0020\u0444\u0430\u0439\u043B\u043E\u0432",\r
+fancy_back:"\u0412\u0435\u0440\u043D\u0443\u0442\u044C\u0441\u044F\u0020\u043A\u0020\u0444\u0430\u0439\u043B\u0430\u043C",\r
+fancy_browse:"\u041E\u0431\u0437\u043E\u0440",\r
+fancy_begin_upload:"\u041D\u0430\u0447\u0430\u0442\u044C\u0020\u0437\u0430\u0433\u0440\u0443\u0437\u043A\u0443",\r
+fancy_upload_files:"\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C\u0020\u0444\u0430\u0439\u043B\u044B",\r
+fancy_clear:"\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C\u0020\u0441\u043F\u0438\u0441\u043E\u043A",\r
+fancy_begin_upload_files:"\u041D\u0430\u0447\u0430\u0442\u044C\u0020\u0437\u0430\u0433\u0440\u0443\u0437\u043A\u0443\u0020\u0444\u0430\u0439\u043B\u043E\u0432",\r
+fancy_general_status:"\u041E\u0431\u0449\u0438\u0439\u0020\u0441\u0442\u0430\u0442\u0443\u0441",\r
+fancy_file_status:"\u0421\u0442\u0430\u0442\u0443\u0441\u0020\u0444\u0430\u0439\u043B\u0430"\r
+});
\ No newline at end of file
--- /dev/null
+TinyMCE Images Plugin\r
+\r
+Ñàéò àâòîðà: http://dustweb.ru/log/projects/tinymce_images/
\ No newline at end of file
--- /dev/null
+<?php\r
+/**\r
+ * JsHttpRequest: PHP backend for JavaScript DHTML loader.\r
+ * (C) Dmitry Koterov, http://en.dklab.ru\r
+ *\r
+ * This library is free software; you can redistribute it and/or\r
+ * modify it under the terms of the GNU Lesser General Public\r
+ * License as published by the Free Software Foundation; either\r
+ * version 2.1 of the License, or (at your option) any later version.\r
+ * See http://www.gnu.org/copyleft/lesser.html\r
+ *\r
+ * Do not remove this comment if you want to use the script!\r
+ * Íå óäàëÿéòå äàííûé êîììåíòàðèé, åñëè âû õîòèòå èñïîëüçîâàòü ñêðèïò!\r
+ *\r
+ * This backend library also supports POST requests additionally to GET.\r
+ *\r
+ * @author Dmitry Koterov \r
+ * @version 5.x $Id$\r
+ */\r
+\r
+class JsHttpRequest\r
+{\r
+ var $SCRIPT_ENCODING = "windows-1251";\r
+ var $SCRIPT_DECODE_MODE = '';\r
+ var $LOADER = null;\r
+ var $ID = null; \r
+ var $RESULT = null;\r
+ \r
+ // Internal; uniq value.\r
+ var $_uniqHash;\r
+ // Magic number for display_error checking.\r
+ var $_magic = 14623;\r
+ // Previous display_errors value.\r
+ var $_prevDisplayErrors = null; \r
+ // Internal: response content-type depending on loader type.\r
+ var $_contentTypes = array(\r
+ "script" => "text/javascript",\r
+ "xml" => "text/plain", // In XMLHttpRequest mode we must return text/plain - stupid Opera 8.0. :(\r
+ "form" => "text/html",\r
+ "" => "text/plain", // for unknown loader\r
+ );\r
+ // Internal: conversion to UTF-8 JSON cancelled because of non-ascii key.\r
+ var $_toUtfFailed = false;\r
+ // Internal: list of characters 128...255 (for strpbrk() ASCII check).\r
+ var $_nonAsciiChars = '';\r
+ // Which Unicode conversion function is available?\r
+ var $_unicodeConvMethod = null;\r
+ // Emergency memory buffer to be freed on memory_limit error.\r
+ var $_emergBuffer = null;\r
+\r
+ \r
+ /**\r
+ * Constructor.\r
+ * \r
+ * Create new JsHttpRequest backend object and attach it\r
+ * to script output buffer. As a result - script will always return\r
+ * correct JavaScript code, even in case of fatal errors.\r
+ *\r
+ * QUERY_STRING is in form of: PHPSESSID=<sid>&a=aaa&b=bbb&JsHttpRequest=<id>-<loader>\r
+ * where <id> is a request ID, <loader> is a loader name, <sid> - a session ID (if present), \r
+ * PHPSESSID - session parameter name (by default = "PHPSESSID").\r
+ * \r
+ * If an object is created WITHOUT an active AJAX query, it is simply marked as\r
+ * non-active. Use statuc method isActive() to check.\r
+ */\r
+ function JsHttpRequest($enc)\r
+ {\r
+ global $JsHttpRequest_Active;\r
+ \r
+ // To be on a safe side - do not allow to drop reference counter on ob processing.\r
+ $GLOBALS['_RESULT'] =& $this->RESULT; \r
+ \r
+ // Parse QUERY_STRING.\r
+ if (preg_match('/^(.*)(?:&|^)JsHttpRequest=(?:(\d+)-)?([^&]+)((?:&|$).*)$/s', @$_SERVER['QUERY_STRING'], $m)) {\r
+ $this->ID = $m[2];\r
+ $this->LOADER = strtolower($m[3]);\r
+ $_SERVER['QUERY_STRING'] = preg_replace('/^&+|&+$/s', '', preg_replace('/(^|&)'.session_name().'=[^&]*&?/s', '&', $m[1] . $m[4]));\r
+ unset(\r
+ $_GET['JsHttpRequest'],\r
+ $_REQUEST['JsHttpRequest'],\r
+ $_GET[session_name()],\r
+ $_POST[session_name()],\r
+ $_REQUEST[session_name()]\r
+ );\r
+ // Detect Unicode conversion method.\r
+ $this->_unicodeConvMethod = function_exists('mb_convert_encoding')? 'mb' : (function_exists('iconv')? 'iconv' : null);\r
+ \r
+ // Fill an emergency buffer. We erase it at the first line of OB processor\r
+ // to free some memory. This memory may be used on memory_limit error.\r
+ $this->_emergBuffer = str_repeat('a', 1024 * 200);\r
+\r
+ // Intercept fatal errors via display_errors (seems it is the only way). \r
+ $this->_uniqHash = md5('JsHttpRequest' . microtime() . getmypid());\r
+ $this->_prevDisplayErrors = ini_get('display_errors');\r
+ ini_set('display_errors', $this->_magic); //\r
+ ini_set('error_prepend_string', $this->_uniqHash . ini_get('error_prepend_string'));\r
+ ini_set('error_append_string', ini_get('error_append_string') . $this->_uniqHash);\r
+\r
+ // Start OB handling early.\r
+ ob_start(array(&$this, "_obHandler"));\r
+ $JsHttpRequest_Active = true;\r
+ \r
+ // Set up the encoding.\r
+ $this->setEncoding($enc);\r
+ \r
+ // Check if headers are already sent (see Content-Type library usage).\r
+ // If true - generate a debug message and exit.\r
+ $file = $line = null;\r
+ $headersSent = version_compare(PHP_VERSION, "4.3.0") < 0? headers_sent() : headers_sent($file, $line);\r
+ if ($headersSent) {\r
+ trigger_error(\r
+ "HTTP headers are already sent" . ($line !== null? " in $file on line $line" : " somewhere in the script") . ". "\r
+ . "Possibly you have an extra space (or a newline) before the first line of the script or any library. "\r
+ . "Please note that JsHttpRequest uses its own Content-Type header and fails if "\r
+ . "this header cannot be set. See header() function documentation for more details",\r
+ E_USER_ERROR\r
+ );\r
+ exit();\r
+ }\r
+ } else {\r
+ $this->ID = 0;\r
+ $this->LOADER = 'unknown';\r
+ $JsHttpRequest_Active = false;\r
+ }\r
+ }\r
+ \r
+\r
+ /**\r
+ * Static function.\r
+ * Returns true if JsHttpRequest output processor is currently active.\r
+ * \r
+ * @return boolean True if the library is active, false otherwise.\r
+ */\r
+ function isActive()\r
+ {\r
+ return !empty($GLOBALS['JsHttpRequest_Active']);\r
+ }\r
+ \r
+\r
+ /**\r
+ * string getJsCode()\r
+ * \r
+ * Return JavaScript part of the library.\r
+ */\r
+ function getJsCode()\r
+ {\r
+ return file_get_contents(dirname(__FILE__) . '/JsHttpRequest.js');\r
+ }\r
+\r
+\r
+ /**\r
+ * void setEncoding(string $encoding)\r
+ * \r
+ * Set an active script encoding & correct QUERY_STRING according to it.\r
+ * Examples:\r
+ * "windows-1251" - set plain encoding (non-windows characters, \r
+ * e.g. hieroglyphs, are totally ignored)\r
+ * "windows-1251 entities" - set windows encoding, BUT additionally replace:\r
+ * "&" -> "&" \r
+ * hieroglyph -> &#XXXX; entity\r
+ */\r
+ function setEncoding($enc)\r
+ {\r
+ // Parse an encoding.\r
+ preg_match('/^(\S*)(?:\s+(\S*))$/', $enc, $p);\r
+ $this->SCRIPT_ENCODING = strtolower(!empty($p[1])? $p[1] : $enc);\r
+ $this->SCRIPT_DECODE_MODE = !empty($p[2])? $p[2] : '';\r
+ // Manually parse QUERY_STRING because of damned Unicode's %uXXXX.\r
+ $this->_correctSuperglobals();\r
+ }\r
+\r
+ \r
+ /**\r
+ * string quoteInput(string $input)\r
+ * \r
+ * Quote a string according to the input decoding mode.\r
+ * If entities are used (see setEncoding()), no '&' character is quoted,\r
+ * only '"', '>' and '<' (we presume that '&' is already quoted by\r
+ * an input reader function).\r
+ *\r
+ * Use this function INSTEAD of htmlspecialchars() for $_GET data \r
+ * in your scripts.\r
+ */\r
+ function quoteInput($s)\r
+ {\r
+ if ($this->SCRIPT_DECODE_MODE == 'entities')\r
+ return str_replace(array('"', '<', '>'), array('"', '<', '>'), $s);\r
+ else\r
+ return htmlspecialchars($s);\r
+ }\r
+ \r
+\r
+ /**\r
+ * Convert a PHP scalar, array or hash to JS scalar/array/hash. This function is \r
+ * an analog of json_encode(), but it can work with a non-UTF8 input and does not \r
+ * analyze the passed data. Output format must be fully JSON compatible.\r
+ * \r
+ * @param mixed $a Any structure to convert to JS.\r
+ * @return string JavaScript equivalent structure.\r
+ */\r
+ function php2js($a=false)\r
+ {\r
+ if (is_null($a)) return 'null';\r
+ if ($a === false) return 'false';\r
+ if ($a === true) return 'true';\r
+ if (is_scalar($a)) {\r
+ if (is_float($a)) {\r
+ // Always use "." for floats.\r
+ $a = str_replace(",", ".", strval($a));\r
+ }\r
+ // All scalars are converted to strings to avoid indeterminism.\r
+ // PHP's "1" and 1 are equal for all PHP operators, but \r
+ // JS's "1" and 1 are not. So if we pass "1" or 1 from the PHP backend,\r
+ // we should get the same result in the JS frontend (string).\r
+ // Character replacements for JSON.\r
+ static $jsonReplaces = array(\r
+ array("\\", "/", "\n", "\t", "\r", "\b", "\f", '"'),\r
+ array('\\\\', '\\/', '\\n', '\\t', '\\r', '\\b', '\\f', '\"')\r
+ );\r
+ return '"' . str_replace($jsonReplaces[0], $jsonReplaces[1], $a) . '"';\r
+ }\r
+ $isList = true;\r
+ for ($i = 0, reset($a); $i < count($a); $i++, next($a)) {\r
+ if (key($a) !== $i) { \r
+ $isList = false; \r
+ break; \r
+ }\r
+ }\r
+ $result = array();\r
+ if ($isList) {\r
+ foreach ($a as $v) {\r
+ $result[] = JsHttpRequest::php2js($v);\r
+ }\r
+ return '[ ' . join(', ', $result) . ' ]';\r
+ } else {\r
+ foreach ($a as $k => $v) {\r
+ $result[] = JsHttpRequest::php2js($k) . ': ' . JsHttpRequest::php2js($v);\r
+ }\r
+ return '{ ' . join(', ', $result) . ' }';\r
+ }\r
+ }\r
+ \r
+ \r
+ /**\r
+ * Internal methods.\r
+ */\r
+\r
+ /**\r
+ * Parse & decode QUERY_STRING.\r
+ */\r
+ function _correctSuperglobals()\r
+ {\r
+ // In case of FORM loader we may go to nirvana, everything is already parsed by PHP.\r
+ if ($this->LOADER == 'form') return;\r
+ \r
+ // ATTENTION!!!\r
+ // HTTP_RAW_POST_DATA is only accessible when Content-Type of POST request\r
+ // is NOT default "application/x-www-form-urlencoded"!!!\r
+ // Library frontend sets "application/octet-stream" for that purpose,\r
+ // see JavaScript code. In PHP 5.2.2.HTTP_RAW_POST_DATA is not set sometimes; \r
+ // in such cases - read the POST data manually from the STDIN stream.\r
+ $rawPost = strcasecmp($_SERVER['REQUEST_METHOD'], 'POST') == 0? (isset($GLOBALS['HTTP_RAW_POST_DATA'])? $GLOBALS['HTTP_RAW_POST_DATA'] : @file_get_contents("php://input")) : null;\r
+ $source = array(\r
+ '_GET' => !empty($_SERVER['QUERY_STRING'])? $_SERVER['QUERY_STRING'] : null, \r
+ '_POST'=> $rawPost,\r
+ );\r
+ foreach ($source as $dst=>$src) {\r
+ // First correct all 2-byte entities.\r
+ $s = preg_replace('/%(?!5B)(?!5D)([0-9a-f]{2})/si', '%u00\\1', $src);\r
+ // Now we can use standard parse_str() with no worry!\r
+ $data = null;\r
+ parse_str($s, $data);\r
+ $GLOBALS[$dst] = $this->_ucs2EntitiesDecode($data);\r
+ }\r
+ $GLOBALS['HTTP_GET_VARS'] = $_GET; // deprecated vars\r
+ $GLOBALS['HTTP_POST_VARS'] = $_POST;\r
+ $_REQUEST = \r
+ (isset($_COOKIE)? $_COOKIE : array()) + \r
+ (isset($_POST)? $_POST : array()) + \r
+ (isset($_GET)? $_GET : array());\r
+ if (ini_get('register_globals')) {\r
+ // TODO?\r
+ }\r
+ }\r
+\r
+\r
+ /**\r
+ * Called in case of error too!\r
+ */\r
+ function _obHandler($text)\r
+ {\r
+ unset($this->_emergBuffer); // free a piece of memory for memory_limit error\r
+ unset($GLOBALS['JsHttpRequest_Active']);\r
+ \r
+ // Check for error & fetch a resulting data.\r
+ if (preg_match("/{$this->_uniqHash}(.*?){$this->_uniqHash}/sx", $text, $m)) {\r
+ if (!ini_get('display_errors') || (!$this->_prevDisplayErrors && ini_get('display_errors') == $this->_magic)) {\r
+ // Display_errors:\r
+ // 1. disabled manually after the library initialization, or\r
+ // 2. was initially disabled and is not changed\r
+ $text = str_replace($m[0], '', $text); // strip whole error message\r
+ } else {\r
+ $text = str_replace($this->_uniqHash, '', $text);\r
+ }\r
+ }\r
+ if ($m && preg_match('/\bFatal error(<.*?>)?:/i', $m[1])) {\r
+ // On fatal errors - force null result (generate 500 error).\r
+ $this->RESULT = null;\r
+ } else {\r
+ // Make a resulting hash.\r
+ if (!isset($this->RESULT)) {\r
+ global $_RESULT;\r
+ $this->RESULT = $_RESULT;\r
+ }\r
+ }\r
+ \r
+ $result = array(\r
+ 'id' => $this->ID,\r
+ 'js' => $this->RESULT,\r
+ 'text' => $text,\r
+ );\r
+ $text = null;\r
+ $encoding = $this->SCRIPT_ENCODING;\r
+ $status = $this->RESULT !== null? 200 : 500;\r
+\r
+ // Try to use very fast json_encode: 3-4 times faster than a manual encoding.\r
+ if (function_exists('array_walk_recursive') && function_exists('json_encode') && $this->_unicodeConvMethod) {\r
+ $this->_nonAsciiChars = join("", array_map('chr', range(128, 255)));\r
+ $this->_toUtfFailed = false;\r
+ $resultUtf8 = $result;\r
+ array_walk_recursive($resultUtf8, array(&$this, '_toUtf8_callback'), $this->SCRIPT_ENCODING);\r
+ if (!$this->_toUtfFailed) {\r
+ // If some key contains non-ASCII character, convert everything manually.\r
+ $text = json_encode($resultUtf8);\r
+ $encoding = "UTF-8";\r
+ }\r
+ }\r
+ \r
+ // On failure, use manual encoding.\r
+ if ($text === null) {\r
+ $text = $this->php2js($result);\r
+ }\r
+\r
+ if ($this->LOADER != "xml") {\r
+ // In non-XML mode we cannot use plain JSON. So - wrap with JS function call.\r
+ // If top.JsHttpRequestGlobal is not defined, loading is aborted and \r
+ // iframe is removed, so - do not call dataReady().\r
+ $text = "" \r
+ . ($this->LOADER == "form"? 'top && top.JsHttpRequestGlobal && top.JsHttpRequestGlobal' : 'JsHttpRequest') \r
+ . ".dataReady(" . $text . ")\n"\r
+ . "";\r
+ if ($this->LOADER == "form") {\r
+ $text = '<script type="text/javascript" language="JavaScript"><!--' . "\n$text" . '//--></script>';\r
+ }\r
+ \r
+ // Always return 200 code in non-XML mode (else SCRIPT does not work in FF).\r
+ // For XML mode, 500 code is okay.\r
+ $status = 200;\r
+ }\r
+\r
+ // Status header. To be safe, display it only in error mode. In case of success \r
+ // termination, do not modify the status (""HTTP/1.1 ..." header seems to be not\r
+ // too cross-platform).\r
+ if ($this->RESULT === null) {\r
+ if (php_sapi_name() == "cgi") {\r
+ header("Status: $status");\r
+ } else {\r
+ header("HTTP/1.1 $status");\r
+ }\r
+ }\r
+\r
+ // In XMLHttpRequest mode we must return text/plain - damned stupid Opera 8.0. :(\r
+ $ctype = !empty($this->_contentTypes[$this->LOADER])? $this->_contentTypes[$this->LOADER] : $this->_contentTypes[''];\r
+ header("Content-type: $ctype; charset=$encoding");\r
+\r
+ return $text;\r
+ }\r
+\r
+\r
+ /**\r
+ * Internal function, used in array_walk_recursive() before json_encode() call.\r
+ * If a key contains non-ASCII characters, this function sets $this->_toUtfFailed = true,\r
+ * becaues array_walk_recursive() cannot modify array keys.\r
+ */\r
+ function _toUtf8_callback(&$v, $k, $fromEnc)\r
+ {\r
+ if ($v === null || is_bool($v)) return;\r
+ if ($this->_toUtfFailed || !is_scalar($v) || strpbrk($k, $this->_nonAsciiChars) !== false) {\r
+ $this->_toUtfFailed = true;\r
+ } else {\r
+ $v = $this->_unicodeConv($fromEnc, 'UTF-8', $v);\r
+ }\r
+ }\r
+ \r
+\r
+ /**\r
+ * Decode all %uXXXX entities in string or array (recurrent).\r
+ * String must not contain %XX entities - they are ignored!\r
+ */\r
+ function _ucs2EntitiesDecode($data)\r
+ {\r
+ if (is_array($data)) {\r
+ $d = array();\r
+ foreach ($data as $k=>$v) {\r
+ $d[$this->_ucs2EntitiesDecode($k)] = $this->_ucs2EntitiesDecode($v);\r
+ }\r
+ return $d;\r
+ } else {\r
+ if (strpos($data, '%u') !== false) { // improve speed\r
+ $data = preg_replace_callback('/%u([0-9A-F]{1,4})/si', array(&$this, '_ucs2EntitiesDecodeCallback'), $data);\r
+ }\r
+ return $data;\r
+ }\r
+ }\r
+\r
+\r
+ /**\r
+ * Decode one %uXXXX entity (RE callback).\r
+ */\r
+ function _ucs2EntitiesDecodeCallback($p)\r
+ {\r
+ $hex = $p[1];\r
+ $dec = hexdec($hex);\r
+ if ($dec === "38" && $this->SCRIPT_DECODE_MODE == 'entities') {\r
+ // Process "&" separately in "entities" decode mode.\r
+ $c = "&";\r
+ } else {\r
+ if ($this->_unicodeConvMethod) {\r
+ $c = @$this->_unicodeConv('UCS-2BE', $this->SCRIPT_ENCODING, pack('n', $dec));\r
+ } else {\r
+ $c = $this->_decUcs2Decode($dec, $this->SCRIPT_ENCODING);\r
+ }\r
+ if (!strlen($c)) {\r
+ if ($this->SCRIPT_DECODE_MODE == 'entities') {\r
+ $c = '&#' . $dec . ';';\r
+ } else {\r
+ $c = '?';\r
+ }\r
+ }\r
+ }\r
+ return $c;\r
+ }\r
+\r
+\r
+ /**\r
+ * Wrapper for iconv() or mb_convert_encoding() functions.\r
+ * This function will generate fatal error if none of these functons available!\r
+ * \r
+ * @see iconv()\r
+ */\r
+ function _unicodeConv($fromEnc, $toEnc, $v)\r
+ {\r
+ if ($this->_unicodeConvMethod == 'iconv') {\r
+ return iconv($fromEnc, $toEnc, $v);\r
+ } \r
+ return mb_convert_encoding($v, $toEnc, $fromEnc);\r
+ }\r
+\r
+\r
+ /**\r
+ * If there is no ICONV, try to decode 1-byte characters manually\r
+ * (for most popular charsets only).\r
+ */\r
+ \r
+ /**\r
+ * Convert from UCS-2BE decimal to $toEnc.\r
+ */\r
+ function _decUcs2Decode($code, $toEnc)\r
+ {\r
+ if ($code < 128) return chr($code);\r
+ if (isset($this->_encTables[$toEnc])) {\r
+ // TODO: possible speedup by using array_flip($this->_encTables) and later hash access in the constructor.\r
+ $p = array_search($code, $this->_encTables[$toEnc]);\r
+ if ($p !== false) return chr(128 + $p);\r
+ }\r
+ return "";\r
+ }\r
+ \r
+\r
+ /**\r
+ * UCS-2BE -> 1-byte encodings (from #128).\r
+ */\r
+ var $_encTables = array(\r
+ 'windows-1251' => array(\r
+ 0x0402, 0x0403, 0x201A, 0x0453, 0x201E, 0x2026, 0x2020, 0x2021,\r
+ 0x20AC, 0x2030, 0x0409, 0x2039, 0x040A, 0x040C, 0x040B, 0x040F,\r
+ 0x0452, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,\r
+ 0x0098, 0x2122, 0x0459, 0x203A, 0x045A, 0x045C, 0x045B, 0x045F,\r
+ 0x00A0, 0x040E, 0x045E, 0x0408, 0x00A4, 0x0490, 0x00A6, 0x00A7,\r
+ 0x0401, 0x00A9, 0x0404, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x0407,\r
+ 0x00B0, 0x00B1, 0x0406, 0x0456, 0x0491, 0x00B5, 0x00B6, 0x00B7,\r
+ 0x0451, 0x2116, 0x0454, 0x00BB, 0x0458, 0x0405, 0x0455, 0x0457,\r
+ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,\r
+ 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F,\r
+ 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,\r
+ 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F,\r
+ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,\r
+ 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F,\r
+ 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,\r
+ 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F,\r
+ ),\r
+ 'koi8-r' => array(\r
+ 0x2500, 0x2502, 0x250C, 0x2510, 0x2514, 0x2518, 0x251C, 0x2524,\r
+ 0x252C, 0x2534, 0x253C, 0x2580, 0x2584, 0x2588, 0x258C, 0x2590,\r
+ 0x2591, 0x2592, 0x2593, 0x2320, 0x25A0, 0x2219, 0x221A, 0x2248,\r
+ 0x2264, 0x2265, 0x00A0, 0x2321, 0x00B0, 0x00B2, 0x00B7, 0x00F7,\r
+ 0x2550, 0x2551, 0x2552, 0x0451, 0x2553, 0x2554, 0x2555, 0x2556,\r
+ 0x2557, 0x2558, 0x2559, 0x255A, 0x255B, 0x255C, 0x255d, 0x255E,\r
+ 0x255F, 0x2560, 0x2561, 0x0401, 0x2562, 0x2563, 0x2564, 0x2565,\r
+ 0x2566, 0x2567, 0x2568, 0x2569, 0x256A, 0x256B, 0x256C, 0x00A9,\r
+ 0x044E, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433,\r
+ 0x0445, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043d, 0x043E,\r
+ 0x043F, 0x044F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432,\r
+ 0x044C, 0x044B, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044A,\r
+ 0x042E, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413,\r
+ 0x0425, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041d, 0x041E,\r
+ 0x041F, 0x042F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412,\r
+ 0x042C, 0x042B, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042A \r
+ ),\r
+ );\r
+}\r
--- /dev/null
+<?php\r
+require_once 'JsHttpRequest.php';\r
+require_once 'tinyimages.php';\r
+\r
+$JsHttpRequest =& new JsHttpRequest('windows-1251');\r
+\r
+if(!isset($_REQUEST['m'])) {\r
+ $GLOBALS['_RESULT'] = array( 'error' => 'Íå çàäàí ìåòîä');\r
+ exit();\r
+}\r
+list($module, $method) = explode('->',$_REQUEST['m']);\r
+if(empty($method)) {\r
+ list($module, $method) = explode('-%3E',$_REQUEST['m']);\r
+}\r
+$method = 'ajax'.$method;\r
+\r
+$timgs = new tinyimages();\r
+\r
+$GLOBALS['_RESULT'] = $timgs->$method($_REQUEST);\r
+exit();
\ No newline at end of file
--- /dev/null
+<?php\r
+//session_start();\r
+\r
+include 'tinyimages.php';\r
+\r
+$images = new tinyimages();\r
+$images->UploadFiles();\r
+?>
\ No newline at end of file
--- /dev/null
+<?php\r
+class tinyimages {\r
+ \r
+ var $folder = '/media/upload/editor';\r
+ \r
+ function __construct() {\r
+ define(DIR, $_SERVER['DOCUMENT_ROOT'].'/');\r
+ \r
+ // ATTENTION!\r
+ // You need to check the session here, because methods of this class can be danger to security!\r
+ //if(!isset($_SESSION['user']['type'])) return false;\r
+ \r
+ $this->folder = $this->folder;\r
+ $this->restrict = $this->folder;\r
+ }\r
+ \r
+ private function leftPanel() {\r
+ $ret = array();\r
+ if ($handle = opendir ( DIR.$this->folder )) {\r
+ while (false !== ($file = readdir ( $handle ))) {\r
+ if (is_dir(DIR.$this->folder.'/'.$file) && $file != '.') {\r
+ $ret[] = array(\r
+ 'path' => $file,\r
+ 'name' => $file\r
+ );\r
+ }\r
+ }\r
+ closedir ($handle);\r
+ }\r
+ \r
+ if(count($ret) > 0) {\r
+ $return = '';\r
+ foreach ($ret as $val) {\r
+ if($val['path'] == '.thumbs') continue;\r
+ if($val['path'] == '..') {\r
+ $act = '';\r
+ if($this->folder == $this->restrict) continue;\r
+ $path = substr($this->folder,0,strrpos($this->folder,'/'));\r
+ if($path == '') continue;\r
+ }\r
+ else { $path = $this->folder.'/'.$val['path']; $act = 'onclick="activateDir(this, \''.$path.'\'); return false;"'; }\r
+ $return .= '<div class="folder"><a href="#" '.$act.' ondblclick="changeFolder(\''.$path.'\'); return false;">'.$val['name'].'</a></div>';\r
+ }\r
+ \r
+ $name = '';\r
+ \r
+ return $return;\r
+ }\r
+ }\r
+ \r
+ private function addressBar() {\r
+ $way = explode('/',str_replace($this->restrict, '', $this->folder));\r
+ $way = array_filter($way);\r
+ $ret = $link = '';\r
+ foreach ($way as $val) {\r
+ $link = $link.'/'.$val;\r
+ $ret .= '<a href="#" onclick="changeFolder(\''.$this->restrict.$link.'\'); return false;">'.$val.'</a>';\r
+ }\r
+ return '<a href="#" onclick="changeFolder(\''.$this->restrict.'\'); return false;" class="first"><img src="images/folder.gif" width="16" height="16" /></a>'.$ret;\r
+ }\r
+ \r
+ private function mainField() {\r
+ $ret = array();\r
+ if ($handle = opendir ( DIR.$this->folder )) {\r
+ while (false !== ($file = readdir ( $handle ))) {\r
+ if (is_file(DIR.$this->folder.'/'.$file)) {\r
+ \r
+ list($width, $height, $type, $attr) = getimagesize(DIR.$this->folder.'/'.$file);\r
+ \r
+ $size = number_format((filesize(DIR.$this->folder.'/'.$file)/1024),2,',',' ').' KB';\r
+ \r
+ $ret[] = array(\r
+ 'src' => $this->folder.'/.thumbs/100x100_'.$file,\r
+ 'attr' => $attr,\r
+ 'path' => $this->folder.'/'.$file,\r
+ 'name' => $file,\r
+ 'width' => $width,\r
+ 'height'=> $height,\r
+ 'size' => $size\r
+ );\r
+ }\r
+ }\r
+ closedir ($handle);\r
+ }\r
+ \r
+ \r
+ if(count($ret) > 0) {\r
+ $return = '';\r
+ foreach ($ret as $val) {\r
+ $width_for_insert = $val['width']>500?500:$val['width'];\r
+ $return .= '<div class="item" ondblclick="addImage(this,\''.$val['path'].'\','.$width_for_insert.');" onclick="activateItem(this,\''.$val['path'].'\');"><img src="'.$val['src'].'" width="100" height="100" alt=" " /><div class="labels">'.$val['width'].'x'.$val['height'].'</div><div class="labels">'.$val['size'].'</div></div>';\r
+ }\r
+ \r
+ $name = '';\r
+ \r
+ return $return.'<div style="clear:both;"></div>';\r
+ }\r
+ }\r
+ \r
+ function ajaxChangeDir($input) {\r
+ \r
+ $our_folder = $this->folder;\r
+ \r
+ if($input['uri'] != '') {\r
+ $this->folder = $input['uri'];\r
+ \r
+ $realpath1 = realpath(DIR.$our_folder);\r
+ $realpath2 = realpath(DIR.$input['uri']);\r
+ \r
+ $strlen1 = strlen($realpath1);\r
+ $strlen2 = strlen($realpath2);\r
+ if($strlen1 > $strlen2) { page404(); exit(); }\r
+ for($i=0;$i<$strlen1;$i++) {\r
+ if($realpath1[$i] != $realpath2[$i]) { page404(); exit(); }\r
+ }\r
+ }elseif(isset($_SESSION['tiny_folder'])) {\r
+ if($_SESSION['tiny_folder'] != '') {\r
+ $this->folder = $_SESSION['tiny_folder'];\r
+ }\r
+ }\r
+ \r
+ \r
+ $_SESSION['tiny_folder'] = $this->folder;\r
+ return array(\r
+ 'leftpanel' => $this->leftPanel(),\r
+ 'addressbar' => $this->addressBar(),\r
+ 'mainfield' => $this->mainField(),\r
+ 'uri' => $this->folder\r
+ );\r
+ }\r
+ \r
+ \r
+ \r
+ function ajaxDelDir($input) {\r
+ $our_folder = $this->folder;\r
+ \r
+ if($input['dir'] != '') {\r
+ $this->folder = $input['dir'];\r
+ \r
+ $realpath1 = realpath(DIR.$our_folder);\r
+ $realpath2 = realpath(DIR.$input['dir']);\r
+ \r
+ $strlen1 = strlen($realpath1);\r
+ $strlen2 = strlen($realpath2);\r
+ if($strlen1 > $strlen2) { page404(); exit(); }\r
+ for($i=0;$i<$strlen1;$i++) {\r
+ if($realpath1[$i] != $realpath2[$i]) { page404(); exit(); }\r
+ }\r
+ } else { page404(); exit(); }\r
+ \r
+ if ($handle = opendir ( DIR.$input['dir'] )) {\r
+ while (false !== ($file = readdir ( $handle ))) {\r
+ if (is_file(DIR.$input['dir'].'/'.$file)) {\r
+ \r
+ $thumb_info = pathinfo(DIR.$input['dir'].'/'.$file);\r
+ $thumb = $thumb_info['dirname'].'/.thumbs/100x100_'.$thumb_info['basename'];\r
+ unlink($thumb);\r
+ unlink(DIR.$input['dir'].'/'.$file);\r
+ }\r
+ }\r
+ closedir ($handle);\r
+ }\r
+ \r
+ if ($handle = opendir ( DIR.$input['dir'].'/.thumbs' )) {\r
+ while (false !== ($file = readdir ( $handle ))) {\r
+ if (is_file(DIR.$input['dir'].'/.thumbs'.'/'.$file)) {\r
+ \r
+ $thumb_info = pathinfo(DIR.$input['dir'].'/.thumbs'.'/'.$file);\r
+ $thumb = $thumb_info['dirname'].'/.thumbs/100x100_'.$thumb_info['basename'];\r
+ unlink($thumb);\r
+ unlink(DIR.$input['dir'].'/.thumbs'.'/'.$file);\r
+ }\r
+ }\r
+ closedir ($handle);\r
+ }\r
+ rmdir(DIR.$input['dir'].'/.thumbs');\r
+ \r
+ if(!rmdir(DIR.$input['dir'])) {\r
+ if($input['lng']=='ru') {\r
+ return array('error'=>'Îøèáêà óäàëåíèÿ ïàïêè, âîçìîæíî îíà ñîäåðæèò íå óäàëåííûå êàòàëîãè!');\r
+ } else {\r
+ return array('error'=>'Error delete a folder, perhaps it has not deleted directories!');\r
+ }\r
+ } else return array();\r
+ \r
+ }\r
+ \r
+ \r
+ function ajaxDelFile($input) {\r
+ \r
+ $error = array();\r
+ \r
+ $input['src'] = array_filter($input['src']);\r
+ \r
+ $input['src'] = array_unique($input['src']);\r
+ \r
+ foreach ($input['src'] as $key=>$val) {\r
+ if(!is_numeric($key)) continue;\r
+ $our_folder = $this->folder;\r
+ $pi = pathinfo($val);\r
+ $input['uri'] = $pi['dirname'];\r
+ \r
+ if($input['uri'] != '') {\r
+ $this->folder = $input['uri'];\r
+ \r
+ $realpath1 = realpath(DIR.$our_folder);\r
+ $realpath2 = realpath(DIR.$input['uri']);\r
+ \r
+ $strlen1 = strlen($realpath1);\r
+ $strlen2 = strlen($realpath2);\r
+ if($strlen1 > $strlen2) { page404(); exit(); }\r
+ for($i=0;$i<$strlen1;$i++) {\r
+ if($realpath1[$i] != $realpath2[$i]) { page404(); exit(); }\r
+ }\r
+ } else { page404(); exit(); }\r
+ \r
+ if(is_file(DIR.$input['src'][$key])) {\r
+ $thumb_info = pathinfo(DIR.$input['src'][$key]);\r
+ $thumb = $thumb_info['dirname'].'/.thumbs/100x100_'.$thumb_info['basename'];\r
+ unlink($thumb);\r
+ unlink(DIR.$input['src'][$key]);\r
+ } else {\r
+ if($input['lng']=='ru') { \r
+ $error[] = 'Ôàéë '.$val.' íå íàéäåí!';\r
+ } else {\r
+ $error[] = 'File '.$val.' not found!';\r
+ }\r
+ }\r
+ \r
+ }\r
+ \r
+ if(count($error) > 0) return array('error'=>implode(', ',$error));\r
+ else return array();\r
+ }\r
+ \r
+ \r
+ function UploadFiles() {\r
+ $our_folder = $this->folder;\r
+ \r
+ if($_GET['uri'] != '') {\r
+ $this->folder = $_GET['uri'];\r
+ \r
+ $realpath1 = realpath(DIR.$our_folder);\r
+ $realpath2 = realpath(DIR.$_GET['uri']);\r
+ \r
+ $strlen1 = strlen($realpath1);\r
+ $strlen2 = strlen($realpath2);\r
+ \r
+ if($strlen1 > $strlen2) { page404(); exit(); }\r
+ for($i=0;$i<$strlen1;$i++) {\r
+ if($realpath1[$i] != $realpath2[$i]) { page404(); exit(); }\r
+ }\r
+ }\r
+ \r
+ $result = array();\r
+\r
+ if (isset($_FILES['photoupload'])) {\r
+ $file = $_FILES['photoupload']['tmp_name'];\r
+ $error = false;\r
+ $size = false;\r
+\r
+ if (!is_uploaded_file($file) || ($_FILES['photoupload']['size'] > 2 * 1024 * 1024) ) {\r
+ if($_GET['lng']=='ru') {\r
+ $error = 'Ïîæàëóéñòà, çàãðóæàéòå ôàéëû íå áîëåå 2Ìá!';\r
+ } else {\r
+ $error = 'Please do not upload files over 2Mb!';\r
+ }\r
+ } else\r
+ if (!$error && !($size = @getimagesize($file) ) ) {\r
+ if($_GET['lng']=='ru') {\r
+ $error = 'Îøèáêà, íå âåðíûé òèï ôàéëà';\r
+ } else {\r
+ $error = 'Error, unsupported type of file';\r
+ }\r
+ } else\r
+ if (!$error && !in_array($size[2], array(1, 2, 3, 7, 8) ) ) {\r
+ if($_GET['lng']=='ru') {\r
+ $error = 'Îøèáêà òèïà ôàéëà, ðåêîìåíäóåòñÿ çàãðóæàòü ôàéëû JPEG';\r
+ } else {\r
+ $error = 'Error type of file, recommend upload JPEG files';\r
+ }\r
+ } else\r
+ if (!$error && ($size[0] < 5) || ($size[1] < 5)) {\r
+ if($_GET['lng']=='ru') {\r
+ $error = 'Ïîæàëóéñòà, çàãðóæàéòå êàðòèíêè ðàçìåðîì áîëåå 5px.';\r
+ } else {\r
+ $error = 'Please upload pictures larger than 5px.';\r
+ }\r
+ }\r
+ if ($error) {\r
+ $result['result'] = 'failed';\r
+ $result['error'] = $error;\r
+ }\r
+ else {\r
+ $ext = substr($_FILES['photoupload']['name'],strrpos($_FILES['photoupload']['name'],'.')+1);\r
+ $name = md5_file($_FILES['photoupload']['tmp_name']);\r
+ $source = DIR.$this->folder.'/'.$name.'.'.$ext;\r
+ \r
+ if(!copy($_FILES['photoupload']['tmp_name'], $source)) {\r
+ $result['result'] = 'error';\r
+ if($_GET['lng']=='ru') {\r
+ $result['error'] = 'Îøèáêà ïðè êîïèðîâàíèè ôàéëà!';\r
+ } else {\r
+ $result['error'] = 'Failed to copy a file!';\r
+ }\r
+ } else {\r
+ \r
+ if(!file_exists(DIR.$this->folder.'/.thumbs')) mkdir(DIR.$this->folder.'/.thumbs');\r
+ $thumb = DIR.$this->folder.'/.thumbs/100x100_'.$name.'.'.$ext;\r
+ \r
+ //$image = new files('tinyimages');\r
+ $this->Resize($source,$thumb,100,100,'back-ffffff');\r
+ \r
+ $result['result'] = 'success';\r
+ if($_GET['lng']=='ru') {\r
+ $result['size'] = "Çàãðóæåíî èçîáðàæåíèå ({$size['mime']}) ðàçìåðîì {$size[0]}px/{$size[1]}px.";\r
+ } else {\r
+ $result['size'] = "Uploaded image ({$size['mime']}) size {$size[0]}px/{$size[1]}px.";\r
+ }\r
+ }\r
+ }\r
+ }\r
+ else {\r
+ $result['result'] = 'error';\r
+ if($_GET['lng']=='ru') {\r
+ $result['error'] = 'Íåò ôàéëà èëè âíóòðåííÿÿ îøèáêà!';\r
+ } else {\r
+ $result['error'] = 'No file or an internal error!';\r
+ }\r
+ }\r
+ if (!headers_sent() ) {\r
+ header('Content-type: application/json');\r
+ }\r
+ \r
+ foreach ($result as $key=>$val) {
+ $return[$key] = iconv("windows-1251", "utf-8", $val);
+ }
+ \r
+ \r
+ header("Content-Type: text/plain; charset=UTF-8");\r
+ echo json_encode($return);\r
+ exit();\r
+ }\r
+ \r
+ function ajaxMakeFolder($input) {\r
+ \r
+ if($input['lng']=='ru') {\r
+ if(trim($input['name']) == '') return array('error' => 'Íå çàäàíî èìÿ');\r
+ } else {\r
+ if(trim($input['name']) == '') return array('error' => 'Not a name');\r
+ }\r
+ \r
+ if($input['uri'] != '') {\r
+ $this->folder = $input['uri'];\r
+ \r
+ $realpath1 = realpath(DIR.$our_folder);\r
+ $realpath2 = realpath(DIR.$input['uri']);\r
+ \r
+ $strlen1 = strlen($realpath1);\r
+ $strlen2 = strlen($realpath2);\r
+ \r
+ if($strlen1 > $strlen2) { page404(); exit(); }\r
+ for($i=0;$i<$strlen1;$i++) {\r
+ if($realpath1[$i] != $realpath2[$i]) { page404(); exit(); }\r
+ }\r
+ }\r
+ \r
+ if(mkdir(DIR.$this->folder.'/'.$input['name'])) { return array(); }\r
+ else {\r
+ if($input['lng']=='ru') {\r
+ array('error' => 'Íå óäàëîñü ñîçäàòü ïàïêó');\r
+ } else {\r
+ array('error' => 'Unable to create a folder');\r
+ }\r
+ }\r
+ }\r
+ \r
+ \r
+ function Resize($filename, $dest, $width, $height, $pictype = "") {\r
+ $format = strtolower(substr(strrchr($filename,"."),1));\r
+ switch($format)\r
+ {\r
+ case 'gif' :\r
+ $type ="gif";\r
+ $img = ImageCreateFromGif($filename);\r
+ break;\r
+ case 'png' :\r
+ $type ="png";\r
+ $img = ImageCreateFromPng($filename);\r
+ break;\r
+ case 'jpg' :\r
+ $type ="jpg";\r
+ $img = ImageCreateFromJpeg($filename);\r
+ break;\r
+ case 'jpeg' :\r
+ $type ="jpg";\r
+ $img = ImageCreateFromJpeg($filename);\r
+ break;\r
+ default :\r
+ return false;\r
+ break;\r
+ }\r
+\r
+ list($org_width, $org_height) = getimagesize($filename);\r
+ $xoffset = 0;\r
+ $yoffset = 0;\r
+ if ($pictype == "thumb") // To minimize destortion\r
+ {\r
+ if ($org_width / $width > $org_height/ $height)\r
+ {\r
+ $xtmp = $org_width;\r
+ $xratio = 1-((($org_width/$org_height)-($width/$height))/2);\r
+ $org_width = $org_width * $xratio;\r
+ $xoffset = ($xtmp - $org_width)/2;\r
+ }\r
+ elseif ($org_height/ $height > $org_width / $width)\r
+ {\r
+ $ytmp = $org_height;\r
+ $yratio = 1-((($width/$height)-($org_width/$org_height))/2);\r
+ $org_height = $org_height * $yratio;\r
+ $yoffset = ($ytmp - $org_height)/2;\r
+ }\r
+ //Added this else part -------------\r
+ } elseif(substr($pictype,0,4) == "back") {\r
+ $xtmp = $org_width/$width;\r
+ $new_width = $width;\r
+ $new_height = $org_height/$xtmp;\r
+ if ($new_height > $org_height && $new_width > $org_width) {\r
+ $new_height = $org_height;\r
+ $new_width = $org_width;\r
+ } elseif ($new_height > $height){\r
+ $ytmp = $org_height/$height;\r
+ $new_height = $height;\r
+ $new_width = $org_width/$ytmp;\r
+ }\r
+ $width_d = round($new_width)<$width?$width:round($new_width);\r
+ $height_d = round($new_height)<$height?$height:round($new_height);\r
+ \r
+ $width = round($new_width);\r
+ $height = round($new_height);\r
+ \r
+ $width_diff = $width_d - $width;\r
+ $height_diff = $height_d - $height;\r
+ } else {\r
+ $xtmp = $org_width/$width;\r
+ $new_width = $width;\r
+ $new_height = $org_height/$xtmp;\r
+ if ($new_height > $height){\r
+ $ytmp = $org_height/$height;\r
+ $new_height = $height;\r
+ $new_width = $org_width/$ytmp;\r
+ }\r
+ $width = round($new_width);\r
+ $height = round($new_height);\r
+ }\r
+\r
+ if(substr($pictype,0,4) == "back") {\r
+ $img_n=imagecreatetruecolor ($width+$width_diff, $height+$height_diff);\r
+ $r = hexdec(substr($pictype,5,2));\r
+ $g = hexdec(substr($pictype,7,2));\r
+ $b = hexdec(substr($pictype,9,2));\r
+ $back = imagecolorallocate($img_n, $r, $g, $b);\r
+ imagefill($img_n, 0, 0, $back);\r
+ imagecopyresampled($img_n, $img, round($width_diff/2), round($height_diff/2), $xoffset, $yoffset, $width, $height, $org_width, $org_height);\r
+ } else {\r
+ $img_n=imagecreatetruecolor ($width, $height);\r
+ imagecopyresampled($img_n, $img, 0, 0, $xoffset, $yoffset, $width, $height, $org_width, $org_height);\r
+ }\r
+\r
+ if($type=="gif")\r
+ {\r
+ imagegif($img_n, $dest);\r
+ }\r
+ elseif($type=="jpg")\r
+ {\r
+ imagejpeg($img_n, $dest, 100);\r
+ }\r
+ elseif($type=="png")\r
+ {\r
+ imagepng($img_n, $dest);\r
+ }\r
+ elseif($type=="bmp")\r
+ {\r
+ imagewbmp($img_n, $dest);\r
+ }\r
+ return true;\r
+ }\r
+}\r
+\r
+?>
\ No newline at end of file
--- /dev/null
+(function(){var DOM=tinymce.DOM,Element=tinymce.dom.Element,Event=tinymce.dom.Event,each=tinymce.each,is=tinymce.is;tinymce.create('tinymce.plugins.InlinePopups',{init:function(ed,url){ed.onBeforeRenderUI.add(function(){ed.windowManager=new tinymce.InlineWindowManager(ed);DOM.loadCSS(url+'/skins/'+(ed.settings.inlinepopups_skin||'clearlooks2')+"/window.css");});},getInfo:function(){return{longname:'InlinePopups',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/inlinepopups',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.create('tinymce.InlineWindowManager:tinymce.WindowManager',{InlineWindowManager:function(ed){var t=this;t.parent(ed);t.zIndex=300000;t.count=0;},open:function(f,p){var t=this,id,opt='',ed=t.editor,dw=0,dh=0,vp,po,mdf,clf,we,w,u;f=f||{};p=p||{};if(!f.inline)return t.parent(f,p);if(!f.type)t.bookmark=ed.selection.getBookmark('simple');id=DOM.uniqueId();vp=DOM.getViewPort();f.width=parseInt(f.width||320);f.height=parseInt(f.height||240)+(tinymce.isIE?8:0);f.min_width=parseInt(f.min_width||150);f.min_height=parseInt(f.min_height||100);f.max_width=parseInt(f.max_width||2000);f.max_height=parseInt(f.max_height||2000);f.left=f.left||Math.round(Math.max(vp.x,vp.x+(vp.w/ 2.0) - (f.width /2.0)));f.top=f.top||Math.round(Math.max(vp.y,vp.y+(vp.h/ 2.0) - (f.height /2.0)));f.movable=f.resizable=true;p.mce_width=f.width;p.mce_height=f.height;p.mce_inline=true;p.mce_window_id=id;p.mce_auto_focus=f.auto_focus;t.features=f;t.params=p;t.onOpen.dispatch(t,f,p);if(f.type){opt+=' mceModal';if(f.type)opt+=' mce'+f.type.substring(0,1).toUpperCase()+f.type.substring(1);f.resizable=false;}if(f.statusbar)opt+=' mceStatusbar';if(f.resizable)opt+=' mceResizable';if(f.minimizable)opt+=' mceMinimizable';if(f.maximizable)opt+=' mceMaximizable';if(f.movable)opt+=' mceMovable';t._addAll(DOM.doc.body,['div',{id:id,'class':ed.settings.inlinepopups_skin||'clearlooks2',style:'width:100px;height:100px'},['div',{id:id+'_wrapper','class':'mceWrapper'+opt},['div',{id:id+'_top','class':'mceTop'},['div',{'class':'mceLeft'}],['div',{'class':'mceCenter'}],['div',{'class':'mceRight'}],['span',{id:id+'_title'},f.title||'']],['div',{id:id+'_middle','class':'mceMiddle'},['div',{id:id+'_left','class':'mceLeft'}],['span',{id:id+'_content'}],['div',{id:id+'_right','class':'mceRight'}]],['div',{id:id+'_bottom','class':'mceBottom'},['div',{'class':'mceLeft'}],['div',{'class':'mceCenter'}],['div',{'class':'mceRight'}],['span',{id:id+'_status'},'Content']],['a',{'class':'mceMove',tabindex:'-1',href:'javascript:;'}],['a',{'class':'mceMin',tabindex:'-1',href:'javascript:;',onmousedown:'return false;'}],['a',{'class':'mceMax',tabindex:'-1',href:'javascript:;',onmousedown:'return false;'}],['a',{'class':'mceMed',tabindex:'-1',href:'javascript:;',onmousedown:'return false;'}],['a',{'class':'mceClose',tabindex:'-1',href:'javascript:;',onmousedown:'return false;'}],['a',{id:id+'_resize_n','class':'mceResize mceResizeN',tabindex:'-1',href:'javascript:;'}],['a',{id:id+'_resize_s','class':'mceResize mceResizeS',tabindex:'-1',href:'javascript:;'}],['a',{id:id+'_resize_w','class':'mceResize mceResizeW',tabindex:'-1',href:'javascript:;'}],['a',{id:id+'_resize_e','class':'mceResize mceResizeE',tabindex:'-1',href:'javascript:;'}],['a',{id:id+'_resize_nw','class':'mceResize mceResizeNW',tabindex:'-1',href:'javascript:;'}],['a',{id:id+'_resize_ne','class':'mceResize mceResizeNE',tabindex:'-1',href:'javascript:;'}],['a',{id:id+'_resize_sw','class':'mceResize mceResizeSW',tabindex:'-1',href:'javascript:;'}],['a',{id:id+'_resize_se','class':'mceResize mceResizeSE',tabindex:'-1',href:'javascript:;'}]]]);DOM.setStyles(id,{top:-10000,left:-10000});if(tinymce.isGecko)DOM.setStyle(id,'overflow','auto');if(!f.type){dw+=DOM.get(id+'_left').clientWidth;dw+=DOM.get(id+'_right').clientWidth;dh+=DOM.get(id+'_top').clientHeight;dh+=DOM.get(id+'_bottom').clientHeight;}DOM.setStyles(id,{top:f.top,left:f.left,width:f.width+dw,height:f.height+dh});u=f.url||f.file;if(u){if(tinymce.relaxedDomain)u+=(u.indexOf('?')==-1?'?':'&')+'mce_rdomain='+tinymce.relaxedDomain;u=tinymce._addVer(u);}if(!f.type){DOM.add(id+'_content','iframe',{id:id+'_ifr',src:'javascript:""',frameBorder:0,style:'border:0;width:10px;height:10px'});DOM.setStyles(id+'_ifr',{width:f.width,height:f.height});DOM.setAttrib(id+'_ifr','src',u);}else{DOM.add(id+'_wrapper','a',{id:id+'_ok','class':'mceButton mceOk',href:'javascript:;',onmousedown:'return false;'},'Ok');if(f.type=='confirm')DOM.add(id+'_wrapper','a',{'class':'mceButton mceCancel',href:'javascript:;',onmousedown:'return false;'},'Cancel');DOM.add(id+'_middle','div',{'class':'mceIcon'});DOM.setHTML(id+'_content',f.content.replace('\n','<br />'));}mdf=Event.add(id,'mousedown',function(e){var n=e.target,w,vp;w=t.windows[id];t.focus(id);if(n.nodeName=='A'||n.nodeName=='a'){if(n.className=='mceMax'){w.oldPos=w.element.getXY();w.oldSize=w.element.getSize();vp=DOM.getViewPort();vp.w-=2;vp.h-=2;w.element.moveTo(vp.x,vp.y);w.element.resizeTo(vp.w,vp.h);DOM.setStyles(id+'_ifr',{width:vp.w-w.deltaWidth,height:vp.h-w.deltaHeight});DOM.addClass(id+'_wrapper','mceMaximized');}else if(n.className=='mceMed'){w.element.moveTo(w.oldPos.x,w.oldPos.y);w.element.resizeTo(w.oldSize.w,w.oldSize.h);w.iframeElement.resizeTo(w.oldSize.w-w.deltaWidth,w.oldSize.h-w.deltaHeight);DOM.removeClass(id+'_wrapper','mceMaximized');}else if(n.className=='mceMove')return t._startDrag(id,e,n.className);else if(DOM.hasClass(n,'mceResize'))return t._startDrag(id,e,n.className.substring(13));}});clf=Event.add(id,'click',function(e){var n=e.target;t.focus(id);if(n.nodeName=='A'||n.nodeName=='a'){switch(n.className){case'mceClose':t.close(null,id);return Event.cancel(e);case'mceButton mceOk':case'mceButton mceCancel':f.button_func(n.className=='mceButton mceOk');return Event.cancel(e);}}});t.windows=t.windows||{};w=t.windows[id]={id:id,mousedown_func:mdf,click_func:clf,element:new Element(id,{blocker:1,container:ed.getContainer()}),iframeElement:new Element(id+'_ifr'),features:f,deltaWidth:dw,deltaHeight:dh};w.iframeElement.on('focus',function(){t.focus(id);});if(t.count==0&&t.editor.getParam('dialog_type','modal')=='modal'){DOM.add(DOM.doc.body,'div',{id:'mceModalBlocker','class':(t.editor.settings.inlinepopups_skin||'clearlooks2')+'_modalBlocker',style:{left:vp.x,top:vp.y,zIndex:t.zIndex-1}});DOM.show('mceModalBlocker');}else DOM.setStyle('mceModalBlocker','z-index',t.zIndex-1);if(tinymce.isIE6||(tinymce.isIE&&!DOM.boxModel))DOM.setStyles('mceModalBlocker',{position:'absolute',width:vp.w-2,height:vp.h-2});t.focus(id);t._fixIELayout(id,1);if(DOM.get(id+'_ok'))DOM.get(id+'_ok').focus();t.count++;return w;},focus:function(id){var t=this,w=t.windows[id];w.zIndex=this.zIndex++;w.element.setStyle('zIndex',w.zIndex);w.element.update();id=id+'_wrapper';DOM.removeClass(t.lastId,'mceFocus');DOM.addClass(id,'mceFocus');t.lastId=id;},_addAll:function(te,ne){var i,n,t=this,dom=tinymce.DOM;if(is(ne,'string'))te.appendChild(dom.doc.createTextNode(ne));else if(ne.length){te=te.appendChild(dom.create(ne[0],ne[1]));for(i=2;i<ne.length;i++)t._addAll(te,ne[i]);}},_startDrag:function(id,se,ac){var t=this,mu,mm,d=DOM.doc,eb,w=t.windows[id],we=w.element,sp=we.getXY(),p,sz,ph,cp,vp,sx,sy,sex,sey,dx,dy,dw,dh;cp={x:0,y:0};vp=DOM.getViewPort();vp.w-=2;vp.h-=2;sex=se.screenX;sey=se.screenY;dx=dy=dw=dh=0;mu=Event.add(d,'mouseup',function(e){Event.remove(d,'mouseup',mu);Event.remove(d,'mousemove',mm);if(eb)eb.remove();we.moveBy(dx,dy);we.resizeBy(dw,dh);sz=we.getSize();DOM.setStyles(id+'_ifr',{width:sz.w-w.deltaWidth,height:sz.h-w.deltaHeight});t._fixIELayout(id,1);return Event.cancel(e);});if(ac!='Move')startMove();function startMove(){if(eb)return;t._fixIELayout(id,0);DOM.add(d.body,'div',{id:'mceEventBlocker','class':'mceEventBlocker '+(t.editor.settings.inlinepopups_skin||'clearlooks2'),style:{left:vp.x,top:vp.y,zIndex:t.zIndex+1}});if(tinymce.isIE6||(tinymce.isIE&&!DOM.boxModel))DOM.setStyles('mceEventBlocker',{position:'absolute',width:vp.w-2,height:vp.h-2});eb=new Element('mceEventBlocker');eb.update();p=we.getXY();sz=we.getSize();sx=cp.x+p.x-vp.x;sy=cp.y+p.y-vp.y;DOM.add(eb.get(),'div',{id:'mcePlaceHolder','class':'mcePlaceHolder',style:{left:sx,top:sy,width:sz.w,height:sz.h}});ph=new Element('mcePlaceHolder');};mm=Event.add(d,'mousemove',function(e){var x,y,v;startMove();x=e.screenX-sex;y=e.screenY-sey;switch(ac){case'ResizeW':dx=x;dw=0-x;break;case'ResizeE':dw=x;break;case'ResizeN':case'ResizeNW':case'ResizeNE':if(ac=="ResizeNW"){dx=x;dw=0-x;}else if(ac=="ResizeNE")dw=x;dy=y;dh=0-y;break;case'ResizeS':case'ResizeSW':case'ResizeSE':if(ac=="ResizeSW"){dx=x;dw=0-x;}else if(ac=="ResizeSE")dw=x;dh=y;break;case'mceMove':dx=x;dy=y;break;}if(dw<(v=w.features.min_width-sz.w)){if(dx!==0)dx+=dw-v;dw=v;}if(dh<(v=w.features.min_height-sz.h)){if(dy!==0)dy+=dh-v;dh=v;}dw=Math.min(dw,w.features.max_width-sz.w);dh=Math.min(dh,w.features.max_height-sz.h);dx=Math.max(dx,vp.x-(sx+vp.x));dy=Math.max(dy,vp.y-(sy+vp.y));dx=Math.min(dx,(vp.w+vp.x)-(sx+sz.w+vp.x));dy=Math.min(dy,(vp.h+vp.y)-(sy+sz.h+vp.y));if(dx+dy!==0){if(sx+dx<0)dx=0;if(sy+dy<0)dy=0;ph.moveTo(sx+dx,sy+dy);}if(dw+dh!==0)ph.resizeTo(sz.w+dw,sz.h+dh);return Event.cancel(e);});return Event.cancel(se);},resizeBy:function(dw,dh,id){var w=this.windows[id];if(w){w.element.resizeBy(dw,dh);w.iframeElement.resizeBy(dw,dh);}},close:function(win,id){var t=this,w,d=DOM.doc,ix=0,fw,id;id=t._findId(id||win);t.count--;if(t.count==0)DOM.remove('mceModalBlocker');if(!id&&win){t.parent(win);return;}if(w=t.windows[id]){t.onClose.dispatch(t);Event.remove(d,'mousedown',w.mousedownFunc);Event.remove(d,'click',w.clickFunc);Event.clear(id);Event.clear(id+'_ifr');DOM.setAttrib(id+'_ifr','src','javascript:""');w.element.remove();delete t.windows[id];each(t.windows,function(w){if(w.zIndex>ix){fw=w;ix=w.zIndex;}});if(fw)t.focus(fw.id);}},setTitle:function(w,ti){var e;w=this._findId(w);if(e=DOM.get(w+'_title'))e.innerHTML=DOM.encode(ti);},alert:function(txt,cb,s){var t=this,w;w=t.open({title:t,type:'alert',button_func:function(s){if(cb)cb.call(s||t,s);t.close(null,w.id);},content:DOM.encode(t.editor.getLang(txt,txt)),inline:1,width:400,height:130});},confirm:function(txt,cb,s){var t=this,w;w=t.open({title:t,type:'confirm',button_func:function(s){if(cb)cb.call(s||t,s);t.close(null,w.id);},content:DOM.encode(t.editor.getLang(txt,txt)),inline:1,width:400,height:130});},_findId:function(w){var t=this;if(typeof(w)=='string')return w;each(t.windows,function(wo){var ifr=DOM.get(wo.id+'_ifr');if(ifr&&w==ifr.contentWindow){w=wo.id;return false;}});return w;},_fixIELayout:function(id,s){var w,img;if(!tinymce.isIE6)return;each(['n','s','w','e','nw','ne','sw','se'],function(v){var e=DOM.get(id+'_resize_'+v);DOM.setStyles(e,{width:s?e.clientWidth:'',height:s?e.clientHeight:'',cursor:DOM.getStyle(e,'cursor',1)});DOM.setStyle(id+"_bottom",'bottom','-1px');e=0;});if(w=this.windows[id]){w.element.hide();w.element.show();each(DOM.select('div,a',id),function(e,i){if(e.currentStyle.backgroundImage!='none'){img=new Image();img.src=e.currentStyle.backgroundImage.replace(/url\(\"(.+)\"\)/,'$1');}});DOM.get(id).style.filter='';}}});tinymce.PluginManager.add('inlinepopups',tinymce.plugins.InlinePopups);})();
\ No newline at end of file
--- /dev/null
+/**\r
+ * $Id: editor_plugin_src.js 898 2008-07-12 15:01:39Z spocke $\r
+ *\r
+ * @author Moxiecode\r
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+(function() {\r
+ var DOM = tinymce.DOM, Element = tinymce.dom.Element, Event = tinymce.dom.Event, each = tinymce.each, is = tinymce.is;\r
+\r
+ tinymce.create('tinymce.plugins.InlinePopups', {\r
+ init : function(ed, url) {\r
+ // Replace window manager\r
+ ed.onBeforeRenderUI.add(function() {\r
+ ed.windowManager = new tinymce.InlineWindowManager(ed);\r
+ DOM.loadCSS(url + '/skins/' + (ed.settings.inlinepopups_skin || 'clearlooks2') + "/window.css");\r
+ });\r
+ },\r
+\r
+ getInfo : function() {\r
+ return {\r
+ longname : 'InlinePopups',\r
+ author : 'Moxiecode Systems AB',\r
+ authorurl : 'http://tinymce.moxiecode.com',\r
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/inlinepopups',\r
+ version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+ };\r
+ }\r
+ });\r
+\r
+ tinymce.create('tinymce.InlineWindowManager:tinymce.WindowManager', {\r
+ InlineWindowManager : function(ed) {\r
+ var t = this;\r
+\r
+ t.parent(ed);\r
+ t.zIndex = 300000;\r
+ t.count = 0;\r
+ },\r
+\r
+ open : function(f, p) {\r
+ var t = this, id, opt = '', ed = t.editor, dw = 0, dh = 0, vp, po, mdf, clf, we, w, u;\r
+\r
+ f = f || {};\r
+ p = p || {};\r
+\r
+ // Run native windows\r
+ if (!f.inline)\r
+ return t.parent(f, p);\r
+\r
+ // Only store selection if the type is a normal window\r
+ if (!f.type)\r
+ t.bookmark = ed.selection.getBookmark('simple');\r
+\r
+ id = DOM.uniqueId();\r
+ vp = DOM.getViewPort();\r
+ f.width = parseInt(f.width || 320);\r
+ f.height = parseInt(f.height || 240) + (tinymce.isIE ? 8 : 0);\r
+ f.min_width = parseInt(f.min_width || 150);\r
+ f.min_height = parseInt(f.min_height || 100);\r
+ f.max_width = parseInt(f.max_width || 2000);\r
+ f.max_height = parseInt(f.max_height || 2000);\r
+ f.left = f.left || Math.round(Math.max(vp.x, vp.x + (vp.w / 2.0) - (f.width / 2.0)));\r
+ f.top = f.top || Math.round(Math.max(vp.y, vp.y + (vp.h / 2.0) - (f.height / 2.0)));\r
+ f.movable = f.resizable = true;\r
+ p.mce_width = f.width;\r
+ p.mce_height = f.height;\r
+ p.mce_inline = true;\r
+ p.mce_window_id = id;\r
+ p.mce_auto_focus = f.auto_focus;\r
+\r
+ // Transpose\r
+// po = DOM.getPos(ed.getContainer());\r
+// f.left -= po.x;\r
+// f.top -= po.y;\r
+\r
+ t.features = f;\r
+ t.params = p;\r
+ t.onOpen.dispatch(t, f, p);\r
+\r
+ if (f.type) {\r
+ opt += ' mceModal';\r
+\r
+ if (f.type)\r
+ opt += ' mce' + f.type.substring(0, 1).toUpperCase() + f.type.substring(1);\r
+\r
+ f.resizable = false;\r
+ }\r
+\r
+ if (f.statusbar)\r
+ opt += ' mceStatusbar';\r
+\r
+ if (f.resizable)\r
+ opt += ' mceResizable';\r
+\r
+ if (f.minimizable)\r
+ opt += ' mceMinimizable';\r
+\r
+ if (f.maximizable)\r
+ opt += ' mceMaximizable';\r
+\r
+ if (f.movable)\r
+ opt += ' mceMovable';\r
+\r
+ // Create DOM objects\r
+ t._addAll(DOM.doc.body, \r
+ ['div', {id : id, 'class' : ed.settings.inlinepopups_skin || 'clearlooks2', style : 'width:100px;height:100px'}, \r
+ ['div', {id : id + '_wrapper', 'class' : 'mceWrapper' + opt},\r
+ ['div', {id : id + '_top', 'class' : 'mceTop'}, \r
+ ['div', {'class' : 'mceLeft'}],\r
+ ['div', {'class' : 'mceCenter'}],\r
+ ['div', {'class' : 'mceRight'}],\r
+ ['span', {id : id + '_title'}, f.title || '']\r
+ ],\r
+\r
+ ['div', {id : id + '_middle', 'class' : 'mceMiddle'}, \r
+ ['div', {id : id + '_left', 'class' : 'mceLeft'}],\r
+ ['span', {id : id + '_content'}],\r
+ ['div', {id : id + '_right', 'class' : 'mceRight'}]\r
+ ],\r
+\r
+ ['div', {id : id + '_bottom', 'class' : 'mceBottom'},\r
+ ['div', {'class' : 'mceLeft'}],\r
+ ['div', {'class' : 'mceCenter'}],\r
+ ['div', {'class' : 'mceRight'}],\r
+ ['span', {id : id + '_status'}, 'Content']\r
+ ],\r
+\r
+ ['a', {'class' : 'mceMove', tabindex : '-1', href : 'javascript:;'}],\r
+ ['a', {'class' : 'mceMin', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}],\r
+ ['a', {'class' : 'mceMax', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}],\r
+ ['a', {'class' : 'mceMed', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}],\r
+ ['a', {'class' : 'mceClose', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}],\r
+ ['a', {id : id + '_resize_n', 'class' : 'mceResize mceResizeN', tabindex : '-1', href : 'javascript:;'}],\r
+ ['a', {id : id + '_resize_s', 'class' : 'mceResize mceResizeS', tabindex : '-1', href : 'javascript:;'}],\r
+ ['a', {id : id + '_resize_w', 'class' : 'mceResize mceResizeW', tabindex : '-1', href : 'javascript:;'}],\r
+ ['a', {id : id + '_resize_e', 'class' : 'mceResize mceResizeE', tabindex : '-1', href : 'javascript:;'}],\r
+ ['a', {id : id + '_resize_nw', 'class' : 'mceResize mceResizeNW', tabindex : '-1', href : 'javascript:;'}],\r
+ ['a', {id : id + '_resize_ne', 'class' : 'mceResize mceResizeNE', tabindex : '-1', href : 'javascript:;'}],\r
+ ['a', {id : id + '_resize_sw', 'class' : 'mceResize mceResizeSW', tabindex : '-1', href : 'javascript:;'}],\r
+ ['a', {id : id + '_resize_se', 'class' : 'mceResize mceResizeSE', tabindex : '-1', href : 'javascript:;'}]\r
+ ]\r
+ ]\r
+ );\r
+\r
+ DOM.setStyles(id, {top : -10000, left : -10000});\r
+\r
+ // Fix gecko rendering bug, where the editors iframe messed with window contents\r
+ if (tinymce.isGecko)\r
+ DOM.setStyle(id, 'overflow', 'auto');\r
+\r
+ // Measure borders\r
+ if (!f.type) {\r
+ dw += DOM.get(id + '_left').clientWidth;\r
+ dw += DOM.get(id + '_right').clientWidth;\r
+ dh += DOM.get(id + '_top').clientHeight;\r
+ dh += DOM.get(id + '_bottom').clientHeight;\r
+ }\r
+\r
+ // Resize window\r
+ DOM.setStyles(id, {top : f.top, left : f.left, width : f.width + dw, height : f.height + dh});\r
+\r
+ u = f.url || f.file;\r
+ if (u) {\r
+ if (tinymce.relaxedDomain)\r
+ u += (u.indexOf('?') == -1 ? '?' : '&') + 'mce_rdomain=' + tinymce.relaxedDomain;\r
+\r
+ u = tinymce._addVer(u);\r
+ }\r
+\r
+ if (!f.type) {\r
+ DOM.add(id + '_content', 'iframe', {id : id + '_ifr', src : 'javascript:""', frameBorder : 0, style : 'border:0;width:10px;height:10px'});\r
+ DOM.setStyles(id + '_ifr', {width : f.width, height : f.height});\r
+ DOM.setAttrib(id + '_ifr', 'src', u);\r
+ } else {\r
+ DOM.add(id + '_wrapper', 'a', {id : id + '_ok', 'class' : 'mceButton mceOk', href : 'javascript:;', onmousedown : 'return false;'}, 'Ok');\r
+\r
+ if (f.type == 'confirm')\r
+ DOM.add(id + '_wrapper', 'a', {'class' : 'mceButton mceCancel', href : 'javascript:;', onmousedown : 'return false;'}, 'Cancel');\r
+\r
+ DOM.add(id + '_middle', 'div', {'class' : 'mceIcon'});\r
+ DOM.setHTML(id + '_content', f.content.replace('\n', '<br />'));\r
+ }\r
+\r
+ // Register events\r
+ mdf = Event.add(id, 'mousedown', function(e) {\r
+ var n = e.target, w, vp;\r
+\r
+ w = t.windows[id];\r
+ t.focus(id);\r
+\r
+ if (n.nodeName == 'A' || n.nodeName == 'a') {\r
+ if (n.className == 'mceMax') {\r
+ w.oldPos = w.element.getXY();\r
+ w.oldSize = w.element.getSize();\r
+\r
+ vp = DOM.getViewPort();\r
+\r
+ // Reduce viewport size to avoid scrollbars\r
+ vp.w -= 2;\r
+ vp.h -= 2;\r
+\r
+ w.element.moveTo(vp.x, vp.y);\r
+ w.element.resizeTo(vp.w, vp.h);\r
+ DOM.setStyles(id + '_ifr', {width : vp.w - w.deltaWidth, height : vp.h - w.deltaHeight});\r
+ DOM.addClass(id + '_wrapper', 'mceMaximized');\r
+ } else if (n.className == 'mceMed') {\r
+ // Reset to old size\r
+ w.element.moveTo(w.oldPos.x, w.oldPos.y);\r
+ w.element.resizeTo(w.oldSize.w, w.oldSize.h);\r
+ w.iframeElement.resizeTo(w.oldSize.w - w.deltaWidth, w.oldSize.h - w.deltaHeight);\r
+\r
+ DOM.removeClass(id + '_wrapper', 'mceMaximized');\r
+ } else if (n.className == 'mceMove')\r
+ return t._startDrag(id, e, n.className);\r
+ else if (DOM.hasClass(n, 'mceResize'))\r
+ return t._startDrag(id, e, n.className.substring(13));\r
+ }\r
+ });\r
+\r
+ clf = Event.add(id, 'click', function(e) {\r
+ var n = e.target;\r
+\r
+ t.focus(id);\r
+\r
+ if (n.nodeName == 'A' || n.nodeName == 'a') {\r
+ switch (n.className) {\r
+ case 'mceClose':\r
+ t.close(null, id);\r
+ return Event.cancel(e);\r
+\r
+ case 'mceButton mceOk':\r
+ case 'mceButton mceCancel':\r
+ f.button_func(n.className == 'mceButton mceOk');\r
+ return Event.cancel(e);\r
+ }\r
+ }\r
+ });\r
+\r
+ // Add window\r
+ t.windows = t.windows || {};\r
+ w = t.windows[id] = {\r
+ id : id,\r
+ mousedown_func : mdf,\r
+ click_func : clf,\r
+ element : new Element(id, {blocker : 1, container : ed.getContainer()}),\r
+ iframeElement : new Element(id + '_ifr'),\r
+ features : f,\r
+ deltaWidth : dw,\r
+ deltaHeight : dh\r
+ };\r
+\r
+ w.iframeElement.on('focus', function() {\r
+ t.focus(id);\r
+ });\r
+\r
+ // Setup blocker\r
+ if (t.count == 0 && t.editor.getParam('dialog_type', 'modal') == 'modal') {\r
+ DOM.add(DOM.doc.body, 'div', {\r
+ id : 'mceModalBlocker',\r
+ 'class' : (t.editor.settings.inlinepopups_skin || 'clearlooks2') + '_modalBlocker',\r
+ style : {left : vp.x, top : vp.y, zIndex : t.zIndex - 1}\r
+ });\r
+\r
+ DOM.show('mceModalBlocker'); // Reduces flicker in IE\r
+ } else\r
+ DOM.setStyle('mceModalBlocker', 'z-index', t.zIndex - 1);\r
+\r
+ if (tinymce.isIE6 || (tinymce.isIE && !DOM.boxModel))\r
+ DOM.setStyles('mceModalBlocker', {position : 'absolute', width : vp.w - 2, height : vp.h - 2});\r
+\r
+ t.focus(id);\r
+ t._fixIELayout(id, 1);\r
+\r
+ // Focus ok button\r
+ if (DOM.get(id + '_ok'))\r
+ DOM.get(id + '_ok').focus();\r
+\r
+ t.count++;\r
+\r
+ return w;\r
+ },\r
+\r
+ focus : function(id) {\r
+ var t = this, w = t.windows[id];\r
+\r
+ w.zIndex = this.zIndex++;\r
+ w.element.setStyle('zIndex', w.zIndex);\r
+ w.element.update();\r
+\r
+ id = id + '_wrapper';\r
+ DOM.removeClass(t.lastId, 'mceFocus');\r
+ DOM.addClass(id, 'mceFocus');\r
+ t.lastId = id;\r
+ },\r
+\r
+ _addAll : function(te, ne) {\r
+ var i, n, t = this, dom = tinymce.DOM;\r
+\r
+ if (is(ne, 'string'))\r
+ te.appendChild(dom.doc.createTextNode(ne));\r
+ else if (ne.length) {\r
+ te = te.appendChild(dom.create(ne[0], ne[1]));\r
+\r
+ for (i=2; i<ne.length; i++)\r
+ t._addAll(te, ne[i]);\r
+ }\r
+ },\r
+\r
+ _startDrag : function(id, se, ac) {\r
+ var t = this, mu, mm, d = DOM.doc, eb, w = t.windows[id], we = w.element, sp = we.getXY(), p, sz, ph, cp, vp, sx, sy, sex, sey, dx, dy, dw, dh;\r
+\r
+ // Get positons and sizes\r
+// cp = DOM.getPos(t.editor.getContainer());\r
+ cp = {x : 0, y : 0};\r
+ vp = DOM.getViewPort();\r
+\r
+ // Reduce viewport size to avoid scrollbars while dragging\r
+ vp.w -= 2;\r
+ vp.h -= 2;\r
+\r
+ sex = se.screenX;\r
+ sey = se.screenY;\r
+ dx = dy = dw = dh = 0;\r
+\r
+ // Handle mouse up\r
+ mu = Event.add(d, 'mouseup', function(e) {\r
+ Event.remove(d, 'mouseup', mu);\r
+ Event.remove(d, 'mousemove', mm);\r
+\r
+ if (eb)\r
+ eb.remove();\r
+\r
+ we.moveBy(dx, dy);\r
+ we.resizeBy(dw, dh);\r
+ sz = we.getSize();\r
+ DOM.setStyles(id + '_ifr', {width : sz.w - w.deltaWidth, height : sz.h - w.deltaHeight});\r
+ t._fixIELayout(id, 1);\r
+\r
+ return Event.cancel(e);\r
+ });\r
+\r
+ if (ac != 'Move')\r
+ startMove();\r
+\r
+ function startMove() {\r
+ if (eb)\r
+ return;\r
+\r
+ t._fixIELayout(id, 0);\r
+\r
+ // Setup event blocker\r
+ DOM.add(d.body, 'div', {\r
+ id : 'mceEventBlocker',\r
+ 'class' : 'mceEventBlocker ' + (t.editor.settings.inlinepopups_skin || 'clearlooks2'),\r
+ style : {left : vp.x, top : vp.y, zIndex : t.zIndex + 1}\r
+ });\r
+\r
+ if (tinymce.isIE6 || (tinymce.isIE && !DOM.boxModel))\r
+ DOM.setStyles('mceEventBlocker', {position : 'absolute', width : vp.w - 2, height : vp.h - 2});\r
+\r
+ eb = new Element('mceEventBlocker');\r
+ eb.update();\r
+\r
+ // Setup placeholder\r
+ p = we.getXY();\r
+ sz = we.getSize();\r
+ sx = cp.x + p.x - vp.x;\r
+ sy = cp.y + p.y - vp.y;\r
+ DOM.add(eb.get(), 'div', {id : 'mcePlaceHolder', 'class' : 'mcePlaceHolder', style : {left : sx, top : sy, width : sz.w, height : sz.h}});\r
+ ph = new Element('mcePlaceHolder');\r
+ };\r
+\r
+ // Handle mouse move/drag\r
+ mm = Event.add(d, 'mousemove', function(e) {\r
+ var x, y, v;\r
+\r
+ startMove();\r
+\r
+ x = e.screenX - sex;\r
+ y = e.screenY - sey;\r
+\r
+ switch (ac) {\r
+ case 'ResizeW':\r
+ dx = x;\r
+ dw = 0 - x;\r
+ break;\r
+\r
+ case 'ResizeE':\r
+ dw = x;\r
+ break;\r
+\r
+ case 'ResizeN':\r
+ case 'ResizeNW':\r
+ case 'ResizeNE':\r
+ if (ac == "ResizeNW") {\r
+ dx = x;\r
+ dw = 0 - x;\r
+ } else if (ac == "ResizeNE")\r
+ dw = x;\r
+\r
+ dy = y;\r
+ dh = 0 - y;\r
+ break;\r
+\r
+ case 'ResizeS':\r
+ case 'ResizeSW':\r
+ case 'ResizeSE':\r
+ if (ac == "ResizeSW") {\r
+ dx = x;\r
+ dw = 0 - x;\r
+ } else if (ac == "ResizeSE")\r
+ dw = x;\r
+\r
+ dh = y;\r
+ break;\r
+\r
+ case 'mceMove':\r
+ dx = x;\r
+ dy = y;\r
+ break;\r
+ }\r
+\r
+ // Boundary check\r
+ if (dw < (v = w.features.min_width - sz.w)) {\r
+ if (dx !== 0)\r
+ dx += dw - v;\r
+\r
+ dw = v;\r
+ }\r
+ \r
+ if (dh < (v = w.features.min_height - sz.h)) {\r
+ if (dy !== 0)\r
+ dy += dh - v;\r
+\r
+ dh = v;\r
+ }\r
+\r
+ dw = Math.min(dw, w.features.max_width - sz.w);\r
+ dh = Math.min(dh, w.features.max_height - sz.h);\r
+ dx = Math.max(dx, vp.x - (sx + vp.x));\r
+ dy = Math.max(dy, vp.y - (sy + vp.y));\r
+ dx = Math.min(dx, (vp.w + vp.x) - (sx + sz.w + vp.x));\r
+ dy = Math.min(dy, (vp.h + vp.y) - (sy + sz.h + vp.y));\r
+\r
+ // Move if needed\r
+ if (dx + dy !== 0) {\r
+ if (sx + dx < 0)\r
+ dx = 0;\r
+ \r
+ if (sy + dy < 0)\r
+ dy = 0;\r
+\r
+ ph.moveTo(sx + dx, sy + dy);\r
+ }\r
+\r
+ // Resize if needed\r
+ if (dw + dh !== 0)\r
+ ph.resizeTo(sz.w + dw, sz.h + dh);\r
+\r
+ return Event.cancel(e);\r
+ });\r
+\r
+ return Event.cancel(se);\r
+ },\r
+\r
+ resizeBy : function(dw, dh, id) {\r
+ var w = this.windows[id];\r
+\r
+ if (w) {\r
+ w.element.resizeBy(dw, dh);\r
+ w.iframeElement.resizeBy(dw, dh);\r
+ }\r
+ },\r
+\r
+ close : function(win, id) {\r
+ var t = this, w, d = DOM.doc, ix = 0, fw, id;\r
+\r
+ id = t._findId(id || win);\r
+\r
+ t.count--;\r
+\r
+ if (t.count == 0)\r
+ DOM.remove('mceModalBlocker');\r
+\r
+ // Probably not inline\r
+ if (!id && win) {\r
+ t.parent(win);\r
+ return;\r
+ }\r
+\r
+ if (w = t.windows[id]) {\r
+ t.onClose.dispatch(t);\r
+ Event.remove(d, 'mousedown', w.mousedownFunc);\r
+ Event.remove(d, 'click', w.clickFunc);\r
+ Event.clear(id);\r
+ Event.clear(id + '_ifr');\r
+\r
+ DOM.setAttrib(id + '_ifr', 'src', 'javascript:""'); // Prevent leak\r
+ w.element.remove();\r
+ delete t.windows[id];\r
+\r
+ // Find front most window and focus that\r
+ each (t.windows, function(w) {\r
+ if (w.zIndex > ix) {\r
+ fw = w;\r
+ ix = w.zIndex;\r
+ }\r
+ });\r
+\r
+ if (fw)\r
+ t.focus(fw.id);\r
+ }\r
+ },\r
+\r
+ setTitle : function(w, ti) {\r
+ var e;\r
+\r
+ w = this._findId(w);\r
+\r
+ if (e = DOM.get(w + '_title'))\r
+ e.innerHTML = DOM.encode(ti);\r
+ },\r
+\r
+ alert : function(txt, cb, s) {\r
+ var t = this, w;\r
+\r
+ w = t.open({\r
+ title : t,\r
+ type : 'alert',\r
+ button_func : function(s) {\r
+ if (cb)\r
+ cb.call(s || t, s);\r
+\r
+ t.close(null, w.id);\r
+ },\r
+ content : DOM.encode(t.editor.getLang(txt, txt)),\r
+ inline : 1,\r
+ width : 400,\r
+ height : 130\r
+ });\r
+ },\r
+\r
+ confirm : function(txt, cb, s) {\r
+ var t = this, w;\r
+\r
+ w = t.open({\r
+ title : t,\r
+ type : 'confirm',\r
+ button_func : function(s) {\r
+ if (cb)\r
+ cb.call(s || t, s);\r
+\r
+ t.close(null, w.id);\r
+ },\r
+ content : DOM.encode(t.editor.getLang(txt, txt)),\r
+ inline : 1,\r
+ width : 400,\r
+ height : 130\r
+ });\r
+ },\r
+\r
+ // Internal functions\r
+\r
+ _findId : function(w) {\r
+ var t = this;\r
+\r
+ if (typeof(w) == 'string')\r
+ return w;\r
+\r
+ each(t.windows, function(wo) {\r
+ var ifr = DOM.get(wo.id + '_ifr');\r
+\r
+ if (ifr && w == ifr.contentWindow) {\r
+ w = wo.id;\r
+ return false;\r
+ }\r
+ });\r
+\r
+ return w;\r
+ },\r
+\r
+ _fixIELayout : function(id, s) {\r
+ var w, img;\r
+\r
+ if (!tinymce.isIE6)\r
+ return;\r
+\r
+ // Fixes the bug where hover flickers and does odd things in IE6\r
+ each(['n','s','w','e','nw','ne','sw','se'], function(v) {\r
+ var e = DOM.get(id + '_resize_' + v);\r
+\r
+ DOM.setStyles(e, {\r
+ width : s ? e.clientWidth : '',\r
+ height : s ? e.clientHeight : '',\r
+ cursor : DOM.getStyle(e, 'cursor', 1)\r
+ });\r
+\r
+ DOM.setStyle(id + "_bottom", 'bottom', '-1px');\r
+\r
+ e = 0;\r
+ });\r
+\r
+ // Fixes graphics glitch\r
+ if (w = this.windows[id]) {\r
+ // Fixes rendering bug after resize\r
+ w.element.hide();\r
+ w.element.show();\r
+\r
+ // Forced a repaint of the window\r
+ //DOM.get(id).style.filter = '';\r
+\r
+ // IE has a bug where images used in CSS won't get loaded\r
+ // sometimes when the cache in the browser is disabled\r
+ // This fix tries to solve it by loading the images using the image object\r
+ each(DOM.select('div,a', id), function(e, i) {\r
+ if (e.currentStyle.backgroundImage != 'none') {\r
+ img = new Image();\r
+ img.src = e.currentStyle.backgroundImage.replace(/url\(\"(.+)\"\)/, '$1');\r
+ }\r
+ });\r
+\r
+ DOM.get(id).style.filter = '';\r
+ }\r
+ }\r
+ });\r
+\r
+ // Register plugin\r
+ tinymce.PluginManager.add('inlinepopups', tinymce.plugins.InlinePopups);\r
+})();\r
+\r
--- /dev/null
+/* Clearlooks 2 */
+
+/* Reset */
+.clearlooks2, .clearlooks2 div, .clearlooks2 span, .clearlooks2 a {vertical-align:baseline; text-align:left; position:absolute; border:0; padding:0; margin:0; background:transparent; font-family:Arial,Verdana; font-size:11px; color:#000; text-decoration:none; font-weight:normal; width:auto; height:auto; overflow:hidden; display:block}
+
+/* General */
+.clearlooks2 {position:absolute; direction:ltr}
+.clearlooks2 .mceWrapper {position:static}
+.mceEventBlocker {position:fixed; left:0; top:0; background:url(img/horizontal.gif) no-repeat 0 -75px; width:100%; height:100%}
+.clearlooks2 .mcePlaceHolder {border:1px solid #000; background:#888; top:0; left:0; opacity:0.5; filter:alpha(opacity=50)}
+.clearlooks2_modalBlocker {position:fixed; left:0; top:0; width:100%; height:100%; background:#FFF; opacity:0.6; filter:alpha(opacity=60); display:none}
+
+/* Top */
+.clearlooks2 .mceTop, .clearlooks2 .mceTop div {top:0; width:100%; height:23px}
+.clearlooks2 .mceTop .mceLeft {width:6px; background:url(img/corners.gif)}
+.clearlooks2 .mceTop .mceCenter {right:6px; width:100%; height:23px; background:url(img/horizontal.gif) 12px 0; clip:rect(auto auto auto 12px)}
+.clearlooks2 .mceTop .mceRight {right:0; width:6px; height:23px; background:url(img/corners.gif) -12px 0}
+.clearlooks2 .mceTop span {width:100%; text-align:center; vertical-align:middle; line-height:23px; font-weight:bold}
+.clearlooks2 .mceFocus .mceTop .mceLeft {background:url(img/corners.gif) -6px 0}
+.clearlooks2 .mceFocus .mceTop .mceCenter {background:url(img/horizontal.gif) 0 -23px}
+.clearlooks2 .mceFocus .mceTop .mceRight {background:url(img/corners.gif) -18px 0}
+.clearlooks2 .mceFocus .mceTop span {color:#FFF}
+
+/* Middle */
+.clearlooks2 .mceMiddle, .clearlooks2 .mceMiddle div {top:0}
+.clearlooks2 .mceMiddle {width:100%; height:100%; clip:rect(23px auto auto auto)}
+.clearlooks2 .mceMiddle .mceLeft {left:0; width:5px; height:100%; background:url(img/vertical.gif) -5px 0}
+.clearlooks2 .mceMiddle span {top:23px; left:5px; width:100%; height:100%; background:#FFF}
+.clearlooks2 .mceMiddle .mceRight {right:0; width:5px; height:100%; background:url(img/vertical.gif)}
+
+/* Bottom */
+.clearlooks2 .mceBottom, .clearlooks2 .mceBottom div {height:6px}
+.clearlooks2 .mceBottom {left:0; bottom:0; width:100%}
+.clearlooks2 .mceBottom div {top:0}
+.clearlooks2 .mceBottom .mceLeft {left:0; width:5px; background:url(img/corners.gif) -34px -6px}
+.clearlooks2 .mceBottom .mceCenter {left:5px; width:100%; background:url(img/horizontal.gif) 0 -46px}
+.clearlooks2 .mceBottom .mceRight {right:0; width:5px; background: url(img/corners.gif) -34px 0}
+.clearlooks2 .mceBottom span {display:none}
+.clearlooks2 .mceStatusbar .mceBottom, .clearlooks2 .mceStatusbar .mceBottom div {height:23px}
+.clearlooks2 .mceStatusbar .mceBottom .mceLeft {background:url(img/corners.gif) -29px 0}
+.clearlooks2 .mceStatusbar .mceBottom .mceCenter {background:url(img/horizontal.gif) 0 -52px}
+.clearlooks2 .mceStatusbar .mceBottom .mceRight {background:url(img/corners.gif) -24px 0}
+.clearlooks2 .mceStatusbar .mceBottom span {display:block; left:7px; font-family:Arial, Verdana; font-size:11px; line-height:23px}
+
+/* Actions */
+.clearlooks2 a {width:29px; height:16px; top:3px;}
+.clearlooks2 .mceClose {right:6px; background:url(img/buttons.gif) -87px 0}
+.clearlooks2 .mceMin {display:none; right:68px; background:url(img/buttons.gif) 0 0}
+.clearlooks2 .mceMed {display:none; right:37px; background:url(img/buttons.gif) -29px 0}
+.clearlooks2 .mceMax {display:none; right:37px; background:url(img/buttons.gif) -58px 0}
+.clearlooks2 .mceMove {display:none;width:100%;cursor:move;background:url(img/corners.gif) no-repeat -100px -100px}
+.clearlooks2 .mceMovable .mceMove {display:block}
+.clearlooks2 .mceFocus .mceClose {right:6px; background:url(img/buttons.gif) -87px -16px}
+.clearlooks2 .mceFocus .mceMin {right:68px; background:url(img/buttons.gif) 0 -16px}
+.clearlooks2 .mceFocus .mceMed {right:37px; background:url(img/buttons.gif) -29px -16px}
+.clearlooks2 .mceFocus .mceMax {right:37px; background:url(img/buttons.gif) -58px -16px}
+.clearlooks2 .mceFocus .mceClose:hover {right:6px; background:url(img/buttons.gif) -87px -32px}
+.clearlooks2 .mceFocus .mceClose:hover {right:6px; background:url(img/buttons.gif) -87px -32px}
+.clearlooks2 .mceFocus .mceMin:hover {right:68px; background:url(img/buttons.gif) 0 -32px}
+.clearlooks2 .mceFocus .mceMed:hover {right:37px; background:url(img/buttons.gif) -29px -32px}
+.clearlooks2 .mceFocus .mceMax:hover {right:37px; background:url(img/buttons.gif) -58px -32px}
+
+/* Resize */
+.clearlooks2 .mceResize {top:auto; left:auto; display:none; width:5px; height:5px; background:url(img/horizontal.gif) no-repeat 0 -75px}
+.clearlooks2 .mceResizable .mceResize {display:block}
+.clearlooks2 .mceResizable .mceMin, .clearlooks2 .mceMax {display:none}
+.clearlooks2 .mceMinimizable .mceMin {display:block}
+.clearlooks2 .mceMaximizable .mceMax {display:block}
+.clearlooks2 .mceMaximized .mceMed {display:block}
+.clearlooks2 .mceMaximized .mceMax {display:none}
+.clearlooks2 a.mceResizeN {top:0; left:0; width:100%; cursor:n-resize}
+.clearlooks2 a.mceResizeNW {top:0; left:0; cursor:nw-resize}
+.clearlooks2 a.mceResizeNE {top:0; right:0; cursor:ne-resize}
+.clearlooks2 a.mceResizeW {top:0; left:0; height:100%; cursor:w-resize;}
+.clearlooks2 a.mceResizeE {top:0; right:0; height:100%; cursor:e-resize}
+.clearlooks2 a.mceResizeS {bottom:0; left:0; width:100%; cursor:s-resize}
+.clearlooks2 a.mceResizeSW {bottom:0; left:0; cursor:sw-resize}
+.clearlooks2 a.mceResizeSE {bottom:0; right:0; cursor:se-resize}
+
+/* Alert/Confirm */
+.clearlooks2 .mceButton {font-weight:bold; bottom:10px; width:80px; height:30px; background:url(img/button.gif); line-height:30px; vertical-align:middle; text-align:center; outline:0}
+.clearlooks2 .mceMiddle .mceIcon {left:15px; top:35px; width:32px; height:32px}
+.clearlooks2 .mceAlert .mceMiddle span, .clearlooks2 .mceConfirm .mceMiddle span {background:transparent;left:60px; top:35px; width:320px; height:50px; font-weight:bold; overflow:auto; white-space:normal}
+.clearlooks2 a:hover {font-weight:bold;}
+.clearlooks2 .mceAlert .mceMiddle, .clearlooks2 .mceConfirm .mceMiddle {background:#D6D7D5}
+.clearlooks2 .mceAlert .mceOk {left:50%; top:auto; margin-left: -40px}
+.clearlooks2 .mceAlert .mceIcon {background:url(img/alert.gif)}
+.clearlooks2 .mceConfirm .mceOk {left:50%; top:auto; margin-left: -90px}
+.clearlooks2 .mceConfirm .mceCancel {left:50%; top:auto}
+.clearlooks2 .mceConfirm .mceIcon {background:url(img/confirm.gif)}
\ No newline at end of file
--- /dev/null
+<!-- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -->\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+<title>Template for dialogs</title>\r
+<link rel="stylesheet" type="text/css" href="skins/clearlooks2/window.css" />\r
+</head>\r
+<body>\r
+\r
+<div class="mceEditor">\r
+ <div class="clearlooks2" style="width:400px; height:100px; left:10px;">\r
+ <div class="mceWrapper">\r
+ <div class="mceTop">\r
+ <div class="mceLeft"></div>\r
+ <div class="mceCenter"></div>\r
+ <div class="mceRight"></div>\r
+ <span>Blured</span>\r
+ </div>\r
+\r
+ <div class="mceMiddle">\r
+ <div class="mceLeft"></div>\r
+ <span>Content</span>\r
+ <div class="mceRight"></div>\r
+ </div>\r
+\r
+ <div class="mceBottom">\r
+ <div class="mceLeft"></div>\r
+ <div class="mceCenter"></div>\r
+ <div class="mceRight"></div>\r
+ <span>Statusbar text.</span>\r
+ </div>\r
+\r
+ <a class="mceMove" href="#"></a>\r
+ <a class="mceMin" href="#"></a>\r
+ <a class="mceMax" href="#"></a>\r
+ <a class="mceMed" href="#"></a>\r
+ <a class="mceClose" href="#"></a>\r
+ <a class="mceResize mceResizeN" href="#"></a>\r
+ <a class="mceResize mceResizeS" href="#"></a>\r
+ <a class="mceResize mceResizeW" href="#"></a>\r
+ <a class="mceResize mceResizeE" href="#"></a>\r
+ <a class="mceResize mceResizeNW" href="#"></a>\r
+ <a class="mceResize mceResizeNE" href="#"></a>\r
+ <a class="mceResize mceResizeSW" href="#"></a>\r
+ <a class="mceResize mceResizeSE" href="#"></a>\r
+ </div>\r
+ </div>\r
+\r
+ <div class="clearlooks2" style="width:400px; height:100px; left:420px;">\r
+ <div class="mceWrapper mceMovable mceFocus">\r
+ <div class="mceTop">\r
+ <div class="mceLeft"></div>\r
+ <div class="mceCenter"></div>\r
+ <div class="mceRight"></div>\r
+ <span>Focused</span>\r
+ </div>\r
+\r
+ <div class="mceMiddle">\r
+ <div class="mceLeft"></div>\r
+ <span>Content</span>\r
+ <div class="mceRight"></div>\r
+ </div>\r
+\r
+ <div class="mceBottom">\r
+ <div class="mceLeft"></div>\r
+ <div class="mceCenter"></div>\r
+ <div class="mceRight"></div>\r
+ <span>Statusbar text.</span>\r
+ </div>\r
+\r
+ <a class="mceMove" href="#"></a>\r
+ <a class="mceMin" href="#"></a>\r
+ <a class="mceMax" href="#"></a>\r
+ <a class="mceMed" href="#"></a>\r
+ <a class="mceClose" href="#"></a>\r
+ <a class="mceResize mceResizeN" href="#"></a>\r
+ <a class="mceResize mceResizeS" href="#"></a>\r
+ <a class="mceResize mceResizeW" href="#"></a>\r
+ <a class="mceResize mceResizeE" href="#"></a>\r
+ <a class="mceResize mceResizeNW" href="#"></a>\r
+ <a class="mceResize mceResizeNE" href="#"></a>\r
+ <a class="mceResize mceResizeSW" href="#"></a>\r
+ <a class="mceResize mceResizeSE" href="#"></a>\r
+ </div>\r
+ </div>\r
+\r
+ <div class="clearlooks2" style="width:400px; height:100px; left:10px; top:120px;">\r
+ <div class="mceWrapper mceMovable mceFocus mceStatusbar">\r
+ <div class="mceTop">\r
+ <div class="mceLeft"></div>\r
+ <div class="mceCenter"></div>\r
+ <div class="mceRight"></div>\r
+ <span>Statusbar</span>\r
+ </div>\r
+\r
+ <div class="mceMiddle">\r
+ <div class="mceLeft"></div>\r
+ <span>Content</span>\r
+ <div class="mceRight"></div>\r
+ </div>\r
+\r
+ <div class="mceBottom">\r
+ <div class="mceLeft"></div>\r
+ <div class="mceCenter"></div>\r
+ <div class="mceRight"></div>\r
+ <span>Statusbar text.</span>\r
+ </div>\r
+\r
+ <a class="mceMove" href="#"></a>\r
+ <a class="mceMin" href="#"></a>\r
+ <a class="mceMax" href="#"></a>\r
+ <a class="mceMed" href="#"></a>\r
+ <a class="mceClose" href="#"></a>\r
+ <a class="mceResize mceResizeN" href="#"></a>\r
+ <a class="mceResize mceResizeS" href="#"></a>\r
+ <a class="mceResize mceResizeW" href="#"></a>\r
+ <a class="mceResize mceResizeE" href="#"></a>\r
+ <a class="mceResize mceResizeNW" href="#"></a>\r
+ <a class="mceResize mceResizeNE" href="#"></a>\r
+ <a class="mceResize mceResizeSW" href="#"></a>\r
+ <a class="mceResize mceResizeSE" href="#"></a>\r
+ </div>\r
+ </div>\r
+\r
+ <div class="clearlooks2" style="width:400px; height:100px; left:420px; top:120px;">\r
+ <div class="mceWrapper mceMovable mceFocus mceStatusbar mceResizable">\r
+ <div class="mceTop">\r
+ <div class="mceLeft"></div>\r
+ <div class="mceCenter"></div>\r
+ <div class="mceRight"></div>\r
+ <span>Statusbar, Resizable</span>\r
+ </div>\r
+\r
+ <div class="mceMiddle">\r
+ <div class="mceLeft"></div>\r
+ <span>Content</span>\r
+ <div class="mceRight"></div>\r
+ </div>\r
+\r
+ <div class="mceBottom">\r
+ <div class="mceLeft"></div>\r
+ <div class="mceCenter"></div>\r
+ <div class="mceRight"></div>\r
+ <span>Statusbar text.</span>\r
+ </div>\r
+\r
+ <a class="mceMove" href="#"></a>\r
+ <a class="mceMin" href="#"></a>\r
+ <a class="mceMax" href="#"></a>\r
+ <a class="mceMed" href="#"></a>\r
+ <a class="mceClose" href="#"></a>\r
+ <a class="mceResize mceResizeN" href="#"></a>\r
+ <a class="mceResize mceResizeS" href="#"></a>\r
+ <a class="mceResize mceResizeW" href="#"></a>\r
+ <a class="mceResize mceResizeE" href="#"></a>\r
+ <a class="mceResize mceResizeNW" href="#"></a>\r
+ <a class="mceResize mceResizeNE" href="#"></a>\r
+ <a class="mceResize mceResizeSW" href="#"></a>\r
+ <a class="mceResize mceResizeSE" href="#"></a>\r
+ </div>\r
+ </div>\r
+\r
+ <div class="clearlooks2" style="width:400px; height:100px; left:10px; top:230px;">\r
+ <div class="mceWrapper mceMovable mceFocus mceResizable mceMaximizable">\r
+ <div class="mceTop">\r
+ <div class="mceLeft"></div>\r
+ <div class="mceCenter"></div>\r
+ <div class="mceRight"></div>\r
+ <span>Resizable, Maximizable</span>\r
+ </div>\r
+\r
+ <div class="mceMiddle">\r
+ <div class="mceLeft"></div>\r
+ <span>Content</span>\r
+ <div class="mceRight"></div>\r
+ </div>\r
+\r
+ <div class="mceBottom">\r
+ <div class="mceLeft"></div>\r
+ <div class="mceCenter"></div>\r
+ <div class="mceRight"></div>\r
+ <span>Statusbar text.</span>\r
+ </div>\r
+\r
+ <a class="mceMove" href="#"></a>\r
+ <a class="mceMin" href="#"></a>\r
+ <a class="mceMax" href="#"></a>\r
+ <a class="mceMed" href="#"></a>\r
+ <a class="mceClose" href="#"></a>\r
+ <a class="mceResize mceResizeN" href="#"></a>\r
+ <a class="mceResize mceResizeS" href="#"></a>\r
+ <a class="mceResize mceResizeW" href="#"></a>\r
+ <a class="mceResize mceResizeE" href="#"></a>\r
+ <a class="mceResize mceResizeNW" href="#"></a>\r
+ <a class="mceResize mceResizeNE" href="#"></a>\r
+ <a class="mceResize mceResizeSW" href="#"></a>\r
+ <a class="mceResize mceResizeSE" href="#"></a>\r
+ </div>\r
+ </div>\r
+\r
+ <div class="clearlooks2" style="width:400px; height:100px; left:420px; top:230px;">\r
+ <div class="mceWrapper mceMovable mceStatusbar mceResizable mceMaximizable">\r
+ <div class="mceTop">\r
+ <div class="mceLeft"></div>\r
+ <div class="mceCenter"></div>\r
+ <div class="mceRight"></div>\r
+ <span>Blurred, Maximizable, Statusbar, Resizable</span>\r
+ </div>\r
+\r
+ <div class="mceMiddle">\r
+ <div class="mceLeft"></div>\r
+ <span>Content</span>\r
+ <div class="mceRight"></div>\r
+ </div>\r
+\r
+ <div class="mceBottom">\r
+ <div class="mceLeft"></div>\r
+ <div class="mceCenter"></div>\r
+ <div class="mceRight"></div>\r
+ <span>Statusbar text.</span>\r
+ </div>\r
+\r
+ <a class="mceMove" href="#"></a>\r
+ <a class="mceMin" href="#"></a>\r
+ <a class="mceMax" href="#"></a>\r
+ <a class="mceMed" href="#"></a>\r
+ <a class="mceClose" href="#"></a>\r
+ <a class="mceResize mceResizeN" href="#"></a>\r
+ <a class="mceResize mceResizeS" href="#"></a>\r
+ <a class="mceResize mceResizeW" href="#"></a>\r
+ <a class="mceResize mceResizeE" href="#"></a>\r
+ <a class="mceResize mceResizeNW" href="#"></a>\r
+ <a class="mceResize mceResizeNE" href="#"></a>\r
+ <a class="mceResize mceResizeSW" href="#"></a>\r
+ <a class="mceResize mceResizeSE" href="#"></a>\r
+ </div>\r
+ </div>\r
+\r
+ <div class="clearlooks2" style="width:400px; height:100px; left:10px; top:340px;">\r
+ <div class="mceWrapper mceMovable mceFocus mceResizable mceMaximized mceMinimizable mceMaximizable">\r
+ <div class="mceTop">\r
+ <div class="mceLeft"></div>\r
+ <div class="mceCenter"></div>\r
+ <div class="mceRight"></div>\r
+ <span>Maximized, Maximizable, Minimizable</span>\r
+ </div>\r
+\r
+ <div class="mceMiddle">\r
+ <div class="mceLeft"></div>\r
+ <span>Content</span>\r
+ <div class="mceRight"></div>\r
+ </div>\r
+\r
+ <div class="mceBottom">\r
+ <div class="mceLeft"></div>\r
+ <div class="mceCenter"></div>\r
+ <div class="mceRight"></div>\r
+ <span>Statusbar text.</span>\r
+ </div>\r
+\r
+ <a class="mceMove" href="#"></a>\r
+ <a class="mceMin" href="#"></a>\r
+ <a class="mceMax" href="#"></a>\r
+ <a class="mceMed" href="#"></a>\r
+ <a class="mceClose" href="#"></a>\r
+ <a class="mceResize mceResizeN" href="#"></a>\r
+ <a class="mceResize mceResizeS" href="#"></a>\r
+ <a class="mceResize mceResizeW" href="#"></a>\r
+ <a class="mceResize mceResizeE" href="#"></a>\r
+ <a class="mceResize mceResizeNW" href="#"></a>\r
+ <a class="mceResize mceResizeNE" href="#"></a>\r
+ <a class="mceResize mceResizeSW" href="#"></a>\r
+ <a class="mceResize mceResizeSE" href="#"></a>\r
+ </div>\r
+ </div>\r
+\r
+ <div class="clearlooks2" style="width:400px; height:100px; left:420px; top:340px;">\r
+ <div class="mceWrapper mceMovable mceStatusbar mceResizable mceMaximized mceMinimizable mceMaximizable">\r
+ <div class="mceTop">\r
+ <div class="mceLeft"></div>\r
+ <div class="mceCenter"></div>\r
+ <div class="mceRight"></div>\r
+ <span>Blured</span>\r
+ </div>\r
+\r
+ <div class="mceMiddle">\r
+ <div class="mceLeft"></div>\r
+ <span>Content</span>\r
+ <div class="mceRight"></div>\r
+ </div>\r
+\r
+ <div class="mceBottom">\r
+ <div class="mceLeft"></div>\r
+ <div class="mceCenter"></div>\r
+ <div class="mceRight"></div>\r
+ <span>Statusbar text.</span>\r
+ </div>\r
+\r
+ <a class="mceMove" href="#"></a>\r
+ <a class="mceMin" href="#"></a>\r
+ <a class="mceMax" href="#"></a>\r
+ <a class="mceMed" href="#"></a>\r
+ <a class="mceClose" href="#"></a>\r
+ <a class="mceResize mceResizeN" href="#"></a>\r
+ <a class="mceResize mceResizeS" href="#"></a>\r
+ <a class="mceResize mceResizeW" href="#"></a>\r
+ <a class="mceResize mceResizeE" href="#"></a>\r
+ <a class="mceResize mceResizeNW" href="#"></a>\r
+ <a class="mceResize mceResizeNE" href="#"></a>\r
+ <a class="mceResize mceResizeSW" href="#"></a>\r
+ <a class="mceResize mceResizeSE" href="#"></a>\r
+ </div>\r
+ </div>\r
+\r
+ <div class="clearlooks2" style="width:400px; height:130px; left:10px; top:450px;">\r
+ <div class="mceWrapper mceMovable mceFocus mceModal mceAlert">\r
+ <div class="mceTop">\r
+ <div class="mceLeft"></div>\r
+ <div class="mceCenter"></div>\r
+ <div class="mceRight"></div>\r
+ <span>Alert</span>\r
+ </div>\r
+\r
+ <div class="mceMiddle">\r
+ <div class="mceLeft"></div>\r
+ <span>\r
+ This is a very long error message. This is a very long error message.\r
+ This is a very long error message. This is a very long error message.\r
+ This is a very long error message. This is a very long error message.\r
+ This is a very long error message. This is a very long error message.\r
+ This is a very long error message. This is a very long error message.\r
+ This is a very long error message. This is a very long error message.\r
+ </span>\r
+ <div class="mceRight"></div>\r
+ <div class="mceIcon"></div>\r
+ </div>\r
+\r
+ <div class="mceBottom">\r
+ <div class="mceLeft"></div>\r
+ <div class="mceCenter"></div>\r
+ <div class="mceRight"></div>\r
+ </div>\r
+\r
+ <a class="mceMove" href="#"></a>\r
+ <a class="mceButton mceOk" href="#">Ok</a>\r
+ <a class="mceClose" href="#"></a>\r
+ </div>\r
+ </div>\r
+\r
+ <div class="clearlooks2" style="width:400px; height:130px; left:420px; top:450px;">\r
+ <div class="mceWrapper mceMovable mceFocus mceModal mceConfirm">\r
+ <div class="mceTop">\r
+ <div class="mceLeft"></div>\r
+ <div class="mceCenter"></div>\r
+ <div class="mceRight"></div>\r
+ <span>Confirm</span>\r
+ </div>\r
+\r
+ <div class="mceMiddle">\r
+ <div class="mceLeft"></div>\r
+ <span>\r
+ This is a very long error message. This is a very long error message.\r
+ This is a very long error message. This is a very long error message.\r
+ This is a very long error message. This is a very long error message.\r
+ This is a very long error message. This is a very long error message.\r
+ This is a very long error message. This is a very long error message.\r
+ This is a very long error message. This is a very long error message.\r
+ </span>\r
+ <div class="mceRight"></div>\r
+ <div class="mceIcon"></div>\r
+ </div>\r
+\r
+ <div class="mceBottom">\r
+ <div class="mceLeft"></div>\r
+ <div class="mceCenter"></div>\r
+ <div class="mceRight"></div>\r
+ </div>\r
+\r
+ <a class="mceMove" href="#"></a>\r
+ <a class="mceButton mceOk" href="#">Ok</a>\r
+ <a class="mceButton mceCancel" href="#">Cancel</a>\r
+ <a class="mceClose" href="#"></a>\r
+ </div>\r
+ </div>\r
+</div>\r
+\r
+</body>\r
+</html>\r
--- /dev/null
+(function(){tinymce.create('tinymce.plugins.InsertDateTime',{init:function(ed,url){var t=this;t.editor=ed;ed.addCommand('mceInsertDate',function(){var str=t._getDateTime(new Date(),ed.getParam("plugin_insertdate_dateFormat",ed.getLang('insertdatetime.date_fmt')));ed.execCommand('mceInsertContent',false,str);});ed.addCommand('mceInsertTime',function(){var str=t._getDateTime(new Date(),ed.getParam("plugin_insertdate_timeFormat",ed.getLang('insertdatetime.time_fmt')));ed.execCommand('mceInsertContent',false,str);});ed.addButton('insertdate',{title:'insertdatetime.insertdate_desc',cmd:'mceInsertDate'});ed.addButton('inserttime',{title:'insertdatetime.inserttime_desc',cmd:'mceInsertTime'});},getInfo:function(){return{longname:'Insert date/time',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/insertdatetime',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_getDateTime:function(d,fmt){var ed=this.editor;function addZeros(value,len){value=""+value;if(value.length<len){for(var i=0;i<(len-value.length);i++)value="0"+value;}return value;};fmt=fmt.replace("%D","%m/%d/%y");fmt=fmt.replace("%r","%I:%M:%S %p");fmt=fmt.replace("%Y",""+d.getFullYear());fmt=fmt.replace("%y",""+d.getYear());fmt=fmt.replace("%m",addZeros(d.getMonth()+1,2));fmt=fmt.replace("%d",addZeros(d.getDate(),2));fmt=fmt.replace("%H",""+addZeros(d.getHours(),2));fmt=fmt.replace("%M",""+addZeros(d.getMinutes(),2));fmt=fmt.replace("%S",""+addZeros(d.getSeconds(),2));fmt=fmt.replace("%I",""+((d.getHours()+11)%12+1));fmt=fmt.replace("%p",""+(d.getHours()<12?"AM":"PM"));fmt=fmt.replace("%B",""+ed.getLang("insertdatetime.months_long").split(',')[d.getMonth()]);fmt=fmt.replace("%b",""+ed.getLang("insertdatetime.months_short").split(',')[d.getMonth()]);fmt=fmt.replace("%A",""+ed.getLang("insertdatetime.day_long").split(',')[d.getDay()]);fmt=fmt.replace("%a",""+ed.getLang("insertdatetime.day_short").split(',')[d.getDay()]);fmt=fmt.replace("%%","%");return fmt;}});tinymce.PluginManager.add('insertdatetime',tinymce.plugins.InsertDateTime);})();
\ No newline at end of file
--- /dev/null
+/**\r
+ * $Id: editor_plugin_src.js 520 2008-01-07 16:30:32Z spocke $\r
+ *\r
+ * @author Moxiecode\r
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+(function() {\r
+ tinymce.create('tinymce.plugins.InsertDateTime', {\r
+ init : function(ed, url) {\r
+ var t = this;\r
+\r
+ t.editor = ed;\r
+\r
+ ed.addCommand('mceInsertDate', function() {\r
+ var str = t._getDateTime(new Date(), ed.getParam("plugin_insertdate_dateFormat", ed.getLang('insertdatetime.date_fmt')));\r
+\r
+ ed.execCommand('mceInsertContent', false, str);\r
+ });\r
+\r
+ ed.addCommand('mceInsertTime', function() {\r
+ var str = t._getDateTime(new Date(), ed.getParam("plugin_insertdate_timeFormat", ed.getLang('insertdatetime.time_fmt')));\r
+\r
+ ed.execCommand('mceInsertContent', false, str);\r
+ });\r
+\r
+ ed.addButton('insertdate', {title : 'insertdatetime.insertdate_desc', cmd : 'mceInsertDate'});\r
+ ed.addButton('inserttime', {title : 'insertdatetime.inserttime_desc', cmd : 'mceInsertTime'});\r
+ },\r
+\r
+ getInfo : function() {\r
+ return {\r
+ longname : 'Insert date/time',\r
+ author : 'Moxiecode Systems AB',\r
+ authorurl : 'http://tinymce.moxiecode.com',\r
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/insertdatetime',\r
+ version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+ };\r
+ },\r
+\r
+ // Private methods\r
+\r
+ _getDateTime : function(d, fmt) {\r
+ var ed = this.editor;\r
+\r
+ function addZeros(value, len) {\r
+ value = "" + value;\r
+\r
+ if (value.length < len) {\r
+ for (var i=0; i<(len-value.length); i++)\r
+ value = "0" + value;\r
+ }\r
+\r
+ return value;\r
+ };\r
+\r
+ fmt = fmt.replace("%D", "%m/%d/%y");\r
+ fmt = fmt.replace("%r", "%I:%M:%S %p");\r
+ fmt = fmt.replace("%Y", "" + d.getFullYear());\r
+ fmt = fmt.replace("%y", "" + d.getYear());\r
+ fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2));\r
+ fmt = fmt.replace("%d", addZeros(d.getDate(), 2));\r
+ fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2));\r
+ fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2));\r
+ fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2));\r
+ fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1));\r
+ fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM"));\r
+ fmt = fmt.replace("%B", "" + ed.getLang("insertdatetime.months_long").split(',')[d.getMonth()]);\r
+ fmt = fmt.replace("%b", "" + ed.getLang("insertdatetime.months_short").split(',')[d.getMonth()]);\r
+ fmt = fmt.replace("%A", "" + ed.getLang("insertdatetime.day_long").split(',')[d.getDay()]);\r
+ fmt = fmt.replace("%a", "" + ed.getLang("insertdatetime.day_short").split(',')[d.getDay()]);\r
+ fmt = fmt.replace("%%", "%");\r
+\r
+ return fmt;\r
+ }\r
+ });\r
+\r
+ // Register plugin\r
+ tinymce.PluginManager.add('insertdatetime', tinymce.plugins.InsertDateTime);\r
+})();
\ No newline at end of file
--- /dev/null
+(function(){tinymce.create('tinymce.plugins.Layer',{init:function(ed,url){var t=this;t.editor=ed;ed.addCommand('mceInsertLayer',t._insertLayer,t);ed.addCommand('mceMoveForward',function(){t._move(1);});ed.addCommand('mceMoveBackward',function(){t._move(-1);});ed.addCommand('mceMakeAbsolute',function(){t._toggleAbsolute();});ed.addButton('moveforward',{title:'layer.forward_desc',cmd:'mceMoveForward'});ed.addButton('movebackward',{title:'layer.backward_desc',cmd:'mceMoveBackward'});ed.addButton('absolute',{title:'layer.absolute_desc',cmd:'mceMakeAbsolute'});ed.addButton('insertlayer',{title:'layer.insertlayer_desc',cmd:'mceInsertLayer'});ed.onInit.add(function(){if(tinymce.isIE)ed.getDoc().execCommand('2D-Position',false,true);});ed.onNodeChange.add(t._nodeChange,t);ed.onVisualAid.add(t._visualAid,t);},getInfo:function(){return{longname:'Layer',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/layer',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_nodeChange:function(ed,cm,n){var le,p;le=this._getParentLayer(n);p=ed.dom.getParent(n,'DIV,P,IMG');if(!p){cm.setDisabled('absolute',1);cm.setDisabled('moveforward',1);cm.setDisabled('movebackward',1);}else{cm.setDisabled('absolute',0);cm.setDisabled('moveforward',!le);cm.setDisabled('movebackward',!le);cm.setActive('absolute',le&&le.style.position.toLowerCase()=="absolute");}},_visualAid:function(ed,e,s){var dom=ed.dom;tinymce.each(dom.select('div,p',e),function(e){if(/^(absolute|relative|static)$/i.test(e.style.position)){if(s)dom.addClass(e,'mceItemVisualAid');else dom.removeClass(e,'mceItemVisualAid');}});},_move:function(d){var ed=this.editor,i,z=[],le=this._getParentLayer(ed.selection.getNode()),ci=-1,fi=-1,nl;nl=[];tinymce.walk(ed.getBody(),function(n){if(n.nodeType==1&&/^(absolute|relative|static)$/i.test(n.style.position))nl.push(n);},'childNodes');for(i=0;i<nl.length;i++){z[i]=nl[i].style.zIndex?parseInt(nl[i].style.zIndex):0;if(ci<0&&nl[i]==le)ci=i;}if(d<0){for(i=0;i<z.length;i++){if(z[i]<z[ci]){fi=i;break;}}if(fi>-1){nl[ci].style.zIndex=z[fi];nl[fi].style.zIndex=z[ci];}else{if(z[ci]>0)nl[ci].style.zIndex=z[ci]-1;}}else{for(i=0;i<z.length;i++){if(z[i]>z[ci]){fi=i;break;}}if(fi>-1){nl[ci].style.zIndex=z[fi];nl[fi].style.zIndex=z[ci];}else nl[ci].style.zIndex=z[ci]+1;}ed.execCommand('mceRepaint');},_getParentLayer:function(n){return this.editor.dom.getParent(n,function(n){return n.nodeType==1&&/^(absolute|relative|static)$/i.test(n.style.position);});},_insertLayer:function(){var ed=this.editor,p=ed.dom.getPos(ed.dom.getParent(ed.selection.getNode(),'*'));ed.dom.add(ed.getBody(),'div',{style:{position:'absolute',left:p.x,top:(p.y>20?p.y:20),width:100,height:100},'class':'mceItemVisualAid'},ed.selection.getContent()||ed.getLang('layer.content'));},_toggleAbsolute:function(){var ed=this.editor,le=this._getParentLayer(ed.selection.getNode());if(!le)le=ed.dom.getParent(ed.selection.getNode(),'DIV,P,IMG');if(le){if(le.style.position.toLowerCase()=="absolute"){ed.dom.setStyles(le,{position:'',left:'',top:'',width:'',height:''});ed.dom.removeClass(le,'mceItemVisualAid');}else{if(le.style.left=="")le.style.left=20+'px';if(le.style.top=="")le.style.top=20+'px';if(le.style.width=="")le.style.width=le.width?(le.width+'px'):'100px';if(le.style.height=="")le.style.height=le.height?(le.height+'px'):'100px';le.style.position="absolute";ed.addVisual(ed.getBody());}ed.execCommand('mceRepaint');ed.nodeChanged();}}});tinymce.PluginManager.add('layer',tinymce.plugins.Layer);})();
\ No newline at end of file
--- /dev/null
+/**\r
+ * $Id: editor_plugin_src.js 652 2008-02-29 13:09:46Z spocke $\r
+ *\r
+ * @author Moxiecode\r
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+(function() {\r
+ tinymce.create('tinymce.plugins.Layer', {\r
+ init : function(ed, url) {\r
+ var t = this;\r
+\r
+ t.editor = ed;\r
+\r
+ // Register commands\r
+ ed.addCommand('mceInsertLayer', t._insertLayer, t);\r
+\r
+ ed.addCommand('mceMoveForward', function() {\r
+ t._move(1);\r
+ });\r
+\r
+ ed.addCommand('mceMoveBackward', function() {\r
+ t._move(-1);\r
+ });\r
+\r
+ ed.addCommand('mceMakeAbsolute', function() {\r
+ t._toggleAbsolute();\r
+ });\r
+\r
+ // Register buttons\r
+ ed.addButton('moveforward', {title : 'layer.forward_desc', cmd : 'mceMoveForward'});\r
+ ed.addButton('movebackward', {title : 'layer.backward_desc', cmd : 'mceMoveBackward'});\r
+ ed.addButton('absolute', {title : 'layer.absolute_desc', cmd : 'mceMakeAbsolute'});\r
+ ed.addButton('insertlayer', {title : 'layer.insertlayer_desc', cmd : 'mceInsertLayer'});\r
+\r
+ ed.onInit.add(function() {\r
+ if (tinymce.isIE)\r
+ ed.getDoc().execCommand('2D-Position', false, true);\r
+ });\r
+\r
+ ed.onNodeChange.add(t._nodeChange, t);\r
+ ed.onVisualAid.add(t._visualAid, t);\r
+ },\r
+\r
+ getInfo : function() {\r
+ return {\r
+ longname : 'Layer',\r
+ author : 'Moxiecode Systems AB',\r
+ authorurl : 'http://tinymce.moxiecode.com',\r
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/layer',\r
+ version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+ };\r
+ },\r
+\r
+ // Private methods\r
+\r
+ _nodeChange : function(ed, cm, n) {\r
+ var le, p;\r
+\r
+ le = this._getParentLayer(n);\r
+ p = ed.dom.getParent(n, 'DIV,P,IMG');\r
+\r
+ if (!p) {\r
+ cm.setDisabled('absolute', 1);\r
+ cm.setDisabled('moveforward', 1);\r
+ cm.setDisabled('movebackward', 1);\r
+ } else {\r
+ cm.setDisabled('absolute', 0);\r
+ cm.setDisabled('moveforward', !le);\r
+ cm.setDisabled('movebackward', !le);\r
+ cm.setActive('absolute', le && le.style.position.toLowerCase() == "absolute");\r
+ }\r
+ },\r
+\r
+ // Private methods\r
+\r
+ _visualAid : function(ed, e, s) {\r
+ var dom = ed.dom;\r
+\r
+ tinymce.each(dom.select('div,p', e), function(e) {\r
+ if (/^(absolute|relative|static)$/i.test(e.style.position)) {\r
+ if (s)\r
+ dom.addClass(e, 'mceItemVisualAid');\r
+ else\r
+ dom.removeClass(e, 'mceItemVisualAid'); \r
+ }\r
+ });\r
+ },\r
+\r
+ _move : function(d) {\r
+ var ed = this.editor, i, z = [], le = this._getParentLayer(ed.selection.getNode()), ci = -1, fi = -1, nl;\r
+\r
+ nl = [];\r
+ tinymce.walk(ed.getBody(), function(n) {\r
+ if (n.nodeType == 1 && /^(absolute|relative|static)$/i.test(n.style.position))\r
+ nl.push(n); \r
+ }, 'childNodes');\r
+\r
+ // Find z-indexes\r
+ for (i=0; i<nl.length; i++) {\r
+ z[i] = nl[i].style.zIndex ? parseInt(nl[i].style.zIndex) : 0;\r
+\r
+ if (ci < 0 && nl[i] == le)\r
+ ci = i;\r
+ }\r
+\r
+ if (d < 0) {\r
+ // Move back\r
+\r
+ // Try find a lower one\r
+ for (i=0; i<z.length; i++) {\r
+ if (z[i] < z[ci]) {\r
+ fi = i;\r
+ break;\r
+ }\r
+ }\r
+\r
+ if (fi > -1) {\r
+ nl[ci].style.zIndex = z[fi];\r
+ nl[fi].style.zIndex = z[ci];\r
+ } else {\r
+ if (z[ci] > 0)\r
+ nl[ci].style.zIndex = z[ci] - 1;\r
+ }\r
+ } else {\r
+ // Move forward\r
+\r
+ // Try find a higher one\r
+ for (i=0; i<z.length; i++) {\r
+ if (z[i] > z[ci]) {\r
+ fi = i;\r
+ break;\r
+ }\r
+ }\r
+\r
+ if (fi > -1) {\r
+ nl[ci].style.zIndex = z[fi];\r
+ nl[fi].style.zIndex = z[ci];\r
+ } else\r
+ nl[ci].style.zIndex = z[ci] + 1;\r
+ }\r
+\r
+ ed.execCommand('mceRepaint');\r
+ },\r
+\r
+ _getParentLayer : function(n) {\r
+ return this.editor.dom.getParent(n, function(n) {\r
+ return n.nodeType == 1 && /^(absolute|relative|static)$/i.test(n.style.position);\r
+ });\r
+ },\r
+\r
+ _insertLayer : function() {\r
+ var ed = this.editor, p = ed.dom.getPos(ed.dom.getParent(ed.selection.getNode(), '*'));\r
+\r
+ ed.dom.add(ed.getBody(), 'div', {\r
+ style : {\r
+ position : 'absolute',\r
+ left : p.x,\r
+ top : (p.y > 20 ? p.y : 20),\r
+ width : 100,\r
+ height : 100\r
+ },\r
+ 'class' : 'mceItemVisualAid'\r
+ }, ed.selection.getContent() || ed.getLang('layer.content'));\r
+ },\r
+\r
+ _toggleAbsolute : function() {\r
+ var ed = this.editor, le = this._getParentLayer(ed.selection.getNode());\r
+\r
+ if (!le)\r
+ le = ed.dom.getParent(ed.selection.getNode(), 'DIV,P,IMG');\r
+\r
+ if (le) {\r
+ if (le.style.position.toLowerCase() == "absolute") {\r
+ ed.dom.setStyles(le, {\r
+ position : '',\r
+ left : '',\r
+ top : '',\r
+ width : '',\r
+ height : ''\r
+ });\r
+\r
+ ed.dom.removeClass(le, 'mceItemVisualAid');\r
+ } else {\r
+ if (le.style.left == "")\r
+ le.style.left = 20 + 'px';\r
+\r
+ if (le.style.top == "")\r
+ le.style.top = 20 + 'px';\r
+\r
+ if (le.style.width == "")\r
+ le.style.width = le.width ? (le.width + 'px') : '100px';\r
+\r
+ if (le.style.height == "")\r
+ le.style.height = le.height ? (le.height + 'px') : '100px';\r
+\r
+ le.style.position = "absolute";\r
+ ed.addVisual(ed.getBody());\r
+ }\r
+\r
+ ed.execCommand('mceRepaint');\r
+ ed.nodeChanged();\r
+ }\r
+ }\r
+ });\r
+\r
+ // Register plugin\r
+ tinymce.PluginManager.add('layer', tinymce.plugins.Layer);\r
+})();
\ No newline at end of file
--- /dev/null
+.mceItemFlash, .mceItemShockWave, .mceItemQuickTime, .mceItemWindowsMedia, .mceItemRealMedia {border:1px dotted #cc0000; background-position:center; background-repeat:no-repeat; background-color:#ffffcc;}\r
+.mceItemShockWave {background-image: url(../img/shockwave.gif);}\r
+.mceItemFlash {background-image:url(../img/flash.gif);}\r
+.mceItemQuickTime {background-image:url(../img/quicktime.gif);}\r
+.mceItemWindowsMedia {background-image:url(../img/windowsmedia.gif);}\r
+.mceItemRealMedia {background-image:url(../img/realmedia.gif);}\r
--- /dev/null
+#id, #name, #hspace, #vspace, #class_name, #align { width: 100px }\r
+#hspace, #vspace { width: 50px }\r
+#flash_quality, #flash_align, #flash_scale, #flash_salign, #flash_wmode { width: 100px }\r
+#flash_base, #flash_flashvars { width: 240px }\r
+#width, #height { width: 40px }\r
+#src, #media_type { width: 250px }\r
+#class { width: 120px }\r
+#prev { margin: 0; border: 1px solid black; width: 380px; height: 230px; overflow: auto }\r
+.panel_wrapper div.current { height: 390px; overflow: auto }\r
+#flash_options, #shockwave_options, #qt_options, #wmp_options, #rmp_options { display: none }\r
+.mceAddSelectValue { background-color: #DDDDDD }\r
+#qt_starttime, #qt_endtime, #qt_fov, #qt_href, #qt_moveid, #qt_moviename, #qt_node, #qt_pan, #qt_qtsrc, #qt_qtsrcchokespeed, #qt_target, #qt_tilt, #qt_urlsubstituten, #qt_volume { width: 70px }\r
+#wmp_balance, #wmp_baseurl, #wmp_captioningid, #wmp_currentmarker, #wmp_currentposition, #wmp_defaultframe, #wmp_playcount, #wmp_rate, #wmp_uimode, #wmp_volume { width: 70px }\r
+#rmp_console, #rmp_numloop, #rmp_controls, #rmp_scriptcallbacks { width: 70px }\r
+#shockwave_swvolume, #shockwave_swframe, #shockwave_swurl, #shockwave_swstretchvalign, #shockwave_swstretchhalign, #shockwave_swstretchstyle { width: 90px }\r
+#qt_qtsrc { width: 200px }\r
--- /dev/null
+(function(){var each=tinymce.each;tinymce.create('tinymce.plugins.MediaPlugin',{init:function(ed,url){var t=this;t.editor=ed;t.url=url;function isMediaElm(n){return/^(mceItemFlash|mceItemShockWave|mceItemWindowsMedia|mceItemQuickTime|mceItemRealMedia)$/.test(n.className);};ed.onPreInit.add(function(){ed.serializer.addRules('param[name|value|_value]');});ed.addCommand('mceMedia',function(){ed.windowManager.open({file:url+'/media.htm',width:430+parseInt(ed.getLang('media.delta_width',0)),height:470+parseInt(ed.getLang('media.delta_height',0)),inline:1},{plugin_url:url});});ed.addButton('media',{title:'media.desc',cmd:'mceMedia'});ed.onNodeChange.add(function(ed,cm,n){cm.setActive('media',n.nodeName=='IMG'&&isMediaElm(n));});ed.onInit.add(function(){var lo={mceItemFlash:'flash',mceItemShockWave:'shockwave',mceItemWindowsMedia:'windowsmedia',mceItemQuickTime:'quicktime',mceItemRealMedia:'realmedia'};if(ed.settings.content_css!==false)ed.dom.loadCSS(url+"/css/content.css");if(ed.theme.onResolveName){ed.theme.onResolveName.add(function(th,o){if(o.name=='img'){each(lo,function(v,k){if(ed.dom.hasClass(o.node,k)){o.name=v;o.title=ed.dom.getAttrib(o.node,'title');return false;}});}});}if(ed&&ed.plugins.contextmenu){ed.plugins.contextmenu.onContextMenu.add(function(th,m,e){if(e.nodeName=='IMG'&&/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(e.className)){m.add({title:'media.edit',icon:'media',cmd:'mceMedia'});}});}});ed.onBeforeSetContent.add(function(ed,o){var h=o.content;h=h.replace(/<script[^>]*>\s*write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\(\{([^\)]*)\}\);\s*<\/script>/gi,function(a,b,c){var o=t._parse(c);return'<img class="mceItem'+b+'" title="'+ed.dom.encode(c)+'" src="'+url+'/img/trans.gif" width="'+o.width+'" height="'+o.height+'" />'});h=h.replace(/<object([^>]*)>/gi,'<span class="mceItemObject" $1>');h=h.replace(/<embed([^>]*)\/?>/gi,'<span class="mceItemEmbed" $1></span>');h=h.replace(/<embed([^>]*)>/gi,'<span class="mceItemEmbed" $1>');h=h.replace(/<\/(object)([^>]*)>/gi,'</span>');h=h.replace(/<\/embed>/gi,'');h=h.replace(/<param([^>]*)>/gi,function(a,b){return'<span '+b.replace(/value=/gi,'_value=')+' class="mceItemParam"></span>'});h=h.replace(/\/ class=\"mceItemParam\"><\/span>/gi,'class="mceItemParam"></span>');o.content=h;});ed.onSetContent.add(function(){t._spansToImgs(ed.getBody());});ed.onPreProcess.add(function(ed,o){var dom=ed.dom;if(o.set){t._spansToImgs(o.node);each(dom.select('IMG',o.node),function(n){var p;if(isMediaElm(n)){p=t._parse(n.title);dom.setAttrib(n,'width',dom.getAttrib(n,'width',p.width||100));dom.setAttrib(n,'height',dom.getAttrib(n,'height',p.height||100));}});}if(o.get){each(dom.select('IMG',o.node),function(n){var ci,cb,mt;if(ed.getParam('media_use_script')){if(isMediaElm(n))n.className=n.className.replace(/mceItem/g,'mceTemp');return;}switch(n.className){case'mceItemFlash':ci='d27cdb6e-ae6d-11cf-96b8-444553540000';cb='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';mt='application/x-shockwave-flash';break;case'mceItemShockWave':ci='166b1bca-3f9c-11cf-8075-444553540000';cb='http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0';mt='application/x-director';break;case'mceItemWindowsMedia':ci=ed.getParam('media_wmp6_compatible')?'05589fa1-c356-11ce-bf01-00aa0055595a':'6bf52a52-394a-11d3-b153-00c04f79faa6';cb='http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701';mt='application/x-mplayer2';break;case'mceItemQuickTime':ci='02bf25d5-8c17-4b23-bc80-d3488abddc6b';cb='http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0';mt='video/quicktime';break;case'mceItemRealMedia':ci='cfcdaa03-8be4-11cf-b84b-0020afbbccfa';cb='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';mt='audio/x-pn-realaudio-plugin';break;}if(ci){dom.replace(t._buildObj({classid:ci,codebase:cb,type:mt},n),n);}});}});ed.onPostProcess.add(function(ed,o){o.content=o.content.replace(/_value=/g,'value=');});if(ed.getParam('media_use_script')){function getAttr(s,n){n=new RegExp(n+'=\"([^\"]+)\"','g').exec(s);return n?ed.dom.decode(n[1]):'';};ed.onPostProcess.add(function(ed,o){o.content=o.content.replace(/<img[^>]+>/g,function(im){var cl=getAttr(im,'class');if(/^(mceTempFlash|mceTempShockWave|mceTempWindowsMedia|mceTempQuickTime|mceTempRealMedia)$/.test(cl)){at=t._parse(getAttr(im,'title'));at.width=getAttr(im,'width');at.height=getAttr(im,'height');im='<script type="text/javascript">write'+cl.substring(7)+'({'+t._serialize(at)+'});</script>';}return im;});});}},getInfo:function(){return{longname:'Media',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/media',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_buildObj:function(o,n){var ob,ed=this.editor,dom=ed.dom,p=this._parse(n.title);p.width=o.width=dom.getAttrib(n,'width')||100;p.height=o.height=dom.getAttrib(n,'height')||100;ob=dom.create('span',{mce_name:'object',classid:"clsid:"+o.classid,codebase:o.codebase,width:o.width,height:o.height});if(p.src)p.src=ed.convertURL(p.src,'src',n);each(p,function(v,k){if(!/^(width|height|codebase|classid)$/.test(k)){if(o.type=='application/x-mplayer2'&&k=='src')k='url';dom.add(ob,'span',{mce_name:'param',name:k,'_value':v});}});dom.add(ob,'span',tinymce.extend({mce_name:'embed',type:o.type},p));return ob;},_spansToImgs:function(p){var t=this,dom=t.editor.dom,im,ci;each(dom.select('span',p),function(n){if(dom.getAttrib(n,'class')=='mceItemObject'){ci=dom.getAttrib(n,"classid").toLowerCase().replace(/\s+/g,'');switch(ci){case'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000':dom.replace(t._createImg('mceItemFlash',n),n);break;case'clsid:166b1bca-3f9c-11cf-8075-444553540000':dom.replace(t._createImg('mceItemShockWave',n),n);break;case'clsid:6bf52a52-394a-11d3-b153-00c04f79faa6':case'clsid:22d6f312-b0f6-11d0-94ab-0080c74c7e95':case'clsid:05589fa1-c356-11ce-bf01-00aa0055595a':dom.replace(t._createImg('mceItemWindowsMedia',n),n);break;case'clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b':dom.replace(t._createImg('mceItemQuickTime',n),n);break;case'clsid:cfcdaa03-8be4-11cf-b84b-0020afbbccfa':dom.replace(t._createImg('mceItemRealMedia',n),n);break;default:dom.replace(t._createImg('mceItemFlash',n),n);}return;}if(dom.getAttrib(n,'class')=='mceItemEmbed'){switch(dom.getAttrib(n,'type')){case'application/x-shockwave-flash':dom.replace(t._createImg('mceItemFlash',n),n);break;case'application/x-director':dom.replace(t._createImg('mceItemShockWave',n),n);break;case'application/x-mplayer2':dom.replace(t._createImg('mceItemWindowsMedia',n),n);break;case'video/quicktime':dom.replace(t._createImg('mceItemQuickTime',n),n);break;case'audio/x-pn-realaudio-plugin':dom.replace(t._createImg('mceItemRealMedia',n),n);break;default:dom.replace(t._createImg('mceItemFlash',n),n);}}});},_createImg:function(cl,n){var im,dom=this.editor.dom,pa={},ti='';im=dom.create('img',{src:this.url+'/img/trans.gif',width:dom.getAttrib(n,'width')||100,height:dom.getAttrib(n,'height')||100,'class':cl});each(['id','name','width','height','bgcolor','align','flashvars','src','wmode'],function(na){var v=dom.getAttrib(n,na);if(v)pa[na]=v;});each(dom.select('span',n),function(n){if(dom.hasClass(n,'mceItemParam'))pa[dom.getAttrib(n,'name')]=dom.getAttrib(n,'_value');});if(pa.movie){pa.src=pa.movie;delete pa.movie;}delete pa.width;delete pa.height;im.title=this._serialize(pa);return im;},_parse:function(s){return tinymce.util.JSON.parse('{'+s+'}');},_serialize:function(o){return tinymce.util.JSON.serialize(o).replace(/[{}]/g,'');}});tinymce.PluginManager.add('media',tinymce.plugins.MediaPlugin);})();
\ No newline at end of file
--- /dev/null
+/**\r
+ * $Id: editor_plugin_src.js 880 2008-06-19 10:14:14Z spocke $\r
+ *\r
+ * @author Moxiecode\r
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+(function() {\r
+ var each = tinymce.each;\r
+\r
+ tinymce.create('tinymce.plugins.MediaPlugin', {\r
+ init : function(ed, url) {\r
+ var t = this;\r
+ \r
+ t.editor = ed;\r
+ t.url = url;\r
+\r
+ function isMediaElm(n) {\r
+ return /^(mceItemFlash|mceItemShockWave|mceItemWindowsMedia|mceItemQuickTime|mceItemRealMedia)$/.test(n.className);\r
+ };\r
+\r
+ ed.onPreInit.add(function() {\r
+ // Force in _value parameter this extra parameter is required for older Opera versions\r
+ ed.serializer.addRules('param[name|value|_value]');\r
+ });\r
+\r
+ // Register commands\r
+ ed.addCommand('mceMedia', function() {\r
+ ed.windowManager.open({\r
+ file : url + '/media.htm',\r
+ width : 430 + parseInt(ed.getLang('media.delta_width', 0)),\r
+ height : 470 + parseInt(ed.getLang('media.delta_height', 0)),\r
+ inline : 1\r
+ }, {\r
+ plugin_url : url\r
+ });\r
+ });\r
+\r
+ // Register buttons\r
+ ed.addButton('media', {title : 'media.desc', cmd : 'mceMedia'});\r
+\r
+ ed.onNodeChange.add(function(ed, cm, n) {\r
+ cm.setActive('media', n.nodeName == 'IMG' && isMediaElm(n));\r
+ });\r
+\r
+ ed.onInit.add(function() {\r
+ var lo = {\r
+ mceItemFlash : 'flash',\r
+ mceItemShockWave : 'shockwave',\r
+ mceItemWindowsMedia : 'windowsmedia',\r
+ mceItemQuickTime : 'quicktime',\r
+ mceItemRealMedia : 'realmedia'\r
+ };\r
+\r
+ if (ed.settings.content_css !== false)\r
+ ed.dom.loadCSS(url + "/css/content.css");\r
+\r
+ if (ed.theme.onResolveName) {\r
+ ed.theme.onResolveName.add(function(th, o) {\r
+ if (o.name == 'img') {\r
+ each(lo, function(v, k) {\r
+ if (ed.dom.hasClass(o.node, k)) {\r
+ o.name = v;\r
+ o.title = ed.dom.getAttrib(o.node, 'title');\r
+ return false;\r
+ }\r
+ });\r
+ }\r
+ });\r
+ }\r
+\r
+ if (ed && ed.plugins.contextmenu) {\r
+ ed.plugins.contextmenu.onContextMenu.add(function(th, m, e) {\r
+ if (e.nodeName == 'IMG' && /mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(e.className)) {\r
+ m.add({title : 'media.edit', icon : 'media', cmd : 'mceMedia'});\r
+ }\r
+ });\r
+ }\r
+ });\r
+\r
+ ed.onBeforeSetContent.add(function(ed, o) {\r
+ var h = o.content;\r
+\r
+ h = h.replace(/<script[^>]*>\s*write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\(\{([^\)]*)\}\);\s*<\/script>/gi, function(a, b, c) {\r
+ var o = t._parse(c);\r
+\r
+ return '<img class="mceItem' + b + '" title="' + ed.dom.encode(c) + '" src="' + url + '/img/trans.gif" width="' + o.width + '" height="' + o.height + '" />'\r
+ });\r
+\r
+ h = h.replace(/<object([^>]*)>/gi, '<span class="mceItemObject" $1>');\r
+ h = h.replace(/<embed([^>]*)\/?>/gi, '<span class="mceItemEmbed" $1></span>');\r
+ h = h.replace(/<embed([^>]*)>/gi, '<span class="mceItemEmbed" $1>');\r
+ h = h.replace(/<\/(object)([^>]*)>/gi, '</span>');\r
+ h = h.replace(/<\/embed>/gi, '');\r
+ h = h.replace(/<param([^>]*)>/gi, function(a, b) {return '<span ' + b.replace(/value=/gi, '_value=') + ' class="mceItemParam"></span>'});\r
+ h = h.replace(/\/ class=\"mceItemParam\"><\/span>/gi, 'class="mceItemParam"></span>');\r
+\r
+ o.content = h;\r
+ });\r
+\r
+ ed.onSetContent.add(function() {\r
+ t._spansToImgs(ed.getBody());\r
+ });\r
+\r
+ ed.onPreProcess.add(function(ed, o) {\r
+ var dom = ed.dom;\r
+\r
+ if (o.set) {\r
+ t._spansToImgs(o.node);\r
+\r
+ each(dom.select('IMG', o.node), function(n) {\r
+ var p;\r
+\r
+ if (isMediaElm(n)) {\r
+ p = t._parse(n.title);\r
+ dom.setAttrib(n, 'width', dom.getAttrib(n, 'width', p.width || 100));\r
+ dom.setAttrib(n, 'height', dom.getAttrib(n, 'height', p.height || 100));\r
+ }\r
+ });\r
+ }\r
+\r
+ if (o.get) {\r
+ each(dom.select('IMG', o.node), function(n) {\r
+ var ci, cb, mt;\r
+\r
+ if (ed.getParam('media_use_script')) {\r
+ if (isMediaElm(n))\r
+ n.className = n.className.replace(/mceItem/g, 'mceTemp');\r
+\r
+ return;\r
+ }\r
+\r
+ switch (n.className) {\r
+ case 'mceItemFlash':\r
+ ci = 'd27cdb6e-ae6d-11cf-96b8-444553540000';\r
+ cb = 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';\r
+ mt = 'application/x-shockwave-flash';\r
+ break;\r
+\r
+ case 'mceItemShockWave':\r
+ ci = '166b1bca-3f9c-11cf-8075-444553540000';\r
+ cb = 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0';\r
+ mt = 'application/x-director';\r
+ break;\r
+\r
+ case 'mceItemWindowsMedia':\r
+ ci = ed.getParam('media_wmp6_compatible') ? '05589fa1-c356-11ce-bf01-00aa0055595a' : '6bf52a52-394a-11d3-b153-00c04f79faa6';\r
+ cb = 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701';\r
+ mt = 'application/x-mplayer2';\r
+ break;\r
+\r
+ case 'mceItemQuickTime':\r
+ ci = '02bf25d5-8c17-4b23-bc80-d3488abddc6b';\r
+ cb = 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0';\r
+ mt = 'video/quicktime';\r
+ break;\r
+\r
+ case 'mceItemRealMedia':\r
+ ci = 'cfcdaa03-8be4-11cf-b84b-0020afbbccfa';\r
+ cb = 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';\r
+ mt = 'audio/x-pn-realaudio-plugin';\r
+ break;\r
+ }\r
+\r
+ if (ci) {\r
+ dom.replace(t._buildObj({\r
+ classid : ci,\r
+ codebase : cb,\r
+ type : mt\r
+ }, n), n);\r
+ }\r
+ });\r
+ }\r
+ });\r
+\r
+ ed.onPostProcess.add(function(ed, o) {\r
+ o.content = o.content.replace(/_value=/g, 'value=');\r
+ });\r
+\r
+ if (ed.getParam('media_use_script')) {\r
+ function getAttr(s, n) {\r
+ n = new RegExp(n + '=\"([^\"]+)\"', 'g').exec(s);\r
+\r
+ return n ? ed.dom.decode(n[1]) : '';\r
+ };\r
+\r
+ ed.onPostProcess.add(function(ed, o) {\r
+ o.content = o.content.replace(/<img[^>]+>/g, function(im) {\r
+ var cl = getAttr(im, 'class');\r
+\r
+ if (/^(mceTempFlash|mceTempShockWave|mceTempWindowsMedia|mceTempQuickTime|mceTempRealMedia)$/.test(cl)) {\r
+ at = t._parse(getAttr(im, 'title'));\r
+ at.width = getAttr(im, 'width');\r
+ at.height = getAttr(im, 'height');\r
+ im = '<script type="text/javascript">write' + cl.substring(7) + '({' + t._serialize(at) + '});</script>';\r
+ }\r
+\r
+ return im;\r
+ });\r
+ });\r
+ }\r
+ },\r
+\r
+ getInfo : function() {\r
+ return {\r
+ longname : 'Media',\r
+ author : 'Moxiecode Systems AB',\r
+ authorurl : 'http://tinymce.moxiecode.com',\r
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/media',\r
+ version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+ };\r
+ },\r
+\r
+ // Private methods\r
+\r
+ _buildObj : function(o, n) {\r
+ var ob, ed = this.editor, dom = ed.dom, p = this._parse(n.title);\r
+\r
+ p.width = o.width = dom.getAttrib(n, 'width') || 100;\r
+ p.height = o.height = dom.getAttrib(n, 'height') || 100;\r
+\r
+ ob = dom.create('span', {\r
+ mce_name : 'object',\r
+ classid : "clsid:" + o.classid,\r
+ codebase : o.codebase,\r
+ width : o.width,\r
+ height : o.height\r
+ });\r
+\r
+ if (p.src)\r
+ p.src = ed.convertURL(p.src, 'src', n);\r
+\r
+ each (p, function(v, k) {\r
+ if (!/^(width|height|codebase|classid)$/.test(k)) {\r
+ // Use url instead of src in IE for Windows media\r
+ if (o.type == 'application/x-mplayer2' && k == 'src')\r
+ k = 'url';\r
+\r
+ dom.add(ob, 'span', {mce_name : 'param', name : k, '_value' : v});\r
+ }\r
+ });\r
+\r
+ dom.add(ob, 'span', tinymce.extend({mce_name : 'embed', type : o.type}, p));\r
+\r
+ return ob;\r
+ },\r
+\r
+ _spansToImgs : function(p) {\r
+ var t = this, dom = t.editor.dom, im, ci;\r
+\r
+ each(dom.select('span', p), function(n) {\r
+ // Convert object into image\r
+ if (dom.getAttrib(n, 'class') == 'mceItemObject') {\r
+ ci = dom.getAttrib(n, "classid").toLowerCase().replace(/\s+/g, '');\r
+\r
+ switch (ci) {\r
+ case 'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000':\r
+ dom.replace(t._createImg('mceItemFlash', n), n);\r
+ break;\r
+\r
+ case 'clsid:166b1bca-3f9c-11cf-8075-444553540000':\r
+ dom.replace(t._createImg('mceItemShockWave', n), n);\r
+ break;\r
+\r
+ case 'clsid:6bf52a52-394a-11d3-b153-00c04f79faa6':\r
+ case 'clsid:22d6f312-b0f6-11d0-94ab-0080c74c7e95':\r
+ case 'clsid:05589fa1-c356-11ce-bf01-00aa0055595a':\r
+ dom.replace(t._createImg('mceItemWindowsMedia', n), n);\r
+ break;\r
+\r
+ case 'clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b':\r
+ dom.replace(t._createImg('mceItemQuickTime', n), n);\r
+ break;\r
+\r
+ case 'clsid:cfcdaa03-8be4-11cf-b84b-0020afbbccfa':\r
+ dom.replace(t._createImg('mceItemRealMedia', n), n);\r
+ break;\r
+\r
+ default:\r
+ dom.replace(t._createImg('mceItemFlash', n), n);\r
+ }\r
+ \r
+ return;\r
+ }\r
+\r
+ // Convert embed into image\r
+ if (dom.getAttrib(n, 'class') == 'mceItemEmbed') {\r
+ switch (dom.getAttrib(n, 'type')) {\r
+ case 'application/x-shockwave-flash':\r
+ dom.replace(t._createImg('mceItemFlash', n), n);\r
+ break;\r
+\r
+ case 'application/x-director':\r
+ dom.replace(t._createImg('mceItemShockWave', n), n);\r
+ break;\r
+\r
+ case 'application/x-mplayer2':\r
+ dom.replace(t._createImg('mceItemWindowsMedia', n), n);\r
+ break;\r
+\r
+ case 'video/quicktime':\r
+ dom.replace(t._createImg('mceItemQuickTime', n), n);\r
+ break;\r
+\r
+ case 'audio/x-pn-realaudio-plugin':\r
+ dom.replace(t._createImg('mceItemRealMedia', n), n);\r
+ break;\r
+\r
+ default:\r
+ dom.replace(t._createImg('mceItemFlash', n), n);\r
+ }\r
+ } \r
+ });\r
+ },\r
+\r
+ _createImg : function(cl, n) {\r
+ var im, dom = this.editor.dom, pa = {}, ti = '';\r
+\r
+ // Create image\r
+ im = dom.create('img', {\r
+ src : this.url + '/img/trans.gif',\r
+ width : dom.getAttrib(n, 'width') || 100,\r
+ height : dom.getAttrib(n, 'height') || 100,\r
+ 'class' : cl\r
+ });\r
+\r
+ // Setup base parameters\r
+ each(['id', 'name', 'width', 'height', 'bgcolor', 'align', 'flashvars', 'src', 'wmode'], function(na) {\r
+ var v = dom.getAttrib(n, na);\r
+\r
+ if (v)\r
+ pa[na] = v;\r
+ });\r
+\r
+ // Add optional parameters\r
+ each(dom.select('span', n), function(n) {\r
+ if (dom.hasClass(n, 'mceItemParam'))\r
+ pa[dom.getAttrib(n, 'name')] = dom.getAttrib(n, '_value');\r
+ });\r
+\r
+ // Use src not movie\r
+ if (pa.movie) {\r
+ pa.src = pa.movie;\r
+ delete pa.movie;\r
+ }\r
+\r
+ delete pa.width;\r
+ delete pa.height;\r
+\r
+ im.title = this._serialize(pa);\r
+\r
+ return im;\r
+ },\r
+\r
+ _parse : function(s) {\r
+ return tinymce.util.JSON.parse('{' + s + '}');\r
+ },\r
+\r
+ _serialize : function(o) {\r
+ return tinymce.util.JSON.serialize(o).replace(/[{}]/g, '');\r
+ }\r
+ });\r
+\r
+ // Register plugin\r
+ tinymce.PluginManager.add('media', tinymce.plugins.MediaPlugin);\r
+})();
\ No newline at end of file
--- /dev/null
+/**\r
+ * This script contains embed functions for common plugins. This scripts are complety free to use for any purpose.\r
+ */\r
+\r
+function writeFlash(p) {\r
+ writeEmbed(\r
+ 'D27CDB6E-AE6D-11cf-96B8-444553540000',\r
+ 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',\r
+ 'application/x-shockwave-flash',\r
+ p\r
+ );\r
+}\r
+\r
+function writeShockWave(p) {\r
+ writeEmbed(\r
+ '166B1BCA-3F9C-11CF-8075-444553540000',\r
+ 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0',\r
+ 'application/x-director',\r
+ p\r
+ );\r
+}\r
+\r
+function writeQuickTime(p) {\r
+ writeEmbed(\r
+ '02BF25D5-8C17-4B23-BC80-D3488ABDDC6B',\r
+ 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0',\r
+ 'video/quicktime',\r
+ p\r
+ );\r
+}\r
+\r
+function writeRealMedia(p) {\r
+ writeEmbed(\r
+ 'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA',\r
+ 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',\r
+ 'audio/x-pn-realaudio-plugin',\r
+ p\r
+ );\r
+}\r
+\r
+function writeWindowsMedia(p) {\r
+ p.url = p.src;\r
+ writeEmbed(\r
+ '6BF52A52-394A-11D3-B153-00C04F79FAA6',\r
+ 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701',\r
+ 'application/x-mplayer2',\r
+ p\r
+ );\r
+}\r
+\r
+function writeEmbed(cls, cb, mt, p) {\r
+ var h = '', n;\r
+\r
+ h += '<object classid="clsid:' + cls + '" codebase="' + cb + '"';\r
+ h += typeof(p.id) != "undefined" ? 'id="' + p.id + '"' : '';\r
+ h += typeof(p.name) != "undefined" ? 'name="' + p.name + '"' : '';\r
+ h += typeof(p.width) != "undefined" ? 'width="' + p.width + '"' : '';\r
+ h += typeof(p.height) != "undefined" ? 'height="' + p.height + '"' : '';\r
+ h += typeof(p.align) != "undefined" ? 'align="' + p.align + '"' : '';\r
+ h += '>';\r
+\r
+ for (n in p)\r
+ h += '<param name="' + n + '" value="' + p[n] + '">';\r
+\r
+ h += '<embed type="' + mt + '"';\r
+\r
+ for (n in p)\r
+ h += n + '="' + p[n] + '" ';\r
+\r
+ h += '></embed></object>';\r
+\r
+ document.write(h);\r
+}\r
--- /dev/null
+tinyMCEPopup.requireLangPack();\r
+\r
+var oldWidth, oldHeight, ed, url;\r
+\r
+if (url = tinyMCEPopup.getParam("media_external_list_url"))\r
+ document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>');\r
+\r
+function init() {\r
+ var pl = "", f, val;\r
+ var type = "flash", fe, i;\r
+\r
+ ed = tinyMCEPopup.editor;\r
+\r
+ tinyMCEPopup.resizeToInnerSize();\r
+ f = document.forms[0]\r
+\r
+ fe = ed.selection.getNode();\r
+ if (/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(ed.dom.getAttrib(fe, 'class'))) {\r
+ pl = fe.title;\r
+\r
+ switch (ed.dom.getAttrib(fe, 'class')) {\r
+ case 'mceItemFlash':\r
+ type = 'flash';\r
+ break;\r
+\r
+ case 'mceItemFlashVideo':\r
+ type = 'flv';\r
+ break;\r
+\r
+ case 'mceItemShockWave':\r
+ type = 'shockwave';\r
+ break;\r
+\r
+ case 'mceItemWindowsMedia':\r
+ type = 'wmp';\r
+ break;\r
+\r
+ case 'mceItemQuickTime':\r
+ type = 'qt';\r
+ break;\r
+\r
+ case 'mceItemRealMedia':\r
+ type = 'rmp';\r
+ break;\r
+ }\r
+\r
+ document.forms[0].insert.value = ed.getLang('update', 'Insert', true); \r
+ }\r
+\r
+ document.getElementById('filebrowsercontainer').innerHTML = getBrowserHTML('filebrowser','src','media','media');\r
+ document.getElementById('qtsrcfilebrowsercontainer').innerHTML = getBrowserHTML('qtsrcfilebrowser','qt_qtsrc','media','media');\r
+ document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');\r
+\r
+ var html = getMediaListHTML('medialist','src','media','media');\r
+ if (html == "")\r
+ document.getElementById("linklistrow").style.display = 'none';\r
+ else\r
+ document.getElementById("linklistcontainer").innerHTML = html;\r
+\r
+ // Resize some elements\r
+ if (isVisible('filebrowser'))\r
+ document.getElementById('src').style.width = '230px';\r
+\r
+ // Setup form\r
+ if (pl != "") {\r
+ pl = tinyMCEPopup.editor.plugins.media._parse(pl);\r
+\r
+ switch (type) {\r
+ case "flash":\r
+ setBool(pl, 'flash', 'play');\r
+ setBool(pl, 'flash', 'loop');\r
+ setBool(pl, 'flash', 'menu');\r
+ setBool(pl, 'flash', 'swliveconnect');\r
+ setStr(pl, 'flash', 'quality');\r
+ setStr(pl, 'flash', 'scale');\r
+ setStr(pl, 'flash', 'salign');\r
+ setStr(pl, 'flash', 'wmode');\r
+ setStr(pl, 'flash', 'base');\r
+ setStr(pl, 'flash', 'flashvars');\r
+ break;\r
+\r
+ case "qt":\r
+ setBool(pl, 'qt', 'loop');\r
+ setBool(pl, 'qt', 'autoplay');\r
+ setBool(pl, 'qt', 'cache');\r
+ setBool(pl, 'qt', 'controller');\r
+ setBool(pl, 'qt', 'correction');\r
+ setBool(pl, 'qt', 'enablejavascript');\r
+ setBool(pl, 'qt', 'kioskmode');\r
+ setBool(pl, 'qt', 'autohref');\r
+ setBool(pl, 'qt', 'playeveryframe');\r
+ setBool(pl, 'qt', 'tarsetcache');\r
+ setStr(pl, 'qt', 'scale');\r
+ setStr(pl, 'qt', 'starttime');\r
+ setStr(pl, 'qt', 'endtime');\r
+ setStr(pl, 'qt', 'tarset');\r
+ setStr(pl, 'qt', 'qtsrcchokespeed');\r
+ setStr(pl, 'qt', 'volume');\r
+ setStr(pl, 'qt', 'qtsrc');\r
+ break;\r
+\r
+ case "shockwave":\r
+ setBool(pl, 'shockwave', 'sound');\r
+ setBool(pl, 'shockwave', 'progress');\r
+ setBool(pl, 'shockwave', 'autostart');\r
+ setBool(pl, 'shockwave', 'swliveconnect');\r
+ setStr(pl, 'shockwave', 'swvolume');\r
+ setStr(pl, 'shockwave', 'swstretchstyle');\r
+ setStr(pl, 'shockwave', 'swstretchhalign');\r
+ setStr(pl, 'shockwave', 'swstretchvalign');\r
+ break;\r
+\r
+ case "wmp":\r
+ setBool(pl, 'wmp', 'autostart');\r
+ setBool(pl, 'wmp', 'enabled');\r
+ setBool(pl, 'wmp', 'enablecontextmenu');\r
+ setBool(pl, 'wmp', 'fullscreen');\r
+ setBool(pl, 'wmp', 'invokeurls');\r
+ setBool(pl, 'wmp', 'mute');\r
+ setBool(pl, 'wmp', 'stretchtofit');\r
+ setBool(pl, 'wmp', 'windowlessvideo');\r
+ setStr(pl, 'wmp', 'balance');\r
+ setStr(pl, 'wmp', 'baseurl');\r
+ setStr(pl, 'wmp', 'captioningid');\r
+ setStr(pl, 'wmp', 'currentmarker');\r
+ setStr(pl, 'wmp', 'currentposition');\r
+ setStr(pl, 'wmp', 'defaultframe');\r
+ setStr(pl, 'wmp', 'playcount');\r
+ setStr(pl, 'wmp', 'rate');\r
+ setStr(pl, 'wmp', 'uimode');\r
+ setStr(pl, 'wmp', 'volume');\r
+ break;\r
+\r
+ case "rmp":\r
+ setBool(pl, 'rmp', 'autostart');\r
+ setBool(pl, 'rmp', 'loop');\r
+ setBool(pl, 'rmp', 'autogotourl');\r
+ setBool(pl, 'rmp', 'center');\r
+ setBool(pl, 'rmp', 'imagestatus');\r
+ setBool(pl, 'rmp', 'maintainaspect');\r
+ setBool(pl, 'rmp', 'nojava');\r
+ setBool(pl, 'rmp', 'prefetch');\r
+ setBool(pl, 'rmp', 'shuffle');\r
+ setStr(pl, 'rmp', 'console');\r
+ setStr(pl, 'rmp', 'controls');\r
+ setStr(pl, 'rmp', 'numloop');\r
+ setStr(pl, 'rmp', 'scriptcallbacks');\r
+ break;\r
+ }\r
+\r
+ setStr(pl, null, 'src');\r
+ setStr(pl, null, 'id');\r
+ setStr(pl, null, 'name');\r
+ setStr(pl, null, 'vspace');\r
+ setStr(pl, null, 'hspace');\r
+ setStr(pl, null, 'bgcolor');\r
+ setStr(pl, null, 'align');\r
+ setStr(pl, null, 'width');\r
+ setStr(pl, null, 'height');\r
+\r
+ if ((val = ed.dom.getAttrib(fe, "width")) != "")\r
+ pl.width = f.width.value = val;\r
+\r
+ if ((val = ed.dom.getAttrib(fe, "height")) != "")\r
+ pl.height = f.height.value = val;\r
+\r
+ oldWidth = pl.width ? parseInt(pl.width) : 0;\r
+ oldHeight = pl.height ? parseInt(pl.height) : 0;\r
+ } else\r
+ oldWidth = oldHeight = 0;\r
+\r
+ selectByValue(f, 'media_type', type);\r
+ changedType(type);\r
+ updateColor('bgcolor_pick', 'bgcolor');\r
+\r
+ TinyMCE_EditableSelects.init();\r
+ generatePreview();\r
+}\r
+\r
+function insertMedia() {\r
+ var fe, f = document.forms[0], h;\r
+\r
+ tinyMCEPopup.restoreSelection();\r
+\r
+ if (!AutoValidator.validate(f)) {\r
+ tinyMCEPopup.alert(ed.getLang('invalid_data'));\r
+ return false;\r
+ }\r
+\r
+ f.width.value = f.width.value == "" ? 100 : f.width.value;\r
+ f.height.value = f.height.value == "" ? 100 : f.height.value;\r
+\r
+ fe = ed.selection.getNode();\r
+ if (fe != null && /mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(ed.dom.getAttrib(fe, 'class'))) {\r
+ switch (f.media_type.options[f.media_type.selectedIndex].value) {\r
+ case "flash":\r
+ fe.className = "mceItemFlash";\r
+ break;\r
+\r
+ case "flv":\r
+ fe.className = "mceItemFlashVideo";\r
+ break;\r
+\r
+ case "shockwave":\r
+ fe.className = "mceItemShockWave";\r
+ break;\r
+\r
+ case "qt":\r
+ fe.className = "mceItemQuickTime";\r
+ break;\r
+\r
+ case "wmp":\r
+ fe.className = "mceItemWindowsMedia";\r
+ break;\r
+\r
+ case "rmp":\r
+ fe.className = "mceItemRealMedia";\r
+ break;\r
+ }\r
+\r
+ if (fe.width != f.width.value || fe.height != f.height.height)\r
+ ed.execCommand('mceRepaint');\r
+\r
+ fe.title = serializeParameters();\r
+ fe.width = f.width.value;\r
+ fe.height = f.height.value;\r
+ fe.style.width = f.width.value + (f.width.value.indexOf('%') == -1 ? 'px' : '');\r
+ fe.style.height = f.height.value + (f.height.value.indexOf('%') == -1 ? 'px' : '');\r
+ fe.align = f.align.options[f.align.selectedIndex].value;\r
+ } else {\r
+ h = '<img src="' + tinyMCEPopup.getWindowArg("plugin_url") + '/img/trans.gif"' ;\r
+\r
+ switch (f.media_type.options[f.media_type.selectedIndex].value) {\r
+ case "flash":\r
+ h += ' class="mceItemFlash"';\r
+ break;\r
+\r
+ case "flv":\r
+ h += ' class="mceItemFlashVideo"';\r
+ break;\r
+\r
+ case "shockwave":\r
+ h += ' class="mceItemShockWave"';\r
+ break;\r
+\r
+ case "qt":\r
+ h += ' class="mceItemQuickTime"';\r
+ break;\r
+\r
+ case "wmp":\r
+ h += ' class="mceItemWindowsMedia"';\r
+ break;\r
+\r
+ case "rmp":\r
+ h += ' class="mceItemRealMedia"';\r
+ break;\r
+ }\r
+\r
+ h += ' title="' + serializeParameters() + '"';\r
+ h += ' width="' + f.width.value + '"';\r
+ h += ' height="' + f.height.value + '"';\r
+ h += ' align="' + f.align.options[f.align.selectedIndex].value + '"';\r
+\r
+ h += ' />';\r
+\r
+ ed.execCommand('mceInsertContent', false, h);\r
+ }\r
+\r
+ tinyMCEPopup.close();\r
+}\r
+\r
+function updatePreview() {\r
+ var f = document.forms[0], type;\r
+\r
+ f.width.value = f.width.value || '320';\r
+ f.height.value = f.height.value || '240';\r
+\r
+ type = getType(f.src.value);\r
+ selectByValue(f, 'media_type', type);\r
+ changedType(type);\r
+ generatePreview();\r
+}\r
+\r
+function getMediaListHTML() {\r
+ if (typeof(tinyMCEMediaList) != "undefined" && tinyMCEMediaList.length > 0) {\r
+ var html = "";\r
+\r
+ html += '<select id="linklist" name="linklist" style="width: 250px" onchange="this.form.src.value=this.options[this.selectedIndex].value;updatePreview();">';\r
+ html += '<option value="">---</option>';\r
+\r
+ for (var i=0; i<tinyMCEMediaList.length; i++)\r
+ html += '<option value="' + tinyMCEMediaList[i][1] + '">' + tinyMCEMediaList[i][0] + '</option>';\r
+\r
+ html += '</select>';\r
+\r
+ return html;\r
+ }\r
+\r
+ return "";\r
+}\r
+\r
+function getType(v) {\r
+ var fo, i, c, el, x, f = document.forms[0];\r
+\r
+ fo = ed.getParam("media_types", "flash=swf;flv=flv;shockwave=dcr;qt=mov,qt,mpg,mp3,mp4,mpeg;shockwave=dcr;wmp=avi,wmv,wm,asf,asx,wmx,wvx;rmp=rm,ra,ram").split(';');\r
+\r
+ // YouTube\r
+ if (v.match(/watch\?v=(.+)(.*)/)) {\r
+ f.width.value = '425';\r
+ f.height.value = '350';\r
+ f.src.value = 'http://www.youtube.com/v/' + v.match(/v=(.*)(.*)/)[0].split('=')[1];\r
+ return 'flash';\r
+ }\r
+\r
+ // Google video\r
+ if (v.indexOf('http://video.google.com/videoplay?docid=') == 0) {\r
+ f.width.value = '425';\r
+ f.height.value = '326';\r
+ f.src.value = 'http://video.google.com/googleplayer.swf?docId=' + v.substring('http://video.google.com/videoplay?docid='.length) + '&hl=en';\r
+ return 'flash';\r
+ }\r
+\r
+ for (i=0; i<fo.length; i++) {\r
+ c = fo[i].split('=');\r
+\r
+ el = c[1].split(',');\r
+ for (x=0; x<el.length; x++)\r
+ if (v.indexOf('.' + el[x]) != -1)\r
+ return c[0];\r
+ }\r
+\r
+ return null;\r
+}\r
+\r
+function switchType(v) {\r
+ var t = getType(v), d = document, f = d.forms[0];\r
+\r
+ if (!t)\r
+ return;\r
+\r
+ selectByValue(d.forms[0], 'media_type', t);\r
+ changedType(t);\r
+\r
+ // Update qtsrc also\r
+ if (t == 'qt' && f.src.value.toLowerCase().indexOf('rtsp://') != -1) {\r
+ alert(ed.getLang("media_qt_stream_warn"));\r
+\r
+ if (f.qt_qtsrc.value == '')\r
+ f.qt_qtsrc.value = f.src.value;\r
+ }\r
+}\r
+\r
+function changedType(t) {\r
+ var d = document;\r
+\r
+ d.getElementById('flash_options').style.display = 'none';\r
+ d.getElementById('flv_options').style.display = 'none';\r
+ d.getElementById('qt_options').style.display = 'none';\r
+ d.getElementById('shockwave_options').style.display = 'none';\r
+ d.getElementById('wmp_options').style.display = 'none';\r
+ d.getElementById('rmp_options').style.display = 'none';\r
+ d.getElementById(t + '_options').style.display = 'block';\r
+}\r
+\r
+function serializeParameters() {\r
+ var d = document, f = d.forms[0], s = '';\r
+\r
+ switch (f.media_type.options[f.media_type.selectedIndex].value) {\r
+ case "flash":\r
+ s += getBool('flash', 'play', true);\r
+ s += getBool('flash', 'loop', true);\r
+ s += getBool('flash', 'menu', true);\r
+ s += getBool('flash', 'swliveconnect', false);\r
+ s += getStr('flash', 'quality');\r
+ s += getStr('flash', 'scale');\r
+ s += getStr('flash', 'salign');\r
+ s += getStr('flash', 'wmode');\r
+ s += getStr('flash', 'base');\r
+ s += getStr('flash', 'flashvars');\r
+ break;\r
+\r
+ case "qt":\r
+ s += getBool('qt', 'loop', false);\r
+ s += getBool('qt', 'autoplay', true);\r
+ s += getBool('qt', 'cache', false);\r
+ s += getBool('qt', 'controller', true);\r
+ s += getBool('qt', 'correction', false, 'none', 'full');\r
+ s += getBool('qt', 'enablejavascript', false);\r
+ s += getBool('qt', 'kioskmode', false);\r
+ s += getBool('qt', 'autohref', false);\r
+ s += getBool('qt', 'playeveryframe', false);\r
+ s += getBool('qt', 'targetcache', false);\r
+ s += getStr('qt', 'scale');\r
+ s += getStr('qt', 'starttime');\r
+ s += getStr('qt', 'endtime');\r
+ s += getStr('qt', 'target');\r
+ s += getStr('qt', 'qtsrcchokespeed');\r
+ s += getStr('qt', 'volume');\r
+ s += getStr('qt', 'qtsrc');\r
+ break;\r
+\r
+ case "shockwave":\r
+ s += getBool('shockwave', 'sound');\r
+ s += getBool('shockwave', 'progress');\r
+ s += getBool('shockwave', 'autostart');\r
+ s += getBool('shockwave', 'swliveconnect');\r
+ s += getStr('shockwave', 'swvolume');\r
+ s += getStr('shockwave', 'swstretchstyle');\r
+ s += getStr('shockwave', 'swstretchhalign');\r
+ s += getStr('shockwave', 'swstretchvalign');\r
+ break;\r
+\r
+ case "wmp":\r
+ s += getBool('wmp', 'autostart', true);\r
+ s += getBool('wmp', 'enabled', false);\r
+ s += getBool('wmp', 'enablecontextmenu', true);\r
+ s += getBool('wmp', 'fullscreen', false);\r
+ s += getBool('wmp', 'invokeurls', true);\r
+ s += getBool('wmp', 'mute', false);\r
+ s += getBool('wmp', 'stretchtofit', false);\r
+ s += getBool('wmp', 'windowlessvideo', false);\r
+ s += getStr('wmp', 'balance');\r
+ s += getStr('wmp', 'baseurl');\r
+ s += getStr('wmp', 'captioningid');\r
+ s += getStr('wmp', 'currentmarker');\r
+ s += getStr('wmp', 'currentposition');\r
+ s += getStr('wmp', 'defaultframe');\r
+ s += getStr('wmp', 'playcount');\r
+ s += getStr('wmp', 'rate');\r
+ s += getStr('wmp', 'uimode');\r
+ s += getStr('wmp', 'volume');\r
+ break;\r
+\r
+ case "rmp":\r
+ s += getBool('rmp', 'autostart', false);\r
+ s += getBool('rmp', 'loop', false);\r
+ s += getBool('rmp', 'autogotourl', true);\r
+ s += getBool('rmp', 'center', false);\r
+ s += getBool('rmp', 'imagestatus', true);\r
+ s += getBool('rmp', 'maintainaspect', false);\r
+ s += getBool('rmp', 'nojava', false);\r
+ s += getBool('rmp', 'prefetch', false);\r
+ s += getBool('rmp', 'shuffle', false);\r
+ s += getStr('rmp', 'console');\r
+ s += getStr('rmp', 'controls');\r
+ s += getStr('rmp', 'numloop');\r
+ s += getStr('rmp', 'scriptcallbacks');\r
+ break;\r
+ }\r
+\r
+ s += getStr(null, 'id');\r
+ s += getStr(null, 'name');\r
+ s += getStr(null, 'src');\r
+ s += getStr(null, 'align');\r
+ s += getStr(null, 'bgcolor');\r
+ s += getInt(null, 'vspace');\r
+ s += getInt(null, 'hspace');\r
+ s += getStr(null, 'width');\r
+ s += getStr(null, 'height');\r
+\r
+ s = s.length > 0 ? s.substring(0, s.length - 1) : s;\r
+\r
+ return s;\r
+}\r
+\r
+function setBool(pl, p, n) {\r
+ if (typeof(pl[n]) == "undefined")\r
+ return;\r
+\r
+ document.forms[0].elements[p + "_" + n].checked = pl[n];\r
+}\r
+\r
+function setStr(pl, p, n) {\r
+ var f = document.forms[0], e = f.elements[(p != null ? p + "_" : '') + n];\r
+\r
+ if (typeof(pl[n]) == "undefined")\r
+ return;\r
+\r
+ if (e.type == "text")\r
+ e.value = pl[n];\r
+ else\r
+ selectByValue(f, (p != null ? p + "_" : '') + n, pl[n]);\r
+}\r
+\r
+function getBool(p, n, d, tv, fv) {\r
+ var v = document.forms[0].elements[p + "_" + n].checked;\r
+\r
+ tv = typeof(tv) == 'undefined' ? 'true' : "'" + jsEncode(tv) + "'";\r
+ fv = typeof(fv) == 'undefined' ? 'false' : "'" + jsEncode(fv) + "'";\r
+\r
+ return (v == d) ? '' : n + (v ? ':' + tv + ',' : ':' + fv + ',');\r
+}\r
+\r
+function getStr(p, n, d) {\r
+ var e = document.forms[0].elements[(p != null ? p + "_" : "") + n];\r
+ var v = e.type == "text" ? e.value : e.options[e.selectedIndex].value;\r
+\r
+ if (n == 'src')\r
+ v = tinyMCEPopup.editor.convertURL(v, 'src', null);\r
+\r
+ return ((n == d || v == '') ? '' : n + ":'" + jsEncode(v) + "',");\r
+}\r
+\r
+function getInt(p, n, d) {\r
+ var e = document.forms[0].elements[(p != null ? p + "_" : "") + n];\r
+ var v = e.type == "text" ? e.value : e.options[e.selectedIndex].value;\r
+\r
+ return ((n == d || v == '') ? '' : n + ":" + v.replace(/[^0-9]+/g, '') + ",");\r
+}\r
+\r
+function jsEncode(s) {\r
+ s = s.replace(new RegExp('\\\\', 'g'), '\\\\');\r
+ s = s.replace(new RegExp('"', 'g'), '\\"');\r
+ s = s.replace(new RegExp("'", 'g'), "\\'");\r
+\r
+ return s;\r
+}\r
+\r
+function generatePreview(c) {\r
+ var f = document.forms[0], p = document.getElementById('prev'), h = '', cls, pl, n, type, codebase, wp, hp, nw, nh;\r
+\r
+ p.innerHTML = '<!-- x --->';\r
+\r
+ nw = parseInt(f.width.value);\r
+ nh = parseInt(f.height.value);\r
+\r
+ if (f.width.value != "" && f.height.value != "") {\r
+ if (f.constrain.checked) {\r
+ if (c == 'width' && oldWidth != 0) {\r
+ wp = nw / oldWidth;\r
+ nh = Math.round(wp * nh);\r
+ f.height.value = nh;\r
+ } else if (c == 'height' && oldHeight != 0) {\r
+ hp = nh / oldHeight;\r
+ nw = Math.round(hp * nw);\r
+ f.width.value = nw;\r
+ }\r
+ }\r
+ }\r
+\r
+ if (f.width.value != "")\r
+ oldWidth = nw;\r
+\r
+ if (f.height.value != "")\r
+ oldHeight = nh;\r
+\r
+ // After constrain\r
+ pl = serializeParameters();\r
+\r
+ switch (f.media_type.options[f.media_type.selectedIndex].value) {\r
+ case "flash":\r
+ cls = 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000';\r
+ codebase = 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';\r
+ type = 'application/x-shockwave-flash';\r
+ break;\r
+\r
+ case "shockwave":\r
+ cls = 'clsid:166B1BCA-3F9C-11CF-8075-444553540000';\r
+ codebase = 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0';\r
+ type = 'application/x-director';\r
+ break;\r
+\r
+ case "qt":\r
+ cls = 'clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B';\r
+ codebase = 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0';\r
+ type = 'video/quicktime';\r
+ break;\r
+\r
+ case "wmp":\r
+ cls = ed.getParam('media_wmp6_compatible') ? 'clsid:05589FA1-C356-11CE-BF01-00AA0055595A' : 'clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6';\r
+ codebase = 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701';\r
+ type = 'application/x-mplayer2';\r
+ break;\r
+\r
+ case "rmp":\r
+ cls = 'clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA';\r
+ codebase = 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701';\r
+ type = 'audio/x-pn-realaudio-plugin';\r
+ break;\r
+ }\r
+\r
+ if (pl == '') {\r
+ p.innerHTML = '';\r
+ return;\r
+ }\r
+\r
+ pl = tinyMCEPopup.editor.plugins.media._parse(pl);\r
+\r
+ if (!pl.src) {\r
+ p.innerHTML = '';\r
+ return;\r
+ }\r
+\r
+ pl.src = tinyMCEPopup.editor.documentBaseURI.toAbsolute(pl.src);\r
+ pl.width = !pl.width ? 100 : pl.width;\r
+ pl.height = !pl.height ? 100 : pl.height;\r
+ pl.id = !pl.id ? 'obj' : pl.id;\r
+ pl.name = !pl.name ? 'eobj' : pl.name;\r
+ pl.align = !pl.align ? '' : pl.align;\r
+\r
+ // Avoid annoying warning about insecure items\r
+ if (!tinymce.isIE || document.location.protocol != 'https:') {\r
+ h += '<object classid="clsid:' + cls + '" codebase="' + codebase + '" width="' + pl.width + '" height="' + pl.height + '" id="' + pl.id + '" name="' + pl.name + '" align="' + pl.align + '">';\r
+\r
+ for (n in pl) {\r
+ h += '<param name="' + n + '" value="' + pl[n] + '">';\r
+\r
+ // Add extra url parameter if it's an absolute URL\r
+ if (n == 'src' && pl[n].indexOf('://') != -1)\r
+ h += '<param name="url" value="' + pl[n] + '" />';\r
+ }\r
+ }\r
+\r
+ h += '<embed type="' + type + '" ';\r
+\r
+ for (n in pl)\r
+ h += n + '="' + pl[n] + '" ';\r
+\r
+ h += '></embed>';\r
+\r
+ // Avoid annoying warning about insecure items\r
+ if (!tinymce.isIE || document.location.protocol != 'https:')\r
+ h += '</object>';\r
+\r
+ p.innerHTML = "<!-- x --->" + h;\r
+}\r
+\r
+tinyMCEPopup.onInit.add(init);\r
--- /dev/null
+tinyMCE.addI18n('en.media_dlg',{\r
+title:"Insert / edit embedded media",\r
+general:"General",\r
+advanced:"Advanced",\r
+file:"File/URL",\r
+list:"List",\r
+size:"Dimensions",\r
+preview:"Preview",\r
+constrain_proportions:"Constrain proportions",\r
+type:"Type",\r
+id:"Id",\r
+name:"Name",\r
+class_name:"Class",\r
+vspace:"V-Space",\r
+hspace:"H-Space",\r
+play:"Auto play",\r
+loop:"Loop",\r
+menu:"Show menu",\r
+quality:"Quality",\r
+scale:"Scale",\r
+align:"Align",\r
+salign:"SAlign",\r
+wmode:"WMode",\r
+bgcolor:"Background",\r
+base:"Base",\r
+flashvars:"Flashvars",\r
+liveconnect:"SWLiveConnect",\r
+autohref:"AutoHREF",\r
+cache:"Cache",\r
+hidden:"Hidden",\r
+controller:"Controller",\r
+kioskmode:"Kiosk mode",\r
+playeveryframe:"Play every frame",\r
+targetcache:"Target cache",\r
+correction:"No correction",\r
+enablejavascript:"Enable JavaScript",\r
+starttime:"Start time",\r
+endtime:"End time",\r
+href:"Href",\r
+qtsrcchokespeed:"Choke speed",\r
+target:"Target",\r
+volume:"Volume",\r
+autostart:"Auto start",\r
+enabled:"Enabled",\r
+fullscreen:"Fullscreen",\r
+invokeurls:"Invoke URLs",\r
+mute:"Mute",\r
+stretchtofit:"Stretch to fit",\r
+windowlessvideo:"Windowless video",\r
+balance:"Balance",\r
+baseurl:"Base URL",\r
+captioningid:"Captioning id",\r
+currentmarker:"Current marker",\r
+currentposition:"Current position",\r
+defaultframe:"Default frame",\r
+playcount:"Play count",\r
+rate:"Rate",\r
+uimode:"UI Mode",\r
+flash_options:"Flash options",\r
+qt_options:"Quicktime options",\r
+wmp_options:"Windows media player options",\r
+rmp_options:"Real media player options",\r
+shockwave_options:"Shockwave options",\r
+autogotourl:"Auto goto URL",\r
+center:"Center",\r
+imagestatus:"Image status",\r
+maintainaspect:"Maintain aspect",\r
+nojava:"No java",\r
+prefetch:"Prefetch",\r
+shuffle:"Shuffle",\r
+console:"Console",\r
+numloop:"Num loops",\r
+controls:"Controls",\r
+scriptcallbacks:"Script callbacks",\r
+swstretchstyle:"Stretch style",\r
+swstretchhalign:"Stretch H-Align",\r
+swstretchvalign:"Stretch V-Align",\r
+sound:"Sound",\r
+progress:"Progress",\r
+qtsrc:"QT Src",\r
+qt_stream_warn:"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\nYou should also add a non streamed version to the Src field..",\r
+align_top:"Top",\r
+align_right:"Right",\r
+align_bottom:"Bottom",\r
+align_left:"Left",\r
+align_center:"Center",\r
+align_top_left:"Top left",\r
+align_top_right:"Top right",\r
+align_bottom_left:"Bottom left",\r
+align_bottom_right:"Bottom right",\r
+flv_options:"Flash video options",\r
+flv_scalemode:"Scale mode",\r
+flv_buffer:"Buffer",\r
+flv_startimage:"Start image",\r
+flv_starttime:"Start time",\r
+flv_defaultvolume:"Default volumne",\r
+flv_hiddengui:"Hidden GUI",\r
+flv_autostart:"Auto start",\r
+flv_loop:"Loop",\r
+flv_showscalemodes:"Show scale modes",\r
+flv_smoothvideo:"Smooth video",\r
+flv_jscallback:"JS Callback"\r
+});
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+ <title>{#media_dlg.title}</title>\r
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
+ <script type="text/javascript" src="js/media.js"></script>\r
+ <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
+ <script type="text/javascript" src="../../utils/validate.js"></script>\r
+ <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
+ <script type="text/javascript" src="../../utils/editable_selects.js"></script>\r
+ <link href="css/media.css" rel="stylesheet" type="text/css" />\r
+ <base target="_self" />\r
+</head>\r
+<body style="display: none">\r
+ <form onsubmit="insertMedia();return false;" action="#">\r
+ <div class="tabs">\r
+ <ul>\r
+ <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');generatePreview();" onmousedown="return false;">{#media_dlg.general}</a></span></li>\r
+ <li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#media_dlg.advanced}</a></span></li>\r
+ </ul>\r
+ </div>\r
+\r
+ <div class="panel_wrapper">\r
+ <div id="general_panel" class="panel current">\r
+ <fieldset>\r
+ <legend>{#media_dlg.general}</legend>\r
+\r
+ <table border="0" cellpadding="4" cellspacing="0">\r
+ <tr>\r
+ <td><label for="media_type">{#media_dlg.type}</label></td>\r
+ <td>\r
+ <select id="media_type" name="media_type" onchange="changedType(this.value);generatePreview();">\r
+ <option value="flash">Flash</option>\r
+ <!-- <option value="flv">Flash video (FLV)</option> -->\r
+ <option value="qt">Quicktime</option>\r
+ <option value="shockwave">Shockwave</option>\r
+ <option value="wmp">Windows Media</option>\r
+ <option value="rmp">Real Media</option>\r
+ </select>\r
+ </td>\r
+ </tr>\r
+ <tr>\r
+ <td><label for="src">{#media_dlg.file}</label></td>\r
+ <td>\r
+ <table border="0" cellspacing="0" cellpadding="0">\r
+ <tr>\r
+ <td><input id="src" name="src" type="text" value="" class="mceFocus" onchange="switchType(this.value);generatePreview();" /></td>\r
+ <td id="filebrowsercontainer"> </td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+ </tr>\r
+ <tr id="linklistrow">\r
+ <td><label for="linklist">{#media_dlg.list}</label></td>\r
+ <td id="linklistcontainer"> </td>\r
+ </tr>\r
+ <tr>\r
+ <td><label for="width">{#media_dlg.size}</label></td>\r
+ <td>\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input type="text" id="width" name="width" value="" class="size" onchange="generatePreview('width');" /> x <input type="text" id="height" name="height" value="" class="size" onchange="generatePreview('height');" /></td>\r
+ <td> <input id="constrain" type="checkbox" name="constrain" class="checkbox" /></td>\r
+ <td><label id="constrainlabel" for="constrain">{#media_dlg.constrain_proportions}</label></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+ </tr>\r
+ </table>\r
+ </fieldset>\r
+\r
+ <fieldset>\r
+ <legend>{#media_dlg.preview}</legend>\r
+ <div id="prev"></div>\r
+ </fieldset>\r
+ </div>\r
+\r
+ <div id="advanced_panel" class="panel">\r
+ <fieldset>\r
+ <legend>{#media_dlg.advanced}</legend>\r
+\r
+ <table border="0" cellpadding="4" cellspacing="0" width="100%">\r
+ <tr>\r
+ <td><label for="id">{#media_dlg.id}</label></td>\r
+ <td><input type="text" id="id" name="id" onchange="generatePreview();" /></td>\r
+ <td><label for="name">{#media_dlg.name}</label></td>\r
+ <td><input type="text" id="name" name="name" onchange="generatePreview();" /></td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td><label for="align">{#media_dlg.align}</label></td>\r
+ <td>\r
+ <select id="align" name="align" onchange="generatePreview();">\r
+ <option value="">{#not_set}</option> \r
+ <option value="top">{#media_dlg.align_top}</option>\r
+ <option value="right">{#media_dlg.align_right}</option>\r
+ <option value="bottom">{#media_dlg.align_bottom}</option>\r
+ <option value="left">{#media_dlg.align_left}</option>\r
+ </select>\r
+ </td>\r
+\r
+ <td><label for="bgcolor">{#media_dlg.bgcolor}</label></td>\r
+ <td>\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');generatePreview();" /></td>\r
+ <td id="bgcolor_pickcontainer"> </td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td><label for="vspace">{#media_dlg.vspace}</label></td>\r
+ <td><input type="text" id="vspace" name="vspace" class="number" onchange="generatePreview();" /></td>\r
+ <td><label for="hspace">{#media_dlg.hspace}</label></td>\r
+ <td><input type="text" id="hspace" name="hspace" class="number" onchange="generatePreview();" /></td>\r
+ </tr>\r
+ </table>\r
+ </fieldset>\r
+\r
+ <fieldset id="flash_options">\r
+ <legend>{#media_dlg.flash_options}</legend>\r
+\r
+ <table border="0" cellpadding="4" cellspacing="0">\r
+ <tr>\r
+ <td><label for="flash_quality">{#media_dlg.quality}</label></td>\r
+ <td>\r
+ <select id="flash_quality" name="flash_quality" onchange="generatePreview();">\r
+ <option value="">{#not_set}</option> \r
+ <option value="high">high</option>\r
+ <option value="low">low</option>\r
+ <option value="autolow">autolow</option>\r
+ <option value="autohigh">autohigh</option>\r
+ <option value="best">best</option>\r
+ </select>\r
+ </td>\r
+\r
+ <td><label for="flash_scale">{#media_dlg.scale}</label></td>\r
+ <td>\r
+ <select id="flash_scale" name="flash_scale" onchange="generatePreview();">\r
+ <option value="">{#not_set}</option> \r
+ <option value="showall">showall</option>\r
+ <option value="noborder">noborder</option>\r
+ <option value="exactfit">exactfit</option>\r
+ <option value="noscale">noscale</option>\r
+ </select>\r
+ </td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td><label for="flash_wmode">{#media_dlg.wmode}</label></td>\r
+ <td>\r
+ <select id="flash_wmode" name="flash_wmode" onchange="generatePreview();">\r
+ <option value="">{#not_set}</option> \r
+ <option value="window">window</option>\r
+ <option value="opaque">opaque</option>\r
+ <option value="transparent">transparent</option>\r
+ </select>\r
+ </td>\r
+\r
+ <td><label for="flash_salign">{#media_dlg.salign}</label></td>\r
+ <td>\r
+ <select id="flash_salign" name="flash_salign" onchange="generatePreview();">\r
+ <option value="">{#not_set}</option> \r
+ <option value="l">{#media_dlg.align_left}</option>\r
+ <option value="t">{#media_dlg.align_top}</option>\r
+ <option value="r">{#media_dlg.align_right}</option>\r
+ <option value="b">{#media_dlg.align_bottom}</option>\r
+ <option value="tl">{#media_dlg.align_top_left}</option>\r
+ <option value="tr">{#media_dlg.align_top_right}</option>\r
+ <option value="bl">{#media_dlg.align_bottom_left}</option>\r
+ <option value="br">{#media_dlg.align_bottom_right}</option>\r
+ </select>\r
+ </td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td colspan="2">\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input type="checkbox" class="checkbox" id="flash_play" name="flash_play" checked="checked" onchange="generatePreview();" /></td>\r
+ <td><label for="flash_play">{#media_dlg.play}</label></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+\r
+ <td colspan="2">\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input type="checkbox" class="checkbox" id="flash_loop" name="flash_loop" checked="checked" onchange="generatePreview();" /></td>\r
+ <td><label for="flash_loop">{#media_dlg.loop}</label></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td colspan="2">\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input type="checkbox" class="checkbox" id="flash_menu" name="flash_menu" checked="checked" onchange="generatePreview();" /></td>\r
+ <td><label for="flash_menu">{#media_dlg.menu}</label></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+\r
+ <td colspan="2">\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input type="checkbox" class="checkbox" id="flash_swliveconnect" name="flash_swliveconnect" onchange="generatePreview();" /></td>\r
+ <td><label for="flash_swliveconnect">{#media_dlg.liveconnect}</label></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+ </tr>\r
+ </table>\r
+\r
+ <table>\r
+ <tr>\r
+ <td><label for="flash_base">{#media_dlg.base}</label></td>\r
+ <td><input type="text" id="flash_base" name="flash_base" onchange="generatePreview();" /></td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td><label for="flash_flashvars">{#media_dlg.flashvars}</label></td>\r
+ <td><input type="text" id="flash_flashvars" name="flash_flashvars" onchange="generatePreview();" /></td>\r
+ </tr>\r
+ </table>\r
+ </fieldset>\r
+\r
+ <fieldset id="flv_options">\r
+ <legend>{#media_dlg.flv_options}</legend>\r
+\r
+ <table border="0" cellpadding="4" cellspacing="0">\r
+ <tr>\r
+ <td><label for="flv_scalemode">{#media_dlg.flv_scalemode}</label></td>\r
+ <td>\r
+ <select id="flv_scalemode" name="flv_scalemode" onchange="generatePreview();">\r
+ <option value="">{#not_set}</option> \r
+ <option value="none">none</option>\r
+ <option value="double">double</option>\r
+ <option value="full">full</option>\r
+ </select>\r
+ </td>\r
+\r
+ <td><label for="flv_buffer">{#media_dlg.flv_buffer}</label></td>\r
+ <td><input type="text" id="flv_buffer" name="flv_buffer" onchange="generatePreview();" /></td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td><label for="flv_startimage">{#media_dlg.flv_startimage}</label></td>\r
+ <td><input type="text" id="flv_startimage" name="flv_startimage" onchange="generatePreview();" /></td>\r
+\r
+ <td><label for="flv_starttime">{#media_dlg.flv_starttime}</label></td>\r
+ <td><input type="text" id="flv_starttime" name="flv_starttime" onchange="generatePreview();" /></td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td><label for="flv_defaultvolume">{#media_dlg.flv_defaultvolume}</label></td>\r
+ <td><input type="text" id="flv_defaultvolume" name="flv_defaultvolume" onchange="generatePreview();" /></td>\r
+\r
+ <td><label for="flv_starttime">{#media_dlg.flv_starttime}</label></td>\r
+ <td><input type="text" id="flv_starttime" name="flv_starttime" onchange="generatePreview();" /></td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td colspan="2">\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input type="checkbox" class="checkbox" id="flv_hiddengui" name="flv_hiddengui" checked="checked" onchange="generatePreview();" /></td>\r
+ <td><label for="flv_hiddengui">{#media_dlg.flv_hiddengui}</label></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+\r
+ <td colspan="2">\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input type="checkbox" class="checkbox" id="flv_autostart" name="flv_autostart" checked="checked" onchange="generatePreview();" /></td>\r
+ <td><label for="flv_autostart">{#media_dlg.flv_autostart}</label></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td colspan="2">\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input type="checkbox" class="checkbox" id="flv_loop" name="flv_loop" checked="checked" onchange="generatePreview();" /></td>\r
+ <td><label for="flv_loop">{#media_dlg.flv_loop}</label></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+\r
+ <td colspan="2">\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input type="checkbox" class="checkbox" id="flv_showscalemodes" name="flv_showscalemodes" onchange="generatePreview();" /></td>\r
+ <td><label for="flv_showscalemodes">{#media_dlg.flv_showscalemodes}</label></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td colspan="2">\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input type="checkbox" class="checkbox" id="flv_smoothvideo" name="flash_flv_flv_smoothvideosmoothvideo" checked="checked" onchange="generatePreview();" /></td>\r
+ <td><label for="flv_smoothvideo">{#media_dlg.flv_smoothvideo}</label></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+\r
+ <td colspan="2">\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input type="checkbox" class="checkbox" id="flv_jscallback" name="flv_jscallback" onchange="generatePreview();" /></td>\r
+ <td><label for="flv_jscallback">{#media_dlg.flv_jscallback}</label></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+ </tr>\r
+ </table>\r
+ </fieldset>\r
+\r
+ <fieldset id="qt_options">\r
+ <legend>{#media_dlg.qt_options}</legend>\r
+\r
+ <table border="0" cellpadding="4" cellspacing="0">\r
+ <tr>\r
+ <td colspan="2">\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input type="checkbox" class="checkbox" id="qt_loop" name="qt_loop" onchange="generatePreview();" /></td>\r
+ <td><label for="qt_loop">{#media_dlg.loop}</label></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+\r
+ <td colspan="2">\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input type="checkbox" class="checkbox" id="qt_autoplay" name="qt_autoplay" checked="checked" onchange="generatePreview();" /></td>\r
+ <td><label for="qt_autoplay">{#media_dlg.play}</label></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td colspan="2">\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input type="checkbox" class="checkbox" id="qt_cache" name="qt_cache" onchange="generatePreview();" /></td>\r
+ <td><label for="qt_cache">{#media_dlg.cache}</label></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+\r
+ <td colspan="2">\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input type="checkbox" class="checkbox" id="qt_controller" name="qt_controller" checked="checked" onchange="generatePreview();" /></td>\r
+ <td><label for="qt_controller">{#media_dlg.controller}</label></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td colspan="2">\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input type="checkbox" class="checkbox" id="qt_correction" name="qt_correction" onchange="generatePreview();" /></td>\r
+ <td><label for="qt_correction">{#media_dlg.correction}</label></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+\r
+ <td colspan="2">\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input type="checkbox" class="checkbox" id="qt_enablejavascript" name="qt_enablejavascript" onchange="generatePreview();" /></td>\r
+ <td><label for="qt_enablejavascript">{#media_dlg.enablejavascript}</label></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td colspan="2">\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input type="checkbox" class="checkbox" id="qt_kioskmode" name="qt_kioskmode" onchange="generatePreview();" /></td>\r
+ <td><label for="qt_kioskmode">{#media_dlg.kioskmode}</label></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+\r
+ <td colspan="2">\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input type="checkbox" class="checkbox" id="qt_autohref" name="qt_autohref" onchange="generatePreview();" /></td>\r
+ <td><label for="qt_autohref">{#media_dlg.autohref}</label></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td colspan="2">\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input type="checkbox" class="checkbox" id="qt_playeveryframe" name="qt_playeveryframe" onchange="generatePreview();" /></td>\r
+ <td><label for="qt_playeveryframe">{#media_dlg.playeveryframe}</label></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+\r
+ <td colspan="2">\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input type="checkbox" class="checkbox" id="qt_targetcache" name="qt_targetcache" onchange="generatePreview();" /></td>\r
+ <td><label for="qt_targetcache">{#media_dlg.targetcache}</label></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td><label for="qt_scale">{#media_dlg.scale}</label></td>\r
+ <td><select id="qt_scale" name="qt_scale" class="mceEditableSelect" onchange="generatePreview();">\r
+ <option value="">{#not_set}</option> \r
+ <option value="tofit">tofit</option>\r
+ <option value="aspect">aspect</option>\r
+ </select>\r
+ </td>\r
+\r
+ <td colspan="2"> </td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td><label for="qt_starttime">{#media_dlg.starttime}</label></td>\r
+ <td><input type="text" id="qt_starttime" name="qt_starttime" onchange="generatePreview();" /></td>\r
+\r
+ <td><label for="qt_endtime">{#media_dlg.endtime}</label></td>\r
+ <td><input type="text" id="qt_endtime" name="qt_endtime" onchange="generatePreview();" /></td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td><label for="qt_target">{#media_dlg.target}</label></td>\r
+ <td><input type="text" id="qt_target" name="qt_target" onchange="generatePreview();" /></td>\r
+\r
+ <td><label for="qt_href">{#media_dlg.href}</label></td>\r
+ <td><input type="text" id="qt_href" name="qt_href" onchange="generatePreview();" /></td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td><label for="qt_qtsrcchokespeed">{#media_dlg.qtsrcchokespeed}</label></td>\r
+ <td><input type="text" id="qt_qtsrcchokespeed" name="qt_qtsrcchokespeed" onchange="generatePreview();" /></td>\r
+\r
+ <td><label for="qt_volume">{#media_dlg.volume}</label></td>\r
+ <td><input type="text" id="qt_volume" name="qt_volume" onchange="generatePreview();" /></td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td><label for="qt_qtsrc">{#media_dlg.qtsrc}</label></td>\r
+ <td colspan="4">\r
+ <table border="0" cellspacing="0" cellpadding="0">\r
+ <tr>\r
+ <td><input type="text" id="qt_qtsrc" name="qt_qtsrc" onchange="generatePreview();" /></td>\r
+ <td id="qtsrcfilebrowsercontainer"> </td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+ </tr>\r
+ </table>\r
+ </fieldset>\r
+\r
+ <fieldset id="wmp_options">\r
+ <legend>{#media_dlg.wmp_options}</legend>\r
+\r
+ <table border="0" cellpadding="4" cellspacing="0">\r
+ <tr>\r
+ <td colspan="2">\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input type="checkbox" class="checkbox" id="wmp_autostart" name="wmp_autostart" checked="checked" onchange="generatePreview();" /></td>\r
+ <td><label for="wmp_autostart">{#media_dlg.autostart}</label></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+\r
+ <td colspan="2">\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input type="checkbox" class="checkbox" id="wmp_enabled" name="wmp_enabled" onchange="generatePreview();" /></td>\r
+ <td><label for="wmp_enabled">{#media_dlg.enabled}</label></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td colspan="2">\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input type="checkbox" class="checkbox" id="wmp_enablecontextmenu" name="wmp_enablecontextmenu" checked="checked" onchange="generatePreview();" /></td>\r
+ <td><label for="wmp_enablecontextmenu">{#media_dlg.menu}</label></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+\r
+ <td colspan="2">\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input type="checkbox" class="checkbox" id="wmp_fullscreen" name="wmp_fullscreen" onchange="generatePreview();" /></td>\r
+ <td><label for="wmp_fullscreen">{#media_dlg.fullscreen}</label></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td colspan="2">\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input type="checkbox" class="checkbox" id="wmp_invokeurls" name="wmp_invokeurls" checked="checked" onchange="generatePreview();" /></td>\r
+ <td><label for="wmp_invokeurls">{#media_dlg.invokeurls}</label></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+\r
+ <td colspan="2">\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input type="checkbox" class="checkbox" id="wmp_mute" name="wmp_mute" onchange="generatePreview();" /></td>\r
+ <td><label for="wmp_mute">{#media_dlg.mute}</label></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td colspan="2">\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input type="checkbox" class="checkbox" id="wmp_stretchtofit" name="wmp_stretchtofit" onchange="generatePreview();" /></td>\r
+ <td><label for="wmp_stretchtofit">{#media_dlg.stretchtofit}</label></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+\r
+ <td colspan="2">\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input type="checkbox" class="checkbox" id="wmp_windowlessvideo" name="wmp_windowlessvideo" onchange="generatePreview();" /></td>\r
+ <td><label for="wmp_windowlessvideo">{#media_dlg.windowlessvideo}</label></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td><label for="wmp_balance">{#media_dlg.balance}</label></td>\r
+ <td><input type="text" id="wmp_balance" name="wmp_balance" onchange="generatePreview();" /></td>\r
+\r
+ <td><label for="wmp_baseurl">{#media_dlg.baseurl}</label></td>\r
+ <td><input type="text" id="wmp_baseurl" name="wmp_baseurl" onchange="generatePreview();" /></td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td><label for="wmp_captioningid">{#media_dlg.captioningid}</label></td>\r
+ <td><input type="text" id="wmp_captioningid" name="wmp_captioningid" onchange="generatePreview();" /></td>\r
+\r
+ <td><label for="wmp_currentmarker">{#media_dlg.currentmarker}</label></td>\r
+ <td><input type="text" id="wmp_currentmarker" name="wmp_currentmarker" onchange="generatePreview();" /></td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td><label for="wmp_currentposition">{#media_dlg.currentposition}</label></td>\r
+ <td><input type="text" id="wmp_currentposition" name="wmp_currentposition" onchange="generatePreview();" /></td>\r
+\r
+ <td><label for="wmp_defaultframe">{#media_dlg.defaultframe}</label></td>\r
+ <td><input type="text" id="wmp_defaultframe" name="wmp_defaultframe" onchange="generatePreview();" /></td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td><label for="wmp_playcount">{#media_dlg.playcount}</label></td>\r
+ <td><input type="text" id="wmp_playcount" name="wmp_playcount" onchange="generatePreview();" /></td>\r
+\r
+ <td><label for="wmp_rate">{#media_dlg.rate}</label></td>\r
+ <td><input type="text" id="wmp_rate" name="wmp_rate" onchange="generatePreview();" /></td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td><label for="wmp_uimode">{#media_dlg.uimode}</label></td>\r
+ <td><input type="text" id="wmp_uimode" name="wmp_uimode" onchange="generatePreview();" /></td>\r
+\r
+ <td><label for="wmp_volume">{#media_dlg.volume}</label></td>\r
+ <td><input type="text" id="wmp_volume" name="wmp_volume" onchange="generatePreview();" /></td>\r
+ </tr>\r
+\r
+ </table>\r
+ </fieldset>\r
+\r
+ <fieldset id="rmp_options">\r
+ <legend>{#media_dlg.rmp_options}</legend>\r
+\r
+ <table border="0" cellpadding="4" cellspacing="0">\r
+ <tr>\r
+ <td colspan="2">\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input type="checkbox" class="checkbox" id="rmp_autostart" name="rmp_autostart" onchange="generatePreview();" /></td>\r
+ <td><label for="rmp_autostart">{#media_dlg.autostart}</label></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+\r
+ <td colspan="2">\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input type="checkbox" class="checkbox" id="rmp_loop" name="rmp_loop" onchange="generatePreview();" /></td>\r
+ <td><label for="rmp_loop">{#media_dlg.loop}</label></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td colspan="2">\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input type="checkbox" class="checkbox" id="rmp_autogotourl" name="rmp_autogotourl" checked="checked" onchange="generatePreview();" /></td>\r
+ <td><label for="rmp_autogotourl">{#media_dlg.autogotourl}</label></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+\r
+ <td colspan="2">\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input type="checkbox" class="checkbox" id="rmp_center" name="rmp_center" onchange="generatePreview();" /></td>\r
+ <td><label for="rmp_center">{#media_dlg.center}</label></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td colspan="2">\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input type="checkbox" class="checkbox" id="rmp_imagestatus" name="rmp_imagestatus" checked="checked" onchange="generatePreview();" /></td>\r
+ <td><label for="rmp_imagestatus">{#media_dlg.imagestatus}</label></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+\r
+ <td colspan="2">\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input type="checkbox" class="checkbox" id="rmp_maintainaspect" name="rmp_maintainaspect" onchange="generatePreview();" /></td>\r
+ <td><label for="rmp_maintainaspect">{#media_dlg.maintainaspect}</label></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td colspan="2">\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input type="checkbox" class="checkbox" id="rmp_nojava" name="rmp_nojava" onchange="generatePreview();" /></td>\r
+ <td><label for="rmp_nojava">{#media_dlg.nojava}</label></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+\r
+ <td colspan="2">\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input type="checkbox" class="checkbox" id="rmp_prefetch" name="rmp_prefetch" onchange="generatePreview();" /></td>\r
+ <td><label for="rmp_prefetch">{#media_dlg.prefetch}</label></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td colspan="2">\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input type="checkbox" class="checkbox" id="rmp_shuffle" name="rmp_shuffle" onchange="generatePreview();" /></td>\r
+ <td><label for="rmp_shuffle">{#media_dlg.shuffle}</label></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+\r
+ <td colspan="2">\r
+ \r
+ </td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td><label for="rmp_console">{#media_dlg.console}</label></td>\r
+ <td><input type="text" id="rmp_console" name="rmp_console" onchange="generatePreview();" /></td>\r
+\r
+ <td><label for="rmp_controls">{#media_dlg.controls}</label></td>\r
+ <td><input type="text" id="rmp_controls" name="rmp_controls" onchange="generatePreview();" /></td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td><label for="rmp_numloop">{#media_dlg.numloop}</label></td>\r
+ <td><input type="text" id="rmp_numloop" name="rmp_numloop" onchange="generatePreview();" /></td>\r
+\r
+ <td><label for="rmp_scriptcallbacks">{#media_dlg.scriptcallbacks}</label></td>\r
+ <td><input type="text" id="rmp_scriptcallbacks" name="rmp_scriptcallbacks" onchange="generatePreview();" /></td>\r
+ </tr>\r
+ </table>\r
+ </fieldset>\r
+\r
+ <fieldset id="shockwave_options">\r
+ <legend>{#media_dlg.shockwave_options}</legend>\r
+\r
+ <table border="0" cellpadding="4" cellspacing="0">\r
+ <tr>\r
+ <td><label for="shockwave_swstretchstyle">{#media_dlg.swstretchstyle}</label></td>\r
+ <td>\r
+ <select id="shockwave_swstretchstyle" name="shockwave_swstretchstyle" onchange="generatePreview();">\r
+ <option value="none">{#not_set}</option>\r
+ <option value="meet">Meet</option>\r
+ <option value="fill">Fill</option>\r
+ <option value="stage">Stage</option>\r
+ </select>\r
+ </td>\r
+\r
+ <td><label for="shockwave_swvolume">{#media_dlg.volume}</label></td>\r
+ <td><input type="text" id="shockwave_swvolume" name="shockwave_swvolume" onchange="generatePreview();" /></td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td><label for="shockwave_swstretchhalign">{#media_dlg.swstretchhalign}</label></td>\r
+ <td>\r
+ <select id="shockwave_swstretchhalign" name="shockwave_swstretchhalign" onchange="generatePreview();">\r
+ <option value="none">{#not_set}</option>\r
+ <option value="left">{#media_dlg.align_left}</option>\r
+ <option value="center">{#media_dlg.align_center}</option>\r
+ <option value="right">{#media_dlg.align_right}</option>\r
+ </select>\r
+ </td>\r
+\r
+ <td><label for="shockwave_swstretchvalign">{#media_dlg.swstretchvalign}</label></td>\r
+ <td>\r
+ <select id="shockwave_swstretchvalign" name="shockwave_swstretchvalign" onchange="generatePreview();">\r
+ <option value="none">{#not_set}</option>\r
+ <option value="meet">Meet</option>\r
+ <option value="fill">Fill</option>\r
+ <option value="stage">Stage</option>\r
+ </select>\r
+ </td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td colspan="2">\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input type="checkbox" class="checkbox" id="shockwave_autostart" name="shockwave_autostart" onchange="generatePreview();" checked="checked" /></td>\r
+ <td><label for="shockwave_autostart">{#media_dlg.autostart}</label></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+\r
+ <td colspan="2">\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input type="checkbox" class="checkbox" id="shockwave_sound" name="shockwave_sound" onchange="generatePreview();" checked="checked" /></td>\r
+ <td><label for="shockwave_sound">{#media_dlg.sound}</label></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+ </tr>\r
+\r
+\r
+ <tr>\r
+ <td colspan="2">\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input type="checkbox" class="checkbox" id="shockwave_swliveconnect" name="shockwave_swliveconnect" onchange="generatePreview();" /></td>\r
+ <td><label for="shockwave_swliveconnect">{#media_dlg.liveconnect}</label></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+\r
+ <td colspan="2">\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input type="checkbox" class="checkbox" id="shockwave_progress" name="shockwave_progress" onchange="generatePreview();" checked="checked" /></td>\r
+ <td><label for="shockwave_progress">{#media_dlg.progress}</label></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+ </tr>\r
+ </table>\r
+ </fieldset>\r
+ </div>\r
+ </div>\r
+\r
+ <div class="mceActionPanel">\r
+ <div style="float: left">\r
+ <input type="submit" id="insert" name="insert" value="{#insert}" />\r
+ </div>\r
+\r
+ <div style="float: right">\r
+ <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
+ </div>\r
+ </div>\r
+ </form>\r
+</body>\r
+</html>\r
--- /dev/null
+(function(){tinymce.create('tinymce.plugins.Nonbreaking',{init:function(ed,url){var t=this;t.editor=ed;ed.addCommand('mceNonBreaking',function(){ed.execCommand('mceInsertContent',false,(ed.plugins.visualchars&&ed.plugins.visualchars.state)?'<span class="mceItemHidden mceVisualNbsp">·</span>':' ');});ed.addButton('nonbreaking',{title:'nonbreaking.nonbreaking_desc',cmd:'mceNonBreaking'});if(ed.getParam('nonbreaking_force_tab')){ed.onKeyDown.add(function(ed,e){if(tinymce.isIE&&e.keyCode==9){ed.execCommand('mceNonBreaking');ed.execCommand('mceNonBreaking');ed.execCommand('mceNonBreaking');tinymce.dom.Event.cancel(e);}});}},getInfo:function(){return{longname:'Nonbreaking space',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/nonbreaking',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('nonbreaking',tinymce.plugins.Nonbreaking);})();
\ No newline at end of file
--- /dev/null
+/**\r
+ * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $\r
+ *\r
+ * @author Moxiecode\r
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+(function() {\r
+ tinymce.create('tinymce.plugins.Nonbreaking', {\r
+ init : function(ed, url) {\r
+ var t = this;\r
+\r
+ t.editor = ed;\r
+\r
+ // Register commands\r
+ ed.addCommand('mceNonBreaking', function() {\r
+ ed.execCommand('mceInsertContent', false, (ed.plugins.visualchars && ed.plugins.visualchars.state) ? '<span class="mceItemHidden mceVisualNbsp">·</span>' : ' ');\r
+ });\r
+\r
+ // Register buttons\r
+ ed.addButton('nonbreaking', {title : 'nonbreaking.nonbreaking_desc', cmd : 'mceNonBreaking'});\r
+\r
+ if (ed.getParam('nonbreaking_force_tab')) {\r
+ ed.onKeyDown.add(function(ed, e) {\r
+ if (tinymce.isIE && e.keyCode == 9) {\r
+ ed.execCommand('mceNonBreaking');\r
+ ed.execCommand('mceNonBreaking');\r
+ ed.execCommand('mceNonBreaking');\r
+ tinymce.dom.Event.cancel(e);\r
+ }\r
+ });\r
+ }\r
+ },\r
+\r
+ getInfo : function() {\r
+ return {\r
+ longname : 'Nonbreaking space',\r
+ author : 'Moxiecode Systems AB',\r
+ authorurl : 'http://tinymce.moxiecode.com',\r
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/nonbreaking',\r
+ version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+ };\r
+ }\r
+\r
+ // Private methods\r
+ });\r
+\r
+ // Register plugin\r
+ tinymce.PluginManager.add('nonbreaking', tinymce.plugins.Nonbreaking);\r
+})();
\ No newline at end of file
--- /dev/null
+(function(){var Event=tinymce.dom.Event;tinymce.create('tinymce.plugins.NonEditablePlugin',{init:function(ed,url){var t=this,editClass,nonEditClass;t.editor=ed;editClass=ed.getParam("noneditable_editable_class","mceEditable");nonEditClass=ed.getParam("noneditable_noneditable_class","mceNonEditable");ed.onNodeChange.addToTop(function(ed,cm,n){var sc,ec;sc=ed.dom.getParent(ed.selection.getStart(),function(n){return ed.dom.hasClass(n,nonEditClass);});ec=ed.dom.getParent(ed.selection.getEnd(),function(n){return ed.dom.hasClass(n,nonEditClass);});if(sc||ec){t._setDisabled(1);return false;}else t._setDisabled(0);});},getInfo:function(){return{longname:'Non editable elements',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/noneditable',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_block:function(ed,e){var k=e.keyCode;if((k>32&&k<41)||(k>111&&k<124))return;return Event.cancel(e);},_setDisabled:function(s){var t=this,ed=t.editor;tinymce.each(ed.controlManager.controls,function(c){c.setDisabled(s);});if(s!==t.disabled){if(s){ed.onKeyDown.addToTop(t._block);ed.onKeyPress.addToTop(t._block);ed.onKeyUp.addToTop(t._block);ed.onPaste.addToTop(t._block);}else{ed.onKeyDown.remove(t._block);ed.onKeyPress.remove(t._block);ed.onKeyUp.remove(t._block);ed.onPaste.remove(t._block);}t.disabled=s;}}});tinymce.PluginManager.add('noneditable',tinymce.plugins.NonEditablePlugin);})();
\ No newline at end of file
--- /dev/null
+/**\r
+ * $Id: editor_plugin_src.js 743 2008-03-23 17:47:33Z spocke $\r
+ *\r
+ * @author Moxiecode\r
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+(function() {\r
+ var Event = tinymce.dom.Event;\r
+\r
+ tinymce.create('tinymce.plugins.NonEditablePlugin', {\r
+ init : function(ed, url) {\r
+ var t = this, editClass, nonEditClass;\r
+\r
+ t.editor = ed;\r
+ editClass = ed.getParam("noneditable_editable_class", "mceEditable");\r
+ nonEditClass = ed.getParam("noneditable_noneditable_class", "mceNonEditable");\r
+\r
+ ed.onNodeChange.addToTop(function(ed, cm, n) {\r
+ var sc, ec;\r
+\r
+ // Block if start or end is inside a non editable element\r
+ sc = ed.dom.getParent(ed.selection.getStart(), function(n) {\r
+ return ed.dom.hasClass(n, nonEditClass);\r
+ });\r
+\r
+ ec = ed.dom.getParent(ed.selection.getEnd(), function(n) {\r
+ return ed.dom.hasClass(n, nonEditClass);\r
+ });\r
+\r
+ // Block or unblock\r
+ if (sc || ec) {\r
+ t._setDisabled(1);\r
+ return false;\r
+ } else\r
+ t._setDisabled(0);\r
+ });\r
+ },\r
+\r
+ getInfo : function() {\r
+ return {\r
+ longname : 'Non editable elements',\r
+ author : 'Moxiecode Systems AB',\r
+ authorurl : 'http://tinymce.moxiecode.com',\r
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/noneditable',\r
+ version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+ };\r
+ },\r
+\r
+ _block : function(ed, e) {\r
+ var k = e.keyCode;\r
+\r
+ // Don't block arrow keys, pg up/down, and F1-F12\r
+ if ((k > 32 && k < 41) || (k > 111 && k < 124))\r
+ return;\r
+\r
+ return Event.cancel(e);\r
+ },\r
+\r
+ _setDisabled : function(s) {\r
+ var t = this, ed = t.editor;\r
+\r
+ tinymce.each(ed.controlManager.controls, function(c) {\r
+ c.setDisabled(s);\r
+ });\r
+\r
+ if (s !== t.disabled) {\r
+ if (s) {\r
+ ed.onKeyDown.addToTop(t._block);\r
+ ed.onKeyPress.addToTop(t._block);\r
+ ed.onKeyUp.addToTop(t._block);\r
+ ed.onPaste.addToTop(t._block);\r
+ } else {\r
+ ed.onKeyDown.remove(t._block);\r
+ ed.onKeyPress.remove(t._block);\r
+ ed.onKeyUp.remove(t._block);\r
+ ed.onPaste.remove(t._block);\r
+ }\r
+\r
+ t.disabled = s;\r
+ }\r
+ }\r
+ });\r
+\r
+ // Register plugin\r
+ tinymce.PluginManager.add('noneditable', tinymce.plugins.NonEditablePlugin);\r
+})();
\ No newline at end of file
--- /dev/null
+.mcePageBreak {display:block;border:0;width:100%;height:12px;border-top:1px dotted #ccc;margin-top:15px;background:#fff url(../img/pagebreak.gif) no-repeat center top;}
--- /dev/null
+(function(){tinymce.create('tinymce.plugins.PageBreakPlugin',{init:function(ed,url){var pb='<img src="'+url+'/img/trans.gif" class="mcePageBreak mceItemNoResize" />',cls='mcePageBreak',sep=ed.getParam('pagebreak_separator','<!-- pagebreak -->'),pbRE;pbRE=new RegExp(sep.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g,function(a){return'\\'+a;}),'g');ed.addCommand('mcePageBreak',function(){ed.execCommand('mceInsertContent',0,pb);});ed.addButton('pagebreak',{title:'pagebreak.desc',cmd:cls});ed.onInit.add(function(){if(ed.settings.content_css!==false)ed.dom.loadCSS(url+"/css/content.css");if(ed.theme.onResolveName){ed.theme.onResolveName.add(function(th,o){if(o.node.nodeName=='IMG'&&ed.dom.hasClass(o.node,cls))o.name='pagebreak';});}});ed.onClick.add(function(ed,e){e=e.target;if(e.nodeName==='IMG'&&ed.dom.hasClass(e,cls))ed.selection.select(e);});ed.onNodeChange.add(function(ed,cm,n){cm.setActive('pagebreak',n.nodeName==='IMG'&&ed.dom.hasClass(n,cls));});ed.onBeforeSetContent.add(function(ed,o){o.content=o.content.replace(pbRE,pb);});ed.onPostProcess.add(function(ed,o){if(o.get)o.content=o.content.replace(/<img[^>]+>/g,function(im){if(im.indexOf('class="mcePageBreak')!==-1)im=sep;return im;});});},getInfo:function(){return{longname:'PageBreak',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/pagebreak',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('pagebreak',tinymce.plugins.PageBreakPlugin);})();
\ No newline at end of file
--- /dev/null
+/**\r
+ * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $\r
+ *\r
+ * @author Moxiecode\r
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+(function() {\r
+ tinymce.create('tinymce.plugins.PageBreakPlugin', {\r
+ init : function(ed, url) {\r
+ var pb = '<img src="' + url + '/img/trans.gif" class="mcePageBreak mceItemNoResize" />', cls = 'mcePageBreak', sep = ed.getParam('pagebreak_separator', '<!-- pagebreak -->'), pbRE;\r
+\r
+ pbRE = new RegExp(sep.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g, function(a) {return '\\' + a;}), 'g');\r
+\r
+ // Register commands\r
+ ed.addCommand('mcePageBreak', function() {\r
+ ed.execCommand('mceInsertContent', 0, pb);\r
+ });\r
+\r
+ // Register buttons\r
+ ed.addButton('pagebreak', {title : 'pagebreak.desc', cmd : cls});\r
+\r
+ ed.onInit.add(function() {\r
+ if (ed.settings.content_css !== false)\r
+ ed.dom.loadCSS(url + "/css/content.css");\r
+\r
+ if (ed.theme.onResolveName) {\r
+ ed.theme.onResolveName.add(function(th, o) {\r
+ if (o.node.nodeName == 'IMG' && ed.dom.hasClass(o.node, cls))\r
+ o.name = 'pagebreak';\r
+ });\r
+ }\r
+ });\r
+\r
+ ed.onClick.add(function(ed, e) {\r
+ e = e.target;\r
+\r
+ if (e.nodeName === 'IMG' && ed.dom.hasClass(e, cls))\r
+ ed.selection.select(e);\r
+ });\r
+\r
+ ed.onNodeChange.add(function(ed, cm, n) {\r
+ cm.setActive('pagebreak', n.nodeName === 'IMG' && ed.dom.hasClass(n, cls));\r
+ });\r
+\r
+ ed.onBeforeSetContent.add(function(ed, o) {\r
+ o.content = o.content.replace(pbRE, pb);\r
+ });\r
+\r
+ ed.onPostProcess.add(function(ed, o) {\r
+ if (o.get)\r
+ o.content = o.content.replace(/<img[^>]+>/g, function(im) {\r
+ if (im.indexOf('class="mcePageBreak') !== -1)\r
+ im = sep;\r
+\r
+ return im;\r
+ });\r
+ });\r
+ },\r
+\r
+ getInfo : function() {\r
+ return {\r
+ longname : 'PageBreak',\r
+ author : 'Moxiecode Systems AB',\r
+ authorurl : 'http://tinymce.moxiecode.com',\r
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/pagebreak',\r
+ version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+ };\r
+ }\r
+ });\r
+\r
+ // Register plugin\r
+ tinymce.PluginManager.add('pagebreak', tinymce.plugins.PageBreakPlugin);\r
+})();
\ No newline at end of file
--- /dev/null
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+<title>blank_page</title>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<link href="css/blank.css" rel="stylesheet" type="text/css" />\r
+<base target="_self" />\r
+<script type="text/javascript">\r
+function init() {\r
+ if (parent.tinymce.isIE)\r
+ document.body.contentEditable = true;\r
+ else\r
+ document.designMode = 'on';\r
+\r
+ parent.initIframe(document);\r
+ window.focus();\r
+}\r
+</script>\r
+</head>\r
+<body onload="init();">\r
+\r
+</body>\r
+</html>\r
--- /dev/null
+html, body {height:98%}\r
+body {\r
+background-color: #FFFFFF;\r
+font-family: Verdana, Arial, Helvetica, sans-serif;\r
+font-size: 10px;\r
+scrollbar-3dlight-color: #F0F0EE;\r
+scrollbar-arrow-color: #676662;\r
+scrollbar-base-color: #F0F0EE;\r
+scrollbar-darkshadow-color: #DDDDDD;\r
+scrollbar-face-color: #E0E0DD;\r
+scrollbar-highlight-color: #F0F0EE;\r
+scrollbar-shadow-color: #F0F0EE;\r
+scrollbar-track-color: #F5F5F5;\r
+}\r
--- /dev/null
+.sourceIframe {\r
+ border: 1px solid #808080;\r
+}\r
--- /dev/null
+(function(){var Event=tinymce.dom.Event;tinymce.create('tinymce.plugins.PastePlugin',{init:function(ed,url){var t=this;t.editor=ed;ed.addCommand('mcePasteText',function(ui,v){if(ui){if((ed.getParam('paste_use_dialog',true))||(!tinymce.isIE)){ed.windowManager.open({file:url+'/pastetext.htm',width:450,height:400,inline:1},{plugin_url:url});}else t._insertText(clipboardData.getData("Text"),true);}else t._insertText(v.html,v.linebreaks);});ed.addCommand('mcePasteWord',function(ui,v){if(ui){if((ed.getParam('paste_use_dialog',true))||(!tinymce.isIE)){ed.windowManager.open({file:url+'/pasteword.htm',width:450,height:400,inline:1},{plugin_url:url});}else t._insertText(t._clipboardHTML());}else t._insertWordContent(v);});ed.addCommand('mceSelectAll',function(){ed.execCommand('selectall');});ed.addButton('pastetext',{title:'paste.paste_text_desc',cmd:'mcePasteText',ui:true});ed.addButton('pasteword',{title:'paste.paste_word_desc',cmd:'mcePasteWord',ui:true});ed.addButton('selectall',{title:'paste.selectall_desc',cmd:'mceSelectAll'});if(ed.getParam("paste_auto_cleanup_on_paste",false)){ed.onPaste.add(function(ed,e){return t._handlePasteEvent(e)});}if(!tinymce.isIE&&ed.getParam("paste_auto_cleanup_on_paste",false)){ed.onKeyDown.add(function(ed,e){if(e.ctrlKey&&e.keyCode==86){window.setTimeout(function(){ed.execCommand("mcePasteText",true);},1);Event.cancel(e);}});}},getInfo:function(){return{longname:'Paste text/word',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_handlePasteEvent:function(e){var html=this._clipboardHTML(),ed=this.editor,sel=ed.selection,r;if(ed&&(r=sel.getRng())&&r.text.length>0)ed.execCommand('delete');if(html&&html.length>0)ed.execCommand('mcePasteWord',false,html);return Event.cancel(e);},_insertText:function(content,bLinebreaks){content=this.editor.dom.encode(content);if(content&&content.length>0){if(bLinebreaks){if(this.editor.getParam("paste_create_paragraphs",true)){var rl=this.editor.getParam("paste_replace_list",'\u2122,<sup>TM</sup>,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(',');for(var i=0;i<rl.length;i+=2)content=content.replace(new RegExp(rl[i],'gi'),rl[i+1]);content=content.replace(/\r\n\r\n/g,'</p><p>');content=content.replace(/\r\r/g,'</p><p>');content=content.replace(/\n\n/g,'</p><p>');if((pos=content.indexOf('</p><p>'))!=-1){this.editor.execCommand("Delete");var node=this.editor.selection.getNode();var breakElms=[];do{if(node.nodeType==1){if(node.nodeName=="TD"||node.nodeName=="BODY")break;breakElms[breakElms.length]=node;}}while(node=node.parentNode);var before="",after="</p>";before+=content.substring(0,pos);for(var i=0;i<breakElms.length;i++){before+="</"+breakElms[i].nodeName+">";after+="<"+breakElms[(breakElms.length-1)-i].nodeName+">";}before+="<p>";content=before+content.substring(pos+7)+after;}}if(this.editor.getParam("paste_create_linebreaks",true)){content=content.replace(/\r\n/g,'<br />');content=content.replace(/\r/g,'<br />');content=content.replace(/\n/g,'<br />');}}this.editor.execCommand("mceInsertRawHTML",false,content);}},_insertWordContent:function(content){var t=this,ed=t.editor;if(content&&content.length>0){var bull=String.fromCharCode(8226);var middot=String.fromCharCode(183);if(ed.getParam('paste_insert_word_content_callback'))content=ed.execCallback('paste_insert_word_content_callback','before',content);var rl=ed.getParam("paste_replace_list",'\u2122,<sup>TM</sup>,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(',');for(var i=0;i<rl.length;i+=2)content=content.replace(new RegExp(rl[i],'gi'),rl[i+1]);if(this.editor.getParam("paste_convert_headers_to_strong",false)){content=content.replace(new RegExp('<p class=MsoHeading.*?>(.*?)<\/p>','gi'),'<p><b>$1</b></p>');}content=content.replace(new RegExp('tab-stops: list [0-9]+.0pt">','gi'),'">'+"--list--");content=content.replace(new RegExp(bull+"(.*?)<BR>","gi"),"<p>"+middot+"$1</p>");content=content.replace(new RegExp('<SPAN style="mso-list: Ignore">','gi'),"<span>"+bull);content=content.replace(/<o:p><\/o:p>/gi,"");content=content.replace(new RegExp('<br style="page-break-before: always;.*>','gi'),'-- page break --');content=content.replace(new RegExp('<(!--)([^>]*)(--)>','g'),"");if(this.editor.getParam("paste_remove_spans",true))content=content.replace(/<\/?span[^>]*>/gi,"");if(this.editor.getParam("paste_remove_styles",true))content=content.replace(new RegExp('<(\\w[^>]*) style="([^"]*)"([^>]*)','gi'),"<$1$3");content=content.replace(/<\/?font[^>]*>/gi,"");switch(this.editor.getParam("paste_strip_class_attributes","all")){case"all":content=content.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi,"<$1$3");break;case"mso":content=content.replace(new RegExp('<(\\w[^>]*) class="?mso([^ |>]*)([^>]*)','gi'),"<$1$3");break;}content=content.replace(new RegExp('href="?'+this._reEscape(""+document.location)+'','gi'),'href="'+this.editor.documentBaseURI.getURI());content=content.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi,"<$1$3");content=content.replace(/<\\?\?xml[^>]*>/gi,"");content=content.replace(/<\/?\w+:[^>]*>/gi,"");content=content.replace(/-- page break --\s*<p> <\/p>/gi,"");content=content.replace(/-- page break --/gi,"");if(!this.editor.getParam('force_p_newlines')){content=content.replace('','','gi');content=content.replace('</p>','<br /><br />','gi');}if(!tinymce.isIE&&!this.editor.getParam('force_p_newlines')){content=content.replace(/<\/?p[^>]*>/gi,"");}content=content.replace(/<\/?div[^>]*>/gi,"");if(this.editor.getParam("paste_convert_middot_lists",true)){var div=ed.dom.create("div",null,content);var className=this.editor.getParam("paste_unindented_list_class","unIndentedList");while(this._convertMiddots(div,"--list--"));while(this._convertMiddots(div,middot,className));while(this._convertMiddots(div,bull));content=div.innerHTML;}if(this.editor.getParam("paste_convert_headers_to_strong",false)){content=content.replace(/<h[1-6]> <\/h[1-6]>/gi,'<p> </p>');content=content.replace(/<h[1-6]>/gi,'<p><b>');content=content.replace(/<\/h[1-6]>/gi,'</b></p>');content=content.replace(/<b> <\/b>/gi,'<b> </b>');content=content.replace(/^( )*/gi,'');}content=content.replace(/--list--/gi,"");if(ed.getParam('paste_insert_word_content_callback'))content=ed.execCallback('paste_insert_word_content_callback','after',content);this.editor.execCommand("mceInsertContent",false,content);if(this.editor.getParam('paste_force_cleanup_wordpaste',true)){var ed=this.editor;window.setTimeout(function(){ed.execCommand("mceCleanup");},1);}}},_reEscape:function(s){var l="?.\\*[](){}+^$:";var o="";for(var i=0;i<s.length;i++){var c=s.charAt(i);if(l.indexOf(c)!=-1)o+='\\'+c;else o+=c;}return o;},_convertMiddots:function(div,search,class_name){var ed=this.editor,mdot=String.fromCharCode(183),bull=String.fromCharCode(8226);var nodes,prevul,i,p,ul,li,np,cp,li;nodes=div.getElementsByTagName("p");for(i=0;i<nodes.length;i++){p=nodes[i];if(p.innerHTML.indexOf(search)==0){ul=ed.dom.create("ul");if(class_name)ul.className=class_name;li=ed.dom.create("li");li.innerHTML=p.innerHTML.replace(new RegExp(''+mdot+'|'+bull+'|--list--| ',"gi"),'');ul.appendChild(li);np=p.nextSibling;while(np){if(np.nodeType==3&&new RegExp('^\\s$','m').test(np.nodeValue)){np=np.nextSibling;continue;}if(search==mdot){if(np.nodeType==1&&new RegExp('^o(\\s+| )').test(np.innerHTML)){if(!prevul){prevul=ul;ul=ed.dom.create("ul");prevul.appendChild(ul);}np.innerHTML=np.innerHTML.replace(/^o/,'');}else{if(prevul){ul=prevul;prevul=null;}if(np.nodeType!=1||np.innerHTML.indexOf(search)!=0)break;}}else{if(np.nodeType!=1||np.innerHTML.indexOf(search)!=0)break;}cp=np.nextSibling;li=ed.dom.create("li");li.innerHTML=np.innerHTML.replace(new RegExp(''+mdot+'|'+bull+'|--list--| ',"gi"),'');np.parentNode.removeChild(np);ul.appendChild(li);np=cp;}p.parentNode.replaceChild(ul,p);return true;}}return false;},_clipboardHTML:function(){var div=document.getElementById('_TinyMCE_clipboardHTML');if(!div){var div=document.createElement('DIV');div.id='_TinyMCE_clipboardHTML';with(div.style){visibility='hidden';overflow='hidden';position='absolute';width=1;height=1;}document.body.appendChild(div);}div.innerHTML='';var rng=document.body.createTextRange();rng.moveToElementText(div);rng.execCommand('Paste');var html=div.innerHTML;div.innerHTML='';return html;}});tinymce.PluginManager.add('paste',tinymce.plugins.PastePlugin);})();
\ No newline at end of file
--- /dev/null
+/**\r
+ * $Id: editor_plugin_src.js 862 2008-06-02 20:09:06Z spocke $\r
+ *\r
+ * @author Moxiecode\r
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+(function() {\r
+ var Event = tinymce.dom.Event;\r
+\r
+ tinymce.create('tinymce.plugins.PastePlugin', {\r
+ init : function(ed, url) {\r
+ var t = this;\r
+\r
+ t.editor = ed; \r
+\r
+ // Register commands\r
+ ed.addCommand('mcePasteText', function(ui, v) {\r
+ if (ui) {\r
+ if ((ed.getParam('paste_use_dialog', true)) || (!tinymce.isIE)) {\r
+ ed.windowManager.open({\r
+ file : url + '/pastetext.htm',\r
+ width : 450,\r
+ height : 400,\r
+ inline : 1\r
+ }, {\r
+ plugin_url : url\r
+ });\r
+ } else\r
+ t._insertText(clipboardData.getData("Text"), true);\r
+ } else\r
+ t._insertText(v.html, v.linebreaks);\r
+ });\r
+\r
+ ed.addCommand('mcePasteWord', function(ui, v) {\r
+ if (ui) {\r
+ if ((ed.getParam('paste_use_dialog', true)) || (!tinymce.isIE)) {\r
+ ed.windowManager.open({\r
+ file : url + '/pasteword.htm',\r
+ width : 450,\r
+ height : 400,\r
+ inline : 1\r
+ }, {\r
+ plugin_url : url\r
+ });\r
+ } else\r
+ t._insertText(t._clipboardHTML());\r
+ } else\r
+ t._insertWordContent(v);\r
+ });\r
+\r
+ ed.addCommand('mceSelectAll', function() {\r
+ ed.execCommand('selectall'); \r
+ });\r
+\r
+ // Register buttons\r
+ ed.addButton('pastetext', {title : 'paste.paste_text_desc', cmd : 'mcePasteText', ui : true});\r
+ ed.addButton('pasteword', {title : 'paste.paste_word_desc', cmd : 'mcePasteWord', ui : true});\r
+ ed.addButton('selectall', {title : 'paste.selectall_desc', cmd : 'mceSelectAll'});\r
+\r
+ if (ed.getParam("paste_auto_cleanup_on_paste", false)) {\r
+ ed.onPaste.add(function(ed, e) {\r
+ return t._handlePasteEvent(e)\r
+ });\r
+ }\r
+\r
+ if (!tinymce.isIE && ed.getParam("paste_auto_cleanup_on_paste", false)) {\r
+ // Force paste dialog if non IE browser\r
+ ed.onKeyDown.add(function(ed, e) {\r
+ if (e.ctrlKey && e.keyCode == 86) {\r
+ window.setTimeout(function() {\r
+ ed.execCommand("mcePasteText", true);\r
+ }, 1);\r
+\r
+ Event.cancel(e);\r
+ }\r
+ });\r
+ }\r
+ },\r
+\r
+ getInfo : function() {\r
+ return {\r
+ longname : 'Paste text/word',\r
+ author : 'Moxiecode Systems AB',\r
+ authorurl : 'http://tinymce.moxiecode.com',\r
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste',\r
+ version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+ };\r
+ },\r
+\r
+ // Private methods\r
+\r
+ _handlePasteEvent : function(e) {\r
+ var html = this._clipboardHTML(), ed = this.editor, sel = ed.selection, r;\r
+\r
+ // Removes italic, strong etc, the if was needed due to bug #1437114\r
+ if (ed && (r = sel.getRng()) && r.text.length > 0)\r
+ ed.execCommand('delete');\r
+\r
+ if (html && html.length > 0)\r
+ ed.execCommand('mcePasteWord', false, html);\r
+\r
+ return Event.cancel(e);\r
+ },\r
+\r
+ _insertText : function(content, bLinebreaks) {\r
+ content = this.editor.dom.encode(content);\r
+\r
+ if (content && content.length > 0) {\r
+ if (bLinebreaks) { \r
+ // Special paragraph treatment \r
+ if (this.editor.getParam("paste_create_paragraphs", true)) {\r
+ var rl = this.editor.getParam("paste_replace_list", '\u2122,<sup>TM</sup>,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(',');\r
+ for (var i=0; i<rl.length; i+=2)\r
+ content = content.replace(new RegExp(rl[i], 'gi'), rl[i+1]);\r
+\r
+ content = content.replace(/\r\n\r\n/g, '</p><p>');\r
+ content = content.replace(/\r\r/g, '</p><p>');\r
+ content = content.replace(/\n\n/g, '</p><p>');\r
+\r
+ // Has paragraphs \r
+ if ((pos = content.indexOf('</p><p>')) != -1) { \r
+ this.editor.execCommand("Delete"); \r
+\r
+ var node = this.editor.selection.getNode(); \r
+\r
+ // Get list of elements to break \r
+ var breakElms = [];\r
+\r
+ do { \r
+ if (node.nodeType == 1) { \r
+ // Don't break tables and break at body \r
+ if (node.nodeName == "TD" || node.nodeName == "BODY") \r
+ break; \r
+ \r
+ breakElms[breakElms.length] = node; \r
+ } \r
+ } while(node = node.parentNode); \r
+\r
+ var before = "", after = "</p>"; \r
+ before += content.substring(0, pos); \r
+\r
+ for (var i=0; i<breakElms.length; i++) { \r
+ before += "</" + breakElms[i].nodeName + ">"; \r
+ after += "<" + breakElms[(breakElms.length-1)-i].nodeName + ">"; \r
+ } \r
+\r
+ before += "<p>"; \r
+ content = before + content.substring(pos+7) + after; \r
+ } \r
+ } \r
+\r
+ if (this.editor.getParam("paste_create_linebreaks", true)) {\r
+ content = content.replace(/\r\n/g, '<br />');\r
+ content = content.replace(/\r/g, '<br />');\r
+ content = content.replace(/\n/g, '<br />');\r
+ }\r
+ } \r
+\r
+ this.editor.execCommand("mceInsertRawHTML", false, content); \r
+ }\r
+ },\r
+\r
+ _insertWordContent : function(content) { \r
+ var t = this, ed = t.editor;\r
+\r
+ if (content && content.length > 0) {\r
+ // Cleanup Word content\r
+ var bull = String.fromCharCode(8226);\r
+ var middot = String.fromCharCode(183);\r
+\r
+ if (ed.getParam('paste_insert_word_content_callback'))\r
+ content = ed.execCallback('paste_insert_word_content_callback', 'before', content);\r
+\r
+ var rl = ed.getParam("paste_replace_list", '\u2122,<sup>TM</sup>,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(',');\r
+ for (var i=0; i<rl.length; i+=2)\r
+ content = content.replace(new RegExp(rl[i], 'gi'), rl[i+1]);\r
+\r
+ if (this.editor.getParam("paste_convert_headers_to_strong", false)) {\r
+ content = content.replace(new RegExp('<p class=MsoHeading.*?>(.*?)<\/p>', 'gi'), '<p><b>$1</b></p>');\r
+ }\r
+\r
+ content = content.replace(new RegExp('tab-stops: list [0-9]+.0pt">', 'gi'), '">' + "--list--");\r
+ content = content.replace(new RegExp(bull + "(.*?)<BR>", "gi"), "<p>" + middot + "$1</p>");\r
+ content = content.replace(new RegExp('<SPAN style="mso-list: Ignore">', 'gi'), "<span>" + bull); // Covert to bull list\r
+ content = content.replace(/<o:p><\/o:p>/gi, "");\r
+ content = content.replace(new RegExp('<br style="page-break-before: always;.*>', 'gi'), '-- page break --'); // Replace pagebreaks\r
+ content = content.replace(new RegExp('<(!--)([^>]*)(--)>', 'g'), ""); // Word comments\r
+\r
+ if (this.editor.getParam("paste_remove_spans", true))\r
+ content = content.replace(/<\/?span[^>]*>/gi, "");\r
+\r
+ if (this.editor.getParam("paste_remove_styles", true))\r
+ content = content.replace(new RegExp('<(\\w[^>]*) style="([^"]*)"([^>]*)', 'gi'), "<$1$3");\r
+\r
+ content = content.replace(/<\/?font[^>]*>/gi, "");\r
+\r
+ // Strips class attributes.\r
+ switch (this.editor.getParam("paste_strip_class_attributes", "all")) {\r
+ case "all":\r
+ content = content.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi, "<$1$3");\r
+ break;\r
+\r
+ case "mso":\r
+ content = content.replace(new RegExp('<(\\w[^>]*) class="?mso([^ |>]*)([^>]*)', 'gi'), "<$1$3");\r
+ break;\r
+ }\r
+\r
+ content = content.replace(new RegExp('href="?' + this._reEscape("" + document.location) + '', 'gi'), 'href="' + this.editor.documentBaseURI.getURI());\r
+ content = content.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3");\r
+ content = content.replace(/<\\?\?xml[^>]*>/gi, "");\r
+ content = content.replace(/<\/?\w+:[^>]*>/gi, "");\r
+ content = content.replace(/-- page break --\s*<p> <\/p>/gi, ""); // Remove pagebreaks\r
+ content = content.replace(/-- page break --/gi, ""); // Remove pagebreaks\r
+\r
+ // content = content.replace(/\/? */gi, ""); \r
+ // content = content.replace(/<p> <\/p>/gi, '');\r
+\r
+ if (!this.editor.getParam('force_p_newlines')) {\r
+ content = content.replace('', '' ,'gi');\r
+ content = content.replace('</p>', '<br /><br />' ,'gi');\r
+ }\r
+\r
+ if (!tinymce.isIE && !this.editor.getParam('force_p_newlines')) {\r
+ content = content.replace(/<\/?p[^>]*>/gi, "");\r
+ }\r
+\r
+ content = content.replace(/<\/?div[^>]*>/gi, "");\r
+\r
+ // Convert all middlot lists to UL lists\r
+ if (this.editor.getParam("paste_convert_middot_lists", true)) {\r
+ var div = ed.dom.create("div", null, content);\r
+\r
+ // Convert all middot paragraphs to li elements\r
+ var className = this.editor.getParam("paste_unindented_list_class", "unIndentedList");\r
+\r
+ while (this._convertMiddots(div, "--list--")) ; // bull\r
+ while (this._convertMiddots(div, middot, className)) ; // Middot\r
+ while (this._convertMiddots(div, bull)) ; // bull\r
+\r
+ content = div.innerHTML;\r
+ }\r
+\r
+ // Replace all headers with strong and fix some other issues\r
+ if (this.editor.getParam("paste_convert_headers_to_strong", false)) {\r
+ content = content.replace(/<h[1-6]> <\/h[1-6]>/gi, '<p> </p>');\r
+ content = content.replace(/<h[1-6]>/gi, '<p><b>');\r
+ content = content.replace(/<\/h[1-6]>/gi, '</b></p>');\r
+ content = content.replace(/<b> <\/b>/gi, '<b> </b>');\r
+ content = content.replace(/^( )*/gi, '');\r
+ }\r
+\r
+ content = content.replace(/--list--/gi, ""); // Remove --list--\r
+\r
+ if (ed.getParam('paste_insert_word_content_callback'))\r
+ content = ed.execCallback('paste_insert_word_content_callback', 'after', content);\r
+\r
+ // Insert cleaned content\r
+ this.editor.execCommand("mceInsertContent", false, content);\r
+\r
+ if (this.editor.getParam('paste_force_cleanup_wordpaste', true)) {\r
+ var ed = this.editor;\r
+\r
+ window.setTimeout(function() {\r
+ ed.execCommand("mceCleanup");\r
+ }, 1); // Do normal cleanup detached from this thread\r
+ }\r
+ }\r
+ },\r
+\r
+ _reEscape : function(s) {\r
+ var l = "?.\\*[](){}+^$:";\r
+ var o = "";\r
+\r
+ for (var i=0; i<s.length; i++) {\r
+ var c = s.charAt(i);\r
+\r
+ if (l.indexOf(c) != -1)\r
+ o += '\\' + c;\r
+ else\r
+ o += c;\r
+ }\r
+\r
+ return o;\r
+ },\r
+\r
+ _convertMiddots : function(div, search, class_name) {\r
+ var ed = this.editor, mdot = String.fromCharCode(183), bull = String.fromCharCode(8226);\r
+ var nodes, prevul, i, p, ul, li, np, cp, li;\r
+\r
+ nodes = div.getElementsByTagName("p");\r
+ for (i=0; i<nodes.length; i++) {\r
+ p = nodes[i];\r
+\r
+ // Is middot\r
+ if (p.innerHTML.indexOf(search) == 0) {\r
+ ul = ed.dom.create("ul");\r
+\r
+ if (class_name)\r
+ ul.className = class_name;\r
+\r
+ // Add the first one\r
+ li = ed.dom.create("li");\r
+ li.innerHTML = p.innerHTML.replace(new RegExp('' + mdot + '|' + bull + '|--list--| ', "gi"), '');\r
+ ul.appendChild(li);\r
+\r
+ // Add the rest\r
+ np = p.nextSibling;\r
+ while (np) {\r
+ // If the node is whitespace, then\r
+ // ignore it and continue on.\r
+ if (np.nodeType == 3 && new RegExp('^\\s$', 'm').test(np.nodeValue)) {\r
+ np = np.nextSibling;\r
+ continue;\r
+ }\r
+\r
+ if (search == mdot) {\r
+ if (np.nodeType == 1 && new RegExp('^o(\\s+| )').test(np.innerHTML)) {\r
+ // Second level of nesting\r
+ if (!prevul) {\r
+ prevul = ul;\r
+ ul = ed.dom.create("ul");\r
+ prevul.appendChild(ul);\r
+ }\r
+ np.innerHTML = np.innerHTML.replace(/^o/, '');\r
+ } else {\r
+ // Pop the stack if we're going back up to the first level\r
+ if (prevul) {\r
+ ul = prevul;\r
+ prevul = null;\r
+ }\r
+ // Not element or middot paragraph\r
+ if (np.nodeType != 1 || np.innerHTML.indexOf(search) != 0)\r
+ break;\r
+ }\r
+ } else {\r
+ // Not element or middot paragraph\r
+ if (np.nodeType != 1 || np.innerHTML.indexOf(search) != 0)\r
+ break;\r
+ }\r
+\r
+ cp = np.nextSibling;\r
+ li = ed.dom.create("li");\r
+ li.innerHTML = np.innerHTML.replace(new RegExp('' + mdot + '|' + bull + '|--list--| ', "gi"), '');\r
+ np.parentNode.removeChild(np);\r
+ ul.appendChild(li);\r
+ np = cp;\r
+ }\r
+\r
+ p.parentNode.replaceChild(ul, p);\r
+\r
+ return true;\r
+ }\r
+ }\r
+\r
+ return false;\r
+ },\r
+\r
+ _clipboardHTML : function() {\r
+ var div = document.getElementById('_TinyMCE_clipboardHTML');\r
+\r
+ if (!div) {\r
+ var div = document.createElement('DIV');\r
+ div.id = '_TinyMCE_clipboardHTML';\r
+\r
+ with (div.style) {\r
+ visibility = 'hidden';\r
+ overflow = 'hidden';\r
+ position = 'absolute';\r
+ width = 1;\r
+ height = 1;\r
+ }\r
+\r
+ document.body.appendChild(div);\r
+ }\r
+\r
+ div.innerHTML = '';\r
+ var rng = document.body.createTextRange();\r
+ rng.moveToElementText(div);\r
+ rng.execCommand('Paste');\r
+ var html = div.innerHTML;\r
+ div.innerHTML = '';\r
+ return html;\r
+ }\r
+ });\r
+\r
+ // Register plugin\r
+ tinymce.PluginManager.add('paste', tinymce.plugins.PastePlugin);\r
+})();
\ No newline at end of file
--- /dev/null
+tinyMCEPopup.requireLangPack();\r
+\r
+function saveContent() {\r
+ if (document.forms[0].htmlSource.value == '') {\r
+ tinyMCEPopup.close();\r
+ return false;\r
+ }\r
+\r
+ tinyMCEPopup.execCommand('mcePasteText', false, {\r
+ html : document.forms[0].htmlSource.value,\r
+ linebreaks : document.forms[0].linebreaks.checked\r
+ });\r
+\r
+ tinyMCEPopup.close();\r
+}\r
+\r
+function onLoadInit() {\r
+ tinyMCEPopup.resizeToInnerSize();\r
+\r
+ // Remove Gecko spellchecking\r
+ if (tinymce.isGecko)\r
+ document.body.spellcheck = tinyMCEPopup.getParam("gecko_spellcheck");\r
+\r
+ resizeInputs();\r
+}\r
+\r
+var wHeight=0, wWidth=0, owHeight=0, owWidth=0;\r
+\r
+function resizeInputs() {\r
+ if (!tinymce.isIE) {\r
+ wHeight = self.innerHeight-80;\r
+ wWidth = self.innerWidth-17;\r
+ } else {\r
+ wHeight = document.body.clientHeight-80;\r
+ wWidth = document.body.clientWidth-17;\r
+ }\r
+\r
+ document.forms[0].htmlSource.style.height = Math.abs(wHeight) + 'px';\r
+ document.forms[0].htmlSource.style.width = Math.abs(wWidth) + 'px';\r
+}\r
+\r
+tinyMCEPopup.onInit.add(onLoadInit);
\ No newline at end of file
--- /dev/null
+tinyMCEPopup.requireLangPack();\r
+\r
+function saveContent() {\r
+ var html = document.getElementById("frmData").contentWindow.document.body.innerHTML;\r
+\r
+ if (html == ''){\r
+ tinyMCEPopup.close();\r
+ return false;\r
+ }\r
+\r
+ tinyMCEPopup.execCommand('mcePasteWord', false, html);\r
+ tinyMCEPopup.close();\r
+}\r
+\r
+function onLoadInit() {\r
+ tinyMCEPopup.resizeToInnerSize();\r
+\r
+ // Fix for endless reloading in FF\r
+ window.setTimeout(createIFrame, 10);\r
+}\r
+\r
+function createIFrame() {\r
+ document.getElementById('iframecontainer').innerHTML = '<iframe id="frmData" name="frmData" class="sourceIframe" src="blank.htm" height="280" width="400" frameborder="0" style="background-color:#FFFFFF; width:100%;" dir="ltr" wrap="soft"></iframe>';\r
+}\r
+\r
+var wHeight=0, wWidth=0, owHeight=0, owWidth=0;\r
+\r
+function initIframe(doc) {\r
+ var dir = tinyMCEPopup.editor.settings.directionality;\r
+\r
+ doc.body.dir = dir;\r
+\r
+ // Remove Gecko spellchecking\r
+ if (tinymce.isGecko)\r
+ doc.body.spellcheck = tinyMCEPopup.getParam("gecko_spellcheck");\r
+\r
+ resizeInputs();\r
+}\r
+\r
+function resizeInputs() {\r
+ if (!tinymce.isIE) {\r
+ wHeight = self.innerHeight - 80;\r
+ wWidth = self.innerWidth - 18;\r
+ } else {\r
+ wHeight = document.body.clientHeight - 80;\r
+ wWidth = document.body.clientWidth - 18;\r
+ }\r
+\r
+ var elm = document.getElementById('frmData');\r
+ if (elm) {\r
+ elm.style.height = Math.abs(wHeight) + 'px';\r
+ elm.style.width = Math.abs(wWidth) + 'px';\r
+ }\r
+}\r
+\r
+tinyMCEPopup.onInit.add(onLoadInit);\r
--- /dev/null
+tinyMCE.addI18n('en.paste_dlg',{\r
+text_title:"Use CTRL+V on your keyboard to paste the text into the window.",\r
+text_linebreaks:"Keep linebreaks",\r
+word_title:"Use CTRL+V on your keyboard to paste the text into the window."\r
+});
\ No newline at end of file
--- /dev/null
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+ <title>{#paste.paste_text_desc}</title>\r
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />\r
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
+ <script type="text/javascript" src="js/pastetext.js"></script>\r
+ <base target="_self" />\r
+</head>\r
+<body onresize="resizeInputs();" style="display:none; overflow:hidden;">\r
+<form name="source" onsubmit="saveContent();return false;" action="#">\r
+ <div style="float: left" class="title">{#paste.paste_text_desc}</div>\r
+\r
+ <div style="float: right">\r
+ <input type="checkbox" name="linebreaks" id="linebreaks" class="wordWrapCode" checked="checked" /><label for="linebreaks">{#paste_dlg.text_linebreaks}</label>\r
+ </div>\r
+\r
+ <br style="clear: both" />\r
+\r
+ <div>{#paste_dlg.text_title}</div>\r
+\r
+ <textarea name="htmlSource" id="htmlSource" rows="15" cols="100" style="width: 100%; height: 100%; font-family: 'Courier New',Courier,mono; font-size: 12px;" dir="ltr" wrap="soft" class="mceFocus"></textarea>\r
+\r
+ <div class="mceActionPanel">\r
+ <div style="float: left">\r
+ <input type="submit" name="insert" value="{#insert}" id="insert" />\r
+ </div>\r
+\r
+ <div style="float: right">\r
+ <input type="button" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" id="cancel" />\r
+ </div>\r
+ </div>\r
+</form>\r
+</body> \r
+</html>
\ No newline at end of file
--- /dev/null
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />\r
+ <title>{#paste.paste_word_desc}</title>\r
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
+ <script type="text/javascript" src="js/pasteword.js"></script>\r
+ <link href="css/pasteword.css" rel="stylesheet" type="text/css" />\r
+ <base target="_self" />\r
+</head>\r
+<body onresize="resizeInputs();" style="display:none; overflow:hidden;">\r
+ <form name="source" onsubmit="saveContent();" action="#">\r
+ <div class="title">{#paste.paste_word_desc}</div>\r
+\r
+ <div>{#paste_dlg.word_title}</div>\r
+\r
+ <div id="iframecontainer"></div>\r
+\r
+ <div class="mceActionPanel">\r
+ <div style="float: left">\r
+ <input type="button" id="insert" name="insert" value="{#insert}" onclick="saveContent();" />\r
+ </div>\r
+\r
+ <div style="float: right">\r
+ <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
+ </div>\r
+ </div>\r
+ </form>\r
+</body>\r
+</html>\r
--- /dev/null
+(function(){tinymce.create('tinymce.plugins.Preview',{init:function(ed,url){var t=this,css=tinymce.explode(ed.settings.content_css);t.editor=ed;tinymce.each(css,function(u,k){css[k]=ed.documentBaseURI.toAbsolute(u);});ed.addCommand('mcePreview',function(){ed.windowManager.open({file:ed.getParam("plugin_preview_pageurl",url+"/preview.html"),width:parseInt(ed.getParam("plugin_preview_width","550")),height:parseInt(ed.getParam("plugin_preview_height","600")),resizable:"yes",scrollbars:"yes",popup_css:css.join(','),inline:ed.getParam("plugin_preview_inline",1)},{base:ed.documentBaseURI.getURI()});});ed.addButton('preview',{title:'preview.preview_desc',cmd:'mcePreview'});},getInfo:function(){return{longname:'Preview',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/preview',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('preview',tinymce.plugins.Preview);})();
\ No newline at end of file
--- /dev/null
+/**
+ * $Id: editor_plugin_src.js 895 2008-07-10 14:34:23Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+(function() {
+ tinymce.create('tinymce.plugins.Preview', {
+ init : function(ed, url) {
+ var t = this, css = tinymce.explode(ed.settings.content_css);
+
+ t.editor = ed;
+
+ // Force absolute CSS urls
+ tinymce.each(css, function(u, k) {
+ css[k] = ed.documentBaseURI.toAbsolute(u);
+ });
+
+ ed.addCommand('mcePreview', function() {
+ ed.windowManager.open({
+ file : ed.getParam("plugin_preview_pageurl", url + "/preview.html"),
+ width : parseInt(ed.getParam("plugin_preview_width", "550")),
+ height : parseInt(ed.getParam("plugin_preview_height", "600")),
+ resizable : "yes",
+ scrollbars : "yes",
+ popup_css : css.join(','),
+ inline : ed.getParam("plugin_preview_inline", 1)
+ }, {
+ base : ed.documentBaseURI.getURI()
+ });
+ });
+
+ ed.addButton('preview', {title : 'preview.preview_desc', cmd : 'mcePreview'});
+ },
+
+ getInfo : function() {
+ return {
+ longname : 'Preview',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/preview',
+ version : tinymce.majorVersion + "." + tinymce.minorVersion
+ };
+ }
+ });
+
+ // Register plugin
+ tinymce.PluginManager.add('preview', tinymce.plugins.Preview);
+})();
\ No newline at end of file
--- /dev/null
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+<script language="javascript" src="../../tiny_mce_popup.js"></script>\r
+<script type="text/javascript" src="jscripts/embed.js"></script>\r
+<script type="text/javascript">\r
+tinyMCEPopup.onInit.add(function(ed) {\r
+ var dom = tinyMCEPopup.dom;\r
+\r
+ // Load editor content_css\r
+ tinymce.each(ed.settings.content_css.split(','), function(u) {\r
+ dom.loadCSS(ed.documentBaseURI.toAbsolute(u));\r
+ });\r
+\r
+ // Place contents inside div container\r
+ dom.setHTML('content', ed.getContent());\r
+});\r
+</script>\r
+<title>Example of a custom preview page</title>\r
+</head>\r
+<body>\r
+\r
+Editor contents: <br />\r
+<div id="content">\r
+<!-- Gets filled with editor contents -->\r
+</div>\r
+\r
+</body>\r
+</html>\r
--- /dev/null
+/**\r
+ * This script contains embed functions for common plugins. This scripts are complety free to use for any purpose.\r
+ */\r
+\r
+function writeFlash(p) {\r
+ writeEmbed(\r
+ 'D27CDB6E-AE6D-11cf-96B8-444553540000',\r
+ 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',\r
+ 'application/x-shockwave-flash',\r
+ p\r
+ );\r
+}\r
+\r
+function writeShockWave(p) {\r
+ writeEmbed(\r
+ '166B1BCA-3F9C-11CF-8075-444553540000',\r
+ 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0',\r
+ 'application/x-director',\r
+ p\r
+ );\r
+}\r
+\r
+function writeQuickTime(p) {\r
+ writeEmbed(\r
+ '02BF25D5-8C17-4B23-BC80-D3488ABDDC6B',\r
+ 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0',\r
+ 'video/quicktime',\r
+ p\r
+ );\r
+}\r
+\r
+function writeRealMedia(p) {\r
+ writeEmbed(\r
+ 'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA',\r
+ 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',\r
+ 'audio/x-pn-realaudio-plugin',\r
+ p\r
+ );\r
+}\r
+\r
+function writeWindowsMedia(p) {\r
+ p.url = p.src;\r
+ writeEmbed(\r
+ '6BF52A52-394A-11D3-B153-00C04F79FAA6',\r
+ 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701',\r
+ 'application/x-mplayer2',\r
+ p\r
+ );\r
+}\r
+\r
+function writeEmbed(cls, cb, mt, p) {\r
+ var h = '', n;\r
+\r
+ h += '<object classid="clsid:' + cls + '" codebase="' + cb + '"';\r
+ h += typeof(p.id) != "undefined" ? 'id="' + p.id + '"' : '';\r
+ h += typeof(p.name) != "undefined" ? 'name="' + p.name + '"' : '';\r
+ h += typeof(p.width) != "undefined" ? 'width="' + p.width + '"' : '';\r
+ h += typeof(p.height) != "undefined" ? 'height="' + p.height + '"' : '';\r
+ h += typeof(p.align) != "undefined" ? 'align="' + p.align + '"' : '';\r
+ h += '>';\r
+\r
+ for (n in p)\r
+ h += '<param name="' + n + '" value="' + p[n] + '">';\r
+\r
+ h += '<embed type="' + mt + '"';\r
+\r
+ for (n in p)\r
+ h += n + '="' + p[n] + '" ';\r
+\r
+ h += '></embed></object>';\r
+\r
+ document.write(h);\r
+}\r
--- /dev/null
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+<script language="javascript" src="../../tiny_mce_popup.js"></script>\r
+<script type="text/javascript" src="jscripts/embed.js"></script>\r
+<script type="text/javascript">\r
+tinyMCEPopup.onInit.add(function(ed) {\r
+ var dom = tinyMCEPopup.dom;\r
+\r
+ dom.setHTML('content', ed.getContent());\r
+});\r
+\r
+document.write('<base href="' + tinyMCEPopup.getWindowArg("base") + '">');\r
+</script>\r
+<title>{#preview.preview_desc}</title>\r
+</head>\r
+<body id="content">\r
+<!-- Gets filled with editor contents -->\r
+</body>\r
+</html>\r
--- /dev/null
+(function(){tinymce.create('tinymce.plugins.Print',{init:function(ed,url){ed.addCommand('mcePrint',function(){ed.getWin().print();});ed.addButton('print',{title:'print.print_desc',cmd:'mcePrint'});},getInfo:function(){return{longname:'Print',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/print',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('print',tinymce.plugins.Print);})();
\ No newline at end of file
--- /dev/null
+/**\r
+ * $Id: editor_plugin_src.js 520 2008-01-07 16:30:32Z spocke $\r
+ *\r
+ * @author Moxiecode\r
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+(function() {\r
+ tinymce.create('tinymce.plugins.Print', {\r
+ init : function(ed, url) {\r
+ ed.addCommand('mcePrint', function() {\r
+ ed.getWin().print();\r
+ });\r
+\r
+ ed.addButton('print', {title : 'print.print_desc', cmd : 'mcePrint'});\r
+ },\r
+\r
+ getInfo : function() {\r
+ return {\r
+ longname : 'Print',\r
+ author : 'Moxiecode Systems AB',\r
+ authorurl : 'http://tinymce.moxiecode.com',\r
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/print',\r
+ version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+ };\r
+ }\r
+ });\r
+\r
+ // Register plugin\r
+ tinymce.PluginManager.add('print', tinymce.plugins.Print);\r
+})();\r
--- /dev/null
+<!-- WebKit -->
\ No newline at end of file
--- /dev/null
+(function(){var Event=tinymce.dom.Event,grep=tinymce.grep,each=tinymce.each,inArray=tinymce.inArray,isOldWebKit=tinymce.isOldWebKit;tinymce.create('tinymce.plugins.Safari',{init:function(ed){var t=this,dom;if(!tinymce.isWebKit)return;t.editor=ed;t.webKitFontSizes=['x-small','small','medium','large','x-large','xx-large','-webkit-xxx-large'];t.namedFontSizes=['xx-small','x-small','small','medium','large','x-large','xx-large'];ed.addCommand('CreateLink',function(u,v){var n=ed.selection.getNode(),dom=ed.dom,a;if(n&&(/^(left|right)$/i.test(dom.getStyle(n,'float',1))||/^(left|right)$/i.test(dom.getAttrib(n,'align')))){a=dom.create('a',{href:v},n.cloneNode());n.parentNode.replaceChild(a,n);ed.selection.select(a);}else ed.getDoc().execCommand("CreateLink",false,v);});ed.onPaste.add(function(ed,e){function removeStyles(e){e=e.target;if(e.nodeType==1){e.style.cssText='';each(ed.dom.select('*',e),function(e){e.style.cssText='';});}};Event.add(ed.getDoc(),'DOMNodeInserted',removeStyles);window.setTimeout(function(){Event.remove(ed.getDoc(),'DOMNodeInserted',removeStyles);},0);});ed.onKeyUp.add(function(ed,e){var h,b;if(e.keyCode==46||e.keyCode==8){b=ed.getBody();h=b.innerHTML;if(b.childNodes.length==1&&!/<(img|hr)/.test(h)&&tinymce.trim(h.replace(/<[^>]+>/g,'')).length==0)ed.setContent('',{format:'raw'});}});ed.addCommand('FormatBlock',function(u,v){var dom=ed.dom,e=dom.getParent(ed.selection.getNode(),dom.isBlock);if(e)dom.replace(dom.create(v),e,1);else ed.getDoc().execCommand("FormatBlock",false,v);});ed.addCommand('mceInsertContent',function(u,v){ed.getDoc().execCommand("InsertText",false,'mce_marker');ed.getBody().innerHTML=ed.getBody().innerHTML.replace(/mce_marker/g,v+'<span id="_mce_tmp">XX</span>');ed.selection.select(ed.dom.get('_mce_tmp'));ed.getDoc().execCommand("Delete",false,' ');});ed.onKeyPress.add(function(ed,e){if(e.keyCode==13&&(e.shiftKey||ed.settings.force_br_newlines&&ed.selection.getNode().nodeName!='LI')){t._insertBR(ed);Event.cancel(e);}});ed.addQueryValueHandler('FontSize',function(u,v){var e,v;if((e=ed.dom.getParent(ed.selection.getStart(),'span'))&&(v=e.style.fontSize))return tinymce.inArray(t.namedFontSizes,v)+1;if((e=ed.dom.getParent(ed.selection.getEnd(),'span'))&&(v=e.style.fontSize))return tinymce.inArray(t.namedFontSizes,v)+1;return ed.getDoc().queryCommandValue('FontSize');});ed.addQueryValueHandler('FontName',function(u,v){var e,v;if((e=ed.dom.getParent(ed.selection.getStart(),'span'))&&(v=e.style.fontFamily))return v.replace(/, /g,',');if((e=ed.dom.getParent(ed.selection.getEnd(),'span'))&&(v=e.style.fontFamily))return v.replace(/, /g,',');return ed.getDoc().queryCommandValue('FontName');});ed.onClick.add(function(ed,e){e=e.target;if(e.nodeName=='IMG'){t.selElm=e;ed.selection.select(e);}else t.selElm=null;});ed.onInit.add(function(){t._fixWebKitSpans();if(isOldWebKit)t._patchSafari2x(ed);});ed.onSetContent.add(function(){dom=ed.dom;each(['strong','b','em','u','strike','sub','sup','a'],function(v){each(grep(dom.select(v)).reverse(),function(n){var nn=n.nodeName.toLowerCase(),st;if(nn=='a'){if(n.name)dom.replace(dom.create('img',{mce_name:'a',name:n.name,'class':'mceItemAnchor'}),n);return;}switch(nn){case'b':case'strong':if(nn=='b')nn='strong';st='font-weight: bold;';break;case'em':st='font-style: italic;';break;case'u':st='text-decoration: underline;';break;case'sub':st='vertical-align: sub;';break;case'sup':st='vertical-align: super;';break;case'strike':st='text-decoration: line-through;';break;}dom.replace(dom.create('span',{mce_name:nn,style:st,'class':'Apple-style-span'}),n,1);});});});ed.onPreProcess.add(function(ed,o){dom=ed.dom;each(grep(o.node.getElementsByTagName('span')).reverse(),function(n){var v,bg;if(o.get){if(dom.hasClass(n,'Apple-style-span')){bg=n.style.backgroundColor;switch(dom.getAttrib(n,'mce_name')){case'font':if(!ed.settings.convert_fonts_to_spans)dom.setAttrib(n,'style','');break;case'strong':case'em':case'sub':case'sup':dom.setAttrib(n,'style','');break;case'strike':case'u':if(!ed.settings.inline_styles)dom.setAttrib(n,'style','');else dom.setAttrib(n,'mce_name','');break;default:if(!ed.settings.inline_styles)dom.setAttrib(n,'style','');}if(bg)n.style.backgroundColor=bg;}}if(dom.hasClass(n,'mceItemRemoved'))dom.remove(n,1);});});ed.onPostProcess.add(function(ed,o){o.content=o.content.replace(/<br \/><\/(h[1-6]|div|p|address|pre)>/g,'</$1>');o.content=o.content.replace(/ id=\"undefined\"/g,'');});},getInfo:function(){return{longname:'Safari compatibility',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/safari',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_fixWebKitSpans:function(){var t=this,ed=t.editor;if(!isOldWebKit){Event.add(ed.getDoc(),'DOMNodeInserted',function(e){e=e.target;if(e&&e.nodeType==1)t._fixAppleSpan(e);});}else{ed.onExecCommand.add(function(){each(ed.dom.select('span'),function(n){t._fixAppleSpan(n);});ed.nodeChanged();});}},_fixAppleSpan:function(e){var ed=this.editor,dom=ed.dom,fz=this.webKitFontSizes,fzn=this.namedFontSizes,s=ed.settings,st,p;if(dom.getAttrib(e,'mce_fixed'))return;if(e.nodeName=='SPAN'&&e.className=='Apple-style-span'){st=e.style;if(!s.convert_fonts_to_spans){if(st.fontSize){dom.setAttrib(e,'mce_name','font');dom.setAttrib(e,'size',inArray(fz,st.fontSize)+1);}if(st.fontFamily){dom.setAttrib(e,'mce_name','font');dom.setAttrib(e,'face',st.fontFamily);}if(st.color){dom.setAttrib(e,'mce_name','font');dom.setAttrib(e,'color',dom.toHex(st.color));}if(st.backgroundColor){dom.setAttrib(e,'mce_name','font');dom.setStyle(e,'background-color',st.backgroundColor);}}else{if(st.fontSize)dom.setStyle(e,'fontSize',fzn[inArray(fz,st.fontSize)]);}if(st.fontWeight=='bold')dom.setAttrib(e,'mce_name','strong');if(st.fontStyle=='italic')dom.setAttrib(e,'mce_name','em');if(st.textDecoration=='underline')dom.setAttrib(e,'mce_name','u');if(st.textDecoration=='line-through')dom.setAttrib(e,'mce_name','strike');if(st.verticalAlign=='super')dom.setAttrib(e,'mce_name','sup');if(st.verticalAlign=='sub')dom.setAttrib(e,'mce_name','sub');dom.setAttrib(e,'mce_fixed','1');}},_patchSafari2x:function(ed){var t=this,setContent,getNode,dom=ed.dom,lr;if(ed.windowManager.onBeforeOpen){ed.windowManager.onBeforeOpen.add(function(){r=ed.selection.getRng();});}ed.selection.select=function(n){this.getSel().setBaseAndExtent(n,0,n,1);};getNode=ed.selection.getNode;ed.selection.getNode=function(){return t.selElm||getNode.call(this);};ed.selection.getRng=function(){var t=this,s=t.getSel(),d=ed.getDoc(),r,rb,ra,di;if(s.anchorNode){r=d.createRange();try{rb=d.createRange();rb.setStart(s.anchorNode,s.anchorOffset);rb.collapse(1);ra=d.createRange();ra.setStart(s.focusNode,s.focusOffset);ra.collapse(1);di=rb.compareBoundaryPoints(rb.START_TO_END,ra)<0;r.setStart(di?s.anchorNode:s.focusNode,di?s.anchorOffset:s.focusOffset);r.setEnd(di?s.focusNode:s.anchorNode,di?s.focusOffset:s.anchorOffset);lr=r;}catch(ex){}}return r||lr;};setContent=ed.selection.setContent;ed.selection.setContent=function(h,s){var r=this.getRng(),b;try{setContent.call(this,h,s);}catch(ex){b=dom.create('body');b.innerHTML=h;each(b.childNodes,function(n){r.insertNode(n.cloneNode(true));});}};},_insertBR:function(ed){var dom=ed.dom,s=ed.selection,r=s.getRng(),br;r.insertNode(br=dom.create('br'));r.setStartAfter(br);r.setEndAfter(br);s.setRng(r);if(s.getSel().focusNode==br.previousSibling){s.select(dom.insertAfter(dom.doc.createTextNode('\u00a0'),br));s.collapse(1);}ed.getWin().scrollTo(0,dom.getPos(s.getRng().startContainer).y);}});tinymce.PluginManager.add('safari',tinymce.plugins.Safari);})();
\ No newline at end of file
--- /dev/null
+/**\r
+ * $Id: editor_plugin_src.js 264 2007-04-26 20:53:09Z spocke $\r
+ *\r
+ * @author Moxiecode\r
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+(function() {\r
+ var Event = tinymce.dom.Event, grep = tinymce.grep, each = tinymce.each, inArray = tinymce.inArray, isOldWebKit = tinymce.isOldWebKit;\r
+\r
+ tinymce.create('tinymce.plugins.Safari', {\r
+ init : function(ed) {\r
+ var t = this, dom;\r
+\r
+ // Ignore on non webkit\r
+ if (!tinymce.isWebKit)\r
+ return;\r
+\r
+ t.editor = ed;\r
+ t.webKitFontSizes = ['x-small', 'small', 'medium', 'large', 'x-large', 'xx-large', '-webkit-xxx-large'];\r
+ t.namedFontSizes = ['xx-small', 'x-small','small','medium','large','x-large', 'xx-large'];\r
+\r
+ // Safari CreateLink command will not work correctly on images that is aligned\r
+ ed.addCommand('CreateLink', function(u, v) {\r
+ var n = ed.selection.getNode(), dom = ed.dom, a;\r
+\r
+ if (n && (/^(left|right)$/i.test(dom.getStyle(n, 'float', 1)) || /^(left|right)$/i.test(dom.getAttrib(n, 'align')))) {\r
+ a = dom.create('a', {href : v}, n.cloneNode());\r
+ n.parentNode.replaceChild(a, n);\r
+ ed.selection.select(a);\r
+ } else\r
+ ed.getDoc().execCommand("CreateLink", false, v);\r
+ });\r
+\r
+ ed.onPaste.add(function(ed, e) {\r
+ function removeStyles(e) {\r
+ e = e.target;\r
+\r
+ if (e.nodeType == 1) {\r
+ e.style.cssText = '';\r
+\r
+ each(ed.dom.select('*', e), function(e) {\r
+ e.style.cssText = '';\r
+ });\r
+ }\r
+ };\r
+\r
+ Event.add(ed.getDoc(), 'DOMNodeInserted', removeStyles);\r
+\r
+ window.setTimeout(function() {\r
+ Event.remove(ed.getDoc(), 'DOMNodeInserted', removeStyles);\r
+ }, 0);\r
+ });\r
+\r
+ ed.onKeyUp.add(function(ed, e) {\r
+ var h, b;\r
+\r
+ // If backspace or delete key\r
+ if (e.keyCode == 46 || e.keyCode == 8) {\r
+ b = ed.getBody();\r
+ h = b.innerHTML;\r
+\r
+ // If there is no text content or images or hr elements then remove everything\r
+ if (b.childNodes.length == 1 && !/<(img|hr)/.test(h) && tinymce.trim(h.replace(/<[^>]+>/g, '')).length == 0)\r
+ ed.setContent('', {format : 'raw'});\r
+ }\r
+ });\r
+\r
+ // Workaround for FormatBlock bug, http://bugs.webkit.org/show_bug.cgi?id=16004\r
+ ed.addCommand('FormatBlock', function(u, v) {\r
+ var dom = ed.dom, e = dom.getParent(ed.selection.getNode(), dom.isBlock);\r
+\r
+ if (e)\r
+ dom.replace(dom.create(v), e, 1);\r
+ else\r
+ ed.getDoc().execCommand("FormatBlock", false, v);\r
+ });\r
+\r
+ // Workaround for InsertHTML bug, http://bugs.webkit.org/show_bug.cgi?id=16382\r
+ ed.addCommand('mceInsertContent', function(u, v) {\r
+ ed.getDoc().execCommand("InsertText", false, 'mce_marker');\r
+ ed.getBody().innerHTML = ed.getBody().innerHTML.replace(/mce_marker/g, v + '<span id="_mce_tmp">XX</span>');\r
+ ed.selection.select(ed.dom.get('_mce_tmp'));\r
+ ed.getDoc().execCommand("Delete", false, ' ');\r
+ });\r
+\r
+ // Workaround for missing shift+enter support, http://bugs.webkit.org/show_bug.cgi?id=16973\r
+ ed.onKeyPress.add(function(ed, e) {\r
+ if (e.keyCode == 13 && (e.shiftKey || ed.settings.force_br_newlines && ed.selection.getNode().nodeName != 'LI')) {\r
+ t._insertBR(ed);\r
+ Event.cancel(e);\r
+ }\r
+ });\r
+\r
+ // Safari returns incorrect values\r
+ ed.addQueryValueHandler('FontSize', function(u, v) {\r
+ var e, v;\r
+\r
+ // Check for the real font size at the start of selection\r
+ if ((e = ed.dom.getParent(ed.selection.getStart(), 'span')) && (v = e.style.fontSize))\r
+ return tinymce.inArray(t.namedFontSizes, v) + 1;\r
+\r
+ // Check for the real font size at the end of selection\r
+ if ((e = ed.dom.getParent(ed.selection.getEnd(), 'span')) && (v = e.style.fontSize))\r
+ return tinymce.inArray(t.namedFontSizes, v) + 1;\r
+\r
+ // Return default value it's better than nothing right!\r
+ return ed.getDoc().queryCommandValue('FontSize');\r
+ });\r
+\r
+ // Safari returns incorrect values\r
+ ed.addQueryValueHandler('FontName', function(u, v) {\r
+ var e, v;\r
+\r
+ // Check for the real font name at the start of selection\r
+ if ((e = ed.dom.getParent(ed.selection.getStart(), 'span')) && (v = e.style.fontFamily))\r
+ return v.replace(/, /g, ',');\r
+\r
+ // Check for the real font name at the end of selection\r
+ if ((e = ed.dom.getParent(ed.selection.getEnd(), 'span')) && (v = e.style.fontFamily))\r
+ return v.replace(/, /g, ',');\r
+\r
+ // Return default value it's better than nothing right!\r
+ return ed.getDoc().queryCommandValue('FontName');\r
+ });\r
+\r
+ // Workaround for bug, http://bugs.webkit.org/show_bug.cgi?id=12250\r
+ ed.onClick.add(function(ed, e) {\r
+ e = e.target;\r
+\r
+ if (e.nodeName == 'IMG') {\r
+ t.selElm = e;\r
+ ed.selection.select(e);\r
+ } else\r
+ t.selElm = null;\r
+ });\r
+\r
+/* ed.onBeforeExecCommand.add(function(ed, c, b) {\r
+ var r = t.bookmarkRng;\r
+\r
+ // Restore selection\r
+ if (r) {\r
+ ed.selection.setRng(r);\r
+ t.bookmarkRng = null;\r
+ //console.debug('restore', r.startContainer, r.startOffset, r.endContainer, r.endOffset);\r
+ }\r
+ });*/\r
+\r
+ ed.onInit.add(function() {\r
+ t._fixWebKitSpans();\r
+\r
+/* ed.windowManager.onOpen.add(function() {\r
+ var r = ed.selection.getRng();\r
+\r
+ // Store selection if valid\r
+ if (r.startContainer != ed.getDoc()) {\r
+ t.bookmarkRng = r.cloneRange();\r
+ //console.debug('store', r.startContainer, r.startOffset, r.endContainer, r.endOffset);\r
+ }\r
+ });\r
+\r
+ ed.windowManager.onClose.add(function() {\r
+ t.bookmarkRng = null;\r
+ });*/\r
+\r
+ if (isOldWebKit)\r
+ t._patchSafari2x(ed);\r
+ });\r
+\r
+ ed.onSetContent.add(function() {\r
+ dom = ed.dom;\r
+\r
+ // Convert strong,b,em,u,strike to spans\r
+ each(['strong','b','em','u','strike','sub','sup','a'], function(v) {\r
+ each(grep(dom.select(v)).reverse(), function(n) {\r
+ var nn = n.nodeName.toLowerCase(), st;\r
+\r
+ // Convert anchors into images\r
+ if (nn == 'a') {\r
+ if (n.name)\r
+ dom.replace(dom.create('img', {mce_name : 'a', name : n.name, 'class' : 'mceItemAnchor'}), n);\r
+\r
+ return;\r
+ }\r
+\r
+ switch (nn) {\r
+ case 'b':\r
+ case 'strong':\r
+ if (nn == 'b')\r
+ nn = 'strong';\r
+\r
+ st = 'font-weight: bold;';\r
+ break;\r
+\r
+ case 'em':\r
+ st = 'font-style: italic;';\r
+ break;\r
+\r
+ case 'u':\r
+ st = 'text-decoration: underline;';\r
+ break;\r
+\r
+ case 'sub':\r
+ st = 'vertical-align: sub;';\r
+ break;\r
+\r
+ case 'sup':\r
+ st = 'vertical-align: super;';\r
+ break;\r
+\r
+ case 'strike':\r
+ st = 'text-decoration: line-through;';\r
+ break;\r
+ }\r
+\r
+ dom.replace(dom.create('span', {mce_name : nn, style : st, 'class' : 'Apple-style-span'}), n, 1);\r
+ });\r
+ });\r
+ });\r
+\r
+ ed.onPreProcess.add(function(ed, o) {\r
+ dom = ed.dom;\r
+\r
+ each(grep(o.node.getElementsByTagName('span')).reverse(), function(n) {\r
+ var v, bg;\r
+\r
+ if (o.get) {\r
+ if (dom.hasClass(n, 'Apple-style-span')) {\r
+ bg = n.style.backgroundColor;\r
+\r
+ switch (dom.getAttrib(n, 'mce_name')) {\r
+ case 'font':\r
+ if (!ed.settings.convert_fonts_to_spans)\r
+ dom.setAttrib(n, 'style', '');\r
+ break;\r
+\r
+ case 'strong':\r
+ case 'em':\r
+ case 'sub':\r
+ case 'sup':\r
+ dom.setAttrib(n, 'style', '');\r
+ break;\r
+\r
+ case 'strike':\r
+ case 'u':\r
+ if (!ed.settings.inline_styles)\r
+ dom.setAttrib(n, 'style', '');\r
+ else\r
+ dom.setAttrib(n, 'mce_name', '');\r
+\r
+ break;\r
+\r
+ default:\r
+ if (!ed.settings.inline_styles)\r
+ dom.setAttrib(n, 'style', '');\r
+ }\r
+\r
+\r
+ if (bg)\r
+ n.style.backgroundColor = bg;\r
+ }\r
+ }\r
+\r
+ if (dom.hasClass(n, 'mceItemRemoved'))\r
+ dom.remove(n, 1);\r
+ });\r
+ });\r
+\r
+ ed.onPostProcess.add(function(ed, o) {\r
+ // Safari adds BR at end of all block elements\r
+ o.content = o.content.replace(/<br \/><\/(h[1-6]|div|p|address|pre)>/g, '</$1>');\r
+\r
+ // Safari adds id="undefined" to HR elements\r
+ o.content = o.content.replace(/ id=\"undefined\"/g, '');\r
+ });\r
+ },\r
+\r
+ getInfo : function() {\r
+ return {\r
+ longname : 'Safari compatibility',\r
+ author : 'Moxiecode Systems AB',\r
+ authorurl : 'http://tinymce.moxiecode.com',\r
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/safari',\r
+ version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+ };\r
+ },\r
+\r
+ // Internal methods\r
+\r
+ _fixWebKitSpans : function() {\r
+ var t = this, ed = t.editor;\r
+\r
+ if (!isOldWebKit) {\r
+ // Use mutator events on new WebKit\r
+ Event.add(ed.getDoc(), 'DOMNodeInserted', function(e) {\r
+ e = e.target;\r
+\r
+ if (e && e.nodeType == 1)\r
+ t._fixAppleSpan(e);\r
+ });\r
+ } else {\r
+ // Do post command processing in old WebKit since the browser crashes on Mutator events :(\r
+ ed.onExecCommand.add(function() {\r
+ each(ed.dom.select('span'), function(n) {\r
+ t._fixAppleSpan(n);\r
+ });\r
+\r
+ ed.nodeChanged();\r
+ });\r
+ }\r
+ },\r
+\r
+ _fixAppleSpan : function(e) {\r
+ var ed = this.editor, dom = ed.dom, fz = this.webKitFontSizes, fzn = this.namedFontSizes, s = ed.settings, st, p;\r
+\r
+ if (dom.getAttrib(e, 'mce_fixed'))\r
+ return;\r
+\r
+ // Handle Apple style spans\r
+ if (e.nodeName == 'SPAN' && e.className == 'Apple-style-span') {\r
+ st = e.style;\r
+\r
+ if (!s.convert_fonts_to_spans) {\r
+ if (st.fontSize) {\r
+ dom.setAttrib(e, 'mce_name', 'font');\r
+ dom.setAttrib(e, 'size', inArray(fz, st.fontSize) + 1);\r
+ }\r
+\r
+ if (st.fontFamily) {\r
+ dom.setAttrib(e, 'mce_name', 'font');\r
+ dom.setAttrib(e, 'face', st.fontFamily);\r
+ }\r
+\r
+ if (st.color) {\r
+ dom.setAttrib(e, 'mce_name', 'font');\r
+ dom.setAttrib(e, 'color', dom.toHex(st.color));\r
+ }\r
+\r
+ if (st.backgroundColor) {\r
+ dom.setAttrib(e, 'mce_name', 'font');\r
+ dom.setStyle(e, 'background-color', st.backgroundColor);\r
+ }\r
+ } else {\r
+ if (st.fontSize)\r
+ dom.setStyle(e, 'fontSize', fzn[inArray(fz, st.fontSize)]);\r
+ }\r
+\r
+ if (st.fontWeight == 'bold')\r
+ dom.setAttrib(e, 'mce_name', 'strong');\r
+\r
+ if (st.fontStyle == 'italic')\r
+ dom.setAttrib(e, 'mce_name', 'em');\r
+\r
+ if (st.textDecoration == 'underline')\r
+ dom.setAttrib(e, 'mce_name', 'u');\r
+\r
+ if (st.textDecoration == 'line-through')\r
+ dom.setAttrib(e, 'mce_name', 'strike');\r
+\r
+ if (st.verticalAlign == 'super')\r
+ dom.setAttrib(e, 'mce_name', 'sup');\r
+\r
+ if (st.verticalAlign == 'sub')\r
+ dom.setAttrib(e, 'mce_name', 'sub');\r
+\r
+ dom.setAttrib(e, 'mce_fixed', '1');\r
+ }\r
+ },\r
+\r
+ _patchSafari2x : function(ed) {\r
+ var t = this, setContent, getNode, dom = ed.dom, lr;\r
+\r
+ // Inline dialogs\r
+ if (ed.windowManager.onBeforeOpen) {\r
+ ed.windowManager.onBeforeOpen.add(function() {\r
+ r = ed.selection.getRng();\r
+ });\r
+ }\r
+\r
+ // Fake select on 2.x\r
+ ed.selection.select = function(n) {\r
+ this.getSel().setBaseAndExtent(n, 0, n, 1);\r
+ };\r
+\r
+ getNode = ed.selection.getNode;\r
+ ed.selection.getNode = function() {\r
+ return t.selElm || getNode.call(this);\r
+ };\r
+\r
+ // Fake range on Safari 2.x\r
+ ed.selection.getRng = function() {\r
+ var t = this, s = t.getSel(), d = ed.getDoc(), r, rb, ra, di;\r
+\r
+ // Fake range on Safari 2.x\r
+ if (s.anchorNode) {\r
+ r = d.createRange();\r
+\r
+ try {\r
+ // Setup before range\r
+ rb = d.createRange();\r
+ rb.setStart(s.anchorNode, s.anchorOffset);\r
+ rb.collapse(1);\r
+\r
+ // Setup after range\r
+ ra = d.createRange();\r
+ ra.setStart(s.focusNode, s.focusOffset);\r
+ ra.collapse(1);\r
+\r
+ // Setup start/end points by comparing locations\r
+ di = rb.compareBoundaryPoints(rb.START_TO_END, ra) < 0;\r
+ r.setStart(di ? s.anchorNode : s.focusNode, di ? s.anchorOffset : s.focusOffset);\r
+ r.setEnd(di ? s.focusNode : s.anchorNode, di ? s.focusOffset : s.anchorOffset);\r
+\r
+ lr = r;\r
+ } catch (ex) {\r
+ // Sometimes fails, at least we tried to do it by the book. I hope Safari 2.x will go disappear soooon!!!\r
+ }\r
+ }\r
+\r
+ return r || lr;\r
+ };\r
+\r
+ // Fix setContent so it works\r
+ setContent = ed.selection.setContent;\r
+ ed.selection.setContent = function(h, s) {\r
+ var r = this.getRng(), b;\r
+\r
+ try {\r
+ setContent.call(this, h, s);\r
+ } catch (ex) {\r
+ // Workaround for Safari 2.x\r
+ b = dom.create('body');\r
+ b.innerHTML = h;\r
+\r
+ each(b.childNodes, function(n) {\r
+ r.insertNode(n.cloneNode(true));\r
+ });\r
+ }\r
+ };\r
+ },\r
+\r
+ _insertBR : function(ed) {\r
+ var dom = ed.dom, s = ed.selection, r = s.getRng(), br;\r
+\r
+ // Insert BR element\r
+ r.insertNode(br = dom.create('br'));\r
+\r
+ // Place caret after BR\r
+ r.setStartAfter(br);\r
+ r.setEndAfter(br);\r
+ s.setRng(r);\r
+\r
+ // Could not place caret after BR then insert an nbsp entity and move the caret\r
+ if (s.getSel().focusNode == br.previousSibling) {\r
+ s.select(dom.insertAfter(dom.doc.createTextNode('\u00a0'), br));\r
+ s.collapse(1);\r
+ }\r
+\r
+ // Scroll to new position, scrollIntoView can't be used due to bug: http://bugs.webkit.org/show_bug.cgi?id=16117\r
+ ed.getWin().scrollTo(0, dom.getPos(s.getRng().startContainer).y);\r
+ }\r
+ });\r
+\r
+ // Register plugin\r
+ tinymce.PluginManager.add('safari', tinymce.plugins.Safari);\r
+})();\r
+\r
--- /dev/null
+(function(){tinymce.create('tinymce.plugins.Save',{init:function(ed,url){var t=this;t.editor=ed;ed.addCommand('mceSave',t._save,t);ed.addCommand('mceCancel',t._cancel,t);ed.addButton('save',{title:'save.save_desc',cmd:'mceSave'});ed.addButton('cancel',{title:'save.cancel_desc',cmd:'mceCancel'});ed.onNodeChange.add(t._nodeChange,t);ed.addShortcut('ctrl+s',ed.getLang('save.save_desc'),'mceSave');},getInfo:function(){return{longname:'Save',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/save',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_nodeChange:function(ed,cm,n){var ed=this.editor;if(ed.getParam('save_enablewhendirty')){cm.setDisabled('save',!ed.isDirty());cm.setDisabled('cancel',!ed.isDirty());}},_save:function(){var ed=this.editor,formObj,os,i,elementId;formObj=tinymce.DOM.get(ed.id).form||tinymce.DOM.getParent(ed.id,'form');if(ed.getParam("save_enablewhendirty")&&!ed.isDirty())return;tinyMCE.triggerSave();if(os=ed.getParam("save_onsavecallback")){if(ed.execCallback('save_onsavecallback',ed)){ed.startContent=tinymce.trim(ed.getContent({format:'raw'}));ed.nodeChanged();}return;}if(formObj){ed.isNotDirty=true;if(formObj.onsubmit==null||formObj.onsubmit()!=false)formObj.submit();ed.nodeChanged();}else ed.windowManager.alert("Error: No form element found.");},_cancel:function(){var ed=this.editor,os,h=tinymce.trim(ed.startContent);if(os=ed.getParam("save_oncancelcallback")){ed.execCallback('save_oncancelcallback',ed);return;}ed.setContent(h);ed.undoManager.clear();ed.nodeChanged();}});tinymce.PluginManager.add('save',tinymce.plugins.Save);})();
\ No newline at end of file
--- /dev/null
+/**\r
+ * $Id: editor_plugin_src.js 851 2008-05-26 15:38:49Z spocke $\r
+ *\r
+ * @author Moxiecode\r
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+(function() {\r
+ tinymce.create('tinymce.plugins.Save', {\r
+ init : function(ed, url) {\r
+ var t = this;\r
+\r
+ t.editor = ed;\r
+\r
+ // Register commands\r
+ ed.addCommand('mceSave', t._save, t);\r
+ ed.addCommand('mceCancel', t._cancel, t);\r
+\r
+ // Register buttons\r
+ ed.addButton('save', {title : 'save.save_desc', cmd : 'mceSave'});\r
+ ed.addButton('cancel', {title : 'save.cancel_desc', cmd : 'mceCancel'});\r
+\r
+ ed.onNodeChange.add(t._nodeChange, t);\r
+ ed.addShortcut('ctrl+s', ed.getLang('save.save_desc'), 'mceSave');\r
+ },\r
+\r
+ getInfo : function() {\r
+ return {\r
+ longname : 'Save',\r
+ author : 'Moxiecode Systems AB',\r
+ authorurl : 'http://tinymce.moxiecode.com',\r
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/save',\r
+ version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+ };\r
+ },\r
+\r
+ // Private methods\r
+\r
+ _nodeChange : function(ed, cm, n) {\r
+ var ed = this.editor;\r
+\r
+ if (ed.getParam('save_enablewhendirty')) {\r
+ cm.setDisabled('save', !ed.isDirty());\r
+ cm.setDisabled('cancel', !ed.isDirty());\r
+ }\r
+ },\r
+\r
+ // Private methods\r
+\r
+ _save : function() {\r
+ var ed = this.editor, formObj, os, i, elementId;\r
+\r
+ formObj = tinymce.DOM.get(ed.id).form || tinymce.DOM.getParent(ed.id, 'form');\r
+\r
+ if (ed.getParam("save_enablewhendirty") && !ed.isDirty())\r
+ return;\r
+\r
+ tinyMCE.triggerSave();\r
+\r
+ // Use callback instead\r
+ if (os = ed.getParam("save_onsavecallback")) {\r
+ if (ed.execCallback('save_onsavecallback', ed)) {\r
+ ed.startContent = tinymce.trim(ed.getContent({format : 'raw'}));\r
+ ed.nodeChanged();\r
+ }\r
+\r
+ return;\r
+ }\r
+\r
+ if (formObj) {\r
+ ed.isNotDirty = true;\r
+\r
+ if (formObj.onsubmit == null || formObj.onsubmit() != false)\r
+ formObj.submit();\r
+\r
+ ed.nodeChanged();\r
+ } else\r
+ ed.windowManager.alert("Error: No form element found.");\r
+ },\r
+\r
+ _cancel : function() {\r
+ var ed = this.editor, os, h = tinymce.trim(ed.startContent);\r
+\r
+ // Use callback instead\r
+ if (os = ed.getParam("save_oncancelcallback")) {\r
+ ed.execCallback('save_oncancelcallback', ed);\r
+ return;\r
+ }\r
+\r
+ ed.setContent(h);\r
+ ed.undoManager.clear();\r
+ ed.nodeChanged();\r
+ }\r
+ });\r
+\r
+ // Register plugin\r
+ tinymce.PluginManager.add('save', tinymce.plugins.Save);\r
+})();
\ No newline at end of file
--- /dev/null
+.panel_wrapper {height:85px;}\r
+.panel_wrapper div.current {height:85px;}\r
+\r
+/* IE */\r
+* html .panel_wrapper {height:100px;}\r
+* html .panel_wrapper div.current {height:100px;}\r
--- /dev/null
+(function(){tinymce.create('tinymce.plugins.SearchReplacePlugin',{init:function(ed,url){function open(m){ed.windowManager.open({file:url+'/searchreplace.htm',width:420+parseInt(ed.getLang('searchreplace.delta_width',0)),height:160+parseInt(ed.getLang('searchreplace.delta_height',0)),inline:1,auto_focus:0},{mode:m,search_string:ed.selection.getContent({format:'text'}),plugin_url:url});};ed.addCommand('mceSearch',function(){open('search');});ed.addCommand('mceReplace',function(){open('replace');});ed.addButton('search',{title:'searchreplace.search_desc',cmd:'mceSearch'});ed.addButton('replace',{title:'searchreplace.replace_desc',cmd:'mceReplace'});ed.addShortcut('ctrl+f','searchreplace.search_desc','mceSearch');},getInfo:function(){return{longname:'Search/Replace',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/searchreplace',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('searchreplace',tinymce.plugins.SearchReplacePlugin);})();
\ No newline at end of file
--- /dev/null
+/**\r
+ * $Id: editor_plugin_src.js 686 2008-03-09 18:13:49Z spocke $\r
+ *\r
+ * @author Moxiecode\r
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+(function() {\r
+ tinymce.create('tinymce.plugins.SearchReplacePlugin', {\r
+ init : function(ed, url) {\r
+ function open(m) {\r
+ ed.windowManager.open({\r
+ file : url + '/searchreplace.htm',\r
+ width : 420 + parseInt(ed.getLang('searchreplace.delta_width', 0)),\r
+ height : 160 + parseInt(ed.getLang('searchreplace.delta_height', 0)),\r
+ inline : 1,\r
+ auto_focus : 0\r
+ }, {\r
+ mode : m,\r
+ search_string : ed.selection.getContent({format : 'text'}),\r
+ plugin_url : url\r
+ });\r
+ };\r
+\r
+ // Register commands\r
+ ed.addCommand('mceSearch', function() {\r
+ open('search');\r
+ });\r
+\r
+ ed.addCommand('mceReplace', function() {\r
+ open('replace');\r
+ });\r
+\r
+ // Register buttons\r
+ ed.addButton('search', {title : 'searchreplace.search_desc', cmd : 'mceSearch'});\r
+ ed.addButton('replace', {title : 'searchreplace.replace_desc', cmd : 'mceReplace'});\r
+\r
+ ed.addShortcut('ctrl+f', 'searchreplace.search_desc', 'mceSearch');\r
+ },\r
+\r
+ getInfo : function() {\r
+ return {\r
+ longname : 'Search/Replace',\r
+ author : 'Moxiecode Systems AB',\r
+ authorurl : 'http://tinymce.moxiecode.com',\r
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/searchreplace',\r
+ version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+ };\r
+ }\r
+ });\r
+\r
+ // Register plugin\r
+ tinymce.PluginManager.add('searchreplace', tinymce.plugins.SearchReplacePlugin);\r
+})();
\ No newline at end of file
--- /dev/null
+tinyMCEPopup.requireLangPack();\r
+\r
+var SearchReplaceDialog = {\r
+ init : function(ed) {\r
+ var f = document.forms[0], m = tinyMCEPopup.getWindowArg("mode");\r
+\r
+ this.switchMode(m);\r
+\r
+ f[m + '_panel_searchstring'].value = tinyMCEPopup.getWindowArg("search_string");\r
+\r
+ // Focus input field\r
+ f[m + '_panel_searchstring'].focus();\r
+ },\r
+\r
+ switchMode : function(m) {\r
+ var f, lm = this.lastMode;\r
+\r
+ if (lm != m) {\r
+ f = document.forms[0];\r
+\r
+ if (lm) {\r
+ f[m + '_panel_searchstring'].value = f[lm + '_panel_searchstring'].value;\r
+ f[m + '_panel_backwardsu'].checked = f[lm + '_panel_backwardsu'].checked;\r
+ f[m + '_panel_backwardsd'].checked = f[lm + '_panel_backwardsd'].checked;\r
+ f[m + '_panel_casesensitivebox'].checked = f[lm + '_panel_casesensitivebox'].checked;\r
+ }\r
+\r
+ mcTabs.displayTab(m + '_tab', m + '_panel');\r
+ document.getElementById("replaceBtn").style.display = (m == "replace") ? "inline" : "none";\r
+ document.getElementById("replaceAllBtn").style.display = (m == "replace") ? "inline" : "none";\r
+ this.lastMode = m;\r
+ }\r
+ },\r
+\r
+ searchNext : function(a) {\r
+ var ed = tinyMCEPopup.editor, se = ed.selection, r = se.getRng(), f, m = this.lastMode, s, b, fl = 0, w = ed.getWin(), wm = ed.windowManager, fo = 0;\r
+\r
+ // Get input\r
+ f = document.forms[0];\r
+ s = f[m + '_panel_searchstring'].value;\r
+ b = f[m + '_panel_backwardsu'].checked;\r
+ ca = f[m + '_panel_casesensitivebox'].checked;\r
+ rs = f['replace_panel_replacestring'].value;\r
+\r
+ function fix() {\r
+ // Correct Firefox graphics glitches\r
+ r = se.getRng().cloneRange();\r
+ ed.getDoc().execCommand('SelectAll', false, null);\r
+ se.setRng(r);\r
+ };\r
+\r
+ function replace() {\r
+ if (tinymce.isIE)\r
+ ed.selection.getRng().duplicate().pasteHTML(rs); // Needs to be duplicated due to selection bug in IE\r
+ else\r
+ ed.getDoc().execCommand('InsertHTML', false, rs);\r
+ };\r
+\r
+ // IE flags\r
+ if (ca)\r
+ fl = fl | 4;\r
+\r
+ switch (a) {\r
+ case 'all':\r
+ // Move caret to beginning of text\r
+ ed.execCommand('SelectAll');\r
+ ed.selection.collapse(true);\r
+\r
+ if (tinymce.isIE) {\r
+ while (r.findText(s, b ? -1 : 1, fl)) {\r
+ r.scrollIntoView();\r
+ r.select();\r
+ replace();\r
+ fo = 1;\r
+ }\r
+\r
+ tinyMCEPopup.storeSelection();\r
+ } else {\r
+ while (w.find(s, ca, b, false, false, false, false)) {\r
+ replace();\r
+ fo = 1;\r
+ }\r
+ }\r
+\r
+ if (fo)\r
+ tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.allreplaced'));\r
+ else\r
+ tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));\r
+\r
+ return;\r
+\r
+ case 'current':\r
+ if (!ed.selection.isCollapsed())\r
+ replace();\r
+\r
+ break;\r
+ }\r
+\r
+ se.collapse(b);\r
+ r = se.getRng();\r
+\r
+ // Whats the point\r
+ if (!s)\r
+ return;\r
+\r
+ if (tinymce.isIE) {\r
+ if (r.findText(s, b ? -1 : 1, fl)) {\r
+ r.scrollIntoView();\r
+ r.select();\r
+ } else\r
+ tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));\r
+\r
+ tinyMCEPopup.storeSelection();\r
+ } else {\r
+ if (!w.find(s, ca, b, false, false, false, false))\r
+ tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));\r
+ else\r
+ fix();\r
+ }\r
+ }\r
+};\r
+\r
+tinyMCEPopup.onInit.add(SearchReplaceDialog.init, SearchReplaceDialog);\r
--- /dev/null
+tinyMCE.addI18n('en.searchreplace_dlg',{\r
+searchnext_desc:"Find again",\r
+notfound:"The search has been completed. The search string could not be found.",\r
+search_title:"Find",\r
+replace_title:"Find/Replace",\r
+allreplaced:"All occurrences of the search string were replaced.",\r
+findwhat:"Find what",\r
+replacewith:"Replace with",\r
+direction:"Direction",\r
+up:"Up",\r
+down:"Down",\r
+mcase:"Match case",\r
+findnext:"Find next",\r
+replace:"Replace",\r
+replaceall:"Replace all"\r
+});
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+ <title>{#searchreplace_dlg.replace_title}</title>\r
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
+ <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
+ <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
+ <script type="text/javascript" src="js/searchreplace.js"></script>\r
+ <link rel="stylesheet" type="text/css" href="css/searchreplace.css" />\r
+ <base target="_self" />\r
+</head>\r
+<body style="display:none;">\r
+<form onsubmit="SearchReplaceDialog.searchNext('none');return false;" action="#">\r
+ <div class="tabs">\r
+ <ul>\r
+ <li id="search_tab"><span><a href="javascript:SearchReplaceDialog.switchMode('search');" onmousedown="return false;">{#searchreplace.search_desc}</a></span></li>\r
+ <li id="replace_tab"><span><a href="javascript:SearchReplaceDialog.switchMode('replace');" onmousedown="return false;">{#searchreplace_dlg.replace}</a></span></li>\r
+ </ul>\r
+ </div>\r
+\r
+ <div class="panel_wrapper">\r
+ <div id="search_panel" class="panel">\r
+ <table border="0" cellspacing="0" cellpadding="2">\r
+ <tr>\r
+ <td><label for="search_panel_searchstring">{#searchreplace_dlg.findwhat}</label></td>\r
+ <td><input type="text" id="search_panel_searchstring" name="search_panel_searchstring" style="width: 200px" /></td>\r
+ </tr>\r
+ <tr>\r
+ <td colspan="2">\r
+ <table border="0" cellspacing="0" cellpadding="0" class="direction">\r
+ <tr>\r
+ <td><label>{#searchreplace_dlg.direction}</label></td>\r
+ <td><input id="search_panel_backwardsu" name="search_panel_backwards" class="radio" type="radio" /></td>\r
+ <td><label for="search_panel_backwardsu">{#searchreplace_dlg.up}</label></td>\r
+ <td><input id="search_panel_backwardsd" name="search_panel_backwards" class="radio" type="radio" checked="checked" /></td>\r
+ <td><label for="search_panel_backwardsd">{#searchreplace_dlg.down}</label></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+ </tr>\r
+ <tr>\r
+ <td colspan="2">\r
+ <table border="0" cellspacing="0" cellpadding="0">\r
+ <tr>\r
+ <td><input id="search_panel_casesensitivebox" name="search_panel_casesensitivebox" class="checkbox" type="checkbox" /></td>\r
+ <td><label for="search_panel_casesensitivebox">{#searchreplace_dlg.mcase}</label></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+ </tr>\r
+ </table>\r
+ </div>\r
+\r
+ <div id="replace_panel" class="panel">\r
+ <table border="0" cellspacing="0" cellpadding="2">\r
+ <tr>\r
+ <td><label for="replace_panel_searchstring">{#searchreplace_dlg.findwhat}</label></td>\r
+ <td><input type="text" id="replace_panel_searchstring" name="replace_panel_searchstring" style="width: 200px" /></td>\r
+ </tr>\r
+ <tr>\r
+ <td><label for="replace_panel_replacestring">{#searchreplace_dlg.replacewith}</label></td>\r
+ <td><input type="text" id="replace_panel_replacestring" name="replace_panel_replacestring" style="width: 200px" /></td>\r
+ </tr>\r
+ <tr>\r
+ <td colspan="2">\r
+ <table border="0" cellspacing="0" cellpadding="0" class="direction">\r
+ <tr>\r
+ <td><label>{#searchreplace_dlg.direction}</label></td>\r
+ <td><input id="replace_panel_backwardsu" name="replace_panel_backwards" class="radio" type="radio" /></td>\r
+ <td><label for="replace_panel_backwardsu">{#searchreplace_dlg.up}</label></td>\r
+ <td><input id="replace_panel_backwardsd" name="replace_panel_backwards" class="radio" type="radio" checked="checked" /></td>\r
+ <td><label for="replace_panel_backwardsd">{#searchreplace_dlg.down}</label></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+ </tr>\r
+ <tr>\r
+ <td colspan="2">\r
+ <table border="0" cellspacing="0" cellpadding="0">\r
+ <tr>\r
+ <td><input id="replace_panel_casesensitivebox" name="replace_panel_casesensitivebox" class="checkbox" type="checkbox" /></td>\r
+ <td><label for="replace_panel_casesensitivebox">{#searchreplace_dlg.mcase}</label></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+ </tr>\r
+ </table>\r
+ </div>\r
+\r
+ </div>\r
+\r
+ <div class="mceActionPanel">\r
+ <div style="float: left">\r
+ <input type="submit" id="insert" name="insert" value="{#searchreplace_dlg.findnext}" />\r
+ <input type="button" class="button" id="replaceBtn" name="replaceBtn" value="{#searchreplace_dlg.replace}" onclick="SearchReplaceDialog.searchNext('current');" />\r
+ <input type="button" class="button" id="replaceAllBtn" name="replaceAllBtn" value="{#searchreplace_dlg.replaceall}" onclick="SearchReplaceDialog.searchNext('all');" />\r
+ </div>\r
+\r
+ <div style="float: right"> \r
+ <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
+ </div>\r
+ </div>\r
+</form>\r
+</body>\r
+</html>\r
--- /dev/null
+.mceItemHiddenSpellWord {background:url(../img/wline.gif) repeat-x bottom left; cursor:default;}\r
--- /dev/null
+(function(){var JSONRequest=tinymce.util.JSONRequest,each=tinymce.each,DOM=tinymce.DOM;tinymce.create('tinymce.plugins.SpellcheckerPlugin',{getInfo:function(){return{longname:'Spellchecker',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/spellchecker',version:tinymce.majorVersion+"."+tinymce.minorVersion};},init:function(ed,url){var t=this,cm;t.url=url;t.editor=ed;ed.addCommand('mceSpellCheck',function(){if(!t.active){ed.setProgressState(1);t._sendRPC('checkWords',[t.selectedLang,t._getWords()],function(r){if(r.length>0){t.active=1;t._markWords(r);ed.setProgressState(0);ed.nodeChanged();}else{ed.setProgressState(0);ed.windowManager.alert('spellchecker.no_mpell');}});}else t._done();});ed.onInit.add(function(){if(ed.settings.content_css!==false)ed.dom.loadCSS(url+'/css/content.css');});ed.onClick.add(t._showMenu,t);ed.onContextMenu.add(t._showMenu,t);ed.onBeforeGetContent.add(function(){if(t.active)t._removeWords();});ed.onNodeChange.add(function(ed,cm){cm.setActive('spellchecker',t.active);});ed.onSetContent.add(function(){t._done();});ed.onBeforeGetContent.add(function(){t._done();});ed.onBeforeExecCommand.add(function(ed,cmd){if(cmd=='mceFullScreen')t._done();});t.languages={};each(ed.getParam('spellchecker_languages','+English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv','hash'),function(v,k){if(k.indexOf('+')===0){k=k.substring(1);t.selectedLang=v;}t.languages[k]=v;});},createControl:function(n,cm){var t=this,c,ed=t.editor;if(n=='spellchecker'){c=cm.createSplitButton(n,{title:'spellchecker.desc',cmd:'mceSpellCheck',scope:t});c.onRenderMenu.add(function(c,m){m.add({title:'spellchecker.langs','class':'mceMenuItemTitle'}).setDisabled(1);each(t.languages,function(v,k){var o={icon:1},mi;o.onclick=function(){mi.setSelected(1);t.selectedItem.setSelected(0);t.selectedItem=mi;t.selectedLang=v;};o.title=k;mi=m.add(o);mi.setSelected(v==t.selectedLang);if(v==t.selectedLang)t.selectedItem=mi;})});return c;}},_walk:function(n,f){var d=this.editor.getDoc(),w;if(d.createTreeWalker){w=d.createTreeWalker(n,NodeFilter.SHOW_TEXT,null,false);while((n=w.nextNode())!=null)f.call(this,n);}else tinymce.walk(n,f,'childNodes');},_getSeparators:function(){var re='',i,str=this.editor.getParam('spellchecker_word_separator_chars','\\s!"#$%&()*+,-./:;<=>?@[\]^_{|}����������������\u201d\u201c');for(i=0;i<str.length;i++)re+='\\'+str.charAt(i);return re;},_getWords:function(){var ed=this.editor,wl=[],tx='',lo={};this._walk(ed.getBody(),function(n){if(n.nodeType==3)tx+=n.nodeValue+' ';});tx=tx.replace(new RegExp('([0-9]|['+this._getSeparators()+'])','g'),' ');tx=tinymce.trim(tx.replace(/(\s+)/g,' '));each(tx.split(' '),function(v){if(!lo[v]){wl.push(v);lo[v]=1;}});return wl;},_removeWords:function(w){var ed=this.editor,dom=ed.dom,se=ed.selection,b=se.getBookmark();each(dom.select('span').reverse(),function(n){if(n&&(dom.hasClass(n,'mceItemHiddenSpellWord')||dom.hasClass(n,'mceItemHidden'))){if(!w||dom.decode(n.innerHTML)==w)dom.remove(n,1);}});se.moveToBookmark(b);},_markWords:function(wl){var r1,r2,r3,r4,r5,w='',ed=this.editor,re=this._getSeparators(),dom=ed.dom,nl=[];var se=ed.selection,b=se.getBookmark();each(wl,function(v){w+=(w?'|':'')+v;});r1=new RegExp('(['+re+'])('+w+')(['+re+'])','g');r2=new RegExp('^('+w+')','g');r3=new RegExp('('+w+')(['+re+']?)$','g');r4=new RegExp('^('+w+')(['+re+']?)$','g');r5=new RegExp('('+w+')(['+re+'])','g');this._walk(this.editor.getBody(),function(n){if(n.nodeType==3){nl.push(n);}});each(nl,function(n){var v;if(n.nodeType==3){v=n.nodeValue;if(r1.test(v)||r2.test(v)||r3.test(v)||r4.test(v)){v=dom.encode(v);v=v.replace(r5,'<span class="mceItemHiddenSpellWord">$1</span>$2');v=v.replace(r3,'<span class="mceItemHiddenSpellWord">$1</span>$2');dom.replace(dom.create('span',{'class':'mceItemHidden'},v),n);}}});se.moveToBookmark(b);},_showMenu:function(ed,e){var t=this,ed=t.editor,m=t._menu,p1,dom=ed.dom,vp=dom.getViewPort(ed.getWin());if(!m){p1=DOM.getPos(ed.getContentAreaContainer());m=ed.controlManager.createDropMenu('spellcheckermenu',{offset_x:p1.x,offset_y:p1.y,'class':'mceNoIcons'});t._menu=m;}if(dom.hasClass(e.target,'mceItemHiddenSpellWord')){m.removeAll();m.add({title:'spellchecker.wait','class':'mceMenuItemTitle'}).setDisabled(1);t._sendRPC('getSuggestions',[t.selectedLang,dom.decode(e.target.innerHTML)],function(r){m.removeAll();if(r.length>0){m.add({title:'spellchecker.sug','class':'mceMenuItemTitle'}).setDisabled(1);each(r,function(v){m.add({title:v,onclick:function(){dom.replace(ed.getDoc().createTextNode(v),e.target);t._checkDone();}});});m.addSeparator();}else m.add({title:'spellchecker.no_sug','class':'mceMenuItemTitle'}).setDisabled(1);m.add({title:'spellchecker.ignore_word',onclick:function(){dom.remove(e.target,1);t._checkDone();}});m.add({title:'spellchecker.ignore_words',onclick:function(){t._removeWords(dom.decode(e.target.innerHTML));t._checkDone();}});m.update();});ed.selection.select(e.target);p1=dom.getPos(e.target);m.showMenu(p1.x,p1.y+e.target.offsetHeight-vp.y);return tinymce.dom.Event.cancel(e);}else m.hideMenu();},_checkDone:function(){var t=this,ed=t.editor,dom=ed.dom,o;each(dom.select('span'),function(n){if(n&&dom.hasClass(n,'mceItemHiddenSpellWord')){o=true;return false;}});if(!o)t._done();},_done:function(){var t=this,la=t.active;if(t.active){t.active=0;t._removeWords();if(t._menu)t._menu.hideMenu();if(la)t.editor.nodeChanged();}},_sendRPC:function(m,p,cb){var t=this,url=t.editor.getParam("spellchecker_rpc_url","{backend}");if(url=='{backend}'){t.editor.setProgressState(0);alert('Please specify: spellchecker_rpc_url');return;}JSONRequest.sendRPC({url:url,method:m,params:p,success:cb,error:function(e,x){t.editor.setProgressState(0);t.editor.windowManager.alert(e.errstr||('Error response: '+x.responseText));}});}});tinymce.PluginManager.add('spellchecker',tinymce.plugins.SpellcheckerPlugin);})();
\ No newline at end of file
--- /dev/null
+/**\r
+ * $Id: editor_plugin_src.js 425 2007-11-21 15:17:39Z spocke $\r
+ *\r
+ * @author Moxiecode\r
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+(function() {\r
+ var JSONRequest = tinymce.util.JSONRequest, each = tinymce.each, DOM = tinymce.DOM;\r
+\r
+ tinymce.create('tinymce.plugins.SpellcheckerPlugin', {\r
+ getInfo : function() {\r
+ return {\r
+ longname : 'Spellchecker',\r
+ author : 'Moxiecode Systems AB',\r
+ authorurl : 'http://tinymce.moxiecode.com',\r
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/spellchecker',\r
+ version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+ };\r
+ },\r
+\r
+ init : function(ed, url) {\r
+ var t = this, cm;\r
+\r
+ t.url = url;\r
+ t.editor = ed;\r
+\r
+ // Register commands\r
+ ed.addCommand('mceSpellCheck', function() {\r
+ if (!t.active) {\r
+ ed.setProgressState(1);\r
+ t._sendRPC('checkWords', [t.selectedLang, t._getWords()], function(r) {\r
+ if (r.length > 0) {\r
+ t.active = 1;\r
+ t._markWords(r);\r
+ ed.setProgressState(0);\r
+ ed.nodeChanged();\r
+ } else {\r
+ ed.setProgressState(0);\r
+ ed.windowManager.alert('spellchecker.no_mpell');\r
+ }\r
+ });\r
+ } else\r
+ t._done();\r
+ });\r
+\r
+ ed.onInit.add(function() {\r
+ if (ed.settings.content_css !== false)\r
+ ed.dom.loadCSS(url + '/css/content.css');\r
+ });\r
+\r
+ ed.onClick.add(t._showMenu, t);\r
+ ed.onContextMenu.add(t._showMenu, t);\r
+ ed.onBeforeGetContent.add(function() {\r
+ if (t.active)\r
+ t._removeWords();\r
+ });\r
+\r
+ ed.onNodeChange.add(function(ed, cm) {\r
+ cm.setActive('spellchecker', t.active);\r
+ });\r
+\r
+ ed.onSetContent.add(function() {\r
+ t._done();\r
+ });\r
+\r
+ ed.onBeforeGetContent.add(function() {\r
+ t._done();\r
+ });\r
+\r
+ ed.onBeforeExecCommand.add(function(ed, cmd) {\r
+ if (cmd == 'mceFullScreen')\r
+ t._done();\r
+ });\r
+\r
+ // Find selected language\r
+ t.languages = {};\r
+ each(ed.getParam('spellchecker_languages', '+English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv', 'hash'), function(v, k) {\r
+ if (k.indexOf('+') === 0) {\r
+ k = k.substring(1);\r
+ t.selectedLang = v;\r
+ }\r
+\r
+ t.languages[k] = v;\r
+ });\r
+ },\r
+\r
+ createControl : function(n, cm) {\r
+ var t = this, c, ed = t.editor;\r
+\r
+ if (n == 'spellchecker') {\r
+ c = cm.createSplitButton(n, {title : 'spellchecker.desc', cmd : 'mceSpellCheck', scope : t});\r
+\r
+ c.onRenderMenu.add(function(c, m) {\r
+ m.add({title : 'spellchecker.langs', 'class' : 'mceMenuItemTitle'}).setDisabled(1);\r
+ each(t.languages, function(v, k) {\r
+ var o = {icon : 1}, mi;\r
+\r
+ o.onclick = function() {\r
+ mi.setSelected(1);\r
+ t.selectedItem.setSelected(0);\r
+ t.selectedItem = mi;\r
+ t.selectedLang = v;\r
+ };\r
+\r
+ o.title = k;\r
+ mi = m.add(o);\r
+ mi.setSelected(v == t.selectedLang);\r
+\r
+ if (v == t.selectedLang)\r
+ t.selectedItem = mi;\r
+ })\r
+ });\r
+\r
+ return c;\r
+ }\r
+ },\r
+\r
+ // Internal functions\r
+\r
+ _walk : function(n, f) {\r
+ var d = this.editor.getDoc(), w;\r
+\r
+ if (d.createTreeWalker) {\r
+ w = d.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, false);\r
+\r
+ while ((n = w.nextNode()) != null)\r
+ f.call(this, n);\r
+ } else\r
+ tinymce.walk(n, f, 'childNodes');\r
+ },\r
+\r
+ _getSeparators : function() {\r
+ var re = '', i, str = this.editor.getParam('spellchecker_word_separator_chars', '\\s!"#$%&()*+,-./:;<=>?@[\]^_{|}§©«®±¶·¸»¼½¾¿×÷¤\u201d\u201c');\r
+\r
+ // Build word separator regexp\r
+ for (i=0; i<str.length; i++)\r
+ re += '\\' + str.charAt(i);\r
+\r
+ return re;\r
+ },\r
+\r
+ _getWords : function() {\r
+ var ed = this.editor, wl = [], tx = '', lo = {};\r
+\r
+ // Get area text\r
+ this._walk(ed.getBody(), function(n) {\r
+ if (n.nodeType == 3)\r
+ tx += n.nodeValue + ' ';\r
+ });\r
+\r
+ // Split words by separator\r
+ tx = tx.replace(new RegExp('([0-9]|[' + this._getSeparators() + '])', 'g'), ' ');\r
+ tx = tinymce.trim(tx.replace(/(\s+)/g, ' '));\r
+\r
+ // Build word array and remove duplicates\r
+ each(tx.split(' '), function(v) {\r
+ if (!lo[v]) {\r
+ wl.push(v);\r
+ lo[v] = 1;\r
+ }\r
+ });\r
+\r
+ return wl;\r
+ },\r
+\r
+ _removeWords : function(w) {\r
+ var ed = this.editor, dom = ed.dom, se = ed.selection, b = se.getBookmark();\r
+\r
+ each(dom.select('span').reverse(), function(n) {\r
+ if (n && (dom.hasClass(n, 'mceItemHiddenSpellWord') || dom.hasClass(n, 'mceItemHidden'))) {\r
+ if (!w || dom.decode(n.innerHTML) == w)\r
+ dom.remove(n, 1);\r
+ }\r
+ });\r
+\r
+ se.moveToBookmark(b);\r
+ },\r
+\r
+ _markWords : function(wl) {\r
+ var r1, r2, r3, r4, r5, w = '', ed = this.editor, re = this._getSeparators(), dom = ed.dom, nl = [];\r
+ var se = ed.selection, b = se.getBookmark();\r
+\r
+ each(wl, function(v) {\r
+ w += (w ? '|' : '') + v;\r
+ });\r
+\r
+ r1 = new RegExp('([' + re + '])(' + w + ')([' + re + '])', 'g');\r
+ r2 = new RegExp('^(' + w + ')', 'g');\r
+ r3 = new RegExp('(' + w + ')([' + re + ']?)$', 'g');\r
+ r4 = new RegExp('^(' + w + ')([' + re + ']?)$', 'g');\r
+ r5 = new RegExp('(' + w + ')([' + re + '])', 'g');\r
+\r
+ // Collect all text nodes\r
+ this._walk(this.editor.getBody(), function(n) {\r
+ if (n.nodeType == 3) {\r
+ nl.push(n);\r
+ }\r
+ });\r
+\r
+ // Wrap incorrect words in spans\r
+ each(nl, function(n) {\r
+ var v;\r
+\r
+ if (n.nodeType == 3) {\r
+ v = n.nodeValue;\r
+\r
+ if (r1.test(v) || r2.test(v) || r3.test(v) || r4.test(v)) {\r
+ v = dom.encode(v);\r
+ v = v.replace(r5, '<span class="mceItemHiddenSpellWord">$1</span>$2');\r
+ v = v.replace(r3, '<span class="mceItemHiddenSpellWord">$1</span>$2');\r
+\r
+ dom.replace(dom.create('span', {'class' : 'mceItemHidden'}, v), n);\r
+ }\r
+ }\r
+ });\r
+\r
+ se.moveToBookmark(b);\r
+ },\r
+\r
+ _showMenu : function(ed, e) {\r
+ var t = this, ed = t.editor, m = t._menu, p1, dom = ed.dom, vp = dom.getViewPort(ed.getWin());\r
+\r
+ if (!m) {\r
+ p1 = DOM.getPos(ed.getContentAreaContainer());\r
+ //p2 = DOM.getPos(ed.getContainer());\r
+\r
+ m = ed.controlManager.createDropMenu('spellcheckermenu', {\r
+ offset_x : p1.x,\r
+ offset_y : p1.y,\r
+ 'class' : 'mceNoIcons'\r
+ });\r
+\r
+ t._menu = m;\r
+ }\r
+\r
+ if (dom.hasClass(e.target, 'mceItemHiddenSpellWord')) {\r
+ m.removeAll();\r
+ m.add({title : 'spellchecker.wait', 'class' : 'mceMenuItemTitle'}).setDisabled(1);\r
+\r
+ t._sendRPC('getSuggestions', [t.selectedLang, dom.decode(e.target.innerHTML)], function(r) {\r
+ m.removeAll();\r
+\r
+ if (r.length > 0) {\r
+ m.add({title : 'spellchecker.sug', 'class' : 'mceMenuItemTitle'}).setDisabled(1);\r
+ each(r, function(v) {\r
+ m.add({title : v, onclick : function() {\r
+ dom.replace(ed.getDoc().createTextNode(v), e.target);\r
+ t._checkDone();\r
+ }});\r
+ });\r
+\r
+ m.addSeparator();\r
+ } else\r
+ m.add({title : 'spellchecker.no_sug', 'class' : 'mceMenuItemTitle'}).setDisabled(1);\r
+\r
+ m.add({\r
+ title : 'spellchecker.ignore_word',\r
+ onclick : function() {\r
+ dom.remove(e.target, 1);\r
+ t._checkDone();\r
+ }\r
+ });\r
+\r
+ m.add({\r
+ title : 'spellchecker.ignore_words',\r
+ onclick : function() {\r
+ t._removeWords(dom.decode(e.target.innerHTML));\r
+ t._checkDone();\r
+ }\r
+ });\r
+\r
+ m.update();\r
+ });\r
+\r
+ ed.selection.select(e.target);\r
+ p1 = dom.getPos(e.target);\r
+ m.showMenu(p1.x, p1.y + e.target.offsetHeight - vp.y);\r
+\r
+ return tinymce.dom.Event.cancel(e);\r
+ } else\r
+ m.hideMenu();\r
+ },\r
+\r
+ _checkDone : function() {\r
+ var t = this, ed = t.editor, dom = ed.dom, o;\r
+\r
+ each(dom.select('span'), function(n) {\r
+ if (n && dom.hasClass(n, 'mceItemHiddenSpellWord')) {\r
+ o = true;\r
+ return false;\r
+ }\r
+ });\r
+\r
+ if (!o)\r
+ t._done();\r
+ },\r
+\r
+ _done : function() {\r
+ var t = this, la = t.active;\r
+\r
+ if (t.active) {\r
+ t.active = 0;\r
+ t._removeWords();\r
+\r
+ if (t._menu)\r
+ t._menu.hideMenu();\r
+\r
+ if (la)\r
+ t.editor.nodeChanged();\r
+ }\r
+ },\r
+\r
+ _sendRPC : function(m, p, cb) {\r
+ var t = this, url = t.editor.getParam("spellchecker_rpc_url", "{backend}");\r
+\r
+ if (url == '{backend}') {\r
+ t.editor.setProgressState(0);\r
+ alert('Please specify: spellchecker_rpc_url');\r
+ return;\r
+ }\r
+\r
+ JSONRequest.sendRPC({\r
+ url : url,\r
+ method : m,\r
+ params : p,\r
+ success : cb,\r
+ error : function(e, x) {\r
+ t.editor.setProgressState(0);\r
+ t.editor.windowManager.alert(e.errstr || ('Error response: ' + x.responseText));\r
+ }\r
+ });\r
+ }\r
+ });\r
+\r
+ // Register plugin\r
+ tinymce.PluginManager.add('spellchecker', tinymce.plugins.SpellcheckerPlugin);\r
+})();
\ No newline at end of file
--- /dev/null
+#text_font {width:250px;}\r
+#text_size {width:70px;}\r
+.mceAddSelectValue {background:#DDD;}\r
+select, #block_text_indent, #box_width, #box_height, #box_padding_top, #box_padding_right, #box_padding_bottom, #box_padding_left {width:70px;}\r
+#box_margin_top, #box_margin_right, #box_margin_bottom, #box_margin_left, #positioning_width, #positioning_height, #positioning_zindex {width:70px;}\r
+#positioning_placement_top, #positioning_placement_right, #positioning_placement_bottom, #positioning_placement_left {width:70px;}\r
+#positioning_clip_top, #positioning_clip_right, #positioning_clip_bottom, #positioning_clip_left {width:70px;}\r
+.panel_wrapper div.current {padding-top:10px;height:230px;}\r
+.delim {border-left:1px solid gray;}\r
+.tdelim {border-bottom:1px solid gray;}\r
+#block_display {width:145px;}\r
+#list_type {width:115px;}\r
+.disabled {background:#EEE;}\r
--- /dev/null
+(function(){tinymce.create('tinymce.plugins.StylePlugin',{init:function(ed,url){ed.addCommand('mceStyleProps',function(){ed.windowManager.open({file:url+'/props.htm',width:480+parseInt(ed.getLang('style.delta_width',0)),height:320+parseInt(ed.getLang('style.delta_height',0)),inline:1},{plugin_url:url,style_text:ed.selection.getNode().style.cssText});});ed.addCommand('mceSetElementStyle',function(ui,v){if(e=ed.selection.getNode()){ed.dom.setAttrib(e,'style',v);ed.execCommand('mceRepaint');}});ed.onNodeChange.add(function(ed,cm,n){cm.setDisabled('styleprops',n.nodeName==='BODY');});ed.addButton('styleprops',{title:'style.desc',cmd:'mceStyleProps'});},getInfo:function(){return{longname:'Style',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/style',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('style',tinymce.plugins.StylePlugin);})();
\ No newline at end of file
--- /dev/null
+/**\r
+ * $Id: editor_plugin_src.js 787 2008-04-10 11:40:57Z spocke $\r
+ *\r
+ * @author Moxiecode\r
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+(function() {\r
+ tinymce.create('tinymce.plugins.StylePlugin', {\r
+ init : function(ed, url) {\r
+ // Register commands\r
+ ed.addCommand('mceStyleProps', function() {\r
+ ed.windowManager.open({\r
+ file : url + '/props.htm',\r
+ width : 480 + parseInt(ed.getLang('style.delta_width', 0)),\r
+ height : 320 + parseInt(ed.getLang('style.delta_height', 0)),\r
+ inline : 1\r
+ }, {\r
+ plugin_url : url,\r
+ style_text : ed.selection.getNode().style.cssText\r
+ });\r
+ });\r
+\r
+ ed.addCommand('mceSetElementStyle', function(ui, v) {\r
+ if (e = ed.selection.getNode()) {\r
+ ed.dom.setAttrib(e, 'style', v);\r
+ ed.execCommand('mceRepaint');\r
+ }\r
+ });\r
+\r
+ ed.onNodeChange.add(function(ed, cm, n) {\r
+ cm.setDisabled('styleprops', n.nodeName === 'BODY');\r
+ });\r
+\r
+ // Register buttons\r
+ ed.addButton('styleprops', {title : 'style.desc', cmd : 'mceStyleProps'});\r
+ },\r
+\r
+ getInfo : function() {\r
+ return {\r
+ longname : 'Style',\r
+ author : 'Moxiecode Systems AB',\r
+ authorurl : 'http://tinymce.moxiecode.com',\r
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/style',\r
+ version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+ };\r
+ }\r
+ });\r
+\r
+ // Register plugin\r
+ tinymce.PluginManager.add('style', tinymce.plugins.StylePlugin);\r
+})();
\ No newline at end of file
--- /dev/null
+tinyMCEPopup.requireLangPack();\r
+\r
+var defaultFonts = "" + \r
+ "Arial, Helvetica, sans-serif=Arial, Helvetica, sans-serif;" + \r
+ "Times New Roman, Times, serif=Times New Roman, Times, serif;" + \r
+ "Courier New, Courier, mono=Courier New, Courier, mono;" + \r
+ "Times New Roman, Times, serif=Times New Roman, Times, serif;" + \r
+ "Georgia, Times New Roman, Times, serif=Georgia, Times New Roman, Times, serif;" + \r
+ "Verdana, Arial, Helvetica, sans-serif=Verdana, Arial, Helvetica, sans-serif;" + \r
+ "Geneva, Arial, Helvetica, sans-serif=Geneva, Arial, Helvetica, sans-serif";\r
+\r
+var defaultSizes = "9;10;12;14;16;18;24;xx-small;x-small;small;medium;large;x-large;xx-large;smaller;larger";\r
+var defaultMeasurement = "+pixels=px;points=pt;em;in;cm;mm;picas;ems;exs;%";\r
+var defaultSpacingMeasurement = "pixels=px;points=pt;in;cm;mm;picas;+ems;exs;%";\r
+var defaultIndentMeasurement = "pixels=px;+points=pt;in;cm;mm;picas;ems;exs;%";\r
+var defaultWeight = "normal;bold;bolder;lighter;100;200;300;400;500;600;700;800;900";\r
+var defaultTextStyle = "normal;italic;oblique";\r
+var defaultVariant = "normal;small-caps";\r
+var defaultLineHeight = "normal";\r
+var defaultAttachment = "fixed;scroll";\r
+var defaultRepeat = "no-repeat;repeat;repeat-x;repeat-y";\r
+var defaultPosH = "left;center;right";\r
+var defaultPosV = "top;center;bottom";\r
+var defaultVAlign = "baseline;sub;super;top;text-top;middle;bottom;text-bottom";\r
+var defaultDisplay = "inline;block;list-item;run-in;compact;marker;table;inline-table;table-row-group;table-header-group;table-footer-group;table-row;table-column-group;table-column;table-cell;table-caption;none";\r
+var defaultBorderStyle = "none;solid;dashed;dotted;double;groove;ridge;inset;outset";\r
+var defaultBorderWidth = "thin;medium;thick";\r
+var defaultListType = "disc;circle;square;decimal;lower-roman;upper-roman;lower-alpha;upper-alpha;none";\r
+\r
+function init() {\r
+ var ce = document.getElementById('container'), h;\r
+\r
+ ce.style.cssText = tinyMCEPopup.getWindowArg('style_text');\r
+\r
+ h = getBrowserHTML('background_image_browser','background_image','image','advimage');\r
+ document.getElementById("background_image_browser").innerHTML = h;\r
+\r
+ document.getElementById('text_color_pickcontainer').innerHTML = getColorPickerHTML('text_color_pick','text_color');\r
+ document.getElementById('background_color_pickcontainer').innerHTML = getColorPickerHTML('background_color_pick','background_color');\r
+ document.getElementById('border_color_top_pickcontainer').innerHTML = getColorPickerHTML('border_color_top_pick','border_color_top');\r
+ document.getElementById('border_color_right_pickcontainer').innerHTML = getColorPickerHTML('border_color_right_pick','border_color_right');\r
+ document.getElementById('border_color_bottom_pickcontainer').innerHTML = getColorPickerHTML('border_color_bottom_pick','border_color_bottom');\r
+ document.getElementById('border_color_left_pickcontainer').innerHTML = getColorPickerHTML('border_color_left_pick','border_color_left');\r
+\r
+ fillSelect(0, 'text_font', 'style_font', defaultFonts, ';', true);\r
+ fillSelect(0, 'text_size', 'style_font_size', defaultSizes, ';', true);\r
+ fillSelect(0, 'text_size_measurement', 'style_font_size_measurement', defaultMeasurement, ';', true);\r
+ fillSelect(0, 'text_case', 'style_text_case', "capitalize;uppercase;lowercase", ';', true);\r
+ fillSelect(0, 'text_weight', 'style_font_weight', defaultWeight, ';', true);\r
+ fillSelect(0, 'text_style', 'style_font_style', defaultTextStyle, ';', true);\r
+ fillSelect(0, 'text_variant', 'style_font_variant', defaultVariant, ';', true);\r
+ fillSelect(0, 'text_lineheight', 'style_font_line_height', defaultLineHeight, ';', true);\r
+ fillSelect(0, 'text_lineheight_measurement', 'style_font_line_height_measurement', defaultMeasurement, ';', true);\r
+\r
+ fillSelect(0, 'background_attachment', 'style_background_attachment', defaultAttachment, ';', true);\r
+ fillSelect(0, 'background_repeat', 'style_background_repeat', defaultRepeat, ';', true);\r
+\r
+ fillSelect(0, 'background_hpos_measurement', 'style_background_hpos_measurement', defaultMeasurement, ';', true);\r
+ fillSelect(0, 'background_vpos_measurement', 'style_background_vpos_measurement', defaultMeasurement, ';', true);\r
+\r
+ fillSelect(0, 'background_hpos', 'style_background_hpos', defaultPosH, ';', true);\r
+ fillSelect(0, 'background_vpos', 'style_background_vpos', defaultPosV, ';', true);\r
+\r
+ fillSelect(0, 'block_wordspacing', 'style_wordspacing', 'normal', ';', true);\r
+ fillSelect(0, 'block_wordspacing_measurement', 'style_wordspacing_measurement', defaultSpacingMeasurement, ';', true);\r
+ fillSelect(0, 'block_letterspacing', 'style_letterspacing', 'normal', ';', true);\r
+ fillSelect(0, 'block_letterspacing_measurement', 'style_letterspacing_measurement', defaultSpacingMeasurement, ';', true);\r
+ fillSelect(0, 'block_vertical_alignment', 'style_vertical_alignment', defaultVAlign, ';', true);\r
+ fillSelect(0, 'block_text_align', 'style_text_align', "left;right;center;justify", ';', true);\r
+ fillSelect(0, 'block_whitespace', 'style_whitespace', "normal;pre;nowrap", ';', true);\r
+ fillSelect(0, 'block_display', 'style_display', defaultDisplay, ';', true);\r
+ fillSelect(0, 'block_text_indent_measurement', 'style_text_indent_measurement', defaultIndentMeasurement, ';', true);\r
+\r
+ fillSelect(0, 'box_width_measurement', 'style_box_width_measurement', defaultMeasurement, ';', true);\r
+ fillSelect(0, 'box_height_measurement', 'style_box_height_measurement', defaultMeasurement, ';', true);\r
+ fillSelect(0, 'box_float', 'style_float', 'left;right;none', ';', true);\r
+ fillSelect(0, 'box_clear', 'style_clear', 'left;right;both;none', ';', true);\r
+ fillSelect(0, 'box_padding_left_measurement', 'style_padding_left_measurement', defaultMeasurement, ';', true);\r
+ fillSelect(0, 'box_padding_top_measurement', 'style_padding_top_measurement', defaultMeasurement, ';', true);\r
+ fillSelect(0, 'box_padding_bottom_measurement', 'style_padding_bottom_measurement', defaultMeasurement, ';', true);\r
+ fillSelect(0, 'box_padding_right_measurement', 'style_padding_right_measurement', defaultMeasurement, ';', true);\r
+ fillSelect(0, 'box_margin_left_measurement', 'style_margin_left_measurement', defaultMeasurement, ';', true);\r
+ fillSelect(0, 'box_margin_top_measurement', 'style_margin_top_measurement', defaultMeasurement, ';', true);\r
+ fillSelect(0, 'box_margin_bottom_measurement', 'style_margin_bottom_measurement', defaultMeasurement, ';', true);\r
+ fillSelect(0, 'box_margin_right_measurement', 'style_margin_right_measurement', defaultMeasurement, ';', true);\r
+\r
+ fillSelect(0, 'border_style_top', 'style_border_style_top', defaultBorderStyle, ';', true);\r
+ fillSelect(0, 'border_style_right', 'style_border_style_right', defaultBorderStyle, ';', true);\r
+ fillSelect(0, 'border_style_bottom', 'style_border_style_bottom', defaultBorderStyle, ';', true);\r
+ fillSelect(0, 'border_style_left', 'style_border_style_left', defaultBorderStyle, ';', true);\r
+\r
+ fillSelect(0, 'border_width_top', 'style_border_width_top', defaultBorderWidth, ';', true);\r
+ fillSelect(0, 'border_width_right', 'style_border_width_right', defaultBorderWidth, ';', true);\r
+ fillSelect(0, 'border_width_bottom', 'style_border_width_bottom', defaultBorderWidth, ';', true);\r
+ fillSelect(0, 'border_width_left', 'style_border_width_left', defaultBorderWidth, ';', true);\r
+\r
+ fillSelect(0, 'border_width_top_measurement', 'style_border_width_top_measurement', defaultMeasurement, ';', true);\r
+ fillSelect(0, 'border_width_right_measurement', 'style_border_width_right_measurement', defaultMeasurement, ';', true);\r
+ fillSelect(0, 'border_width_bottom_measurement', 'style_border_width_bottom_measurement', defaultMeasurement, ';', true);\r
+ fillSelect(0, 'border_width_left_measurement', 'style_border_width_left_measurement', defaultMeasurement, ';', true);\r
+\r
+ fillSelect(0, 'list_type', 'style_list_type', defaultListType, ';', true);\r
+ fillSelect(0, 'list_position', 'style_list_position', "inside;outside", ';', true);\r
+\r
+ fillSelect(0, 'positioning_type', 'style_positioning_type', "absolute;relative;static", ';', true);\r
+ fillSelect(0, 'positioning_visibility', 'style_positioning_visibility', "inherit;visible;hidden", ';', true);\r
+\r
+ fillSelect(0, 'positioning_width_measurement', 'style_positioning_width_measurement', defaultMeasurement, ';', true);\r
+ fillSelect(0, 'positioning_height_measurement', 'style_positioning_height_measurement', defaultMeasurement, ';', true);\r
+ fillSelect(0, 'positioning_overflow', 'style_positioning_overflow', "visible;hidden;scroll;auto", ';', true);\r
+\r
+ fillSelect(0, 'positioning_placement_top_measurement', 'style_positioning_placement_top_measurement', defaultMeasurement, ';', true);\r
+ fillSelect(0, 'positioning_placement_right_measurement', 'style_positioning_placement_right_measurement', defaultMeasurement, ';', true);\r
+ fillSelect(0, 'positioning_placement_bottom_measurement', 'style_positioning_placement_bottom_measurement', defaultMeasurement, ';', true);\r
+ fillSelect(0, 'positioning_placement_left_measurement', 'style_positioning_placement_left_measurement', defaultMeasurement, ';', true);\r
+\r
+ fillSelect(0, 'positioning_clip_top_measurement', 'style_positioning_clip_top_measurement', defaultMeasurement, ';', true);\r
+ fillSelect(0, 'positioning_clip_right_measurement', 'style_positioning_clip_right_measurement', defaultMeasurement, ';', true);\r
+ fillSelect(0, 'positioning_clip_bottom_measurement', 'style_positioning_clip_bottom_measurement', defaultMeasurement, ';', true);\r
+ fillSelect(0, 'positioning_clip_left_measurement', 'style_positioning_clip_left_measurement', defaultMeasurement, ';', true);\r
+\r
+ TinyMCE_EditableSelects.init();\r
+ setupFormData();\r
+ showDisabledControls();\r
+}\r
+\r
+function setupFormData() {\r
+ var ce = document.getElementById('container'), f = document.forms[0], s, b, i;\r
+\r
+ // Setup text fields\r
+\r
+ selectByValue(f, 'text_font', ce.style.fontFamily, true, true);\r
+ selectByValue(f, 'text_size', getNum(ce.style.fontSize), true, true);\r
+ selectByValue(f, 'text_size_measurement', getMeasurement(ce.style.fontSize));\r
+ selectByValue(f, 'text_weight', ce.style.fontWeight, true, true);\r
+ selectByValue(f, 'text_style', ce.style.fontStyle, true, true);\r
+ selectByValue(f, 'text_lineheight', getNum(ce.style.lineHeight), true, true);\r
+ selectByValue(f, 'text_lineheight_measurement', getMeasurement(ce.style.lineHeight));\r
+ selectByValue(f, 'text_case', ce.style.textTransform, true, true);\r
+ selectByValue(f, 'text_variant', ce.style.fontVariant, true, true);\r
+ f.text_color.value = tinyMCEPopup.editor.dom.toHex(ce.style.color);\r
+ updateColor('text_color_pick', 'text_color');\r
+ f.text_underline.checked = inStr(ce.style.textDecoration, 'underline');\r
+ f.text_overline.checked = inStr(ce.style.textDecoration, 'overline');\r
+ f.text_linethrough.checked = inStr(ce.style.textDecoration, 'line-through');\r
+ f.text_blink.checked = inStr(ce.style.textDecoration, 'blink');\r
+\r
+ // Setup background fields\r
+\r
+ f.background_color.value = tinyMCEPopup.editor.dom.toHex(ce.style.backgroundColor);\r
+ updateColor('background_color_pick', 'background_color');\r
+ f.background_image.value = ce.style.backgroundImage.replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");\r
+ selectByValue(f, 'background_repeat', ce.style.backgroundRepeat, true, true);\r
+ selectByValue(f, 'background_attachment', ce.style.backgroundAttachment, true, true);\r
+ selectByValue(f, 'background_hpos', getNum(getVal(ce.style.backgroundPosition, 0)), true, true);\r
+ selectByValue(f, 'background_hpos_measurement', getMeasurement(getVal(ce.style.backgroundPosition, 0)));\r
+ selectByValue(f, 'background_vpos', getNum(getVal(ce.style.backgroundPosition, 1)), true, true);\r
+ selectByValue(f, 'background_vpos_measurement', getMeasurement(getVal(ce.style.backgroundPosition, 1)));\r
+\r
+ // Setup block fields\r
+\r
+ selectByValue(f, 'block_wordspacing', getNum(ce.style.wordSpacing), true, true);\r
+ selectByValue(f, 'block_wordspacing_measurement', getMeasurement(ce.style.wordSpacing));\r
+ selectByValue(f, 'block_letterspacing', getNum(ce.style.letterSpacing), true, true);\r
+ selectByValue(f, 'block_letterspacing_measurement', getMeasurement(ce.style.letterSpacing));\r
+ selectByValue(f, 'block_vertical_alignment', ce.style.verticalAlign, true, true);\r
+ selectByValue(f, 'block_text_align', ce.style.textAlign, true, true);\r
+ f.block_text_indent.value = getNum(ce.style.textIndent);\r
+ selectByValue(f, 'block_text_indent_measurement', getMeasurement(ce.style.textIndent));\r
+ selectByValue(f, 'block_whitespace', ce.style.whiteSpace, true, true);\r
+ selectByValue(f, 'block_display', ce.style.display, true, true);\r
+\r
+ // Setup box fields\r
+\r
+ f.box_width.value = getNum(ce.style.width);\r
+ selectByValue(f, 'box_width_measurement', getMeasurement(ce.style.width));\r
+\r
+ f.box_height.value = getNum(ce.style.height);\r
+ selectByValue(f, 'box_height_measurement', getMeasurement(ce.style.height));\r
+\r
+ if (tinymce.isGecko)\r
+ selectByValue(f, 'box_float', ce.style.cssFloat, true, true);\r
+ else\r
+ selectByValue(f, 'box_float', ce.style.styleFloat, true, true);\r
+\r
+ selectByValue(f, 'box_clear', ce.style.clear, true, true);\r
+\r
+ setupBox(f, ce, 'box_padding', 'padding', '');\r
+ setupBox(f, ce, 'box_margin', 'margin', '');\r
+\r
+ // Setup border fields\r
+\r
+ setupBox(f, ce, 'border_style', 'border', 'Style');\r
+ setupBox(f, ce, 'border_width', 'border', 'Width');\r
+ setupBox(f, ce, 'border_color', 'border', 'Color');\r
+\r
+ updateColor('border_color_top_pick', 'border_color_top');\r
+ updateColor('border_color_right_pick', 'border_color_right');\r
+ updateColor('border_color_bottom_pick', 'border_color_bottom');\r
+ updateColor('border_color_left_pick', 'border_color_left');\r
+\r
+ f.elements.border_color_top.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_top.value);\r
+ f.elements.border_color_right.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_right.value);\r
+ f.elements.border_color_bottom.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_bottom.value);\r
+ f.elements.border_color_left.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_left.value);\r
+\r
+ // Setup list fields\r
+\r
+ selectByValue(f, 'list_type', ce.style.listStyleType, true, true);\r
+ selectByValue(f, 'list_position', ce.style.listStylePosition, true, true);\r
+ f.list_bullet_image.value = ce.style.listStyleImage.replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");\r
+\r
+ // Setup box fields\r
+\r
+ selectByValue(f, 'positioning_type', ce.style.position, true, true);\r
+ selectByValue(f, 'positioning_visibility', ce.style.visibility, true, true);\r
+ selectByValue(f, 'positioning_overflow', ce.style.overflow, true, true);\r
+ f.positioning_zindex.value = ce.style.zIndex ? ce.style.zIndex : "";\r
+\r
+ f.positioning_width.value = getNum(ce.style.width);\r
+ selectByValue(f, 'positioning_width_measurement', getMeasurement(ce.style.width));\r
+\r
+ f.positioning_height.value = getNum(ce.style.height);\r
+ selectByValue(f, 'positioning_height_measurement', getMeasurement(ce.style.height));\r
+\r
+ setupBox(f, ce, 'positioning_placement', '', '', ['top', 'right', 'bottom', 'left']);\r
+\r
+ s = ce.style.clip.replace(new RegExp("rect\\('?([^']*)'?\\)", 'gi'), "$1");\r
+ s = s.replace(/,/g, ' ');\r
+\r
+ if (!hasEqualValues([getVal(s, 0), getVal(s, 1), getVal(s, 2), getVal(s, 3)])) {\r
+ f.positioning_clip_top.value = getNum(getVal(s, 0));\r
+ selectByValue(f, 'positioning_clip_top_measurement', getMeasurement(getVal(s, 0)));\r
+ f.positioning_clip_right.value = getNum(getVal(s, 1));\r
+ selectByValue(f, 'positioning_clip_right_measurement', getMeasurement(getVal(s, 1)));\r
+ f.positioning_clip_bottom.value = getNum(getVal(s, 2));\r
+ selectByValue(f, 'positioning_clip_bottom_measurement', getMeasurement(getVal(s, 2)));\r
+ f.positioning_clip_left.value = getNum(getVal(s, 3));\r
+ selectByValue(f, 'positioning_clip_left_measurement', getMeasurement(getVal(s, 3)));\r
+ } else {\r
+ f.positioning_clip_top.value = getNum(getVal(s, 0));\r
+ selectByValue(f, 'positioning_clip_top_measurement', getMeasurement(getVal(s, 0)));\r
+ f.positioning_clip_right.value = f.positioning_clip_bottom.value = f.positioning_clip_left.value;\r
+ }\r
+\r
+// setupBox(f, ce, '', 'border', 'Color');\r
+}\r
+\r
+function getMeasurement(s) {\r
+ return s.replace(/^([0-9]+)(.*)$/, "$2");\r
+}\r
+\r
+function getNum(s) {\r
+ if (new RegExp('^[0-9]+[a-z%]+$', 'gi').test(s))\r
+ return s.replace(/[^0-9]/g, '');\r
+\r
+ return s;\r
+}\r
+\r
+function inStr(s, n) {\r
+ return new RegExp(n, 'gi').test(s);\r
+}\r
+\r
+function getVal(s, i) {\r
+ var a = s.split(' ');\r
+\r
+ if (a.length > 1)\r
+ return a[i];\r
+\r
+ return "";\r
+}\r
+\r
+function setValue(f, n, v) {\r
+ if (f.elements[n].type == "text")\r
+ f.elements[n].value = v;\r
+ else\r
+ selectByValue(f, n, v, true, true);\r
+}\r
+\r
+function setupBox(f, ce, fp, pr, sf, b) {\r
+ if (typeof(b) == "undefined")\r
+ b = ['Top', 'Right', 'Bottom', 'Left'];\r
+\r
+ if (isSame(ce, pr, sf, b)) {\r
+ f.elements[fp + "_same"].checked = true;\r
+\r
+ setValue(f, fp + "_top", getNum(ce.style[pr + b[0] + sf]));\r
+ f.elements[fp + "_top"].disabled = false;\r
+\r
+ f.elements[fp + "_right"].value = "";\r
+ f.elements[fp + "_right"].disabled = true;\r
+ f.elements[fp + "_bottom"].value = "";\r
+ f.elements[fp + "_bottom"].disabled = true;\r
+ f.elements[fp + "_left"].value = "";\r
+ f.elements[fp + "_left"].disabled = true;\r
+\r
+ if (f.elements[fp + "_top_measurement"]) {\r
+ selectByValue(f, fp + '_top_measurement', getMeasurement(ce.style[pr + b[0] + sf]));\r
+ f.elements[fp + "_left_measurement"].disabled = true;\r
+ f.elements[fp + "_bottom_measurement"].disabled = true;\r
+ f.elements[fp + "_right_measurement"].disabled = true;\r
+ }\r
+ } else {\r
+ f.elements[fp + "_same"].checked = false;\r
+\r
+ setValue(f, fp + "_top", getNum(ce.style[pr + b[0] + sf]));\r
+ f.elements[fp + "_top"].disabled = false;\r
+\r
+ setValue(f, fp + "_right", getNum(ce.style[pr + b[1] + sf]));\r
+ f.elements[fp + "_right"].disabled = false;\r
+\r
+ setValue(f, fp + "_bottom", getNum(ce.style[pr + b[2] + sf]));\r
+ f.elements[fp + "_bottom"].disabled = false;\r
+\r
+ setValue(f, fp + "_left", getNum(ce.style[pr + b[3] + sf]));\r
+ f.elements[fp + "_left"].disabled = false;\r
+\r
+ if (f.elements[fp + "_top_measurement"]) {\r
+ selectByValue(f, fp + '_top_measurement', getMeasurement(ce.style[pr + b[0] + sf]));\r
+ selectByValue(f, fp + '_right_measurement', getMeasurement(ce.style[pr + b[1] + sf]));\r
+ selectByValue(f, fp + '_bottom_measurement', getMeasurement(ce.style[pr + b[2] + sf]));\r
+ selectByValue(f, fp + '_left_measurement', getMeasurement(ce.style[pr + b[3] + sf]));\r
+ f.elements[fp + "_left_measurement"].disabled = false;\r
+ f.elements[fp + "_bottom_measurement"].disabled = false;\r
+ f.elements[fp + "_right_measurement"].disabled = false;\r
+ }\r
+ }\r
+}\r
+\r
+function isSame(e, pr, sf, b) {\r
+ var a = [], i, x;\r
+\r
+ if (typeof(b) == "undefined")\r
+ b = ['Top', 'Right', 'Bottom', 'Left'];\r
+\r
+ if (typeof(sf) == "undefined" || sf == null)\r
+ sf = "";\r
+\r
+ a[0] = e.style[pr + b[0] + sf];\r
+ a[1] = e.style[pr + b[1] + sf];\r
+ a[2] = e.style[pr + b[2] + sf];\r
+ a[3] = e.style[pr + b[3] + sf];\r
+\r
+ for (i=0; i<a.length; i++) {\r
+ if (a[i] == null)\r
+ return false;\r
+\r
+ for (x=0; x<a.length; x++) {\r
+ if (a[x] != a[i])\r
+ return false;\r
+ }\r
+ }\r
+\r
+ return true;\r
+};\r
+\r
+function hasEqualValues(a) {\r
+ var i, x;\r
+\r
+ for (i=0; i<a.length; i++) {\r
+ if (a[i] == null)\r
+ return false;\r
+\r
+ for (x=0; x<a.length; x++) {\r
+ if (a[x] != a[i])\r
+ return false;\r
+ }\r
+ }\r
+\r
+ return true;\r
+}\r
+\r
+function applyAction() {\r
+ var ce = document.getElementById('container'), ed = tinyMCEPopup.editor;\r
+\r
+ generateCSS();\r
+\r
+ tinyMCEPopup.restoreSelection();\r
+ ed.dom.setAttrib(ed.selection.getNode(), 'style', tinyMCEPopup.editor.dom.serializeStyle(tinyMCEPopup.editor.dom.parseStyle(ce.style.cssText)));\r
+}\r
+\r
+function updateAction() {\r
+ applyAction();\r
+ tinyMCEPopup.close();\r
+}\r
+\r
+function generateCSS() {\r
+ var ce = document.getElementById('container'), f = document.forms[0], num = new RegExp('[0-9]+', 'g'), s, t;\r
+\r
+ ce.style.cssText = "";\r
+\r
+ // Build text styles\r
+ ce.style.fontFamily = f.text_font.value;\r
+ ce.style.fontSize = f.text_size.value + (isNum(f.text_size.value) ? (f.text_size_measurement.value || 'px') : "");\r
+ ce.style.fontStyle = f.text_style.value;\r
+ ce.style.lineHeight = f.text_lineheight.value + (isNum(f.text_lineheight.value) ? f.text_lineheight_measurement.value : "");\r
+ ce.style.textTransform = f.text_case.value;\r
+ ce.style.fontWeight = f.text_weight.value;\r
+ ce.style.fontVariant = f.text_variant.value;\r
+ ce.style.color = f.text_color.value;\r
+\r
+ s = "";\r
+ s += f.text_underline.checked ? " underline" : "";\r
+ s += f.text_overline.checked ? " overline" : "";\r
+ s += f.text_linethrough.checked ? " line-through" : "";\r
+ s += f.text_blink.checked ? " blink" : "";\r
+ s = s.length > 0 ? s.substring(1) : s;\r
+\r
+ if (f.text_none.checked)\r
+ s = "none";\r
+\r
+ ce.style.textDecoration = s;\r
+\r
+ // Build background styles\r
+\r
+ ce.style.backgroundColor = f.background_color.value;\r
+ ce.style.backgroundImage = f.background_image.value != "" ? "url(" + f.background_image.value + ")" : "";\r
+ ce.style.backgroundRepeat = f.background_repeat.value;\r
+ ce.style.backgroundAttachment = f.background_attachment.value;\r
+\r
+ if (f.background_hpos.value != "") {\r
+ s = "";\r
+ s += f.background_hpos.value + (isNum(f.background_hpos.value) ? f.background_hpos_measurement.value : "") + " ";\r
+ s += f.background_vpos.value + (isNum(f.background_vpos.value) ? f.background_vpos_measurement.value : "");\r
+ ce.style.backgroundPosition = s;\r
+ }\r
+\r
+ // Build block styles\r
+\r
+ ce.style.wordSpacing = f.block_wordspacing.value + (isNum(f.block_wordspacing.value) ? f.block_wordspacing_measurement.value : "");\r
+ ce.style.letterSpacing = f.block_letterspacing.value + (isNum(f.block_letterspacing.value) ? f.block_letterspacing_measurement.value : "");\r
+ ce.style.verticalAlign = f.block_vertical_alignment.value;\r
+ ce.style.textAlign = f.block_text_align.value;\r
+ ce.style.textIndent = f.block_text_indent.value + (isNum(f.block_text_indent.value) ? f.block_text_indent_measurement.value : "");\r
+ ce.style.whiteSpace = f.block_whitespace.value;\r
+ ce.style.display = f.block_display.value;\r
+\r
+ // Build box styles\r
+\r
+ ce.style.width = f.box_width.value + (isNum(f.box_width.value) ? f.box_width_measurement.value : "");\r
+ ce.style.height = f.box_height.value + (isNum(f.box_height.value) ? f.box_height_measurement.value : "");\r
+ ce.style.styleFloat = f.box_float.value;\r
+\r
+ if (tinymce.isGecko)\r
+ ce.style.cssFloat = f.box_float.value;\r
+\r
+ ce.style.clear = f.box_clear.value;\r
+\r
+ if (!f.box_padding_same.checked) {\r
+ ce.style.paddingTop = f.box_padding_top.value + (isNum(f.box_padding_top.value) ? f.box_padding_top_measurement.value : "");\r
+ ce.style.paddingRight = f.box_padding_right.value + (isNum(f.box_padding_right.value) ? f.box_padding_right_measurement.value : "");\r
+ ce.style.paddingBottom = f.box_padding_bottom.value + (isNum(f.box_padding_bottom.value) ? f.box_padding_bottom_measurement.value : "");\r
+ ce.style.paddingLeft = f.box_padding_left.value + (isNum(f.box_padding_left.value) ? f.box_padding_left_measurement.value : "");\r
+ } else\r
+ ce.style.padding = f.box_padding_top.value + (isNum(f.box_padding_top.value) ? f.box_padding_top_measurement.value : ""); \r
+\r
+ if (!f.box_margin_same.checked) {\r
+ ce.style.marginTop = f.box_margin_top.value + (isNum(f.box_margin_top.value) ? f.box_margin_top_measurement.value : "");\r
+ ce.style.marginRight = f.box_margin_right.value + (isNum(f.box_margin_right.value) ? f.box_margin_right_measurement.value : "");\r
+ ce.style.marginBottom = f.box_margin_bottom.value + (isNum(f.box_margin_bottom.value) ? f.box_margin_bottom_measurement.value : "");\r
+ ce.style.marginLeft = f.box_margin_left.value + (isNum(f.box_margin_left.value) ? f.box_margin_left_measurement.value : "");\r
+ } else\r
+ ce.style.margin = f.box_margin_top.value + (isNum(f.box_margin_top.value) ? f.box_margin_top_measurement.value : ""); \r
+\r
+ // Build border styles\r
+\r
+ if (!f.border_style_same.checked) {\r
+ ce.style.borderTopStyle = f.border_style_top.value;\r
+ ce.style.borderRightStyle = f.border_style_right.value;\r
+ ce.style.borderBottomStyle = f.border_style_bottom.value;\r
+ ce.style.borderLeftStyle = f.border_style_left.value;\r
+ } else\r
+ ce.style.borderStyle = f.border_style_top.value;\r
+\r
+ if (!f.border_width_same.checked) {\r
+ ce.style.borderTopWidth = f.border_width_top.value + (isNum(f.border_width_top.value) ? f.border_width_top_measurement.value : "");\r
+ ce.style.borderRightWidth = f.border_width_right.value + (isNum(f.border_width_right.value) ? f.border_width_right_measurement.value : "");\r
+ ce.style.borderBottomWidth = f.border_width_bottom.value + (isNum(f.border_width_bottom.value) ? f.border_width_bottom_measurement.value : "");\r
+ ce.style.borderLeftWidth = f.border_width_left.value + (isNum(f.border_width_left.value) ? f.border_width_left_measurement.value : "");\r
+ } else\r
+ ce.style.borderWidth = f.border_width_top.value;\r
+\r
+ if (!f.border_color_same.checked) {\r
+ ce.style.borderTopColor = f.border_color_top.value;\r
+ ce.style.borderRightColor = f.border_color_right.value;\r
+ ce.style.borderBottomColor = f.border_color_bottom.value;\r
+ ce.style.borderLeftColor = f.border_color_left.value;\r
+ } else\r
+ ce.style.borderColor = f.border_color_top.value;\r
+\r
+ // Build list styles\r
+\r
+ ce.style.listStyleType = f.list_type.value;\r
+ ce.style.listStylePosition = f.list_position.value;\r
+ ce.style.listStyleImage = f.list_bullet_image.value != "" ? "url(" + f.list_bullet_image.value + ")" : "";\r
+\r
+ // Build positioning styles\r
+\r
+ ce.style.position = f.positioning_type.value;\r
+ ce.style.visibility = f.positioning_visibility.value;\r
+\r
+ if (ce.style.width == "")\r
+ ce.style.width = f.positioning_width.value + (isNum(f.positioning_width.value) ? f.positioning_width_measurement.value : "");\r
+\r
+ if (ce.style.height == "")\r
+ ce.style.height = f.positioning_height.value + (isNum(f.positioning_height.value) ? f.positioning_height_measurement.value : "");\r
+\r
+ ce.style.zIndex = f.positioning_zindex.value;\r
+ ce.style.overflow = f.positioning_overflow.value;\r
+\r
+ if (!f.positioning_placement_same.checked) {\r
+ ce.style.top = f.positioning_placement_top.value + (isNum(f.positioning_placement_top.value) ? f.positioning_placement_top_measurement.value : "");\r
+ ce.style.right = f.positioning_placement_right.value + (isNum(f.positioning_placement_right.value) ? f.positioning_placement_right_measurement.value : "");\r
+ ce.style.bottom = f.positioning_placement_bottom.value + (isNum(f.positioning_placement_bottom.value) ? f.positioning_placement_bottom_measurement.value : "");\r
+ ce.style.left = f.positioning_placement_left.value + (isNum(f.positioning_placement_left.value) ? f.positioning_placement_left_measurement.value : "");\r
+ } else {\r
+ s = f.positioning_placement_top.value + (isNum(f.positioning_placement_top.value) ? f.positioning_placement_top_measurement.value : "");\r
+ ce.style.top = s;\r
+ ce.style.right = s;\r
+ ce.style.bottom = s;\r
+ ce.style.left = s;\r
+ }\r
+\r
+ if (!f.positioning_clip_same.checked) {\r
+ s = "rect(";\r
+ s += (isNum(f.positioning_clip_top.value) ? f.positioning_clip_top.value + f.positioning_clip_top_measurement.value : "auto") + " ";\r
+ s += (isNum(f.positioning_clip_right.value) ? f.positioning_clip_right.value + f.positioning_clip_right_measurement.value : "auto") + " ";\r
+ s += (isNum(f.positioning_clip_bottom.value) ? f.positioning_clip_bottom.value + f.positioning_clip_bottom_measurement.value : "auto") + " ";\r
+ s += (isNum(f.positioning_clip_left.value) ? f.positioning_clip_left.value + f.positioning_clip_left_measurement.value : "auto");\r
+ s += ")";\r
+\r
+ if (s != "rect(auto auto auto auto)")\r
+ ce.style.clip = s;\r
+ } else {\r
+ s = "rect(";\r
+ t = isNum(f.positioning_clip_top.value) ? f.positioning_clip_top.value + f.positioning_clip_top_measurement.value : "auto";\r
+ s += t + " ";\r
+ s += t + " ";\r
+ s += t + " ";\r
+ s += t + ")";\r
+\r
+ if (s != "rect(auto auto auto auto)")\r
+ ce.style.clip = s;\r
+ }\r
+\r
+ ce.style.cssText = ce.style.cssText;\r
+}\r
+\r
+function isNum(s) {\r
+ return new RegExp('[0-9]+', 'g').test(s);\r
+}\r
+\r
+function showDisabledControls() {\r
+ var f = document.forms, i, a;\r
+\r
+ for (i=0; i<f.length; i++) {\r
+ for (a=0; a<f[i].elements.length; a++) {\r
+ if (f[i].elements[a].disabled)\r
+ tinyMCEPopup.editor.dom.addClass(f[i].elements[a], "disabled");\r
+ else\r
+ tinyMCEPopup.editor.dom.removeClass(f[i].elements[a], "disabled");\r
+ }\r
+ }\r
+}\r
+\r
+function fillSelect(f, s, param, dval, sep, em) {\r
+ var i, ar, p, se;\r
+\r
+ f = document.forms[f];\r
+ sep = typeof(sep) == "undefined" ? ";" : sep;\r
+\r
+ if (em)\r
+ addSelectValue(f, s, "", "");\r
+\r
+ ar = tinyMCEPopup.getParam(param, dval).split(sep);\r
+ for (i=0; i<ar.length; i++) {\r
+ se = false;\r
+\r
+ if (ar[i].charAt(0) == '+') {\r
+ ar[i] = ar[i].substring(1);\r
+ se = true;\r
+ }\r
+\r
+ p = ar[i].split('=');\r
+\r
+ if (p.length > 1) {\r
+ addSelectValue(f, s, p[0], p[1]);\r
+\r
+ if (se)\r
+ selectByValue(f, s, p[1]);\r
+ } else {\r
+ addSelectValue(f, s, p[0], p[0]);\r
+\r
+ if (se)\r
+ selectByValue(f, s, p[0]);\r
+ }\r
+ }\r
+}\r
+\r
+function toggleSame(ce, pre) {\r
+ var el = document.forms[0].elements, i;\r
+\r
+ if (ce.checked) {\r
+ el[pre + "_top"].disabled = false;\r
+ el[pre + "_right"].disabled = true;\r
+ el[pre + "_bottom"].disabled = true;\r
+ el[pre + "_left"].disabled = true;\r
+\r
+ if (el[pre + "_top_measurement"]) {\r
+ el[pre + "_top_measurement"].disabled = false;\r
+ el[pre + "_right_measurement"].disabled = true;\r
+ el[pre + "_bottom_measurement"].disabled = true;\r
+ el[pre + "_left_measurement"].disabled = true;\r
+ }\r
+ } else {\r
+ el[pre + "_top"].disabled = false;\r
+ el[pre + "_right"].disabled = false;\r
+ el[pre + "_bottom"].disabled = false;\r
+ el[pre + "_left"].disabled = false;\r
+\r
+ if (el[pre + "_top_measurement"]) {\r
+ el[pre + "_top_measurement"].disabled = false;\r
+ el[pre + "_right_measurement"].disabled = false;\r
+ el[pre + "_bottom_measurement"].disabled = false;\r
+ el[pre + "_left_measurement"].disabled = false;\r
+ }\r
+ }\r
+\r
+ showDisabledControls();\r
+}\r
+\r
+function synch(fr, to) {\r
+ var f = document.forms[0];\r
+\r
+ f.elements[to].value = f.elements[fr].value;\r
+\r
+ if (f.elements[fr + "_measurement"])\r
+ selectByValue(f, to + "_measurement", f.elements[fr + "_measurement"].value);\r
+}\r
+\r
+tinyMCEPopup.onInit.add(init);\r
--- /dev/null
+tinyMCE.addI18n('en.style_dlg',{\r
+title:"Edit CSS Style",\r
+apply:"Apply",\r
+text_tab:"Text",\r
+background_tab:"Background",\r
+block_tab:"Block",\r
+box_tab:"Box",\r
+border_tab:"Border",\r
+list_tab:"List",\r
+positioning_tab:"Positioning",\r
+text_props:"Text",\r
+text_font:"Font",\r
+text_size:"Size",\r
+text_weight:"Weight",\r
+text_style:"Style",\r
+text_variant:"Variant",\r
+text_lineheight:"Line height",\r
+text_case:"Case",\r
+text_color:"Color",\r
+text_decoration:"Decoration",\r
+text_overline:"overline",\r
+text_underline:"underline",\r
+text_striketrough:"strikethrough",\r
+text_blink:"blink",\r
+text_none:"none",\r
+background_color:"Background color",\r
+background_image:"Background image",\r
+background_repeat:"Repeat",\r
+background_attachment:"Attachment",\r
+background_hpos:"Horizontal position",\r
+background_vpos:"Vertical position",\r
+block_wordspacing:"Word spacing",\r
+block_letterspacing:"Letter spacing",\r
+block_vertical_alignment:"Vertical alignment",\r
+block_text_align:"Text align",\r
+block_text_indent:"Text indent",\r
+block_whitespace:"Whitespace",\r
+block_display:"Display",\r
+box_width:"Width",\r
+box_height:"Height",\r
+box_float:"Float",\r
+box_clear:"Clear",\r
+padding:"Padding",\r
+same:"Same for all",\r
+top:"Top",\r
+right:"Right",\r
+bottom:"Bottom",\r
+left:"Left",\r
+margin:"Margin",\r
+style:"Style",\r
+width:"Width",\r
+height:"Height",\r
+color:"Color",\r
+list_type:"Type",\r
+bullet_image:"Bullet image",\r
+position:"Position",\r
+positioning_type:"Type",\r
+visibility:"Visibility",\r
+zindex:"Z-index",\r
+overflow:"Overflow",\r
+placement:"Placement",\r
+clip:"Clip"\r
+});
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>{#style_dlg.title}</title>
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+ <script type="text/javascript" src="../../utils/mctabs.js"></script>
+ <script type="text/javascript" src="../../utils/editable_selects.js"></script>
+ <script type="text/javascript" src="../../utils/form_utils.js"></script>
+ <script type="text/javascript" src="js/props.js"></script>
+ <link href="css/props.css" rel="stylesheet" type="text/css" />
+ <base target="_self" />
+</head>
+
+<body id="styleprops" style="display: none">
+<form onsubmit="updateAction();return false;" action="#">
+<div class="tabs">
+ <ul>
+ <li id="text_tab" class="current"><span><a href="javascript:mcTabs.displayTab('text_tab','text_panel');" onMouseDown="return false;">{#style_dlg.text_tab}</a></span></li>
+ <li id="background_tab"><span><a href="javascript:mcTabs.displayTab('background_tab','background_panel');" onMouseDown="return false;">{#style_dlg.background_tab}</a></span></li>
+ <li id="block_tab"><span><a href="javascript:mcTabs.displayTab('block_tab','block_panel');" onMouseDown="return false;">{#style_dlg.block_tab}</a></span></li>
+ <li id="box_tab"><span><a href="javascript:mcTabs.displayTab('box_tab','box_panel');" onMouseDown="return false;">{#style_dlg.box_tab}</a></span></li>
+ <li id="border_tab"><span><a href="javascript:mcTabs.displayTab('border_tab','border_panel');" onMouseDown="return false;">{#style_dlg.border_tab}</a></span></li>
+ <li id="list_tab"><span><a href="javascript:mcTabs.displayTab('list_tab','list_panel');" onMouseDown="return false;">{#style_dlg.list_tab}</a></span></li>
+ <li id="positioning_tab"><span><a href="javascript:mcTabs.displayTab('positioning_tab','positioning_panel');" onMouseDown="return false;">{#style_dlg.positioning_tab}</a></span></li>
+ </ul>
+</div>
+
+<div class="panel_wrapper">
+<div id="text_panel" class="panel current">
+ <table border="0" width="100%">
+ <tr>
+ <td><label for="text_font">{#style_dlg.text_font}</label></td>
+ <td colspan="3">
+ <select id="text_font" name="text_font" class="mceEditableSelect mceFocus"></select>
+ </td>
+ </tr>
+ <tr>
+ <td><label for="text_size">{#style_dlg.text_size}</label></td>
+ <td>
+ <table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><select id="text_size" name="text_size" class="mceEditableSelect"></select></td>
+ <td> </td>
+ <td><select id="text_size_measurement" name="text_size_measurement"></select></td>
+ </tr>
+ </table>
+ </td>
+ <td><label for="text_weight">{#style_dlg.text_weight}</label></td>
+ <td>
+ <select id="text_weight" name="text_weight"></select>
+ </td>
+ </tr>
+ <tr>
+ <td><label for="text_style">{#style_dlg.text_style}</label></td>
+ <td>
+ <select id="text_style" name="text_style" class="mceEditableSelect"></select>
+ </td>
+ <td><label for="text_variant">{#style_dlg.text_variant}</label></td>
+ <td>
+ <select id="text_variant" name="text_variant"></select>
+ </td>
+ </tr>
+ <tr>
+ <td><label for="text_lineheight">{#style_dlg.text_lineheight}</label></td>
+ <td>
+ <table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td>
+ <select id="text_lineheight" name="text_lineheight" class="mceEditableSelect"></select>
+ </td>
+ <td> </td>
+ <td><select id="text_lineheight_measurement" name="text_lineheight_measurement"></select></td>
+ </tr>
+ </table>
+ </td>
+ <td><label for="text_case">{#style_dlg.text_case}</label></td>
+ <td>
+ <select id="text_case" name="text_case"></select>
+ </td>
+ </tr>
+ <tr>
+ <td><label for="text_color">{#style_dlg.text_color}</label></td>
+ <td colspan="2">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input id="text_color" name="text_color" type="text" value="" size="9" onChange="updateColor('text_color_pick','text_color');" /></td>
+ <td id="text_color_pickcontainer"> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" style="vertical-align: top; padding-top: 3px;">{#style_dlg.text_decoration}</td>
+ <td colspan="2">
+ <table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><input id="text_underline" name="text_underline" class="checkbox" type="checkbox" /></td>
+ <td><label for="text_underline">{#style_dlg.text_underline}</label></td>
+ </tr>
+ <tr>
+ <td><input id="text_overline" name="text_overline" class="checkbox" type="checkbox" /></td>
+ <td><label for="text_overline">{#style_dlg.text_overline}</label></td>
+ </tr>
+ <tr>
+ <td><input id="text_linethrough" name="text_linethrough" class="checkbox" type="checkbox" /></td>
+ <td><label for="text_linethrough">{#style_dlg.text_striketrough}</label></td>
+ </tr>
+ <tr>
+ <td><input id="text_blink" name="text_blink" class="checkbox" type="checkbox" /></td>
+ <td><label for="text_blink">{#style_dlg.text_blink}</label></td>
+ </tr>
+ <tr>
+ <td><input id="text_none" name="text_none" class="checkbox" type="checkbox" /></td>
+ <td><label for="text_none">{#style_dlg.text_none}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+</div>
+
+<div id="background_panel" class="panel">
+ <table border="0">
+ <tr>
+ <td><label for="background_color">{#style_dlg.background_color}</label></td>
+ <td>
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input id="background_color" name="background_color" type="text" value="" size="9" onChange="updateColor('background_color_pick','background_color');" /></td>
+ <td id="background_color_pickcontainer"> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td><label for="background_image">{#style_dlg.background_image}</label></td>
+ <td><table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><input id="background_image" name="background_image" type="text" /></td>
+ <td id="background_image_browser"> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td><label for="background_repeat">{#style_dlg.background_repeat}</label></td>
+ <td><select id="background_repeat" name="background_repeat" class="mceEditableSelect"></select></td>
+ </tr>
+
+ <tr>
+ <td><label for="background_attachment">{#style_dlg.background_attachment}</label></td>
+ <td><select id="background_attachment" name="background_attachment" class="mceEditableSelect"></select></td>
+ </tr>
+
+ <tr>
+ <td><label for="background_hpos">{#style_dlg.background_hpos}</label></td>
+ <td>
+ <table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><select id="background_hpos" name="background_hpos" class="mceEditableSelect"></select></td>
+ <td> </td>
+ <td><select id="background_hpos_measurement" name="background_hpos_measurement"></select></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td><label for="background_vpos">{#style_dlg.background_vpos}</label></td>
+ <td>
+ <table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><select id="background_vpos" name="background_vpos" class="mceEditableSelect"></select></td>
+ <td> </td>
+ <td><select id="background_vpos_measurement" name="background_vpos_measurement"></select></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+</div>
+
+<div id="block_panel" class="panel">
+ <table border="0">
+ <tr>
+ <td><label for="block_wordspacing">{#style_dlg.block_wordspacing}</label></td>
+ <td>
+ <table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><select id="block_wordspacing" name="block_wordspacing" class="mceEditableSelect"></select></td>
+ <td> </td>
+ <td><select id="block_wordspacing_measurement" name="block_wordspacing_measurement"></select></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td><label for="block_letterspacing">{#style_dlg.block_letterspacing}</label></td>
+ <td>
+ <table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><select id="block_letterspacing" name="block_letterspacing" class="mceEditableSelect"></select></td>
+ <td> </td>
+ <td><select id="block_letterspacing_measurement" name="block_letterspacing_measurement"></select></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td><label for="block_vertical_alignment">{#style_dlg.block_vertical_alignment}</label></td>
+ <td><select id="block_vertical_alignment" name="block_vertical_alignment" class="mceEditableSelect"></select></td>
+ </tr>
+
+ <tr>
+ <td><label for="block_text_align">{#style_dlg.block_text_align}</label></td>
+ <td><select id="block_text_align" name="block_text_align" class="mceEditableSelect"></select></td>
+ </tr>
+
+ <tr>
+ <td><label for="block_text_indent">{#style_dlg.block_text_indent}</label></td>
+ <td>
+ <table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><input type="text" id="block_text_indent" name="block_text_indent" /></td>
+ <td> </td>
+ <td><select id="block_text_indent_measurement" name="block_text_indent_measurement"></select></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td><label for="block_whitespace">{#style_dlg.block_whitespace}</label></td>
+ <td><select id="block_whitespace" name="block_whitespace" class="mceEditableSelect"></select></td>
+ </tr>
+
+ <tr>
+ <td><label for="block_display">{#style_dlg.block_display}</label></td>
+ <td><select id="block_display" name="block_display" class="mceEditableSelect"></select></td>
+ </tr>
+ </table>
+</div>
+
+<div id="box_panel" class="panel">
+<table border="0">
+ <tr>
+ <td><label for="box_width">{#style_dlg.box_width}</label></td>
+ <td>
+ <table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><input type="text" id="box_width" name="box_width" class="mceEditableSelect" onChange="synch('box_width','positioning_width');" /></td>
+ <td> </td>
+ <td><select id="box_width_measurement" name="box_width_measurement"></select></td>
+ </tr>
+ </table>
+ </td>
+ <td> <label for="box_float">{#style_dlg.box_float}</label></td>
+ <td><select id="box_float" name="box_float" class="mceEditableSelect"></select></td>
+ </tr>
+
+ <tr>
+ <td><label for="box_height">{#style_dlg.box_height}</label></td>
+ <td>
+ <table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><input type="text" id="box_height" name="box_height" class="mceEditableSelect" onChange="synch('box_height','positioning_height');" /></td>
+ <td> </td>
+ <td><select id="box_height_measurement" name="box_height_measurement"></select></td>
+ </tr>
+ </table>
+ </td>
+ <td> <label for="box_clear">{#style_dlg.box_clear}</label></td>
+ <td><select id="box_clear" name="box_clear" class="mceEditableSelect"></select></td>
+ </tr>
+</table>
+<div style="float: left; width: 49%">
+ <fieldset>
+ <legend>{#style_dlg.padding}</legend>
+
+ <table border="0">
+ <tr>
+ <td> </td>
+ <td><input type="checkbox" id="box_padding_same" name="box_padding_same" class="checkbox" checked="checked" onClick="toggleSame(this,'box_padding');" /> <label for="box_padding_same">{#style_dlg.same}</label></td>
+ </tr>
+ <tr>
+ <td><label for="box_padding_top">{#style_dlg.top}</label></td>
+ <td>
+ <table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><input type="text" id="box_padding_top" name="box_padding_top" class="mceEditableSelect" /></td>
+ <td> </td>
+ <td><select id="box_padding_top_measurement" name="box_padding_top_measurement"></select></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td><label for="box_padding_right">{#style_dlg.right}</label></td>
+ <td>
+ <table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><input type="text" id="box_padding_right" name="box_padding_right" class="mceEditableSelect" disabled="disabled" /></td>
+ <td> </td>
+ <td><select id="box_padding_right_measurement" name="box_padding_right_measurement" disabled="disabled"></select></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td><label for="box_padding_bottom">{#style_dlg.bottom}</label></td>
+ <td>
+ <table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><input type="text" id="box_padding_bottom" name="box_padding_bottom" class="mceEditableSelect" disabled="disabled" /></td>
+ <td> </td>
+ <td><select id="box_padding_bottom_measurement" name="box_padding_bottom_measurement" disabled="disabled"></select></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td><label for="box_padding_left">{#style_dlg.left}</label></td>
+ <td>
+ <table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><input type="text" id="box_padding_left" name="box_padding_left" class="mceEditableSelect" disabled="disabled" /></td>
+ <td> </td>
+ <td><select id="box_padding_left_measurement" name="box_padding_left_measurement" disabled="disabled"></select></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </fieldset>
+</div>
+
+<div style="float: right; width: 49%">
+ <fieldset>
+ <legend>{#style_dlg.margin}</legend>
+
+ <table border="0">
+ <tr>
+ <td> </td>
+ <td><input type="checkbox" id="box_margin_same" name="box_margin_same" class="checkbox" checked="checked" onClick="toggleSame(this,'box_margin');" /> <label for="box_margin_same">{#style_dlg.same}</label></td>
+ </tr>
+ <tr>
+ <td><label for="box_margin_top">{#style_dlg.top}</label></td>
+ <td>
+ <table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><input type="text" id="box_margin_top" name="box_margin_top" class="mceEditableSelect" /></td>
+ <td> </td>
+ <td><select id="box_margin_top_measurement" name="box_margin_top_measurement"></select></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td><label for="box_margin_right">{#style_dlg.right}</label></td>
+ <td>
+ <table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><input type="text" id="box_margin_right" name="box_margin_right" class="mceEditableSelect" disabled="disabled" /></td>
+ <td> </td>
+ <td><select id="box_margin_right_measurement" name="box_margin_right_measurement" disabled="disabled"></select></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td><label for="box_margin_bottom">{#style_dlg.bottom}</label></td>
+ <td>
+ <table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><input type="text" id="box_margin_bottom" name="box_margin_bottom" class="mceEditableSelect" disabled="disabled" /></td>
+ <td> </td>
+ <td><select id="box_margin_bottom_measurement" name="box_margin_bottom_measurement" disabled="disabled"></select></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td><label for="box_margin_left">{#style_dlg.left}</label></td>
+ <td>
+ <table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><input type="text" id="box_margin_left" name="box_margin_left" class="mceEditableSelect" disabled="disabled" /></td>
+ <td> </td>
+ <td><select id="box_margin_left_measurement" name="box_margin_left_measurement" disabled="disabled"></select></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </fieldset>
+</div>
+<br style="clear: both" />
+</div>
+
+<div id="border_panel" class="panel">
+<table border="0" cellspacing="0" cellpadding="0" width="100%">
+<tr>
+ <td class="tdelim"> </td>
+ <td class="tdelim delim"> </td>
+ <td class="tdelim">{#style_dlg.style}</td>
+ <td class="tdelim delim"> </td>
+ <td class="tdelim">{#style_dlg.width}</td>
+ <td class="tdelim delim"> </td>
+ <td class="tdelim">{#style_dlg.color}</td>
+</tr>
+
+<tr>
+ <td> </td>
+ <td class="delim"> </td>
+ <td><input type="checkbox" id="border_style_same" name="border_style_same" class="checkbox" checked="checked" onClick="toggleSame(this,'border_style');" /> <label for="border_style_same">{#style_dlg.same}</label></td>
+ <td class="delim"> </td>
+ <td><input type="checkbox" id="border_width_same" name="border_width_same" class="checkbox" checked="checked" onClick="toggleSame(this,'border_width');" /> <label for="border_width_same">{#style_dlg.same}</label></td>
+ <td class="delim"> </td>
+ <td><input type="checkbox" id="border_color_same" name="border_color_same" class="checkbox" checked="checked" onClick="toggleSame(this,'border_color');" /> <label for="border_color_same">{#style_dlg.same}</label></td>
+</tr>
+
+<tr>
+ <td>{#style_dlg.top}</td>
+ <td class="delim"> </td>
+ <td><select id="border_style_top" name="border_style_top" class="mceEditableSelect"></select></td>
+ <td class="delim"> </td>
+ <td>
+ <table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><select id="border_width_top" name="border_width_top" class="mceEditableSelect"></select></td>
+ <td> </td>
+ <td><select id="border_width_top_measurement" name="border_width_top_measurement"></select></td>
+ </tr>
+ </table>
+ </td>
+ <td class="delim"> </td>
+ <td>
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input id="border_color_top" name="border_color_top" type="text" value="" size="9" onChange="updateColor('border_color_top_pick','border_color_top');" /></td>
+ <td id="border_color_top_pickcontainer"> </td>
+ </tr>
+ </table>
+ </td>
+</tr>
+
+<tr>
+ <td>{#style_dlg.right}</td>
+ <td class="delim"> </td>
+ <td><select id="border_style_right" name="border_style_right" class="mceEditableSelect" disabled="disabled"></select></td>
+ <td class="delim"> </td>
+ <td>
+ <table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><select id="border_width_right" name="border_width_right" class="mceEditableSelect" disabled="disabled"></select></td>
+ <td> </td>
+ <td><select id="border_width_right_measurement" name="border_width_right_measurement" disabled="disabled"></select></td>
+ </tr>
+ </table>
+ </td>
+ <td class="delim"> </td>
+ <td>
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input id="border_color_right" name="border_color_right" type="text" value="" size="9" onChange="updateColor('border_color_right_pick','border_color_right');" disabled="disabled" /></td>
+ <td id="border_color_right_pickcontainer"> </td>
+ </tr>
+ </table>
+ </td>
+</tr>
+
+<tr>
+ <td>{#style_dlg.bottom}</td>
+ <td class="delim"> </td>
+ <td><select id="border_style_bottom" name="border_style_bottom" class="mceEditableSelect" disabled="disabled"></select></td>
+ <td class="delim"> </td>
+ <td>
+ <table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><select id="border_width_bottom" name="border_width_bottom" class="mceEditableSelect" disabled="disabled"></select></td>
+ <td> </td>
+ <td><select id="border_width_bottom_measurement" name="border_width_bottom_measurement" disabled="disabled"></select></td>
+ </tr>
+ </table>
+ </td>
+ <td class="delim"> </td>
+ <td>
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input id="border_color_bottom" name="border_color_bottom" type="text" value="" size="9" onChange="updateColor('border_color_bottom_pick','border_color_bottom');" disabled="disabled" /></td>
+ <td id="border_color_bottom_pickcontainer"> </td>
+ </tr>
+ </table>
+ </td>
+</tr>
+
+<tr>
+ <td>{#style_dlg.left}</td>
+ <td class="delim"> </td>
+ <td><select id="border_style_left" name="border_style_left" class="mceEditableSelect" disabled="disabled"></select></td>
+ <td class="delim"> </td>
+ <td>
+ <table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><select id="border_width_left" name="border_width_left" class="mceEditableSelect" disabled="disabled"></select></td>
+ <td> </td>
+ <td><select id="border_width_left_measurement" name="border_width_left_measurement" disabled="disabled"></select></td>
+ </tr>
+ </table>
+ </td>
+ <td class="delim"> </td>
+ <td>
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input id="border_color_left" name="border_color_left" type="text" value="" size="9" onChange="updateColor('border_color_left_pick','border_color_left');" disabled="disabled" /></td>
+ <td id="border_color_left_pickcontainer"> </td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+</div>
+
+<div id="list_panel" class="panel">
+ <table border="0">
+ <tr>
+ <td><label for="list_type">{#style_dlg.list_type}</label></td>
+ <td><select id="list_type" name="list_type" class="mceEditableSelect"></select></td>
+ </tr>
+
+ <tr>
+ <td><label for="list_bullet_image">{#style_dlg.bullet_image}</label></td>
+ <td><input id="list_bullet_image" name="list_bullet_image" type="text" /></td>
+ </tr>
+
+ <tr>
+ <td><label for="list_position">{#style_dlg.position}</label></td>
+ <td><select id="list_position" name="list_position" class="mceEditableSelect"></select></td>
+ </tr>
+ </table>
+</div>
+
+<div id="positioning_panel" class="panel">
+<table border="0">
+ <tr>
+ <td><label for="positioning_type">{#style_dlg.positioning_type}</label></td>
+ <td><select id="positioning_type" name="positioning_type" class="mceEditableSelect"></select></td>
+ <td> <label for="positioning_visibility">{#style_dlg.visibility}</label></td>
+ <td><select id="positioning_visibility" name="positioning_visibility" class="mceEditableSelect"></select></td>
+ </tr>
+
+ <tr>
+ <td><label for="positioning_width">{#style_dlg.width}</label></td>
+ <td>
+ <table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><input type="text" id="positioning_width" name="positioning_width" onChange="synch('positioning_width','box_width');" /></td>
+ <td> </td>
+ <td><select id="positioning_width_measurement" name="positioning_width_measurement"></select></td>
+ </tr>
+ </table>
+ </td>
+ <td> <label for="positioning_zindex">{#style_dlg.zindex}</label></td>
+ <td><input type="text" id="positioning_zindex" name="positioning_zindex" /></td>
+ </tr>
+
+ <tr>
+ <td><label for="positioning_height">{#style_dlg.height}</label></td>
+ <td>
+ <table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><input type="text" id="positioning_height" name="positioning_height" onChange="synch('positioning_height','box_height');" /></td>
+ <td> </td>
+ <td><select id="positioning_height_measurement" name="positioning_height_measurement"></select></td>
+ </tr>
+ </table>
+ </td>
+ <td> <label for="positioning_overflow">{#style_dlg.overflow}</label></td>
+ <td><select id="positioning_overflow" name="positioning_overflow" class="mceEditableSelect"></select></td>
+ </tr>
+</table>
+
+<div style="float: left; width: 49%">
+ <fieldset>
+ <legend>{#style_dlg.placement}</legend>
+
+ <table border="0">
+ <tr>
+ <td> </td>
+ <td><input type="checkbox" id="positioning_placement_same" name="positioning_placement_same" class="checkbox" checked="checked" onClick="toggleSame(this,'positioning_placement');" /> <label for="positioning_placement_same">{#style_dlg.same}</label></td>
+ </tr>
+ <tr>
+ <td>{#style_dlg.top}</td>
+ <td>
+ <table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><input type="text" id="positioning_placement_top" name="positioning_placement_top" /></td>
+ <td> </td>
+ <td><select id="positioning_placement_top_measurement" name="positioning_placement_top_measurement"></select></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td>{#style_dlg.right}</td>
+ <td>
+ <table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><input type="text" id="positioning_placement_right" name="positioning_placement_right" disabled="disabled" /></td>
+ <td> </td>
+ <td><select id="positioning_placement_right_measurement" name="positioning_placement_right_measurement" disabled="disabled"></select></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td>{#style_dlg.bottom}</td>
+ <td>
+ <table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><input type="text" id="positioning_placement_bottom" name="positioning_placement_bottom" disabled="disabled" /></td>
+ <td> </td>
+ <td><select id="positioning_placement_bottom_measurement" name="positioning_placement_bottom_measurement" disabled="disabled"></select></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td>{#style_dlg.left}</td>
+ <td>
+ <table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><input type="text" id="positioning_placement_left" name="positioning_placement_left" disabled="disabled" /></td>
+ <td> </td>
+ <td><select id="positioning_placement_left_measurement" name="positioning_placement_left_measurement" disabled="disabled"></select></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </fieldset>
+</div>
+
+<div style="float: right; width: 49%">
+ <fieldset>
+ <legend>{#style_dlg.clip}</legend>
+
+ <table border="0">
+ <tr>
+ <td> </td>
+ <td><input type="checkbox" id="positioning_clip_same" name="positioning_clip_same" class="checkbox" checked="checked" onClick="toggleSame(this,'positioning_clip');" /> <label for="positioning_clip_same">{#style_dlg.same}</label></td>
+ </tr>
+ <tr>
+ <td>{#style_dlg.top}</td>
+ <td>
+ <table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><input type="text" id="positioning_clip_top" name="positioning_clip_top" /></td>
+ <td> </td>
+ <td><select id="positioning_clip_top_measurement" name="positioning_clip_top_measurement"></select></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td>{#style_dlg.right}</td>
+ <td>
+ <table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><input type="text" id="positioning_clip_right" name="positioning_clip_right" disabled="disabled" /></td>
+ <td> </td>
+ <td><select id="positioning_clip_right_measurement" name="positioning_clip_right_measurement" disabled="disabled"></select></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td>{#style_dlg.bottom}</td>
+ <td>
+ <table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><input type="text" id="positioning_clip_bottom" name="positioning_clip_bottom" disabled="disabled" /></td>
+ <td> </td>
+ <td><select id="positioning_clip_bottom_measurement" name="positioning_clip_bottom_measurement" disabled="disabled"></select></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td>{#style_dlg.left}</td>
+ <td>
+ <table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><input type="text" id="positioning_clip_left" name="positioning_clip_left" disabled="disabled" /></td>
+ <td> </td>
+ <td><select id="positioning_clip_left_measurement" name="positioning_clip_left_measurement" disabled="disabled"></select></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </fieldset>
+</div>
+<br style="clear: both" />
+</div>
+</div>
+
+<div class="mceActionPanel">
+ <div style="float: left">
+ <div style="float: left"><input type="submit" id="insert" name="insert" value="{#update}" /></div>
+
+ <div style="float: left"> <input type="button" class="button" id="apply" name="apply" value="{#style_dlg.apply}" onClick="applyAction();" /></div>
+ <br style="clear: both" />
+ </div>
+
+ <div style="float: right">
+ <input type="button" id="cancel" name="cancel" value="{#cancel}" onClick="tinyMCEPopup.close();" />
+ </div>
+</div>
+</form>
+
+<div style="display: none">
+ <div id="container"></div>
+</div>
+
+</body>
+</html>
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+ <title>{#table_dlg.cell_title}</title>\r
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
+ <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
+ <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
+ <script type="text/javascript" src="../../utils/editable_selects.js"></script>\r
+ <script type="text/javascript" src="js/cell.js"></script>\r
+ <link href="css/cell.css" rel="stylesheet" type="text/css" />\r
+ <base target="_self" />\r
+</head>\r
+<body id="tablecell" style="display: none">\r
+ <form onsubmit="updateAction();return false;" action="#">\r
+ <div class="tabs">\r
+ <ul>\r
+ <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#table_dlg.general_tab}</a></span></li>\r
+ <li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#table_dlg.advanced_tab}</a></span></li>\r
+ </ul>\r
+ </div>\r
+\r
+ <div class="panel_wrapper">\r
+ <div id="general_panel" class="panel current">\r
+ <fieldset>\r
+ <legend>{#table_dlg.general_props}</legend>\r
+\r
+ <table border="0" cellpadding="4" cellspacing="0">\r
+ <tr>\r
+ <td><label for="align">{#table_dlg.align}</label></td>\r
+ <td>\r
+ <select id="align" name="align" class="mceFocus">\r
+ <option value="">{#not_set}</option>\r
+ <option value="center">{#table_dlg.align_middle}</option>\r
+ <option value="left">{#table_dlg.align_left}</option>\r
+ <option value="right">{#table_dlg.align_right}</option>\r
+ </select>\r
+ </td>\r
+ \r
+ <td><label for="celltype">{#table_dlg.cell_type}</label></td>\r
+ <td>\r
+ <select id="celltype" name="celltype">\r
+ <option value="td">{#table_dlg.td}</option>\r
+ <option value="th">{#table_dlg.th}</option>\r
+ </select>\r
+ </td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td><label for="valign">{#table_dlg.valign}</label></td>\r
+ <td>\r
+ <select id="valign" name="valign">\r
+ <option value="">{#not_set}</option>\r
+ <option value="top">{#table_dlg.align_top}</option>\r
+ <option value="middle">{#table_dlg.align_middle}</option>\r
+ <option value="bottom">{#table_dlg.align_bottom}</option>\r
+ </select>\r
+ </td>\r
+\r
+ <td><label for="scope">{#table_dlg.scope}</label></td>\r
+ <td>\r
+ <select id="scope" name="scope">\r
+ <option value="">{#not_set}</option>\r
+ <option value="col">{#table.col}</option>\r
+ <option value="row">{#table.row}</option>\r
+ <option value="rowgroup">{#table_dlg.rowgroup}</option>\r
+ <option value="colgroup">{#table_dlg.colgroup}</option>\r
+ </select>\r
+ </td>\r
+\r
+ </tr>\r
+\r
+ <tr>\r
+ <td><label for="width">{#table_dlg.width}</label></td>\r
+ <td><input id="width" name="width" type="text" value="" size="4" maxlength="4" onchange="changedSize();" /></td>\r
+\r
+ <td><label for="height">{#table_dlg.height}</label></td>\r
+ <td><input id="height" name="height" type="text" value="" size="4" maxlength="4" onchange="changedSize();" /></td>\r
+ </tr>\r
+\r
+ <tr id="styleSelectRow">\r
+ <td><label for="class">{#class_name}</label></td>\r
+ <td colspan="3">\r
+ <select id="class" name="class" class="mceEditableSelect">\r
+ <option value="" selected="selected">{#not_set}</option>\r
+ </select>\r
+ </td>\r
+ </tr>\r
+ </table>\r
+ </fieldset>\r
+ </div>\r
+\r
+ <div id="advanced_panel" class="panel">\r
+ <fieldset>\r
+ <legend>{#table_dlg.advanced_props}</legend>\r
+\r
+ <table border="0" cellpadding="0" cellspacing="4">\r
+ <tr>\r
+ <td class="column1"><label for="id">{#table_dlg.id}</label></td> \r
+ <td><input id="id" name="id" type="text" value="" style="width: 200px" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td><label for="style">{#table_dlg.style}</label></td>\r
+ <td><input type="text" id="style" name="style" value="" style="width: 200px;" onchange="changedStyle();" /></td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="column1"><label for="dir">{#table_dlg.langdir}</label></td> \r
+ <td>\r
+ <select id="dir" name="dir" style="width: 200px"> \r
+ <option value="">{#not_set}</option> \r
+ <option value="ltr">{#table_dlg.ltr}</option> \r
+ <option value="rtl">{#table_dlg.rtl}</option> \r
+ </select>\r
+ </td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="column1"><label for="lang">{#table_dlg.langcode}</label></td> \r
+ <td>\r
+ <input id="lang" name="lang" type="text" value="" style="width: 200px" />\r
+ </td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="column1"><label for="backgroundimage">{#table_dlg.bgimage}</label></td> \r
+ <td>\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input id="backgroundimage" name="backgroundimage" type="text" value="" style="width: 200px" onchange="changedBackgroundImage();" /></td>\r
+ <td id="backgroundimagebrowsercontainer"> </td>\r
+ </tr>\r
+ </table>\r
+ </td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="column1"><label for="bordercolor">{#table_dlg.bordercolor}</label></td> \r
+ <td>\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input id="bordercolor" name="bordercolor" type="text" value="" size="9" onchange="updateColor('bordercolor_pick','bordercolor');changedColor();" /></td>\r
+ <td id="bordercolor_pickcontainer"> </td>\r
+ </tr>\r
+ </table>\r
+ </td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="column1"><label for="bgcolor">{#table_dlg.bgcolor}</label></td> \r
+ <td>\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');changedColor();" /></td>\r
+ <td id="bgcolor_pickcontainer"> </td>\r
+ </tr>\r
+ </table>\r
+ </td> \r
+ </tr>\r
+ </table>\r
+ </fieldset>\r
+ </div>\r
+ </div>\r
+\r
+ <div class="mceActionPanel">\r
+ <div>\r
+ <select id="action" name="action">\r
+ <option value="cell">{#table_dlg.cell_cell}</option>\r
+ <option value="row">{#table_dlg.cell_row}</option>\r
+ <option value="all">{#table_dlg.cell_all}</option>\r
+ </select>\r
+ </div>\r
+\r
+ <div style="float: left">\r
+ <div><input type="submit" id="insert" name="insert" value="{#update}" /></div>\r
+ </div>\r
+\r
+ <div style="float: right">\r
+ <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
+ </div>\r
+ </div>\r
+ </form>\r
+</body>\r
+</html>\r
--- /dev/null
+/* CSS file for cell dialog in the table plugin */\r
+\r
+.panel_wrapper div.current {\r
+ height: 200px;\r
+}\r
+\r
+.advfield {\r
+ width: 200px;\r
+}\r
+\r
+#action {\r
+ margin-bottom: 3px;\r
+}\r
+\r
+#class {\r
+ width: 150px;\r
+}
\ No newline at end of file
--- /dev/null
+/* CSS file for row dialog in the table plugin */\r
+\r
+.panel_wrapper div.current {\r
+ height: 200px;\r
+}\r
+\r
+.advfield {\r
+ width: 200px;\r
+}\r
+\r
+#action {\r
+ margin-bottom: 3px;\r
+}\r
+\r
+#rowtype,#align,#valign,#class,#height {\r
+ width: 150px;\r
+}\r
+\r
+#height {\r
+ width: 50px; \r
+}\r
+\r
+.col2 {\r
+ padding-left: 20px;\r
+}\r
--- /dev/null
+/* CSS file for table dialog in the table plugin */\r
+\r
+.panel_wrapper div.current {\r
+ height: 245px;\r
+}\r
+\r
+.advfield {\r
+ width: 200px;\r
+}\r
+\r
+#class {\r
+ width: 150px;\r
+}\r
--- /dev/null
+(function(){var each=tinymce.each;tinymce.create('tinymce.plugins.TablePlugin',{init:function(ed,url){var t=this;t.editor=ed;t.url=url;each([['table','table.desc','mceInsertTable',true],['delete_table','table.del','mceTableDelete'],['delete_col','table.delete_col_desc','mceTableDeleteCol'],['delete_row','table.delete_row_desc','mceTableDeleteRow'],['col_after','table.col_after_desc','mceTableInsertColAfter'],['col_before','table.col_before_desc','mceTableInsertColBefore'],['row_after','table.row_after_desc','mceTableInsertRowAfter'],['row_before','table.row_before_desc','mceTableInsertRowBefore'],['row_props','table.row_desc','mceTableRowProps',true],['cell_props','table.cell_desc','mceTableCellProps',true],['split_cells','table.split_cells_desc','mceTableSplitCells',true],['merge_cells','table.merge_cells_desc','mceTableMergeCells',true]],function(c){ed.addButton(c[0],{title:c[1],cmd:c[2],ui:c[3]});});ed.onInit.add(function(){if(ed&&ed.plugins.contextmenu){ed.plugins.contextmenu.onContextMenu.add(function(th,m,e){var sm,se=ed.selection,el=se.getNode()||ed.getBody();if(ed.dom.getParent(e,'td')||ed.dom.getParent(e,'th')){m.removeAll();if(el.nodeName=='A'&&!ed.dom.getAttrib(el,'name')){m.add({title:'advanced.link_desc',icon:'link',cmd:ed.plugins.advlink?'mceAdvLink':'mceLink',ui:true});m.add({title:'advanced.unlink_desc',icon:'unlink',cmd:'UnLink'});m.addSeparator();}if(el.nodeName=='IMG'&&el.className.indexOf('mceItem')==-1){m.add({title:'advanced.image_desc',icon:'image',cmd:ed.plugins.advimage?'mceAdvImage':'mceImage',ui:true});m.addSeparator();}m.add({title:'table.desc',icon:'table',cmd:'mceInsertTable',ui:true,value:{action:'insert'}});m.add({title:'table.props_desc',icon:'table_props',cmd:'mceInsertTable',ui:true});m.add({title:'table.del',icon:'delete_table',cmd:'mceTableDelete',ui:true});m.addSeparator();sm=m.addMenu({title:'table.cell'});sm.add({title:'table.cell_desc',icon:'cell_props',cmd:'mceTableCellProps',ui:true});sm.add({title:'table.split_cells_desc',icon:'split_cells',cmd:'mceTableSplitCells',ui:true});sm.add({title:'table.merge_cells_desc',icon:'merge_cells',cmd:'mceTableMergeCells',ui:true});sm=m.addMenu({title:'table.row'});sm.add({title:'table.row_desc',icon:'row_props',cmd:'mceTableRowProps',ui:true});sm.add({title:'table.row_before_desc',icon:'row_before',cmd:'mceTableInsertRowBefore'});sm.add({title:'table.row_after_desc',icon:'row_after',cmd:'mceTableInsertRowAfter'});sm.add({title:'table.delete_row_desc',icon:'delete_row',cmd:'mceTableDeleteRow'});sm.addSeparator();sm.add({title:'table.cut_row_desc',icon:'cut',cmd:'mceTableCutRow'});sm.add({title:'table.copy_row_desc',icon:'copy',cmd:'mceTableCopyRow'});sm.add({title:'table.paste_row_before_desc',icon:'paste',cmd:'mceTablePasteRowBefore'});sm.add({title:'table.paste_row_after_desc',icon:'paste',cmd:'mceTablePasteRowAfter'});sm=m.addMenu({title:'table.col'});sm.add({title:'table.col_before_desc',icon:'col_before',cmd:'mceTableInsertColBefore'});sm.add({title:'table.col_after_desc',icon:'col_after',cmd:'mceTableInsertColAfter'});sm.add({title:'table.delete_col_desc',icon:'delete_col',cmd:'mceTableDeleteCol'});}else m.add({title:'table.desc',icon:'table',cmd:'mceInsertTable',ui:true});});}});ed.onKeyDown.add(function(ed,e){if(e.keyCode==9&&ed.dom.getParent(ed.selection.getNode(),'TABLE')){if(!tinymce.isGecko&&!tinymce.isOpera){tinyMCE.execInstanceCommand(ed.editorId,"mceTableMoveToNextRow",true);return tinymce.dom.Event.cancel(e);}ed.undoManager.add();}});if(!tinymce.isIE){if(ed.getParam('table_selection',true)){ed.onClick.add(function(ed,e){e=e.target;if(e.nodeName==='TABLE')ed.selection.select(e);});}}ed.onNodeChange.add(function(ed,cm,n){var p=ed.dom.getParent(n,'td,th,caption');cm.setActive('table',n.nodeName==='TABLE'||!!p);if(p&&p.nodeName==='CAPTION')p=null;cm.setDisabled('delete_table',!p);cm.setDisabled('delete_col',!p);cm.setDisabled('delete_table',!p);cm.setDisabled('delete_row',!p);cm.setDisabled('col_after',!p);cm.setDisabled('col_before',!p);cm.setDisabled('row_after',!p);cm.setDisabled('row_before',!p);cm.setDisabled('row_props',!p);cm.setDisabled('cell_props',!p);cm.setDisabled('split_cells',!p||(parseInt(ed.dom.getAttrib(p,'colspan','1'))<2&&parseInt(ed.dom.getAttrib(p,'rowspan','1'))<2));cm.setDisabled('merge_cells',!p);});if(!tinymce.isIE){ed.onBeforeSetContent.add(function(ed,o){if(o.initial)o.content=o.content.replace(/<(td|th)([^>]+|)>\s*<\/(td|th)>/g,tinymce.isOpera?'<$1$2> </$1>':'<$1$2><br mce_bogus="1" /></$1>');});}},execCommand:function(cmd,ui,val){var ed=this.editor,b;switch(cmd){case"mceTableMoveToNextRow":case"mceInsertTable":case"mceTableRowProps":case"mceTableCellProps":case"mceTableSplitCells":case"mceTableMergeCells":case"mceTableInsertRowBefore":case"mceTableInsertRowAfter":case"mceTableDeleteRow":case"mceTableInsertColBefore":case"mceTableInsertColAfter":case"mceTableDeleteCol":case"mceTableCutRow":case"mceTableCopyRow":case"mceTablePasteRowBefore":case"mceTablePasteRowAfter":case"mceTableDelete":ed.execCommand('mceBeginUndoLevel');this._doExecCommand(cmd,ui,val);ed.execCommand('mceEndUndoLevel');return true;}return false;},getInfo:function(){return{longname:'Tables',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/table',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_doExecCommand:function(command,user_interface,value){var inst=this.editor,ed=inst,url=this.url;var focusElm=inst.selection.getNode();var trElm=inst.dom.getParent(focusElm,"tr");var tdElm=inst.dom.getParent(focusElm,"td,th");var tableElm=inst.dom.getParent(focusElm,"table");var doc=inst.contentWindow.document;var tableBorder=tableElm?tableElm.getAttribute("border"):"";if(trElm&&tdElm==null)tdElm=trElm.cells[0];function inArray(ar,v){for(var i=0;i<ar.length;i++){if(ar[i].length>0&&inArray(ar[i],v))return true;if(ar[i]==v)return true;}return false;}function select(dx,dy){var td;grid=getTableGrid(tableElm);dx=dx||0;dy=dy||0;dx=Math.max(cpos.cellindex+dx,0);dy=Math.max(cpos.rowindex+dy,0);inst.execCommand('mceRepaint');td=getCell(grid,dy,dx);if(td){inst.selection.select(td.firstChild||td);inst.selection.collapse(1);}};function makeTD(){var newTD=doc.createElement("td");if(!tinymce.isIE)newTD.innerHTML='<br mce_bogus="1"/>';}function getColRowSpan(td){var colspan=inst.dom.getAttrib(td,"colspan");var rowspan=inst.dom.getAttrib(td,"rowspan");colspan=colspan==""?1:parseInt(colspan);rowspan=rowspan==""?1:parseInt(rowspan);return{colspan:colspan,rowspan:rowspan};}function getCellPos(grid,td){var x,y;for(y=0;y<grid.length;y++){for(x=0;x<grid[y].length;x++){if(grid[y][x]==td)return{cellindex:x,rowindex:y};}}return null;}function getCell(grid,row,col){if(grid[row]&&grid[row][col])return grid[row][col];return null;}function getNextCell(table,cell){var cells=[],x=0,i,j,cell,nextCell;for(i=0;i<table.rows.length;i++)for(j=0;j<table.rows[i].cells.length;j++,x++)cells[x]=table.rows[i].cells[j];for(i=0;i<cells.length;i++)if(cells[i]==cell)if(nextCell=cells[i+1])return nextCell;}function getTableGrid(table){var grid=[],rows=table.rows,x,y,td,sd,xstart,x2,y2;for(y=0;y<rows.length;y++){for(x=0;x<rows[y].cells.length;x++){td=rows[y].cells[x];sd=getColRowSpan(td);for(xstart=x;grid[y]&&grid[y][xstart];xstart++);for(y2=y;y2<y+sd['rowspan'];y2++){if(!grid[y2])grid[y2]=[];for(x2=xstart;x2<xstart+sd['colspan'];x2++)grid[y2][x2]=td;}}}return grid;}function trimRow(table,tr,td,new_tr){var grid=getTableGrid(table),cpos=getCellPos(grid,td);var cells,lastElm;if(new_tr.cells.length!=tr.childNodes.length){cells=tr.childNodes;lastElm=null;for(var x=0;td=getCell(grid,cpos.rowindex,x);x++){var remove=true;var sd=getColRowSpan(td);if(inArray(cells,td)){new_tr.childNodes[x]._delete=true;}else if((lastElm==null||td!=lastElm)&&sd.colspan>1){for(var i=x;i<x+td.colSpan;i++)new_tr.childNodes[i]._delete=true;}if((lastElm==null||td!=lastElm)&&sd.rowspan>1)td.rowSpan=sd.rowspan+1;lastElm=td;}deleteMarked(tableElm);}}function prevElm(node,name){while((node=node.previousSibling)!=null){if(node.nodeName==name)return node;}return null;}function nextElm(node,names){var namesAr=names.split(',');while((node=node.nextSibling)!=null){for(var i=0;i<namesAr.length;i++){if(node.nodeName.toLowerCase()==namesAr[i].toLowerCase())return node;}}return null;}function deleteMarked(tbl){if(tbl.rows==0)return;var tr=tbl.rows[0];do{var next=nextElm(tr,"TR");if(tr._delete){tr.parentNode.removeChild(tr);continue;}var td=tr.cells[0];if(td.cells>1){do{var nexttd=nextElm(td,"TD,TH");if(td._delete)td.parentNode.removeChild(td);}while((td=nexttd)!=null);}}while((tr=next)!=null);}function addRows(td_elm,tr_elm,rowspan){td_elm.rowSpan=1;var trNext=nextElm(tr_elm,"TR");for(var i=1;i<rowspan&&trNext;i++){var newTD=doc.createElement("td");if(!tinymce.isIE)newTD.innerHTML='<br mce_bogus="1"/>';if(tinymce.isIE)trNext.insertBefore(newTD,trNext.cells(td_elm.cellIndex));else trNext.insertBefore(newTD,trNext.cells[td_elm.cellIndex]);trNext=nextElm(trNext,"TR");}}function copyRow(doc,table,tr){var grid=getTableGrid(table);var newTR=tr.cloneNode(false);var cpos=getCellPos(grid,tr.cells[0]);var lastCell=null;var tableBorder=inst.dom.getAttrib(table,"border");var tdElm=null;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){var newTD=null;if(lastCell!=tdElm){for(var i=0;i<tr.cells.length;i++){if(tdElm==tr.cells[i]){newTD=tdElm.cloneNode(true);break;}}}if(newTD==null){newTD=doc.createElement("td");if(!tinymce.isIE)newTD.innerHTML='<br mce_bogus="1"/>';}newTD.colSpan=1;newTD.rowSpan=1;newTR.appendChild(newTD);lastCell=tdElm;}return newTR;}switch(command){case"mceTableMoveToNextRow":var nextCell=getNextCell(tableElm,tdElm);if(!nextCell){inst.execCommand("mceTableInsertRowAfter",tdElm);nextCell=getNextCell(tableElm,tdElm);}inst.selection.select(nextCell);inst.selection.collapse(true);return true;case"mceTableRowProps":if(trElm==null)return true;if(user_interface){inst.windowManager.open({url:url+'/row.htm',width:400+parseInt(inst.getLang('table.rowprops_delta_width',0)),height:295+parseInt(inst.getLang('table.rowprops_delta_height',0)),inline:1},{plugin_url:url});}return true;case"mceTableCellProps":if(tdElm==null)return true;if(user_interface){inst.windowManager.open({url:url+'/cell.htm',width:400+parseInt(inst.getLang('table.cellprops_delta_width',0)),height:295+parseInt(inst.getLang('table.cellprops_delta_height',0)),inline:1},{plugin_url:url});}return true;case"mceInsertTable":if(user_interface){inst.windowManager.open({url:url+'/table.htm',width:400+parseInt(inst.getLang('table.table_delta_width',0)),height:320+parseInt(inst.getLang('table.table_delta_height',0)),inline:1},{plugin_url:url,action:value?value.action:0});}return true;case"mceTableDelete":var table=inst.dom.getParent(inst.selection.getNode(),"table");if(table){table.parentNode.removeChild(table);inst.execCommand('mceRepaint');}return true;case"mceTableSplitCells":case"mceTableMergeCells":case"mceTableInsertRowBefore":case"mceTableInsertRowAfter":case"mceTableDeleteRow":case"mceTableInsertColBefore":case"mceTableInsertColAfter":case"mceTableDeleteCol":case"mceTableCutRow":case"mceTableCopyRow":case"mceTablePasteRowBefore":case"mceTablePasteRowAfter":if(!tableElm)return true;if(trElm&&tableElm!=trElm.parentNode)tableElm=trElm.parentNode;if(tableElm&&trElm){switch(command){case"mceTableCutRow":if(!trElm||!tdElm)return true;inst.tableRowClipboard=copyRow(doc,tableElm,trElm);inst.execCommand("mceTableDeleteRow");break;case"mceTableCopyRow":if(!trElm||!tdElm)return true;inst.tableRowClipboard=copyRow(doc,tableElm,trElm);break;case"mceTablePasteRowBefore":if(!trElm||!tdElm)return true;var newTR=inst.tableRowClipboard.cloneNode(true);var prevTR=prevElm(trElm,"TR");if(prevTR!=null)trimRow(tableElm,prevTR,prevTR.cells[0],newTR);trElm.parentNode.insertBefore(newTR,trElm);break;case"mceTablePasteRowAfter":if(!trElm||!tdElm)return true;var nextTR=nextElm(trElm,"TR");var newTR=inst.tableRowClipboard.cloneNode(true);trimRow(tableElm,trElm,tdElm,newTR);if(nextTR==null)trElm.parentNode.appendChild(newTR);else nextTR.parentNode.insertBefore(newTR,nextTR);break;case"mceTableInsertRowBefore":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var newTR=doc.createElement("tr");var lastTDElm=null;cpos.rowindex--;if(cpos.rowindex<0)cpos.rowindex=0;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['rowspan']==1){var newTD=doc.createElement("td");if(!tinymce.isIE)newTD.innerHTML='<br mce_bogus="1"/>';newTD.colSpan=tdElm.colSpan;newTR.appendChild(newTD);}else tdElm.rowSpan=sd['rowspan']+1;lastTDElm=tdElm;}}trElm.parentNode.insertBefore(newTR,trElm);select(0,1);break;case"mceTableInsertRowAfter":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var newTR=doc.createElement("tr");var lastTDElm=null;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['rowspan']==1){var newTD=doc.createElement("td");if(!tinymce.isIE)newTD.innerHTML='<br mce_bogus="1"/>';newTD.colSpan=tdElm.colSpan;newTR.appendChild(newTD);}else tdElm.rowSpan=sd['rowspan']+1;lastTDElm=tdElm;}}if(newTR.hasChildNodes()){var nextTR=nextElm(trElm,"TR");if(nextTR)nextTR.parentNode.insertBefore(newTR,nextTR);else tableElm.appendChild(newTR);}select(0,1);break;case"mceTableDeleteRow":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);if(grid.length==1&&tableElm.nodeName=='TBODY'){inst.dom.remove(inst.dom.getParent(tableElm,"table"));return true;}var cells=trElm.cells;var nextTR=nextElm(trElm,"TR");for(var x=0;x<cells.length;x++){if(cells[x].rowSpan>1){var newTD=cells[x].cloneNode(true);var sd=getColRowSpan(cells[x]);newTD.rowSpan=sd.rowspan-1;var nextTD=nextTR.cells[x];if(nextTD==null)nextTR.appendChild(newTD);else nextTR.insertBefore(newTD,nextTD);}}var lastTDElm=null;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd.rowspan>1){tdElm.rowSpan=sd.rowspan-1;}else{trElm=tdElm.parentNode;if(trElm.parentNode)trElm._delete=true;}lastTDElm=tdElm;}}deleteMarked(tableElm);select(0,-1);break;case"mceTableInsertColBefore":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var lastTDElm=null;for(var y=0;tdElm=getCell(grid,y,cpos.cellindex);y++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['colspan']==1){var newTD=doc.createElement(tdElm.nodeName);if(!tinymce.isIE)newTD.innerHTML='<br mce_bogus="1"/>';newTD.rowSpan=tdElm.rowSpan;tdElm.parentNode.insertBefore(newTD,tdElm);}else tdElm.colSpan++;lastTDElm=tdElm;}}select();break;case"mceTableInsertColAfter":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var lastTDElm=null;for(var y=0;tdElm=getCell(grid,y,cpos.cellindex);y++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['colspan']==1){var newTD=doc.createElement(tdElm.nodeName);if(!tinymce.isIE)newTD.innerHTML='<br mce_bogus="1"/>';newTD.rowSpan=tdElm.rowSpan;var nextTD=nextElm(tdElm,"TD,TH");if(nextTD==null)tdElm.parentNode.appendChild(newTD);else nextTD.parentNode.insertBefore(newTD,nextTD);}else tdElm.colSpan++;lastTDElm=tdElm;}}select(1);break;case"mceTableDeleteCol":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var lastTDElm=null;if((grid.length>1&&grid[0].length<=1)&&tableElm.nodeName=='TBODY'){inst.dom.remove(inst.dom.getParent(tableElm,"table"));return true;}for(var y=0;tdElm=getCell(grid,y,cpos.cellindex);y++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['colspan']>1)tdElm.colSpan=sd['colspan']-1;else{if(tdElm.parentNode)tdElm.parentNode.removeChild(tdElm);}lastTDElm=tdElm;}}select(-1);break;case"mceTableSplitCells":if(!trElm||!tdElm)return true;var spandata=getColRowSpan(tdElm);var colspan=spandata["colspan"];var rowspan=spandata["rowspan"];if(colspan>1||rowspan>1){tdElm.colSpan=1;for(var i=1;i<colspan;i++){var newTD=doc.createElement("td");if(!tinymce.isIE)newTD.innerHTML='<br mce_bogus="1"/>';trElm.insertBefore(newTD,nextElm(tdElm,"TD,TH"));if(rowspan>1)addRows(newTD,trElm,rowspan);}addRows(tdElm,trElm,rowspan);}tableElm=inst.dom.getParent(inst.selection.getNode(),"table");break;case"mceTableMergeCells":var rows=[];var sel=inst.selection.getSel();var grid=getTableGrid(tableElm);if(tinymce.isIE||sel.rangeCount==1){if(user_interface){var sp=getColRowSpan(tdElm);inst.windowManager.open({url:url+'/merge_cells.htm',width:240+parseInt(inst.getLang('table.merge_cells_delta_width',0)),height:110+parseInt(inst.getLang('table.merge_cells_delta_height',0)),inline:1},{action:"update",numcols:sp.colspan,numrows:sp.rowspan,plugin_url:url});return true;}else{var numRows=parseInt(value['numrows']);var numCols=parseInt(value['numcols']);var cpos=getCellPos(grid,tdElm);if((""+numRows)=="NaN")numRows=1;if((""+numCols)=="NaN")numCols=1;var tRows=tableElm.rows;for(var y=cpos.rowindex;y<grid.length;y++){var rowCells=[];for(var x=cpos.cellindex;x<grid[y].length;x++){var td=getCell(grid,y,x);if(td&&!inArray(rows,td)&&!inArray(rowCells,td)){var cp=getCellPos(grid,td);if(cp.cellindex<cpos.cellindex+numCols&&cp.rowindex<cpos.rowindex+numRows)rowCells[rowCells.length]=td;}}if(rowCells.length>0)rows[rows.length]=rowCells;var td=getCell(grid,cpos.rowindex,cpos.cellindex);each(ed.dom.select('br',td),function(e,i){if(i>0&&ed.dom.getAttrib('mce_bogus'))ed.dom.remove(e);});}}}else{var cells=[];var sel=inst.selection.getSel();var lastTR=null;var curRow=null;var x1=-1,y1=-1,x2,y2;if(sel.rangeCount<2)return true;for(var i=0;i<sel.rangeCount;i++){var rng=sel.getRangeAt(i);var tdElm=rng.startContainer.childNodes[rng.startOffset];if(!tdElm)break;if(tdElm.nodeName=="TD"||tdElm.nodeName=="TH")cells[cells.length]=tdElm;}var tRows=tableElm.rows;for(var y=0;y<tRows.length;y++){var rowCells=[];for(var x=0;x<tRows[y].cells.length;x++){var td=tRows[y].cells[x];for(var i=0;i<cells.length;i++){if(td==cells[i]){rowCells[rowCells.length]=td;}}}if(rowCells.length>0)rows[rows.length]=rowCells;}var curRow=[];var lastTR=null;for(var y=0;y<grid.length;y++){for(var x=0;x<grid[y].length;x++){grid[y][x]._selected=false;for(var i=0;i<cells.length;i++){if(grid[y][x]==cells[i]){if(x1==-1){x1=x;y1=y;}x2=x;y2=y;grid[y][x]._selected=true;}}}}for(var y=y1;y<=y2;y++){for(var x=x1;x<=x2;x++){if(!grid[y][x]._selected){alert("Invalid selection for merge.");return true;}}}}var rowSpan=1,colSpan=1;var lastRowSpan=-1;for(var y=0;y<rows.length;y++){var rowColSpan=0;for(var x=0;x<rows[y].length;x++){var sd=getColRowSpan(rows[y][x]);rowColSpan+=sd['colspan'];if(lastRowSpan!=-1&&sd['rowspan']!=lastRowSpan){alert("Invalid selection for merge.");return true;}lastRowSpan=sd['rowspan'];}if(rowColSpan>colSpan)colSpan=rowColSpan;lastRowSpan=-1;}var lastColSpan=-1;for(var x=0;x<rows[0].length;x++){var colRowSpan=0;for(var y=0;y<rows.length;y++){var sd=getColRowSpan(rows[y][x]);colRowSpan+=sd['rowspan'];if(lastColSpan!=-1&&sd['colspan']!=lastColSpan){alert("Invalid selection for merge.");return true;}lastColSpan=sd['colspan'];}if(colRowSpan>rowSpan)rowSpan=colRowSpan;lastColSpan=-1;}tdElm=rows[0][0];tdElm.rowSpan=rowSpan;tdElm.colSpan=colSpan;for(var y=0;y<rows.length;y++){for(var x=0;x<rows[y].length;x++){var html=rows[y][x].innerHTML;var chk=html.replace(/[ \t\r\n]/g,"");if(chk!="<br/>"&&chk!="<br>"&&chk!='<br mce_bogus="1"/>'&&(x+y>0))tdElm.innerHTML+=html;if(rows[y][x]!=tdElm&&!rows[y][x]._deleted){var cpos=getCellPos(grid,rows[y][x]);var tr=rows[y][x].parentNode;tr.removeChild(rows[y][x]);rows[y][x]._deleted=true;if(!tr.hasChildNodes()){tr.parentNode.removeChild(tr);var lastCell=null;for(var x=0;cellElm=getCell(grid,cpos.rowindex,x);x++){if(cellElm!=lastCell&&cellElm.rowSpan>1)cellElm.rowSpan--;lastCell=cellElm;}if(tdElm.rowSpan>1)tdElm.rowSpan--;}}}}each(ed.dom.select('br',tdElm),function(e,i){if(i>0&&ed.dom.getAttrib(e,'mce_bogus'))ed.dom.remove(e);});break;}tableElm=inst.dom.getParent(inst.selection.getNode(),"table");inst.addVisual(tableElm);inst.nodeChanged();}return true;}return false;}});tinymce.PluginManager.add('table',tinymce.plugins.TablePlugin);})();
\ No newline at end of file
--- /dev/null
+/**\r
+ * $Id: editor_plugin_src.js 853 2008-05-27 08:05:35Z spocke $\r
+ *\r
+ * @author Moxiecode\r
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+(function() {\r
+ var each = tinymce.each;\r
+\r
+ tinymce.create('tinymce.plugins.TablePlugin', {\r
+ init : function(ed, url) {\r
+ var t = this;\r
+\r
+ t.editor = ed;\r
+ t.url = url;\r
+\r
+ // Register buttons\r
+ each([\r
+ ['table', 'table.desc', 'mceInsertTable', true],\r
+ ['delete_table', 'table.del', 'mceTableDelete'],\r
+ ['delete_col', 'table.delete_col_desc', 'mceTableDeleteCol'],\r
+ ['delete_row', 'table.delete_row_desc', 'mceTableDeleteRow'],\r
+ ['col_after', 'table.col_after_desc', 'mceTableInsertColAfter'],\r
+ ['col_before', 'table.col_before_desc', 'mceTableInsertColBefore'],\r
+ ['row_after', 'table.row_after_desc', 'mceTableInsertRowAfter'],\r
+ ['row_before', 'table.row_before_desc', 'mceTableInsertRowBefore'],\r
+ ['row_props', 'table.row_desc', 'mceTableRowProps', true],\r
+ ['cell_props', 'table.cell_desc', 'mceTableCellProps', true],\r
+ ['split_cells', 'table.split_cells_desc', 'mceTableSplitCells', true],\r
+ ['merge_cells', 'table.merge_cells_desc', 'mceTableMergeCells', true]\r
+ ], function(c) {\r
+ ed.addButton(c[0], {title : c[1], cmd : c[2], ui : c[3]});\r
+ });\r
+\r
+ ed.onInit.add(function() {\r
+ if (ed && ed.plugins.contextmenu) {\r
+ ed.plugins.contextmenu.onContextMenu.add(function(th, m, e) {\r
+ var sm, se = ed.selection, el = se.getNode() || ed.getBody();\r
+\r
+ if (ed.dom.getParent(e, 'td') || ed.dom.getParent(e, 'th')) {\r
+ m.removeAll();\r
+\r
+ if (el.nodeName == 'A' && !ed.dom.getAttrib(el, 'name')) {\r
+ m.add({title : 'advanced.link_desc', icon : 'link', cmd : ed.plugins.advlink ? 'mceAdvLink' : 'mceLink', ui : true});\r
+ m.add({title : 'advanced.unlink_desc', icon : 'unlink', cmd : 'UnLink'});\r
+ m.addSeparator();\r
+ }\r
+\r
+ if (el.nodeName == 'IMG' && el.className.indexOf('mceItem') == -1) {\r
+ m.add({title : 'advanced.image_desc', icon : 'image', cmd : ed.plugins.advimage ? 'mceAdvImage' : 'mceImage', ui : true});\r
+ m.addSeparator();\r
+ }\r
+\r
+ m.add({title : 'table.desc', icon : 'table', cmd : 'mceInsertTable', ui : true, value : {action : 'insert'}});\r
+ m.add({title : 'table.props_desc', icon : 'table_props', cmd : 'mceInsertTable', ui : true});\r
+ m.add({title : 'table.del', icon : 'delete_table', cmd : 'mceTableDelete', ui : true});\r
+ m.addSeparator();\r
+\r
+ // Cell menu\r
+ sm = m.addMenu({title : 'table.cell'});\r
+ sm.add({title : 'table.cell_desc', icon : 'cell_props', cmd : 'mceTableCellProps', ui : true});\r
+ sm.add({title : 'table.split_cells_desc', icon : 'split_cells', cmd : 'mceTableSplitCells', ui : true});\r
+ sm.add({title : 'table.merge_cells_desc', icon : 'merge_cells', cmd : 'mceTableMergeCells', ui : true});\r
+\r
+ // Row menu\r
+ sm = m.addMenu({title : 'table.row'});\r
+ sm.add({title : 'table.row_desc', icon : 'row_props', cmd : 'mceTableRowProps', ui : true});\r
+ sm.add({title : 'table.row_before_desc', icon : 'row_before', cmd : 'mceTableInsertRowBefore'});\r
+ sm.add({title : 'table.row_after_desc', icon : 'row_after', cmd : 'mceTableInsertRowAfter'});\r
+ sm.add({title : 'table.delete_row_desc', icon : 'delete_row', cmd : 'mceTableDeleteRow'});\r
+ sm.addSeparator();\r
+ sm.add({title : 'table.cut_row_desc', icon : 'cut', cmd : 'mceTableCutRow'});\r
+ sm.add({title : 'table.copy_row_desc', icon : 'copy', cmd : 'mceTableCopyRow'});\r
+ sm.add({title : 'table.paste_row_before_desc', icon : 'paste', cmd : 'mceTablePasteRowBefore'});\r
+ sm.add({title : 'table.paste_row_after_desc', icon : 'paste', cmd : 'mceTablePasteRowAfter'});\r
+\r
+ // Column menu\r
+ sm = m.addMenu({title : 'table.col'});\r
+ sm.add({title : 'table.col_before_desc', icon : 'col_before', cmd : 'mceTableInsertColBefore'});\r
+ sm.add({title : 'table.col_after_desc', icon : 'col_after', cmd : 'mceTableInsertColAfter'});\r
+ sm.add({title : 'table.delete_col_desc', icon : 'delete_col', cmd : 'mceTableDeleteCol'});\r
+ } else\r
+ m.add({title : 'table.desc', icon : 'table', cmd : 'mceInsertTable', ui : true});\r
+ });\r
+ }\r
+ });\r
+\r
+ // Add undo level when new rows are created using the tab key\r
+ ed.onKeyDown.add(function(ed, e) {\r
+ if (e.keyCode == 9 && ed.dom.getParent(ed.selection.getNode(), 'TABLE')) {\r
+ if (!tinymce.isGecko && !tinymce.isOpera) {\r
+ tinyMCE.execInstanceCommand(ed.editorId, "mceTableMoveToNextRow", true);\r
+ return tinymce.dom.Event.cancel(e);\r
+ }\r
+\r
+ ed.undoManager.add();\r
+ }\r
+ });\r
+\r
+ // Select whole table is a table border is clicked\r
+ if (!tinymce.isIE) {\r
+ if (ed.getParam('table_selection', true)) {\r
+ ed.onClick.add(function(ed, e) {\r
+ e = e.target;\r
+\r
+ if (e.nodeName === 'TABLE')\r
+ ed.selection.select(e);\r
+ });\r
+ }\r
+ }\r
+\r
+ ed.onNodeChange.add(function(ed, cm, n) {\r
+ var p = ed.dom.getParent(n, 'td,th,caption');\r
+\r
+ cm.setActive('table', n.nodeName === 'TABLE' || !!p);\r
+ if (p && p.nodeName === 'CAPTION')\r
+ p = null;\r
+\r
+ cm.setDisabled('delete_table', !p);\r
+ cm.setDisabled('delete_col', !p);\r
+ cm.setDisabled('delete_table', !p);\r
+ cm.setDisabled('delete_row', !p);\r
+ cm.setDisabled('col_after', !p);\r
+ cm.setDisabled('col_before', !p);\r
+ cm.setDisabled('row_after', !p);\r
+ cm.setDisabled('row_before', !p);\r
+ cm.setDisabled('row_props', !p);\r
+ cm.setDisabled('cell_props', !p);\r
+ cm.setDisabled('split_cells', !p || (parseInt(ed.dom.getAttrib(p, 'colspan', '1')) < 2 && parseInt(ed.dom.getAttrib(p, 'rowspan', '1')) < 2));\r
+ cm.setDisabled('merge_cells', !p);\r
+ });\r
+\r
+ // Padd empty table cells\r
+ if (!tinymce.isIE) {\r
+ ed.onBeforeSetContent.add(function(ed, o) {\r
+ if (o.initial)\r
+ o.content = o.content.replace(/<(td|th)([^>]+|)>\s*<\/(td|th)>/g, tinymce.isOpera ? '<$1$2> </$1>' : '<$1$2><br mce_bogus="1" /></$1>');\r
+ });\r
+ }\r
+ },\r
+\r
+ execCommand : function(cmd, ui, val) {\r
+ var ed = this.editor, b;\r
+\r
+ // Is table command\r
+ switch (cmd) {\r
+ case "mceTableMoveToNextRow":\r
+ case "mceInsertTable":\r
+ case "mceTableRowProps":\r
+ case "mceTableCellProps":\r
+ case "mceTableSplitCells":\r
+ case "mceTableMergeCells":\r
+ case "mceTableInsertRowBefore":\r
+ case "mceTableInsertRowAfter":\r
+ case "mceTableDeleteRow":\r
+ case "mceTableInsertColBefore":\r
+ case "mceTableInsertColAfter":\r
+ case "mceTableDeleteCol":\r
+ case "mceTableCutRow":\r
+ case "mceTableCopyRow":\r
+ case "mceTablePasteRowBefore":\r
+ case "mceTablePasteRowAfter":\r
+ case "mceTableDelete":\r
+ ed.execCommand('mceBeginUndoLevel');\r
+ this._doExecCommand(cmd, ui, val);\r
+ ed.execCommand('mceEndUndoLevel');\r
+\r
+ return true;\r
+ }\r
+\r
+ // Pass to next handler in chain\r
+ return false;\r
+ },\r
+\r
+ getInfo : function() {\r
+ return {\r
+ longname : 'Tables',\r
+ author : 'Moxiecode Systems AB',\r
+ authorurl : 'http://tinymce.moxiecode.com',\r
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/table',\r
+ version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+ };\r
+ },\r
+\r
+ // Private plugin internal methods\r
+\r
+ /**\r
+ * Executes the table commands.\r
+ */\r
+ _doExecCommand : function(command, user_interface, value) {\r
+ var inst = this.editor, ed = inst, url = this.url;\r
+ var focusElm = inst.selection.getNode();\r
+ var trElm = inst.dom.getParent(focusElm, "tr");\r
+ var tdElm = inst.dom.getParent(focusElm, "td,th");\r
+ var tableElm = inst.dom.getParent(focusElm, "table");\r
+ var doc = inst.contentWindow.document;\r
+ var tableBorder = tableElm ? tableElm.getAttribute("border") : "";\r
+\r
+ // Get first TD if no TD found\r
+ if (trElm && tdElm == null)\r
+ tdElm = trElm.cells[0];\r
+\r
+ function inArray(ar, v) {\r
+ for (var i=0; i<ar.length; i++) {\r
+ // Is array\r
+ if (ar[i].length > 0 && inArray(ar[i], v))\r
+ return true;\r
+\r
+ // Found value\r
+ if (ar[i] == v)\r
+ return true;\r
+ }\r
+\r
+ return false;\r
+ }\r
+\r
+ function select(dx, dy) {\r
+ var td;\r
+\r
+ grid = getTableGrid(tableElm);\r
+ dx = dx || 0;\r
+ dy = dy || 0;\r
+ dx = Math.max(cpos.cellindex + dx, 0);\r
+ dy = Math.max(cpos.rowindex + dy, 0);\r
+\r
+ // Recalculate grid and select\r
+ inst.execCommand('mceRepaint');\r
+ td = getCell(grid, dy, dx);\r
+\r
+ if (td) {\r
+ inst.selection.select(td.firstChild || td);\r
+ inst.selection.collapse(1);\r
+ }\r
+ };\r
+\r
+ function makeTD() {\r
+ var newTD = doc.createElement("td");\r
+\r
+ if (!tinymce.isIE)\r
+ newTD.innerHTML = '<br mce_bogus="1"/>';\r
+ }\r
+\r
+ function getColRowSpan(td) {\r
+ var colspan = inst.dom.getAttrib(td, "colspan");\r
+ var rowspan = inst.dom.getAttrib(td, "rowspan");\r
+\r
+ colspan = colspan == "" ? 1 : parseInt(colspan);\r
+ rowspan = rowspan == "" ? 1 : parseInt(rowspan);\r
+\r
+ return {colspan : colspan, rowspan : rowspan};\r
+ }\r
+\r
+ function getCellPos(grid, td) {\r
+ var x, y;\r
+\r
+ for (y=0; y<grid.length; y++) {\r
+ for (x=0; x<grid[y].length; x++) {\r
+ if (grid[y][x] == td)\r
+ return {cellindex : x, rowindex : y};\r
+ }\r
+ }\r
+\r
+ return null;\r
+ }\r
+\r
+ function getCell(grid, row, col) {\r
+ if (grid[row] && grid[row][col])\r
+ return grid[row][col];\r
+\r
+ return null;\r
+ }\r
+\r
+ function getNextCell(table, cell) {\r
+ var cells = [], x = 0, i, j, cell, nextCell;\r
+\r
+ for (i = 0; i < table.rows.length; i++)\r
+ for (j = 0; j < table.rows[i].cells.length; j++, x++)\r
+ cells[x] = table.rows[i].cells[j];\r
+\r
+ for (i = 0; i < cells.length; i++)\r
+ if (cells[i] == cell)\r
+ if (nextCell = cells[i+1])\r
+ return nextCell;\r
+ }\r
+\r
+ function getTableGrid(table) {\r
+ var grid = [], rows = table.rows, x, y, td, sd, xstart, x2, y2;\r
+\r
+ for (y=0; y<rows.length; y++) {\r
+ for (x=0; x<rows[y].cells.length; x++) {\r
+ td = rows[y].cells[x];\r
+ sd = getColRowSpan(td);\r
+\r
+ // All ready filled\r
+ for (xstart = x; grid[y] && grid[y][xstart]; xstart++) ;\r
+\r
+ // Fill box\r
+ for (y2=y; y2<y+sd['rowspan']; y2++) {\r
+ if (!grid[y2])\r
+ grid[y2] = [];\r
+\r
+ for (x2=xstart; x2<xstart+sd['colspan']; x2++)\r
+ grid[y2][x2] = td;\r
+ }\r
+ }\r
+ }\r
+\r
+ return grid;\r
+ }\r
+\r
+ function trimRow(table, tr, td, new_tr) {\r
+ var grid = getTableGrid(table), cpos = getCellPos(grid, td);\r
+ var cells, lastElm;\r
+\r
+ // Time to crop away some\r
+ if (new_tr.cells.length != tr.childNodes.length) {\r
+ cells = tr.childNodes;\r
+ lastElm = null;\r
+\r
+ for (var x=0; td = getCell(grid, cpos.rowindex, x); x++) {\r
+ var remove = true;\r
+ var sd = getColRowSpan(td);\r
+\r
+ // Remove due to rowspan\r
+ if (inArray(cells, td)) {\r
+ new_tr.childNodes[x]._delete = true;\r
+ } else if ((lastElm == null || td != lastElm) && sd.colspan > 1) { // Remove due to colspan\r
+ for (var i=x; i<x+td.colSpan; i++)\r
+ new_tr.childNodes[i]._delete = true;\r
+ }\r
+\r
+ if ((lastElm == null || td != lastElm) && sd.rowspan > 1)\r
+ td.rowSpan = sd.rowspan + 1;\r
+\r
+ lastElm = td;\r
+ }\r
+\r
+ deleteMarked(tableElm);\r
+ }\r
+ }\r
+\r
+ function prevElm(node, name) {\r
+ while ((node = node.previousSibling) != null) {\r
+ if (node.nodeName == name)\r
+ return node;\r
+ }\r
+\r
+ return null;\r
+ }\r
+\r
+ function nextElm(node, names) {\r
+ var namesAr = names.split(',');\r
+\r
+ while ((node = node.nextSibling) != null) {\r
+ for (var i=0; i<namesAr.length; i++) {\r
+ if (node.nodeName.toLowerCase() == namesAr[i].toLowerCase() )\r
+ return node;\r
+ }\r
+ }\r
+\r
+ return null;\r
+ }\r
+\r
+ function deleteMarked(tbl) {\r
+ if (tbl.rows == 0)\r
+ return;\r
+\r
+ var tr = tbl.rows[0];\r
+ do {\r
+ var next = nextElm(tr, "TR");\r
+\r
+ // Delete row\r
+ if (tr._delete) {\r
+ tr.parentNode.removeChild(tr);\r
+ continue;\r
+ }\r
+\r
+ // Delete cells\r
+ var td = tr.cells[0];\r
+ if (td.cells > 1) {\r
+ do {\r
+ var nexttd = nextElm(td, "TD,TH");\r
+\r
+ if (td._delete)\r
+ td.parentNode.removeChild(td);\r
+ } while ((td = nexttd) != null);\r
+ }\r
+ } while ((tr = next) != null);\r
+ }\r
+\r
+ function addRows(td_elm, tr_elm, rowspan) {\r
+ // Add rows\r
+ td_elm.rowSpan = 1;\r
+ var trNext = nextElm(tr_elm, "TR");\r
+ for (var i=1; i<rowspan && trNext; i++) {\r
+ var newTD = doc.createElement("td");\r
+\r
+ if (!tinymce.isIE)\r
+ newTD.innerHTML = '<br mce_bogus="1"/>';\r
+\r
+ if (tinymce.isIE)\r
+ trNext.insertBefore(newTD, trNext.cells(td_elm.cellIndex));\r
+ else\r
+ trNext.insertBefore(newTD, trNext.cells[td_elm.cellIndex]);\r
+\r
+ trNext = nextElm(trNext, "TR");\r
+ }\r
+ }\r
+\r
+ function copyRow(doc, table, tr) {\r
+ var grid = getTableGrid(table);\r
+ var newTR = tr.cloneNode(false);\r
+ var cpos = getCellPos(grid, tr.cells[0]);\r
+ var lastCell = null;\r
+ var tableBorder = inst.dom.getAttrib(table, "border");\r
+ var tdElm = null;\r
+\r
+ for (var x=0; tdElm = getCell(grid, cpos.rowindex, x); x++) {\r
+ var newTD = null;\r
+\r
+ if (lastCell != tdElm) {\r
+ for (var i=0; i<tr.cells.length; i++) {\r
+ if (tdElm == tr.cells[i]) {\r
+ newTD = tdElm.cloneNode(true);\r
+ break;\r
+ }\r
+ }\r
+ }\r
+\r
+ if (newTD == null) {\r
+ newTD = doc.createElement("td");\r
+\r
+ if (!tinymce.isIE)\r
+ newTD.innerHTML = '<br mce_bogus="1"/>';\r
+ }\r
+\r
+ // Reset col/row span\r
+ newTD.colSpan = 1;\r
+ newTD.rowSpan = 1;\r
+\r
+ newTR.appendChild(newTD);\r
+\r
+ lastCell = tdElm;\r
+ }\r
+\r
+ return newTR;\r
+ }\r
+\r
+ // ---- Commands -----\r
+\r
+ // Handle commands\r
+ switch (command) {\r
+ case "mceTableMoveToNextRow":\r
+ var nextCell = getNextCell(tableElm, tdElm);\r
+\r
+ if (!nextCell) {\r
+ inst.execCommand("mceTableInsertRowAfter", tdElm);\r
+ nextCell = getNextCell(tableElm, tdElm);\r
+ }\r
+\r
+ inst.selection.select(nextCell);\r
+ inst.selection.collapse(true);\r
+\r
+ return true;\r
+\r
+ case "mceTableRowProps":\r
+ if (trElm == null)\r
+ return true;\r
+\r
+ if (user_interface) {\r
+ inst.windowManager.open({\r
+ url : url + '/row.htm',\r
+ width : 400 + parseInt(inst.getLang('table.rowprops_delta_width', 0)),\r
+ height : 295 + parseInt(inst.getLang('table.rowprops_delta_height', 0)),\r
+ inline : 1\r
+ }, {\r
+ plugin_url : url\r
+ });\r
+ }\r
+\r
+ return true;\r
+\r
+ case "mceTableCellProps":\r
+ if (tdElm == null)\r
+ return true;\r
+\r
+ if (user_interface) {\r
+ inst.windowManager.open({\r
+ url : url + '/cell.htm',\r
+ width : 400 + parseInt(inst.getLang('table.cellprops_delta_width', 0)),\r
+ height : 295 + parseInt(inst.getLang('table.cellprops_delta_height', 0)),\r
+ inline : 1\r
+ }, {\r
+ plugin_url : url\r
+ });\r
+ }\r
+\r
+ return true;\r
+\r
+ case "mceInsertTable":\r
+ if (user_interface) {\r
+ inst.windowManager.open({\r
+ url : url + '/table.htm',\r
+ width : 400 + parseInt(inst.getLang('table.table_delta_width', 0)),\r
+ height : 320 + parseInt(inst.getLang('table.table_delta_height', 0)),\r
+ inline : 1\r
+ }, {\r
+ plugin_url : url,\r
+ action : value ? value.action : 0\r
+ });\r
+ }\r
+\r
+ return true;\r
+\r
+ case "mceTableDelete":\r
+ var table = inst.dom.getParent(inst.selection.getNode(), "table");\r
+ if (table) {\r
+ table.parentNode.removeChild(table);\r
+ inst.execCommand('mceRepaint');\r
+ }\r
+ return true;\r
+\r
+ case "mceTableSplitCells":\r
+ case "mceTableMergeCells":\r
+ case "mceTableInsertRowBefore":\r
+ case "mceTableInsertRowAfter":\r
+ case "mceTableDeleteRow":\r
+ case "mceTableInsertColBefore":\r
+ case "mceTableInsertColAfter":\r
+ case "mceTableDeleteCol":\r
+ case "mceTableCutRow":\r
+ case "mceTableCopyRow":\r
+ case "mceTablePasteRowBefore":\r
+ case "mceTablePasteRowAfter":\r
+ // No table just return (invalid command)\r
+ if (!tableElm)\r
+ return true;\r
+\r
+ // Table has a tbody use that reference\r
+ // Changed logic by ApTest 2005.07.12 (www.aptest.com)\r
+ // Now lookk at the focused element and take its parentNode. That will be a tbody or a table.\r
+ if (trElm && tableElm != trElm.parentNode)\r
+ tableElm = trElm.parentNode;\r
+\r
+ if (tableElm && trElm) {\r
+ switch (command) {\r
+ case "mceTableCutRow":\r
+ if (!trElm || !tdElm)\r
+ return true;\r
+\r
+ inst.tableRowClipboard = copyRow(doc, tableElm, trElm);\r
+ inst.execCommand("mceTableDeleteRow");\r
+ break;\r
+\r
+ case "mceTableCopyRow":\r
+ if (!trElm || !tdElm)\r
+ return true;\r
+\r
+ inst.tableRowClipboard = copyRow(doc, tableElm, trElm);\r
+ break;\r
+\r
+ case "mceTablePasteRowBefore":\r
+ if (!trElm || !tdElm)\r
+ return true;\r
+\r
+ var newTR = inst.tableRowClipboard.cloneNode(true);\r
+\r
+ var prevTR = prevElm(trElm, "TR");\r
+ if (prevTR != null)\r
+ trimRow(tableElm, prevTR, prevTR.cells[0], newTR);\r
+\r
+ trElm.parentNode.insertBefore(newTR, trElm);\r
+ break;\r
+\r
+ case "mceTablePasteRowAfter":\r
+ if (!trElm || !tdElm)\r
+ return true;\r
+ \r
+ var nextTR = nextElm(trElm, "TR");\r
+ var newTR = inst.tableRowClipboard.cloneNode(true);\r
+\r
+ trimRow(tableElm, trElm, tdElm, newTR);\r
+\r
+ if (nextTR == null)\r
+ trElm.parentNode.appendChild(newTR);\r
+ else\r
+ nextTR.parentNode.insertBefore(newTR, nextTR);\r
+\r
+ break;\r
+\r
+ case "mceTableInsertRowBefore":\r
+ if (!trElm || !tdElm)\r
+ return true;\r
+\r
+ var grid = getTableGrid(tableElm);\r
+ var cpos = getCellPos(grid, tdElm);\r
+ var newTR = doc.createElement("tr");\r
+ var lastTDElm = null;\r
+\r
+ cpos.rowindex--;\r
+ if (cpos.rowindex < 0)\r
+ cpos.rowindex = 0;\r
+\r
+ // Create cells\r
+ for (var x=0; tdElm = getCell(grid, cpos.rowindex, x); x++) {\r
+ if (tdElm != lastTDElm) {\r
+ var sd = getColRowSpan(tdElm);\r
+\r
+ if (sd['rowspan'] == 1) {\r
+ var newTD = doc.createElement("td");\r
+\r
+ if (!tinymce.isIE)\r
+ newTD.innerHTML = '<br mce_bogus="1"/>';\r
+\r
+ newTD.colSpan = tdElm.colSpan;\r
+\r
+ newTR.appendChild(newTD);\r
+ } else\r
+ tdElm.rowSpan = sd['rowspan'] + 1;\r
+\r
+ lastTDElm = tdElm;\r
+ }\r
+ }\r
+\r
+ trElm.parentNode.insertBefore(newTR, trElm);\r
+ select(0, 1);\r
+ break;\r
+\r
+ case "mceTableInsertRowAfter":\r
+ if (!trElm || !tdElm)\r
+ return true;\r
+\r
+ var grid = getTableGrid(tableElm);\r
+ var cpos = getCellPos(grid, tdElm);\r
+ var newTR = doc.createElement("tr");\r
+ var lastTDElm = null;\r
+\r
+ // Create cells\r
+ for (var x=0; tdElm = getCell(grid, cpos.rowindex, x); x++) {\r
+ if (tdElm != lastTDElm) {\r
+ var sd = getColRowSpan(tdElm);\r
+\r
+ if (sd['rowspan'] == 1) {\r
+ var newTD = doc.createElement("td");\r
+\r
+ if (!tinymce.isIE)\r
+ newTD.innerHTML = '<br mce_bogus="1"/>';\r
+\r
+ newTD.colSpan = tdElm.colSpan;\r
+\r
+ newTR.appendChild(newTD);\r
+ } else\r
+ tdElm.rowSpan = sd['rowspan'] + 1;\r
+\r
+ lastTDElm = tdElm;\r
+ }\r
+ }\r
+\r
+ if (newTR.hasChildNodes()) {\r
+ var nextTR = nextElm(trElm, "TR");\r
+ if (nextTR)\r
+ nextTR.parentNode.insertBefore(newTR, nextTR);\r
+ else\r
+ tableElm.appendChild(newTR);\r
+ }\r
+\r
+ select(0, 1);\r
+ break;\r
+\r
+ case "mceTableDeleteRow":\r
+ if (!trElm || !tdElm)\r
+ return true;\r
+\r
+ var grid = getTableGrid(tableElm);\r
+ var cpos = getCellPos(grid, tdElm);\r
+\r
+ // Only one row, remove whole table\r
+ if (grid.length == 1 && tableElm.nodeName == 'TBODY') {\r
+ inst.dom.remove(inst.dom.getParent(tableElm, "table"));\r
+ return true;\r
+ }\r
+\r
+ // Move down row spanned cells\r
+ var cells = trElm.cells;\r
+ var nextTR = nextElm(trElm, "TR");\r
+ for (var x=0; x<cells.length; x++) {\r
+ if (cells[x].rowSpan > 1) {\r
+ var newTD = cells[x].cloneNode(true);\r
+ var sd = getColRowSpan(cells[x]);\r
+\r
+ newTD.rowSpan = sd.rowspan - 1;\r
+\r
+ var nextTD = nextTR.cells[x];\r
+\r
+ if (nextTD == null)\r
+ nextTR.appendChild(newTD);\r
+ else\r
+ nextTR.insertBefore(newTD, nextTD);\r
+ }\r
+ }\r
+\r
+ // Delete cells\r
+ var lastTDElm = null;\r
+ for (var x=0; tdElm = getCell(grid, cpos.rowindex, x); x++) {\r
+ if (tdElm != lastTDElm) {\r
+ var sd = getColRowSpan(tdElm);\r
+\r
+ if (sd.rowspan > 1) {\r
+ tdElm.rowSpan = sd.rowspan - 1;\r
+ } else {\r
+ trElm = tdElm.parentNode;\r
+\r
+ if (trElm.parentNode)\r
+ trElm._delete = true;\r
+ }\r
+\r
+ lastTDElm = tdElm;\r
+ }\r
+ }\r
+\r
+ deleteMarked(tableElm);\r
+\r
+ select(0, -1);\r
+ break;\r
+\r
+ case "mceTableInsertColBefore":\r
+ if (!trElm || !tdElm)\r
+ return true;\r
+\r
+ var grid = getTableGrid(tableElm);\r
+ var cpos = getCellPos(grid, tdElm);\r
+ var lastTDElm = null;\r
+\r
+ for (var y=0; tdElm = getCell(grid, y, cpos.cellindex); y++) {\r
+ if (tdElm != lastTDElm) {\r
+ var sd = getColRowSpan(tdElm);\r
+\r
+ if (sd['colspan'] == 1) {\r
+ var newTD = doc.createElement(tdElm.nodeName);\r
+\r
+ if (!tinymce.isIE)\r
+ newTD.innerHTML = '<br mce_bogus="1"/>';\r
+\r
+ newTD.rowSpan = tdElm.rowSpan;\r
+\r
+ tdElm.parentNode.insertBefore(newTD, tdElm);\r
+ } else\r
+ tdElm.colSpan++;\r
+\r
+ lastTDElm = tdElm;\r
+ }\r
+ }\r
+\r
+ select();\r
+ break;\r
+\r
+ case "mceTableInsertColAfter":\r
+ if (!trElm || !tdElm)\r
+ return true;\r
+\r
+ var grid = getTableGrid(tableElm);\r
+ var cpos = getCellPos(grid, tdElm);\r
+ var lastTDElm = null;\r
+\r
+ for (var y=0; tdElm = getCell(grid, y, cpos.cellindex); y++) {\r
+ if (tdElm != lastTDElm) {\r
+ var sd = getColRowSpan(tdElm);\r
+\r
+ if (sd['colspan'] == 1) {\r
+ var newTD = doc.createElement(tdElm.nodeName);\r
+\r
+ if (!tinymce.isIE)\r
+ newTD.innerHTML = '<br mce_bogus="1"/>';\r
+\r
+ newTD.rowSpan = tdElm.rowSpan;\r
+\r
+ var nextTD = nextElm(tdElm, "TD,TH");\r
+ if (nextTD == null)\r
+ tdElm.parentNode.appendChild(newTD);\r
+ else\r
+ nextTD.parentNode.insertBefore(newTD, nextTD);\r
+ } else\r
+ tdElm.colSpan++;\r
+\r
+ lastTDElm = tdElm;\r
+ }\r
+ }\r
+\r
+ select(1);\r
+ break;\r
+\r
+ case "mceTableDeleteCol":\r
+ if (!trElm || !tdElm)\r
+ return true;\r
+\r
+ var grid = getTableGrid(tableElm);\r
+ var cpos = getCellPos(grid, tdElm);\r
+ var lastTDElm = null;\r
+\r
+ // Only one col, remove whole table\r
+ if ((grid.length > 1 && grid[0].length <= 1) && tableElm.nodeName == 'TBODY') {\r
+ inst.dom.remove(inst.dom.getParent(tableElm, "table"));\r
+ return true;\r
+ }\r
+\r
+ // Delete cells\r
+ for (var y=0; tdElm = getCell(grid, y, cpos.cellindex); y++) {\r
+ if (tdElm != lastTDElm) {\r
+ var sd = getColRowSpan(tdElm);\r
+\r
+ if (sd['colspan'] > 1)\r
+ tdElm.colSpan = sd['colspan'] - 1;\r
+ else {\r
+ if (tdElm.parentNode)\r
+ tdElm.parentNode.removeChild(tdElm);\r
+ }\r
+\r
+ lastTDElm = tdElm;\r
+ }\r
+ }\r
+\r
+ select(-1);\r
+ break;\r
+\r
+ case "mceTableSplitCells":\r
+ if (!trElm || !tdElm)\r
+ return true;\r
+\r
+ var spandata = getColRowSpan(tdElm);\r
+\r
+ var colspan = spandata["colspan"];\r
+ var rowspan = spandata["rowspan"];\r
+\r
+ // Needs splitting\r
+ if (colspan > 1 || rowspan > 1) {\r
+ // Generate cols\r
+ tdElm.colSpan = 1;\r
+ for (var i=1; i<colspan; i++) {\r
+ var newTD = doc.createElement("td");\r
+\r
+ if (!tinymce.isIE)\r
+ newTD.innerHTML = '<br mce_bogus="1"/>';\r
+\r
+ trElm.insertBefore(newTD, nextElm(tdElm, "TD,TH"));\r
+\r
+ if (rowspan > 1)\r
+ addRows(newTD, trElm, rowspan);\r
+ }\r
+\r
+ addRows(tdElm, trElm, rowspan);\r
+ }\r
+\r
+ // Apply visual aids\r
+ tableElm = inst.dom.getParent(inst.selection.getNode(), "table");\r
+ break;\r
+\r
+ case "mceTableMergeCells":\r
+ var rows = [];\r
+ var sel = inst.selection.getSel();\r
+ var grid = getTableGrid(tableElm);\r
+\r
+ if (tinymce.isIE || sel.rangeCount == 1) {\r
+ if (user_interface) {\r
+ // Setup template\r
+ var sp = getColRowSpan(tdElm);\r
+\r
+ inst.windowManager.open({\r
+ url : url + '/merge_cells.htm',\r
+ width : 240 + parseInt(inst.getLang('table.merge_cells_delta_width', 0)),\r
+ height : 110 + parseInt(inst.getLang('table.merge_cells_delta_height', 0)),\r
+ inline : 1\r
+ }, {\r
+ action : "update",\r
+ numcols : sp.colspan,\r
+ numrows : sp.rowspan,\r
+ plugin_url : url\r
+ });\r
+\r
+ return true;\r
+ } else {\r
+ var numRows = parseInt(value['numrows']);\r
+ var numCols = parseInt(value['numcols']);\r
+ var cpos = getCellPos(grid, tdElm);\r
+\r
+ if (("" + numRows) == "NaN")\r
+ numRows = 1;\r
+\r
+ if (("" + numCols) == "NaN")\r
+ numCols = 1;\r
+\r
+ // Get rows and cells\r
+ var tRows = tableElm.rows;\r
+ for (var y=cpos.rowindex; y<grid.length; y++) {\r
+ var rowCells = [];\r
+\r
+ for (var x=cpos.cellindex; x<grid[y].length; x++) {\r
+ var td = getCell(grid, y, x);\r
+\r
+ if (td && !inArray(rows, td) && !inArray(rowCells, td)) {\r
+ var cp = getCellPos(grid, td);\r
+\r
+ // Within range\r
+ if (cp.cellindex < cpos.cellindex+numCols && cp.rowindex < cpos.rowindex+numRows)\r
+ rowCells[rowCells.length] = td;\r
+ }\r
+ }\r
+\r
+ if (rowCells.length > 0)\r
+ rows[rows.length] = rowCells;\r
+\r
+ var td = getCell(grid, cpos.rowindex, cpos.cellindex);\r
+ each(ed.dom.select('br', td), function(e, i) {\r
+ if (i > 0 && ed.dom.getAttrib('mce_bogus'))\r
+ ed.dom.remove(e);\r
+ });\r
+ }\r
+\r
+ //return true;\r
+ }\r
+ } else {\r
+ var cells = [];\r
+ var sel = inst.selection.getSel();\r
+ var lastTR = null;\r
+ var curRow = null;\r
+ var x1 = -1, y1 = -1, x2, y2;\r
+\r
+ // Only one cell selected, whats the point?\r
+ if (sel.rangeCount < 2)\r
+ return true;\r
+\r
+ // Get all selected cells\r
+ for (var i=0; i<sel.rangeCount; i++) {\r
+ var rng = sel.getRangeAt(i);\r
+ var tdElm = rng.startContainer.childNodes[rng.startOffset];\r
+\r
+ if (!tdElm)\r
+ break;\r
+\r
+ if (tdElm.nodeName == "TD" || tdElm.nodeName == "TH")\r
+ cells[cells.length] = tdElm;\r
+ }\r
+\r
+ // Get rows and cells\r
+ var tRows = tableElm.rows;\r
+ for (var y=0; y<tRows.length; y++) {\r
+ var rowCells = [];\r
+\r
+ for (var x=0; x<tRows[y].cells.length; x++) {\r
+ var td = tRows[y].cells[x];\r
+\r
+ for (var i=0; i<cells.length; i++) {\r
+ if (td == cells[i]) {\r
+ rowCells[rowCells.length] = td;\r
+ }\r
+ }\r
+ }\r
+\r
+ if (rowCells.length > 0)\r
+ rows[rows.length] = rowCells;\r
+ }\r
+\r
+ // Find selected cells in grid and box\r
+ var curRow = [];\r
+ var lastTR = null;\r
+ for (var y=0; y<grid.length; y++) {\r
+ for (var x=0; x<grid[y].length; x++) {\r
+ grid[y][x]._selected = false;\r
+\r
+ for (var i=0; i<cells.length; i++) {\r
+ if (grid[y][x] == cells[i]) {\r
+ // Get start pos\r
+ if (x1 == -1) {\r
+ x1 = x;\r
+ y1 = y;\r
+ }\r
+\r
+ // Get end pos\r
+ x2 = x;\r
+ y2 = y;\r
+\r
+ grid[y][x]._selected = true;\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
+ // Is there gaps, if so deny\r
+ for (var y=y1; y<=y2; y++) {\r
+ for (var x=x1; x<=x2; x++) {\r
+ if (!grid[y][x]._selected) {\r
+ alert("Invalid selection for merge.");\r
+ return true;\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
+ // Validate selection and get total rowspan and colspan\r
+ var rowSpan = 1, colSpan = 1;\r
+\r
+ // Validate horizontal and get total colspan\r
+ var lastRowSpan = -1;\r
+ for (var y=0; y<rows.length; y++) {\r
+ var rowColSpan = 0;\r
+\r
+ for (var x=0; x<rows[y].length; x++) {\r
+ var sd = getColRowSpan(rows[y][x]);\r
+\r
+ rowColSpan += sd['colspan'];\r
+\r
+ if (lastRowSpan != -1 && sd['rowspan'] != lastRowSpan) {\r
+ alert("Invalid selection for merge.");\r
+ return true;\r
+ }\r
+\r
+ lastRowSpan = sd['rowspan'];\r
+ }\r
+\r
+ if (rowColSpan > colSpan)\r
+ colSpan = rowColSpan;\r
+\r
+ lastRowSpan = -1;\r
+ }\r
+\r
+ // Validate vertical and get total rowspan\r
+ var lastColSpan = -1;\r
+ for (var x=0; x<rows[0].length; x++) {\r
+ var colRowSpan = 0;\r
+\r
+ for (var y=0; y<rows.length; y++) {\r
+ var sd = getColRowSpan(rows[y][x]);\r
+\r
+ colRowSpan += sd['rowspan'];\r
+\r
+ if (lastColSpan != -1 && sd['colspan'] != lastColSpan) {\r
+ alert("Invalid selection for merge.");\r
+ return true;\r
+ }\r
+\r
+ lastColSpan = sd['colspan'];\r
+ }\r
+\r
+ if (colRowSpan > rowSpan)\r
+ rowSpan = colRowSpan;\r
+\r
+ lastColSpan = -1;\r
+ }\r
+\r
+ // Setup td\r
+ tdElm = rows[0][0];\r
+ tdElm.rowSpan = rowSpan;\r
+ tdElm.colSpan = colSpan;\r
+\r
+ // Merge cells\r
+ for (var y=0; y<rows.length; y++) {\r
+ for (var x=0; x<rows[y].length; x++) {\r
+ var html = rows[y][x].innerHTML;\r
+ var chk = html.replace(/[ \t\r\n]/g, "");\r
+\r
+ if (chk != "<br/>" && chk != "<br>" && chk != '<br mce_bogus="1"/>' && (x+y > 0))\r
+ tdElm.innerHTML += html;\r
+\r
+ // Not current cell\r
+ if (rows[y][x] != tdElm && !rows[y][x]._deleted) {\r
+ var cpos = getCellPos(grid, rows[y][x]);\r
+ var tr = rows[y][x].parentNode;\r
+\r
+ tr.removeChild(rows[y][x]);\r
+ rows[y][x]._deleted = true;\r
+\r
+ // Empty TR, remove it\r
+ if (!tr.hasChildNodes()) {\r
+ tr.parentNode.removeChild(tr);\r
+\r
+ var lastCell = null;\r
+ for (var x=0; cellElm = getCell(grid, cpos.rowindex, x); x++) {\r
+ if (cellElm != lastCell && cellElm.rowSpan > 1)\r
+ cellElm.rowSpan--;\r
+\r
+ lastCell = cellElm;\r
+ }\r
+\r
+ if (tdElm.rowSpan > 1)\r
+ tdElm.rowSpan--;\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
+ // Remove all but one bogus br\r
+ each(ed.dom.select('br', tdElm), function(e, i) {\r
+ if (i > 0 && ed.dom.getAttrib(e, 'mce_bogus'))\r
+ ed.dom.remove(e);\r
+ });\r
+\r
+ break;\r
+ }\r
+\r
+ tableElm = inst.dom.getParent(inst.selection.getNode(), "table");\r
+ inst.addVisual(tableElm);\r
+ inst.nodeChanged();\r
+ }\r
+\r
+ return true;\r
+ }\r
+\r
+ // Pass to next handler in chain\r
+ return false;\r
+ }\r
+ });\r
+\r
+ // Register plugin\r
+ tinymce.PluginManager.add('table', tinymce.plugins.TablePlugin);\r
+})();
\ No newline at end of file
--- /dev/null
+tinyMCEPopup.requireLangPack();\r
+\r
+var ed;\r
+\r
+function init() {\r
+ ed = tinyMCEPopup.editor;\r
+ tinyMCEPopup.resizeToInnerSize();\r
+\r
+ document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');\r
+ document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor');\r
+ document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor')\r
+\r
+ var inst = ed;\r
+ var tdElm = ed.dom.getParent(ed.selection.getNode(), "td,th");\r
+ var formObj = document.forms[0];\r
+ var st = ed.dom.parseStyle(ed.dom.getAttrib(tdElm, "style"));\r
+\r
+ // Get table cell data\r
+ var celltype = tdElm.nodeName.toLowerCase();\r
+ var align = ed.dom.getAttrib(tdElm, 'align');\r
+ var valign = ed.dom.getAttrib(tdElm, 'valign');\r
+ var width = trimSize(getStyle(tdElm, 'width', 'width'));\r
+ var height = trimSize(getStyle(tdElm, 'height', 'height'));\r
+ var bordercolor = convertRGBToHex(getStyle(tdElm, 'bordercolor', 'borderLeftColor'));\r
+ var bgcolor = convertRGBToHex(getStyle(tdElm, 'bgcolor', 'backgroundColor'));\r
+ var className = ed.dom.getAttrib(tdElm, 'class');\r
+ var backgroundimage = getStyle(tdElm, 'background', 'backgroundImage').replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");;\r
+ var id = ed.dom.getAttrib(tdElm, 'id');\r
+ var lang = ed.dom.getAttrib(tdElm, 'lang');\r
+ var dir = ed.dom.getAttrib(tdElm, 'dir');\r
+ var scope = ed.dom.getAttrib(tdElm, 'scope');\r
+\r
+ // Setup form\r
+ addClassesToList('class', 'table_cell_styles');\r
+ TinyMCE_EditableSelects.init();\r
+\r
+ formObj.bordercolor.value = bordercolor;\r
+ formObj.bgcolor.value = bgcolor;\r
+ formObj.backgroundimage.value = backgroundimage;\r
+ formObj.width.value = width;\r
+ formObj.height.value = height;\r
+ formObj.id.value = id;\r
+ formObj.lang.value = lang;\r
+ formObj.style.value = ed.dom.serializeStyle(st);\r
+ selectByValue(formObj, 'align', align);\r
+ selectByValue(formObj, 'valign', valign);\r
+ selectByValue(formObj, 'class', className, true, true);\r
+ selectByValue(formObj, 'celltype', celltype);\r
+ selectByValue(formObj, 'dir', dir);\r
+ selectByValue(formObj, 'scope', scope);\r
+\r
+ // Resize some elements\r
+ if (isVisible('backgroundimagebrowser'))\r
+ document.getElementById('backgroundimage').style.width = '180px';\r
+\r
+ updateColor('bordercolor_pick', 'bordercolor');\r
+ updateColor('bgcolor_pick', 'bgcolor');\r
+}\r
+\r
+function updateAction() {\r
+ var el, inst = ed, tdElm, trElm, tableElm, formObj = document.forms[0];\r
+\r
+ tinyMCEPopup.restoreSelection();\r
+ el = ed.selection.getNode();\r
+ tdElm = ed.dom.getParent(el, "td,th");\r
+ trElm = ed.dom.getParent(el, "tr");\r
+ tableElm = ed.dom.getParent(el, "table");\r
+\r
+ ed.execCommand('mceBeginUndoLevel');\r
+\r
+ switch (getSelectValue(formObj, 'action')) {\r
+ case "cell":\r
+ var celltype = getSelectValue(formObj, 'celltype');\r
+ var scope = getSelectValue(formObj, 'scope');\r
+\r
+ if (ed.getParam("accessibility_warnings", 1)) {\r
+ if (celltype == "th" && scope == "") {\r
+ tinyMCEPopup.confirm(ed.getLang('table_dlg.missing_scope', '', true), function(s) {\r
+ if (s) {\r
+ updateCell(tdElm);\r
+\r
+ ed.addVisual();\r
+ ed.nodeChanged();\r
+ inst.execCommand('mceEndUndoLevel');\r
+ tinyMCEPopup.close();\r
+ }\r
+ });\r
+ }\r
+\r
+ return;\r
+ }\r
+\r
+ updateCell(tdElm);\r
+ break;\r
+\r
+ case "row":\r
+ var cell = trElm.firstChild;\r
+\r
+ if (cell.nodeName != "TD" && cell.nodeName != "TH")\r
+ cell = nextCell(cell);\r
+\r
+ do {\r
+ cell = updateCell(cell, true);\r
+ } while ((cell = nextCell(cell)) != null);\r
+\r
+ break;\r
+\r
+ case "all":\r
+ var rows = tableElm.getElementsByTagName("tr");\r
+\r
+ for (var i=0; i<rows.length; i++) {\r
+ var cell = rows[i].firstChild;\r
+\r
+ if (cell.nodeName != "TD" && cell.nodeName != "TH")\r
+ cell = nextCell(cell);\r
+\r
+ do {\r
+ cell = updateCell(cell, true);\r
+ } while ((cell = nextCell(cell)) != null);\r
+ }\r
+\r
+ break;\r
+ }\r
+\r
+ ed.addVisual();\r
+ ed.nodeChanged();\r
+ inst.execCommand('mceEndUndoLevel');\r
+ tinyMCEPopup.close();\r
+}\r
+\r
+function nextCell(elm) {\r
+ while ((elm = elm.nextSibling) != null) {\r
+ if (elm.nodeName == "TD" || elm.nodeName == "TH")\r
+ return elm;\r
+ }\r
+\r
+ return null;\r
+}\r
+\r
+function updateCell(td, skip_id) {\r
+ var inst = ed;\r
+ var formObj = document.forms[0];\r
+ var curCellType = td.nodeName.toLowerCase();\r
+ var celltype = getSelectValue(formObj, 'celltype');\r
+ var doc = inst.getDoc();\r
+ var dom = ed.dom;\r
+\r
+ if (!skip_id)\r
+ td.setAttribute('id', formObj.id.value);\r
+\r
+ td.setAttribute('align', formObj.align.value);\r
+ td.setAttribute('vAlign', formObj.valign.value);\r
+ td.setAttribute('lang', formObj.lang.value);\r
+ td.setAttribute('dir', getSelectValue(formObj, 'dir'));\r
+ td.setAttribute('style', ed.dom.serializeStyle(ed.dom.parseStyle(formObj.style.value)));\r
+ td.setAttribute('scope', formObj.scope.value);\r
+ ed.dom.setAttrib(td, 'class', getSelectValue(formObj, 'class'));\r
+\r
+ // Clear deprecated attributes\r
+ ed.dom.setAttrib(td, 'width', '');\r
+ ed.dom.setAttrib(td, 'height', '');\r
+ ed.dom.setAttrib(td, 'bgColor', '');\r
+ ed.dom.setAttrib(td, 'borderColor', '');\r
+ ed.dom.setAttrib(td, 'background', '');\r
+\r
+ // Set styles\r
+ td.style.width = getCSSSize(formObj.width.value);\r
+ td.style.height = getCSSSize(formObj.height.value);\r
+ if (formObj.bordercolor.value != "") {\r
+ td.style.borderColor = formObj.bordercolor.value;\r
+ td.style.borderStyle = td.style.borderStyle == "" ? "solid" : td.style.borderStyle;\r
+ td.style.borderWidth = td.style.borderWidth == "" ? "1px" : td.style.borderWidth;\r
+ } else\r
+ td.style.borderColor = '';\r
+\r
+ td.style.backgroundColor = formObj.bgcolor.value;\r
+\r
+ if (formObj.backgroundimage.value != "")\r
+ td.style.backgroundImage = "url('" + formObj.backgroundimage.value + "')";\r
+ else\r
+ td.style.backgroundImage = '';\r
+\r
+ if (curCellType != celltype) {\r
+ // changing to a different node type\r
+ var newCell = doc.createElement(celltype);\r
+\r
+ for (var c=0; c<td.childNodes.length; c++)\r
+ newCell.appendChild(td.childNodes[c].cloneNode(1));\r
+\r
+ for (var a=0; a<td.attributes.length; a++)\r
+ ed.dom.setAttrib(newCell, td.attributes[a].name, ed.dom.getAttrib(td, td.attributes[a].name));\r
+\r
+ td.parentNode.replaceChild(newCell, td);\r
+ td = newCell;\r
+ }\r
+\r
+ dom.setAttrib(td, 'style', dom.serializeStyle(dom.parseStyle(td.style.cssText)));\r
+\r
+ return td;\r
+}\r
+\r
+function changedBackgroundImage() {\r
+ var formObj = document.forms[0];\r
+ var st = ed.dom.parseStyle(formObj.style.value);\r
+\r
+ st['background-image'] = "url('" + formObj.backgroundimage.value + "')";\r
+\r
+ formObj.style.value = ed.dom.serializeStyle(st);\r
+}\r
+\r
+function changedSize() {\r
+ var formObj = document.forms[0];\r
+ var st = ed.dom.parseStyle(formObj.style.value);\r
+\r
+ var width = formObj.width.value;\r
+ if (width != "")\r
+ st['width'] = getCSSSize(width);\r
+ else\r
+ st['width'] = "";\r
+\r
+ var height = formObj.height.value;\r
+ if (height != "")\r
+ st['height'] = getCSSSize(height);\r
+ else\r
+ st['height'] = "";\r
+\r
+ formObj.style.value = ed.dom.serializeStyle(st);\r
+}\r
+\r
+function changedColor() {\r
+ var formObj = document.forms[0];\r
+ var st = ed.dom.parseStyle(formObj.style.value);\r
+\r
+ st['background-color'] = formObj.bgcolor.value;\r
+ st['border-color'] = formObj.bordercolor.value;\r
+\r
+ formObj.style.value = ed.dom.serializeStyle(st);\r
+}\r
+\r
+function changedStyle() {\r
+ var formObj = document.forms[0];\r
+ var st = ed.dom.parseStyle(formObj.style.value);\r
+\r
+ if (st['background-image'])\r
+ formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");\r
+ else\r
+ formObj.backgroundimage.value = '';\r
+\r
+ if (st['width'])\r
+ formObj.width.value = trimSize(st['width']);\r
+\r
+ if (st['height'])\r
+ formObj.height.value = trimSize(st['height']);\r
+\r
+ if (st['background-color']) {\r
+ formObj.bgcolor.value = st['background-color'];\r
+ updateColor('bgcolor_pick','bgcolor');\r
+ }\r
+\r
+ if (st['border-color']) {\r
+ formObj.bordercolor.value = st['border-color'];\r
+ updateColor('bordercolor_pick','bordercolor');\r
+ }\r
+}\r
+\r
+tinyMCEPopup.onInit.add(init);\r
--- /dev/null
+tinyMCEPopup.requireLangPack();\r
+\r
+function init() {\r
+ var f = document.forms[0], v;\r
+\r
+ tinyMCEPopup.resizeToInnerSize();\r
+\r
+ f.numcols.value = tinyMCEPopup.getWindowArg('numcols', 1);\r
+ f.numrows.value = tinyMCEPopup.getWindowArg('numrows', 1);\r
+}\r
+\r
+function mergeCells() {\r
+ var args = [], f = document.forms[0];\r
+\r
+ tinyMCEPopup.restoreSelection();\r
+\r
+ if (!AutoValidator.validate(f)) {\r
+ tinyMCEPopup.alert(tinyMCEPopup.getLang('invalid_data'));\r
+ return false;\r
+ }\r
+\r
+ args["numcols"] = f.numcols.value;\r
+ args["numrows"] = f.numrows.value;\r
+\r
+ tinyMCEPopup.execCommand("mceTableMergeCells", false, args);\r
+ tinyMCEPopup.close();\r
+}\r
+\r
+tinyMCEPopup.onInit.add(init);\r
--- /dev/null
+tinyMCEPopup.requireLangPack();\r
+\r
+function init() {\r
+ tinyMCEPopup.resizeToInnerSize();\r
+\r
+ document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');\r
+ document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');\r
+\r
+ var inst = tinyMCEPopup.editor;\r
+ var dom = inst.dom;\r
+ var trElm = dom.getParent(inst.selection.getNode(), "tr");\r
+ var formObj = document.forms[0];\r
+ var st = dom.parseStyle(dom.getAttrib(trElm, "style"));\r
+\r
+ // Get table row data\r
+ var rowtype = trElm.parentNode.nodeName.toLowerCase();\r
+ var align = dom.getAttrib(trElm, 'align');\r
+ var valign = dom.getAttrib(trElm, 'valign');\r
+ var height = trimSize(getStyle(trElm, 'height', 'height'));\r
+ var className = dom.getAttrib(trElm, 'class');\r
+ var bgcolor = convertRGBToHex(getStyle(trElm, 'bgcolor', 'backgroundColor'));\r
+ var backgroundimage = getStyle(trElm, 'background', 'backgroundImage').replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");;\r
+ var id = dom.getAttrib(trElm, 'id');\r
+ var lang = dom.getAttrib(trElm, 'lang');\r
+ var dir = dom.getAttrib(trElm, 'dir');\r
+\r
+ // Setup form\r
+ addClassesToList('class', 'table_row_styles');\r
+ TinyMCE_EditableSelects.init();\r
+\r
+ formObj.bgcolor.value = bgcolor;\r
+ formObj.backgroundimage.value = backgroundimage;\r
+ formObj.height.value = height;\r
+ formObj.id.value = id;\r
+ formObj.lang.value = lang;\r
+ formObj.style.value = dom.serializeStyle(st);\r
+ selectByValue(formObj, 'align', align);\r
+ selectByValue(formObj, 'valign', valign);\r
+ selectByValue(formObj, 'class', className, true, true);\r
+ selectByValue(formObj, 'rowtype', rowtype);\r
+ selectByValue(formObj, 'dir', dir);\r
+\r
+ // Resize some elements\r
+ if (isVisible('backgroundimagebrowser'))\r
+ document.getElementById('backgroundimage').style.width = '180px';\r
+\r
+ updateColor('bgcolor_pick', 'bgcolor');\r
+}\r
+\r
+function updateAction() {\r
+ var inst = tinyMCEPopup.editor, dom = inst.dom, trElm, tableElm, formObj = document.forms[0];\r
+ var action = getSelectValue(formObj, 'action');\r
+\r
+ tinyMCEPopup.restoreSelection();\r
+ trElm = dom.getParent(inst.selection.getNode(), "tr");\r
+ tableElm = dom.getParent(inst.selection.getNode(), "table");\r
+\r
+ inst.execCommand('mceBeginUndoLevel');\r
+\r
+ switch (action) {\r
+ case "row":\r
+ updateRow(trElm);\r
+ break;\r
+\r
+ case "all":\r
+ var rows = tableElm.getElementsByTagName("tr");\r
+\r
+ for (var i=0; i<rows.length; i++)\r
+ updateRow(rows[i], true);\r
+\r
+ break;\r
+\r
+ case "odd":\r
+ case "even":\r
+ var rows = tableElm.getElementsByTagName("tr");\r
+\r
+ for (var i=0; i<rows.length; i++) {\r
+ if ((i % 2 == 0 && action == "odd") || (i % 2 != 0 && action == "even"))\r
+ updateRow(rows[i], true, true);\r
+ }\r
+\r
+ break;\r
+ }\r
+\r
+ inst.addVisual();\r
+ inst.nodeChanged();\r
+ inst.execCommand('mceEndUndoLevel');\r
+ tinyMCEPopup.close();\r
+}\r
+\r
+function updateRow(tr_elm, skip_id, skip_parent) {\r
+ var inst = tinyMCEPopup.editor;\r
+ var formObj = document.forms[0];\r
+ var dom = inst.dom;\r
+ var curRowType = tr_elm.parentNode.nodeName.toLowerCase();\r
+ var rowtype = getSelectValue(formObj, 'rowtype');\r
+ var doc = inst.getDoc();\r
+\r
+ // Update row element\r
+ if (!skip_id)\r
+ tr_elm.setAttribute('id', formObj.id.value);\r
+\r
+ tr_elm.setAttribute('align', getSelectValue(formObj, 'align'));\r
+ tr_elm.setAttribute('vAlign', getSelectValue(formObj, 'valign'));\r
+ tr_elm.setAttribute('lang', formObj.lang.value);\r
+ tr_elm.setAttribute('dir', getSelectValue(formObj, 'dir'));\r
+ tr_elm.setAttribute('style', dom.serializeStyle(dom.parseStyle(formObj.style.value)));\r
+ dom.setAttrib(tr_elm, 'class', getSelectValue(formObj, 'class'));\r
+\r
+ // Clear deprecated attributes\r
+ tr_elm.setAttribute('background', '');\r
+ tr_elm.setAttribute('bgColor', '');\r
+ tr_elm.setAttribute('height', '');\r
+\r
+ // Set styles\r
+ tr_elm.style.height = getCSSSize(formObj.height.value);\r
+ tr_elm.style.backgroundColor = formObj.bgcolor.value;\r
+\r
+ if (formObj.backgroundimage.value != "")\r
+ tr_elm.style.backgroundImage = "url('" + formObj.backgroundimage.value + "')";\r
+ else\r
+ tr_elm.style.backgroundImage = '';\r
+\r
+ // Setup new rowtype\r
+ if (curRowType != rowtype && !skip_parent) {\r
+ // first, clone the node we are working on\r
+ var newRow = tr_elm.cloneNode(1);\r
+\r
+ // next, find the parent of its new destination (creating it if necessary)\r
+ var theTable = dom.getParent(tr_elm, "table");\r
+ var dest = rowtype;\r
+ var newParent = null;\r
+ for (var i = 0; i < theTable.childNodes.length; i++) {\r
+ if (theTable.childNodes[i].nodeName.toLowerCase() == dest)\r
+ newParent = theTable.childNodes[i];\r
+ }\r
+\r
+ if (newParent == null) {\r
+ newParent = doc.createElement(dest);\r
+\r
+ if (dest == "thead") {\r
+ if (theTable.firstChild.nodeName == 'CAPTION')\r
+ inst.dom.insertAfter(newParent, theTable.firstChild);\r
+ else\r
+ theTable.insertBefore(newParent, theTable.firstChild);\r
+ } else\r
+ theTable.appendChild(newParent);\r
+ }\r
+\r
+ // append the row to the new parent\r
+ newParent.appendChild(newRow);\r
+\r
+ // remove the original\r
+ tr_elm.parentNode.removeChild(tr_elm);\r
+\r
+ // set tr_elm to the new node\r
+ tr_elm = newRow;\r
+ }\r
+\r
+ dom.setAttrib(tr_elm, 'style', dom.serializeStyle(dom.parseStyle(tr_elm.style.cssText)));\r
+}\r
+\r
+function changedBackgroundImage() {\r
+ var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;\r
+ var st = dom.parseStyle(formObj.style.value);\r
+\r
+ st['background-image'] = "url('" + formObj.backgroundimage.value + "')";\r
+\r
+ formObj.style.value = dom.serializeStyle(st);\r
+}\r
+\r
+function changedStyle() {\r
+ var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;\r
+ var st = dom.parseStyle(formObj.style.value);\r
+\r
+ if (st['background-image'])\r
+ formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");\r
+ else\r
+ formObj.backgroundimage.value = '';\r
+\r
+ if (st['height'])\r
+ formObj.height.value = trimSize(st['height']);\r
+\r
+ if (st['background-color']) {\r
+ formObj.bgcolor.value = st['background-color'];\r
+ updateColor('bgcolor_pick','bgcolor');\r
+ }\r
+}\r
+\r
+function changedSize() {\r
+ var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;\r
+ var st = dom.parseStyle(formObj.style.value);\r
+\r
+ var height = formObj.height.value;\r
+ if (height != "")\r
+ st['height'] = getCSSSize(height);\r
+ else\r
+ st['height'] = "";\r
+\r
+ formObj.style.value = dom.serializeStyle(st);\r
+}\r
+\r
+function changedColor() {\r
+ var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;\r
+ var st = dom.parseStyle(formObj.style.value);\r
+\r
+ st['background-color'] = formObj.bgcolor.value;\r
+\r
+ formObj.style.value = dom.serializeStyle(st);\r
+}\r
+\r
+tinyMCEPopup.onInit.add(init);\r
--- /dev/null
+tinyMCEPopup.requireLangPack();\r
+\r
+var action, orgTableWidth, orgTableHeight, dom = tinyMCEPopup.editor.dom;\r
+\r
+function insertTable() {\r
+ var formObj = document.forms[0];\r
+ var inst = tinyMCEPopup.editor, dom = inst.dom;\r
+ var cols = 2, rows = 2, border = 0, cellpadding = -1, cellspacing = -1, align, width, height, className, caption, frame, rules;\r
+ var html = '', capEl, elm;\r
+ var cellLimit, rowLimit, colLimit;\r
+\r
+ tinyMCEPopup.restoreSelection();\r
+\r
+ if (!AutoValidator.validate(formObj)) {\r
+ tinyMCEPopup.alert(inst.getLang('invalid_data'));\r
+ return false;\r
+ }\r
+\r
+ elm = dom.getParent(inst.selection.getNode(), 'table');\r
+\r
+ // Get form data\r
+ cols = formObj.elements['cols'].value;\r
+ rows = formObj.elements['rows'].value;\r
+ border = formObj.elements['border'].value != "" ? formObj.elements['border'].value : 0;\r
+ cellpadding = formObj.elements['cellpadding'].value != "" ? formObj.elements['cellpadding'].value : "";\r
+ cellspacing = formObj.elements['cellspacing'].value != "" ? formObj.elements['cellspacing'].value : "";\r
+ align = formObj.elements['align'].options[formObj.elements['align'].selectedIndex].value;\r
+ frame = formObj.elements['frame'].options[formObj.elements['frame'].selectedIndex].value;\r
+ rules = formObj.elements['rules'].options[formObj.elements['rules'].selectedIndex].value;\r
+ width = formObj.elements['width'].value;\r
+ height = formObj.elements['height'].value;\r
+ bordercolor = formObj.elements['bordercolor'].value;\r
+ bgcolor = formObj.elements['bgcolor'].value;\r
+ className = formObj.elements['class'].options[formObj.elements['class'].selectedIndex].value;\r
+ id = formObj.elements['id'].value;\r
+ summary = formObj.elements['summary'].value;\r
+ style = formObj.elements['style'].value;\r
+ dir = formObj.elements['dir'].value;\r
+ lang = formObj.elements['lang'].value;\r
+ background = formObj.elements['backgroundimage'].value;\r
+ caption = formObj.elements['caption'].checked;\r
+\r
+ cellLimit = tinyMCEPopup.getParam('table_cell_limit', false);\r
+ rowLimit = tinyMCEPopup.getParam('table_row_limit', false);\r
+ colLimit = tinyMCEPopup.getParam('table_col_limit', false);\r
+\r
+ // Validate table size\r
+ if (colLimit && cols > colLimit) {\r
+ tinyMCEPopup.alert(inst.getLang('table_dlg.col_limit').replace(/\{\$cols\}/g, colLimit));\r
+ return false;\r
+ } else if (rowLimit && rows > rowLimit) {\r
+ tinyMCEPopup.alert(inst.getLang('table_dlg.row_limit').replace(/\{\$rows\}/g, rowLimit));\r
+ return false;\r
+ } else if (cellLimit && cols * rows > cellLimit) {\r
+ tinyMCEPopup.alert(inst.getLang('table_dlg.cell_limit').replace(/\{\$cells\}/g, cellLimit));\r
+ return false;\r
+ }\r
+\r
+ // Update table\r
+ if (action == "update") {\r
+ inst.execCommand('mceBeginUndoLevel');\r
+\r
+ dom.setAttrib(elm, 'cellPadding', cellpadding, true);\r
+ dom.setAttrib(elm, 'cellSpacing', cellspacing, true);\r
+ dom.setAttrib(elm, 'border', border);\r
+ dom.setAttrib(elm, 'align', align);\r
+ dom.setAttrib(elm, 'frame', frame);\r
+ dom.setAttrib(elm, 'rules', rules);\r
+ dom.setAttrib(elm, 'class', className);\r
+ dom.setAttrib(elm, 'style', style);\r
+ dom.setAttrib(elm, 'id', id);\r
+ dom.setAttrib(elm, 'summary', summary);\r
+ dom.setAttrib(elm, 'dir', dir);\r
+ dom.setAttrib(elm, 'lang', lang);\r
+\r
+ capEl = inst.dom.select('caption', elm)[0];\r
+\r
+ if (capEl && !caption)\r
+ capEl.parentNode.removeChild(capEl);\r
+\r
+ if (!capEl && caption) {\r
+ capEl = elm.ownerDocument.createElement('caption');\r
+\r
+ if (!tinymce.isIE)\r
+ capEl.innerHTML = '<br mce_bogus="1"/>';\r
+\r
+ elm.insertBefore(capEl, elm.firstChild);\r
+ }\r
+\r
+ if (width && /(pt|em|cm)$/.test(width)) {\r
+ dom.setStyle(elm, 'width', width);\r
+ dom.setAttrib(elm, 'width', '');\r
+ } else {\r
+ dom.setAttrib(elm, 'width', width, true);\r
+ dom.setStyle(elm, 'width', '');\r
+ }\r
+\r
+ // Remove these since they are not valid XHTML\r
+ dom.setAttrib(elm, 'borderColor', '');\r
+ dom.setAttrib(elm, 'bgColor', '');\r
+ dom.setAttrib(elm, 'background', '');\r
+\r
+ if (height) {\r
+ dom.setStyle(elm, 'height', height);\r
+ dom.setAttrib(elm, 'height', '');\r
+ }\r
+\r
+ if (background != '')\r
+ elm.style.backgroundImage = "url('" + background + "')";\r
+ else\r
+ elm.style.backgroundImage = '';\r
+\r
+/* if (tinyMCEPopup.getParam("inline_styles")) {\r
+ if (width != '')\r
+ elm.style.width = getCSSSize(width);\r
+ }*/\r
+\r
+ if (bordercolor != "") {\r
+ elm.style.borderColor = bordercolor;\r
+ elm.style.borderStyle = elm.style.borderStyle == "" ? "solid" : elm.style.borderStyle;\r
+ elm.style.borderWidth = border == "" ? "1px" : border;\r
+ } else\r
+ elm.style.borderColor = '';\r
+\r
+ elm.style.backgroundColor = bgcolor;\r
+ elm.style.height = getCSSSize(height);\r
+\r
+ inst.addVisual();\r
+\r
+ // Fix for stange MSIE align bug\r
+ //elm.outerHTML = elm.outerHTML;\r
+\r
+ inst.nodeChanged();\r
+ inst.execCommand('mceEndUndoLevel');\r
+\r
+ // Repaint if dimensions changed\r
+ if (formObj.width.value != orgTableWidth || formObj.height.value != orgTableHeight)\r
+ inst.execCommand('mceRepaint');\r
+\r
+ tinyMCEPopup.close();\r
+ return true;\r
+ }\r
+\r
+ // Create new table\r
+ html += '<table';\r
+\r
+ html += makeAttrib('id', id);\r
+ html += makeAttrib('border', border);\r
+ html += makeAttrib('cellpadding', cellpadding);\r
+ html += makeAttrib('cellspacing', cellspacing);\r
+\r
+ if (width && /(pt|em|cm)$/.test(width)) {\r
+ if (style)\r
+ style += '; ';\r
+\r
+ style += 'width: ' + width;\r
+ } else\r
+ html += makeAttrib('width', width);\r
+\r
+/* if (height) {\r
+ if (style)\r
+ style += '; ';\r
+\r
+ style += 'height: ' + height;\r
+ }*/\r
+\r
+ //html += makeAttrib('height', height);\r
+ //html += makeAttrib('bordercolor', bordercolor);\r
+ //html += makeAttrib('bgcolor', bgcolor);\r
+ html += makeAttrib('align', align);\r
+ html += makeAttrib('frame', frame);\r
+ html += makeAttrib('rules', rules);\r
+ html += makeAttrib('class', className);\r
+ html += makeAttrib('style', style);\r
+ html += makeAttrib('summary', summary);\r
+ html += makeAttrib('dir', dir);\r
+ html += makeAttrib('lang', lang);\r
+ html += '>';\r
+\r
+ if (caption) {\r
+ if (!tinymce.isIE)\r
+ html += '<caption><br mce_bogus="1"/></caption>';\r
+ else\r
+ html += '<caption></caption>';\r
+ }\r
+\r
+ for (var y=0; y<rows; y++) {\r
+ html += "<tr>";\r
+\r
+ for (var x=0; x<cols; x++) {\r
+ if (!tinymce.isIE)\r
+ html += '<td><br mce_bogus="1"/></td>';\r
+ else\r
+ html += '<td></td>';\r
+ }\r
+\r
+ html += "</tr>";\r
+ }\r
+\r
+ html += "</table>";\r
+\r
+ inst.execCommand('mceBeginUndoLevel');\r
+ inst.execCommand('mceInsertContent', false, html);\r
+ inst.addVisual();\r
+ inst.execCommand('mceEndUndoLevel');\r
+\r
+ tinyMCEPopup.close();\r
+}\r
+\r
+function makeAttrib(attrib, value) {\r
+ var formObj = document.forms[0];\r
+ var valueElm = formObj.elements[attrib];\r
+\r
+ if (typeof(value) == "undefined" || value == null) {\r
+ value = "";\r
+\r
+ if (valueElm)\r
+ value = valueElm.value;\r
+ }\r
+\r
+ if (value == "")\r
+ return "";\r
+\r
+ // XML encode it\r
+ value = value.replace(/&/g, '&');\r
+ value = value.replace(/\"/g, '"');\r
+ value = value.replace(/</g, '<');\r
+ value = value.replace(/>/g, '>');\r
+\r
+ return ' ' + attrib + '="' + value + '"';\r
+}\r
+\r
+function init() {\r
+ tinyMCEPopup.resizeToInnerSize();\r
+\r
+ document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');\r
+ document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');\r
+ document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor');\r
+ document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');\r
+\r
+ var cols = 2, rows = 2, border = tinyMCEPopup.getParam('table_default_border', '0'), cellpadding = tinyMCEPopup.getParam('table_default_cellpadding', ''), cellspacing = tinyMCEPopup.getParam('table_default_cellspacing', '');\r
+ var align = "", width = "", height = "", bordercolor = "", bgcolor = "", className = "";\r
+ var id = "", summary = "", style = "", dir = "", lang = "", background = "", bgcolor = "", bordercolor = "", rules, frame;\r
+ var inst = tinyMCEPopup.editor, dom = inst.dom;\r
+ var formObj = document.forms[0];\r
+ var elm = dom.getParent(inst.selection.getNode(), "table");\r
+\r
+ action = tinyMCEPopup.getWindowArg('action');\r
+\r
+ if (!action)\r
+ action = elm ? "update" : "insert";\r
+\r
+ if (elm && action != "insert") {\r
+ var rowsAr = elm.rows;\r
+ var cols = 0;\r
+ for (var i=0; i<rowsAr.length; i++)\r
+ if (rowsAr[i].cells.length > cols)\r
+ cols = rowsAr[i].cells.length;\r
+\r
+ cols = cols;\r
+ rows = rowsAr.length;\r
+\r
+ st = dom.parseStyle(dom.getAttrib(elm, "style"));\r
+ border = trimSize(getStyle(elm, 'border', 'borderWidth'));\r
+ cellpadding = dom.getAttrib(elm, 'cellpadding', "");\r
+ cellspacing = dom.getAttrib(elm, 'cellspacing', "");\r
+ width = trimSize(getStyle(elm, 'width', 'width'));\r
+ height = trimSize(getStyle(elm, 'height', 'height'));\r
+ bordercolor = convertRGBToHex(getStyle(elm, 'bordercolor', 'borderLeftColor'));\r
+ bgcolor = convertRGBToHex(getStyle(elm, 'bgcolor', 'backgroundColor'));\r
+ align = dom.getAttrib(elm, 'align', align);\r
+ frame = dom.getAttrib(elm, 'frame');\r
+ rules = dom.getAttrib(elm, 'rules');\r
+ className = tinymce.trim(dom.getAttrib(elm, 'class').replace(/mceItem.+/g, ''));\r
+ id = dom.getAttrib(elm, 'id');\r
+ summary = dom.getAttrib(elm, 'summary');\r
+ style = dom.serializeStyle(st);\r
+ dir = dom.getAttrib(elm, 'dir');\r
+ lang = dom.getAttrib(elm, 'lang');\r
+ background = getStyle(elm, 'background', 'backgroundImage').replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");\r
+ formObj.caption.checked = elm.getElementsByTagName('caption').length > 0;\r
+\r
+ orgTableWidth = width;\r
+ orgTableHeight = height;\r
+\r
+ action = "update";\r
+ formObj.insert.value = inst.getLang('update');\r
+ }\r
+\r
+ addClassesToList('class', "table_styles");\r
+ TinyMCE_EditableSelects.init();\r
+\r
+ // Update form\r
+ selectByValue(formObj, 'align', align);\r
+ selectByValue(formObj, 'frame', frame);\r
+ selectByValue(formObj, 'rules', rules);\r
+ selectByValue(formObj, 'class', className, true, true);\r
+ formObj.cols.value = cols;\r
+ formObj.rows.value = rows;\r
+ formObj.border.value = border;\r
+ formObj.cellpadding.value = cellpadding;\r
+ formObj.cellspacing.value = cellspacing;\r
+ formObj.width.value = width;\r
+ formObj.height.value = height;\r
+ formObj.bordercolor.value = bordercolor;\r
+ formObj.bgcolor.value = bgcolor;\r
+ formObj.id.value = id;\r
+ formObj.summary.value = summary;\r
+ formObj.style.value = style;\r
+ formObj.dir.value = dir;\r
+ formObj.lang.value = lang;\r
+ formObj.backgroundimage.value = background;\r
+\r
+ updateColor('bordercolor_pick', 'bordercolor');\r
+ updateColor('bgcolor_pick', 'bgcolor');\r
+\r
+ // Resize some elements\r
+ if (isVisible('backgroundimagebrowser'))\r
+ document.getElementById('backgroundimage').style.width = '180px';\r
+\r
+ // Disable some fields in update mode\r
+ if (action == "update") {\r
+ formObj.cols.disabled = true;\r
+ formObj.rows.disabled = true;\r
+ }\r
+}\r
+\r
+function changedSize() {\r
+ var formObj = document.forms[0];\r
+ var st = dom.parseStyle(formObj.style.value);\r
+\r
+/* var width = formObj.width.value;\r
+ if (width != "")\r
+ st['width'] = tinyMCEPopup.getParam("inline_styles") ? getCSSSize(width) : "";\r
+ else\r
+ st['width'] = "";*/\r
+\r
+ var height = formObj.height.value;\r
+ if (height != "")\r
+ st['height'] = getCSSSize(height);\r
+ else\r
+ st['height'] = "";\r
+\r
+ formObj.style.value = dom.serializeStyle(st);\r
+}\r
+\r
+function changedBackgroundImage() {\r
+ var formObj = document.forms[0];\r
+ var st = dom.parseStyle(formObj.style.value);\r
+\r
+ st['background-image'] = "url('" + formObj.backgroundimage.value + "')";\r
+\r
+ formObj.style.value = dom.serializeStyle(st);\r
+}\r
+\r
+function changedBorder() {\r
+ var formObj = document.forms[0];\r
+ var st = dom.parseStyle(formObj.style.value);\r
+\r
+ // Update border width if the element has a color\r
+ if (formObj.border.value != "" && formObj.bordercolor.value != "")\r
+ st['border-width'] = formObj.border.value + "px";\r
+\r
+ formObj.style.value = dom.serializeStyle(st);\r
+}\r
+\r
+function changedColor() {\r
+ var formObj = document.forms[0];\r
+ var st = dom.parseStyle(formObj.style.value);\r
+\r
+ st['background-color'] = formObj.bgcolor.value;\r
+\r
+ if (formObj.bordercolor.value != "") {\r
+ st['border-color'] = formObj.bordercolor.value;\r
+\r
+ // Add border-width if it's missing\r
+ if (!st['border-width'])\r
+ st['border-width'] = formObj.border.value == "" ? "1px" : formObj.border.value + "px";\r
+ }\r
+\r
+ formObj.style.value = dom.serializeStyle(st);\r
+}\r
+\r
+function changedStyle() {\r
+ var formObj = document.forms[0];\r
+ var st = dom.parseStyle(formObj.style.value);\r
+\r
+ if (st['background-image'])\r
+ formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");\r
+ else\r
+ formObj.backgroundimage.value = '';\r
+\r
+ if (st['width'])\r
+ formObj.width.value = trimSize(st['width']);\r
+\r
+ if (st['height'])\r
+ formObj.height.value = trimSize(st['height']);\r
+\r
+ if (st['background-color']) {\r
+ formObj.bgcolor.value = st['background-color'];\r
+ updateColor('bgcolor_pick','bgcolor');\r
+ }\r
+\r
+ if (st['border-color']) {\r
+ formObj.bordercolor.value = st['border-color'];\r
+ updateColor('bordercolor_pick','bordercolor');\r
+ }\r
+}\r
+\r
+tinyMCEPopup.onInit.add(init);\r
--- /dev/null
+tinyMCE.addI18n('en.table_dlg',{\r
+general_tab:"General",\r
+advanced_tab:"Advanced",\r
+general_props:"General properties",\r
+advanced_props:"Advanced properties",\r
+rowtype:"Row in table part",\r
+title:"Insert/Modify table",\r
+width:"Width",\r
+height:"Height",\r
+cols:"Cols",\r
+rows:"Rows",\r
+cellspacing:"Cellspacing",\r
+cellpadding:"Cellpadding",\r
+border:"Border",\r
+align:"Alignment",\r
+align_default:"Default",\r
+align_left:"Left",\r
+align_right:"Right",\r
+align_middle:"Center",\r
+row_title:"Table row properties",\r
+cell_title:"Table cell properties",\r
+cell_type:"Cell type",\r
+valign:"Vertical alignment",\r
+align_top:"Top",\r
+align_bottom:"Bottom",\r
+bordercolor:"Border color",\r
+bgcolor:"Background color",\r
+merge_cells_title:"Merge table cells",\r
+id:"Id",\r
+style:"Style",\r
+langdir:"Language direction",\r
+langcode:"Language code",\r
+mime:"Target MIME type",\r
+ltr:"Left to right",\r
+rtl:"Right to left",\r
+bgimage:"Background image",\r
+summary:"Summary",\r
+td:"Data",\r
+th:"Header",\r
+cell_cell:"Update current cell",\r
+cell_row:"Update all cells in row",\r
+cell_all:"Update all cells in table",\r
+row_row:"Update current row",\r
+row_odd:"Update odd rows in table",\r
+row_even:"Update even rows in table",\r
+row_all:"Update all rows in table",\r
+thead:"Table Head",\r
+tbody:"Table Body",\r
+tfoot:"Table Foot",\r
+scope:"Scope",\r
+rowgroup:"Row Group",\r
+colgroup:"Col Group",\r
+col_limit:"You've exceeded the maximum number of columns of {$cols}.",\r
+row_limit:"You've exceeded the maximum number of rows of {$rows}.",\r
+cell_limit:"You've exceeded the maximum number of cells of {$cells}.",\r
+missing_scope:"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.",\r
+caption:"Table caption",\r
+frame:"Frame",\r
+frame_none:"none",\r
+frame_groups:"groups",\r
+frame_rows:"rows",\r
+frame_cols:"cols",\r
+frame_all:"all",\r
+rules:"Rules",\r
+rules_void:"void",\r
+rules_above:"above",\r
+rules_below:"below",\r
+rules_hsides:"hsides",\r
+rules_lhs:"lhs",\r
+rules_rhs:"rhs",\r
+rules_vsides:"vsides",\r
+rules_box:"box",\r
+rules_border:"border"\r
+});
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+ <title>{#table_dlg.merge_cells_title}</title>\r
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
+ <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
+ <script type="text/javascript" src="../../utils/validate.js"></script>\r
+ <script type="text/javascript" src="js/merge_cells.js"></script>\r
+ <base target="_self" />\r
+</head>\r
+<body style="margin: 8px" style="display: none">\r
+<form onsubmit="mergeCells();return false;" action="#">\r
+ <fieldset>\r
+ <legend>{#table_dlg.merge_cells_title}</legend>\r
+ <table border="0" cellpadding="0" cellspacing="3" width="100%">\r
+ <tr>\r
+ <td>{#table_dlg.cols}:</td>\r
+ <td align="right"><input type="text" name="numcols" value="" class="number min1 mceFocus" style="width: 30px" /></td>\r
+ </tr>\r
+ <tr>\r
+ <td>{#table_dlg.rows}:</td>\r
+ <td align="right"><input type="text" name="numrows" value="" class="number min1" style="width: 30px" /></td>\r
+ </tr>\r
+ </table>\r
+ </fieldset>\r
+\r
+ <div class="mceActionPanel">\r
+ <div style="float: left">\r
+ <input type="submit" id="insert" name="insert" value="{#update}" />\r
+ </div>\r
+\r
+ <div style="float: right">\r
+ <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
+ </div>\r
+ </div>\r
+</form>\r
+</body>\r
+</html>\r
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+ <title>{#table_dlg.row_title}</title>\r
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
+ <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
+ <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
+ <script type="text/javascript" src="../../utils/editable_selects.js"></script>\r
+ <script type="text/javascript" src="js/row.js"></script>\r
+ <link href="css/row.css" rel="stylesheet" type="text/css" />\r
+ <base target="_self" />\r
+</head>\r
+<body id="tablerow" style="display: none">\r
+ <form onsubmit="updateAction();return false;">\r
+ <div class="tabs">\r
+ <ul>\r
+ <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#table_dlg.general_tab}</a></span></li>\r
+ <li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#table_dlg.advanced_tab}</a></span></li>\r
+ </ul>\r
+ </div>\r
+\r
+ <div class="panel_wrapper">\r
+ <div id="general_panel" class="panel current">\r
+ <fieldset>\r
+ <legend>{#table_dlg.general_props}</legend>\r
+\r
+ <table border="0" cellpadding="4" cellspacing="0">\r
+ <tr>\r
+ <td><label for="rowtype">{#table_dlg.rowtype}</label></td>\r
+ <td class="col2">\r
+ <select id="rowtype" name="rowtype" class="mceFocus">\r
+ <option value="thead">{#table_dlg.thead}</option>\r
+ <option value="tbody">{#table_dlg.tbody}</option>\r
+ <option value="tfoot">{#table_dlg.tfoot}</option>\r
+ </select>\r
+ </td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td><label for="align">{#table_dlg.align}</label></td>\r
+ <td class="col2">\r
+ <select id="align" name="align">\r
+ <option value="">{#not_set}</option>\r
+ <option value="center">{#table_dlg.align_middle}</option>\r
+ <option value="left">{#table_dlg.align_left}</option>\r
+ <option value="right">{#table_dlg.align_right}</option>\r
+ </select>\r
+ </td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td><label for="valign">{#table_dlg.valign}</label></td>\r
+ <td class="col2">\r
+ <select id="valign" name="valign">\r
+ <option value="">{#not_set}</option>\r
+ <option value="top">{#table_dlg.align_top}</option>\r
+ <option value="middle">{#table_dlg.align_middle}</option>\r
+ <option value="bottom">{#table_dlg.align_bottom}</option>\r
+ </select>\r
+ </td>\r
+ </tr>\r
+\r
+ <tr id="styleSelectRow">\r
+ <td><label for="class">{#class_name}</label></td>\r
+ <td class="col2">\r
+ <select id="class" name="class" class="mceEditableSelect">\r
+ <option value="" selected="selected">{#not_set}</option>\r
+ </select>\r
+ </td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td><label for="height">{#table_dlg.height}</label></td>\r
+ <td class="col2"><input name="height" type="text" id="height" value="" size="4" maxlength="4" onchange="changedSize();" /></td>\r
+ </tr>\r
+ </table>\r
+ </fieldset>\r
+ </div>\r
+\r
+ <div id="advanced_panel" class="panel">\r
+ <fieldset>\r
+ <legend>{#table_dlg.advanced_props}</legend>\r
+\r
+ <table border="0" cellpadding="0" cellspacing="4">\r
+ <tr>\r
+ <td class="column1"><label for="id">{#table_dlg.id}</label></td> \r
+ <td><input id="id" name="id" type="text" value="" style="width: 200px" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td><label for="style">{#table_dlg.style}</label></td>\r
+ <td><input type="text" id="style" name="style" value="" style="width: 200px;" onchange="changedStyle();" /></td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="column1"><label for="dir">{#table_dlg.langdir}</label></td> \r
+ <td>\r
+ <select id="dir" name="dir" style="width: 200px"> \r
+ <option value="">{#not_set}</option> \r
+ <option value="ltr">{#table_dlg.ltr}</option> \r
+ <option value="rtl">{#table_dlg.rtl}</option> \r
+ </select>\r
+ </td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="column1"><label for="lang">{#table_dlg.langcode}</label></td> \r
+ <td>\r
+ <input id="lang" name="lang" type="text" value="" style="width: 200px" />\r
+ </td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="column1"><label for="backgroundimage">{#table_dlg.bgimage}</label></td> \r
+ <td>\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input id="backgroundimage" name="backgroundimage" type="text" value="" style="width: 200px" onchange="changedBackgroundImage();" /></td>\r
+ <td id="backgroundimagebrowsercontainer"> </td>\r
+ </tr>\r
+ </table>\r
+ </td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="column1"><label for="bgcolor">{#table_dlg.bgcolor}</label></td> \r
+ <td>\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');changedColor();" /></td>\r
+ <td id="bgcolor_pickcontainer"> </td>\r
+ </tr>\r
+ </table>\r
+ </td> \r
+ </tr>\r
+ </table>\r
+ </fieldset>\r
+ </div>\r
+ </div>\r
+\r
+ <div class="mceActionPanel">\r
+ <div>\r
+ <select id="action" name="action">\r
+ <option value="row">{#table_dlg.row_row}</option>\r
+ <option value="odd">{#table_dlg.row_odd}</option>\r
+ <option value="even">{#table_dlg.row_even}</option>\r
+ <option value="all">{#table_dlg.row_all}</option>\r
+ </select>\r
+ </div>\r
+\r
+ <div style="float: left">\r
+ <div><input type="submit" id="insert" name="insert" value="{#update}" /></div>\r
+ </div>\r
+\r
+ <div style="float: right">\r
+ <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
+ </div>\r
+ </div>\r
+ </form>\r
+</body>\r
+</html>\r
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+ <title>{#table_dlg.title}</title>\r
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
+ <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
+ <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
+ <script type="text/javascript" src="../../utils/validate.js"></script>\r
+ <script type="text/javascript" src="../../utils/editable_selects.js"></script>\r
+ <script type="text/javascript" src="js/table.js"></script>\r
+ <link href="css/table.css" rel="stylesheet" type="text/css" />\r
+ <base target="_self" />\r
+</head>\r
+<body id="table" style="display: none">\r
+ <form onsubmit="insertTable();return false;" action="#">\r
+ <div class="tabs">\r
+ <ul>\r
+ <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#table_dlg.general_tab}</a></span></li>\r
+ <li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#table_dlg.advanced_tab}</a></span></li>\r
+ </ul>\r
+ </div>\r
+\r
+ <div class="panel_wrapper">\r
+ <div id="general_panel" class="panel current">\r
+ <fieldset>\r
+ <legend>{#table_dlg.general_props}</legend>\r
+ <table border="0" cellpadding="4" cellspacing="0" width="100%">\r
+ <tr>\r
+ <td><label id="colslabel" for="cols">{#table_dlg.cols}</label></td>\r
+ <td><input id="cols" name="cols" type="text" value="" size="3" maxlength="3" class="required number min1 mceFocus" /></td>\r
+ <td><label id="rowslabel" for="rows">{#table_dlg.rows}</label></td>\r
+ <td><input id="rows" name="rows" type="text" value="" size="3" maxlength="3" class="required number min1" /></td>\r
+ </tr>\r
+ <tr>\r
+ <td><label id="cellpaddinglabel" for="cellpadding">{#table_dlg.cellpadding}</label></td>\r
+ <td><input id="cellpadding" name="cellpadding" type="text" value="" size="3" maxlength="3" class="number" /></td>\r
+ <td><label id="cellspacinglabel" for="cellspacing">{#table_dlg.cellspacing}</label></td>\r
+ <td><input id="cellspacing" name="cellspacing" type="text" value="" size="3" maxlength="3" class="number" /></td>\r
+ </tr>\r
+ <tr>\r
+ <td><label id="alignlabel" for="align">{#table_dlg.align}</label></td>\r
+ <td><select id="align" name="align">\r
+ <option value="">{#not_set}</option>\r
+ <option value="center">{#table_dlg.align_middle}</option>\r
+ <option value="left">{#table_dlg.align_left}</option>\r
+ <option value="right">{#table_dlg.align_right}</option>\r
+ </select></td>\r
+ <td><label id="borderlabel" for="border">{#table_dlg.border}</label></td>\r
+ <td><input id="border" name="border" type="text" value="" size="3" maxlength="3" onchange="changedBorder();" class="number" /></td>\r
+ </tr>\r
+ <tr id="width_row">\r
+ <td><label id="widthlabel" for="width">{#table_dlg.width}</label></td>\r
+ <td><input name="width" type="text" id="width" value="" size="4" maxlength="4" onchange="changedSize();" class="size" /></td>\r
+ <td><label id="heightlabel" for="height">{#table_dlg.height}</label></td>\r
+ <td><input name="height" type="text" id="height" value="" size="4" maxlength="4" onchange="changedSize();" class="size" /></td>\r
+ </tr>\r
+ <tr id="styleSelectRow">\r
+ <td><label id="classlabel" for="class">{#class_name}</label></td>\r
+ <td colspan="3">\r
+ <select id="class" name="class" class="mceEditableSelect">\r
+ <option value="" selected>{#not_set}</option>\r
+ </select></td>\r
+ </tr>\r
+ <tr>\r
+ <td class="column1"><label for="caption">{#table_dlg.caption}</label></td> \r
+ <td><input id="caption" name="caption" type="checkbox" class="checkbox" value="true" /></td> \r
+ </tr>\r
+ </table>\r
+ </fieldset>\r
+ </div>\r
+\r
+ <div id="advanced_panel" class="panel">\r
+ <fieldset>\r
+ <legend>{#table_dlg.advanced_props}</legend>\r
+\r
+ <table border="0" cellpadding="0" cellspacing="4">\r
+ <tr>\r
+ <td class="column1"><label for="id">{#table_dlg.id}</label></td> \r
+ <td><input id="id" name="id" type="text" value="" class="advfield" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="column1"><label for="summary">{#table_dlg.summary}</label></td> \r
+ <td><input id="summary" name="summary" type="text" value="" class="advfield" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td><label for="style">{#table_dlg.style}</label></td>\r
+ <td><input type="text" id="style" name="style" value="" class="advfield" onchange="changedStyle();" /></td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="column1"><label id="langlabel" for="lang">{#table_dlg.langcode}</label></td> \r
+ <td>\r
+ <input id="lang" name="lang" type="text" value="" class="advfield" />\r
+ </td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="column1"><label for="backgroundimage">{#table_dlg.bgimage}</label></td> \r
+ <td>\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input id="backgroundimage" name="backgroundimage" type="text" value="" class="advfield" onchange="changedBackgroundImage();" /></td>\r
+ <td id="backgroundimagebrowsercontainer"> </td>\r
+ </tr>\r
+ </table>\r
+ </td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="column1"><label for="frame">{#table_dlg.frame}</label></td> \r
+ <td>\r
+ <select id="frame" name="frame" class="advfield"> \r
+ <option value="">{#not_set}</option>\r
+ <option value="void">{#table_dlg.rules_void}</option>\r
+ <option value="above">{#table_dlg.rules_above}</option> \r
+ <option value="below">{#table_dlg.rules_below}</option> \r
+ <option value="hsides">{#table_dlg.rules_hsides}</option> \r
+ <option value="lhs">{#table_dlg.rules_lhs}</option> \r
+ <option value="rhs">{#table_dlg.rules_rhs}</option> \r
+ <option value="vsides">{#table_dlg.rules_vsides}</option> \r
+ <option value="box">{#table_dlg.rules_box}</option> \r
+ <option value="border">{#table_dlg.rules_border}</option> \r
+ </select>\r
+ </td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="column1"><label for="rules">{#table_dlg.rules}</label></td> \r
+ <td>\r
+ <select id="rules" name="rules" class="advfield"> \r
+ <option value="">{#not_set}</option> \r
+ <option value="none">{#table_dlg.frame_none}</option>\r
+ <option value="groups">{#table_dlg.frame_groups}</option>\r
+ <option value="rows">{#table_dlg.frame_rows}</option>\r
+ <option value="cols">{#table_dlg.frame_cols}</option>\r
+ <option value="all">{#table_dlg.frame_all}</option>\r
+ </select>\r
+ </td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="column1"><label for="dir">{#table_dlg.langdir}</label></td> \r
+ <td>\r
+ <select id="dir" name="dir" class="advfield"> \r
+ <option value="">{#not_set}</option> \r
+ <option value="ltr">{#table_dlg.ltr}</option> \r
+ <option value="rtl">{#table_dlg.rtl}</option> \r
+ </select>\r
+ </td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="column1"><label for="bordercolor">{#table_dlg.bordercolor}</label></td> \r
+ <td>\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input id="bordercolor" name="bordercolor" type="text" value="" size="9" onchange="updateColor('bordercolor_pick','bordercolor');changedColor();" /></td>\r
+ <td id="bordercolor_pickcontainer"> </td>\r
+ </tr>\r
+ </table>\r
+ </td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="column1"><label for="bgcolor">{#table_dlg.bgcolor}</label></td> \r
+ <td>\r
+ <table border="0" cellpadding="0" cellspacing="0">\r
+ <tr>\r
+ <td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');changedColor();" /></td>\r
+ <td id="bgcolor_pickcontainer"> </td>\r
+ </tr>\r
+ </table>\r
+ </td> \r
+ </tr>\r
+ </table>\r
+ </fieldset>\r
+ </div>\r
+ </div>\r
+\r
+ <div class="mceActionPanel">\r
+ <div style="float: left">\r
+ <input type="submit" id="insert" name="insert" value="{#insert}" />\r
+ </div>\r
+\r
+ <div style="float: right">\r
+ <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
+ </div>\r
+ </div>\r
+ </form>\r
+</body>\r
+</html>\r
--- /dev/null
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+ <title>blank_page</title>\r
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+ <script type="text/javascript">\r
+ parent.TemplateDialog.loadCSSFiles(document);\r
+ </script>\r
+</head>\r
+<body id="mceTemplatePreview" class="mceContentBody">\r
+\r
+</body>\r
+</html>\r
--- /dev/null
+#frmbody {\r
+ padding: 10px;\r
+ background-color: #FFF;\r
+ border: 1px solid #CCC;\r
+}\r
+\r
+.frmRow {\r
+ margin-bottom: 10px;\r
+}\r
+\r
+#templatesrc {\r
+ border: none;\r
+ width: 320px;\r
+ height: 240px;\r
+}\r
+\r
+.title {\r
+ padding-bottom: 5px;\r
+}\r
+\r
+.mceActionPanel {\r
+ padding-top: 5px;\r
+}\r
--- /dev/null
+(function(){var each=tinymce.each;tinymce.create('tinymce.plugins.TemplatePlugin',{init:function(ed,url){var t=this;t.editor=ed;ed.addCommand('mceTemplate',function(ui){ed.windowManager.open({file:url+'/template.htm',width:ed.getParam('template_popup_width',750),height:ed.getParam('template_popup_height',600),inline:1},{plugin_url:url});});ed.addCommand('mceInsertTemplate',t._insertTemplate,t);ed.addButton('template',{title:'template.desc',cmd:'mceTemplate'});ed.onPreProcess.add(function(ed,o){var dom=ed.dom;each(dom.select('div',o.node),function(e){if(dom.hasClass(e,'mceTmpl')){each(dom.select('*',e),function(e){if(dom.hasClass(e,ed.getParam('template_mdate_classes','mdate').replace(/\s+/g,'|')))e.innerHTML=t._getDateTime(new Date(),ed.getParam("template_mdate_format",ed.getLang("template.mdate_format")));});t._replaceVals(e);}});});},getInfo:function(){return{longname:'Template plugin',author:'Moxiecode Systems AB',authorurl:'http://www.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/template',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_insertTemplate:function(ui,v){var t=this,ed=t.editor,h,el,dom=ed.dom,sel=ed.selection.getContent();h=v.content;each(t.editor.getParam('template_replace_values'),function(v,k){if(typeof(v)!='function')h=h.replace(new RegExp('\\{\\$'+k+'\\}','g'),v);});el=dom.create('div',null,h);n=dom.select('.mceTmpl',el);if(n&&n.length>0){el=dom.create('div',null);el.appendChild(n[0].cloneNode(true));}function hasClass(n,c){return new RegExp('\\b'+c+'\\b','g').test(n.className);};each(dom.select('*',el),function(n){if(hasClass(n,ed.getParam('template_cdate_classes','cdate').replace(/\s+/g,'|')))n.innerHTML=t._getDateTime(new Date(),ed.getParam("template_cdate_format",ed.getLang("template.cdate_format")));if(hasClass(n,ed.getParam('template_mdate_classes','mdate').replace(/\s+/g,'|')))n.innerHTML=t._getDateTime(new Date(),ed.getParam("template_mdate_format",ed.getLang("template.mdate_format")));if(hasClass(n,ed.getParam('template_selected_content_classes','selcontent').replace(/\s+/g,'|')))n.innerHTML=sel;});t._replaceVals(el);ed.execCommand('mceInsertContent',false,el.innerHTML);ed.addVisual();},_replaceVals:function(e){var dom=this.editor.dom,vl=this.editor.getParam('template_replace_values');each(dom.select('*',e),function(e){each(vl,function(v,k){if(dom.hasClass(e,k)){if(typeof(vl[k])=='function')vl[k](e);}});});},_getDateTime:function(d,fmt){if(!fmt)return"";function addZeros(value,len){var i;value=""+value;if(value.length<len){for(i=0;i<(len-value.length);i++)value="0"+value;}return value;}fmt=fmt.replace("%D","%m/%d/%y");fmt=fmt.replace("%r","%I:%M:%S %p");fmt=fmt.replace("%Y",""+d.getFullYear());fmt=fmt.replace("%y",""+d.getYear());fmt=fmt.replace("%m",addZeros(d.getMonth()+1,2));fmt=fmt.replace("%d",addZeros(d.getDate(),2));fmt=fmt.replace("%H",""+addZeros(d.getHours(),2));fmt=fmt.replace("%M",""+addZeros(d.getMinutes(),2));fmt=fmt.replace("%S",""+addZeros(d.getSeconds(),2));fmt=fmt.replace("%I",""+((d.getHours()+11)%12+1));fmt=fmt.replace("%p",""+(d.getHours()<12?"AM":"PM"));fmt=fmt.replace("%B",""+tinyMCE.getLang("template_months_long").split(',')[d.getMonth()]);fmt=fmt.replace("%b",""+tinyMCE.getLang("template_months_short").split(',')[d.getMonth()]);fmt=fmt.replace("%A",""+tinyMCE.getLang("template_day_long").split(',')[d.getDay()]);fmt=fmt.replace("%a",""+tinyMCE.getLang("template_day_short").split(',')[d.getDay()]);fmt=fmt.replace("%%","%");return fmt;}});tinymce.PluginManager.add('template',tinymce.plugins.TemplatePlugin);})();
\ No newline at end of file
--- /dev/null
+/**\r
+ * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $\r
+ *\r
+ * @author Moxiecode\r
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+(function() {\r
+ var each = tinymce.each;\r
+\r
+ tinymce.create('tinymce.plugins.TemplatePlugin', {\r
+ init : function(ed, url) {\r
+ var t = this;\r
+\r
+ t.editor = ed;\r
+\r
+ // Register commands\r
+ ed.addCommand('mceTemplate', function(ui) {\r
+ ed.windowManager.open({\r
+ file : url + '/template.htm',\r
+ width : ed.getParam('template_popup_width', 750),\r
+ height : ed.getParam('template_popup_height', 600),\r
+ inline : 1\r
+ }, {\r
+ plugin_url : url\r
+ });\r
+ });\r
+\r
+ ed.addCommand('mceInsertTemplate', t._insertTemplate, t);\r
+\r
+ // Register buttons\r
+ ed.addButton('template', {title : 'template.desc', cmd : 'mceTemplate'});\r
+\r
+ ed.onPreProcess.add(function(ed, o) {\r
+ var dom = ed.dom;\r
+\r
+ each(dom.select('div', o.node), function(e) {\r
+ if (dom.hasClass(e, 'mceTmpl')) {\r
+ each(dom.select('*', e), function(e) {\r
+ if (dom.hasClass(e, ed.getParam('template_mdate_classes', 'mdate').replace(/\s+/g, '|')))\r
+ e.innerHTML = t._getDateTime(new Date(), ed.getParam("template_mdate_format", ed.getLang("template.mdate_format")));\r
+ });\r
+\r
+ t._replaceVals(e);\r
+ }\r
+ });\r
+ });\r
+ },\r
+\r
+ getInfo : function() {\r
+ return {\r
+ longname : 'Template plugin',\r
+ author : 'Moxiecode Systems AB',\r
+ authorurl : 'http://www.moxiecode.com',\r
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/template',\r
+ version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+ };\r
+ },\r
+\r
+ _insertTemplate : function(ui, v) {\r
+ var t = this, ed = t.editor, h, el, dom = ed.dom, sel = ed.selection.getContent();\r
+\r
+ h = v.content;\r
+\r
+ each(t.editor.getParam('template_replace_values'), function(v, k) {\r
+ if (typeof(v) != 'function')\r
+ h = h.replace(new RegExp('\\{\\$' + k + '\\}', 'g'), v);\r
+ });\r
+\r
+ el = dom.create('div', null, h);\r
+\r
+ // Find template element within div\r
+ n = dom.select('.mceTmpl', el);\r
+ if (n && n.length > 0) {\r
+ el = dom.create('div', null);\r
+ el.appendChild(n[0].cloneNode(true));\r
+ }\r
+\r
+ function hasClass(n, c) {\r
+ return new RegExp('\\b' + c + '\\b', 'g').test(n.className);\r
+ };\r
+\r
+ each(dom.select('*', el), function(n) {\r
+ // Replace cdate\r
+ if (hasClass(n, ed.getParam('template_cdate_classes', 'cdate').replace(/\s+/g, '|')))\r
+ n.innerHTML = t._getDateTime(new Date(), ed.getParam("template_cdate_format", ed.getLang("template.cdate_format")));\r
+\r
+ // Replace mdate\r
+ if (hasClass(n, ed.getParam('template_mdate_classes', 'mdate').replace(/\s+/g, '|')))\r
+ n.innerHTML = t._getDateTime(new Date(), ed.getParam("template_mdate_format", ed.getLang("template.mdate_format")));\r
+\r
+ // Replace selection\r
+ if (hasClass(n, ed.getParam('template_selected_content_classes', 'selcontent').replace(/\s+/g, '|')))\r
+ n.innerHTML = sel;\r
+ });\r
+\r
+ t._replaceVals(el);\r
+\r
+ ed.execCommand('mceInsertContent', false, el.innerHTML);\r
+ ed.addVisual();\r
+ },\r
+\r
+ _replaceVals : function(e) {\r
+ var dom = this.editor.dom, vl = this.editor.getParam('template_replace_values');\r
+\r
+ each(dom.select('*', e), function(e) {\r
+ each(vl, function(v, k) {\r
+ if (dom.hasClass(e, k)) {\r
+ if (typeof(vl[k]) == 'function')\r
+ vl[k](e);\r
+ }\r
+ });\r
+ });\r
+ },\r
+\r
+ _getDateTime : function(d, fmt) {\r
+ if (!fmt)\r
+ return "";\r
+\r
+ function addZeros(value, len) {\r
+ var i;\r
+\r
+ value = "" + value;\r
+\r
+ if (value.length < len) {\r
+ for (i=0; i<(len-value.length); i++)\r
+ value = "0" + value;\r
+ }\r
+\r
+ return value;\r
+ }\r
+\r
+ fmt = fmt.replace("%D", "%m/%d/%y");\r
+ fmt = fmt.replace("%r", "%I:%M:%S %p");\r
+ fmt = fmt.replace("%Y", "" + d.getFullYear());\r
+ fmt = fmt.replace("%y", "" + d.getYear());\r
+ fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2));\r
+ fmt = fmt.replace("%d", addZeros(d.getDate(), 2));\r
+ fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2));\r
+ fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2));\r
+ fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2));\r
+ fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1));\r
+ fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM"));\r
+ fmt = fmt.replace("%B", "" + tinyMCE.getLang("template_months_long").split(',')[d.getMonth()]);\r
+ fmt = fmt.replace("%b", "" + tinyMCE.getLang("template_months_short").split(',')[d.getMonth()]);\r
+ fmt = fmt.replace("%A", "" + tinyMCE.getLang("template_day_long").split(',')[d.getDay()]);\r
+ fmt = fmt.replace("%a", "" + tinyMCE.getLang("template_day_short").split(',')[d.getDay()]);\r
+ fmt = fmt.replace("%%", "%");\r
+\r
+ return fmt;\r
+ }\r
+ });\r
+\r
+ // Register plugin\r
+ tinymce.PluginManager.add('template', tinymce.plugins.TemplatePlugin);\r
+})();
\ No newline at end of file
--- /dev/null
+tinyMCEPopup.requireLangPack();\r
+\r
+var TemplateDialog = {\r
+ preInit : function() {\r
+ var url = tinyMCEPopup.getParam("template_external_list_url");\r
+\r
+ if (url != null)\r
+ document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></sc'+'ript>');\r
+ },\r
+\r
+ init : function() {\r
+ var ed = tinyMCEPopup.editor, tsrc, sel, x, u;\r
+\r
+ tsrc = ed.getParam("template_templates", false);\r
+ sel = document.getElementById('tpath');\r
+\r
+ // Setup external template list\r
+ if (!tsrc && typeof(tinyMCETemplateList) != 'undefined') {\r
+ for (x=0, tsrc = []; x<tinyMCETemplateList.length; x++)\r
+ tsrc.push({title : tinyMCETemplateList[x][0], src : tinyMCETemplateList[x][1], description : tinyMCETemplateList[x][2]});\r
+ }\r
+\r
+ for (x=0; x<tsrc.length; x++)\r
+ sel.options[sel.options.length] = new Option(tsrc[x].title, tinyMCEPopup.editor.documentBaseURI.toAbsolute(tsrc[x].src));\r
+\r
+ this.resize();\r
+ this.tsrc = tsrc;\r
+ },\r
+\r
+ resize : function() {\r
+ var w, h, e;\r
+\r
+ if (!self.innerWidth) {\r
+ w = document.body.clientWidth - 50;\r
+ h = document.body.clientHeight - 160;\r
+ } else {\r
+ w = self.innerWidth - 50;\r
+ h = self.innerHeight - 170;\r
+ }\r
+\r
+ e = document.getElementById('templatesrc');\r
+\r
+ if (e) {\r
+ e.style.height = Math.abs(h) + 'px';\r
+ e.style.width = Math.abs(w - 5) + 'px';\r
+ }\r
+ },\r
+\r
+ loadCSSFiles : function(d) {\r
+ var ed = tinyMCEPopup.editor;\r
+\r
+ tinymce.each(ed.getParam("content_css", '').split(','), function(u) {\r
+ d.write('<link href="' + ed.documentBaseURI.toAbsolute(u) + '" rel="stylesheet" type="text/css" />');\r
+ });\r
+ },\r
+\r
+ selectTemplate : function(u, ti) {\r
+ var d = window.frames['templatesrc'].document, x, tsrc = this.tsrc;\r
+\r
+ if (!u)\r
+ return;\r
+\r
+ d.body.innerHTML = this.templateHTML = this.getFileContents(u);\r
+\r
+ for (x=0; x<tsrc.length; x++) {\r
+ if (tsrc[x].title == ti)\r
+ document.getElementById('tmpldesc').innerHTML = tsrc[x].description || '';\r
+ }\r
+ },\r
+\r
+ insert : function() {\r
+ tinyMCEPopup.execCommand('mceInsertTemplate', false, {\r
+ content : this.templateHTML,\r
+ selection : tinyMCEPopup.editor.selection.getContent()\r
+ });\r
+\r
+ tinyMCEPopup.close();\r
+ },\r
+\r
+ getFileContents : function(u) {\r
+ var x, d, t = 'text/plain';\r
+\r
+ function g(s) {\r
+ x = 0;\r
+\r
+ try {\r
+ x = new ActiveXObject(s);\r
+ } catch (s) {\r
+ }\r
+\r
+ return x;\r
+ };\r
+\r
+ x = window.ActiveXObject ? g('Msxml2.XMLHTTP') || g('Microsoft.XMLHTTP') : new XMLHttpRequest();\r
+\r
+ // Synchronous AJAX load file\r
+ x.overrideMimeType && x.overrideMimeType(t);\r
+ x.open("GET", u, false);\r
+ x.send(null);\r
+\r
+ return x.responseText;\r
+ }\r
+};\r
+\r
+TemplateDialog.preInit();\r
+tinyMCEPopup.onInit.add(TemplateDialog.init, TemplateDialog);\r
--- /dev/null
+tinyMCE.addI18n('en.template_dlg',{\r
+title:"Templates",\r
+label:"Template",\r
+desc_label:"Description",\r
+desc:"Insert predefined template content",\r
+select:"Select a template",\r
+preview:"Preview",\r
+warning:"Warning: Updating a template with a different one may cause data loss.",\r
+mdate_format:"%Y-%m-%d %H:%M:%S",\r
+cdate_format:"%Y-%m-%d %H:%M:%S",\r
+months_long:"January,February,March,April,May,June,July,August,September,October,November,December",\r
+months_short:"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec",\r
+day_long:"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday",\r
+day_short:"Sun,Mon,Tue,Wed,Thu,Fri,Sat,Sun"\r
+});
\ No newline at end of file
--- /dev/null
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+ <title>{#template_dlg.title}</title>\r
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
+ <script type="text/javascript" src="js/template.js"></script>\r
+ <link href="css/template.css" rel="stylesheet" type="text/css" />\r
+ <base target="_self" />\r
+</head>\r
+<body onresize="TemplateDialog.resize();"> \r
+ <form onsubmit="TemplateDialog.insert();return false;">\r
+ <div id="frmbody">\r
+ <div class="title">{#template_dlg.desc}</div>\r
+ <div class="frmRow"><label for="tpath" title="{#template_dlg.select}">{#template_dlg.label}:</label>\r
+ <select id="tpath" name="tpath" onchange="TemplateDialog.selectTemplate(this.options[this.selectedIndex].value, this.options[this.selectedIndex].text);" class="mceFocus">\r
+ <option value="">{#template_dlg.select}...</option>\r
+ </select>\r
+ <span id="warning"></span></div>\r
+ <div class="frmRow"><label for="tdesc">{#template_dlg.desc_label}:</label>\r
+ <span id="tmpldesc"></span></div>\r
+ <fieldset>\r
+ <legend>{#template_dlg.preview}</legend>\r
+ <iframe id="templatesrc" name="templatesrc" src="blank.htm" width="690" height="400" frameborder="0"></iframe>\r
+ </fieldset>\r
+ </div>\r
+ \r
+ <div class="mceActionPanel">\r
+ <div style="float: left">\r
+ <input type="submit" id="insert" name="insert" value="{#insert}" />\r
+ </div>\r
+\r
+ <div style="float: right">\r
+ <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
+ </div>\r
+\r
+ <br style="clear:both" />\r
+ </div>\r
+ </form>\r
+</body> \r
+</html> \r
--- /dev/null
+(function(){tinymce.create('tinymce.plugins.VisualChars',{init:function(ed,url){var t=this;t.editor=ed;ed.addCommand('mceVisualChars',t._toggleVisualChars,t);ed.addButton('visualchars',{title:'visualchars.desc',cmd:'mceVisualChars'});ed.onBeforeGetContent.add(function(ed,o){if(t.state){t.state=true;t._toggleVisualChars();}});},getInfo:function(){return{longname:'Visual characters',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualchars',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_toggleVisualChars:function(){var t=this,ed=t.editor,nl,i,h,d=ed.getDoc(),b=ed.getBody(),nv,s=ed.selection,bo;t.state=!t.state;ed.controlManager.setActive('visualchars',t.state);if(t.state){nl=[];tinymce.walk(b,function(n){if(n.nodeType==3&&n.nodeValue&&n.nodeValue.indexOf('\u00a0')!=-1)nl.push(n);},'childNodes');for(i=0;i<nl.length;i++){nv=nl[i].nodeValue;nv=nv.replace(/(\u00a0+)/g,'<span class="mceItemHidden mceVisualNbsp">$1</span>');nv=nv.replace(/\u00a0/g,'\u00b7');ed.dom.setOuterHTML(nl[i],nv,d);}}else{nl=tinymce.grep(ed.dom.select('span',b),function(n){return ed.dom.hasClass(n,'mceVisualNbsp');});for(i=0;i<nl.length;i++)ed.dom.setOuterHTML(nl[i],nl[i].innerHTML.replace(/(·|\u00b7)/g,' '),d);}}});tinymce.PluginManager.add('visualchars',tinymce.plugins.VisualChars);})();
\ No newline at end of file
--- /dev/null
+/**\r
+ * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $\r
+ *\r
+ * @author Moxiecode\r
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+(function() {\r
+ tinymce.create('tinymce.plugins.VisualChars', {\r
+ init : function(ed, url) {\r
+ var t = this;\r
+\r
+ t.editor = ed;\r
+\r
+ // Register commands\r
+ ed.addCommand('mceVisualChars', t._toggleVisualChars, t);\r
+\r
+ // Register buttons\r
+ ed.addButton('visualchars', {title : 'visualchars.desc', cmd : 'mceVisualChars'});\r
+\r
+ ed.onBeforeGetContent.add(function(ed, o) {\r
+ if (t.state) {\r
+ t.state = true;\r
+ t._toggleVisualChars();\r
+ }\r
+ });\r
+ },\r
+\r
+ getInfo : function() {\r
+ return {\r
+ longname : 'Visual characters',\r
+ author : 'Moxiecode Systems AB',\r
+ authorurl : 'http://tinymce.moxiecode.com',\r
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualchars',\r
+ version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+ };\r
+ },\r
+\r
+ // Private methods\r
+\r
+ _toggleVisualChars : function() {\r
+ var t = this, ed = t.editor, nl, i, h, d = ed.getDoc(), b = ed.getBody(), nv, s = ed.selection, bo;\r
+\r
+ t.state = !t.state;\r
+ ed.controlManager.setActive('visualchars', t.state);\r
+\r
+ if (t.state) {\r
+ nl = [];\r
+ tinymce.walk(b, function(n) {\r
+ if (n.nodeType == 3 && n.nodeValue && n.nodeValue.indexOf('\u00a0') != -1)\r
+ nl.push(n);\r
+ }, 'childNodes');\r
+\r
+ for (i=0; i<nl.length; i++) {\r
+ nv = nl[i].nodeValue;\r
+ nv = nv.replace(/(\u00a0+)/g, '<span class="mceItemHidden mceVisualNbsp">$1</span>');\r
+ nv = nv.replace(/\u00a0/g, '\u00b7');\r
+ ed.dom.setOuterHTML(nl[i], nv, d);\r
+ }\r
+ } else {\r
+ nl = tinymce.grep(ed.dom.select('span', b), function(n) {\r
+ return ed.dom.hasClass(n, 'mceVisualNbsp');\r
+ });\r
+\r
+ for (i=0; i<nl.length; i++)\r
+ ed.dom.setOuterHTML(nl[i], nl[i].innerHTML.replace(/(·|\u00b7)/g, ' '), d);\r
+ }\r
+ }\r
+ });\r
+\r
+ // Register plugin\r
+ tinymce.PluginManager.add('visualchars', tinymce.plugins.VisualChars);\r
+})();
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+ <title>{#xhtmlxtras_dlg.title_abbr_element}</title>\r
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
+ <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
+ <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
+ <script type="text/javascript" src="../../utils/editable_selects.js"></script>\r
+ <script type="text/javascript" src="js/element_common.js"></script>\r
+ <script type="text/javascript" src="js/abbr.js"></script>\r
+ <link rel="stylesheet" type="text/css" href="css/popup.css" />\r
+ <base target="_self" />\r
+</head>\r
+<body style="display: none">\r
+<form onsubmit="insertAbbr();return false;" action="#">\r
+ <div class="tabs">\r
+ <ul>\r
+ <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.general_tab}</a></span></li>\r
+ <!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.events_tab}</a></span></li> -->\r
+ </ul>\r
+ </div>\r
+\r
+ <div class="panel_wrapper">\r
+ <div id="general_panel" class="panel current">\r
+ <fieldset>\r
+ <legend>{#xhtmlxtras_dlg.fieldset_attrib_tab}</legend>\r
+ <table border="0" cellpadding="0" cellspacing="4">\r
+ <tr>\r
+ <td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td> \r
+ <td><input id="title" name="title" type="text" value="" class="field mceFocus" /></td> \r
+ </tr>\r
+ <tr>\r
+ <td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td> \r
+ <td><input id="id" name="id" type="text" value="" class="field" /></td> \r
+ </tr>\r
+ <tr>\r
+ <td class="label"><label id="classlabel" for="class">{#xhtmlxtras_dlg.attribute_label_class}</label>:</td> \r
+ <td>\r
+ <select id="class" name="class" class="field mceEditableSelect">\r
+ <option value="">{#not_set}</option> \r
+ </select>\r
+ </td>\r
+ </tr>\r
+ <tr>\r
+ <td class="label"><label id="stylelabel" for="class">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td> \r
+ <td><input id="style" name="style" type="text" value="" class="field" /></td> \r
+ </tr>\r
+ <tr>\r
+ <td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td> \r
+ <td>\r
+ <select id="dir" name="dir" class="field"> \r
+ <option value="">{#not_set}</option> \r
+ <option value="ltr">{#xhtmlxtras_dlg.attribute_option_ltr}</option> \r
+ <option value="rtl">{#xhtmlxtras_dlg.attribute_option_rtl}</option> \r
+ </select>\r
+ </td> \r
+ </tr>\r
+ <tr>\r
+ <td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td> \r
+ <td>\r
+ <input id="lang" name="lang" type="text" value="" class="field" />\r
+ </td> \r
+ </tr>\r
+ </table>\r
+ </fieldset>\r
+ </div>\r
+ <div id="events_panel" class="panel">\r
+ <fieldset>\r
+ <legend>{#xhtmlxtras_dlg.fieldset_events_tab}</legend>\r
+\r
+ <table border="0" cellpadding="0" cellspacing="4">\r
+ <tr>\r
+ <td class="label"><label for="onfocus">onfocus</label>:</td> \r
+ <td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onblur">onblur</label>:</td> \r
+ <td><input id="onblur" name="onblur" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onclick">onclick</label>:</td> \r
+ <td><input id="onclick" name="onclick" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="ondblclick">ondblclick</label>:</td> \r
+ <td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onmousedown">onmousedown</label>:</td> \r
+ <td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onmouseup">onmouseup</label>:</td> \r
+ <td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onmouseover">onmouseover</label>:</td> \r
+ <td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onmousemove">onmousemove</label>:</td> \r
+ <td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onmouseout">onmouseout</label>:</td> \r
+ <td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onkeypress">onkeypress</label>:</td> \r
+ <td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onkeydown">onkeydown</label>:</td> \r
+ <td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onkeyup">onkeyup</label>:</td> \r
+ <td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td> \r
+ </tr>\r
+ </table>\r
+ </fieldset>\r
+ </div>\r
+ </div>\r
+ <div class="mceActionPanel">\r
+ <div style="float: left">\r
+ <input type="submit" id="insert" name="insert" value="{#update}" />\r
+ </div>\r
+ <div style="float: left">\r
+ <input type="button" id="remove" name="remove" class="button" value="{#xhtmlxtras_dlg.remove}" onclick="removeAbbr();" style="display: none;" />\r
+ </div>\r
+ <div style="float: right">\r
+ <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
+ </div>\r
+ </div>\r
+\r
+</form>\r
+</body>\r
+</html>\r
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+ <title>{#xhtmlxtras_dlg.title_acronym_element}</title>\r
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
+ <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
+ <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
+ <script type="text/javascript" src="../../utils/editable_selects.js"></script>\r
+ <script type="text/javascript" src="js/element_common.js"></script>\r
+ <script type="text/javascript" src="js/acronym.js"></script>\r
+ <link rel="stylesheet" type="text/css" href="css/popup.css" />\r
+ <base target="_self" />\r
+</head>\r
+<body style="display: none">\r
+<form onsubmit="insertAcronym();return false;" action="#">\r
+ <div class="tabs">\r
+ <ul>\r
+ <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.general_tab}</a></span></li>\r
+ <!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.events_tab}</a></span></li> -->\r
+ </ul>\r
+ </div>\r
+\r
+ <div class="panel_wrapper">\r
+ <div id="general_panel" class="panel current">\r
+ <fieldset>\r
+ <legend>{#xhtmlxtras_dlg.fieldset_attrib_tab}</legend>\r
+ <table border="0" cellpadding="0" cellspacing="4">\r
+ <tr>\r
+ <td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td> \r
+ <td><input id="title" name="title" type="text" value="" class="field mceFocus" /></td> \r
+ </tr>\r
+ <tr>\r
+ <td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td> \r
+ <td><input id="id" name="id" type="text" value="" class="field" /></td> \r
+ </tr>\r
+ <tr>\r
+ <td class="label"><label id="classlabel" for="class">{#xhtmlxtras_dlg.attribute_label_class}</label>:</td> \r
+ <td>\r
+ <select id="class" name="class" class="field mceEditableSelect">\r
+ <option value="">{#not_set}</option> \r
+ </select>\r
+ </td>\r
+ </tr>\r
+ <tr>\r
+ <td class="label"><label id="stylelabel" for="class">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td> \r
+ <td><input id="style" name="style" type="text" value="" class="field" /></td> \r
+ </tr>\r
+ <tr>\r
+ <td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td> \r
+ <td>\r
+ <select id="dir" name="dir" class="field"> \r
+ <option value="">{#not_set}</option> \r
+ <option value="ltr">{#xhtmlxtras_dlg.attribute_option_ltr}</option> \r
+ <option value="rtl">{#xhtmlxtras_dlg.attribute_option_rtl}</option> \r
+ </select>\r
+ </td> \r
+ </tr>\r
+ <tr>\r
+ <td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td> \r
+ <td>\r
+ <input id="lang" name="lang" type="text" value="" class="field" />\r
+ </td> \r
+ </tr>\r
+ </table>\r
+ </fieldset>\r
+ </div>\r
+ <div id="events_panel" class="panel">\r
+ <fieldset>\r
+ <legend>{#xhtmlxtras_dlg.fieldset_events_tab}</legend>\r
+\r
+ <table border="0" cellpadding="0" cellspacing="4">\r
+ <tr>\r
+ <td class="label"><label for="onfocus">onfocus</label>:</td> \r
+ <td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onblur">onblur</label>:</td> \r
+ <td><input id="onblur" name="onblur" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onclick">onclick</label>:</td> \r
+ <td><input id="onclick" name="onclick" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="ondblclick">ondblclick</label>:</td> \r
+ <td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onmousedown">onmousedown</label>:</td> \r
+ <td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onmouseup">onmouseup</label>:</td> \r
+ <td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onmouseover">onmouseover</label>:</td> \r
+ <td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onmousemove">onmousemove</label>:</td> \r
+ <td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onmouseout">onmouseout</label>:</td> \r
+ <td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onkeypress">onkeypress</label>:</td> \r
+ <td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onkeydown">onkeydown</label>:</td> \r
+ <td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onkeyup">onkeyup</label>:</td> \r
+ <td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td> \r
+ </tr>\r
+ </table>\r
+ </fieldset>\r
+ </div>\r
+ </div>\r
+ <div class="mceActionPanel">\r
+ <div style="float: left">\r
+ <input type="submit" id="insert" name="insert" value="{#update}" />\r
+ </div>\r
+ <div style="float: left">\r
+ <input type="button" id="remove" name="remove" class="button" value="{#xhtmlxtras_dlg.remove}" onclick="removeAcronym();" style="display: none;" />\r
+ </div>\r
+ <div style="float: right">\r
+ <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
+ </div>\r
+ </div>\r
+\r
+</form>\r
+</body>\r
+</html>\r
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+ <title>{#xhtmlxtras_dlg.attribs_title}</title>\r
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
+ <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
+ <script type="text/javascript" src="../../utils/editable_selects.js"></script>\r
+ <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
+ <script type="text/javascript" src="js/attributes.js"></script>\r
+ <link rel="stylesheet" type="text/css" href="css/attributes.css" />\r
+ <base target="_self" />\r
+</head>\r
+<body style="display: none">\r
+<form onsubmit="insertAction();return false;" action="#">\r
+ <div class="tabs">\r
+ <ul>\r
+ <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.attribute_attrib_tab}</a></span></li>\r
+ <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.attribute_events_tab}</a></span></li>\r
+ </ul>\r
+ </div>\r
+\r
+ <div class="panel_wrapper">\r
+ <div id="general_panel" class="panel current">\r
+ <fieldset>\r
+ <legend>{#xhtmlxtras_dlg.attribute_attrib_tab}</legend>\r
+ <table border="0" cellpadding="0" cellspacing="4">\r
+ <tr>\r
+ <td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td> \r
+ <td><input id="title" name="title" type="text" value="" class="mceFocus" /></td> \r
+ </tr>\r
+ <tr>\r
+ <td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td> \r
+ <td><input id="id" name="id" type="text" value="" /></td> \r
+ </tr>\r
+ <tr>\r
+ <td><label id="classlabel" for="classlist">{#class_name}</label></td>\r
+ <td>\r
+ <select id="classlist" name="classlist" class="mceEditableSelect">\r
+ <option value="" selected>{#not_set}</option>\r
+ </select>\r
+ </td>\r
+ </tr>\r
+ <tr>\r
+ <td class="label"><label id="stylelabel" for="class">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td> \r
+ <td><input id="style" name="style" type="text" value="" /></td> \r
+ </tr>\r
+ <tr>\r
+ <td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td> \r
+ <td>\r
+ <select id="dir" name="dir"> \r
+ <option value="">{#not_set}</option> \r
+ <option value="ltr">{#xhtmlxtras_dlg.option_ltr}</option> \r
+ <option value="rtl">{#xhtmlxtras_dlg.option_rtl}</option> \r
+ </select>\r
+ </td> \r
+ </tr>\r
+ <tr>\r
+ <td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td> \r
+ <td>\r
+ <input id="lang" name="lang" type="text" value="" />\r
+ </td> \r
+ </tr>\r
+ <tr>\r
+ <td><label id="tabindexlabel" for="tabindex">{#xhtmlxtras_dlg.attribute_label_tabindex}</label></td>\r
+ <td><input type="text" id="tabindex" name="tabindex" value="" /></td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td><label id="accesskeylabel" for="accesskey">{#xhtmlxtras_dlg.attribute_label_accesskey}</label></td>\r
+ <td><input type="text" id="accesskey" name="accesskey" value="" /></td>\r
+ </tr>\r
+ </table>\r
+ </fieldset>\r
+ </div>\r
+ <div id="events_panel" class="panel">\r
+ <fieldset>\r
+ <legend>{#xhtmlxtras_dlg.attribute_events_tab}</legend>\r
+\r
+ <table border="0" cellpadding="0" cellspacing="4">\r
+ <tr>\r
+ <td class="label"><label for="onfocus">onfocus</label>:</td> \r
+ <td><input id="onfocus" name="onfocus" type="text" value="" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onblur">onblur</label>:</td> \r
+ <td><input id="onblur" name="onblur" type="text" value="" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onclick">onclick</label>:</td> \r
+ <td><input id="onclick" name="onclick" type="text" value="" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="ondblclick">ondblclick</label>:</td> \r
+ <td><input id="ondblclick" name="ondblclick" type="text" value="" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onmousedown">onmousedown</label>:</td> \r
+ <td><input id="onmousedown" name="onmousedown" type="text" value="" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onmouseup">onmouseup</label>:</td> \r
+ <td><input id="onmouseup" name="onmouseup" type="text" value="" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onmouseover">onmouseover</label>:</td> \r
+ <td><input id="onmouseover" name="onmouseover" type="text" value="" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onmousemove">onmousemove</label>:</td> \r
+ <td><input id="onmousemove" name="onmousemove" type="text" value="" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onmouseout">onmouseout</label>:</td> \r
+ <td><input id="onmouseout" name="onmouseout" type="text" value="" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onkeypress">onkeypress</label>:</td> \r
+ <td><input id="onkeypress" name="onkeypress" type="text" value="" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onkeydown">onkeydown</label>:</td> \r
+ <td><input id="onkeydown" name="onkeydown" type="text" value="" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onkeyup">onkeyup</label>:</td> \r
+ <td><input id="onkeyup" name="onkeyup" type="text" value="" /></td> \r
+ </tr>\r
+ </table>\r
+ </fieldset>\r
+ </div>\r
+ </div>\r
+ <div class="mceActionPanel">\r
+ <div style="float: left">\r
+ <input type="submit" id="insert" name="insert" value="{#insert}" />\r
+ </div>\r
+ <div style="float: right">\r
+ <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
+ </div>\r
+ </div>\r
+\r
+</form>\r
+</body>\r
+</html>\r
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+ <title>{#xhtmlxtras_dlg.title_cite_element}</title>\r
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
+ <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
+ <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
+ <script type="text/javascript" src="../../utils/editable_selects.js"></script>\r
+ <script type="text/javascript" src="js/element_common.js"></script>\r
+ <script type="text/javascript" src="js/cite.js"></script>\r
+ <link rel="stylesheet" type="text/css" href="css/popup.css" />\r
+ <base target="_self" />\r
+</head>\r
+<body style="display: none">\r
+<form onsubmit="insertCite();return false;" action="#">\r
+ <div class="tabs">\r
+ <ul>\r
+ <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.general_tab}</a></span></li>\r
+ <!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.events_tab}</a></span></li> -->\r
+ </ul>\r
+ </div>\r
+\r
+ <div class="panel_wrapper">\r
+ <div id="general_panel" class="panel current">\r
+ <fieldset>\r
+ <legend>{#xhtmlxtras_dlg.fieldset_attrib_tab}</legend>\r
+ <table border="0" cellpadding="0" cellspacing="4">\r
+ <tr>\r
+ <td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td> \r
+ <td><input id="title" name="title" type="text" value="" class="field mceFocus" /></td> \r
+ </tr>\r
+ <tr>\r
+ <td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td> \r
+ <td><input id="id" name="id" type="text" value="" class="field" /></td> \r
+ </tr>\r
+ <tr>\r
+ <td class="label"><label id="classlabel" for="class">{#xhtmlxtras_dlg.attribute_label_class}</label>:</td> \r
+ <td>\r
+ <select id="class" name="class" class="field mceEditableSelect">\r
+ <option value="">{#not_set}</option> \r
+ </select>\r
+ </td>\r
+ </tr>\r
+ <tr>\r
+ <td class="label"><label id="stylelabel" for="class">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td> \r
+ <td><input id="style" name="style" type="text" value="" class="field" /></td> \r
+ </tr>\r
+ <tr>\r
+ <td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td> \r
+ <td>\r
+ <select id="dir" name="dir" class="field"> \r
+ <option value="">{#not_set}</option> \r
+ <option value="ltr">{#xhtmlxtras_dlg.attribute_option_ltr}</option> \r
+ <option value="rtl">{#xhtmlxtras_dlg.attribute_option_rtl}</option> \r
+ </select>\r
+ </td> \r
+ </tr>\r
+ <tr>\r
+ <td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td> \r
+ <td>\r
+ <input id="lang" name="lang" type="text" value="" class="field" />\r
+ </td> \r
+ </tr>\r
+ </table>\r
+ </fieldset>\r
+ </div>\r
+ <div id="events_panel" class="panel">\r
+ <fieldset>\r
+ <legend>{#xhtmlxtras_dlg.fieldset_events_tab}</legend>\r
+\r
+ <table border="0" cellpadding="0" cellspacing="4">\r
+ <tr>\r
+ <td class="label"><label for="onfocus">onfocus</label>:</td> \r
+ <td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onblur">onblur</label>:</td> \r
+ <td><input id="onblur" name="onblur" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onclick">onclick</label>:</td> \r
+ <td><input id="onclick" name="onclick" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="ondblclick">ondblclick</label>:</td> \r
+ <td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onmousedown">onmousedown</label>:</td> \r
+ <td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onmouseup">onmouseup</label>:</td> \r
+ <td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onmouseover">onmouseover</label>:</td> \r
+ <td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onmousemove">onmousemove</label>:</td> \r
+ <td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onmouseout">onmouseout</label>:</td> \r
+ <td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onkeypress">onkeypress</label>:</td> \r
+ <td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onkeydown">onkeydown</label>:</td> \r
+ <td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onkeyup">onkeyup</label>:</td> \r
+ <td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td> \r
+ </tr>\r
+ </table>\r
+ </fieldset>\r
+ </div>\r
+ </div>\r
+ <div class="mceActionPanel">\r
+ <div style="float: left">\r
+ <input type="submit" id="insert" name="insert" value="{#update}" />\r
+ </div>\r
+ <div style="float: left">\r
+ <input type="button" id="remove" name="remove" class="button" value="{#xhtmlxtras_dlg.remove}" onclick="removeCite();" style="display: none;" />\r
+ </div>\r
+ <div style="float: right">\r
+ <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
+ </div>\r
+ </div>\r
+\r
+</form>\r
+</body>\r
+</html>\r
--- /dev/null
+.panel_wrapper div.current {\r
+ height: 290px;\r
+}\r
+\r
+#id, #style, #title, #dir, #hreflang, #lang, #classlist, #tabindex, #accesskey {\r
+ width: 200px;\r
+}\r
+\r
+#events_panel input {\r
+ width: 200px;\r
+}\r
--- /dev/null
+input.field, select.field {width:200px;}\r
+input.picker {width:179px; margin-left: 5px;}\r
+input.disabled {border-color:#F2F2F2;}\r
+img.picker {vertical-align:text-bottom; cursor:pointer;}\r
+h1 {padding: 0 0 5px 0;}\r
+.panel_wrapper div.current {height:160px;}\r
+#xhtmlxtrasdel .panel_wrapper div.current, #xhtmlxtrasins .panel_wrapper div.current {height: 230px;}\r
+a.browse span {display:block; width:20px; height:20px; background:url('../../../themes/advanced/img/icons.gif') -140px -20px;}\r
+#datetime {width:180px;}\r
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+ <title>{#xhtmlxtras_dlg.title_del_element}</title>\r
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
+ <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
+ <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
+ <script type="text/javascript" src="../../utils/editable_selects.js"></script>\r
+ <script type="text/javascript" src="js/element_common.js"></script>\r
+ <script type="text/javascript" src="js/del.js"></script>\r
+ <link rel="stylesheet" type="text/css" href="css/popup.css" />\r
+ <base target="_self" />\r
+</head>\r
+<body id="xhtmlxtrasins" style="display: none">\r
+<form onsubmit="insertDel();return false;" action="#">\r
+ <div class="tabs">\r
+ <ul>\r
+ <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.general_tab}</a></span></li>\r
+ <!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.events_tab}</a></span></li> -->\r
+ </ul>\r
+ </div>\r
+\r
+ <div class="panel_wrapper">\r
+ <div id="general_panel" class="panel current">\r
+ <fieldset>\r
+ <legend>{#xhtmlxtras_dlg.fieldset_general_tab}</legend>\r
+ <table border="0" cellpadding="0" cellspacing="4">\r
+ <tr>\r
+ <td class="label"><label id="datetimelabel" for="datetime">{#xhtmlxtras_dlg.attribute_label_datetime}</label>:</td>\r
+ <td>\r
+ <table border="0" cellspacing="0" cellpadding="0">\r
+ <tr> \r
+ <td><input id="datetime" name="datetime" type="text" value="" maxlength="19" class="field mceFocus" /></td> \r
+ <td><a href="javascript:insertDateTime('datetime');" onmousedown="return false;" class="browse"><span class="datetime" alt="{#xhtmlxtras_dlg.insert_date}" title="{#xhtmlxtras_dlg.insert_date}"></span></a></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+ </tr>\r
+ <tr>\r
+ <td class="label"><label id="citelabel" for="cite">{#xhtmlxtras_dlg.attribute_label_cite}</label>:</td>\r
+ <td><input id="cite" name="cite" type="text" value="" class="field" /></td> \r
+ </tr>\r
+ </table>\r
+ </fieldset>\r
+ <fieldset>\r
+ <legend>{#xhtmlxtras_dlg.fieldset_attrib_tab}</legend>\r
+ <table border="0" cellpadding="0" cellspacing="4">\r
+ <tr>\r
+ <td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td> \r
+ <td><input id="title" name="title" type="text" value="" class="field" /></td> \r
+ </tr>\r
+ <tr>\r
+ <td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td> \r
+ <td><input id="id" name="id" type="text" value="" class="field" /></td> \r
+ </tr>\r
+ <tr>\r
+ <td class="label"><label id="classlabel" for="class">{#xhtmlxtras_dlg.attribute_label_class}</label>:</td> \r
+ <td>\r
+ <select id="class" name="class" class="field mceEditableSelect">\r
+ <option value="">{#not_set}</option> \r
+ </select>\r
+ </td>\r
+ </tr>\r
+ <tr>\r
+ <td class="label"><label id="stylelabel" for="class">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td> \r
+ <td><input id="style" name="style" type="text" value="" class="field" /></td> \r
+ </tr>\r
+ <tr>\r
+ <td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td> \r
+ <td>\r
+ <select id="dir" name="dir" class="field"> \r
+ <option value="">{#not_set}</option> \r
+ <option value="ltr">{#xhtmlxtras_dlg.attribute_option_ltr}</option> \r
+ <option value="rtl">{#xhtmlxtras_dlg.attribute_option_rtl}</option> \r
+ </select>\r
+ </td> \r
+ </tr>\r
+ <tr>\r
+ <td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td> \r
+ <td>\r
+ <input id="lang" name="lang" type="text" value="" class="field" />\r
+ </td> \r
+ </tr>\r
+ </table>\r
+ </fieldset>\r
+ </div>\r
+ <div id="events_panel" class="panel">\r
+ <fieldset>\r
+ <legend>{#xhtmlxtras_dlg.fieldset_events_tab}</legend>\r
+\r
+ <table border="0" cellpadding="0" cellspacing="4">\r
+ <tr>\r
+ <td class="label"><label for="onfocus">onfocus</label>:</td> \r
+ <td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onblur">onblur</label>:</td> \r
+ <td><input id="onblur" name="onblur" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onclick">onclick</label>:</td> \r
+ <td><input id="onclick" name="onclick" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="ondblclick">ondblclick</label>:</td> \r
+ <td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onmousedown">onmousedown</label>:</td> \r
+ <td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onmouseup">onmouseup</label>:</td> \r
+ <td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onmouseover">onmouseover</label>:</td> \r
+ <td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onmousemove">onmousemove</label>:</td> \r
+ <td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onmouseout">onmouseout</label>:</td> \r
+ <td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onkeypress">onkeypress</label>:</td> \r
+ <td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onkeydown">onkeydown</label>:</td> \r
+ <td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onkeyup">onkeyup</label>:</td> \r
+ <td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td> \r
+ </tr>\r
+ </table>\r
+ </fieldset>\r
+ </div>\r
+ </div>\r
+ <div class="mceActionPanel">\r
+ <div style="float: left">\r
+ <input type="submit" id="insert" name="insert" value="{#update}" />\r
+ </div>\r
+ <div style="float: left">\r
+ <input type="button" id="remove" name="remove" class="button" value="{#xhtmlxtras_dlg.remove}" onclick="removeDel();" style="display: none;" />\r
+ </div>\r
+ <div style="float: right">\r
+ <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
+ </div>\r
+ </div>\r
+\r
+</form>\r
+\r
+</body>\r
+</html>\r
--- /dev/null
+(function(){tinymce.create('tinymce.plugins.XHTMLXtrasPlugin',{init:function(ed,url){ed.addCommand('mceCite',function(){ed.windowManager.open({file:url+'/cite.htm',width:350+parseInt(ed.getLang('xhtmlxtras.cite_delta_width',0)),height:250+parseInt(ed.getLang('xhtmlxtras.cite_delta_height',0)),inline:1},{plugin_url:url});});ed.addCommand('mceAcronym',function(){ed.windowManager.open({file:url+'/acronym.htm',width:350+parseInt(ed.getLang('xhtmlxtras.acronym_delta_width',0)),height:250+parseInt(ed.getLang('xhtmlxtras.acronym_delta_width',0)),inline:1},{plugin_url:url});});ed.addCommand('mceAbbr',function(){ed.windowManager.open({file:url+'/abbr.htm',width:350+parseInt(ed.getLang('xhtmlxtras.abbr_delta_width',0)),height:250+parseInt(ed.getLang('xhtmlxtras.abbr_delta_width',0)),inline:1},{plugin_url:url});});ed.addCommand('mceDel',function(){ed.windowManager.open({file:url+'/del.htm',width:340+parseInt(ed.getLang('xhtmlxtras.del_delta_width',0)),height:310+parseInt(ed.getLang('xhtmlxtras.del_delta_width',0)),inline:1},{plugin_url:url});});ed.addCommand('mceIns',function(){ed.windowManager.open({file:url+'/ins.htm',width:340+parseInt(ed.getLang('xhtmlxtras.ins_delta_width',0)),height:310+parseInt(ed.getLang('xhtmlxtras.ins_delta_width',0)),inline:1},{plugin_url:url});});ed.addCommand('mceAttributes',function(){ed.windowManager.open({file:url+'/attributes.htm',width:380,height:370,inline:1},{plugin_url:url});});ed.addButton('cite',{title:'xhtmlxtras.cite_desc',cmd:'mceCite'});ed.addButton('acronym',{title:'xhtmlxtras.acronym_desc',cmd:'mceAcronym'});ed.addButton('abbr',{title:'xhtmlxtras.abbr_desc',cmd:'mceAbbr'});ed.addButton('del',{title:'xhtmlxtras.del_desc',cmd:'mceDel'});ed.addButton('ins',{title:'xhtmlxtras.ins_desc',cmd:'mceIns'});ed.addButton('attribs',{title:'xhtmlxtras.attribs_desc',cmd:'mceAttributes'});if(tinymce.isIE){function fix(ed,o){if(o.set){o.content=o.content.replace(/<abbr([^>]+)>/gi,'<html:abbr $1>');o.content=o.content.replace(/<\/abbr>/gi,'</html:abbr>');}};ed.onBeforeSetContent.add(fix);ed.onPostProcess.add(fix);}ed.onNodeChange.add(function(ed,cm,n,co){n=ed.dom.getParent(n,'CITE,ACRONYM,ABBR,DEL,INS');cm.setDisabled('cite',co);cm.setDisabled('acronym',co);cm.setDisabled('abbr',co);cm.setDisabled('del',co);cm.setDisabled('ins',co);cm.setDisabled('attribs',n&&n.nodeName=='BODY');if(n){cm.setDisabled(n.nodeName.toLowerCase(),0);cm.setActive(n.nodeName.toLowerCase(),1);}else{cm.setActive('cite',0);cm.setActive('acronym',0);cm.setActive('abbr',0);cm.setActive('del',0);cm.setActive('ins',0);}});},getInfo:function(){return{longname:'XHTML Xtras Plugin',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/xhtmlxtras',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('xhtmlxtras',tinymce.plugins.XHTMLXtrasPlugin);})();
\ No newline at end of file
--- /dev/null
+/**\r
+ * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $\r
+ *\r
+ * @author Moxiecode\r
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+(function() {\r
+ tinymce.create('tinymce.plugins.XHTMLXtrasPlugin', {\r
+ init : function(ed, url) {\r
+ // Register commands\r
+ ed.addCommand('mceCite', function() {\r
+ ed.windowManager.open({\r
+ file : url + '/cite.htm',\r
+ width : 350 + parseInt(ed.getLang('xhtmlxtras.cite_delta_width', 0)),\r
+ height : 250 + parseInt(ed.getLang('xhtmlxtras.cite_delta_height', 0)),\r
+ inline : 1\r
+ }, {\r
+ plugin_url : url\r
+ });\r
+ });\r
+\r
+ ed.addCommand('mceAcronym', function() {\r
+ ed.windowManager.open({\r
+ file : url + '/acronym.htm',\r
+ width : 350 + parseInt(ed.getLang('xhtmlxtras.acronym_delta_width', 0)),\r
+ height : 250 + parseInt(ed.getLang('xhtmlxtras.acronym_delta_width', 0)),\r
+ inline : 1\r
+ }, {\r
+ plugin_url : url\r
+ });\r
+ });\r
+\r
+ ed.addCommand('mceAbbr', function() {\r
+ ed.windowManager.open({\r
+ file : url + '/abbr.htm',\r
+ width : 350 + parseInt(ed.getLang('xhtmlxtras.abbr_delta_width', 0)),\r
+ height : 250 + parseInt(ed.getLang('xhtmlxtras.abbr_delta_width', 0)),\r
+ inline : 1\r
+ }, {\r
+ plugin_url : url\r
+ });\r
+ });\r
+\r
+ ed.addCommand('mceDel', function() {\r
+ ed.windowManager.open({\r
+ file : url + '/del.htm',\r
+ width : 340 + parseInt(ed.getLang('xhtmlxtras.del_delta_width', 0)),\r
+ height : 310 + parseInt(ed.getLang('xhtmlxtras.del_delta_width', 0)),\r
+ inline : 1\r
+ }, {\r
+ plugin_url : url\r
+ });\r
+ });\r
+\r
+ ed.addCommand('mceIns', function() {\r
+ ed.windowManager.open({\r
+ file : url + '/ins.htm',\r
+ width : 340 + parseInt(ed.getLang('xhtmlxtras.ins_delta_width', 0)),\r
+ height : 310 + parseInt(ed.getLang('xhtmlxtras.ins_delta_width', 0)),\r
+ inline : 1\r
+ }, {\r
+ plugin_url : url\r
+ });\r
+ });\r
+\r
+ ed.addCommand('mceAttributes', function() {\r
+ ed.windowManager.open({\r
+ file : url + '/attributes.htm',\r
+ width : 380,\r
+ height : 370,\r
+ inline : 1\r
+ }, {\r
+ plugin_url : url\r
+ });\r
+ });\r
+\r
+ // Register buttons\r
+ ed.addButton('cite', {title : 'xhtmlxtras.cite_desc', cmd : 'mceCite'});\r
+ ed.addButton('acronym', {title : 'xhtmlxtras.acronym_desc', cmd : 'mceAcronym'});\r
+ ed.addButton('abbr', {title : 'xhtmlxtras.abbr_desc', cmd : 'mceAbbr'});\r
+ ed.addButton('del', {title : 'xhtmlxtras.del_desc', cmd : 'mceDel'});\r
+ ed.addButton('ins', {title : 'xhtmlxtras.ins_desc', cmd : 'mceIns'});\r
+ ed.addButton('attribs', {title : 'xhtmlxtras.attribs_desc', cmd : 'mceAttributes'});\r
+\r
+ if (tinymce.isIE) {\r
+ function fix(ed, o) {\r
+ if (o.set) {\r
+ o.content = o.content.replace(/<abbr([^>]+)>/gi, '<html:abbr $1>');\r
+ o.content = o.content.replace(/<\/abbr>/gi, '</html:abbr>');\r
+ }\r
+ };\r
+\r
+ ed.onBeforeSetContent.add(fix);\r
+ ed.onPostProcess.add(fix);\r
+ }\r
+\r
+ ed.onNodeChange.add(function(ed, cm, n, co) {\r
+ n = ed.dom.getParent(n, 'CITE,ACRONYM,ABBR,DEL,INS');\r
+\r
+ cm.setDisabled('cite', co);\r
+ cm.setDisabled('acronym', co);\r
+ cm.setDisabled('abbr', co);\r
+ cm.setDisabled('del', co);\r
+ cm.setDisabled('ins', co);\r
+ cm.setDisabled('attribs', n && n.nodeName == 'BODY');\r
+\r
+ if (n) {\r
+ cm.setDisabled(n.nodeName.toLowerCase(), 0);\r
+ cm.setActive(n.nodeName.toLowerCase(), 1);\r
+ } else {\r
+ cm.setActive('cite', 0);\r
+ cm.setActive('acronym', 0);\r
+ cm.setActive('abbr', 0);\r
+ cm.setActive('del', 0);\r
+ cm.setActive('ins', 0);\r
+ }\r
+ });\r
+ },\r
+\r
+ getInfo : function() {\r
+ return {\r
+ longname : 'XHTML Xtras Plugin',\r
+ author : 'Moxiecode Systems AB',\r
+ authorurl : 'http://tinymce.moxiecode.com',\r
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/xhtmlxtras',\r
+ version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+ };\r
+ }\r
+ });\r
+\r
+ // Register plugin\r
+ tinymce.PluginManager.add('xhtmlxtras', tinymce.plugins.XHTMLXtrasPlugin);\r
+})();
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+ <title>{#xhtmlxtras_dlg.title_ins_element}</title>\r
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
+ <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
+ <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
+ <script type="text/javascript" src="../../utils/editable_selects.js"></script>\r
+ <script type="text/javascript" src="js/element_common.js"></script>\r
+ <script type="text/javascript" src="js/ins.js"></script>\r
+ <link rel="stylesheet" type="text/css" href="css/popup.css" />\r
+ <base target="_self" />\r
+</head>\r
+<body id="xhtmlxtrasins" style="display: none">\r
+<form onsubmit="insertIns();return false;" action="#">\r
+ <div class="tabs">\r
+ <ul>\r
+ <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.general_tab}</a></span></li>\r
+ <!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.events_tab}</a></span></li> -->\r
+ </ul>\r
+ </div>\r
+\r
+ <div class="panel_wrapper">\r
+ <div id="general_panel" class="panel current">\r
+ <fieldset>\r
+ <legend>{#xhtmlxtras_dlg.fieldset_general_tab}</legend>\r
+ <table border="0" cellpadding="0" cellspacing="4">\r
+ <tr>\r
+ <td class="label"><label id="datetimelabel" for="datetime">{#xhtmlxtras_dlg.attribute_label_datetime}</label>:</td> \r
+ <td>\r
+ <table border="0" cellspacing="0" cellpadding="0">\r
+ <tr> \r
+ <td><input id="datetime" name="datetime" type="text" value="" maxlength="19" class="field mceFocus" /></td> \r
+ <td><a href="javascript:insertDateTime('datetime');" onmousedown="return false;" class="browse"><span class="datetime" alt="{#xhtmlxtras_dlg.insert_date}" title="{#xhtmlxtras_dlg.insert_date}"></span></a></td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+ </tr>\r
+ <tr>\r
+ <td class="label"><label id="citelabel" for="cite">{#xhtmlxtras_dlg.attribute_label_cite}</label>:</td> \r
+ <td><input id="cite" name="cite" type="text" value="" class="field" /></td> \r
+ </tr>\r
+ </table>\r
+ </fieldset>\r
+ <fieldset>\r
+ <legend>{#xhtmlxtras_dlg.fieldset_attrib_tab}</legend>\r
+ <table border="0" cellpadding="0" cellspacing="4">\r
+ <tr>\r
+ <td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td> \r
+ <td><input id="title" name="title" type="text" value="" class="field" /></td> \r
+ </tr>\r
+ <tr>\r
+ <td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td> \r
+ <td><input id="id" name="id" type="text" value="" class="field" /></td> \r
+ </tr>\r
+ <tr>\r
+ <td class="label"><label id="classlabel" for="class">{#xhtmlxtras_dlg.attribute_label_class}</label>:</td> \r
+ <td>\r
+ <select id="class" name="class" class="field mceEditableSelect">\r
+ <option value="">{#not_set}</option> \r
+ </select>\r
+ </td>\r
+ </tr>\r
+ <tr>\r
+ <td class="label"><label id="stylelabel" for="class">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td> \r
+ <td><input id="style" name="style" type="text" value="" class="field" /></td> \r
+ </tr>\r
+ <tr>\r
+ <td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td> \r
+ <td>\r
+ <select id="dir" name="dir" class="field"> \r
+ <option value="">{#not_set}</option> \r
+ <option value="ltr">{#xhtmlxtras_dlg.attribute_option_ltr}</option> \r
+ <option value="rtl">{#xhtmlxtras_dlg.attribute_option_rtl}</option> \r
+ </select>\r
+ </td> \r
+ </tr>\r
+ <tr>\r
+ <td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td> \r
+ <td>\r
+ <input id="lang" name="lang" type="text" value="" class="field" />\r
+ </td> \r
+ </tr>\r
+ </table>\r
+ </fieldset>\r
+ </div>\r
+ <div id="events_panel" class="panel">\r
+ <fieldset>\r
+ <legend>{#xhtmlxtras_dlg.fieldset_events_tab}</legend>\r
+\r
+ <table border="0" cellpadding="0" cellspacing="4">\r
+ <tr>\r
+ <td class="label"><label for="onfocus">onfocus</label>:</td> \r
+ <td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onblur">onblur</label>:</td> \r
+ <td><input id="onblur" name="onblur" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onclick">onclick</label>:</td> \r
+ <td><input id="onclick" name="onclick" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="ondblclick">ondblclick</label>:</td> \r
+ <td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onmousedown">onmousedown</label>:</td> \r
+ <td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onmouseup">onmouseup</label>:</td> \r
+ <td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onmouseover">onmouseover</label>:</td> \r
+ <td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onmousemove">onmousemove</label>:</td> \r
+ <td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onmouseout">onmouseout</label>:</td> \r
+ <td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onkeypress">onkeypress</label>:</td> \r
+ <td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onkeydown">onkeydown</label>:</td> \r
+ <td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td> \r
+ </tr>\r
+\r
+ <tr>\r
+ <td class="label"><label for="onkeyup">onkeyup</label>:</td> \r
+ <td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td> \r
+ </tr>\r
+ </table>\r
+ </fieldset>\r
+ </div>\r
+ </div>\r
+ <div class="mceActionPanel">\r
+ <div style="float: left">\r
+ <input type="submit" id="insert" name="insert" value="{#update}" />\r
+ </div>\r
+ <div style="float: left">\r
+ <input type="button" id="remove" name="remove" class="button" value="{#xhtmlxtras_dlg.remove}" onclick="removeIns();" style="display: none;" />\r
+ </div>\r
+ <div style="float: right">\r
+ <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
+ </div>\r
+ </div>\r
+\r
+</form>\r
+\r
+</body>\r
+</html>\r
--- /dev/null
+ /**\r
+ * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $\r
+ *\r
+ * @author Moxiecode - based on work by Andrew Tetlaw\r
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+function init() {\r
+ SXE.initElementDialog('abbr');\r
+ if (SXE.currentAction == "update") {\r
+ SXE.showRemoveButton();\r
+ }\r
+}\r
+\r
+function insertAbbr() {\r
+ SXE.insertElement(tinymce.isIE ? 'html:abbr' : 'abbr');\r
+ tinyMCEPopup.close();\r
+}\r
+\r
+function removeAbbr() {\r
+ SXE.removeElement('abbr');\r
+ tinyMCEPopup.close();\r
+}\r
+\r
+tinyMCEPopup.onInit.add(init);\r
--- /dev/null
+ /**\r
+ * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $\r
+ *\r
+ * @author Moxiecode - based on work by Andrew Tetlaw\r
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+function init() {\r
+ SXE.initElementDialog('acronym');\r
+ if (SXE.currentAction == "update") {\r
+ SXE.showRemoveButton();\r
+ }\r
+}\r
+\r
+function insertAcronym() {\r
+ SXE.insertElement('acronym');\r
+ tinyMCEPopup.close();\r
+}\r
+\r
+function removeAcronym() {\r
+ SXE.removeElement('acronym');\r
+ tinyMCEPopup.close();\r
+}\r
+\r
+tinyMCEPopup.onInit.add(init);\r
--- /dev/null
+ /**\r
+ * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $\r
+ *\r
+ * @author Moxiecode - based on work by Andrew Tetlaw\r
+ * @copyright Copyright © 2004-2006, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+function init() {\r
+ tinyMCEPopup.resizeToInnerSize();\r
+ var inst = tinyMCEPopup.editor;\r
+ var dom = inst.dom;\r
+ var elm = inst.selection.getNode();\r
+ var f = document.forms[0];\r
+ var onclick = dom.getAttrib(elm, 'onclick');\r
+\r
+ setFormValue('title', dom.getAttrib(elm, 'title'));\r
+ setFormValue('id', dom.getAttrib(elm, 'id'));\r
+ setFormValue('style', dom.getAttrib(elm, "style"));\r
+ setFormValue('dir', dom.getAttrib(elm, 'dir'));\r
+ setFormValue('lang', dom.getAttrib(elm, 'lang'));\r
+ setFormValue('tabindex', dom.getAttrib(elm, 'tabindex', typeof(elm.tabindex) != "undefined" ? elm.tabindex : ""));\r
+ setFormValue('accesskey', dom.getAttrib(elm, 'accesskey', typeof(elm.accesskey) != "undefined" ? elm.accesskey : ""));\r
+ setFormValue('onfocus', dom.getAttrib(elm, 'onfocus'));\r
+ setFormValue('onblur', dom.getAttrib(elm, 'onblur'));\r
+ setFormValue('onclick', onclick);\r
+ setFormValue('ondblclick', dom.getAttrib(elm, 'ondblclick'));\r
+ setFormValue('onmousedown', dom.getAttrib(elm, 'onmousedown'));\r
+ setFormValue('onmouseup', dom.getAttrib(elm, 'onmouseup'));\r
+ setFormValue('onmouseover', dom.getAttrib(elm, 'onmouseover'));\r
+ setFormValue('onmousemove', dom.getAttrib(elm, 'onmousemove'));\r
+ setFormValue('onmouseout', dom.getAttrib(elm, 'onmouseout'));\r
+ setFormValue('onkeypress', dom.getAttrib(elm, 'onkeypress'));\r
+ setFormValue('onkeydown', dom.getAttrib(elm, 'onkeydown'));\r
+ setFormValue('onkeyup', dom.getAttrib(elm, 'onkeyup'));\r
+ className = dom.getAttrib(elm, 'class');\r
+\r
+ addClassesToList('classlist', 'advlink_styles');\r
+ selectByValue(f, 'classlist', className, true);\r
+\r
+ TinyMCE_EditableSelects.init();\r
+}\r
+\r
+function setFormValue(name, value) {\r
+ if(value && document.forms[0].elements[name]){\r
+ document.forms[0].elements[name].value = value;\r
+ }\r
+}\r
+\r
+function insertAction() {\r
+ var inst = tinyMCEPopup.editor;\r
+ var elm = inst.selection.getNode();\r
+\r
+ tinyMCEPopup.execCommand("mceBeginUndoLevel"); \r
+ setAllAttribs(elm);\r
+ tinyMCEPopup.execCommand("mceEndUndoLevel");\r
+ tinyMCEPopup.close();\r
+}\r
+\r
+function setAttrib(elm, attrib, value) {\r
+ var formObj = document.forms[0];\r
+ var valueElm = formObj.elements[attrib.toLowerCase()];\r
+ var inst = tinyMCEPopup.editor;\r
+ var dom = inst.dom;\r
+\r
+ if (typeof(value) == "undefined" || value == null) {\r
+ value = "";\r
+\r
+ if (valueElm)\r
+ value = valueElm.value;\r
+ }\r
+\r
+ if (value != "") {\r
+ dom.setAttrib(elm, attrib.toLowerCase(), value);\r
+\r
+ if (attrib == "style")\r
+ attrib = "style.cssText";\r
+\r
+ if (attrib.substring(0, 2) == 'on')\r
+ value = 'return true;' + value;\r
+\r
+ if (attrib == "class")\r
+ attrib = "className";\r
+\r
+ elm[attrib]=value;\r
+ } else\r
+ elm.removeAttribute(attrib);\r
+}\r
+\r
+function setAllAttribs(elm) {\r
+ var f = document.forms[0];\r
+\r
+ setAttrib(elm, 'title');\r
+ setAttrib(elm, 'id');\r
+ setAttrib(elm, 'style');\r
+ setAttrib(elm, 'class', getSelectValue(f, 'classlist'));\r
+ setAttrib(elm, 'dir');\r
+ setAttrib(elm, 'lang');\r
+ setAttrib(elm, 'tabindex');\r
+ setAttrib(elm, 'accesskey');\r
+ setAttrib(elm, 'onfocus');\r
+ setAttrib(elm, 'onblur');\r
+ setAttrib(elm, 'onclick');\r
+ setAttrib(elm, 'ondblclick');\r
+ setAttrib(elm, 'onmousedown');\r
+ setAttrib(elm, 'onmouseup');\r
+ setAttrib(elm, 'onmouseover');\r
+ setAttrib(elm, 'onmousemove');\r
+ setAttrib(elm, 'onmouseout');\r
+ setAttrib(elm, 'onkeypress');\r
+ setAttrib(elm, 'onkeydown');\r
+ setAttrib(elm, 'onkeyup');\r
+\r
+ // Refresh in old MSIE\r
+// if (tinyMCE.isMSIE5)\r
+// elm.outerHTML = elm.outerHTML;\r
+}\r
+\r
+function insertAttribute() {\r
+ tinyMCEPopup.close();\r
+}\r
+\r
+tinyMCEPopup.onInit.add(init);\r
+tinyMCEPopup.requireLangPack();\r
--- /dev/null
+ /**\r
+ * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $\r
+ *\r
+ * @author Moxiecode - based on work by Andrew Tetlaw\r
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+function init() {\r
+ SXE.initElementDialog('cite');\r
+ if (SXE.currentAction == "update") {\r
+ SXE.showRemoveButton();\r
+ }\r
+}\r
+\r
+function insertCite() {\r
+ SXE.insertElement('cite');\r
+ tinyMCEPopup.close();\r
+}\r
+\r
+function removeCite() {\r
+ SXE.removeElement('cite');\r
+ tinyMCEPopup.close();\r
+}\r
+\r
+tinyMCEPopup.onInit.add(init);\r
--- /dev/null
+ /**\r
+ * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $\r
+ *\r
+ * @author Moxiecode - based on work by Andrew Tetlaw\r
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+function init() {\r
+ SXE.initElementDialog('del');\r
+ if (SXE.currentAction == "update") {\r
+ setFormValue('datetime', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'datetime'));\r
+ setFormValue('cite', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'cite'));\r
+ SXE.showRemoveButton();\r
+ }\r
+}\r
+\r
+function setElementAttribs(elm) {\r
+ setAllCommonAttribs(elm);\r
+ setAttrib(elm, 'datetime');\r
+ setAttrib(elm, 'cite');\r
+}\r
+\r
+function insertDel() {\r
+ var elm = tinyMCEPopup.editor.dom.getParent(SXE.focusElement, 'DEL');\r
+\r
+ tinyMCEPopup.execCommand('mceBeginUndoLevel');\r
+ if (elm == null) {\r
+ var s = SXE.inst.selection.getContent();\r
+ if(s.length > 0) {\r
+ tinyMCEPopup.execCommand('mceInsertContent', false, '<del id="#sxe_temp_del#">' + s + '</del>');\r
+ var elementArray = tinymce.grep(SXE.inst.dom.select('del'), function(n) {return n.id == '#sxe_temp_del#';});\r
+ for (var i=0; i<elementArray.length; i++) {\r
+ var elm = elementArray[i];\r
+ setElementAttribs(elm);\r
+ }\r
+ }\r
+ } else {\r
+ setElementAttribs(elm);\r
+ }\r
+ tinyMCEPopup.editor.nodeChanged();\r
+ tinyMCEPopup.execCommand('mceEndUndoLevel');\r
+ tinyMCEPopup.close();\r
+}\r
+\r
+function removeDel() {\r
+ SXE.removeElement('del');\r
+ tinyMCEPopup.close();\r
+}\r
+\r
+tinyMCEPopup.onInit.add(init);\r
--- /dev/null
+ /**\r
+ * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $\r
+ *\r
+ * @author Moxiecode - based on work by Andrew Tetlaw\r
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+tinyMCEPopup.requireLangPack();\r
+\r
+function initCommonAttributes(elm) {\r
+ var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;\r
+\r
+ // Setup form data for common element attributes\r
+ setFormValue('title', dom.getAttrib(elm, 'title'));\r
+ setFormValue('id', dom.getAttrib(elm, 'id'));\r
+ selectByValue(formObj, 'class', dom.getAttrib(elm, 'class'), true);\r
+ setFormValue('style', dom.getAttrib(elm, 'style'));\r
+ selectByValue(formObj, 'dir', dom.getAttrib(elm, 'dir'));\r
+ setFormValue('lang', dom.getAttrib(elm, 'lang'));\r
+ setFormValue('onfocus', dom.getAttrib(elm, 'onfocus'));\r
+ setFormValue('onblur', dom.getAttrib(elm, 'onblur'));\r
+ setFormValue('onclick', dom.getAttrib(elm, 'onclick'));\r
+ setFormValue('ondblclick', dom.getAttrib(elm, 'ondblclick'));\r
+ setFormValue('onmousedown', dom.getAttrib(elm, 'onmousedown'));\r
+ setFormValue('onmouseup', dom.getAttrib(elm, 'onmouseup'));\r
+ setFormValue('onmouseover', dom.getAttrib(elm, 'onmouseover'));\r
+ setFormValue('onmousemove', dom.getAttrib(elm, 'onmousemove'));\r
+ setFormValue('onmouseout', dom.getAttrib(elm, 'onmouseout'));\r
+ setFormValue('onkeypress', dom.getAttrib(elm, 'onkeypress'));\r
+ setFormValue('onkeydown', dom.getAttrib(elm, 'onkeydown'));\r
+ setFormValue('onkeyup', dom.getAttrib(elm, 'onkeyup'));\r
+}\r
+\r
+function setFormValue(name, value) {\r
+ if(document.forms[0].elements[name]) document.forms[0].elements[name].value = value;\r
+}\r
+\r
+function insertDateTime(id) {\r
+ document.getElementById(id).value = getDateTime(new Date(), "%Y-%m-%dT%H:%M:%S");\r
+}\r
+\r
+function getDateTime(d, fmt) {\r
+ fmt = fmt.replace("%D", "%m/%d/%y");\r
+ fmt = fmt.replace("%r", "%I:%M:%S %p");\r
+ fmt = fmt.replace("%Y", "" + d.getFullYear());\r
+ fmt = fmt.replace("%y", "" + d.getYear());\r
+ fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2));\r
+ fmt = fmt.replace("%d", addZeros(d.getDate(), 2));\r
+ fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2));\r
+ fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2));\r
+ fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2));\r
+ fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1));\r
+ fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM"));\r
+ fmt = fmt.replace("%%", "%");\r
+\r
+ return fmt;\r
+}\r
+\r
+function addZeros(value, len) {\r
+ var i;\r
+\r
+ value = "" + value;\r
+\r
+ if (value.length < len) {\r
+ for (i=0; i<(len-value.length); i++)\r
+ value = "0" + value;\r
+ }\r
+\r
+ return value;\r
+}\r
+\r
+function selectByValue(form_obj, field_name, value, add_custom, ignore_case) {\r
+ if (!form_obj || !form_obj.elements[field_name])\r
+ return;\r
+\r
+ var sel = form_obj.elements[field_name];\r
+\r
+ var found = false;\r
+ for (var i=0; i<sel.options.length; i++) {\r
+ var option = sel.options[i];\r
+\r
+ if (option.value == value || (ignore_case && option.value.toLowerCase() == value.toLowerCase())) {\r
+ option.selected = true;\r
+ found = true;\r
+ } else\r
+ option.selected = false;\r
+ }\r
+\r
+ if (!found && add_custom && value != '') {\r
+ var option = new Option('Value: ' + value, value);\r
+ option.selected = true;\r
+ sel.options[sel.options.length] = option;\r
+ }\r
+\r
+ return found;\r
+}\r
+\r
+function setAttrib(elm, attrib, value) {\r
+ var formObj = document.forms[0];\r
+ var valueElm = formObj.elements[attrib.toLowerCase()];\r
+ tinyMCEPopup.editor.dom.setAttrib(elm, attrib, value || valueElm.value);\r
+}\r
+\r
+function setAllCommonAttribs(elm) {\r
+ setAttrib(elm, 'title');\r
+ setAttrib(elm, 'id');\r
+ setAttrib(elm, 'class');\r
+ setAttrib(elm, 'style');\r
+ setAttrib(elm, 'dir');\r
+ setAttrib(elm, 'lang');\r
+ /*setAttrib(elm, 'onfocus');\r
+ setAttrib(elm, 'onblur');\r
+ setAttrib(elm, 'onclick');\r
+ setAttrib(elm, 'ondblclick');\r
+ setAttrib(elm, 'onmousedown');\r
+ setAttrib(elm, 'onmouseup');\r
+ setAttrib(elm, 'onmouseover');\r
+ setAttrib(elm, 'onmousemove');\r
+ setAttrib(elm, 'onmouseout');\r
+ setAttrib(elm, 'onkeypress');\r
+ setAttrib(elm, 'onkeydown');\r
+ setAttrib(elm, 'onkeyup');*/\r
+}\r
+\r
+SXE = {\r
+ currentAction : "insert",\r
+ inst : tinyMCEPopup.editor,\r
+ updateElement : null\r
+}\r
+\r
+SXE.focusElement = SXE.inst.selection.getNode();\r
+\r
+SXE.initElementDialog = function(element_name) {\r
+ addClassesToList('class', 'xhtmlxtras_styles');\r
+ TinyMCE_EditableSelects.init();\r
+\r
+ element_name = element_name.toLowerCase();\r
+ var elm = SXE.inst.dom.getParent(SXE.focusElement, element_name.toUpperCase());\r
+ if (elm != null && elm.nodeName.toUpperCase() == element_name.toUpperCase()) {\r
+ SXE.currentAction = "update";\r
+ }\r
+\r
+ if (SXE.currentAction == "update") {\r
+ initCommonAttributes(elm);\r
+ SXE.updateElement = elm;\r
+ }\r
+\r
+ document.forms[0].insert.value = tinyMCEPopup.getLang(SXE.currentAction, 'Insert', true); \r
+}\r
+\r
+SXE.insertElement = function(element_name) {\r
+ var elm = SXE.inst.dom.getParent(SXE.focusElement, element_name.toUpperCase()), h, tagName;\r
+\r
+ tinyMCEPopup.execCommand('mceBeginUndoLevel');\r
+ if (elm == null) {\r
+ var s = SXE.inst.selection.getContent();\r
+ if(s.length > 0) {\r
+ tagName = element_name;\r
+\r
+ if (tinymce.isIE && element_name.indexOf('html:') == 0)\r
+ element_name = element_name.substring(5).toLowerCase();\r
+\r
+ h = '<' + tagName + ' id="#sxe_temp_' + element_name + '#">' + s + '</' + tagName + '>';\r
+\r
+ tinyMCEPopup.execCommand('mceInsertContent', false, h);\r
+\r
+ var elementArray = tinymce.grep(SXE.inst.dom.select(element_name), function(n) {return n.id == '#sxe_temp_' + element_name + '#';});\r
+ for (var i=0; i<elementArray.length; i++) {\r
+ var elm = elementArray[i];\r
+\r
+ elm.id = '';\r
+ elm.setAttribute('id', '');\r
+ elm.removeAttribute('id');\r
+\r
+ setAllCommonAttribs(elm);\r
+ }\r
+ }\r
+ } else {\r
+ setAllCommonAttribs(elm);\r
+ }\r
+ SXE.inst.nodeChanged();\r
+ tinyMCEPopup.execCommand('mceEndUndoLevel');\r
+}\r
+\r
+SXE.removeElement = function(element_name){\r
+ element_name = element_name.toLowerCase();\r
+ elm = SXE.inst.dom.getParent(SXE.focusElement, element_name.toUpperCase());\r
+ if(elm && elm.nodeName.toUpperCase() == element_name.toUpperCase()){\r
+ tinyMCEPopup.execCommand('mceBeginUndoLevel');\r
+ tinyMCE.execCommand('mceRemoveNode', false, elm);\r
+ SXE.inst.nodeChanged();\r
+ tinyMCEPopup.execCommand('mceEndUndoLevel');\r
+ }\r
+}\r
+\r
+SXE.showRemoveButton = function() {\r
+ document.getElementById("remove").style.display = 'block';\r
+}\r
+\r
+SXE.containsClass = function(elm,cl) {\r
+ return (elm.className.indexOf(cl) > -1) ? true : false;\r
+}\r
+\r
+SXE.removeClass = function(elm,cl) {\r
+ if(elm.className == null || elm.className == "" || !SXE.containsClass(elm,cl)) {\r
+ return true;\r
+ }\r
+ var classNames = elm.className.split(" ");\r
+ var newClassNames = "";\r
+ for (var x = 0, cnl = classNames.length; x < cnl; x++) {\r
+ if (classNames[x] != cl) {\r
+ newClassNames += (classNames[x] + " ");\r
+ }\r
+ }\r
+ elm.className = newClassNames.substring(0,newClassNames.length-1); //removes extra space at the end\r
+}\r
+\r
+SXE.addClass = function(elm,cl) {\r
+ if(!SXE.containsClass(elm,cl)) elm.className ? elm.className += " " + cl : elm.className = cl;\r
+ return true;\r
+}
\ No newline at end of file
--- /dev/null
+ /**\r
+ * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $\r
+ *\r
+ * @author Moxiecode - based on work by Andrew Tetlaw\r
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+function init() {\r
+ SXE.initElementDialog('ins');\r
+ if (SXE.currentAction == "update") {\r
+ setFormValue('datetime', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'datetime'));\r
+ setFormValue('cite', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'cite'));\r
+ SXE.showRemoveButton();\r
+ }\r
+}\r
+\r
+function setElementAttribs(elm) {\r
+ setAllCommonAttribs(elm);\r
+ setAttrib(elm, 'datetime');\r
+ setAttrib(elm, 'cite');\r
+}\r
+\r
+function insertIns() {\r
+ var elm = tinyMCEPopup.editor.dom.getParent(SXE.focusElement, 'INS');\r
+ tinyMCEPopup.execCommand('mceBeginUndoLevel');\r
+ if (elm == null) {\r
+ var s = SXE.inst.selection.getContent();\r
+ if(s.length > 0) {\r
+ tinyMCEPopup.execCommand('mceInsertContent', false, '<ins id="#sxe_temp_ins#">' + s + '</ins>');\r
+ var elementArray = tinymce.grep(SXE.inst.dom.select('ins'), function(n) {return n.id == '#sxe_temp_ins#';});\r
+ for (var i=0; i<elementArray.length; i++) {\r
+ var elm = elementArray[i];\r
+ setElementAttribs(elm);\r
+ }\r
+ }\r
+ } else {\r
+ setElementAttribs(elm);\r
+ }\r
+ tinyMCEPopup.editor.nodeChanged();\r
+ tinyMCEPopup.execCommand('mceEndUndoLevel');\r
+ tinyMCEPopup.close();\r
+}\r
+\r
+function removeIns() {\r
+ SXE.removeElement('ins');\r
+ tinyMCEPopup.close();\r
+}\r
+\r
+tinyMCEPopup.onInit.add(init);\r
--- /dev/null
+tinyMCE.addI18n('en.xhtmlxtras_dlg',{\r
+attribute_label_title:"Title",\r
+attribute_label_id:"ID",\r
+attribute_label_class:"Class",\r
+attribute_label_style:"Style",\r
+attribute_label_cite:"Cite",\r
+attribute_label_datetime:"Date/Time",\r
+attribute_label_langdir:"Text Direction",\r
+attribute_option_ltr:"Left to right",\r
+attribute_option_rtl:"Right to left",\r
+attribute_label_langcode:"Language",\r
+attribute_label_tabindex:"TabIndex",\r
+attribute_label_accesskey:"AccessKey",\r
+attribute_events_tab:"Events",\r
+attribute_attrib_tab:"Attributes",\r
+general_tab:"General",\r
+attrib_tab:"Attributes",\r
+events_tab:"Events",\r
+fieldset_general_tab:"General Settings",\r
+fieldset_attrib_tab:"Element Attributes",\r
+fieldset_events_tab:"Element Events",\r
+title_ins_element:"Insertion Element",\r
+title_del_element:"Deletion Element",\r
+title_acronym_element:"Acronym Element",\r
+title_abbr_element:"Abbreviation Element",\r
+title_cite_element:"Citation Element",\r
+remove:"Remove",\r
+insert_date:"Insert current date/time",\r
+option_ltr:"Left to right",\r
+option_rtl:"Right to left",\r
+attribs_title:"Insert/Edit Attributes"\r
+});
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+ <title>{#advanced_dlg.about_title}</title>\r
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
+ <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
+ <script type="text/javascript" src="js/about.js"></script>\r
+</head>\r
+<body id="about" style="display: none">\r
+ <div class="tabs">\r
+ <ul>\r
+ <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advanced_dlg.about_general}</a></span></li>\r
+ <li id="help_tab" style="display:none"><span><a href="javascript:mcTabs.displayTab('help_tab','help_panel');" onmousedown="return false;">{#advanced_dlg.about_help}</a></span></li>\r
+ <li id="plugins_tab"><span><a href="javascript:mcTabs.displayTab('plugins_tab','plugins_panel');" onmousedown="return false;">{#advanced_dlg.about_plugins}</a></span></li>\r
+ </ul>\r
+ </div>\r
+\r
+ <div class="panel_wrapper">\r
+ <div id="general_panel" class="panel current">\r
+ <h3>{#advanced_dlg.about_title}</h3>\r
+ <p>Version: <span id="version"></span> (<span id="date"></span>)</p>\r
+ <p>TinyMCE is a platform independent web based Javascript HTML WYSIWYG editor control released as Open Source under <a href="../../license.txt" target="_blank">LGPL</a>\r
+ by Moxiecode Systems AB. It has the ability to convert HTML TEXTAREA fields or other HTML elements to editor instances.</p>\r
+ <p>Copyright © 2003-2008, <a href="http://www.moxiecode.com" target="_blank">Moxiecode Systems AB</a>, All rights reserved.</p>\r
+ <p>For more information about this software visit the <a href="http://tinymce.moxiecode.com" target="_blank">TinyMCE website</a>.</p>\r
+\r
+ <div id="buttoncontainer">\r
+ <a href="http://www.moxiecode.com" target="_blank"><img src="http://tinymce.moxiecode.com/images/gotmoxie.png" alt="Got Moxie?" border="0" /></a>\r
+ <a href="http://sourceforge.net/projects/tinymce/" target="_blank"><img src="http://sourceforge.net/sflogo.php?group_id=103281" alt="Hosted By Sourceforge" border="0" /></a>\r
+ <a href="http://www.freshmeat.net/projects/tinymce" target="_blank"><img src="http://tinymce.moxiecode.com/images/fm.gif" alt="Also on freshmeat" border="0" /></a>\r
+ </div>\r
+ </div>\r
+\r
+ <div id="plugins_panel" class="panel">\r
+ <div id="pluginscontainer">\r
+ <h3>{#advanced_dlg.about_loaded}</h3>\r
+\r
+ <div id="plugintablecontainer">\r
+ </div>\r
+\r
+ <p> </p>\r
+ </div>\r
+ </div>\r
+\r
+ <div id="help_panel" class="panel noscroll" style="overflow: visible;">\r
+ <div id="iframecontainer"></div>\r
+ </div>\r
+ </div>\r
+\r
+ <div class="mceActionPanel">\r
+ <div style="float: right">\r
+ <input type="button" id="cancel" name="cancel" value="{#close}" onclick="tinyMCEPopup.close();" />\r
+ </div>\r
+ </div>\r
+</body>\r
+</html>\r
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+ <title>{#advanced_dlg.anchor_title}</title>\r
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
+ <script type="text/javascript" src="js/anchor.js"></script>\r
+ <base target="_self" />\r
+</head>\r
+<body style="display: none">\r
+<form onsubmit="AnchorDialog.update();return false;" action="#">\r
+ <table border="0" cellpadding="4" cellspacing="0">\r
+ <tr>\r
+ <td colspan="2" class="title">{#advanced_dlg.anchor_title}</td>\r
+ </tr>\r
+ <tr>\r
+ <td nowrap="nowrap">{#advanced_dlg.anchor_name}:</td>\r
+ <td><input name="anchorName" type="text" class="mceFocus" id="anchorName" value="" style="width: 200px" /></td>\r
+ </tr>\r
+ </table>\r
+\r
+ <div class="mceActionPanel">\r
+ <div style="float: left">\r
+ <input type="submit" id="insert" name="insert" value="{#update}" />\r
+ </div>\r
+\r
+ <div style="float: right">\r
+ <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
+ </div>\r
+ </div>\r
+</form>\r
+</body>\r
+</html>\r
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+ <title>{#advanced_dlg.charmap_title}</title>\r
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />\r
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
+ <script type="text/javascript" src="js/charmap.js"></script>\r
+ <base target="_self" />\r
+</head>\r
+<body id="charmap" style="display:none">\r
+<table align="center" border="0" cellspacing="0" cellpadding="2">\r
+ <tr>\r
+ <td colspan="2" class="title">{#advanced_dlg.charmap_title}</td>\r
+ </tr>\r
+ <tr>\r
+ <td id="charmapView" rowspan="2" align="left" valign="top">\r
+ <!-- Chars will be rendered here -->\r
+ </td>\r
+ <td width="100" align="center" valign="top">\r
+ <table border="0" cellpadding="0" cellspacing="0" width="100" style="height:100px">\r
+ <tr>\r
+ <td id="codeV"> </td>\r
+ </tr>\r
+ <tr>\r
+ <td id="codeN"> </td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+ </tr>\r
+ <tr>\r
+ <td valign="bottom" style="padding-bottom: 3px;">\r
+ <table width="100" align="center" border="0" cellpadding="2" cellspacing="0">\r
+ <tr>\r
+ <td align="center" style="border-left: 1px solid #666699; border-top: 1px solid #666699; border-right: 1px solid #666699;">HTML-Code</td>\r
+ </tr>\r
+ <tr>\r
+ <td style="font-size: 16px; font-weight: bold; border-left: 1px solid #666699; border-bottom: 1px solid #666699; border-right: 1px solid #666699;" id="codeA" align="center"> </td>\r
+ </tr>\r
+ <tr>\r
+ <td style="font-size: 1px;"> </td>\r
+ </tr>\r
+ <tr>\r
+ <td align="center" style="border-left: 1px solid #666699; border-top: 1px solid #666699; border-right: 1px solid #666699;">NUM-Code</td>\r
+ </tr>\r
+ <tr>\r
+ <td style="font-size: 16px; font-weight: bold; border-left: 1px solid #666699; border-bottom: 1px solid #666699; border-right: 1px solid #666699;" id="codeB" align="center"> </td>\r
+ </tr>\r
+ </table>\r
+ </td>\r
+ </tr>\r
+</table>\r
+\r
+</body>\r
+</html>\r
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+ <title>{#advanced_dlg.colorpicker_title}</title>\r
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
+ <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
+ <script type="text/javascript" src="js/color_picker.js"></script>\r
+ <base target="_self" />\r
+</head>\r
+<body id="colorpicker" style="display: none">\r
+<form onsubmit="insertAction();return false" action="#">\r
+ <div class="tabs">\r
+ <ul>\r
+ <li id="picker_tab" class="current"><span><a href="javascript:mcTabs.displayTab('picker_tab','picker_panel');" onmousedown="return false;">{#advanced_dlg.colorpicker_picker_tab}</a></span></li>\r
+ <li id="rgb_tab"><span><a href="javascript:;" onclick="generateWebColors();mcTabs.displayTab('rgb_tab','rgb_panel');" onmousedown="return false;">{#advanced_dlg.colorpicker_palette_tab}</a></span></li>\r
+ <li id="named_tab"><span><a href="javascript:;" onclick="generateNamedColors();javascript:mcTabs.displayTab('named_tab','named_panel');" onmousedown="return false;">{#advanced_dlg.colorpicker_named_tab}</a></span></li>\r
+ </ul>\r
+ </div>\r
+\r
+ <div class="panel_wrapper">\r
+ <div id="picker_panel" class="panel current">\r
+ <fieldset>\r
+ <legend>{#advanced_dlg.colorpicker_picker_title}</legend>\r
+ <div id="picker">\r
+ <img id="colors" src="img/colorpicker.jpg" onclick="computeColor(event)" onmousedown="isMouseDown = true;return false;" onmouseup="isMouseDown = false;" onmousemove="if (isMouseDown && isMouseOver) computeColor(event); return false;" onmouseover="isMouseOver=true;" onmouseout="isMouseOver=false;" />\r
+\r
+ <div id="light">\r
+ <!-- Will be filled with divs -->\r
+ </div>\r
+\r
+ <br style="clear: both" />\r
+ </div>\r
+ </fieldset>\r
+ </div>\r
+\r
+ <div id="rgb_panel" class="panel">\r
+ <fieldset>\r
+ <legend>{#advanced_dlg.colorpicker_palette_title}</legend>\r
+ <div id="webcolors">\r
+ <!-- Gets filled with web safe colors-->\r
+ </div>\r
+\r
+ <br style="clear: both" />\r
+ </fieldset>\r
+ </div>\r
+\r
+ <div id="named_panel" class="panel">\r
+ <fieldset>\r
+ <legend>{#advanced_dlg.colorpicker_named_title}</legend>\r
+ <div id="namedcolors">\r
+ <!-- Gets filled with named colors-->\r
+ </div>\r
+\r
+ <br style="clear: both" />\r
+\r
+ <div id="colornamecontainer">\r
+ {#advanced_dlg.colorpicker_name} <span id="colorname"></span>\r
+ </div>\r
+ </fieldset>\r
+ </div>\r
+ </div>\r
+\r
+ <div class="mceActionPanel">\r
+ <div style="float: left">\r
+ <input type="submit" id="insert" name="insert" value="{#apply}" />\r
+ </div>\r
+\r
+ <div id="preview"></div>\r
+\r
+ <div id="previewblock">\r
+ <label for="color">{#advanced_dlg.colorpicker_color}</label> <input id="color" type="text" size="8" maxlength="8" class="text mceFocus" />\r
+ </div>\r
+ </div>\r
+</form>\r
+</body>\r
+</html>\r
--- /dev/null
+/**
+ * $Id: editor_template_src.js 901 2008-08-18 11:44:21Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+(function() {
+ var DOM = tinymce.DOM, Event = tinymce.dom.Event, extend = tinymce.extend, each = tinymce.each, Cookie = tinymce.util.Cookie, lastExtID, explode = tinymce.explode;
+
+ // Tell it to load theme specific language pack(s)
+ tinymce.ThemeManager.requireLangPack('advanced');
+
+ tinymce.create('tinymce.themes.AdvancedTheme', {
+ // Control name lookup, format: title, command
+ controls : {
+ bold : ['bold_desc', 'Bold'],
+ italic : ['italic_desc', 'Italic'],
+ underline : ['underline_desc', 'Underline'],
+ strikethrough : ['striketrough_desc', 'Strikethrough'],
+ justifyleft : ['justifyleft_desc', 'JustifyLeft'],
+ justifycenter : ['justifycenter_desc', 'JustifyCenter'],
+ justifyright : ['justifyright_desc', 'JustifyRight'],
+ justifyfull : ['justifyfull_desc', 'JustifyFull'],
+ bullist : ['bullist_desc', 'InsertUnorderedList'],
+ numlist : ['numlist_desc', 'InsertOrderedList'],
+ outdent : ['outdent_desc', 'Outdent'],
+ indent : ['indent_desc', 'Indent'],
+ cut : ['cut_desc', 'Cut'],
+ copy : ['copy_desc', 'Copy'],
+ paste : ['paste_desc', 'Paste'],
+ undo : ['undo_desc', 'Undo'],
+ redo : ['redo_desc', 'Redo'],
+ link : ['link_desc', 'mceLink'],
+ unlink : ['unlink_desc', 'unlink'],
+ image : ['image_desc', 'mceImage'],
+ cleanup : ['cleanup_desc', 'mceCleanup'],
+ help : ['help_desc', 'mceHelp'],
+ code : ['code_desc', 'mceCodeEditor'],
+ hr : ['hr_desc', 'InsertHorizontalRule'],
+ removeformat : ['removeformat_desc', 'RemoveFormat'],
+ sub : ['sub_desc', 'subscript'],
+ sup : ['sup_desc', 'superscript'],
+ forecolor : ['forecolor_desc', 'ForeColor'],
+ forecolorpicker : ['forecolor_desc', 'mceForeColor'],
+ backcolor : ['backcolor_desc', 'HiliteColor'],
+ backcolorpicker : ['backcolor_desc', 'mceBackColor'],
+ charmap : ['charmap_desc', 'mceCharMap'],
+ visualaid : ['visualaid_desc', 'mceToggleVisualAid'],
+ anchor : ['anchor_desc', 'mceInsertAnchor'],
+ newdocument : ['newdocument_desc', 'mceNewDocument'],
+ blockquote : ['blockquote_desc', 'mceBlockQuote']
+ },
+
+ stateControls : ['bold', 'italic', 'underline', 'strikethrough', 'bullist', 'numlist', 'justifyleft', 'justifycenter', 'justifyright', 'justifyfull', 'sub', 'sup', 'blockquote'],
+
+ init : function(ed, url) {
+ var t = this, s, v;
+
+ t.editor = ed;
+ t.url = url;
+ t.onResolveName = new tinymce.util.Dispatcher(this);
+
+ // Default settings
+ t.settings = s = extend({
+ theme_advanced_path : true,
+ theme_advanced_toolbar_location : 'bottom',
+ theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect",
+ theme_advanced_buttons2 : "bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code",
+ theme_advanced_buttons3 : "hr,removeformat,visualaid,|,sub,sup,|,charmap",
+ theme_advanced_blockformats : "p,address,pre,h1,h2,h3,h4,h5,h6",
+ theme_advanced_toolbar_align : "center",
+ theme_advanced_fonts : "Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats",
+ theme_advanced_font_sizes : "1,2,3,4,5,6,7",
+ theme_advanced_more_colors : 1,
+ theme_advanced_row_height : 23,
+ theme_advanced_resize_horizontal : 1,
+ theme_advanced_resizing_use_cookie : 1,
+ readonly : ed.settings.readonly
+ }, ed.settings);
+
+ if ((v = s.theme_advanced_path_location) && v != 'none')
+ s.theme_advanced_statusbar_location = s.theme_advanced_path_location;
+
+ if (s.theme_advanced_statusbar_location == 'none')
+ s.theme_advanced_statusbar_location = 0;
+
+ // Init editor
+ ed.onInit.add(function() {
+ ed.onNodeChange.add(t._nodeChanged, t);
+
+ if (ed.settings.content_css !== false)
+ ed.dom.loadCSS(ed.baseURI.toAbsolute("themes/advanced/skins/" + ed.settings.skin + "/content.css"));
+ });
+
+ ed.onSetProgressState.add(function(ed, b, ti) {
+ var co, id = ed.id, tb;
+
+ if (b) {
+ t.progressTimer = setTimeout(function() {
+ co = ed.getContainer();
+ co = co.insertBefore(DOM.create('DIV', {style : 'position:relative'}), co.firstChild);
+ tb = DOM.get(ed.id + '_tbl');
+
+ DOM.add(co, 'div', {id : id + '_blocker', 'class' : 'mceBlocker', style : {width : tb.clientWidth + 2, height : tb.clientHeight + 2}});
+ DOM.add(co, 'div', {id : id + '_progress', 'class' : 'mceProgress', style : {left : tb.clientWidth / 2, top : tb.clientHeight / 2}});
+ }, ti || 0);
+ } else {
+ DOM.remove(id + '_blocker');
+ DOM.remove(id + '_progress');
+ clearTimeout(t.progressTimer);
+ }
+ });
+
+ DOM.loadCSS(ed.baseURI.toAbsolute(s.editor_css || "themes/advanced/skins/" + ed.settings.skin + "/ui.css"));
+
+ if (s.skin_variant)
+ DOM.loadCSS(ed.baseURI.toAbsolute(s.editor_css || "themes/advanced/skins/" + ed.settings.skin + "/ui_" + s.skin_variant + ".css"));
+ },
+
+ createControl : function(n, cf) {
+ var cd, c;
+
+ if (c = cf.createControl(n))
+ return c;
+
+ switch (n) {
+ case "styleselect":
+ return this._createStyleSelect();
+
+ case "formatselect":
+ return this._createBlockFormats();
+
+ case "fontselect":
+ return this._createFontSelect();
+
+ case "fontsizeselect":
+ return this._createFontSizeSelect();
+
+ case "forecolor":
+ return this._createForeColorMenu();
+
+ case "backcolor":
+ return this._createBackColorMenu();
+ }
+
+ if ((cd = this.controls[n]))
+ return cf.createButton(n, {title : "advanced." + cd[0], cmd : cd[1], ui : cd[2], value : cd[3]});
+ },
+
+ execCommand : function(cmd, ui, val) {
+ var f = this['_' + cmd];
+
+ if (f) {
+ f.call(this, ui, val);
+ return true;
+ }
+
+ return false;
+ },
+
+ _importClasses : function(e) {
+ var ed = this.editor, c = ed.controlManager.get('styleselect');
+
+ if (c.getLength() == 0) {
+ each(ed.dom.getClasses(), function(o) {
+ c.add(o['class'], o['class']);
+ });
+ }
+ },
+
+ _createStyleSelect : function(n) {
+ var t = this, ed = t.editor, cf = ed.controlManager, c = cf.createListBox('styleselect', {
+ title : 'advanced.style_select',
+ onselect : function(v) {
+ if (c.selectedValue === v) {
+ ed.execCommand('mceSetStyleInfo', 0, {command : 'removeformat'});
+ c.select();
+ return false;
+ } else
+ ed.execCommand('mceSetCSSClass', 0, v);
+ }
+ });
+
+ if (c) {
+ each(ed.getParam('theme_advanced_styles', '', 'hash'), function(v, k) {
+ if (v)
+ c.add(t.editor.translate(k), v);
+ });
+
+ c.onPostRender.add(function(ed, n) {
+ Event.add(n.id + '_text', 'focus', t._importClasses, t);
+ Event.add(n.id + '_text', 'mousedown', t._importClasses, t);
+ });
+ }
+
+ return c;
+ },
+
+ _createFontSelect : function() {
+ var c, t = this, ed = t.editor;
+
+ c = ed.controlManager.createListBox('fontselect', {title : 'advanced.fontdefault', cmd : 'FontName'});
+ if (c) {
+ each(ed.getParam('theme_advanced_fonts', t.settings.theme_advanced_fonts, 'hash'), function(v, k) {
+ c.add(ed.translate(k), v, {style : v.indexOf('dings') == -1 ? 'font-family:' + v : ''});
+ });
+ }
+
+ return c;
+ },
+
+ _createFontSizeSelect : function() {
+ var t = this, ed = t.editor, c, lo = [
+ "1 (8 pt)",
+ "2 (10 pt)",
+ "3 (12 pt)",
+ "4 (14 pt)",
+ "5 (18 pt)",
+ "6 (24 pt)",
+ "7 (36 pt)"
+ ], fz = [8, 10, 12, 14, 18, 24, 36];
+
+ c = ed.controlManager.createListBox('fontsizeselect', {title : 'advanced.font_size', cmd : 'FontSize'});
+ if (c) {
+ each(ed.getParam('theme_advanced_font_sizes', t.settings.theme_advanced_font_sizes, 'hash'), function(v, k) {
+ // AVL: remove style height
+ // c.add(k != v ? k : lo[parseInt(v) - 1], v, {'style' : 'font-size:' + fz[v - 1] + 'pt', 'class' : 'mceFontSize' + v});
+ c.add(k != v ? k : lo[parseInt(v) - 1], v, {});
+ });
+ }
+
+ return c;
+ },
+
+ _createBlockFormats : function() {
+ var c, fmts = {
+ p : 'advanced.paragraph',
+ address : 'advanced.address',
+ pre : 'advanced.pre',
+ h1 : 'advanced.h1',
+ h2 : 'advanced.h2',
+ h3 : 'advanced.h3',
+ h4 : 'advanced.h4',
+ h5 : 'advanced.h5',
+ h6 : 'advanced.h6',
+ div : 'advanced.div',
+ blockquote : 'advanced.blockquote',
+ code : 'advanced.code',
+ dt : 'advanced.dt',
+ dd : 'advanced.dd',
+ samp : 'advanced.samp'
+ }, t = this;
+
+ c = t.editor.controlManager.createListBox('formatselect', {title : 'advanced.block', cmd : 'FormatBlock'});
+ if (c) {
+ each(t.editor.getParam('theme_advanced_blockformats', t.settings.theme_advanced_blockformats, 'hash'), function(v, k) {
+ c.add(t.editor.translate(k != v ? k : fmts[v]), v, {'class' : 'mce_formatPreview mce_' + v});
+ });
+ }
+
+ return c;
+ },
+
+ _createForeColorMenu : function() {
+ var c, t = this, s = t.settings, o = {}, v;
+
+ if (s.theme_advanced_more_colors) {
+ o.more_colors_func = function() {
+ t._mceColorPicker(0, {
+ color : c.value,
+ func : function(co) {
+ c.setColor(co);
+ }
+ });
+ };
+ }
+
+ if (v = s.theme_advanced_text_colors)
+ o.colors = v;
+
+ o.title = 'advanced.forecolor_desc';
+ o.cmd = 'ForeColor';
+ o.scope = this;
+
+ c = t.editor.controlManager.createColorSplitButton('forecolor', o);
+
+ return c;
+ },
+
+ _createBackColorMenu : function() {
+ var c, t = this, s = t.settings, o = {}, v;
+
+ if (s.theme_advanced_more_colors) {
+ o.more_colors_func = function() {
+ t._mceColorPicker(0, {
+ color : c.value,
+ func : function(co) {
+ c.setColor(co);
+ }
+ });
+ };
+ }
+
+ if (v = s.theme_advanced_background_colors)
+ o.colors = v;
+
+ o.title = 'advanced.backcolor_desc';
+ o.cmd = 'HiliteColor';
+ o.scope = this;
+
+ c = t.editor.controlManager.createColorSplitButton('backcolor', o);
+
+ return c;
+ },
+
+ renderUI : function(o) {
+ var n, ic, tb, t = this, ed = t.editor, s = t.settings, sc, p, nl;
+
+ n = p = DOM.create('span', {id : ed.id + '_parent', 'class' : 'mceEditor ' + ed.settings.skin + 'Skin' + (s.skin_variant ? ' ' + ed.settings.skin + 'Skin' + t._ufirst(s.skin_variant) : '')});
+
+ if (!DOM.boxModel)
+ n = DOM.add(n, 'div', {'class' : 'mceOldBoxModel'});
+
+ n = sc = DOM.add(n, 'table', {id : ed.id + '_tbl', 'class' : 'mceLayout', cellSpacing : 0, cellPadding : 0});
+ n = tb = DOM.add(n, 'tbody');
+
+ switch ((s.theme_advanced_layout_manager || '').toLowerCase()) {
+ case "rowlayout":
+ ic = t._rowLayout(s, tb, o);
+ break;
+
+ case "customlayout":
+ ic = ed.execCallback("theme_advanced_custom_layout", s, tb, o, p);
+ break;
+
+ default:
+ ic = t._simpleLayout(s, tb, o, p);
+ }
+
+ n = o.targetNode;
+
+ // Add classes to first and last TRs
+ nl = DOM.stdMode ? sc.getElementsByTagName('tr') : sc.rows; // Quick fix for IE 8
+ DOM.addClass(nl[0], 'mceFirst');
+ DOM.addClass(nl[nl.length - 1], 'mceLast');
+
+ // Add classes to first and last TDs
+ each(DOM.select('tr', tb), function(n) {
+ DOM.addClass(n.firstChild, 'mceFirst');
+ DOM.addClass(n.childNodes[n.childNodes.length - 1], 'mceLast');
+ });
+
+ if (DOM.get(s.theme_advanced_toolbar_container))
+ DOM.get(s.theme_advanced_toolbar_container).appendChild(p);
+ else
+ DOM.insertAfter(p, n);
+
+ Event.add(ed.id + '_path_row', 'click', function(e) {
+ e = e.target;
+
+ if (e.nodeName == 'A') {
+ t._sel(e.className.replace(/^.*mcePath_([0-9]+).*$/, '$1'));
+
+ return Event.cancel(e);
+ }
+ });
+/*
+ if (DOM.get(ed.id + '_path_row')) {
+ Event.add(ed.id + '_tbl', 'mouseover', function(e) {
+ var re;
+
+ e = e.target;
+
+ if (e.nodeName == 'SPAN' && DOM.hasClass(e.parentNode, 'mceButton')) {
+ re = DOM.get(ed.id + '_path_row');
+ t.lastPath = re.innerHTML;
+ DOM.setHTML(re, e.parentNode.title);
+ }
+ });
+
+ Event.add(ed.id + '_tbl', 'mouseout', function(e) {
+ if (t.lastPath) {
+ DOM.setHTML(ed.id + '_path_row', t.lastPath);
+ t.lastPath = 0;
+ }
+ });
+ }
+*/
+
+ if (!ed.getParam('accessibility_focus') || ed.getParam('tab_focus'))
+ Event.add(DOM.add(p, 'a', {href : '#'}, '<!-- IE -->'), 'focus', function() {tinyMCE.get(ed.id).focus();});
+
+ if (s.theme_advanced_toolbar_location == 'external')
+ o.deltaHeight = 0;
+
+ t.deltaHeight = o.deltaHeight;
+ o.targetNode = null;
+
+ return {
+ iframeContainer : ic,
+ editorContainer : ed.id + '_parent',
+ sizeContainer : sc,
+ deltaHeight : o.deltaHeight
+ };
+ },
+
+ getInfo : function() {
+ return {
+ longname : 'Advanced theme',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ version : tinymce.majorVersion + "." + tinymce.minorVersion
+ }
+ },
+
+ resizeBy : function(dw, dh) {
+ var e = DOM.get(this.editor.id + '_tbl');
+
+ this.resizeTo(e.clientWidth + dw, e.clientHeight + dh);
+ },
+
+ resizeTo : function(w, h) {
+ var ed = this.editor, s = ed.settings, e = DOM.get(ed.id + '_tbl'), ifr = DOM.get(ed.id + '_ifr'), dh;
+
+ // Boundery fix box
+ w = Math.max(s.theme_advanced_resizing_min_width || 100, w);
+ h = Math.max(s.theme_advanced_resizing_min_height || 100, h);
+ w = Math.min(s.theme_advanced_resizing_max_width || 0xFFFF, w);
+ h = Math.min(s.theme_advanced_resizing_max_height || 0xFFFF, h);
+
+ // Calc difference between iframe and container
+ dh = e.clientHeight - ifr.clientHeight;
+
+ // Resize iframe and container
+ DOM.setStyle(ifr, 'height', h - dh);
+ DOM.setStyles(e, {width : w, height : h});
+ },
+
+ destroy : function() {
+ var id = this.editor.id;
+
+ Event.clear(id + '_resize');
+ Event.clear(id + '_path_row');
+ Event.clear(id + '_external_close');
+ },
+
+ // Internal functions
+
+ _simpleLayout : function(s, tb, o, p) {
+ var t = this, ed = t.editor, lo = s.theme_advanced_toolbar_location, sl = s.theme_advanced_statusbar_location, n, ic, etb, c;
+
+ if (s.readonly) {
+ n = DOM.add(tb, 'tr');
+ n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'});
+ return ic;
+ }
+
+ // Create toolbar container at top
+ if (lo == 'top')
+ t._addToolbars(tb, o);
+
+ // Create external toolbar
+ if (lo == 'external') {
+ n = c = DOM.create('div', {style : 'position:relative'});
+ n = DOM.add(n, 'div', {id : ed.id + '_external', 'class' : 'mceExternalToolbar'});
+ DOM.add(n, 'a', {id : ed.id + '_external_close', href : 'javascript:;', 'class' : 'mceExternalClose'});
+ n = DOM.add(n, 'table', {id : ed.id + '_tblext', cellSpacing : 0, cellPadding : 0});
+ etb = DOM.add(n, 'tbody');
+
+ if (p.firstChild.className == 'mceOldBoxModel')
+ p.firstChild.appendChild(c);
+ else
+ p.insertBefore(c, p.firstChild);
+
+ t._addToolbars(etb, o);
+
+ ed.onMouseUp.add(function() {
+ var e = DOM.get(ed.id + '_external');
+ DOM.show(e);
+
+ DOM.hide(lastExtID);
+
+ var f = Event.add(ed.id + '_external_close', 'click', function() {
+ DOM.hide(ed.id + '_external');
+ Event.remove(ed.id + '_external_close', 'click', f);
+ });
+
+ DOM.show(e);
+ DOM.setStyle(e, 'top', 0 - DOM.getRect(ed.id + '_tblext').h - 1);
+
+ // Fixes IE rendering bug
+ DOM.hide(e);
+ DOM.show(e);
+ e.style.filter = '';
+
+ lastExtID = ed.id + '_external';
+
+ e = null;
+ });
+ }
+
+ if (sl == 'top')
+ t._addStatusBar(tb, o);
+
+ // Create iframe container
+ if (!s.theme_advanced_toolbar_container) {
+ n = DOM.add(tb, 'tr');
+ n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'});
+ }
+
+ // Create toolbar container at bottom
+ if (lo == 'bottom')
+ t._addToolbars(tb, o);
+
+ if (sl == 'bottom')
+ t._addStatusBar(tb, o);
+
+ return ic;
+ },
+
+ _rowLayout : function(s, tb, o) {
+ var t = this, ed = t.editor, dc, da, cf = ed.controlManager, n, ic, to, a;
+
+ dc = s.theme_advanced_containers_default_class || '';
+ da = s.theme_advanced_containers_default_align || 'center';
+
+ each(explode(s.theme_advanced_containers || ''), function(c, i) {
+ var v = s['theme_advanced_container_' + c] || '';
+
+ switch (v.toLowerCase()) {
+ case 'mceeditor':
+ n = DOM.add(tb, 'tr');
+ n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'});
+ break;
+
+ case 'mceelementpath':
+ t._addStatusBar(tb, o);
+ break;
+
+ default:
+ a = (s['theme_advanced_container_' + c + '_align'] || da).toLowerCase();
+ a = 'mce' + t._ufirst(a);
+
+ n = DOM.add(DOM.add(tb, 'tr'), 'td', {
+ 'class' : 'mceToolbar ' + (s['theme_advanced_container_' + c + '_class'] || dc) + ' ' + a || da
+ });
+
+ to = cf.createToolbar("toolbar" + i);
+ t._addControls(v, to);
+ DOM.setHTML(n, to.renderHTML());
+ o.deltaHeight -= s.theme_advanced_row_height;
+ }
+ });
+
+ return ic;
+ },
+
+ _addControls : function(v, tb) {
+ var t = this, s = t.settings, di, cf = t.editor.controlManager;
+
+ if (s.theme_advanced_disable && !t._disabled) {
+ di = {};
+
+ each(explode(s.theme_advanced_disable), function(v) {
+ di[v] = 1;
+ });
+
+ t._disabled = di;
+ } else
+ di = t._disabled;
+
+ each(explode(v), function(n) {
+ var c;
+
+ if (di && di[n])
+ return;
+
+ // Compatiblity with 2.x
+ if (n == 'tablecontrols') {
+ each(["table","|","row_props","cell_props","|","row_before","row_after","delete_row","|","col_before","col_after","delete_col","|","split_cells","merge_cells"], function(n) {
+ n = t.createControl(n, cf);
+
+ if (n)
+ tb.add(n);
+ });
+
+ return;
+ }
+
+ c = t.createControl(n, cf);
+
+ if (c)
+ tb.add(c);
+ });
+ },
+
+ _addToolbars : function(c, o) {
+ var t = this, i, tb, ed = t.editor, s = t.settings, v, cf = ed.controlManager, di, n, h = [], a;
+
+ a = s.theme_advanced_toolbar_align.toLowerCase();
+ a = 'mce' + t._ufirst(a);
+
+ n = DOM.add(DOM.add(c, 'tr'), 'td', {'class' : 'mceToolbar ' + a});
+
+ if (!ed.getParam('accessibility_focus') || ed.getParam('tab_focus'))
+ h.push(DOM.createHTML('a', {href : '#', onfocus : 'tinyMCE.get(\'' + ed.id + '\').focus();'}, '<!-- IE -->'));
+
+ h.push(DOM.createHTML('a', {href : '#', accesskey : 'q', title : ed.getLang("advanced.toolbar_focus")}, '<!-- IE -->'));
+
+ // Create toolbar and add the controls
+ for (i=1; (v = s['theme_advanced_buttons' + i]); i++) {
+ tb = cf.createToolbar("toolbar" + i, {'class' : 'mceToolbarRow' + i});
+
+ if (s['theme_advanced_buttons' + i + '_add'])
+ v += ',' + s['theme_advanced_buttons' + i + '_add'];
+
+ if (s['theme_advanced_buttons' + i + '_add_before'])
+ v = s['theme_advanced_buttons' + i + '_add_before'] + ',' + v;
+
+ t._addControls(v, tb);
+
+ //n.appendChild(n = tb.render());
+ h.push(tb.renderHTML());
+
+ o.deltaHeight -= s.theme_advanced_row_height;
+ }
+
+ h.push(DOM.createHTML('a', {href : '#', accesskey : 'z', title : ed.getLang("advanced.toolbar_focus"), onfocus : 'tinyMCE.getInstanceById(\'' + ed.id + '\').focus();'}, '<!-- IE -->'));
+ DOM.setHTML(n, h.join(''));
+ },
+
+ _addStatusBar : function(tb, o) {
+ var n, t = this, ed = t.editor, s = t.settings, r, mf, me, td;
+
+ n = DOM.add(tb, 'tr');
+ n = td = DOM.add(n, 'td', {'class' : 'mceStatusbar'});
+ n = DOM.add(n, 'div', {id : ed.id + '_path_row'}, s.theme_advanced_path ? ed.translate('advanced.path') + ': ' : ' ');
+ DOM.add(n, 'a', {href : '#', accesskey : 'x'});
+
+ if (s.theme_advanced_resizing && !tinymce.isOldWebKit) {
+ DOM.add(td, 'a', {id : ed.id + '_resize', href : 'javascript:;', onclick : "return false;", 'class' : 'mceResize'});
+
+ if (s.theme_advanced_resizing_use_cookie) {
+ ed.onPostRender.add(function() {
+ var o = Cookie.getHash("TinyMCE_" + ed.id + "_size"), c = DOM.get(ed.id + '_tbl');
+
+ if (!o)
+ return;
+
+ if (s.theme_advanced_resize_horizontal)
+ c.style.width = Math.max(10, o.cw) + 'px';
+
+ c.style.height = Math.max(10, o.ch) + 'px';
+ DOM.get(ed.id + '_ifr').style.height = Math.max(10, parseInt(o.ch) + t.deltaHeight) + 'px';
+ });
+ }
+
+ ed.onPostRender.add(function() {
+ Event.add(ed.id + '_resize', 'mousedown', function(e) {
+ var c, p, w, h, n, pa;
+
+ // Measure container
+ c = DOM.get(ed.id + '_tbl');
+ w = c.clientWidth;
+ h = c.clientHeight;
+
+ miw = s.theme_advanced_resizing_min_width || 100;
+ mih = s.theme_advanced_resizing_min_height || 100;
+ maw = s.theme_advanced_resizing_max_width || 0xFFFF;
+ mah = s.theme_advanced_resizing_max_height || 0xFFFF;
+
+ // Setup placeholder
+ p = DOM.add(DOM.get(ed.id + '_parent'), 'div', {'class' : 'mcePlaceHolder'});
+ DOM.setStyles(p, {width : w, height : h});
+
+ // Replace with placeholder
+ DOM.hide(c);
+ DOM.show(p);
+
+ // Create internal resize obj
+ r = {
+ x : e.screenX,
+ y : e.screenY,
+ w : w,
+ h : h,
+ dx : null,
+ dy : null
+ };
+
+ // Start listening
+ mf = Event.add(DOM.doc, 'mousemove', function(e) {
+ var w, h;
+
+ // Calc delta values
+ r.dx = e.screenX - r.x;
+ r.dy = e.screenY - r.y;
+
+ // Boundery fix box
+ w = Math.max(miw, r.w + r.dx);
+ h = Math.max(mih, r.h + r.dy);
+ w = Math.min(maw, w);
+ h = Math.min(mah, h);
+
+ // Resize placeholder
+ if (s.theme_advanced_resize_horizontal)
+ p.style.width = w + 'px';
+
+ p.style.height = h + 'px';
+
+ return Event.cancel(e);
+ });
+
+ me = Event.add(DOM.doc, 'mouseup', function(e) {
+ var ifr;
+
+ // Stop listening
+ Event.remove(DOM.doc, 'mousemove', mf);
+ Event.remove(DOM.doc, 'mouseup', me);
+
+ c.style.display = '';
+ DOM.remove(p);
+
+ if (r.dx === null)
+ return;
+
+ ifr = DOM.get(ed.id + '_ifr');
+
+ if (s.theme_advanced_resize_horizontal)
+ c.style.width = Math.max(10, r.w + r.dx) + 'px';
+
+ c.style.height = Math.max(10, r.h + r.dy) + 'px';
+ ifr.style.height = Math.max(10, ifr.clientHeight + r.dy) + 'px';
+
+ if (s.theme_advanced_resizing_use_cookie) {
+ Cookie.setHash("TinyMCE_" + ed.id + "_size", {
+ cw : r.w + r.dx,
+ ch : r.h + r.dy
+ });
+ }
+ });
+
+ return Event.cancel(e);
+ });
+ });
+ }
+
+ o.deltaHeight -= 21;
+ n = tb = null;
+ },
+
+ _nodeChanged : function(ed, cm, n, co) {
+ var t = this, p, de = 0, v, c, s = t.settings;
+
+ if (s.readonly)
+ return;
+
+ tinymce.each(t.stateControls, function(c) {
+ cm.setActive(c, ed.queryCommandState(t.controls[c][1]));
+ });
+
+ cm.setActive('visualaid', ed.hasVisual);
+ cm.setDisabled('undo', !ed.undoManager.hasUndo() && !ed.typing);
+ cm.setDisabled('redo', !ed.undoManager.hasRedo());
+ cm.setDisabled('outdent', !ed.queryCommandState('Outdent'));
+
+ p = DOM.getParent(n, 'A');
+ if (c = cm.get('link')) {
+ if (!p || !p.name) {
+ c.setDisabled(!p && co);
+ c.setActive(!!p);
+ }
+ }
+
+ if (c = cm.get('unlink')) {
+ c.setDisabled(!p && co);
+ c.setActive(!!p && !p.name);
+ }
+
+ if (c = cm.get('anchor')) {
+ c.setActive(!!p && p.name);
+
+ if (tinymce.isWebKit) {
+ p = DOM.getParent(n, 'IMG');
+ c.setActive(!!p && DOM.getAttrib(p, 'mce_name') == 'a');
+ }
+ }
+
+ p = DOM.getParent(n, 'IMG');
+ if (c = cm.get('image'))
+ c.setActive(!!p && n.className.indexOf('mceItem') == -1);
+
+ if (c = cm.get('styleselect')) {
+ if (n.className) {
+ t._importClasses();
+ c.select(n.className);
+ } else
+ c.select();
+ }
+
+ if (c = cm.get('formatselect')) {
+ p = DOM.getParent(n, DOM.isBlock);
+
+ if (p)
+ c.select(p.nodeName.toLowerCase());
+ }
+
+ if (c = cm.get('fontselect'))
+ c.select(ed.queryCommandValue('FontName'));
+
+ if (c = cm.get('fontsizeselect'))
+ c.select('' + ed.queryCommandValue('FontSize'));
+
+ if (s.theme_advanced_path && s.theme_advanced_statusbar_location) {
+ p = DOM.get(ed.id + '_path') || DOM.add(ed.id + '_path_row', 'span', {id : ed.id + '_path'});
+ DOM.setHTML(p, '');
+
+ ed.dom.getParent(n, function(n) {
+ var na = n.nodeName.toLowerCase(), u, pi, ti = '';
+
+ // Ignore non element and hidden elements
+ if (n.nodeType != 1 || (DOM.hasClass(n, 'mceItemHidden') || DOM.hasClass(n, 'mceItemRemoved')))
+ return;
+
+ // Fake name
+ if (v = DOM.getAttrib(n, 'mce_name'))
+ na = v;
+
+ // Handle prefix
+ if (tinymce.isIE && n.scopeName !== 'HTML')
+ na = n.scopeName + ':' + na;
+
+ // Remove internal prefix
+ na = na.replace(/mce\:/g, '');
+
+ // Handle node name
+ switch (na) {
+ case 'b':
+ na = 'strong';
+ break;
+
+ case 'i':
+ na = 'em';
+ break;
+
+ case 'img':
+ if (v = DOM.getAttrib(n, 'src'))
+ ti += 'src: ' + v + ' ';
+
+ break;
+
+ case 'a':
+ if (v = DOM.getAttrib(n, 'name')) {
+ ti += 'name: ' + v + ' ';
+ na += '#' + v;
+ }
+
+ if (v = DOM.getAttrib(n, 'href'))
+ ti += 'href: ' + v + ' ';
+
+ break;
+
+ case 'font':
+ if (s.convert_fonts_to_spans)
+ na = 'span';
+
+ if (v = DOM.getAttrib(n, 'face'))
+ ti += 'font: ' + v + ' ';
+
+ if (v = DOM.getAttrib(n, 'size'))
+ ti += 'size: ' + v + ' ';
+
+ if (v = DOM.getAttrib(n, 'color'))
+ ti += 'color: ' + v + ' ';
+
+ break;
+
+ case 'span':
+ if (v = DOM.getAttrib(n, 'style'))
+ ti += 'style: ' + v + ' ';
+
+ break;
+ }
+
+ if (v = DOM.getAttrib(n, 'id'))
+ ti += 'id: ' + v + ' ';
+
+ if (v = n.className) {
+ v = v.replace(/(webkit-[\w\-]+|Apple-[\w\-]+|mceItem\w+|mceVisualAid)/g, '');
+
+ if (v && v.indexOf('mceItem') == -1) {
+ ti += 'class: ' + v + ' ';
+
+ if (DOM.isBlock(n) || na == 'img' || na == 'span')
+ na += '.' + v;
+ }
+ }
+
+ na = na.replace(/(html:)/g, '');
+ na = {name : na, node : n, title : ti};
+ t.onResolveName.dispatch(t, na);
+ ti = na.title;
+ na = na.name;
+
+ //u = "javascript:tinymce.EditorManager.get('" + ed.id + "').theme._sel('" + (de++) + "');";
+ pi = DOM.create('a', {'href' : "javascript:;", onmousedown : "return false;", title : ti, 'class' : 'mcePath_' + (de++)}, na);
+
+ if (p.hasChildNodes()) {
+ p.insertBefore(DOM.doc.createTextNode(' \u00bb '), p.firstChild);
+ p.insertBefore(pi, p.firstChild);
+ } else
+ p.appendChild(pi);
+ }, ed.getBody());
+ }
+ },
+
+ // Commands gets called by execCommand
+
+ _sel : function(v) {
+ this.editor.execCommand('mceSelectNodeDepth', false, v);
+ },
+
+ _mceInsertAnchor : function(ui, v) {
+ var ed = this.editor;
+
+ ed.windowManager.open({
+ url : tinymce.baseURL + '/themes/advanced/anchor.htm',
+ width : 320 + parseInt(ed.getLang('advanced.anchor_delta_width', 0)),
+ height : 90 + parseInt(ed.getLang('advanced.anchor_delta_height', 0)),
+ inline : true
+ }, {
+ theme_url : this.url
+ });
+ },
+
+ _mceCharMap : function() {
+ var ed = this.editor;
+
+ ed.windowManager.open({
+ url : tinymce.baseURL + '/themes/advanced/charmap.htm',
+ width : 550 + parseInt(ed.getLang('advanced.charmap_delta_width', 0)),
+ height : 250 + parseInt(ed.getLang('advanced.charmap_delta_height', 0)),
+ inline : true
+ }, {
+ theme_url : this.url
+ });
+ },
+
+ _mceHelp : function() {
+ var ed = this.editor;
+
+ ed.windowManager.open({
+ url : tinymce.baseURL + '/themes/advanced/about.htm',
+ width : 480,
+ height : 380,
+ inline : true
+ }, {
+ theme_url : this.url
+ });
+ },
+
+ _mceColorPicker : function(u, v) {
+ var ed = this.editor;
+
+ v = v || {};
+
+ ed.windowManager.open({
+ url : tinymce.baseURL + '/themes/advanced/color_picker.htm',
+ width : 375 + parseInt(ed.getLang('advanced.colorpicker_delta_width', 0)),
+ height : 250 + parseInt(ed.getLang('advanced.colorpicker_delta_height', 0)),
+ close_previous : false,
+ inline : true
+ }, {
+ input_color : v.color,
+ func : v.func,
+ theme_url : this.url
+ });
+ },
+
+ _mceCodeEditor : function(ui, val) {
+ var ed = this.editor;
+
+ ed.windowManager.open({
+ url : tinymce.baseURL + '/themes/advanced/source_editor.htm',
+ width : parseInt(ed.getParam("theme_advanced_source_editor_width", 720)),
+ height : parseInt(ed.getParam("theme_advanced_source_editor_height", 580)),
+ inline : true,
+ resizable : true,
+ maximizable : true
+ }, {
+ theme_url : this.url
+ });
+ },
+
+ _mceImage : function(ui, val) {
+ var ed = this.editor;
+
+ // Internal image object like a flash placeholder
+ if (ed.dom.getAttrib(ed.selection.getNode(), 'class').indexOf('mceItem') != -1)
+ return;
+
+ ed.windowManager.open({
+ url : tinymce.baseURL + '/themes/advanced/image.htm',
+ width : 355 + parseInt(ed.getLang('advanced.image_delta_width', 0)),
+ height : 275 + parseInt(ed.getLang('advanced.image_delta_height', 0)),
+ inline : true
+ }, {
+ theme_url : this.url
+ });
+ },
+
+ _mceLink : function(ui, val) {
+ var ed = this.editor;
+
+ ed.windowManager.open({
+ url : tinymce.baseURL + '/themes/advanced/link.htm',
+ width : 310 + parseInt(ed.getLang('advanced.link_delta_width', 0)),
+ height : 200 + parseInt(ed.getLang('advanced.link_delta_height', 0)),
+ inline : true
+ }, {
+ theme_url : this.url
+ });
+ },
+
+ _mceNewDocument : function() {
+ var ed = this.editor;
+
+ ed.windowManager.confirm('advanced.newdocument', function(s) {
+ if (s)
+ ed.execCommand('mceSetContent', false, '');
+ });
+ },
+
+ _mceForeColor : function() {
+ var t = this;
+
+ this._mceColorPicker(0, {
+ color: t.fgColor,
+ func : function(co) {
+ t.fgColor = co;
+ t.editor.execCommand('ForeColor', false, co);
+ }
+ });
+ },
+
+ _mceBackColor : function() {
+ var t = this;
+
+ this._mceColorPicker(0, {
+ color: t.bgColor,
+ func : function(co) {
+ t.bgColor = co;
+ t.editor.execCommand('HiliteColor', false, co);
+ }
+ });
+ },
+
+ _ufirst : function(s) {
+ return s.substring(0, 1).toUpperCase() + s.substring(1);
+ }
+ });
+
+ tinymce.ThemeManager.add('advanced', tinymce.themes.AdvancedTheme);
+}());
\ No newline at end of file
--- /dev/null
+/**\r
+ * $Id: editor_template_src.js 901 2008-08-18 11:44:21Z spocke $\r
+ *\r
+ * @author Moxiecode\r
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+(function() {\r
+ var DOM = tinymce.DOM, Event = tinymce.dom.Event, extend = tinymce.extend, each = tinymce.each, Cookie = tinymce.util.Cookie, lastExtID, explode = tinymce.explode;\r
+\r
+ // Tell it to load theme specific language pack(s)\r
+ tinymce.ThemeManager.requireLangPack('advanced');\r
+\r
+ tinymce.create('tinymce.themes.AdvancedTheme', {\r
+ // Control name lookup, format: title, command\r
+ controls : {\r
+ bold : ['bold_desc', 'Bold'],\r
+ italic : ['italic_desc', 'Italic'],\r
+ underline : ['underline_desc', 'Underline'],\r
+ strikethrough : ['striketrough_desc', 'Strikethrough'],\r
+ justifyleft : ['justifyleft_desc', 'JustifyLeft'],\r
+ justifycenter : ['justifycenter_desc', 'JustifyCenter'],\r
+ justifyright : ['justifyright_desc', 'JustifyRight'],\r
+ justifyfull : ['justifyfull_desc', 'JustifyFull'],\r
+ bullist : ['bullist_desc', 'InsertUnorderedList'],\r
+ numlist : ['numlist_desc', 'InsertOrderedList'],\r
+ outdent : ['outdent_desc', 'Outdent'],\r
+ indent : ['indent_desc', 'Indent'],\r
+ cut : ['cut_desc', 'Cut'],\r
+ copy : ['copy_desc', 'Copy'],\r
+ paste : ['paste_desc', 'Paste'],\r
+ undo : ['undo_desc', 'Undo'],\r
+ redo : ['redo_desc', 'Redo'],\r
+ link : ['link_desc', 'mceLink'],\r
+ unlink : ['unlink_desc', 'unlink'],\r
+ image : ['image_desc', 'mceImage'],\r
+ cleanup : ['cleanup_desc', 'mceCleanup'],\r
+ help : ['help_desc', 'mceHelp'],\r
+ code : ['code_desc', 'mceCodeEditor'],\r
+ hr : ['hr_desc', 'InsertHorizontalRule'],\r
+ removeformat : ['removeformat_desc', 'RemoveFormat'],\r
+ sub : ['sub_desc', 'subscript'],\r
+ sup : ['sup_desc', 'superscript'],\r
+ forecolor : ['forecolor_desc', 'ForeColor'],\r
+ forecolorpicker : ['forecolor_desc', 'mceForeColor'],\r
+ backcolor : ['backcolor_desc', 'HiliteColor'],\r
+ backcolorpicker : ['backcolor_desc', 'mceBackColor'],\r
+ charmap : ['charmap_desc', 'mceCharMap'],\r
+ visualaid : ['visualaid_desc', 'mceToggleVisualAid'],\r
+ anchor : ['anchor_desc', 'mceInsertAnchor'],\r
+ newdocument : ['newdocument_desc', 'mceNewDocument'],\r
+ blockquote : ['blockquote_desc', 'mceBlockQuote']\r
+ },\r
+\r
+ stateControls : ['bold', 'italic', 'underline', 'strikethrough', 'bullist', 'numlist', 'justifyleft', 'justifycenter', 'justifyright', 'justifyfull', 'sub', 'sup', 'blockquote'],\r
+\r
+ init : function(ed, url) {\r
+ var t = this, s, v;\r
+ \r
+ t.editor = ed;\r
+ t.url = url;\r
+ t.onResolveName = new tinymce.util.Dispatcher(this);\r
+\r
+ // Default settings\r
+ t.settings = s = extend({\r
+ theme_advanced_path : true,\r
+ theme_advanced_toolbar_location : 'bottom',\r
+ theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect",\r
+ theme_advanced_buttons2 : "bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code",\r
+ theme_advanced_buttons3 : "hr,removeformat,visualaid,|,sub,sup,|,charmap",\r
+ theme_advanced_blockformats : "p,address,pre,h1,h2,h3,h4,h5,h6",\r
+ theme_advanced_toolbar_align : "center",\r
+ theme_advanced_fonts : "Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats",\r
+ theme_advanced_font_sizes : "1,2,3,4,5,6,7",\r
+ theme_advanced_more_colors : 1,\r
+ theme_advanced_row_height : 23,\r
+ theme_advanced_resize_horizontal : 1,\r
+ theme_advanced_resizing_use_cookie : 1,\r
+ readonly : ed.settings.readonly\r
+ }, ed.settings);\r
+\r
+ if ((v = s.theme_advanced_path_location) && v != 'none')\r
+ s.theme_advanced_statusbar_location = s.theme_advanced_path_location;\r
+\r
+ if (s.theme_advanced_statusbar_location == 'none')\r
+ s.theme_advanced_statusbar_location = 0;\r
+\r
+ // Init editor\r
+ ed.onInit.add(function() {\r
+ ed.onNodeChange.add(t._nodeChanged, t);\r
+\r
+ if (ed.settings.content_css !== false)\r
+ ed.dom.loadCSS(ed.baseURI.toAbsolute("themes/advanced/skins/" + ed.settings.skin + "/content.css"));\r
+ });\r
+\r
+ ed.onSetProgressState.add(function(ed, b, ti) {\r
+ var co, id = ed.id, tb;\r
+\r
+ if (b) {\r
+ t.progressTimer = setTimeout(function() {\r
+ co = ed.getContainer();\r
+ co = co.insertBefore(DOM.create('DIV', {style : 'position:relative'}), co.firstChild);\r
+ tb = DOM.get(ed.id + '_tbl');\r
+\r
+ DOM.add(co, 'div', {id : id + '_blocker', 'class' : 'mceBlocker', style : {width : tb.clientWidth + 2, height : tb.clientHeight + 2}});\r
+ DOM.add(co, 'div', {id : id + '_progress', 'class' : 'mceProgress', style : {left : tb.clientWidth / 2, top : tb.clientHeight / 2}});\r
+ }, ti || 0);\r
+ } else {\r
+ DOM.remove(id + '_blocker');\r
+ DOM.remove(id + '_progress');\r
+ clearTimeout(t.progressTimer);\r
+ }\r
+ });\r
+\r
+ DOM.loadCSS(ed.baseURI.toAbsolute(s.editor_css || "themes/advanced/skins/" + ed.settings.skin + "/ui.css"));\r
+\r
+ if (s.skin_variant)\r
+ DOM.loadCSS(ed.baseURI.toAbsolute(s.editor_css || "themes/advanced/skins/" + ed.settings.skin + "/ui_" + s.skin_variant + ".css"));\r
+ },\r
+\r
+ createControl : function(n, cf) {\r
+ var cd, c;\r
+\r
+ if (c = cf.createControl(n))\r
+ return c;\r
+\r
+ switch (n) {\r
+ case "styleselect":\r
+ return this._createStyleSelect();\r
+\r
+ case "formatselect":\r
+ return this._createBlockFormats();\r
+\r
+ case "fontselect":\r
+ return this._createFontSelect();\r
+\r
+ case "fontsizeselect":\r
+ return this._createFontSizeSelect();\r
+\r
+ case "forecolor":\r
+ return this._createForeColorMenu();\r
+\r
+ case "backcolor":\r
+ return this._createBackColorMenu();\r
+ }\r
+\r
+ if ((cd = this.controls[n]))\r
+ return cf.createButton(n, {title : "advanced." + cd[0], cmd : cd[1], ui : cd[2], value : cd[3]});\r
+ },\r
+\r
+ execCommand : function(cmd, ui, val) {\r
+ var f = this['_' + cmd];\r
+\r
+ if (f) {\r
+ f.call(this, ui, val);\r
+ return true;\r
+ }\r
+\r
+ return false;\r
+ },\r
+\r
+ _importClasses : function(e) {\r
+ var ed = this.editor, c = ed.controlManager.get('styleselect');\r
+\r
+ if (c.getLength() == 0) {\r
+ each(ed.dom.getClasses(), function(o) {\r
+ c.add(o['class'], o['class']);\r
+ });\r
+ }\r
+ },\r
+\r
+ _createStyleSelect : function(n) {\r
+ var t = this, ed = t.editor, cf = ed.controlManager, c = cf.createListBox('styleselect', {\r
+ title : 'advanced.style_select',\r
+ onselect : function(v) {\r
+ if (c.selectedValue === v) {\r
+ ed.execCommand('mceSetStyleInfo', 0, {command : 'removeformat'});\r
+ c.select();\r
+ return false;\r
+ } else\r
+ ed.execCommand('mceSetCSSClass', 0, v);\r
+ }\r
+ });\r
+\r
+ if (c) {\r
+ each(ed.getParam('theme_advanced_styles', '', 'hash'), function(v, k) {\r
+ if (v)\r
+ c.add(t.editor.translate(k), v);\r
+ });\r
+\r
+ c.onPostRender.add(function(ed, n) {\r
+ Event.add(n.id + '_text', 'focus', t._importClasses, t);\r
+ Event.add(n.id + '_text', 'mousedown', t._importClasses, t);\r
+ });\r
+ }\r
+\r
+ return c;\r
+ },\r
+\r
+ _createFontSelect : function() {\r
+ var c, t = this, ed = t.editor;\r
+\r
+ c = ed.controlManager.createListBox('fontselect', {title : 'advanced.fontdefault', cmd : 'FontName'});\r
+ if (c) {\r
+ each(ed.getParam('theme_advanced_fonts', t.settings.theme_advanced_fonts, 'hash'), function(v, k) {\r
+ c.add(ed.translate(k), v, {style : v.indexOf('dings') == -1 ? 'font-family:' + v : ''});\r
+ });\r
+ }\r
+\r
+ return c;\r
+ },\r
+\r
+ _createFontSizeSelect : function() {\r
+ var t = this, ed = t.editor, c, lo = [\r
+ "1 (8 pt)",\r
+ "2 (10 pt)",\r
+ "3 (12 pt)",\r
+ "4 (14 pt)",\r
+ "5 (18 pt)",\r
+ "6 (24 pt)",\r
+ "7 (36 pt)"\r
+ ], fz = [8, 10, 12, 14, 18, 24, 36];\r
+\r
+ c = ed.controlManager.createListBox('fontsizeselect', {title : 'advanced.font_size', cmd : 'FontSize'});\r
+ if (c) {\r
+ each(ed.getParam('theme_advanced_font_sizes', t.settings.theme_advanced_font_sizes, 'hash'), function(v, k) {\r
+ // AVL: remove style height \r
+ // c.add(k != v ? k : lo[parseInt(v) - 1], v, {'style' : 'font-size:' + fz[v - 1] + 'pt', 'class' : 'mceFontSize' + v});\r
+ c.add(k != v ? k : lo[parseInt(v) - 1], v, {});\r
+ });\r
+ }\r
+\r
+ return c;\r
+ },\r
+\r
+ _createBlockFormats : function() {\r
+ var c, fmts = {\r
+ p : 'advanced.paragraph',\r
+ address : 'advanced.address',\r
+ pre : 'advanced.pre',\r
+ h1 : 'advanced.h1',\r
+ h2 : 'advanced.h2',\r
+ h3 : 'advanced.h3',\r
+ h4 : 'advanced.h4',\r
+ h5 : 'advanced.h5',\r
+ h6 : 'advanced.h6',\r
+ div : 'advanced.div',\r
+ blockquote : 'advanced.blockquote',\r
+ code : 'advanced.code',\r
+ dt : 'advanced.dt',\r
+ dd : 'advanced.dd',\r
+ samp : 'advanced.samp'\r
+ }, t = this;\r
+\r
+ c = t.editor.controlManager.createListBox('formatselect', {title : 'advanced.block', cmd : 'FormatBlock'});\r
+ if (c) {\r
+ each(t.editor.getParam('theme_advanced_blockformats', t.settings.theme_advanced_blockformats, 'hash'), function(v, k) {\r
+ c.add(t.editor.translate(k != v ? k : fmts[v]), v, {'class' : 'mce_formatPreview mce_' + v});\r
+ });\r
+ }\r
+\r
+ return c;\r
+ },\r
+\r
+ _createForeColorMenu : function() {\r
+ var c, t = this, s = t.settings, o = {}, v;\r
+\r
+ if (s.theme_advanced_more_colors) {\r
+ o.more_colors_func = function() {\r
+ t._mceColorPicker(0, {\r
+ color : c.value,\r
+ func : function(co) {\r
+ c.setColor(co);\r
+ }\r
+ });\r
+ };\r
+ }\r
+\r
+ if (v = s.theme_advanced_text_colors)\r
+ o.colors = v;\r
+\r
+ o.title = 'advanced.forecolor_desc';\r
+ o.cmd = 'ForeColor';\r
+ o.scope = this;\r
+\r
+ c = t.editor.controlManager.createColorSplitButton('forecolor', o);\r
+\r
+ return c;\r
+ },\r
+\r
+ _createBackColorMenu : function() {\r
+ var c, t = this, s = t.settings, o = {}, v;\r
+\r
+ if (s.theme_advanced_more_colors) {\r
+ o.more_colors_func = function() {\r
+ t._mceColorPicker(0, {\r
+ color : c.value,\r
+ func : function(co) {\r
+ c.setColor(co);\r
+ }\r
+ });\r
+ };\r
+ }\r
+\r
+ if (v = s.theme_advanced_background_colors)\r
+ o.colors = v;\r
+\r
+ o.title = 'advanced.backcolor_desc';\r
+ o.cmd = 'HiliteColor';\r
+ o.scope = this;\r
+\r
+ c = t.editor.controlManager.createColorSplitButton('backcolor', o);\r
+\r
+ return c;\r
+ },\r
+\r
+ renderUI : function(o) {\r
+ var n, ic, tb, t = this, ed = t.editor, s = t.settings, sc, p, nl;\r
+\r
+ n = p = DOM.create('span', {id : ed.id + '_parent', 'class' : 'mceEditor ' + ed.settings.skin + 'Skin' + (s.skin_variant ? ' ' + ed.settings.skin + 'Skin' + t._ufirst(s.skin_variant) : '')});\r
+\r
+ if (!DOM.boxModel)\r
+ n = DOM.add(n, 'div', {'class' : 'mceOldBoxModel'});\r
+\r
+ n = sc = DOM.add(n, 'table', {id : ed.id + '_tbl', 'class' : 'mceLayout', cellSpacing : 0, cellPadding : 0});\r
+ n = tb = DOM.add(n, 'tbody');\r
+\r
+ switch ((s.theme_advanced_layout_manager || '').toLowerCase()) {\r
+ case "rowlayout":\r
+ ic = t._rowLayout(s, tb, o);\r
+ break;\r
+\r
+ case "customlayout":\r
+ ic = ed.execCallback("theme_advanced_custom_layout", s, tb, o, p);\r
+ break;\r
+\r
+ default:\r
+ ic = t._simpleLayout(s, tb, o, p);\r
+ }\r
+\r
+ n = o.targetNode;\r
+\r
+ // Add classes to first and last TRs\r
+ nl = DOM.stdMode ? sc.getElementsByTagName('tr') : sc.rows; // Quick fix for IE 8\r
+ DOM.addClass(nl[0], 'mceFirst');\r
+ DOM.addClass(nl[nl.length - 1], 'mceLast');\r
+\r
+ // Add classes to first and last TDs\r
+ each(DOM.select('tr', tb), function(n) {\r
+ DOM.addClass(n.firstChild, 'mceFirst');\r
+ DOM.addClass(n.childNodes[n.childNodes.length - 1], 'mceLast');\r
+ });\r
+\r
+ if (DOM.get(s.theme_advanced_toolbar_container))\r
+ DOM.get(s.theme_advanced_toolbar_container).appendChild(p);\r
+ else\r
+ DOM.insertAfter(p, n);\r
+\r
+ Event.add(ed.id + '_path_row', 'click', function(e) {\r
+ e = e.target;\r
+\r
+ if (e.nodeName == 'A') {\r
+ t._sel(e.className.replace(/^.*mcePath_([0-9]+).*$/, '$1'));\r
+\r
+ return Event.cancel(e);\r
+ }\r
+ });\r
+/*\r
+ if (DOM.get(ed.id + '_path_row')) {\r
+ Event.add(ed.id + '_tbl', 'mouseover', function(e) {\r
+ var re;\r
+ \r
+ e = e.target;\r
+\r
+ if (e.nodeName == 'SPAN' && DOM.hasClass(e.parentNode, 'mceButton')) {\r
+ re = DOM.get(ed.id + '_path_row');\r
+ t.lastPath = re.innerHTML;\r
+ DOM.setHTML(re, e.parentNode.title);\r
+ }\r
+ });\r
+\r
+ Event.add(ed.id + '_tbl', 'mouseout', function(e) {\r
+ if (t.lastPath) {\r
+ DOM.setHTML(ed.id + '_path_row', t.lastPath);\r
+ t.lastPath = 0;\r
+ }\r
+ });\r
+ }\r
+*/\r
+\r
+ if (!ed.getParam('accessibility_focus') || ed.getParam('tab_focus'))\r
+ Event.add(DOM.add(p, 'a', {href : '#'}, '<!-- IE -->'), 'focus', function() {tinyMCE.get(ed.id).focus();});\r
+\r
+ if (s.theme_advanced_toolbar_location == 'external')\r
+ o.deltaHeight = 0;\r
+\r
+ t.deltaHeight = o.deltaHeight;\r
+ o.targetNode = null;\r
+\r
+ return {\r
+ iframeContainer : ic,\r
+ editorContainer : ed.id + '_parent',\r
+ sizeContainer : sc,\r
+ deltaHeight : o.deltaHeight\r
+ };\r
+ },\r
+\r
+ getInfo : function() {\r
+ return {\r
+ longname : 'Advanced theme',\r
+ author : 'Moxiecode Systems AB',\r
+ authorurl : 'http://tinymce.moxiecode.com',\r
+ version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+ }\r
+ },\r
+\r
+ resizeBy : function(dw, dh) {\r
+ var e = DOM.get(this.editor.id + '_tbl');\r
+\r
+ this.resizeTo(e.clientWidth + dw, e.clientHeight + dh);\r
+ },\r
+\r
+ resizeTo : function(w, h) {\r
+ var ed = this.editor, s = ed.settings, e = DOM.get(ed.id + '_tbl'), ifr = DOM.get(ed.id + '_ifr'), dh;\r
+\r
+ // Boundery fix box\r
+ w = Math.max(s.theme_advanced_resizing_min_width || 100, w);\r
+ h = Math.max(s.theme_advanced_resizing_min_height || 100, h);\r
+ w = Math.min(s.theme_advanced_resizing_max_width || 0xFFFF, w);\r
+ h = Math.min(s.theme_advanced_resizing_max_height || 0xFFFF, h);\r
+\r
+ // Calc difference between iframe and container\r
+ dh = e.clientHeight - ifr.clientHeight;\r
+\r
+ // Resize iframe and container\r
+ DOM.setStyle(ifr, 'height', h - dh);\r
+ DOM.setStyles(e, {width : w, height : h});\r
+ },\r
+\r
+ destroy : function() {\r
+ var id = this.editor.id;\r
+\r
+ Event.clear(id + '_resize');\r
+ Event.clear(id + '_path_row');\r
+ Event.clear(id + '_external_close');\r
+ },\r
+\r
+ // Internal functions\r
+\r
+ _simpleLayout : function(s, tb, o, p) {\r
+ var t = this, ed = t.editor, lo = s.theme_advanced_toolbar_location, sl = s.theme_advanced_statusbar_location, n, ic, etb, c;\r
+\r
+ if (s.readonly) {\r
+ n = DOM.add(tb, 'tr');\r
+ n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'});\r
+ return ic;\r
+ }\r
+\r
+ // Create toolbar container at top\r
+ if (lo == 'top')\r
+ t._addToolbars(tb, o);\r
+\r
+ // Create external toolbar\r
+ if (lo == 'external') {\r
+ n = c = DOM.create('div', {style : 'position:relative'});\r
+ n = DOM.add(n, 'div', {id : ed.id + '_external', 'class' : 'mceExternalToolbar'});\r
+ DOM.add(n, 'a', {id : ed.id + '_external_close', href : 'javascript:;', 'class' : 'mceExternalClose'});\r
+ n = DOM.add(n, 'table', {id : ed.id + '_tblext', cellSpacing : 0, cellPadding : 0});\r
+ etb = DOM.add(n, 'tbody');\r
+\r
+ if (p.firstChild.className == 'mceOldBoxModel')\r
+ p.firstChild.appendChild(c);\r
+ else\r
+ p.insertBefore(c, p.firstChild);\r
+\r
+ t._addToolbars(etb, o);\r
+\r
+ ed.onMouseUp.add(function() {\r
+ var e = DOM.get(ed.id + '_external');\r
+ DOM.show(e);\r
+\r
+ DOM.hide(lastExtID);\r
+\r
+ var f = Event.add(ed.id + '_external_close', 'click', function() {\r
+ DOM.hide(ed.id + '_external');\r
+ Event.remove(ed.id + '_external_close', 'click', f);\r
+ });\r
+\r
+ DOM.show(e);\r
+ DOM.setStyle(e, 'top', 0 - DOM.getRect(ed.id + '_tblext').h - 1);\r
+\r
+ // Fixes IE rendering bug\r
+ DOM.hide(e);\r
+ DOM.show(e);\r
+ e.style.filter = '';\r
+\r
+ lastExtID = ed.id + '_external';\r
+\r
+ e = null;\r
+ });\r
+ }\r
+\r
+ if (sl == 'top')\r
+ t._addStatusBar(tb, o);\r
+\r
+ // Create iframe container\r
+ if (!s.theme_advanced_toolbar_container) {\r
+ n = DOM.add(tb, 'tr');\r
+ n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'});\r
+ }\r
+\r
+ // Create toolbar container at bottom\r
+ if (lo == 'bottom')\r
+ t._addToolbars(tb, o);\r
+\r
+ if (sl == 'bottom')\r
+ t._addStatusBar(tb, o);\r
+\r
+ return ic;\r
+ },\r
+\r
+ _rowLayout : function(s, tb, o) {\r
+ var t = this, ed = t.editor, dc, da, cf = ed.controlManager, n, ic, to, a;\r
+\r
+ dc = s.theme_advanced_containers_default_class || '';\r
+ da = s.theme_advanced_containers_default_align || 'center';\r
+\r
+ each(explode(s.theme_advanced_containers || ''), function(c, i) {\r
+ var v = s['theme_advanced_container_' + c] || '';\r
+\r
+ switch (v.toLowerCase()) {\r
+ case 'mceeditor':\r
+ n = DOM.add(tb, 'tr');\r
+ n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'});\r
+ break;\r
+\r
+ case 'mceelementpath':\r
+ t._addStatusBar(tb, o);\r
+ break;\r
+\r
+ default:\r
+ a = (s['theme_advanced_container_' + c + '_align'] || da).toLowerCase();\r
+ a = 'mce' + t._ufirst(a);\r
+\r
+ n = DOM.add(DOM.add(tb, 'tr'), 'td', {\r
+ 'class' : 'mceToolbar ' + (s['theme_advanced_container_' + c + '_class'] || dc) + ' ' + a || da\r
+ });\r
+\r
+ to = cf.createToolbar("toolbar" + i);\r
+ t._addControls(v, to);\r
+ DOM.setHTML(n, to.renderHTML());\r
+ o.deltaHeight -= s.theme_advanced_row_height;\r
+ }\r
+ });\r
+\r
+ return ic;\r
+ },\r
+\r
+ _addControls : function(v, tb) {\r
+ var t = this, s = t.settings, di, cf = t.editor.controlManager;\r
+\r
+ if (s.theme_advanced_disable && !t._disabled) {\r
+ di = {};\r
+\r
+ each(explode(s.theme_advanced_disable), function(v) {\r
+ di[v] = 1;\r
+ });\r
+\r
+ t._disabled = di;\r
+ } else\r
+ di = t._disabled;\r
+\r
+ each(explode(v), function(n) {\r
+ var c;\r
+\r
+ if (di && di[n])\r
+ return;\r
+\r
+ // Compatiblity with 2.x\r
+ if (n == 'tablecontrols') {\r
+ each(["table","|","row_props","cell_props","|","row_before","row_after","delete_row","|","col_before","col_after","delete_col","|","split_cells","merge_cells"], function(n) {\r
+ n = t.createControl(n, cf);\r
+\r
+ if (n)\r
+ tb.add(n);\r
+ });\r
+\r
+ return;\r
+ }\r
+\r
+ c = t.createControl(n, cf);\r
+\r
+ if (c)\r
+ tb.add(c);\r
+ });\r
+ },\r
+\r
+ _addToolbars : function(c, o) {\r
+ var t = this, i, tb, ed = t.editor, s = t.settings, v, cf = ed.controlManager, di, n, h = [], a;\r
+\r
+ a = s.theme_advanced_toolbar_align.toLowerCase();\r
+ a = 'mce' + t._ufirst(a);\r
+\r
+ n = DOM.add(DOM.add(c, 'tr'), 'td', {'class' : 'mceToolbar ' + a});\r
+\r
+ if (!ed.getParam('accessibility_focus') || ed.getParam('tab_focus'))\r
+ h.push(DOM.createHTML('a', {href : '#', onfocus : 'tinyMCE.get(\'' + ed.id + '\').focus();'}, '<!-- IE -->'));\r
+\r
+ h.push(DOM.createHTML('a', {href : '#', accesskey : 'q', title : ed.getLang("advanced.toolbar_focus")}, '<!-- IE -->'));\r
+\r
+ // Create toolbar and add the controls\r
+ for (i=1; (v = s['theme_advanced_buttons' + i]); i++) {\r
+ tb = cf.createToolbar("toolbar" + i, {'class' : 'mceToolbarRow' + i});\r
+\r
+ if (s['theme_advanced_buttons' + i + '_add'])\r
+ v += ',' + s['theme_advanced_buttons' + i + '_add'];\r
+\r
+ if (s['theme_advanced_buttons' + i + '_add_before'])\r
+ v = s['theme_advanced_buttons' + i + '_add_before'] + ',' + v;\r
+\r
+ t._addControls(v, tb);\r
+\r
+ //n.appendChild(n = tb.render());\r
+ h.push(tb.renderHTML());\r
+\r
+ o.deltaHeight -= s.theme_advanced_row_height;\r
+ }\r
+\r
+ h.push(DOM.createHTML('a', {href : '#', accesskey : 'z', title : ed.getLang("advanced.toolbar_focus"), onfocus : 'tinyMCE.getInstanceById(\'' + ed.id + '\').focus();'}, '<!-- IE -->'));\r
+ DOM.setHTML(n, h.join(''));\r
+ },\r
+\r
+ _addStatusBar : function(tb, o) {\r
+ var n, t = this, ed = t.editor, s = t.settings, r, mf, me, td;\r
+\r
+ n = DOM.add(tb, 'tr');\r
+ n = td = DOM.add(n, 'td', {'class' : 'mceStatusbar'});\r
+ n = DOM.add(n, 'div', {id : ed.id + '_path_row'}, s.theme_advanced_path ? ed.translate('advanced.path') + ': ' : ' ');\r
+ DOM.add(n, 'a', {href : '#', accesskey : 'x'});\r
+\r
+ if (s.theme_advanced_resizing && !tinymce.isOldWebKit) {\r
+ DOM.add(td, 'a', {id : ed.id + '_resize', href : 'javascript:;', onclick : "return false;", 'class' : 'mceResize'});\r
+\r
+ if (s.theme_advanced_resizing_use_cookie) {\r
+ ed.onPostRender.add(function() {\r
+ var o = Cookie.getHash("TinyMCE_" + ed.id + "_size"), c = DOM.get(ed.id + '_tbl');\r
+\r
+ if (!o)\r
+ return;\r
+\r
+ if (s.theme_advanced_resize_horizontal)\r
+ c.style.width = Math.max(10, o.cw) + 'px';\r
+\r
+ c.style.height = Math.max(10, o.ch) + 'px';\r
+ DOM.get(ed.id + '_ifr').style.height = Math.max(10, parseInt(o.ch) + t.deltaHeight) + 'px';\r
+ });\r
+ }\r
+\r
+ ed.onPostRender.add(function() {\r
+ Event.add(ed.id + '_resize', 'mousedown', function(e) {\r
+ var c, p, w, h, n, pa;\r
+\r
+ // Measure container\r
+ c = DOM.get(ed.id + '_tbl');\r
+ w = c.clientWidth;\r
+ h = c.clientHeight;\r
+\r
+ miw = s.theme_advanced_resizing_min_width || 100;\r
+ mih = s.theme_advanced_resizing_min_height || 100;\r
+ maw = s.theme_advanced_resizing_max_width || 0xFFFF;\r
+ mah = s.theme_advanced_resizing_max_height || 0xFFFF;\r
+\r
+ // Setup placeholder\r
+ p = DOM.add(DOM.get(ed.id + '_parent'), 'div', {'class' : 'mcePlaceHolder'});\r
+ DOM.setStyles(p, {width : w, height : h});\r
+\r
+ // Replace with placeholder\r
+ DOM.hide(c);\r
+ DOM.show(p);\r
+\r
+ // Create internal resize obj\r
+ r = {\r
+ x : e.screenX,\r
+ y : e.screenY,\r
+ w : w,\r
+ h : h,\r
+ dx : null,\r
+ dy : null\r
+ };\r
+\r
+ // Start listening\r
+ mf = Event.add(DOM.doc, 'mousemove', function(e) {\r
+ var w, h;\r
+\r
+ // Calc delta values\r
+ r.dx = e.screenX - r.x;\r
+ r.dy = e.screenY - r.y;\r
+\r
+ // Boundery fix box\r
+ w = Math.max(miw, r.w + r.dx);\r
+ h = Math.max(mih, r.h + r.dy);\r
+ w = Math.min(maw, w);\r
+ h = Math.min(mah, h);\r
+\r
+ // Resize placeholder\r
+ if (s.theme_advanced_resize_horizontal)\r
+ p.style.width = w + 'px';\r
+\r
+ p.style.height = h + 'px';\r
+\r
+ return Event.cancel(e);\r
+ });\r
+\r
+ me = Event.add(DOM.doc, 'mouseup', function(e) {\r
+ var ifr;\r
+\r
+ // Stop listening\r
+ Event.remove(DOM.doc, 'mousemove', mf);\r
+ Event.remove(DOM.doc, 'mouseup', me);\r
+\r
+ c.style.display = '';\r
+ DOM.remove(p);\r
+\r
+ if (r.dx === null)\r
+ return;\r
+\r
+ ifr = DOM.get(ed.id + '_ifr');\r
+\r
+ if (s.theme_advanced_resize_horizontal)\r
+ c.style.width = Math.max(10, r.w + r.dx) + 'px';\r
+\r
+ c.style.height = Math.max(10, r.h + r.dy) + 'px';\r
+ ifr.style.height = Math.max(10, ifr.clientHeight + r.dy) + 'px';\r
+\r
+ if (s.theme_advanced_resizing_use_cookie) {\r
+ Cookie.setHash("TinyMCE_" + ed.id + "_size", {\r
+ cw : r.w + r.dx,\r
+ ch : r.h + r.dy\r
+ });\r
+ }\r
+ });\r
+\r
+ return Event.cancel(e);\r
+ });\r
+ });\r
+ }\r
+\r
+ o.deltaHeight -= 21;\r
+ n = tb = null;\r
+ },\r
+\r
+ _nodeChanged : function(ed, cm, n, co) {\r
+ var t = this, p, de = 0, v, c, s = t.settings;\r
+\r
+ if (s.readonly)\r
+ return;\r
+\r
+ tinymce.each(t.stateControls, function(c) {\r
+ cm.setActive(c, ed.queryCommandState(t.controls[c][1]));\r
+ });\r
+\r
+ cm.setActive('visualaid', ed.hasVisual);\r
+ cm.setDisabled('undo', !ed.undoManager.hasUndo() && !ed.typing);\r
+ cm.setDisabled('redo', !ed.undoManager.hasRedo());\r
+ cm.setDisabled('outdent', !ed.queryCommandState('Outdent'));\r
+\r
+ p = DOM.getParent(n, 'A');\r
+ if (c = cm.get('link')) {\r
+ if (!p || !p.name) {\r
+ c.setDisabled(!p && co);\r
+ c.setActive(!!p);\r
+ }\r
+ }\r
+\r
+ if (c = cm.get('unlink')) {\r
+ c.setDisabled(!p && co);\r
+ c.setActive(!!p && !p.name);\r
+ }\r
+\r
+ if (c = cm.get('anchor')) {\r
+ c.setActive(!!p && p.name);\r
+\r
+ if (tinymce.isWebKit) {\r
+ p = DOM.getParent(n, 'IMG');\r
+ c.setActive(!!p && DOM.getAttrib(p, 'mce_name') == 'a');\r
+ }\r
+ }\r
+\r
+ p = DOM.getParent(n, 'IMG');\r
+ if (c = cm.get('image'))\r
+ c.setActive(!!p && n.className.indexOf('mceItem') == -1);\r
+\r
+ if (c = cm.get('styleselect')) {\r
+ if (n.className) {\r
+ t._importClasses();\r
+ c.select(n.className);\r
+ } else\r
+ c.select();\r
+ }\r
+\r
+ if (c = cm.get('formatselect')) {\r
+ p = DOM.getParent(n, DOM.isBlock);\r
+\r
+ if (p)\r
+ c.select(p.nodeName.toLowerCase());\r
+ }\r
+\r
+ if (c = cm.get('fontselect'))\r
+ c.select(ed.queryCommandValue('FontName'));\r
+\r
+ if (c = cm.get('fontsizeselect'))\r
+ c.select('' + ed.queryCommandValue('FontSize'));\r
+\r
+ if (s.theme_advanced_path && s.theme_advanced_statusbar_location) {\r
+ p = DOM.get(ed.id + '_path') || DOM.add(ed.id + '_path_row', 'span', {id : ed.id + '_path'});\r
+ DOM.setHTML(p, '');\r
+\r
+ ed.dom.getParent(n, function(n) {\r
+ var na = n.nodeName.toLowerCase(), u, pi, ti = '';\r
+\r
+ // Ignore non element and hidden elements\r
+ if (n.nodeType != 1 || (DOM.hasClass(n, 'mceItemHidden') || DOM.hasClass(n, 'mceItemRemoved')))\r
+ return;\r
+\r
+ // Fake name\r
+ if (v = DOM.getAttrib(n, 'mce_name'))\r
+ na = v;\r
+ \r
+ // Handle prefix\r
+ if (tinymce.isIE && n.scopeName !== 'HTML')\r
+ na = n.scopeName + ':' + na;\r
+\r
+ // Remove internal prefix\r
+ na = na.replace(/mce\:/g, '');\r
+\r
+ // Handle node name\r
+ switch (na) {\r
+ case 'b':\r
+ na = 'strong';\r
+ break;\r
+\r
+ case 'i':\r
+ na = 'em';\r
+ break;\r
+\r
+ case 'img':\r
+ if (v = DOM.getAttrib(n, 'src'))\r
+ ti += 'src: ' + v + ' ';\r
+\r
+ break;\r
+\r
+ case 'a':\r
+ if (v = DOM.getAttrib(n, 'name')) {\r
+ ti += 'name: ' + v + ' ';\r
+ na += '#' + v;\r
+ }\r
+\r
+ if (v = DOM.getAttrib(n, 'href'))\r
+ ti += 'href: ' + v + ' ';\r
+\r
+ break;\r
+\r
+ case 'font':\r
+ if (s.convert_fonts_to_spans)\r
+ na = 'span';\r
+\r
+ if (v = DOM.getAttrib(n, 'face'))\r
+ ti += 'font: ' + v + ' ';\r
+\r
+ if (v = DOM.getAttrib(n, 'size'))\r
+ ti += 'size: ' + v + ' ';\r
+\r
+ if (v = DOM.getAttrib(n, 'color'))\r
+ ti += 'color: ' + v + ' ';\r
+\r
+ break;\r
+\r
+ case 'span':\r
+ if (v = DOM.getAttrib(n, 'style'))\r
+ ti += 'style: ' + v + ' ';\r
+\r
+ break;\r
+ }\r
+\r
+ if (v = DOM.getAttrib(n, 'id'))\r
+ ti += 'id: ' + v + ' ';\r
+\r
+ if (v = n.className) {\r
+ v = v.replace(/(webkit-[\w\-]+|Apple-[\w\-]+|mceItem\w+|mceVisualAid)/g, '');\r
+\r
+ if (v && v.indexOf('mceItem') == -1) {\r
+ ti += 'class: ' + v + ' ';\r
+\r
+ if (DOM.isBlock(n) || na == 'img' || na == 'span')\r
+ na += '.' + v;\r
+ }\r
+ }\r
+\r
+ na = na.replace(/(html:)/g, '');\r
+ na = {name : na, node : n, title : ti};\r
+ t.onResolveName.dispatch(t, na);\r
+ ti = na.title;\r
+ na = na.name;\r
+\r
+ //u = "javascript:tinymce.EditorManager.get('" + ed.id + "').theme._sel('" + (de++) + "');";\r
+ pi = DOM.create('a', {'href' : "javascript:;", onmousedown : "return false;", title : ti, 'class' : 'mcePath_' + (de++)}, na);\r
+\r
+ if (p.hasChildNodes()) {\r
+ p.insertBefore(DOM.doc.createTextNode(' \u00bb '), p.firstChild);\r
+ p.insertBefore(pi, p.firstChild);\r
+ } else\r
+ p.appendChild(pi);\r
+ }, ed.getBody());\r
+ }\r
+ },\r
+\r
+ // Commands gets called by execCommand\r
+\r
+ _sel : function(v) {\r
+ this.editor.execCommand('mceSelectNodeDepth', false, v);\r
+ },\r
+\r
+ _mceInsertAnchor : function(ui, v) {\r
+ var ed = this.editor;\r
+\r
+ ed.windowManager.open({\r
+ url : tinymce.baseURL + '/themes/advanced/anchor.htm',\r
+ width : 320 + parseInt(ed.getLang('advanced.anchor_delta_width', 0)),\r
+ height : 90 + parseInt(ed.getLang('advanced.anchor_delta_height', 0)),\r
+ inline : true\r
+ }, {\r
+ theme_url : this.url\r
+ });\r
+ },\r
+\r
+ _mceCharMap : function() {\r
+ var ed = this.editor;\r
+\r
+ ed.windowManager.open({\r
+ url : tinymce.baseURL + '/themes/advanced/charmap.htm',\r
+ width : 550 + parseInt(ed.getLang('advanced.charmap_delta_width', 0)),\r
+ height : 250 + parseInt(ed.getLang('advanced.charmap_delta_height', 0)),\r
+ inline : true\r
+ }, {\r
+ theme_url : this.url\r
+ });\r
+ },\r
+\r
+ _mceHelp : function() {\r
+ var ed = this.editor;\r
+\r
+ ed.windowManager.open({\r
+ url : tinymce.baseURL + '/themes/advanced/about.htm',\r
+ width : 480,\r
+ height : 380,\r
+ inline : true\r
+ }, {\r
+ theme_url : this.url\r
+ });\r
+ },\r
+\r
+ _mceColorPicker : function(u, v) {\r
+ var ed = this.editor;\r
+\r
+ v = v || {};\r
+\r
+ ed.windowManager.open({\r
+ url : tinymce.baseURL + '/themes/advanced/color_picker.htm',\r
+ width : 375 + parseInt(ed.getLang('advanced.colorpicker_delta_width', 0)),\r
+ height : 250 + parseInt(ed.getLang('advanced.colorpicker_delta_height', 0)),\r
+ close_previous : false,\r
+ inline : true\r
+ }, {\r
+ input_color : v.color,\r
+ func : v.func,\r
+ theme_url : this.url\r
+ });\r
+ },\r
+\r
+ _mceCodeEditor : function(ui, val) {\r
+ var ed = this.editor;\r
+\r
+ ed.windowManager.open({\r
+ url : tinymce.baseURL + '/themes/advanced/source_editor.htm',\r
+ width : parseInt(ed.getParam("theme_advanced_source_editor_width", 720)),\r
+ height : parseInt(ed.getParam("theme_advanced_source_editor_height", 580)),\r
+ inline : true,\r
+ resizable : true,\r
+ maximizable : true\r
+ }, {\r
+ theme_url : this.url\r
+ });\r
+ },\r
+\r
+ _mceImage : function(ui, val) {\r
+ var ed = this.editor;\r
+\r
+ // Internal image object like a flash placeholder\r
+ if (ed.dom.getAttrib(ed.selection.getNode(), 'class').indexOf('mceItem') != -1)\r
+ return;\r
+\r
+ ed.windowManager.open({\r
+ url : tinymce.baseURL + '/themes/advanced/image.htm',\r
+ width : 355 + parseInt(ed.getLang('advanced.image_delta_width', 0)),\r
+ height : 275 + parseInt(ed.getLang('advanced.image_delta_height', 0)),\r
+ inline : true\r
+ }, {\r
+ theme_url : this.url\r
+ });\r
+ },\r
+\r
+ _mceLink : function(ui, val) {\r
+ var ed = this.editor;\r
+\r
+ ed.windowManager.open({\r
+ url : tinymce.baseURL + '/themes/advanced/link.htm',\r
+ width : 310 + parseInt(ed.getLang('advanced.link_delta_width', 0)),\r
+ height : 200 + parseInt(ed.getLang('advanced.link_delta_height', 0)),\r
+ inline : true\r
+ }, {\r
+ theme_url : this.url\r
+ });\r
+ },\r
+\r
+ _mceNewDocument : function() {\r
+ var ed = this.editor;\r
+\r
+ ed.windowManager.confirm('advanced.newdocument', function(s) {\r
+ if (s)\r
+ ed.execCommand('mceSetContent', false, '');\r
+ });\r
+ },\r
+\r
+ _mceForeColor : function() {\r
+ var t = this;\r
+\r
+ this._mceColorPicker(0, {\r
+ color: t.fgColor,\r
+ func : function(co) {\r
+ t.fgColor = co;\r
+ t.editor.execCommand('ForeColor', false, co);\r
+ }\r
+ });\r
+ },\r
+\r
+ _mceBackColor : function() {\r
+ var t = this;\r
+\r
+ this._mceColorPicker(0, {\r
+ color: t.bgColor,\r
+ func : function(co) {\r
+ t.bgColor = co;\r
+ t.editor.execCommand('HiliteColor', false, co);\r
+ }\r
+ });\r
+ },\r
+\r
+ _ufirst : function(s) {\r
+ return s.substring(0, 1).toUpperCase() + s.substring(1);\r
+ }\r
+ });\r
+\r
+ tinymce.ThemeManager.add('advanced', tinymce.themes.AdvancedTheme);\r
+}());
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+ <title>{#advanced_dlg.image_title}</title>\r
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
+ <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
+ <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
+ <script type="text/javascript" src="js/image.js"></script>\r
+ <base target="_self" />\r
+</head>\r
+<body id="image" style="display: none">\r
+<form onsubmit="ImageDialog.update();return false;" action="#">\r
+ <div class="tabs">\r
+ <ul>\r
+ <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advanced_dlg.image_title}</a></span></li>\r
+ </ul>\r
+ </div>\r
+\r
+ <div class="panel_wrapper">\r
+ <div id="general_panel" class="panel current">\r
+ <table border="0" cellpadding="4" cellspacing="0">\r
+ <tr>\r
+ <td nowrap="nowrap"><label for="src">{#advanced_dlg.image_src}</label></td>\r
+ <td><table border="0" cellspacing="0" cellpadding="0">\r
+ <tr>\r
+ <td><input id="src" name="src" type="text" class="mceFocus" value="" style="width: 200px" onchange="ImageDialog.getImageData();" /></td>\r
+ <td id="srcbrowsercontainer"> </td>\r
+ </tr>\r
+ </table></td>\r
+ </tr>\r
+ <tr>\r
+ <td><label for="image_list">{#advanced_dlg.image_list}</label></td>\r
+ <td><select id="image_list" name="image_list" onchange="document.getElementById('src').value=this.options[this.selectedIndex].value;document.getElementById('alt').value=this.options[this.selectedIndex].text;"></select></td>\r
+ </tr>\r
+ <tr>\r
+ <td nowrap="nowrap"><label for="alt">{#advanced_dlg.image_alt}</label></td>\r
+ <td><input id="alt" name="alt" type="text" value="" style="width: 200px" /></td>\r
+ </tr>\r
+ <tr>\r
+ <td nowrap="nowrap"><label for="align">{#advanced_dlg.image_align}</label></td>\r
+ <td><select id="align" name="align" onchange="ImageDialog.updateStyle();">\r
+ <option value="">{#not_set}</option>\r
+ <option value="baseline">{#advanced_dlg.image_align_baseline}</option>\r
+ <option value="top">{#advanced_dlg.image_align_top}</option>\r
+ <option value="middle">{#advanced_dlg.image_align_middle}</option>\r
+ <option value="bottom">{#advanced_dlg.image_align_bottom}</option>\r
+ <option value="text-top">{#advanced_dlg.image_align_texttop}</option>\r
+ <option value="text-bottom">{#advanced_dlg.image_align_textbottom}</option>\r
+ <option value="left">{#advanced_dlg.image_align_left}</option>\r
+ <option value="right">{#advanced_dlg.image_align_right}</option>\r
+ </select></td>\r
+ </tr>\r
+ <tr>\r
+ <td nowrap="nowrap"><label for="width">{#advanced_dlg.image_dimensions}</label></td>\r
+ <td><input id="width" name="width" type="text" value="" size="3" maxlength="5" />\r
+ x\r
+ <input id="height" name="height" type="text" value="" size="3" maxlength="5" /></td>\r
+ </tr>\r
+ <tr>\r
+ <td nowrap="nowrap"><label for="border">{#advanced_dlg.image_border}</label></td>\r
+ <td><input id="border" name="border" type="text" value="" size="3" maxlength="3" onchange="ImageDialog.updateStyle();" /></td>\r
+ </tr>\r
+ <tr>\r
+ <td nowrap="nowrap"><label for="vspace">{#advanced_dlg.image_vspace}</label></td>\r
+ <td><input id="vspace" name="vspace" type="text" value="" size="3" maxlength="3" onchange="ImageDialog.updateStyle();" /></td>\r
+ </tr>\r
+ <tr>\r
+ <td nowrap="nowrap"><label for="hspace">{#advanced_dlg.image_hspace}</label></td>\r
+ <td><input id="hspace" name="hspace" type="text" value="" size="3" maxlength="3" onchange="ImageDialog.updateStyle();" /></td>\r
+ </tr>\r
+ </table>\r
+ </div>\r
+ </div>\r
+\r
+ <div class="mceActionPanel">\r
+ <div style="float: left">\r
+ <input type="submit" id="insert" name="insert" value="{#insert}" />\r
+ </div>\r
+\r
+ <div style="float: right">\r
+ <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
+ </div>\r
+ </div>\r
+</form>\r
+</body>\r
+</html>\r
--- /dev/null
+tinyMCEPopup.requireLangPack();\r
+\r
+function init() {\r
+ var ed, tcont;\r
+\r
+ tinyMCEPopup.resizeToInnerSize();\r
+ ed = tinyMCEPopup.editor;\r
+\r
+ // Give FF some time\r
+ window.setTimeout('insertHelpIFrame();', 10);\r
+\r
+ tcont = document.getElementById('plugintablecontainer');\r
+ document.getElementById('plugins_tab').style.display = 'none';\r
+\r
+ var html = "";\r
+ html += '<table id="plugintable">';\r
+ html += '<thead>';\r
+ html += '<tr>';\r
+ html += '<td>' + ed.getLang('advanced_dlg.about_plugin') + '</td>';\r
+ html += '<td>' + ed.getLang('advanced_dlg.about_author') + '</td>';\r
+ html += '<td>' + ed.getLang('advanced_dlg.about_version') + '</td>';\r
+ html += '</tr>';\r
+ html += '</thead>';\r
+ html += '<tbody>';\r
+\r
+ tinymce.each(ed.plugins, function(p, n) {\r
+ var info;\r
+\r
+ if (!p.getInfo)\r
+ return;\r
+\r
+ html += '<tr>';\r
+\r
+ info = p.getInfo();\r
+\r
+ if (info.infourl != null && info.infourl != '')\r
+ html += '<td width="50%" title="' + n + '"><a href="' + info.infourl + '" target="_blank">' + info.longname + '</a></td>';\r
+ else\r
+ html += '<td width="50%" title="' + n + '">' + info.longname + '</td>';\r
+\r
+ if (info.authorurl != null && info.authorurl != '')\r
+ html += '<td width="35%"><a href="' + info.authorurl + '" target="_blank">' + info.author + '</a></td>';\r
+ else\r
+ html += '<td width="35%">' + info.author + '</td>';\r
+\r
+ html += '<td width="15%">' + info.version + '</td>';\r
+ html += '</tr>';\r
+\r
+ document.getElementById('plugins_tab').style.display = '';\r
+\r
+ });\r
+\r
+ html += '</tbody>';\r
+ html += '</table>';\r
+\r
+ tcont.innerHTML = html;\r
+\r
+ tinyMCEPopup.dom.get('version').innerHTML = tinymce.majorVersion + "." + tinymce.minorVersion;\r
+ tinyMCEPopup.dom.get('date').innerHTML = tinymce.releaseDate;\r
+}\r
+\r
+function insertHelpIFrame() {\r
+ var html;\r
+\r
+ if (tinyMCEPopup.getParam('docs_url')) {\r
+ html = '<iframe width="100%" height="300" src="' + tinyMCEPopup.editor.baseURI.toAbsolute(tinyMCEPopup.getParam('docs_url')) + '"></iframe>';\r
+ document.getElementById('iframecontainer').innerHTML = html;\r
+ document.getElementById('help_tab').style.display = 'block';\r
+ }\r
+}\r
+\r
+tinyMCEPopup.onInit.add(init);\r
--- /dev/null
+tinyMCEPopup.requireLangPack();\r
+\r
+var AnchorDialog = {\r
+ init : function(ed) {\r
+ var action, elm, f = document.forms[0];\r
+\r
+ this.editor = ed;\r
+ elm = ed.dom.getParent(ed.selection.getNode(), 'A,IMG');\r
+ v = ed.dom.getAttrib(elm, 'name');\r
+\r
+ if (v) {\r
+ this.action = 'update';\r
+ f.anchorName.value = v;\r
+ }\r
+\r
+ f.insert.value = ed.getLang(elm ? 'update' : 'insert');\r
+ },\r
+\r
+ update : function() {\r
+ var ed = this.editor;\r
+ \r
+ tinyMCEPopup.restoreSelection();\r
+\r
+ if (this.action != 'update')\r
+ ed.selection.collapse(1);\r
+\r
+ // Webkit acts weird if empty inline element is inserted so we need to use a image instead\r
+ if (tinymce.isWebKit)\r
+ ed.execCommand('mceInsertContent', 0, ed.dom.createHTML('img', {mce_name : 'a', name : document.forms[0].anchorName.value, 'class' : 'mceItemAnchor'}));\r
+ else\r
+ ed.execCommand('mceInsertContent', 0, ed.dom.createHTML('a', {name : document.forms[0].anchorName.value, 'class' : 'mceItemAnchor'}, ''));\r
+\r
+ tinyMCEPopup.close();\r
+ }\r
+};\r
+\r
+tinyMCEPopup.onInit.add(AnchorDialog.init, AnchorDialog);\r
--- /dev/null
+tinyMCEPopup.requireLangPack();\r
+\r
+var charmap = [\r
+ [' ', ' ', true, 'no-break space'],\r
+ ['&', '&', true, 'ampersand'],\r
+ ['"', '"', true, 'quotation mark'],\r
+// finance\r
+ ['¢', '¢', true, 'cent sign'],\r
+ ['€', '€', true, 'euro sign'],\r
+ ['£', '£', true, 'pound sign'],\r
+ ['¥', '¥', true, 'yen sign'],\r
+// signs\r
+ ['©', '©', true, 'copyright sign'],\r
+ ['®', '®', true, 'registered sign'],\r
+ ['™', '™', true, 'trade mark sign'],\r
+ ['‰', '‰', true, 'per mille sign'],\r
+ ['µ', 'µ', true, 'micro sign'],\r
+ ['·', '·', true, 'middle dot'],\r
+ ['•', '•', true, 'bullet'],\r
+ ['…', '…', true, 'three dot leader'],\r
+ ['′', '′', true, 'minutes / feet'],\r
+ ['″', '″', true, 'seconds / inches'],\r
+ ['§', '§', true, 'section sign'],\r
+ ['¶', '¶', true, 'paragraph sign'],\r
+ ['ß', 'ß', true, 'sharp s / ess-zed'],\r
+// quotations\r
+ ['‹', '‹', true, 'single left-pointing angle quotation mark'],\r
+ ['›', '›', true, 'single right-pointing angle quotation mark'],\r
+ ['«', '«', true, 'left pointing guillemet'],\r
+ ['»', '»', true, 'right pointing guillemet'],\r
+ ['‘', '‘', true, 'left single quotation mark'],\r
+ ['’', '’', true, 'right single quotation mark'],\r
+ ['“', '“', true, 'left double quotation mark'],\r
+ ['”', '”', true, 'right double quotation mark'],\r
+ ['‚', '‚', true, 'single low-9 quotation mark'],\r
+ ['„', '„', true, 'double low-9 quotation mark'],\r
+ ['<', '<', true, 'less-than sign'],\r
+ ['>', '>', true, 'greater-than sign'],\r
+ ['≤', '≤', true, 'less-than or equal to'],\r
+ ['≥', '≥', true, 'greater-than or equal to'],\r
+ ['–', '–', true, 'en dash'],\r
+ ['—', '—', true, 'em dash'],\r
+ ['¯', '¯', true, 'macron'],\r
+ ['‾', '‾', true, 'overline'],\r
+ ['¤', '¤', true, 'currency sign'],\r
+ ['¦', '¦', true, 'broken bar'],\r
+ ['¨', '¨', true, 'diaeresis'],\r
+ ['¡', '¡', true, 'inverted exclamation mark'],\r
+ ['¿', '¿', true, 'turned question mark'],\r
+ ['ˆ', 'ˆ', true, 'circumflex accent'],\r
+ ['˜', '˜', true, 'small tilde'],\r
+ ['°', '°', true, 'degree sign'],\r
+ ['−', '−', true, 'minus sign'],\r
+ ['±', '±', true, 'plus-minus sign'],\r
+ ['÷', '÷', true, 'division sign'],\r
+ ['⁄', '⁄', true, 'fraction slash'],\r
+ ['×', '×', true, 'multiplication sign'],\r
+ ['¹', '¹', true, 'superscript one'],\r
+ ['²', '²', true, 'superscript two'],\r
+ ['³', '³', true, 'superscript three'],\r
+ ['¼', '¼', true, 'fraction one quarter'],\r
+ ['½', '½', true, 'fraction one half'],\r
+ ['¾', '¾', true, 'fraction three quarters'],\r
+// math / logical\r
+ ['ƒ', 'ƒ', true, 'function / florin'],\r
+ ['∫', '∫', true, 'integral'],\r
+ ['∑', '∑', true, 'n-ary sumation'],\r
+ ['∞', '∞', true, 'infinity'],\r
+ ['√', '√', true, 'square root'],\r
+ ['∼', '∼', false,'similar to'],\r
+ ['≅', '≅', false,'approximately equal to'],\r
+ ['≈', '≈', true, 'almost equal to'],\r
+ ['≠', '≠', true, 'not equal to'],\r
+ ['≡', '≡', true, 'identical to'],\r
+ ['∈', '∈', false,'element of'],\r
+ ['∉', '∉', false,'not an element of'],\r
+ ['∋', '∋', false,'contains as member'],\r
+ ['∏', '∏', true, 'n-ary product'],\r
+ ['∧', '∧', false,'logical and'],\r
+ ['∨', '∨', false,'logical or'],\r
+ ['¬', '¬', true, 'not sign'],\r
+ ['∩', '∩', true, 'intersection'],\r
+ ['∪', '∪', false,'union'],\r
+ ['∂', '∂', true, 'partial differential'],\r
+ ['∀', '∀', false,'for all'],\r
+ ['∃', '∃', false,'there exists'],\r
+ ['∅', '∅', false,'diameter'],\r
+ ['∇', '∇', false,'backward difference'],\r
+ ['∗', '∗', false,'asterisk operator'],\r
+ ['∝', '∝', false,'proportional to'],\r
+ ['∠', '∠', false,'angle'],\r
+// undefined\r
+ ['´', '´', true, 'acute accent'],\r
+ ['¸', '¸', true, 'cedilla'],\r
+ ['ª', 'ª', true, 'feminine ordinal indicator'],\r
+ ['º', 'º', true, 'masculine ordinal indicator'],\r
+ ['†', '†', true, 'dagger'],\r
+ ['‡', '‡', true, 'double dagger'],\r
+// alphabetical special chars\r
+ ['À', 'À', true, 'A - grave'],\r
+ ['Á', 'Á', true, 'A - acute'],\r
+ ['Â', 'Â', true, 'A - circumflex'],\r
+ ['Ã', 'Ã', true, 'A - tilde'],\r
+ ['Ä', 'Ä', true, 'A - diaeresis'],\r
+ ['Å', 'Å', true, 'A - ring above'],\r
+ ['Æ', 'Æ', true, 'ligature AE'],\r
+ ['Ç', 'Ç', true, 'C - cedilla'],\r
+ ['È', 'È', true, 'E - grave'],\r
+ ['É', 'É', true, 'E - acute'],\r
+ ['Ê', 'Ê', true, 'E - circumflex'],\r
+ ['Ë', 'Ë', true, 'E - diaeresis'],\r
+ ['Ì', 'Ì', true, 'I - grave'],\r
+ ['Í', 'Í', true, 'I - acute'],\r
+ ['Î', 'Î', true, 'I - circumflex'],\r
+ ['Ï', 'Ï', true, 'I - diaeresis'],\r
+ ['Ð', 'Ð', true, 'ETH'],\r
+ ['Ñ', 'Ñ', true, 'N - tilde'],\r
+ ['Ò', 'Ò', true, 'O - grave'],\r
+ ['Ó', 'Ó', true, 'O - acute'],\r
+ ['Ô', 'Ô', true, 'O - circumflex'],\r
+ ['Õ', 'Õ', true, 'O - tilde'],\r
+ ['Ö', 'Ö', true, 'O - diaeresis'],\r
+ ['Ø', 'Ø', true, 'O - slash'],\r
+ ['Œ', 'Œ', true, 'ligature OE'],\r
+ ['Š', 'Š', true, 'S - caron'],\r
+ ['Ù', 'Ù', true, 'U - grave'],\r
+ ['Ú', 'Ú', true, 'U - acute'],\r
+ ['Û', 'Û', true, 'U - circumflex'],\r
+ ['Ü', 'Ü', true, 'U - diaeresis'],\r
+ ['Ý', 'Ý', true, 'Y - acute'],\r
+ ['Ÿ', 'Ÿ', true, 'Y - diaeresis'],\r
+ ['Þ', 'Þ', true, 'THORN'],\r
+ ['à', 'à', true, 'a - grave'],\r
+ ['á', 'á', true, 'a - acute'],\r
+ ['â', 'â', true, 'a - circumflex'],\r
+ ['ã', 'ã', true, 'a - tilde'],\r
+ ['ä', 'ä', true, 'a - diaeresis'],\r
+ ['å', 'å', true, 'a - ring above'],\r
+ ['æ', 'æ', true, 'ligature ae'],\r
+ ['ç', 'ç', true, 'c - cedilla'],\r
+ ['è', 'è', true, 'e - grave'],\r
+ ['é', 'é', true, 'e - acute'],\r
+ ['ê', 'ê', true, 'e - circumflex'],\r
+ ['ë', 'ë', true, 'e - diaeresis'],\r
+ ['ì', 'ì', true, 'i - grave'],\r
+ ['í', 'í', true, 'i - acute'],\r
+ ['î', 'î', true, 'i - circumflex'],\r
+ ['ï', 'ï', true, 'i - diaeresis'],\r
+ ['ð', 'ð', true, 'eth'],\r
+ ['ñ', 'ñ', true, 'n - tilde'],\r
+ ['ò', 'ò', true, 'o - grave'],\r
+ ['ó', 'ó', true, 'o - acute'],\r
+ ['ô', 'ô', true, 'o - circumflex'],\r
+ ['õ', 'õ', true, 'o - tilde'],\r
+ ['ö', 'ö', true, 'o - diaeresis'],\r
+ ['ø', 'ø', true, 'o slash'],\r
+ ['œ', 'œ', true, 'ligature oe'],\r
+ ['š', 'š', true, 's - caron'],\r
+ ['ù', 'ù', true, 'u - grave'],\r
+ ['ú', 'ú', true, 'u - acute'],\r
+ ['û', 'û', true, 'u - circumflex'],\r
+ ['ü', 'ü', true, 'u - diaeresis'],\r
+ ['ý', 'ý', true, 'y - acute'],\r
+ ['þ', 'þ', true, 'thorn'],\r
+ ['ÿ', 'ÿ', true, 'y - diaeresis'],\r
+ ['Α', 'Α', true, 'Alpha'],\r
+ ['Β', 'Β', true, 'Beta'],\r
+ ['Γ', 'Γ', true, 'Gamma'],\r
+ ['Δ', 'Δ', true, 'Delta'],\r
+ ['Ε', 'Ε', true, 'Epsilon'],\r
+ ['Ζ', 'Ζ', true, 'Zeta'],\r
+ ['Η', 'Η', true, 'Eta'],\r
+ ['Θ', 'Θ', true, 'Theta'],\r
+ ['Ι', 'Ι', true, 'Iota'],\r
+ ['Κ', 'Κ', true, 'Kappa'],\r
+ ['Λ', 'Λ', true, 'Lambda'],\r
+ ['Μ', 'Μ', true, 'Mu'],\r
+ ['Ν', 'Ν', true, 'Nu'],\r
+ ['Ξ', 'Ξ', true, 'Xi'],\r
+ ['Ο', 'Ο', true, 'Omicron'],\r
+ ['Π', 'Π', true, 'Pi'],\r
+ ['Ρ', 'Ρ', true, 'Rho'],\r
+ ['Σ', 'Σ', true, 'Sigma'],\r
+ ['Τ', 'Τ', true, 'Tau'],\r
+ ['Υ', 'Υ', true, 'Upsilon'],\r
+ ['Φ', 'Φ', true, 'Phi'],\r
+ ['Χ', 'Χ', true, 'Chi'],\r
+ ['Ψ', 'Ψ', true, 'Psi'],\r
+ ['Ω', 'Ω', true, 'Omega'],\r
+ ['α', 'α', true, 'alpha'],\r
+ ['β', 'β', true, 'beta'],\r
+ ['γ', 'γ', true, 'gamma'],\r
+ ['δ', 'δ', true, 'delta'],\r
+ ['ε', 'ε', true, 'epsilon'],\r
+ ['ζ', 'ζ', true, 'zeta'],\r
+ ['η', 'η', true, 'eta'],\r
+ ['θ', 'θ', true, 'theta'],\r
+ ['ι', 'ι', true, 'iota'],\r
+ ['κ', 'κ', true, 'kappa'],\r
+ ['λ', 'λ', true, 'lambda'],\r
+ ['μ', 'μ', true, 'mu'],\r
+ ['ν', 'ν', true, 'nu'],\r
+ ['ξ', 'ξ', true, 'xi'],\r
+ ['ο', 'ο', true, 'omicron'],\r
+ ['π', 'π', true, 'pi'],\r
+ ['ρ', 'ρ', true, 'rho'],\r
+ ['ς', 'ς', true, 'final sigma'],\r
+ ['σ', 'σ', true, 'sigma'],\r
+ ['τ', 'τ', true, 'tau'],\r
+ ['υ', 'υ', true, 'upsilon'],\r
+ ['φ', 'φ', true, 'phi'],\r
+ ['χ', 'χ', true, 'chi'],\r
+ ['ψ', 'ψ', true, 'psi'],\r
+ ['ω', 'ω', true, 'omega'],\r
+// symbols\r
+ ['ℵ', 'ℵ', false,'alef symbol'],\r
+ ['ϖ', 'ϖ', false,'pi symbol'],\r
+ ['ℜ', 'ℜ', false,'real part symbol'],\r
+ ['ϑ','ϑ', false,'theta symbol'],\r
+ ['ϒ', 'ϒ', false,'upsilon - hook symbol'],\r
+ ['℘', '℘', false,'Weierstrass p'],\r
+ ['ℑ', 'ℑ', false,'imaginary part'],\r
+// arrows\r
+ ['←', '←', true, 'leftwards arrow'],\r
+ ['↑', '↑', true, 'upwards arrow'],\r
+ ['→', '→', true, 'rightwards arrow'],\r
+ ['↓', '↓', true, 'downwards arrow'],\r
+ ['↔', '↔', true, 'left right arrow'],\r
+ ['↵', '↵', false,'carriage return'],\r
+ ['⇐', '⇐', false,'leftwards double arrow'],\r
+ ['⇑', '⇑', false,'upwards double arrow'],\r
+ ['⇒', '⇒', false,'rightwards double arrow'],\r
+ ['⇓', '⇓', false,'downwards double arrow'],\r
+ ['⇔', '⇔', false,'left right double arrow'],\r
+ ['∴', '∴', false,'therefore'],\r
+ ['⊂', '⊂', false,'subset of'],\r
+ ['⊃', '⊃', false,'superset of'],\r
+ ['⊄', '⊄', false,'not a subset of'],\r
+ ['⊆', '⊆', false,'subset of or equal to'],\r
+ ['⊇', '⊇', false,'superset of or equal to'],\r
+ ['⊕', '⊕', false,'circled plus'],\r
+ ['⊗', '⊗', false,'circled times'],\r
+ ['⊥', '⊥', false,'perpendicular'],\r
+ ['⋅', '⋅', false,'dot operator'],\r
+ ['⌈', '⌈', false,'left ceiling'],\r
+ ['⌉', '⌉', false,'right ceiling'],\r
+ ['⌊', '⌊', false,'left floor'],\r
+ ['⌋', '⌋', false,'right floor'],\r
+ ['⟨', '〈', false,'left-pointing angle bracket'],\r
+ ['⟩', '〉', false,'right-pointing angle bracket'],\r
+ ['◊', '◊', true,'lozenge'],\r
+ ['♠', '♠', false,'black spade suit'],\r
+ ['♣', '♣', true, 'black club suit'],\r
+ ['♥', '♥', true, 'black heart suit'],\r
+ ['♦', '♦', true, 'black diamond suit'],\r
+ [' ', ' ', false,'en space'],\r
+ [' ', ' ', false,'em space'],\r
+ [' ', ' ', false,'thin space'],\r
+ ['‌', '‌', false,'zero width non-joiner'],\r
+ ['‍', '‍', false,'zero width joiner'],\r
+ ['‎', '‎', false,'left-to-right mark'],\r
+ ['‏', '‏', false,'right-to-left mark'],\r
+ ['­', '­', false,'soft hyphen']\r
+];\r
+\r
+tinyMCEPopup.onInit.add(function() {\r
+ tinyMCEPopup.dom.setHTML('charmapView', renderCharMapHTML());\r
+});\r
+\r
+function renderCharMapHTML() {\r
+ var charsPerRow = 20, tdWidth=20, tdHeight=20, i;\r
+ var html = '<table border="0" cellspacing="1" cellpadding="0" width="' + (tdWidth*charsPerRow) + '"><tr height="' + tdHeight + '">';\r
+ var cols=-1;\r
+\r
+ for (i=0; i<charmap.length; i++) {\r
+ if (charmap[i][2]==true) {\r
+ cols++;\r
+ html += ''\r
+ + '<td class="charmap">'\r
+ + '<a onmouseover="previewChar(\'' + charmap[i][1].substring(1,charmap[i][1].length) + '\',\'' + charmap[i][0].substring(1,charmap[i][0].length) + '\',\'' + charmap[i][3] + '\');" onfocus="previewChar(\'' + charmap[i][1].substring(1,charmap[i][1].length) + '\',\'' + charmap[i][0].substring(1,charmap[i][0].length) + '\',\'' + charmap[i][3] + '\');" href="javascript:void(0)" onclick="insertChar(\'' + charmap[i][1].substring(2,charmap[i][1].length-1) + '\');" onclick="return false;" onmousedown="return false;" title="' + charmap[i][3] + '">'\r
+ + charmap[i][1]\r
+ + '</a></td>';\r
+ if ((cols+1) % charsPerRow == 0)\r
+ html += '</tr><tr height="' + tdHeight + '">';\r
+ }\r
+ }\r
+\r
+ if (cols % charsPerRow > 0) {\r
+ var padd = charsPerRow - (cols % charsPerRow);\r
+ for (var i=0; i<padd-1; i++)\r
+ html += '<td width="' + tdWidth + '" height="' + tdHeight + '" class="charmap"> </td>';\r
+ }\r
+\r
+ html += '</tr></table>';\r
+\r
+ return html;\r
+}\r
+\r
+function insertChar(chr) {\r
+ tinyMCEPopup.execCommand('mceInsertContent', false, '&#' + chr + ';');\r
+\r
+ // Refocus in window\r
+ if (tinyMCEPopup.isWindow)\r
+ window.focus();\r
+\r
+ tinyMCEPopup.editor.focus();\r
+ tinyMCEPopup.close();\r
+}\r
+\r
+function previewChar(codeA, codeB, codeN) {\r
+ var elmA = document.getElementById('codeA');\r
+ var elmB = document.getElementById('codeB');\r
+ var elmV = document.getElementById('codeV');\r
+ var elmN = document.getElementById('codeN');\r
+\r
+ if (codeA=='#160;') {\r
+ elmV.innerHTML = '__';\r
+ } else {\r
+ elmV.innerHTML = '&' + codeA;\r
+ }\r
+\r
+ elmB.innerHTML = '&' + codeA;\r
+ elmA.innerHTML = '&' + codeB;\r
+ elmN.innerHTML = codeN;\r
+}\r
--- /dev/null
+tinyMCEPopup.requireLangPack();\r
+\r
+var detail = 50, strhex = "0123456789abcdef", i, isMouseDown = false, isMouseOver = false;\r
+\r
+var colors = [\r
+ "#000000","#000033","#000066","#000099","#0000cc","#0000ff","#330000","#330033",\r
+ "#330066","#330099","#3300cc","#3300ff","#660000","#660033","#660066","#660099",\r
+ "#6600cc","#6600ff","#990000","#990033","#990066","#990099","#9900cc","#9900ff",\r
+ "#cc0000","#cc0033","#cc0066","#cc0099","#cc00cc","#cc00ff","#ff0000","#ff0033",\r
+ "#ff0066","#ff0099","#ff00cc","#ff00ff","#003300","#003333","#003366","#003399",\r
+ "#0033cc","#0033ff","#333300","#333333","#333366","#333399","#3333cc","#3333ff",\r
+ "#663300","#663333","#663366","#663399","#6633cc","#6633ff","#993300","#993333",\r
+ "#993366","#993399","#9933cc","#9933ff","#cc3300","#cc3333","#cc3366","#cc3399",\r
+ "#cc33cc","#cc33ff","#ff3300","#ff3333","#ff3366","#ff3399","#ff33cc","#ff33ff",\r
+ "#006600","#006633","#006666","#006699","#0066cc","#0066ff","#336600","#336633",\r
+ "#336666","#336699","#3366cc","#3366ff","#666600","#666633","#666666","#666699",\r
+ "#6666cc","#6666ff","#996600","#996633","#996666","#996699","#9966cc","#9966ff",\r
+ "#cc6600","#cc6633","#cc6666","#cc6699","#cc66cc","#cc66ff","#ff6600","#ff6633",\r
+ "#ff6666","#ff6699","#ff66cc","#ff66ff","#009900","#009933","#009966","#009999",\r
+ "#0099cc","#0099ff","#339900","#339933","#339966","#339999","#3399cc","#3399ff",\r
+ "#669900","#669933","#669966","#669999","#6699cc","#6699ff","#999900","#999933",\r
+ "#999966","#999999","#9999cc","#9999ff","#cc9900","#cc9933","#cc9966","#cc9999",\r
+ "#cc99cc","#cc99ff","#ff9900","#ff9933","#ff9966","#ff9999","#ff99cc","#ff99ff",\r
+ "#00cc00","#00cc33","#00cc66","#00cc99","#00cccc","#00ccff","#33cc00","#33cc33",\r
+ "#33cc66","#33cc99","#33cccc","#33ccff","#66cc00","#66cc33","#66cc66","#66cc99",\r
+ "#66cccc","#66ccff","#99cc00","#99cc33","#99cc66","#99cc99","#99cccc","#99ccff",\r
+ "#cccc00","#cccc33","#cccc66","#cccc99","#cccccc","#ccccff","#ffcc00","#ffcc33",\r
+ "#ffcc66","#ffcc99","#ffcccc","#ffccff","#00ff00","#00ff33","#00ff66","#00ff99",\r
+ "#00ffcc","#00ffff","#33ff00","#33ff33","#33ff66","#33ff99","#33ffcc","#33ffff",\r
+ "#66ff00","#66ff33","#66ff66","#66ff99","#66ffcc","#66ffff","#99ff00","#99ff33",\r
+ "#99ff66","#99ff99","#99ffcc","#99ffff","#ccff00","#ccff33","#ccff66","#ccff99",\r
+ "#ccffcc","#ccffff","#ffff00","#ffff33","#ffff66","#ffff99","#ffffcc","#ffffff"\r
+];\r
+\r
+var named = {\r
+ '#F0F8FF':'AliceBlue','#FAEBD7':'AntiqueWhite','#00FFFF':'Aqua','#7FFFD4':'Aquamarine','#F0FFFF':'Azure','#F5F5DC':'Beige',\r
+ '#FFE4C4':'Bisque','#000000':'Black','#FFEBCD':'BlanchedAlmond','#0000FF':'Blue','#8A2BE2':'BlueViolet','#A52A2A':'Brown',\r
+ '#DEB887':'BurlyWood','#5F9EA0':'CadetBlue','#7FFF00':'Chartreuse','#D2691E':'Chocolate','#FF7F50':'Coral','#6495ED':'CornflowerBlue',\r
+ '#FFF8DC':'Cornsilk','#DC143C':'Crimson','#00FFFF':'Cyan','#00008B':'DarkBlue','#008B8B':'DarkCyan','#B8860B':'DarkGoldenRod',\r
+ '#A9A9A9':'DarkGray','#A9A9A9':'DarkGrey','#006400':'DarkGreen','#BDB76B':'DarkKhaki','#8B008B':'DarkMagenta','#556B2F':'DarkOliveGreen',\r
+ '#FF8C00':'Darkorange','#9932CC':'DarkOrchid','#8B0000':'DarkRed','#E9967A':'DarkSalmon','#8FBC8F':'DarkSeaGreen','#483D8B':'DarkSlateBlue',\r
+ '#2F4F4F':'DarkSlateGray','#2F4F4F':'DarkSlateGrey','#00CED1':'DarkTurquoise','#9400D3':'DarkViolet','#FF1493':'DeepPink','#00BFFF':'DeepSkyBlue',\r
+ '#696969':'DimGray','#696969':'DimGrey','#1E90FF':'DodgerBlue','#B22222':'FireBrick','#FFFAF0':'FloralWhite','#228B22':'ForestGreen',\r
+ '#FF00FF':'Fuchsia','#DCDCDC':'Gainsboro','#F8F8FF':'GhostWhite','#FFD700':'Gold','#DAA520':'GoldenRod','#808080':'Gray','#808080':'Grey',\r
+ '#008000':'Green','#ADFF2F':'GreenYellow','#F0FFF0':'HoneyDew','#FF69B4':'HotPink','#CD5C5C':'IndianRed','#4B0082':'Indigo','#FFFFF0':'Ivory',\r
+ '#F0E68C':'Khaki','#E6E6FA':'Lavender','#FFF0F5':'LavenderBlush','#7CFC00':'LawnGreen','#FFFACD':'LemonChiffon','#ADD8E6':'LightBlue',\r
+ '#F08080':'LightCoral','#E0FFFF':'LightCyan','#FAFAD2':'LightGoldenRodYellow','#D3D3D3':'LightGray','#D3D3D3':'LightGrey','#90EE90':'LightGreen',\r
+ '#FFB6C1':'LightPink','#FFA07A':'LightSalmon','#20B2AA':'LightSeaGreen','#87CEFA':'LightSkyBlue','#778899':'LightSlateGray','#778899':'LightSlateGrey',\r
+ '#B0C4DE':'LightSteelBlue','#FFFFE0':'LightYellow','#00FF00':'Lime','#32CD32':'LimeGreen','#FAF0E6':'Linen','#FF00FF':'Magenta','#800000':'Maroon',\r
+ '#66CDAA':'MediumAquaMarine','#0000CD':'MediumBlue','#BA55D3':'MediumOrchid','#9370D8':'MediumPurple','#3CB371':'MediumSeaGreen','#7B68EE':'MediumSlateBlue',\r
+ '#00FA9A':'MediumSpringGreen','#48D1CC':'MediumTurquoise','#C71585':'MediumVioletRed','#191970':'MidnightBlue','#F5FFFA':'MintCream','#FFE4E1':'MistyRose','#FFE4B5':'Moccasin',\r
+ '#FFDEAD':'NavajoWhite','#000080':'Navy','#FDF5E6':'OldLace','#808000':'Olive','#6B8E23':'OliveDrab','#FFA500':'Orange','#FF4500':'OrangeRed','#DA70D6':'Orchid',\r
+ '#EEE8AA':'PaleGoldenRod','#98FB98':'PaleGreen','#AFEEEE':'PaleTurquoise','#D87093':'PaleVioletRed','#FFEFD5':'PapayaWhip','#FFDAB9':'PeachPuff',\r
+ '#CD853F':'Peru','#FFC0CB':'Pink','#DDA0DD':'Plum','#B0E0E6':'PowderBlue','#800080':'Purple','#FF0000':'Red','#BC8F8F':'RosyBrown','#4169E1':'RoyalBlue',\r
+ '#8B4513':'SaddleBrown','#FA8072':'Salmon','#F4A460':'SandyBrown','#2E8B57':'SeaGreen','#FFF5EE':'SeaShell','#A0522D':'Sienna','#C0C0C0':'Silver',\r
+ '#87CEEB':'SkyBlue','#6A5ACD':'SlateBlue','#708090':'SlateGray','#708090':'SlateGrey','#FFFAFA':'Snow','#00FF7F':'SpringGreen',\r
+ '#4682B4':'SteelBlue','#D2B48C':'Tan','#008080':'Teal','#D8BFD8':'Thistle','#FF6347':'Tomato','#40E0D0':'Turquoise','#EE82EE':'Violet',\r
+ '#F5DEB3':'Wheat','#FFFFFF':'White','#F5F5F5':'WhiteSmoke','#FFFF00':'Yellow','#9ACD32':'YellowGreen'\r
+};\r
+\r
+function init() {\r
+ var inputColor = convertRGBToHex(tinyMCEPopup.getWindowArg('input_color'));\r
+\r
+ tinyMCEPopup.resizeToInnerSize();\r
+\r
+ generatePicker();\r
+\r
+ if (inputColor) {\r
+ changeFinalColor(inputColor);\r
+\r
+ col = convertHexToRGB(inputColor);\r
+\r
+ if (col)\r
+ updateLight(col.r, col.g, col.b);\r
+ }\r
+}\r
+\r
+function insertAction() {\r
+ var color = document.getElementById("color").value, f = tinyMCEPopup.getWindowArg('func');\r
+\r
+ tinyMCEPopup.restoreSelection();\r
+\r
+ if (f)\r
+ f(color);\r
+\r
+ tinyMCEPopup.close();\r
+}\r
+\r
+function showColor(color, name) {\r
+ if (name)\r
+ document.getElementById("colorname").innerHTML = name;\r
+\r
+ document.getElementById("preview").style.backgroundColor = color;\r
+ document.getElementById("color").value = color.toLowerCase();\r
+}\r
+\r
+function convertRGBToHex(col) {\r
+ var re = new RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)", "gi");\r
+\r
+ if (!col)\r
+ return col;\r
+\r
+ var rgb = col.replace(re, "$1,$2,$3").split(',');\r
+ if (rgb.length == 3) {\r
+ r = parseInt(rgb[0]).toString(16);\r
+ g = parseInt(rgb[1]).toString(16);\r
+ b = parseInt(rgb[2]).toString(16);\r
+\r
+ r = r.length == 1 ? '0' + r : r;\r
+ g = g.length == 1 ? '0' + g : g;\r
+ b = b.length == 1 ? '0' + b : b;\r
+\r
+ return "#" + r + g + b;\r
+ }\r
+\r
+ return col;\r
+}\r
+\r
+function convertHexToRGB(col) {\r
+ if (col.indexOf('#') != -1) {\r
+ col = col.replace(new RegExp('[^0-9A-F]', 'gi'), '');\r
+\r
+ r = parseInt(col.substring(0, 2), 16);\r
+ g = parseInt(col.substring(2, 4), 16);\r
+ b = parseInt(col.substring(4, 6), 16);\r
+\r
+ return {r : r, g : g, b : b};\r
+ }\r
+\r
+ return null;\r
+}\r
+\r
+function generatePicker() {\r
+ var el = document.getElementById('light'), h = '', i;\r
+\r
+ for (i = 0; i < detail; i++){\r
+ h += '<div id="gs'+i+'" style="background-color:#000000; width:15px; height:3px; border-style:none; border-width:0px;"'\r
+ + ' onclick="changeFinalColor(this.style.backgroundColor)"'\r
+ + ' onmousedown="isMouseDown = true; return false;"'\r
+ + ' onmouseup="isMouseDown = false;"'\r
+ + ' onmousemove="if (isMouseDown && isMouseOver) changeFinalColor(this.style.backgroundColor); return false;"'\r
+ + ' onmouseover="isMouseOver = true;"'\r
+ + ' onmouseout="isMouseOver = false;"'\r
+ + '></div>';\r
+ }\r
+\r
+ el.innerHTML = h;\r
+}\r
+\r
+function generateWebColors() {\r
+ var el = document.getElementById('webcolors'), h = '', i;\r
+\r
+ if (el.className == 'generated')\r
+ return;\r
+\r
+ h += '<table border="0" cellspacing="1" cellpadding="0">'\r
+ + '<tr>';\r
+\r
+ for (i=0; i<colors.length; i++) {\r
+ h += '<td bgcolor="' + colors[i] + '" width="10" height="10">'\r
+ + '<a href="javascript:insertAction();" onfocus="showColor(\'' + colors[i] + '\');" onmouseover="showColor(\'' + colors[i] + '\');" style="display:block;width:10px;height:10px;overflow:hidden;">'\r
+ + '</a></td>';\r
+ if ((i+1) % 18 == 0)\r
+ h += '</tr><tr>';\r
+ }\r
+\r
+ h += '</table>';\r
+\r
+ el.innerHTML = h;\r
+ el.className = 'generated';\r
+}\r
+\r
+function generateNamedColors() {\r
+ var el = document.getElementById('namedcolors'), h = '', n, v, i = 0;\r
+\r
+ if (el.className == 'generated')\r
+ return;\r
+\r
+ for (n in named) {\r
+ v = named[n];\r
+ h += '<a href="javascript:insertAction();" onmouseover="showColor(\'' + n + '\',\'' + v + '\');" style="background-color: ' + n + '"><!-- IE --></a>'\r
+ }\r
+\r
+ el.innerHTML = h;\r
+ el.className = 'generated';\r
+}\r
+\r
+function dechex(n) {\r
+ return strhex.charAt(Math.floor(n / 16)) + strhex.charAt(n % 16);\r
+}\r
+\r
+function computeColor(e) {\r
+ var x, y, partWidth, partDetail, imHeight, r, g, b, coef, i, finalCoef, finalR, finalG, finalB;\r
+\r
+ x = e.offsetX ? e.offsetX : (e.target ? e.clientX - e.target.x : 0);\r
+ y = e.offsetY ? e.offsetY : (e.target ? e.clientY - e.target.y : 0);\r
+\r
+ partWidth = document.getElementById('colors').width / 6;\r
+ partDetail = detail / 2;\r
+ imHeight = document.getElementById('colors').height;\r
+\r
+ r = (x >= 0)*(x < partWidth)*255 + (x >= partWidth)*(x < 2*partWidth)*(2*255 - x * 255 / partWidth) + (x >= 4*partWidth)*(x < 5*partWidth)*(-4*255 + x * 255 / partWidth) + (x >= 5*partWidth)*(x < 6*partWidth)*255;\r
+ g = (x >= 0)*(x < partWidth)*(x * 255 / partWidth) + (x >= partWidth)*(x < 3*partWidth)*255 + (x >= 3*partWidth)*(x < 4*partWidth)*(4*255 - x * 255 / partWidth);\r
+ b = (x >= 2*partWidth)*(x < 3*partWidth)*(-2*255 + x * 255 / partWidth) + (x >= 3*partWidth)*(x < 5*partWidth)*255 + (x >= 5*partWidth)*(x < 6*partWidth)*(6*255 - x * 255 / partWidth);\r
+\r
+ coef = (imHeight - y) / imHeight;\r
+ r = 128 + (r - 128) * coef;\r
+ g = 128 + (g - 128) * coef;\r
+ b = 128 + (b - 128) * coef;\r
+\r
+ changeFinalColor('#' + dechex(r) + dechex(g) + dechex(b));\r
+ updateLight(r, g, b);\r
+}\r
+\r
+function updateLight(r, g, b) {\r
+ var i, partDetail = detail / 2, finalCoef, finalR, finalG, finalB, color;\r
+\r
+ for (i=0; i<detail; i++) {\r
+ if ((i>=0) && (i<partDetail)) {\r
+ finalCoef = i / partDetail;\r
+ finalR = dechex(255 - (255 - r) * finalCoef);\r
+ finalG = dechex(255 - (255 - g) * finalCoef);\r
+ finalB = dechex(255 - (255 - b) * finalCoef);\r
+ } else {\r
+ finalCoef = 2 - i / partDetail;\r
+ finalR = dechex(r * finalCoef);\r
+ finalG = dechex(g * finalCoef);\r
+ finalB = dechex(b * finalCoef);\r
+ }\r
+\r
+ color = finalR + finalG + finalB;\r
+\r
+ setCol('gs' + i, '#'+color);\r
+ }\r
+}\r
+\r
+function changeFinalColor(color) {\r
+ if (color.indexOf('#') == -1)\r
+ color = convertRGBToHex(color);\r
+\r
+ setCol('preview', color);\r
+ document.getElementById('color').value = color;\r
+}\r
+\r
+function setCol(e, c) {\r
+ try {\r
+ document.getElementById(e).style.backgroundColor = c;\r
+ } catch (ex) {\r
+ // Ignore IE warning\r
+ }\r
+}\r
+\r
+tinyMCEPopup.onInit.add(init);\r
--- /dev/null
+var ImageDialog = {\r
+ preInit : function() {\r
+ var url;\r
+\r
+ tinyMCEPopup.requireLangPack();\r
+\r
+ if (url = tinyMCEPopup.getParam("external_image_list_url"))\r
+ document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>');\r
+ },\r
+\r
+ init : function() {\r
+ var f = document.forms[0], ed = tinyMCEPopup.editor;\r
+\r
+ // Setup browse button\r
+ document.getElementById('srcbrowsercontainer').innerHTML = getBrowserHTML('srcbrowser','src','image','theme_advanced_image');\r
+ if (isVisible('srcbrowser'))\r
+ document.getElementById('src').style.width = '180px';\r
+\r
+ e = ed.selection.getNode();\r
+\r
+ this.fillFileList('image_list', 'tinyMCEImageList');\r
+\r
+ if (e.nodeName == 'IMG') {\r
+ f.src.value = ed.dom.getAttrib(e, 'src');\r
+ f.alt.value = ed.dom.getAttrib(e, 'alt');\r
+ f.border.value = this.getAttrib(e, 'border');\r
+ f.vspace.value = this.getAttrib(e, 'vspace');\r
+ f.hspace.value = this.getAttrib(e, 'hspace');\r
+ f.width.value = ed.dom.getAttrib(e, 'width');\r
+ f.height.value = ed.dom.getAttrib(e, 'height');\r
+ f.insert.value = ed.getLang('update');\r
+ this.styleVal = ed.dom.getAttrib(e, 'style');\r
+ selectByValue(f, 'image_list', f.src.value);\r
+ selectByValue(f, 'align', this.getAttrib(e, 'align'));\r
+ this.updateStyle();\r
+ }\r
+ },\r
+\r
+ fillFileList : function(id, l) {\r
+ var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;\r
+\r
+ l = window[l];\r
+\r
+ if (l && l.length > 0) {\r
+ lst.options[lst.options.length] = new Option('', '');\r
+\r
+ tinymce.each(l, function(o) {\r
+ lst.options[lst.options.length] = new Option(o[0], o[1]);\r
+ });\r
+ } else\r
+ dom.remove(dom.getParent(id, 'tr'));\r
+ },\r
+\r
+ update : function() {\r
+ var f = document.forms[0], nl = f.elements, ed = tinyMCEPopup.editor, args = {}, el;\r
+\r
+ tinyMCEPopup.restoreSelection();\r
+\r
+ if (f.src.value === '') {\r
+ if (ed.selection.getNode().nodeName == 'IMG') {\r
+ ed.dom.remove(ed.selection.getNode());\r
+ ed.execCommand('mceRepaint');\r
+ }\r
+\r
+ tinyMCEPopup.close();\r
+ return;\r
+ }\r
+\r
+ if (!ed.settings.inline_styles) {\r
+ args = tinymce.extend(args, {\r
+ vspace : nl.vspace.value,\r
+ hspace : nl.hspace.value,\r
+ border : nl.border.value,\r
+ align : getSelectValue(f, 'align')\r
+ });\r
+ } else\r
+ args.style = this.styleVal;\r
+\r
+ tinymce.extend(args, {\r
+ src : f.src.value,\r
+ alt : f.alt.value,\r
+ width : f.width.value,\r
+ height : f.height.value\r
+ });\r
+\r
+ el = ed.selection.getNode();\r
+\r
+ if (el && el.nodeName == 'IMG') {\r
+ ed.dom.setAttribs(el, args);\r
+ } else {\r
+ ed.execCommand('mceInsertContent', false, '<img id="__mce_tmp" />', {skip_undo : 1});\r
+ ed.dom.setAttribs('__mce_tmp', args);\r
+ ed.dom.setAttrib('__mce_tmp', 'id', '');\r
+ ed.undoManager.add();\r
+ }\r
+\r
+ tinyMCEPopup.close();\r
+ },\r
+\r
+ updateStyle : function() {\r
+ var dom = tinyMCEPopup.dom, st, v, f = document.forms[0];\r
+\r
+ if (tinyMCEPopup.editor.settings.inline_styles) {\r
+ st = tinyMCEPopup.dom.parseStyle(this.styleVal);\r
+\r
+ // Handle align\r
+ v = getSelectValue(f, 'align');\r
+ if (v) {\r
+ if (v == 'left' || v == 'right') {\r
+ st['float'] = v;\r
+ delete st['vertical-align'];\r
+ } else {\r
+ st['vertical-align'] = v;\r
+ delete st['float'];\r
+ }\r
+ } else {\r
+ delete st['float'];\r
+ delete st['vertical-align'];\r
+ }\r
+\r
+ // Handle border\r
+ v = f.border.value;\r
+ if (v || v == '0') {\r
+ if (v == '0')\r
+ st['border'] = '0';\r
+ else\r
+ st['border'] = v + 'px solid black';\r
+ } else\r
+ delete st['border'];\r
+\r
+ // Handle hspace\r
+ v = f.hspace.value;\r
+ if (v) {\r
+ delete st['margin'];\r
+ st['margin-left'] = v + 'px';\r
+ st['margin-right'] = v + 'px';\r
+ } else {\r
+ delete st['margin-left'];\r
+ delete st['margin-right'];\r
+ }\r
+\r
+ // Handle vspace\r
+ v = f.vspace.value;\r
+ if (v) {\r
+ delete st['margin'];\r
+ st['margin-top'] = v + 'px';\r
+ st['margin-bottom'] = v + 'px';\r
+ } else {\r
+ delete st['margin-top'];\r
+ delete st['margin-bottom'];\r
+ }\r
+\r
+ // Merge\r
+ st = tinyMCEPopup.dom.parseStyle(dom.serializeStyle(st));\r
+ this.styleVal = dom.serializeStyle(st);\r
+ }\r
+ },\r
+\r
+ getAttrib : function(e, at) {\r
+ var ed = tinyMCEPopup.editor, dom = ed.dom, v, v2;\r
+\r
+ if (ed.settings.inline_styles) {\r
+ switch (at) {\r
+ case 'align':\r
+ if (v = dom.getStyle(e, 'float'))\r
+ return v;\r
+\r
+ if (v = dom.getStyle(e, 'vertical-align'))\r
+ return v;\r
+\r
+ break;\r
+\r
+ case 'hspace':\r
+ v = dom.getStyle(e, 'margin-left')\r
+ v2 = dom.getStyle(e, 'margin-right');\r
+ if (v && v == v2)\r
+ return parseInt(v.replace(/[^0-9]/g, ''));\r
+\r
+ break;\r
+\r
+ case 'vspace':\r
+ v = dom.getStyle(e, 'margin-top')\r
+ v2 = dom.getStyle(e, 'margin-bottom');\r
+ if (v && v == v2)\r
+ return parseInt(v.replace(/[^0-9]/g, ''));\r
+\r
+ break;\r
+\r
+ case 'border':\r
+ v = 0;\r
+\r
+ tinymce.each(['top', 'right', 'bottom', 'left'], function(sv) {\r
+ sv = dom.getStyle(e, 'border-' + sv + '-width');\r
+\r
+ // False or not the same as prev\r
+ if (!sv || (sv != v && v !== 0)) {\r
+ v = 0;\r
+ return false;\r
+ }\r
+\r
+ if (sv)\r
+ v = sv;\r
+ });\r
+\r
+ if (v)\r
+ return parseInt(v.replace(/[^0-9]/g, ''));\r
+\r
+ break;\r
+ }\r
+ }\r
+\r
+ if (v = dom.getAttrib(e, at))\r
+ return v;\r
+\r
+ return '';\r
+ },\r
+\r
+ resetImageData : function() {\r
+ var f = document.forms[0];\r
+\r
+ f.width.value = f.height.value = ""; \r
+ },\r
+\r
+ updateImageData : function() {\r
+ var f = document.forms[0], t = ImageDialog;\r
+\r
+ if (f.width.value == "")\r
+ f.width.value = t.preloadImg.width;\r
+\r
+ if (f.height.value == "")\r
+ f.height.value = t.preloadImg.height;\r
+ },\r
+\r
+ getImageData : function() {\r
+ var f = document.forms[0];\r
+\r
+ this.preloadImg = new Image();\r
+ this.preloadImg.onload = this.updateImageData;\r
+ this.preloadImg.onerror = this.resetImageData;\r
+ this.preloadImg.src = tinyMCEPopup.editor.documentBaseURI.toAbsolute(f.src.value);\r
+ }\r
+};\r
+\r
+ImageDialog.preInit();\r
+tinyMCEPopup.onInit.add(ImageDialog.init, ImageDialog);\r
--- /dev/null
+tinyMCEPopup.requireLangPack();\r
+\r
+var LinkDialog = {\r
+ preInit : function() {\r
+ var url;\r
+\r
+ if (url = tinyMCEPopup.getParam("external_link_list_url"))\r
+ document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>');\r
+ },\r
+\r
+ init : function() {\r
+ var f = document.forms[0], ed = tinyMCEPopup.editor;\r
+\r
+ // Setup browse button\r
+ document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser', 'href', 'file', 'theme_advanced_link');\r
+ if (isVisible('hrefbrowser'))\r
+ document.getElementById('href').style.width = '180px';\r
+\r
+ this.fillClassList('class_list');\r
+ this.fillFileList('link_list', 'tinyMCELinkList');\r
+ this.fillTargetList('target_list');\r
+\r
+ if (e = ed.dom.getParent(ed.selection.getNode(), 'A')) {\r
+ f.href.value = ed.dom.getAttrib(e, 'href');\r
+ f.linktitle.value = ed.dom.getAttrib(e, 'title');\r
+ f.insert.value = ed.getLang('update');\r
+ selectByValue(f, 'link_list', f.href.value);\r
+ selectByValue(f, 'target_list', ed.dom.getAttrib(e, 'target'));\r
+ selectByValue(f, 'class_list', ed.dom.getAttrib(e, 'class'));\r
+ }\r
+ },\r
+\r
+ update : function() {\r
+ var f = document.forms[0], ed = tinyMCEPopup.editor, e, b;\r
+\r
+ tinyMCEPopup.restoreSelection();\r
+ e = ed.dom.getParent(ed.selection.getNode(), 'A');\r
+\r
+ // Remove element if there is no href\r
+ if (!f.href.value) {\r
+ if (e) {\r
+ tinyMCEPopup.execCommand("mceBeginUndoLevel");\r
+ b = ed.selection.getBookmark();\r
+ ed.dom.remove(e, 1);\r
+ ed.selection.moveToBookmark(b);\r
+ tinyMCEPopup.execCommand("mceEndUndoLevel");\r
+ tinyMCEPopup.close();\r
+ return;\r
+ }\r
+ }\r
+\r
+ tinyMCEPopup.execCommand("mceBeginUndoLevel");\r
+\r
+ // Create new anchor elements\r
+ if (e == null) {\r
+ tinyMCEPopup.execCommand("CreateLink", false, "#mce_temp_url#", {skip_undo : 1});\r
+\r
+ tinymce.each(ed.dom.select("a"), function(n) {\r
+ if (ed.dom.getAttrib(n, 'href') == '#mce_temp_url#') {\r
+ e = n;\r
+\r
+ ed.dom.setAttribs(e, {\r
+ href : f.href.value,\r
+ title : f.linktitle.value,\r
+ target : f.target_list ? f.target_list.options[f.target_list.selectedIndex].value : null,\r
+ 'class' : f.class_list ? f.class_list.options[f.class_list.selectedIndex].value : null\r
+ });\r
+ }\r
+ });\r
+ } else {\r
+ ed.dom.setAttribs(e, {\r
+ href : f.href.value,\r
+ title : f.linktitle.value,\r
+ target : f.target_list ? f.target_list.options[f.target_list.selectedIndex].value : null,\r
+ 'class' : f.class_list ? f.class_list.options[f.class_list.selectedIndex].value : null\r
+ });\r
+ }\r
+\r
+ // Don't move caret if selection was image\r
+ if (e.childNodes.length != 1 || e.firstChild.nodeName != 'IMG') {\r
+ ed.focus();\r
+ ed.selection.select(e);\r
+ ed.selection.collapse(0);\r
+ tinyMCEPopup.storeSelection();\r
+ }\r
+\r
+ tinyMCEPopup.execCommand("mceEndUndoLevel");\r
+ tinyMCEPopup.close();\r
+ },\r
+\r
+ checkPrefix : function(n) {\r
+ if (n.value && Validator.isEmail(n) && !/^\s*mailto:/i.test(n.value) && confirm(tinyMCEPopup.getLang('advanced_dlg.link_is_email')))\r
+ n.value = 'mailto:' + n.value;\r
+\r
+ if (/^\s*www./i.test(n.value) && confirm(tinyMCEPopup.getLang('advanced_dlg.link_is_external')))\r
+ n.value = 'http://' + n.value;\r
+ },\r
+\r
+ fillFileList : function(id, l) {\r
+ var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;\r
+\r
+ l = window[l];\r
+\r
+ if (l && l.length > 0) {\r
+ lst.options[lst.options.length] = new Option('', '');\r
+\r
+ tinymce.each(l, function(o) {\r
+ lst.options[lst.options.length] = new Option(o[0], o[1]);\r
+ });\r
+ } else\r
+ dom.remove(dom.getParent(id, 'tr'));\r
+ },\r
+\r
+ fillClassList : function(id) {\r
+ var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;\r
+\r
+ if (v = tinyMCEPopup.getParam('theme_advanced_styles')) {\r
+ cl = [];\r
+\r
+ tinymce.each(v.split(';'), function(v) {\r
+ var p = v.split('=');\r
+\r
+ cl.push({'title' : p[0], 'class' : p[1]});\r
+ });\r
+ } else\r
+ cl = tinyMCEPopup.editor.dom.getClasses();\r
+\r
+ if (cl.length > 0) {\r
+ lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), '');\r
+\r
+ tinymce.each(cl, function(o) {\r
+ lst.options[lst.options.length] = new Option(o.title || o['class'], o['class']);\r
+ });\r
+ } else\r
+ dom.remove(dom.getParent(id, 'tr'));\r
+ },\r
+\r
+ fillTargetList : function(id) {\r
+ var dom = tinyMCEPopup.dom, lst = dom.get(id), v;\r
+\r
+ lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), '');\r
+ lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('advanced_dlg.link_target_same'), '_self');\r
+ lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('advanced_dlg.link_target_blank'), '_blank');\r
+\r
+ if (v = tinyMCEPopup.getParam('theme_advanced_link_targets')) {\r
+ tinymce.each(v.split(','), function(v) {\r
+ v = v.split('=');\r
+ lst.options[lst.options.length] = new Option(v[0], v[1]);\r
+ });\r
+ }\r
+ }\r
+};\r
+\r
+LinkDialog.preInit();\r
+tinyMCEPopup.onInit.add(LinkDialog.init, LinkDialog);\r
--- /dev/null
+tinyMCEPopup.requireLangPack();\r
+tinyMCEPopup.onInit.add(onLoadInit);\r
+\r
+function saveContent() {\r
+ tinyMCEPopup.editor.setContent(document.getElementById('htmlSource').value);\r
+ tinyMCEPopup.close();\r
+}\r
+\r
+function onLoadInit() {\r
+ tinyMCEPopup.resizeToInnerSize();\r
+\r
+ // Remove Gecko spellchecking\r
+ if (tinymce.isGecko)\r
+ document.body.spellcheck = tinyMCEPopup.editor.getParam("gecko_spellcheck");\r
+\r
+ document.getElementById('htmlSource').value = tinyMCEPopup.editor.getContent();\r
+\r
+ if (tinyMCEPopup.editor.getParam("theme_advanced_source_editor_wrap", true)) {\r
+ setWrap('soft');\r
+ document.getElementById('wraped').checked = true;\r
+ }\r
+\r
+ resizeInputs();\r
+}\r
+\r
+function setWrap(val) {\r
+ var v, n, s = document.getElementById('htmlSource');\r
+\r
+ s.wrap = val;\r
+\r
+ if (!tinymce.isIE) {\r
+ v = s.value;\r
+ n = s.cloneNode(false);\r
+ n.setAttribute("wrap", val);\r
+ s.parentNode.replaceChild(n, s);\r
+ n.value = v;\r
+ }\r
+}\r
+\r
+function toggleWordWrap(elm) {\r
+ if (elm.checked)\r
+ setWrap('soft');\r
+ else\r
+ setWrap('off');\r
+}\r
+\r
+var wHeight=0, wWidth=0, owHeight=0, owWidth=0;\r
+\r
+function resizeInputs() {\r
+ var el = document.getElementById('htmlSource');\r
+\r
+ if (!tinymce.isIE) {\r
+ wHeight = self.innerHeight - 65;\r
+ wWidth = self.innerWidth - 16;\r
+ } else {\r
+ wHeight = document.body.clientHeight - 70;\r
+ wWidth = document.body.clientWidth - 16;\r
+ }\r
+\r
+ el.style.height = Math.abs(wHeight) + 'px';\r
+ el.style.width = Math.abs(wWidth) + 'px';\r
+}\r
--- /dev/null
+tinyMCE.addI18n('en.advanced',{\r
+style_select:"Styles",\r
+font_size:"Font size",\r
+fontdefault:"Font family",\r
+block:"Format",\r
+paragraph:"Paragraph",\r
+div:"Div",\r
+address:"Address",\r
+pre:"Preformatted",\r
+h1:"Heading 1",\r
+h2:"Heading 2",\r
+h3:"Heading 3",\r
+h4:"Heading 4",\r
+h5:"Heading 5",\r
+h6:"Heading 6",\r
+blockquote:"Blockquote",\r
+code:"Code",\r
+samp:"Code sample",\r
+dt:"Definition term ",\r
+dd:"Definition description",\r
+bold_desc:"Bold (Ctrl+B)",\r
+italic_desc:"Italic (Ctrl+I)",\r
+underline_desc:"Underline (Ctrl+U)",\r
+striketrough_desc:"Strikethrough",\r
+justifyleft_desc:"Align left",\r
+justifycenter_desc:"Align center",\r
+justifyright_desc:"Align right",\r
+justifyfull_desc:"Align full",\r
+bullist_desc:"Unordered list",\r
+numlist_desc:"Ordered list",\r
+outdent_desc:"Outdent",\r
+indent_desc:"Indent",\r
+undo_desc:"Undo (Ctrl+Z)",\r
+redo_desc:"Redo (Ctrl+Y)",\r
+link_desc:"Insert/edit link",\r
+unlink_desc:"Unlink",\r
+image_desc:"Insert/edit image",\r
+cleanup_desc:"Cleanup messy code",\r
+code_desc:"Edit HTML Source",\r
+sub_desc:"Subscript",\r
+sup_desc:"Superscript",\r
+hr_desc:"Insert horizontal ruler",\r
+removeformat_desc:"Remove formatting",\r
+custom1_desc:"Your custom description here",\r
+forecolor_desc:"Select text color",\r
+backcolor_desc:"Select background color",\r
+charmap_desc:"Insert custom character",\r
+visualaid_desc:"Toggle guidelines/invisible elements",\r
+anchor_desc:"Insert/edit anchor",\r
+cut_desc:"Cut",\r
+copy_desc:"Copy",\r
+paste_desc:"Paste",\r
+image_props_desc:"Image properties",\r
+newdocument_desc:"New document",\r
+help_desc:"Help",\r
+blockquote_desc:"Blockquote",\r
+clipboard_msg:"Copy/Cut/Paste is not available in Mozilla and Firefox.\r\nDo you want more information about this issue?",\r
+path:"Path",\r
+newdocument:"Are you sure you want clear all contents?",\r
+toolbar_focus:"Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X",\r
+more_colors:"More colors"\r
+});
\ No newline at end of file
--- /dev/null
+tinyMCE.addI18n('en.advanced_dlg',{\r
+about_title:"About TinyMCE",\r
+about_general:"About",\r
+about_help:"Help",\r
+about_license:"License",\r
+about_plugins:"Plugins",\r
+about_plugin:"Plugin",\r
+about_author:"Author",\r
+about_version:"Version",\r
+about_loaded:"Loaded plugins",\r
+anchor_title:"Insert/edit anchor",\r
+anchor_name:"Anchor name",\r
+code_title:"HTML Source Editor",\r
+code_wordwrap:"Word wrap",\r
+colorpicker_title:"Select a color",\r
+colorpicker_picker_tab:"Picker",\r
+colorpicker_picker_title:"Color picker",\r
+colorpicker_palette_tab:"Palette",\r
+colorpicker_palette_title:"Palette colors",\r
+colorpicker_named_tab:"Named",\r
+colorpicker_named_title:"Named colors",\r
+colorpicker_color:"Color:",\r
+colorpicker_name:"Name:",\r
+charmap_title:"Select custom character",\r
+image_title:"Insert/edit image",\r
+image_src:"Image URL",\r
+image_alt:"Image description",\r
+image_list:"Image list",\r
+image_border:"Border",\r
+image_dimensions:"Dimensions",\r
+image_vspace:"Vertical space",\r
+image_hspace:"Horizontal space",\r
+image_align:"Alignment",\r
+image_align_baseline:"Baseline",\r
+image_align_top:"Top",\r
+image_align_middle:"Middle",\r
+image_align_bottom:"Bottom",\r
+image_align_texttop:"Text top",\r
+image_align_textbottom:"Text bottom",\r
+image_align_left:"Left",\r
+image_align_right:"Right",\r
+link_title:"Insert/edit link",\r
+link_url:"Link URL",\r
+link_target:"Target",\r
+link_target_same:"Open link in the same window",\r
+link_target_blank:"Open link in a new window",\r
+link_titlefield:"Title",\r
+link_is_email:"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?",\r
+link_is_external:"The URL you entered seems to external link, do you want to add the required http:// prefix?",\r
+link_list:"Link list"\r
+});
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+ <title>{#advanced_dlg.link_title}</title>\r
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
+ <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
+ <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
+ <script type="text/javascript" src="../../utils/validate.js"></script>\r
+ <script type="text/javascript" src="js/link.js"></script>\r
+ <base target="_self" />\r
+</head>\r
+<body id="link" style="display: none">\r
+<form onsubmit="LinkDialog.update();return false;" action="#">\r
+ <div class="tabs">\r
+ <ul>\r
+ <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advanced_dlg.link_title}</a></span></li>\r
+ </ul>\r
+ </div>\r
+\r
+ <div class="panel_wrapper">\r
+ <div id="general_panel" class="panel current">\r
+\r
+ <table border="0" cellpadding="4" cellspacing="0">\r
+ <tr>\r
+ <td nowrap="nowrap"><label for="href">{#advanced_dlg.link_url}</label></td>\r
+ <td><table border="0" cellspacing="0" cellpadding="0"> \r
+ <tr> \r
+ <td><input id="href" name="href" type="text" class="mceFocus" value="" style="width: 200px" onchange="LinkDialog.checkPrefix(this);" /></td> \r
+ <td id="hrefbrowsercontainer"> </td>\r
+ </tr> \r
+ </table></td>\r
+ </tr>\r
+ <tr>\r
+ <td><label for="link_list">{#advanced_dlg.link_list}</label></td>\r
+ <td><select id="link_list" name="link_list" onchange="document.getElementById('href').value=this.options[this.selectedIndex].value;"></select></td>\r
+ </tr>\r
+ <tr>\r
+ <td><label id="targetlistlabel" for="targetlist">{#advanced_dlg.link_target}</label></td>\r
+ <td><select id="target_list" name="target_list"></select></td>\r
+ </tr>\r
+ <tr>\r
+ <td nowrap="nowrap"><label for="linktitle">{#advanced_dlg.link_titlefield}</label></td>\r
+ <td><input id="linktitle" name="linktitle" type="text" value="" style="width: 200px" /></td>\r
+ </tr>\r
+ <tr>\r
+ <td><label for="class_list">{#class_name}</label></td>\r
+ <td><select id="class_list" name="class_list"></select></td>\r
+ </tr>\r
+ </table>\r
+ </div>\r
+ </div>\r
+\r
+ <div class="mceActionPanel">\r
+ <div style="float: left">\r
+ <input type="submit" id="insert" name="insert" value="{#insert}" />\r
+ </div>\r
+\r
+ <div style="float: right">\r
+ <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
+ </div>\r
+ </div>\r
+</form>\r
+</body>\r
+</html>\r
--- /dev/null
+body, td, pre {color:#000; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; margin:8px;}\r
+body {background:#FFF;}\r
+body.mceForceColors {background:#FFF; color:#000;}\r
+h1 {font-size: 2em}\r
+h2 {font-size: 1.5em}\r
+h3 {font-size: 1.17em}\r
+h4 {font-size: 1em}\r
+h5 {font-size: .83em}\r
+h6 {font-size: .75em}\r
+.mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;}\r
+a.mceItemAnchor {width:12px; line-height:6px; overflow:hidden; padding-left:12px; background:url(img/items.gif) no-repeat bottom left;}\r
+img.mceItemAnchor {width:12px; height:12px; background:url(img/items.gif) no-repeat;}\r
+img {border:0;}\r
+table {cursor:default}\r
+table td, table th {cursor:text}\r
+ins {border-bottom:1px solid green; text-decoration: none; color:green}\r
+del {color:red; text-decoration:line-through}\r
+cite {border-bottom:1px dashed blue}\r
+acronym {border-bottom:1px dotted #CCC; cursor:help}\r
+abbr, html\:abbr {border-bottom:1px dashed #CCC; cursor:help}\r
+\r
+/* IE */\r
+* html body {\r
+scrollbar-3dlight-color:#F0F0EE;\r
+scrollbar-arrow-color:#676662;\r
+scrollbar-base-color:#F0F0EE;\r
+scrollbar-darkshadow-color:#DDD;\r
+scrollbar-face-color:#E0E0DD;\r
+scrollbar-highlight-color:#F0F0EE;\r
+scrollbar-shadow-color:#F0F0EE;\r
+scrollbar-track-color:#F5F5F5;\r
+}\r
--- /dev/null
+/* Generic */\r
+body {\r
+font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px;\r
+scrollbar-3dlight-color:#F0F0EE;\r
+scrollbar-arrow-color:#676662;\r
+scrollbar-base-color:#F0F0EE;\r
+scrollbar-darkshadow-color:#DDDDDD;\r
+scrollbar-face-color:#E0E0DD;\r
+scrollbar-highlight-color:#F0F0EE;\r
+scrollbar-shadow-color:#F0F0EE;\r
+scrollbar-track-color:#F5F5F5;\r
+background:#F0F0EE;\r
+padding:0;\r
+margin:8px 8px 0 8px;\r
+}\r
+\r
+html {background:#F0F0EE;}\r
+td {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}\r
+textarea {resize:none;outline:none;}\r
+a:link, a:visited {color:black;}\r
+a:hover {color:#2B6FB6;}\r
+\r
+/* Forms */\r
+fieldset {margin:0; padding:4px; border:1px solid #919B9C; font-family:Verdana, Arial; font-size:10px;}\r
+legend {color:#2B6FB6; font-weight:bold;}\r
+label.msg {display:none;}\r
+label.invalid {color:#EE0000; display:inline;}\r
+input.invalid {border:1px solid #EE0000;}\r
+input {background:#FFF; border:1px solid #CCC;}\r
+input, select, textarea {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}\r
+input, select, textarea {border:1px solid #808080;}\r
+input.radio {border:1px none #000000; background:transparent; vertical-align:middle;}\r
+input.checkbox {border:1px none #000000; background:transparent; vertical-align:middle;}\r
+.input_noborder {border:0;}\r
+\r
+/* Buttons */\r
+#insert, #cancel, input.button, .updateButton {\r
+border:0; margin:0; padding:0;\r
+font-weight:bold;\r
+width:94px; height:26px;\r
+background:url(img/buttons.png) 0 -26px;\r
+cursor:pointer;\r
+padding-bottom:2px;\r
+}\r
+\r
+#insert {background:url(img/buttons.png) 0 -52px;}\r
+#cancel {background:url(img/buttons.png) 0 0;}\r
+\r
+/* Browse */\r
+a.browse span {display:block; width:20px; height:18px; background:url(../../img/icons.gif) -860px 0; border:1px solid #FFF; margin-left:1px;}\r
+.mceOldBoxModel a.browse span {width:22px; height:20px;}\r
+a.browse:hover span {border:1px solid #0A246A; background-color:#B2BBD0;}\r
+a.browse span.disabled {border:1px solid white; -moz-opacity:0.3; opacity:0.3; filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);}\r
+a.browse:hover span.disabled {border:1px solid white; background-color:transparent;}\r
+a.pickcolor span {display:block; width:20px; height:16px; background:url(../../img/icons.gif) -840px 0; margin-left:2px;}\r
+.mceOldBoxModel a.pickcolor span {width:21px; height:17px;}\r
+a.pickcolor:hover span {background-color:#B2BBD0;}\r
+a.pickcolor:hover span.disabled {}\r
+\r
+/* Charmap */\r
+table.charmap {border:1px solid #AAA; text-align:center}\r
+td.charmap, #charmap a {width:18px; height:18px; color:#000; border:1px solid #AAA; text-align:center; font-size:12px; vertical-align:middle; line-height: 18px;}\r
+#charmap a {display:block; color:#000; text-decoration:none; border:0}\r
+#charmap a:hover {background:#CCC;color:#2B6FB6}\r
+#charmap #codeN {font-size:10px; font-family:Arial,Helvetica,sans-serif; text-align:center}\r
+#charmap #codeV {font-size:40px; height:80px; border:1px solid #AAA; text-align:center}\r
+\r
+/* Source */\r
+.wordWrapCode {vertical-align:middle; border:1px none #000000; background:transparent;}\r
+.mceActionPanel {margin-top:5px;}\r
+\r
+/* Tabs classes */\r
+.tabs {width:100%; height:18px; line-height:normal; background:url(img/tabs.gif) repeat-x 0 -72px;}\r
+.tabs ul {margin:0; padding:0; list-style:none;}\r
+.tabs li {float:left; background:url(img/tabs.gif) no-repeat 0 0; margin:0 2px 0 0; padding:0 0 0 10px; line-height:17px; height:18px; display:block;}\r
+.tabs li.current {background:url(img/tabs.gif) no-repeat 0 -18px; margin-right:2px;}\r
+.tabs span {float:left; display:block; background:url(img/tabs.gif) no-repeat right -36px; padding:0px 10px 0 0;}\r
+.tabs .current span {background:url(img/tabs.gif) no-repeat right -54px;}\r
+.tabs a {text-decoration:none; font-family:Verdana, Arial; font-size:10px;}\r
+.tabs a:link, .tabs a:visited, .tabs a:hover {color:black;}\r
+\r
+/* Panels */\r
+.panel_wrapper div.panel {display:none;}\r
+.panel_wrapper div.current {display:block; width:100%; height:300px; overflow:visible;}\r
+.panel_wrapper {border:1px solid #919B9C; border-top:0px; padding:10px; padding-top:5px; clear:both; background:white;}\r
+\r
+/* Columns */\r
+.column {float:left;}\r
+.properties {width:100%;}\r
+.properties .column1 {}\r
+.properties .column2 {text-align:left;}\r
+\r
+/* Titles */\r
+h1, h2, h3, h4 {color:#2B6FB6; margin:0; padding:0; padding-top:5px;}\r
+h3 {font-size:14px;}\r
+.title {font-size:12px; font-weight:bold; color:#2B6FB6;}\r
+\r
+/* Dialog specific */\r
+#link .panel_wrapper, #link div.current {height:125px;}\r
+#image .panel_wrapper, #image div.current {height:200px;}\r
+#plugintable thead {font-weight:bold; background:#DDD;}\r
+#plugintable, #about #plugintable td {border:1px solid #919B9C;}\r
+#plugintable {width:96%; margin-top:10px;}\r
+#pluginscontainer {height:290px; overflow:auto;}\r
+#colorpicker #preview {float:right; width:50px; height:14px;line-height:1px; border:1px solid black; margin-left:5px;}\r
+#colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;}\r
+#colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;}\r
+#colorpicker #light div {overflow:hidden;}\r
+#colorpicker #previewblock {float:right; padding-left:10px; height:20px;}\r
+#colorpicker .panel_wrapper div.current {height:175px;}\r
+#colorpicker #namedcolors {width:150px;}\r
+#colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;}\r
+#colorpicker #colornamecontainer {margin-top:5px;}\r
+#colorpicker #picker_panel fieldset {margin:auto;width:325px;}
\ No newline at end of file
--- /dev/null
+/* Reset */\r
+.defaultSkin table, .defaultSkin tbody, .defaultSkin a, .defaultSkin img, .defaultSkin tr, .defaultSkin div, .defaultSkin td, .defaultSkin iframe, .defaultSkin span, .defaultSkin *, .defaultSkin .mceText {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000; vertical-align:baseline; width:auto; border-collapse:separate; text-align:left}\r
+.defaultSkin a:hover, .defaultSkin a:link, .defaultSkin a:visited, .defaultSkin a:active {text-decoration:none; font-weight:normal; cursor:default; color:#000}\r
+.defaultSkin table td {vertical-align:middle}\r
+\r
+/* Containers */\r
+.defaultSkin table {background:#F0F0EE}\r
+.defaultSkin iframe {display:block; background:#FFF}\r
+.defaultSkin .mceToolbar {height:26px}\r
+.defaultSkin .mceLeft {text-align:left}\r
+.defaultSkin .mceRight {text-align:right}\r
+\r
+/* External */\r
+.defaultSkin .mceExternalToolbar {position:absolute; border:1px solid #CCC; border-bottom:0; display:none;}\r
+.defaultSkin .mceExternalToolbar td.mceToolbar {padding-right:13px;}\r
+.defaultSkin .mceExternalClose {position:absolute; top:3px; right:3px; width:7px; height:7px; background:url(../../img/icons.gif) -820px 0}\r
+\r
+/* Layout */\r
+.defaultSkin table.mceLayout {border:0; border-left:1px solid #CCC; border-right:1px solid #CCC}\r
+.defaultSkin table.mceLayout tr.mceFirst td {border-top:1px solid #CCC}\r
+.defaultSkin table.mceLayout tr.mceLast td {border-bottom:1px solid #CCC}\r
+.defaultSkin table.mceToolbar, .defaultSkin tr.mceFirst .mceToolbar tr td, .defaultSkin tr.mceLast .mceToolbar tr td {border:0; margin:0; padding:0;}\r
+.defaultSkin td.mceToolbar {padding-top:1px; vertical-align:top}\r
+.defaultSkin .mceIframeContainer {border-top:1px solid #CCC; border-bottom:1px solid #CCC}\r
+.defaultSkin .mceStatusbar {font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:9pt; line-height:16px; overflow:visible; color:#000; display:block; height:20px}\r
+.defaultSkin .mceStatusbar div {float:left; margin:2px}\r
+.defaultSkin .mceStatusbar a.mceResize {display:block; float:right; background:url(../../img/icons.gif) -800px 0; width:20px; height:20px; cursor:se-resize}\r
+.defaultSkin .mceStatusbar a:hover {text-decoration:underline}\r
+.defaultSkin table.mceToolbar {margin-left:3px}\r
+.defaultSkin span.mceIcon, .defaultSkin img.mceIcon {display:block; width:20px; height:20px}\r
+.defaultSkin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px}\r
+.defaultSkin td.mceCenter {text-align:center;}\r
+.defaultSkin td.mceCenter table {margin:0 auto; text-align:left;}\r
+.defaultSkin td.mceRight table {margin:0 0 0 auto;}\r
+\r
+/* Button */\r
+.defaultSkin .mceButton {display:block; border:1px solid #F0F0EE; width:20px; height:20px; margin-right:1px}\r
+.defaultSkin a.mceButtonEnabled:hover {border:1px solid #0A246A; background-color:#B2BBD0}\r
+.defaultSkin a.mceButtonActive, .defaultSkin a.mceButtonSelected {border:1px solid #0A246A; background-color:#C2CBE0}\r
+.defaultSkin .mceButtonDisabled .mceIcon {opacity:0.3; filter:alpha(opacity=30)}\r
+.defaultSkin .mceButtonLabeled {width:auto}\r
+.defaultSkin .mceButtonLabeled span.mceIcon {float:left}\r
+.defaultSkin span.mceButtonLabel {display:block; font-size:10px; padding:4px 6px 0 22px; font-family:Tahoma,Verdana,Arial,Helvetica}\r
+.defaultSkin .mceButtonDisabled .mceButtonLabel {color:#888}\r
+\r
+/* Separator */\r
+.defaultSkin .mceSeparator {display:block; background:url(../../img/icons.gif) -180px 0; width:2px; height:20px; margin:2px 2px 0 4px}\r
+\r
+/* ListBox */\r
+.defaultSkin .mceListBox {direction:ltr}\r
+.defaultSkin .mceListBox, .defaultSkin .mceListBox a {display:block}\r
+.defaultSkin .mceListBox .mceText {padding-left:4px; width:70px; text-align:left; border:1px solid #CCC; border-right:0; background:#FFF; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; height:20px; line-height:20px; overflow:hidden}\r
+.defaultSkin .mceListBox .mceOpen {width:9px; height:20px; background:url(../../img/icons.gif) -741px 0; margin-right:2px; border:1px solid #CCC;}\r
+.defaultSkin table.mceListBoxEnabled:hover .mceText, .defaultSkin .mceListBoxHover .mceText, .defaultSkin .mceListBoxSelected .mceText {border:1px solid #A2ABC0; border-right:0; background:#FFF}\r
+.defaultSkin table.mceListBoxEnabled:hover .mceOpen, .defaultSkin .mceListBoxHover .mceOpen, .defaultSkin .mceListBoxSelected .mceOpen {background-color:#FFF; border:1px solid #A2ABC0}\r
+.defaultSkin .mceListBoxDisabled a.mceText {color:gray; background-color:transparent;}\r
+.defaultSkin .mceListBoxMenu {overflow:auto; overflow-x:hidden}\r
+.defaultSkin .mceOldBoxModel .mceListBox .mceText {height:22px}\r
+.defaultSkin .mceOldBoxModel .mceListBox .mceOpen {width:11px; height:22px;}\r
+.defaultSkin select.mceNativeListBox {font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:7pt; background:#F0F0EE; border:1px solid gray; margin-right:2px;}\r
+\r
+/* SplitButton */\r
+.defaultSkin .mceSplitButton {width:32px; height:20px; direction:ltr}\r
+.defaultSkin .mceSplitButton a, .defaultSkin .mceSplitButton span {height:20px; display:block}\r
+.defaultSkin .mceSplitButton a.mceAction {width:20px; border:1px solid #F0F0EE; border-right:0;}\r
+.defaultSkin .mceSplitButton span.mceAction {width:20px; background:url(../../img/icons.gif) 20px 20px;}\r
+.defaultSkin .mceSplitButton a.mceOpen {width:9px; border:1px solid #F0F0EE;}\r
+.defaultSkin .mceSplitButton span.mceOpen {width:9px; background:url(../../img/icons.gif) -741px 0;}\r
+.defaultSkin table.mceSplitButtonEnabled:hover a.mceAction, .defaultSkin .mceSplitButtonHover a.mceAction, .defaultSkin .mceSplitButtonSelected a.mceAction {border:1px solid #0A246A; border-right:0; background-color:#B2BBD0}\r
+.defaultSkin table.mceSplitButtonEnabled:hover a.mceOpen, .defaultSkin .mceSplitButtonHover a.mceOpen, .defaultSkin .mceSplitButtonSelected a.mceOpen {border:1px solid #0A246A;}\r
+.defaultSkin table.mceSplitButtonEnabled:hover span.mceOpen, .defaultSkin .mceSplitButtonHover span.mceOpen, .defaultSkin .mceSplitButtonSelected span.mceOpen {background-color:#B2BBD0}\r
+.defaultSkin .mceSplitButtonDisabled .mceAction, .defaultSkin .mceSplitButtonDisabled span.mceOpen {opacity:0.3; filter:alpha(opacity=30)}\r
+.defaultSkin .mceSplitButtonActive a.mceAction {border:1px solid #0A246A; background-color:#C2CBE0}\r
+.defaultSkin .mceSplitButtonActive a.mceOpen {border-left:0;}\r
+\r
+/* ColorSplitButton */\r
+.defaultSkin div.mceColorSplitMenu table {background:#FFF; border:1px solid gray}\r
+.defaultSkin .mceColorSplitMenu td {padding:2px}\r
+.defaultSkin .mceColorSplitMenu a {display:block; width:9px; height:9px; overflow:hidden; border:1px solid #808080}\r
+.defaultSkin .mceColorSplitMenu td.mceMoreColors {padding:1px 3px 1px 1px}\r
+.defaultSkin .mceColorSplitMenu a.mceMoreColors {width:100%; height:auto; text-align:center; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; line-height:20px; border:1px solid #FFF}\r
+.defaultSkin .mceColorSplitMenu a.mceMoreColors:hover {border:1px solid #0A246A; background-color:#B6BDD2}\r
+.defaultSkin a.mceMoreColors:hover {border:1px solid #0A246A}\r
+.defaultSkin .mceColorPreview {margin-left:2px; width:16px; height:4px; overflow:hidden; background:#9a9b9a}\r
+.defaultSkin .mce_forecolor span.mceAction, .defaultSkin .mce_backcolor span.mceAction {overflow:hidden; height:16px}\r
+\r
+/* Menu */\r
+.defaultSkin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid #D4D0C8}\r
+.defaultSkin .mceNoIcons span.mceIcon {width:0;}\r
+.defaultSkin .mceNoIcons a .mceText {padding-left:10px}\r
+.defaultSkin .mceMenu table {background:#FFF}\r
+.defaultSkin .mceMenu a, .defaultSkin .mceMenu span, .defaultSkin .mceMenu {display:block}\r
+.defaultSkin .mceMenu td {height:20px}\r
+.defaultSkin .mceMenu a {position:relative;padding:3px 0 4px 0}\r
+.defaultSkin .mceMenu .mceText {position:relative; display:block; font-family:Tahoma,Verdana,Arial,Helvetica; color:#000; cursor:default; margin:0; padding:0 25px 0 25px; display:block}\r
+.defaultSkin .mceMenu span.mceText, .defaultSkin .mceMenu .mcePreview {font-size:11px}\r
+.defaultSkin .mceMenu pre.mceText {font-family:Monospace}\r
+.defaultSkin .mceMenu .mceIcon {position:absolute; top:0; left:0; width:22px;}\r
+.defaultSkin .mceMenu .mceMenuItemEnabled a:hover, .defaultSkin .mceMenu .mceMenuItemActive {background-color:#dbecf3}\r
+.defaultSkin td.mceMenuItemSeparator {background:#DDD; height:1px}\r
+.defaultSkin .mceMenuItemTitle a {border:0; background:#EEE; border-bottom:1px solid #DDD}\r
+.defaultSkin .mceMenuItemTitle span.mceText {color:#000; font-weight:bold; padding-left:4px}\r
+.defaultSkin .mceMenuItemDisabled .mceText {color:#888}\r
+.defaultSkin .mceMenuItemSelected .mceIcon {background:url(img/menu_check.gif)}\r
+.defaultSkin .mceNoIcons .mceMenuItemSelected a {background:url(img/menu_arrow.gif) no-repeat -6px center}\r
+.defaultSkin .mceMenu span.mceMenuLine {display:none}\r
+.defaultSkin .mceMenuItemSub a {background:url(img/menu_arrow.gif) no-repeat top right;}\r
+\r
+/* Progress,Resize */\r
+.defaultSkin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; filter:alpha(opacity=50); background:#FFF}\r
+.defaultSkin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px}\r
+.defaultSkin .mcePlaceHolder {border:1px dotted gray}\r
+\r
+/* Formats */\r
+.defaultSkin .mce_formatPreview a {font-size:10px}\r
+.defaultSkin .mce_p span.mceText {}\r
+.defaultSkin .mce_address span.mceText {font-style:italic}\r
+.defaultSkin .mce_pre span.mceText {font-family:monospace}\r
+.defaultSkin .mce_h1 span.mceText {font-weight:bolder; font-size: 2em}\r
+.defaultSkin .mce_h2 span.mceText {font-weight:bolder; font-size: 1.5em}\r
+.defaultSkin .mce_h3 span.mceText {font-weight:bolder; font-size: 1.17em}\r
+.defaultSkin .mce_h4 span.mceText {font-weight:bolder; font-size: 1em}\r
+.defaultSkin .mce_h5 span.mceText {font-weight:bolder; font-size: .83em}\r
+.defaultSkin .mce_h6 span.mceText {font-weight:bolder; font-size: .75em}\r
+\r
+/* Theme */\r
+.defaultSkin span.mce_bold {background-position:0 0}\r
+.defaultSkin span.mce_italic {background-position:-60px 0}\r
+.defaultSkin span.mce_underline {background-position:-140px 0}\r
+.defaultSkin span.mce_strikethrough {background-position:-120px 0}\r
+.defaultSkin span.mce_undo {background-position:-160px 0}\r
+.defaultSkin span.mce_redo {background-position:-100px 0}\r
+.defaultSkin span.mce_cleanup {background-position:-40px 0}\r
+.defaultSkin span.mce_bullist {background-position:-20px 0}\r
+.defaultSkin span.mce_numlist {background-position:-80px 0}\r
+.defaultSkin span.mce_justifyleft {background-position:-460px 0}\r
+.defaultSkin span.mce_justifyright {background-position:-480px 0}\r
+.defaultSkin span.mce_justifycenter {background-position:-420px 0}\r
+.defaultSkin span.mce_justifyfull {background-position:-440px 0}\r
+.defaultSkin span.mce_anchor {background-position:-200px 0}\r
+.defaultSkin span.mce_indent {background-position:-400px 0}\r
+.defaultSkin span.mce_outdent {background-position:-540px 0}\r
+.defaultSkin span.mce_link {background-position:-500px 0}\r
+.defaultSkin span.mce_unlink {background-position:-640px 0}\r
+.defaultSkin span.mce_sub {background-position:-600px 0}\r
+.defaultSkin span.mce_sup {background-position:-620px 0}\r
+.defaultSkin span.mce_removeformat {background-position:-580px 0}\r
+.defaultSkin span.mce_newdocument {background-position:-520px 0}\r
+.defaultSkin span.mce_image {background-position:-380px 0}\r
+.defaultSkin span.mce_help {background-position:-340px 0}\r
+.defaultSkin span.mce_code {background-position:-260px 0}\r
+.defaultSkin span.mce_hr {background-position:-360px 0}\r
+.defaultSkin span.mce_visualaid {background-position:-660px 0}\r
+.defaultSkin span.mce_charmap {background-position:-240px 0}\r
+.defaultSkin span.mce_paste {background-position:-560px 0}\r
+.defaultSkin span.mce_copy {background-position:-700px 0}\r
+.defaultSkin span.mce_cut {background-position:-680px 0}\r
+.defaultSkin span.mce_blockquote {background-position:-220px 0}\r
+.defaultSkin .mce_forecolor span.mceAction {background-position:-720px 0}\r
+.defaultSkin .mce_backcolor span.mceAction {background-position:-760px 0}\r
+.defaultSkin span.mce_forecolorpicker {background-position:-720px 0}\r
+.defaultSkin span.mce_backcolorpicker {background-position:-760px 0}\r
+\r
+/* Plugins */\r
+.defaultSkin span.mce_advhr {background-position:-0px -20px}\r
+.defaultSkin span.mce_ltr {background-position:-20px -20px}\r
+.defaultSkin span.mce_rtl {background-position:-40px -20px}\r
+.defaultSkin span.mce_emotions {background-position:-60px -20px}\r
+.defaultSkin span.mce_fullpage {background-position:-80px -20px}\r
+.defaultSkin span.mce_fullscreen {background-position:-100px -20px}\r
+.defaultSkin span.mce_iespell {background-position:-120px -20px}\r
+.defaultSkin span.mce_insertdate {background-position:-140px -20px}\r
+.defaultSkin span.mce_inserttime {background-position:-160px -20px}\r
+.defaultSkin span.mce_absolute {background-position:-180px -20px}\r
+.defaultSkin span.mce_backward {background-position:-200px -20px}\r
+.defaultSkin span.mce_forward {background-position:-220px -20px}\r
+.defaultSkin span.mce_insert_layer {background-position:-240px -20px}\r
+.defaultSkin span.mce_insertlayer {background-position:-260px -20px}\r
+.defaultSkin span.mce_movebackward {background-position:-280px -20px}\r
+.defaultSkin span.mce_moveforward {background-position:-300px -20px}\r
+.defaultSkin span.mce_media {background-position:-320px -20px}\r
+.defaultSkin span.mce_nonbreaking {background-position:-340px -20px}\r
+.defaultSkin span.mce_pastetext {background-position:-360px -20px}\r
+.defaultSkin span.mce_pasteword {background-position:-380px -20px}\r
+.defaultSkin span.mce_selectall {background-position:-400px -20px}\r
+.defaultSkin span.mce_preview {background-position:-420px -20px}\r
+.defaultSkin span.mce_print {background-position:-440px -20px}\r
+.defaultSkin span.mce_cancel {background-position:-460px -20px}\r
+.defaultSkin span.mce_save {background-position:-480px -20px}\r
+.defaultSkin span.mce_replace {background-position:-500px -20px}\r
+.defaultSkin span.mce_search {background-position:-520px -20px}\r
+.defaultSkin span.mce_styleprops {background-position:-560px -20px}\r
+.defaultSkin span.mce_table {background-position:-580px -20px}\r
+.defaultSkin span.mce_cell_props {background-position:-600px -20px}\r
+.defaultSkin span.mce_delete_table {background-position:-620px -20px}\r
+.defaultSkin span.mce_delete_col {background-position:-640px -20px}\r
+.defaultSkin span.mce_delete_row {background-position:-660px -20px}\r
+.defaultSkin span.mce_col_after {background-position:-680px -20px}\r
+.defaultSkin span.mce_col_before {background-position:-700px -20px}\r
+.defaultSkin span.mce_row_after {background-position:-720px -20px}\r
+.defaultSkin span.mce_row_before {background-position:-740px -20px}\r
+.defaultSkin span.mce_merge_cells {background-position:-760px -20px}\r
+.defaultSkin span.mce_table_props {background-position:-980px -20px}\r
+.defaultSkin span.mce_row_props {background-position:-780px -20px}\r
+.defaultSkin span.mce_split_cells {background-position:-800px -20px}\r
+.defaultSkin span.mce_template {background-position:-820px -20px}\r
+.defaultSkin span.mce_visualchars {background-position:-840px -20px}\r
+.defaultSkin span.mce_abbr {background-position:-860px -20px}\r
+.defaultSkin span.mce_acronym {background-position:-880px -20px}\r
+.defaultSkin span.mce_attribs {background-position:-900px -20px}\r
+.defaultSkin span.mce_cite {background-position:-920px -20px}\r
+.defaultSkin span.mce_del {background-position:-940px -20px}\r
+.defaultSkin span.mce_ins {background-position:-960px -20px}\r
+.defaultSkin span.mce_pagebreak {background-position:0 -40px}\r
+.defaultSkin .mce_spellchecker span.mceAction {background-position:-540px -20px}\r
--- /dev/null
+body, td, pre {color:#000; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; margin:8px;}\r
+body {background:#FFF;}\r
+body.mceForceColors {background:#FFF; color:#000;}\r
+h1 {font-size: 2em}\r
+h2 {font-size: 1.5em}\r
+h3 {font-size: 1.17em}\r
+h4 {font-size: 1em}\r
+h5 {font-size: .83em}\r
+h6 {font-size: .75em}\r
+.mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;}\r
+a.mceItemAnchor {width:12px; line-height:6px; overflow:hidden; padding-left:12px; background:url(../default/img/items.gif) no-repeat bottom left;}\r
+img.mceItemAnchor {width:12px; height:12px; background:url(../default/img/items.gif) no-repeat;}\r
+img {border:0;}\r
+table {cursor:default}\r
+table td, table th {cursor:text}\r
+ins {border-bottom:1px solid green; text-decoration: none; color:green}\r
+del {color:red; text-decoration:line-through}\r
+cite {border-bottom:1px dashed blue}\r
+acronym {border-bottom:1px dotted #CCC; cursor:help}\r
+abbr, html\:abbr {border-bottom:1px dashed #CCC; cursor:help}\r
+\r
+/* IE */\r
+* html body {\r
+scrollbar-3dlight-color:#F0F0EE;\r
+scrollbar-arrow-color:#676662;\r
+scrollbar-base-color:#F0F0EE;\r
+scrollbar-darkshadow-color:#DDD;\r
+scrollbar-face-color:#E0E0DD;\r
+scrollbar-highlight-color:#F0F0EE;\r
+scrollbar-shadow-color:#F0F0EE;\r
+scrollbar-track-color:#F5F5F5;\r
+}\r
--- /dev/null
+/* Generic */\r
+body {\r
+font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px;\r
+scrollbar-3dlight-color:#F0F0EE;\r
+scrollbar-arrow-color:#676662;\r
+scrollbar-base-color:#F0F0EE;\r
+scrollbar-darkshadow-color:#DDDDDD;\r
+scrollbar-face-color:#E0E0DD;\r
+scrollbar-highlight-color:#F0F0EE;\r
+scrollbar-shadow-color:#F0F0EE;\r
+scrollbar-track-color:#F5F5F5;\r
+background:#F0F0EE;\r
+padding:0;\r
+margin:8px 8px 0 8px;\r
+}\r
+\r
+html {background:#F0F0EE;}\r
+td {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}\r
+textarea {resize:none;outline:none;}\r
+a:link, a:visited {color:black;}\r
+a:hover {color:#2B6FB6;}\r
+\r
+/* Forms */\r
+fieldset {margin:0; padding:4px; border:1px solid #919B9C; font-family:Verdana, Arial; font-size:10px;}\r
+legend {color:#2B6FB6; font-weight:bold;}\r
+label.msg {display:none;}\r
+label.invalid {color:#EE0000; display:inline;}\r
+input.invalid {border:1px solid #EE0000;}\r
+input {background:#FFF; border:1px solid #CCC;}\r
+input, select, textarea {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}\r
+input, select, textarea {border:1px solid #808080;}\r
+input.radio {border:1px none #000000; background:transparent; vertical-align:middle;}\r
+input.checkbox {border:1px none #000000; background:transparent; vertical-align:middle;}\r
+.input_noborder {border:0;}\r
+\r
+/* Buttons */\r
+#insert, #cancel, input.button, .updateButton {\r
+border:0; margin:0; padding:0;\r
+font-weight:bold;\r
+width:94px; height:26px;\r
+background:url(../default/img/buttons.png) 0 -26px;\r
+cursor:pointer;\r
+padding-bottom:2px;\r
+}\r
+\r
+#insert {background:url(../default/img/buttons.png) 0 -52px;}\r
+#cancel {background:url(../default/img/buttons.png) 0 0;}\r
+\r
+/* Browse */\r
+a.browse span {display:block; width:20px; height:18px; background:url(../../img/icons.gif) -860px 0; border:1px solid #FFF; margin-left:1px;}\r
+.mceOldBoxModel a.browse span {width:22px; height:20px;}\r
+a.browse:hover span {border:1px solid #0A246A; background-color:#B2BBD0;}\r
+a.browse span.disabled {border:1px solid white; -moz-opacity:0.3; opacity:0.3; filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);}\r
+a.browse:hover span.disabled {border:1px solid white; background-color:transparent;}\r
+a.pickcolor span {display:block; width:20px; height:16px; background:url(../../img/icons.gif) -840px 0; margin-left:2px;}\r
+.mceOldBoxModel a.pickcolor span {width:21px; height:17px;}\r
+a.pickcolor:hover span {background-color:#B2BBD0;}\r
+a.pickcolor:hover span.disabled {}\r
+\r
+/* Charmap */\r
+table.charmap {border:1px solid #AAA; text-align:center}\r
+td.charmap, #charmap a {width:18px; height:18px; color:#000; border:1px solid #AAA; text-align:center; font-size:12px; vertical-align:middle; line-height: 18px;}\r
+#charmap a {display:block; color:#000; text-decoration:none; border:0}\r
+#charmap a:hover {background:#CCC;color:#2B6FB6}\r
+#charmap #codeN {font-size:10px; font-family:Arial,Helvetica,sans-serif; text-align:center}\r
+#charmap #codeV {font-size:40px; height:80px; border:1px solid #AAA; text-align:center}\r
+\r
+/* Source */\r
+.wordWrapCode {vertical-align:middle; border:1px none #000000; background:transparent;}\r
+.mceActionPanel {margin-top:5px;}\r
+\r
+/* Tabs classes */\r
+.tabs {width:100%; height:18px; line-height:normal; background:url(../default/img/tabs.gif) repeat-x 0 -72px;}\r
+.tabs ul {margin:0; padding:0; list-style:none;}\r
+.tabs li {float:left; background:url(../default/img/tabs.gif) no-repeat 0 0; margin:0 2px 0 0; padding:0 0 0 10px; line-height:17px; height:18px; display:block;}\r
+.tabs li.current {background:url(../default/img/tabs.gif) no-repeat 0 -18px; margin-right:2px;}\r
+.tabs span {float:left; display:block; background:url(../default/img/tabs.gif) no-repeat right -36px; padding:0px 10px 0 0;}\r
+.tabs .current span {background:url(../default/img/tabs.gif) no-repeat right -54px;}\r
+.tabs a {text-decoration:none; font-family:Verdana, Arial; font-size:10px;}\r
+.tabs a:link, .tabs a:visited, .tabs a:hover {color:black;}\r
+\r
+/* Panels */\r
+.panel_wrapper div.panel {display:none;}\r
+.panel_wrapper div.current {display:block; width:100%; height:300px; overflow:visible;}\r
+.panel_wrapper {border:1px solid #919B9C; border-top:0px; padding:10px; padding-top:5px; clear:both; background:white;}\r
+\r
+/* Columns */\r
+.column {float:left;}\r
+.properties {width:100%;}\r
+.properties .column1 {}\r
+.properties .column2 {text-align:left;}\r
+\r
+/* Titles */\r
+h1, h2, h3, h4 {color:#2B6FB6; margin:0; padding:0; padding-top:5px;}\r
+h3 {font-size:14px;}\r
+.title {font-size:12px; font-weight:bold; color:#2B6FB6;}\r
+\r
+/* Dialog specific */\r
+#link .panel_wrapper, #link div.current {height:125px;}\r
+#image .panel_wrapper, #image div.current {height:200px;}\r
+#plugintable thead {font-weight:bold; background:#DDD;}\r
+#plugintable, #about #plugintable td {border:1px solid #919B9C;}\r
+#plugintable {width:96%; margin-top:10px;}\r
+#pluginscontainer {height:290px; overflow:auto;}\r
+#colorpicker #preview {float:right; width:50px; height:14px;line-height:1px; border:1px solid black; margin-left:5px;}\r
+#colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;}\r
+#colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;}\r
+#colorpicker #light div {overflow:hidden;}\r
+#colorpicker #previewblock {float:right; padding-left:10px; height:20px;}\r
+#colorpicker .panel_wrapper div.current {height:175px;}\r
+#colorpicker #namedcolors {width:150px;}\r
+#colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;}\r
+#colorpicker #colornamecontainer {margin-top:5px;}\r
--- /dev/null
+/* Reset */\r
+.o2k7Skin table, .o2k7Skin tbody, .o2k7Skin a, .o2k7Skin img, .o2k7Skin tr, .o2k7Skin div, .o2k7Skin td, .o2k7Skin iframe, .o2k7Skin span, .o2k7Skin *, .o2k7Skin .mceText {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000; vertical-align:baseline; width:auto; border-collapse:separate; text-align:left}\r
+.o2k7Skin a:hover, .o2k7Skin a:link, .o2k7Skin a:visited, .o2k7Skin a:active {text-decoration:none; font-weight:normal; cursor:default; color:#000}\r
+.o2k7Skin table td {vertical-align:middle}\r
+\r
+/* Containers */\r
+.o2k7Skin table {background:#E5EFFD}\r
+.o2k7Skin iframe {display:block; background:#FFF}\r
+.o2k7Skin .mceToolbar {height:26px}\r
+\r
+/* External */\r
+.o2k7Skin .mceExternalToolbar {position:absolute; border:1px solid #ABC6DD; border-bottom:0; display:none}\r
+.o2k7Skin .mceExternalToolbar td.mceToolbar {padding-right:13px;}\r
+.o2k7Skin .mceExternalClose {position:absolute; top:3px; right:3px; width:7px; height:7px; background:url(../../img/icons.gif) -820px 0}\r
+\r
+/* Layout */\r
+.o2k7Skin table.mceLayout {border:0; border-left:1px solid #ABC6DD; border-right:1px solid #ABC6DD}\r
+.o2k7Skin table.mceLayout tr.mceFirst td {border-top:1px solid #ABC6DD}\r
+.o2k7Skin table.mceLayout tr.mceLast td {border-bottom:1px solid #ABC6DD}\r
+.o2k7Skin table.mceToolbar, .o2k7Skin tr.mceFirst .mceToolbar tr td, .o2k7Skin tr.mceLast .mceToolbar tr td {border:0; margin:0; padding:0}\r
+.o2k7Skin .mceIframeContainer {border-top:1px solid #ABC6DD; border-bottom:1px solid #ABC6DD}\r
+.o2k7Skin .mceStatusbar {display:block; font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:9pt; line-height:16px; overflow:visible; color:#000; height:20px}\r
+.o2k7Skin .mceStatusbar div {float:left; padding:2px}\r
+.o2k7Skin .mceStatusbar a.mceResize {display:block; float:right; background:url(../../img/icons.gif) -800px 0; width:20px; height:20px; cursor:se-resize}\r
+.o2k7Skin .mceStatusbar a:hover {text-decoration:underline}\r
+.o2k7Skin table.mceToolbar {margin-left:3px}\r
+.o2k7Skin .mceToolbar .mceToolbarStart span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px; margin-left:3px;}\r
+.o2k7Skin .mceToolbar td.mceFirst span {margin:0}\r
+.o2k7Skin .mceToolbar .mceToolbarEnd span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px}\r
+.o2k7Skin .mceToolbar .mceToolbarEndListBox span, .o2k7Skin .mceToolbar .mceToolbarStartListBox span {display:none}\r
+.o2k7Skin span.mceIcon, .o2k7Skin img.mceIcon {display:block; width:20px; height:20px}\r
+.o2k7Skin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px}\r
+.o2k7Skin td.mceCenter {text-align:center;}\r
+.o2k7Skin td.mceCenter table {margin:0 auto; text-align:left;}\r
+.o2k7Skin td.mceRight table {margin:0 0 0 auto;}\r
+\r
+/* Button */\r
+.o2k7Skin .mceButton {display:block; background:url(img/button_bg.png); width:22px; height:22px}\r
+.o2k7Skin a.mceButton span, .o2k7Skin a.mceButton img {margin-left:1px}\r
+.o2k7Skin .mceOldBoxModel a.mceButton span, .o2k7Skin .mceOldBoxModel a.mceButton img {margin:0 0 0 1px}\r
+.o2k7Skin a.mceButtonEnabled:hover {background-color:#B2BBD0; background-position:0 -22px}\r
+.o2k7Skin a.mceButtonActive, .o2k7Skin a.mceButtonSelected {background-position:0 -44px}\r
+.o2k7Skin .mceButtonDisabled .mceIcon {opacity:0.3; filter:alpha(opacity=30)}\r
+.o2k7Skin .mceButtonLabeled {width:auto}\r
+.o2k7Skin .mceButtonLabeled span.mceIcon {float:left}\r
+.o2k7Skin span.mceButtonLabel {display:block; font-size:10px; padding:4px 6px 0 22px; font-family:Tahoma,Verdana,Arial,Helvetica}\r
+.o2k7Skin .mceButtonDisabled .mceButtonLabel {color:#888}\r
+\r
+/* Separator */\r
+.o2k7Skin .mceSeparator {display:block; background:url(img/button_bg.png) -22px 0; width:5px; height:22px}\r
+\r
+/* ListBox */\r
+.o2k7Skin .mceListBox {margin-left:3px}\r
+.o2k7Skin .mceListBox, .o2k7Skin .mceListBox a {display:block}\r
+.o2k7Skin .mceListBox .mceText {padding-left:4px; text-align:left; width:70px; border:1px solid #b3c7e1; border-right:0; background:#eaf2fb; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; height:20px; line-height:20px; overflow:hidden}\r
+.o2k7Skin .mceListBox .mceOpen {width:14px; height:22px; background:url(img/button_bg.png) -66px 0}\r
+.o2k7Skin table.mceListBoxEnabled:hover .mceText, .o2k7Skin .mceListBoxHover .mceText, .o2k7Skin .mceListBoxSelected .mceText {background:#FFF}\r
+.o2k7Skin table.mceListBoxEnabled:hover .mceOpen, .o2k7Skin .mceListBoxHover .mceOpen, .o2k7Skin .mceListBoxSelected .mceOpen {background-position:-66px -22px}\r
+.o2k7Skin .mceListBoxDisabled .mceText {color:gray}\r
+.o2k7Skin .mceListBoxMenu {overflow:auto; overflow-x:hidden}\r
+.o2k7Skin .mceOldBoxModel .mceListBox .mceText {height:22px}\r
+.o2k7Skin select.mceListBox {font-family:Tahoma,Verdana,Arial,Helvetica; font-size:12px; border:1px solid #b3c7e1; background:#FFF;}\r
+\r
+/* SplitButton */\r
+.o2k7Skin .mceSplitButton, .o2k7Skin .mceSplitButton a, .o2k7Skin .mceSplitButton span {display:block; height:22px}\r
+.o2k7Skin .mceSplitButton {background:url(img/button_bg.png)}\r
+.o2k7Skin .mceSplitButton a.mceAction {width:22px}\r
+.o2k7Skin .mceSplitButton span.mceAction {width:22px; background:url(../../img/icons.gif) 20px 20px}\r
+.o2k7Skin .mceSplitButton a.mceOpen {width:10px}\r
+.o2k7Skin .mceSplitButton span.mceOpen {width:10px; background:url(img/button_bg.png) -44px 0}\r
+.o2k7Skin table.mceSplitButtonEnabled:hover a.mceAction, .o2k7Skin .mceSplitButtonHover a.mceAction, .o2k7Skin .mceSplitButtonSelected {background:url(img/button_bg.png) 0 -22px}\r
+.o2k7Skin table.mceSplitButtonEnabled:hover span.mceOpen, .o2k7Skin .mceSplitButtonHover span.mceOpen, .o2k7Skin .mceSplitButtonSelected span.mceOpen {background-position:-44px -44px}\r
+.o2k7Skin .mceSplitButtonDisabled .mceAction {opacity:0.3; filter:alpha(opacity=30)}\r
+.o2k7Skin .mceSplitButtonActive {background-position:0 -44px}\r
+\r
+/* ColorSplitButton */\r
+.o2k7Skin div.mceColorSplitMenu table {background:#FFF; border:1px solid gray}\r
+.o2k7Skin .mceColorSplitMenu td {padding:2px}\r
+.o2k7Skin .mceColorSplitMenu a {display:block; width:9px; height:9px; overflow:hidden; border:1px solid #808080}\r
+.o2k7Skin .mceColorSplitMenu td.mceMoreColors {padding:1px 3px 1px 1px}\r
+.o2k7Skin .mceColorSplitMenu a.mceMoreColors {width:100%; height:auto; text-align:center; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; line-height:20px; border:1px solid #FFF}\r
+.o2k7Skin .mceColorSplitMenu a.mceMoreColors:hover {border:1px solid #0A246A; background-color:#B6BDD2}\r
+.o2k7Skin a.mceMoreColors:hover {border:1px solid #0A246A}\r
+.o2k7Skin .mceColorPreview {margin-left:2px; width:16px; height:4px; overflow:hidden; background:#9a9b9a;overflow:hidden}\r
+.o2k7Skin .mce_forecolor span.mceAction, .o2k7Skin .mce_backcolor span.mceAction {height:15px;overflow:hidden}\r
+\r
+/* Menu */\r
+.o2k7Skin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid #ABC6DD}\r
+.o2k7Skin .mceNoIcons span.mceIcon {width:0;}\r
+.o2k7Skin .mceNoIcons a .mceText {padding-left:10px}\r
+.o2k7Skin .mceMenu table {background:#FFF}\r
+.o2k7Skin .mceMenu a, .o2k7Skin .mceMenu span, .o2k7Skin .mceMenu {display:block}\r
+.o2k7Skin .mceMenu td {height:20px}\r
+.o2k7Skin .mceMenu a {position:relative;padding:3px 0 4px 0}\r
+.o2k7Skin .mceMenu .mceText {position:relative; display:block; font-family:Tahoma,Verdana,Arial,Helvetica; color:#000; cursor:default; margin:0; padding:0 25px 0 25px; display:block}\r
+.o2k7Skin .mceMenu span.mceText, .o2k7Skin .mceMenu .mcePreview {font-size:11px}\r
+.o2k7Skin .mceMenu pre.mceText {font-family:Monospace}\r
+.o2k7Skin .mceMenu .mceIcon {position:absolute; top:0; left:0; width:22px;}\r
+.o2k7Skin .mceMenu .mceMenuItemEnabled a:hover, .o2k7Skin .mceMenu .mceMenuItemActive {background-color:#dbecf3}\r
+.o2k7Skin td.mceMenuItemSeparator {background:#DDD; height:1px}\r
+.o2k7Skin .mceMenuItemTitle a {border:0; background:#E5EFFD; border-bottom:1px solid #ABC6DD}\r
+.o2k7Skin .mceMenuItemTitle span.mceText {color:#000; font-weight:bold; padding-left:4px}\r
+.o2k7Skin .mceMenuItemDisabled .mceText {color:#888}\r
+.o2k7Skin .mceMenuItemSelected .mceIcon {background:url(../default/img/menu_check.gif)}\r
+.o2k7Skin .mceNoIcons .mceMenuItemSelected a {background:url(../default/img/menu_arrow.gif) no-repeat -6px center}\r
+.o2k7Skin .mceMenu span.mceMenuLine {display:none}\r
+.o2k7Skin .mceMenuItemSub a {background:url(../default/img/menu_arrow.gif) no-repeat top right;}\r
+\r
+/* Progress,Resize */\r
+.o2k7Skin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; filter:alpha(opacity=50); background:#FFF}\r
+.o2k7Skin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(../default/img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px}\r
+.o2k7Skin .mcePlaceHolder {border:1px dotted gray}\r
+\r
+/* Formats */\r
+.o2k7Skin .mce_formatPreview a {font-size:10px}\r
+.o2k7Skin .mce_p span.mceText {}\r
+.o2k7Skin .mce_address span.mceText {font-style:italic}\r
+.o2k7Skin .mce_pre span.mceText {font-family:monospace}\r
+.o2k7Skin .mce_h1 span.mceText {font-weight:bolder; font-size: 2em}\r
+.o2k7Skin .mce_h2 span.mceText {font-weight:bolder; font-size: 1.5em}\r
+.o2k7Skin .mce_h3 span.mceText {font-weight:bolder; font-size: 1.17em}\r
+.o2k7Skin .mce_h4 span.mceText {font-weight:bolder; font-size: 1em}\r
+.o2k7Skin .mce_h5 span.mceText {font-weight:bolder; font-size: .83em}\r
+.o2k7Skin .mce_h6 span.mceText {font-weight:bolder; font-size: .75em}\r
+\r
+/* Theme */\r
+.o2k7Skin span.mce_bold {background-position:0 0}\r
+.o2k7Skin span.mce_italic {background-position:-60px 0}\r
+.o2k7Skin span.mce_underline {background-position:-140px 0}\r
+.o2k7Skin span.mce_strikethrough {background-position:-120px 0}\r
+.o2k7Skin span.mce_undo {background-position:-160px 0}\r
+.o2k7Skin span.mce_redo {background-position:-100px 0}\r
+.o2k7Skin span.mce_cleanup {background-position:-40px 0}\r
+.o2k7Skin span.mce_bullist {background-position:-20px 0}\r
+.o2k7Skin span.mce_numlist {background-position:-80px 0}\r
+.o2k7Skin span.mce_justifyleft {background-position:-460px 0}\r
+.o2k7Skin span.mce_justifyright {background-position:-480px 0}\r
+.o2k7Skin span.mce_justifycenter {background-position:-420px 0}\r
+.o2k7Skin span.mce_justifyfull {background-position:-440px 0}\r
+.o2k7Skin span.mce_anchor {background-position:-200px 0}\r
+.o2k7Skin span.mce_indent {background-position:-400px 0}\r
+.o2k7Skin span.mce_outdent {background-position:-540px 0}\r
+.o2k7Skin span.mce_link {background-position:-500px 0}\r
+.o2k7Skin span.mce_unlink {background-position:-640px 0}\r
+.o2k7Skin span.mce_sub {background-position:-600px 0}\r
+.o2k7Skin span.mce_sup {background-position:-620px 0}\r
+.o2k7Skin span.mce_removeformat {background-position:-580px 0}\r
+.o2k7Skin span.mce_newdocument {background-position:-520px 0}\r
+.o2k7Skin span.mce_image {background-position:-380px 0}\r
+.o2k7Skin span.mce_help {background-position:-340px 0}\r
+.o2k7Skin span.mce_code {background-position:-260px 0}\r
+.o2k7Skin span.mce_hr {background-position:-360px 0}\r
+.o2k7Skin span.mce_visualaid {background-position:-660px 0}\r
+.o2k7Skin span.mce_charmap {background-position:-240px 0}\r
+.o2k7Skin span.mce_paste {background-position:-560px 0}\r
+.o2k7Skin span.mce_copy {background-position:-700px 0}\r
+.o2k7Skin span.mce_cut {background-position:-680px 0}\r
+.o2k7Skin span.mce_blockquote {background-position:-220px 0}\r
+.o2k7Skin .mce_forecolor span.mceAction {background-position:-720px 0}\r
+.o2k7Skin .mce_backcolor span.mceAction {background-position:-760px 0}\r
+.o2k7Skin span.mce_forecolorpicker {background-position:-720px 0}\r
+.o2k7Skin span.mce_backcolorpicker {background-position:-760px 0}\r
+\r
+/* Plugins */\r
+.o2k7Skin span.mce_advhr {background-position:-0px -20px}\r
+.o2k7Skin span.mce_ltr {background-position:-20px -20px}\r
+.o2k7Skin span.mce_rtl {background-position:-40px -20px}\r
+.o2k7Skin span.mce_emotions {background-position:-60px -20px}\r
+.o2k7Skin span.mce_fullpage {background-position:-80px -20px}\r
+.o2k7Skin span.mce_fullscreen {background-position:-100px -20px}\r
+.o2k7Skin span.mce_iespell {background-position:-120px -20px}\r
+.o2k7Skin span.mce_insertdate {background-position:-140px -20px}\r
+.o2k7Skin span.mce_inserttime {background-position:-160px -20px}\r
+.o2k7Skin span.mce_absolute {background-position:-180px -20px}\r
+.o2k7Skin span.mce_backward {background-position:-200px -20px}\r
+.o2k7Skin span.mce_forward {background-position:-220px -20px}\r
+.o2k7Skin span.mce_insert_layer {background-position:-240px -20px}\r
+.o2k7Skin span.mce_insertlayer {background-position:-260px -20px}\r
+.o2k7Skin span.mce_movebackward {background-position:-280px -20px}\r
+.o2k7Skin span.mce_moveforward {background-position:-300px -20px}\r
+.o2k7Skin span.mce_media {background-position:-320px -20px}\r
+.o2k7Skin span.mce_nonbreaking {background-position:-340px -20px}\r
+.o2k7Skin span.mce_pastetext {background-position:-360px -20px}\r
+.o2k7Skin span.mce_pasteword {background-position:-380px -20px}\r
+.o2k7Skin span.mce_selectall {background-position:-400px -20px}\r
+.o2k7Skin span.mce_preview {background-position:-420px -20px}\r
+.o2k7Skin span.mce_print {background-position:-440px -20px}\r
+.o2k7Skin span.mce_cancel {background-position:-460px -20px}\r
+.o2k7Skin span.mce_save {background-position:-480px -20px}\r
+.o2k7Skin span.mce_replace {background-position:-500px -20px}\r
+.o2k7Skin span.mce_search {background-position:-520px -20px}\r
+.o2k7Skin span.mce_styleprops {background-position:-560px -20px}\r
+.o2k7Skin span.mce_table {background-position:-580px -20px}\r
+.o2k7Skin span.mce_cell_props {background-position:-600px -20px}\r
+.o2k7Skin span.mce_delete_table {background-position:-620px -20px}\r
+.o2k7Skin span.mce_delete_col {background-position:-640px -20px}\r
+.o2k7Skin span.mce_delete_row {background-position:-660px -20px}\r
+.o2k7Skin span.mce_col_after {background-position:-680px -20px}\r
+.o2k7Skin span.mce_col_before {background-position:-700px -20px}\r
+.o2k7Skin span.mce_row_after {background-position:-720px -20px}\r
+.o2k7Skin span.mce_row_before {background-position:-740px -20px}\r
+.o2k7Skin span.mce_merge_cells {background-position:-760px -20px}\r
+.o2k7Skin span.mce_table_props {background-position:-980px -20px}\r
+.o2k7Skin span.mce_row_props {background-position:-780px -20px}\r
+.o2k7Skin span.mce_split_cells {background-position:-800px -20px}\r
+.o2k7Skin span.mce_template {background-position:-820px -20px}\r
+.o2k7Skin span.mce_visualchars {background-position:-840px -20px}\r
+.o2k7Skin span.mce_abbr {background-position:-860px -20px}\r
+.o2k7Skin span.mce_acronym {background-position:-880px -20px}\r
+.o2k7Skin span.mce_attribs {background-position:-900px -20px}\r
+.o2k7Skin span.mce_cite {background-position:-920px -20px}\r
+.o2k7Skin span.mce_del {background-position:-940px -20px}\r
+.o2k7Skin span.mce_ins {background-position:-960px -20px}\r
+.o2k7Skin span.mce_pagebreak {background-position:0 -40px}\r
+.o2k7Skin .mce_spellchecker span.mceAction {background-position:-540px -20px}\r
--- /dev/null
+/* Black */\r
+.o2k7SkinBlack .mceToolbar .mceToolbarStart span, .o2k7SkinBlack .mceToolbar .mceToolbarEnd span, .o2k7SkinBlack .mceButton, .o2k7SkinBlack .mceSplitButton, .o2k7SkinBlack .mceSeparator, .o2k7SkinBlack .mceSplitButton span.mceOpen, .o2k7SkinBlack .mceListBox .mceOpen {background-image:url(img/button_bg_black.png)}\r
+.o2k7SkinBlack table, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack .mceMenuItemTitle span.mceText, .o2k7SkinBlack .mceStatusbar div, .o2k7SkinBlack .mceStatusbar span, .o2k7SkinBlack .mceStatusbar a {background:#535353; color:#FFF}\r
+.o2k7SkinBlack table.mceListBoxEnabled .mceText, o2k7SkinBlack .mceListBox .mceText {background:#FFF; border:1px solid #CBCFD4; border-bottom-color:#989FA9; border-right:0}\r
+.o2k7SkinBlack table.mceListBoxEnabled:hover .mceText, .o2k7Skin .mceListBoxHover .mceText, .o2k7Skin .mceListBoxSelected .mceText {background:#FFF; border:1px solid #FFBD69; border-right:0}\r
+.o2k7SkinBlack .mceExternalToolbar, .o2k7SkinBlack .mceListBox .mceText, .o2k7SkinBlack div.mceMenu, .o2k7SkinBlack table.mceLayout, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack table.mceLayout tr.mceFirst td, .o2k7SkinBlack table.mceLayout, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack table.mceLayout tr.mceLast td, .o2k7SkinBlack .mceIframeContainer {border-color: #535353;}\r
+.o2k7SkinBlack table.mceSplitButtonEnabled:hover a.mceAction, .o2k7Skin .mceSplitButtonHover a.mceAction, .o2k7Skin .mceSplitButtonSelected {background-image:url(img/button_bg_black.png)}\r
+.o2k7SkinBlack .mceMenu .mceMenuItemEnabled a:hover, .o2k7Skin .mceMenu .mceMenuItemActive {background-color:#FFE7A1}
\ No newline at end of file
--- /dev/null
+/* Silver */\r
+.o2k7SkinSilver .mceToolbar .mceToolbarStart span, .o2k7SkinSilver .mceButton, .o2k7SkinSilver .mceSplitButton, .o2k7SkinSilver .mceSeparator, .o2k7SkinSilver .mceSplitButton span.mceOpen, .o2k7SkinSilver .mceListBox .mceOpen {background-image:url(img/button_bg_silver.png)}\r
+.o2k7SkinSilver table, .o2k7SkinSilver .mceMenuItemTitle a {background:#eee}\r
+.o2k7SkinSilver .mceListBox .mceText {background:#FFF}\r
+.o2k7SkinSilver .mceExternalToolbar, .o2k7SkinSilver .mceListBox .mceText, .o2k7SkinSilver div.mceMenu, .o2k7SkinSilver table.mceLayout, .o2k7SkinSilver .mceMenuItemTitle a, .o2k7SkinSilver table.mceLayout tr.mceFirst td, .o2k7SkinSilver table.mceLayout, .o2k7SkinSilver .mceMenuItemTitle a, .o2k7SkinSilver table.mceLayout tr.mceLast td, .o2k7SkinSilver .mceIframeContainer {border-color: #bbb}\r
--- /dev/null
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />\r
+ <title>{#advanced_dlg.code_title}</title>\r
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
+ <script type="text/javascript" src="js/source_editor.js"></script>\r
+ <base target="_self" />\r
+</head>\r
+<body onresize="resizeInputs();" style="display:none; overflow:hidden;">\r
+ <form name="source" onsubmit="saveContent();return false;" action="#">\r
+ <div style="float: left" class="title">{#advanced_dlg.code_title}</div>\r
+\r
+ <div id="wrapline" style="float: right">\r
+ <input type="checkbox" name="wraped" id="wraped" onclick="toggleWordWrap(this);" class="wordWrapCode" /><label for="wraped">{#advanced_dlg.code_wordwrap}</label>\r
+ </div>\r
+\r
+ <br style="clear: both" />\r
+\r
+ <textarea name="htmlSource" id="htmlSource" rows="15" cols="100" style="width: 100%; height: 100%; font-family: 'Courier New',Courier,monospace; font-size: 12px;" dir="ltr" wrap="off" class="mceFocus"></textarea>\r
+\r
+ <div class="mceActionPanel">\r
+ <div style="float: left">\r
+ <input type="submit" name="insert" value="{#update}" id="insert" />\r
+ </div>\r
+\r
+ <div style="float: right">\r
+ <input type="button" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" id="cancel" />\r
+ </div>\r
+ </div>\r
+ </form>\r
+</body>\r
+</html>\r
--- /dev/null
+(function(){var DOM=tinymce.DOM;tinymce.ThemeManager.requireLangPack('simple');tinymce.create('tinymce.themes.SimpleTheme',{init:function(ed,url){var t=this,states=['Bold','Italic','Underline','Strikethrough','InsertUnorderedList','InsertOrderedList'],s=ed.settings;t.editor=ed;ed.onInit.add(function(){ed.onNodeChange.add(function(ed,cm){tinymce.each(states,function(c){cm.get(c.toLowerCase()).setActive(ed.queryCommandState(c));});});ed.dom.loadCSS(url+"/skins/"+s.skin+"/content.css");});DOM.loadCSS((s.editor_css?ed.baseURI.toAbsolute(s.editor_css):'')||url+"/skins/"+s.skin+"/ui.css");},renderUI:function(o){var t=this,n=o.targetNode,ic,tb,ed=t.editor,cf=ed.controlManager,sc;n=DOM.insertAfter(DOM.create('span',{id:ed.id+'_container','class':'mceEditor '+ed.settings.skin+'SimpleSkin'}),n);n=sc=DOM.add(n,'table',{cellPadding:0,cellSpacing:0,'class':'mceLayout'});n=tb=DOM.add(n,'tbody');n=DOM.add(tb,'tr');n=ic=DOM.add(DOM.add(n,'td'),'div',{'class':'mceIframeContainer'});n=DOM.add(DOM.add(tb,'tr',{'class':'last'}),'td',{'class':'mceToolbar mceLast',align:'center'});tb=t.toolbar=cf.createToolbar("tools1");tb.add(cf.createButton('bold',{title:'simple.bold_desc',cmd:'Bold'}));tb.add(cf.createButton('italic',{title:'simple.italic_desc',cmd:'Italic'}));tb.add(cf.createButton('underline',{title:'simple.underline_desc',cmd:'Underline'}));tb.add(cf.createButton('strikethrough',{title:'simple.striketrough_desc',cmd:'Strikethrough'}));tb.add(cf.createSeparator());tb.add(cf.createButton('undo',{title:'simple.undo_desc',cmd:'Undo'}));tb.add(cf.createButton('redo',{title:'simple.redo_desc',cmd:'Redo'}));tb.add(cf.createSeparator());tb.add(cf.createButton('cleanup',{title:'simple.cleanup_desc',cmd:'mceCleanup'}));tb.add(cf.createSeparator());tb.add(cf.createButton('insertunorderedlist',{title:'simple.bullist_desc',cmd:'InsertUnorderedList'}));tb.add(cf.createButton('insertorderedlist',{title:'simple.numlist_desc',cmd:'InsertOrderedList'}));tb.renderTo(n);return{iframeContainer:ic,editorContainer:ed.id+'_container',sizeContainer:sc,deltaHeight:-20};},getInfo:function(){return{longname:'Simple theme',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.ThemeManager.add('simple',tinymce.themes.SimpleTheme);})();
\ No newline at end of file
--- /dev/null
+/**\r
+ * $Id: editor_template_src.js 752 2008-03-27 21:51:25Z spocke $\r
+ *\r
+ * This file is meant to showcase how to create a simple theme. The advanced\r
+ * theme is more suitable for production use.\r
+ *\r
+ * @author Moxiecode\r
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+(function() {\r
+ var DOM = tinymce.DOM;\r
+\r
+ // Tell it to load theme specific language pack(s)\r
+ tinymce.ThemeManager.requireLangPack('simple');\r
+\r
+ tinymce.create('tinymce.themes.SimpleTheme', {\r
+ init : function(ed, url) {\r
+ var t = this, states = ['Bold', 'Italic', 'Underline', 'Strikethrough', 'InsertUnorderedList', 'InsertOrderedList'], s = ed.settings;\r
+\r
+ t.editor = ed;\r
+\r
+ ed.onInit.add(function() {\r
+ ed.onNodeChange.add(function(ed, cm) {\r
+ tinymce.each(states, function(c) {\r
+ cm.get(c.toLowerCase()).setActive(ed.queryCommandState(c));\r
+ });\r
+ });\r
+\r
+ ed.dom.loadCSS(url + "/skins/" + s.skin + "/content.css");\r
+ });\r
+\r
+ DOM.loadCSS((s.editor_css ? ed.baseURI.toAbsolute(s.editor_css) : '') || url + "/skins/" + s.skin + "/ui.css");\r
+ },\r
+\r
+ renderUI : function(o) {\r
+ var t = this, n = o.targetNode, ic, tb, ed = t.editor, cf = ed.controlManager, sc;\r
+\r
+ n = DOM.insertAfter(DOM.create('span', {id : ed.id + '_container', 'class' : 'mceEditor ' + ed.settings.skin + 'SimpleSkin'}), n);\r
+ n = sc = DOM.add(n, 'table', {cellPadding : 0, cellSpacing : 0, 'class' : 'mceLayout'});\r
+ n = tb = DOM.add(n, 'tbody');\r
+\r
+ // Create iframe container\r
+ n = DOM.add(tb, 'tr');\r
+ n = ic = DOM.add(DOM.add(n, 'td'), 'div', {'class' : 'mceIframeContainer'});\r
+\r
+ // Create toolbar container\r
+ n = DOM.add(DOM.add(tb, 'tr', {'class' : 'last'}), 'td', {'class' : 'mceToolbar mceLast', align : 'center'});\r
+\r
+ // Create toolbar\r
+ tb = t.toolbar = cf.createToolbar("tools1");\r
+ tb.add(cf.createButton('bold', {title : 'simple.bold_desc', cmd : 'Bold'}));\r
+ tb.add(cf.createButton('italic', {title : 'simple.italic_desc', cmd : 'Italic'}));\r
+ tb.add(cf.createButton('underline', {title : 'simple.underline_desc', cmd : 'Underline'}));\r
+ tb.add(cf.createButton('strikethrough', {title : 'simple.striketrough_desc', cmd : 'Strikethrough'}));\r
+ tb.add(cf.createSeparator());\r
+ tb.add(cf.createButton('undo', {title : 'simple.undo_desc', cmd : 'Undo'}));\r
+ tb.add(cf.createButton('redo', {title : 'simple.redo_desc', cmd : 'Redo'}));\r
+ tb.add(cf.createSeparator());\r
+ tb.add(cf.createButton('cleanup', {title : 'simple.cleanup_desc', cmd : 'mceCleanup'}));\r
+ tb.add(cf.createSeparator());\r
+ tb.add(cf.createButton('insertunorderedlist', {title : 'simple.bullist_desc', cmd : 'InsertUnorderedList'}));\r
+ tb.add(cf.createButton('insertorderedlist', {title : 'simple.numlist_desc', cmd : 'InsertOrderedList'}));\r
+ tb.renderTo(n);\r
+\r
+ return {\r
+ iframeContainer : ic,\r
+ editorContainer : ed.id + '_container',\r
+ sizeContainer : sc,\r
+ deltaHeight : -20\r
+ };\r
+ },\r
+\r
+ getInfo : function() {\r
+ return {\r
+ longname : 'Simple theme',\r
+ author : 'Moxiecode Systems AB',\r
+ authorurl : 'http://tinymce.moxiecode.com',\r
+ version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+ }\r
+ }\r
+ });\r
+\r
+ tinymce.ThemeManager.add('simple', tinymce.themes.SimpleTheme);\r
+})();
\ No newline at end of file
--- /dev/null
+tinyMCE.addI18n('en.simple',{\r
+bold_desc:"Bold (Ctrl+B)",\r
+italic_desc:"Italic (Ctrl+I)",\r
+underline_desc:"Underline (Ctrl+U)",\r
+striketrough_desc:"Strikethrough",\r
+bullist_desc:"Unordered list",\r
+numlist_desc:"Ordered list",\r
+undo_desc:"Undo (Ctrl+Z)",\r
+redo_desc:"Redo (Ctrl+Y)",\r
+cleanup_desc:"Cleanup messy code"\r
+});
\ No newline at end of file
--- /dev/null
+body, td, pre {\r
+ font-family: Verdana, Arial, Helvetica, sans-serif;\r
+ font-size: 10px;\r
+}\r
+\r
+body {\r
+ background-color: #FFFFFF;\r
+}\r
+\r
+.mceVisualAid {\r
+ border: 1px dashed #BBBBBB;\r
+}\r
+\r
+/* MSIE specific */\r
+\r
+* html body {\r
+ scrollbar-3dlight-color: #F0F0EE;\r
+ scrollbar-arrow-color: #676662;\r
+ scrollbar-base-color: #F0F0EE;\r
+ scrollbar-darkshadow-color: #DDDDDD;\r
+ scrollbar-face-color: #E0E0DD;\r
+ scrollbar-highlight-color: #F0F0EE;\r
+ scrollbar-shadow-color: #F0F0EE;\r
+ scrollbar-track-color: #F5F5F5; \r
+}\r
--- /dev/null
+/* Reset */\r
+.defaultSimpleSkin table, .defaultSimpleSkin tbody, .defaultSimpleSkin a, .defaultSimpleSkin img, .defaultSimpleSkin tr, .defaultSimpleSkin div, .defaultSimpleSkin td, .defaultSimpleSkin iframe, .defaultSimpleSkin span, .defaultSimpleSkin * {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000}\r
+\r
+/* Containers */\r
+.defaultSimpleSkin {position:relative}\r
+.defaultSimpleSkin table.mceLayout {background:#F0F0EE; border:1px solid #CCC;}\r
+.defaultSimpleSkin iframe {display:block; background:#FFF; border-bottom:1px solid #CCC;}\r
+.defaultSimpleSkin .mceToolbar {height:24px;}\r
+\r
+/* Layout */\r
+.defaultSimpleSkin span.mceIcon, .defaultSimpleSkin img.mceIcon {display:block; width:20px; height:20px}\r
+.defaultSimpleSkin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px}\r
+\r
+/* Button */\r
+.defaultSimpleSkin .mceButton {display:block; border:1px solid #F0F0EE; width:20px; height:20px}\r
+.defaultSimpleSkin a.mceButtonEnabled:hover {border:1px solid #0A246A; background-color:#B2BBD0}\r
+.defaultSimpleSkin a.mceButtonActive {border:1px solid #0A246A; background-color:#C2CBE0}\r
+.defaultSimpleSkin .mceButtonDisabled span {opacity:0.3; filter:alpha(opacity=30)}\r
+\r
+/* Separator */\r
+.defaultSimpleSkin .mceSeparator {display:block; background:url(../../img/icons.gif) -180px 0; width:2px; height:20px; margin:0 2px 0 4px}\r
+\r
+/* Theme */\r
+.defaultSimpleSkin span.mce_bold {background-position:0 0}\r
+.defaultSimpleSkin span.mce_italic {background-position:-60px 0}\r
+.defaultSimpleSkin span.mce_underline {background-position:-140px 0}\r
+.defaultSimpleSkin span.mce_strikethrough {background-position:-120px 0}\r
+.defaultSimpleSkin span.mce_undo {background-position:-160px 0}\r
+.defaultSimpleSkin span.mce_redo {background-position:-100px 0}\r
+.defaultSimpleSkin span.mce_cleanup {background-position:-40px 0}\r
+.defaultSimpleSkin span.mce_insertunorderedlist {background-position:-20px 0}\r
+.defaultSimpleSkin span.mce_insertorderedlist {background-position:-80px 0}\r
--- /dev/null
+body, td, pre {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}\r
+\r
+body {background: #FFF;}\r
+.mceVisualAid {border: 1px dashed #BBB;}\r
+\r
+/* IE */\r
+\r
+* html body {\r
+scrollbar-3dlight-color: #F0F0EE;\r
+scrollbar-arrow-color: #676662;\r
+scrollbar-base-color: #F0F0EE;\r
+scrollbar-darkshadow-color: #DDDDDD;\r
+scrollbar-face-color: #E0E0DD;\r
+scrollbar-highlight-color: #F0F0EE;\r
+scrollbar-shadow-color: #F0F0EE;\r
+scrollbar-track-color: #F5F5F5; \r
+}\r
--- /dev/null
+/* Reset */\r
+.o2k7SimpleSkin table, .o2k7SimpleSkin tbody, .o2k7SimpleSkin a, .o2k7SimpleSkin img, .o2k7SimpleSkin tr, .o2k7SimpleSkin div, .o2k7SimpleSkin td, .o2k7SimpleSkin iframe, .o2k7SimpleSkin span, .o2k7SimpleSkin * {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000}\r
+\r
+/* Containers */\r
+.o2k7SimpleSkin {position:relative}\r
+.o2k7SimpleSkin table.mceLayout {background:#E5EFFD; border:1px solid #ABC6DD;}\r
+.o2k7SimpleSkin iframe {display:block; background:#FFF; border-bottom:1px solid #ABC6DD;}\r
+.o2k7SimpleSkin .mceToolbar {height:26px;}\r
+\r
+/* Layout */\r
+.o2k7SimpleSkin .mceToolbar .mceToolbarStart span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px; }\r
+.o2k7SimpleSkin .mceToolbar .mceToolbarEnd span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px}\r
+.o2k7SimpleSkin span.mceIcon, .o2k7SimpleSkin img.mceIcon {display:block; width:20px; height:20px}\r
+.o2k7SimpleSkin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px}\r
+\r
+/* Button */\r
+.o2k7SimpleSkin .mceButton {display:block; background:url(img/button_bg.png); width:22px; height:22px}\r
+.o2k7SimpleSkin a.mceButton span, .o2k7SimpleSkin a.mceButton img {margin:1px 0 0 1px}\r
+.o2k7SimpleSkin a.mceButtonEnabled:hover {background-color:#B2BBD0; background-position:0 -22px}\r
+.o2k7SimpleSkin a.mceButtonActive {background-position:0 -44px}\r
+.o2k7SimpleSkin .mceButtonDisabled span {opacity:0.3; filter:alpha(opacity=30)}\r
+\r
+/* Separator */\r
+.o2k7SimpleSkin .mceSeparator {display:block; background:url(img/button_bg.png) -22px 0; width:5px; height:22px}\r
+\r
+/* Theme */\r
+.o2k7SimpleSkin span.mce_bold {background-position:0 0}\r
+.o2k7SimpleSkin span.mce_italic {background-position:-60px 0}\r
+.o2k7SimpleSkin span.mce_underline {background-position:-140px 0}\r
+.o2k7SimpleSkin span.mce_strikethrough {background-position:-120px 0}\r
+.o2k7SimpleSkin span.mce_undo {background-position:-160px 0}\r
+.o2k7SimpleSkin span.mce_redo {background-position:-100px 0}\r
+.o2k7SimpleSkin span.mce_cleanup {background-position:-40px 0}\r
+.o2k7SimpleSkin span.mce_insertunorderedlist {background-position:-20px 0}\r
+.o2k7SimpleSkin span.mce_insertorderedlist {background-position:-80px 0}\r
--- /dev/null
+var tinymce={majorVersion:'3',minorVersion:'1.1',releaseDate:'2008-08-18',_init:function(){var t=this,d=document,w=window,na=navigator,ua=na.userAgent,i,nl,n,base,p,v;t.isOpera=w.opera&&opera.buildNumber;t.isWebKit=/WebKit/.test(ua);t.isOldWebKit=t.isWebKit&&!w.getSelection().getRangeAt;t.isIE=!t.isWebKit&&!t.isOpera&&(/MSIE/gi).test(ua)&&(/Explorer/gi).test(na.appName);t.isIE6=t.isIE&&/MSIE [56]/.test(ua);t.isGecko=!t.isWebKit&&/Gecko/.test(ua);t.isMac=ua.indexOf('Mac')!=-1;if(w.tinyMCEPreInit){t.suffix=tinyMCEPreInit.suffix;t.baseURL=tinyMCEPreInit.base;t.query=tinyMCEPreInit.query;return;}t.suffix='';nl=d.getElementsByTagName('base');for(i=0;i<nl.length;i++){if(v=nl[i].href){if(/^https?:\/\/[^\/]+$/.test(v))v+='/';base=v?v.match(/.*\//)[0]:'';}}function getBase(n){if(n.src&&/tiny_mce(|_dev|_src|_gzip|_jquery|_prototype).js/.test(n.src)){if(/_(src|dev)\.js/g.test(n.src))t.suffix='_src';if((p=n.src.indexOf('?'))!=-1)t.query=n.src.substring(p+1);t.baseURL=n.src.substring(0,n.src.lastIndexOf('/'));if(base&&t.baseURL.indexOf('://')==-1)t.baseURL=base+t.baseURL;return t.baseURL;}return null;};nl=d.getElementsByTagName('script');for(i=0;i<nl.length;i++){if(getBase(nl[i]))return;}n=d.getElementsByTagName('head')[0];if(n){nl=n.getElementsByTagName('script');for(i=0;i<nl.length;i++){if(getBase(nl[i]))return;}}return;},is:function(o,t){var n=typeof(o);if(!t)return n!='undefined';if(t=='array'&&(o instanceof Array))return true;return n==t;},each:function(o,cb,s){var n,l;if(!o)return 0;s=s||o;if(typeof(o.length)!='undefined'){for(n=0,l=o.length;n<l;n++){if(cb.call(s,o[n],n,o)===false)return 0;}}else{for(n in o){if(o.hasOwnProperty(n)){if(cb.call(s,o[n],n,o)===false)return 0;}}}return 1;},map:function(a,f){var o=[];tinymce.each(a,function(v){o.push(f(v));});return o;},grep:function(a,f){var o=[];tinymce.each(a,function(v){if(!f||f(v))o.push(v);});return o;},inArray:function(a,v){var i,l;if(a){for(i=0,l=a.length;i<l;i++){if(a[i]===v)return i;}}return-1;},extend:function(o,e){var i,a=arguments;for(i=1;i<a.length;i++){e=a[i];tinymce.each(e,function(v,n){if(typeof(v)!=='undefined')o[n]=v;});}return o;},trim:function(s){return(s?''+s:'').replace(/^\s*|\s*$/g,'');},create:function(s,p){var t=this,sp,ns,cn,scn,c,de=0;s=/^((static) )?([\w.]+)(:([\w.]+))?/.exec(s);cn=s[3].match(/(^|\.)(\w+)$/i)[2];ns=t.createNS(s[3].replace(/\.\w+$/,''));if(ns[cn])return;if(s[2]=='static'){ns[cn]=p;if(this.onCreate)this.onCreate(s[2],s[3],ns[cn]);return;}if(!p[cn]){p[cn]=function(){};de=1;}ns[cn]=p[cn];t.extend(ns[cn].prototype,p);if(s[5]){sp=t.resolve(s[5]).prototype;scn=s[5].match(/\.(\w+)$/i)[1];c=ns[cn];if(de){ns[cn]=function(){return sp[scn].apply(this,arguments);};}else{ns[cn]=function(){this.parent=sp[scn];return c.apply(this,arguments);};}ns[cn].prototype[cn]=ns[cn];t.each(sp,function(f,n){ns[cn].prototype[n]=sp[n];});t.each(p,function(f,n){if(sp[n]){ns[cn].prototype[n]=function(){this.parent=sp[n];return f.apply(this,arguments);};}else{if(n!=cn)ns[cn].prototype[n]=f;}});}t.each(p['static'],function(f,n){ns[cn][n]=f;});if(this.onCreate)this.onCreate(s[2],s[3],ns[cn].prototype);},walk:function(o,f,n,s){s=s||this;if(o){if(n)o=o[n];tinymce.each(o,function(o,i){if(f.call(s,o,i,n)===false)return false;tinymce.walk(o,f,n,s);});}},createNS:function(n,o){var i,v;o=o||window;n=n.split('.');for(i=0;i<n.length;i++){v=n[i];if(!o[v])o[v]={};o=o[v];}return o;},resolve:function(n,o){var i,l;o=o||window;n=n.split('.');for(i=0,l=n.length;i<l;i++){o=o[n[i]];if(!o)break;}return o;},addUnload:function(f,s){var t=this,w=window;f={func:f,scope:s||this};if(!t.unloads){function unload(){var li=t.unloads,o,n;if(li){for(n in li){o=li[n];if(o&&o.func)o.func.call(o.scope,1);}if(w.detachEvent){w.detachEvent('onbeforeunload',fakeUnload);w.detachEvent('onunload',unload);}else if(w.removeEventListener)w.removeEventListener('unload',unload,false);t.unloads=o=li=w=unload=null;if(window.CollectGarbage)window.CollectGarbage();}};function fakeUnload(){var d=document;if(d.readyState=='interactive'){function stop(){d.detachEvent('onstop',stop);unload();d=null;};d.attachEvent('onstop',stop);window.setTimeout(function(){d.detachEvent('onstop',stop);},0);}};if(w.attachEvent){w.attachEvent('onunload',unload);w.attachEvent('onbeforeunload',fakeUnload);}else if(w.addEventListener)w.addEventListener('unload',unload,false);t.unloads=[f];}else t.unloads.push(f);return f;},removeUnload:function(f){var u=this.unloads,r=null;tinymce.each(u,function(o,i){if(o&&o.func==f){u.splice(i,1);r=f;return false;}});return r;},explode:function(s,d){return s?tinymce.map(s.split(d||','),tinymce.trim):s;},_addVer:function(u){var v;if(!this.query)return u;v=(u.indexOf('?')==-1?'?':'&')+this.query;if(u.indexOf('#')==-1)return u+v;return u.replace('#',v+'#');}};window.tinymce=tinymce;tinymce._init();tinymce.create('tinymce.util.Dispatcher',{scope:null,listeners:null,Dispatcher:function(s){this.scope=s||this;this.listeners=[];},add:function(cb,s){this.listeners.push({cb:cb,scope:s||this.scope});return cb;},addToTop:function(cb,s){this.listeners.unshift({cb:cb,scope:s||this.scope});return cb;},remove:function(cb){var l=this.listeners,o=null;tinymce.each(l,function(c,i){if(cb==c.cb){o=cb;l.splice(i,1);return false;}});return o;},dispatch:function(){var s,a=arguments,i,li=this.listeners,c;for(i=0;i<li.length;i++){c=li[i];s=c.cb.apply(c.scope,a);if(s===false)break;}return s;}});(function(){var each=tinymce.each;tinymce.create('tinymce.util.URI',{URI:function(u,s){var t=this,o,a,b;s=t.settings=s||{};if(/^(mailto|news|javascript|about):/i.test(u)||/^\s*#/.test(u)){t.source=u;return;}if(u.indexOf('/')===0&&u.indexOf('//')!==0)u=(s.base_uri?s.base_uri.protocol||'http':'http')+'://mce_host'+u;if(u.indexOf('://')===-1&&u.indexOf('//')!==0)u=(s.base_uri.protocol||'http')+'://mce_host'+t.toAbsPath(s.base_uri.path,u);u=u.replace(/@@/g,'(mce_at)');u=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(u);each(["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],function(v,i){var s=u[i];if(s)s=s.replace(/\(mce_at\)/g,'@@');t[v]=s;});if(b=s.base_uri){if(!t.protocol)t.protocol=b.protocol;if(!t.userInfo)t.userInfo=b.userInfo;if(!t.port&&t.host=='mce_host')t.port=b.port;if(!t.host||t.host=='mce_host')t.host=b.host;t.source='';}},setPath:function(p){var t=this;p=/^(.*?)\/?(\w+)?$/.exec(p);t.path=p[0];t.directory=p[1];t.file=p[2];t.source='';t.getURI();},toRelative:function(u){var t=this,o;u=new tinymce.util.URI(u,{base_uri:t});if((u.host!='mce_host'&&t.host!=u.host&&u.host)||t.port!=u.port||t.protocol!=u.protocol)return u.getURI();o=t.toRelPath(t.path,u.path);if(u.query)o+='?'+u.query;if(u.anchor)o+='#'+u.anchor;return o;},toAbsolute:function(u,nh){var u=new tinymce.util.URI(u,{base_uri:this});return u.getURI(this.host==u.host?nh:0);},toRelPath:function(base,path){var items,bp=0,out='',i;base=base.substring(0,base.lastIndexOf('/'));base=base.split('/');items=path.split('/');if(base.length>=items.length){for(i=0;i<base.length;i++){if(i>=items.length||base[i]!=items[i]){bp=i+1;break;}}}if(base.length<items.length){for(i=0;i<items.length;i++){if(i>=base.length||base[i]!=items[i]){bp=i+1;break;}}}if(bp==1)return path;for(i=0;i<base.length-(bp-1);i++)out+="../";for(i=bp-1;i<items.length;i++){if(i!=bp-1)out+="/"+items[i];else out+=items[i];}return out;},toAbsPath:function(base,path){var i,nb=0,o=[];base=base.split('/');path=path.split('/');each(base,function(k){if(k)o.push(k);});base=o;for(i=path.length-1,o=[];i>=0;i--){if(path[i].length==0||path[i]==".")continue;if(path[i]=='..'){nb++;continue;}if(nb>0){nb--;continue;}o.push(path[i]);}i=base.length-nb;if(i<=0)return'/'+o.reverse().join('/');return'/'+base.slice(0,i).join('/')+'/'+o.reverse().join('/');},getURI:function(nh){var s,t=this;if(!t.source||nh){s='';if(!nh){if(t.protocol)s+=t.protocol+'://';if(t.userInfo)s+=t.userInfo+'@';if(t.host)s+=t.host;if(t.port)s+=':'+t.port;}if(t.path)s+=t.path;if(t.query)s+='?'+t.query;if(t.anchor)s+='#'+t.anchor;t.source=s;}return t.source;}});})();(function(){var each=tinymce.each;tinymce.create('static tinymce.util.Cookie',{getHash:function(n){var v=this.get(n),h;if(v){each(v.split('&'),function(v){v=v.split('=');h=h||{};h[unescape(v[0])]=unescape(v[1]);});}return h;},setHash:function(n,v,e,p,d,s){var o='';each(v,function(v,k){o+=(!o?'':'&')+escape(k)+'='+escape(v);});this.set(n,o,e,p,d,s);},get:function(n){var c=document.cookie,e,p=n+"=",b;if(!c)return;b=c.indexOf("; "+p);if(b==-1){b=c.indexOf(p);if(b!=0)return null;}else b+=2;e=c.indexOf(";",b);if(e==-1)e=c.length;return unescape(c.substring(b+p.length,e));},set:function(n,v,e,p,d,s){document.cookie=n+"="+escape(v)+((e)?"; expires="+e.toGMTString():"")+((p)?"; path="+escape(p):"")+((d)?"; domain="+d:"")+((s)?"; secure":"");},remove:function(n,p){var d=new Date();d.setTime(d.getTime()-1000);this.set(n,'',d,p,d);}});})();tinymce.create('static tinymce.util.JSON',{serialize:function(o){var i,v,s=tinymce.util.JSON.serialize,t;if(o==null)return'null';t=typeof o;if(t=='string'){v='\bb\tt\nn\ff\rr\""\'\'\\\\';return'"'+o.replace(/([\u0080-\uFFFF\x00-\x1f\"\'])/g,function(a,b){i=v.indexOf(b);if(i+1)return'\\'+v.charAt(i+1);a=b.charCodeAt().toString(16);return'\\u'+'0000'.substring(a.length)+a;})+'"';}if(t=='object'){if(o instanceof Array){for(i=0,v='[';i<o.length;i++)v+=(i>0?',':'')+s(o[i]);return v+']';}v='{';for(i in o)v+=typeof o[i]!='function'?(v.length>1?',"':'"')+i+'":'+s(o[i]):'';return v+'}';}return''+o;},parse:function(s){try{return eval('('+s+')');}catch(ex){}}});tinymce.create('static tinymce.util.XHR',{send:function(o){var x,t,w=window,c=0;o.scope=o.scope||this;o.success_scope=o.success_scope||o.scope;o.error_scope=o.error_scope||o.scope;o.async=o.async===false?false:true;o.data=o.data||'';function get(s){x=0;try{x=new ActiveXObject(s);}catch(ex){}return x;};x=w.XMLHttpRequest?new XMLHttpRequest():get('Microsoft.XMLHTTP')||get('Msxml2.XMLHTTP');if(x){if(x.overrideMimeType)x.overrideMimeType(o.content_type);x.open(o.type||(o.data?'POST':'GET'),o.url,o.async);if(o.content_type)x.setRequestHeader('Content-Type',o.content_type);x.send(o.data);function ready(){if(!o.async||x.readyState==4||c++>10000){if(o.success&&c<10000&&x.status==200)o.success.call(o.success_scope,''+x.responseText,x,o);else if(o.error)o.error.call(o.error_scope,c>10000?'TIMED_OUT':'GENERAL',x,o);x=null;}else w.setTimeout(ready,10);};if(!o.async)return ready();t=w.setTimeout(ready,10);}}});(function(){var extend=tinymce.extend,JSON=tinymce.util.JSON,XHR=tinymce.util.XHR;tinymce.create('tinymce.util.JSONRequest',{JSONRequest:function(s){this.settings=extend({},s);this.count=0;},send:function(o){var ecb=o.error,scb=o.success;o=extend(this.settings,o);o.success=function(c,x){c=JSON.parse(c);if(typeof(c)=='undefined'){c={error:'JSON Parse error.'};}if(c.error)ecb.call(o.error_scope||o.scope,c.error,x);else scb.call(o.success_scope||o.scope,c.result);};o.error=function(ty,x){ecb.call(o.error_scope||o.scope,ty,x);};o.data=JSON.serialize({id:o.id||'c'+(this.count++),method:o.method,params:o.params});o.content_type='application/json';XHR.send(o);},'static':{sendRPC:function(o){return new tinymce.util.JSONRequest().send(o);}}});}());(function(){var each=tinymce.each,is=tinymce.is;var isWebKit=tinymce.isWebKit,isIE=tinymce.isIE;tinymce.create('tinymce.dom.DOMUtils',{doc:null,root:null,files:null,listeners:{},pixelStyles:/^(top|left|bottom|right|width|height|borderWidth)$/,cache:{},idPattern:/^#[\w]+$/,elmPattern:/^[\w_*]+$/,elmClassPattern:/^([\w_]*)\.([\w_]+)$/,props:{"for":"htmlFor","class":"className",className:"className",checked:"checked",disabled:"disabled",maxlength:"maxLength",readonly:"readOnly",selected:"selected",value:"value"},DOMUtils:function(d,s){var t=this;t.doc=d;t.win=window;t.files={};t.cssFlicker=false;t.counter=0;t.boxModel=!tinymce.isIE||d.compatMode=="CSS1Compat";t.stdMode=d.documentMode===8;this.settings=s=tinymce.extend({keep_values:false,hex_colors:1,process_html:1},s);if(tinymce.isIE6){try{d.execCommand('BackgroundImageCache',false,true);}catch(e){t.cssFlicker=true;}}tinymce.addUnload(t.destroy,t);},getRoot:function(){var t=this,s=t.settings;return(s&&t.get(s.root_element))||t.doc.body;},getViewPort:function(w){var d,b;w=!w?this.win:w;d=w.document;b=this.boxModel?d.documentElement:d.body;return{x:w.pageXOffset||b.scrollLeft,y:w.pageYOffset||b.scrollTop,w:w.innerWidth||b.clientWidth,h:w.innerHeight||b.clientHeight};},getRect:function(e){var p,t=this,sr;e=t.get(e);p=t.getPos(e);sr=t.getSize(e);return{x:p.x,y:p.y,w:sr.w,h:sr.h};},getSize:function(e){var t=this,w,h;e=t.get(e);w=t.getStyle(e,'width');h=t.getStyle(e,'height');if(w.indexOf('px')===-1)w=0;if(h.indexOf('px')===-1)h=0;return{w:parseInt(w)||e.offsetWidth||e.clientWidth,h:parseInt(h)||e.offsetHeight||e.clientHeight};},getParent:function(n,f,r){var na,se=this.settings;n=this.get(n);if(se.strict_root)r=r||this.getRoot();if(is(f,'string')){na=f.toUpperCase();f=function(n){var s=false;if(n.nodeType==1&&na==='*'){s=true;return false;}each(na.split(','),function(v){if(n.nodeType==1&&((se.strict&&n.nodeName.toUpperCase()==v)||n.nodeName.toUpperCase()==v)){s=true;return false;}});return s;};}while(n){if(n==r)return null;if(f(n))return n;n=n.parentNode;}return null;},get:function(e){var n;if(e&&this.doc&&typeof(e)=='string'){n=e;e=this.doc.getElementById(e);if(e&&e.id!==n)return this.doc.getElementsByName(n)[1];}return e;},select:function(pa,s){var t=this,cs,c,pl,o=[],x,i,l,n;s=t.get(s)||t.doc;if(s.querySelectorAll){if(s!=t.doc){i=s.id;s.id='_mc_tmp';pa='#_mc_tmp '+pa;}l=tinymce.grep(s.querySelectorAll(pa));s.id=i;return l;}if(t.settings.strict){function get(s,n){return s.getElementsByTagName(n.toLowerCase());};}else{function get(s,n){return s.getElementsByTagName(n);};}if(t.elmPattern.test(pa)){x=get(s,pa);for(i=0,l=x.length;i<l;i++)o.push(x[i]);return o;}if(t.elmClassPattern.test(pa)){pl=t.elmClassPattern.exec(pa);x=get(s,pl[1]||'*');c=' '+pl[2]+' ';for(i=0,l=x.length;i<l;i++){n=x[i];if(n.className&&(' '+n.className+' ').indexOf(c)!==-1)o.push(n);}return o;}function collect(n){if(!n.mce_save){n.mce_save=1;o.push(n);}};function collectIE(n){if(!n.getAttribute('mce_save')){n.setAttribute('mce_save','1');o.push(n);}};function find(n,f,r){var i,l,nl=get(r,n);for(i=0,l=nl.length;i<l;i++)f(nl[i]);};each(pa.split(','),function(v,i){v=tinymce.trim(v);if(t.elmPattern.test(v)){each(get(s,v),function(n){collect(n);});return;}if(t.elmClassPattern.test(v)){x=t.elmClassPattern.exec(v);each(get(s,x[1]),function(n){if(t.hasClass(n,x[2]))collect(n);});return;}if(!(cs=t.cache[pa])){cs='x=(function(cf, s) {';pl=v.split(' ');each(pl,function(v){var p=/^([\w\\*]+)?(?:#([\w\\]+))?(?:\.([\w\\\.]+))?(?:\[\@([\w\\]+)([\^\$\*!]?=)([\w\\]+)\])?(?:\:([\w\\]+))?/i.exec(v);p[1]=p[1]||'*';cs+='find("'+p[1]+'", function(n) {';if(p[2])cs+='if (n.id !== "'+p[2]+'") return;';if(p[3]){cs+='var c = " " + n.className + " ";';cs+='if (';c='';each(p[3].split('.'),function(v){if(v)c+=(c?'||':'')+'c.indexOf(" '+v+' ") === -1';});cs+=c+') return;';}});cs+='cf(n);';for(i=pl.length-1;i>=0;i--)cs+='}, '+(i?'n':'s')+');';cs+='})';t.cache[pa]=cs=eval(cs);}cs(isIE?collectIE:collect,s);});each(o,function(n){if(isIE)n.removeAttribute('mce_save');else delete n.mce_save;});return o;},add:function(p,n,a,h,c){var t=this;return this.run(p,function(p){var e,k;e=is(n,'string')?t.doc.createElement(n):n;if(a){for(k in a){if(a.hasOwnProperty(k)&&!is(a[k],'object'))t.setAttrib(e,k,''+a[k]);}if(a.style&&!is(a.style,'string')){each(a.style,function(v,n){t.setStyle(e,n,v);});}}if(h){if(h.nodeType)e.appendChild(h);else t.setHTML(e,h);}return!c?p.appendChild(e):e;});},create:function(n,a,h){return this.add(this.doc.createElement(n),n,a,h,1);},createHTML:function(n,a,h){var o='',t=this,k;o+='<'+n;for(k in a){if(a.hasOwnProperty(k))o+=' '+k+'="'+t.encode(a[k])+'"';}if(tinymce.is(h))return o+'>'+h+'</'+n+'>';return o+' />';},remove:function(n,k){return this.run(n,function(n){var p,g;p=n.parentNode;if(!p)return null;if(k){each(n.childNodes,function(c){p.insertBefore(c.cloneNode(true),n);});}return p.removeChild(n);});},setStyle:function(n,na,v){var t=this;return t.run(n,function(e){var s,i;s=e.style;na=na.replace(/-(\D)/g,function(a,b){return b.toUpperCase();});if(t.pixelStyles.test(na)&&(tinymce.is(v,'number')||/^[\-0-9\.]+$/.test(v)))v+='px';switch(na){case'opacity':if(isIE){s.filter=v===''?'':"alpha(opacity="+(v*100)+")";if(!n.currentStyle||!n.currentStyle.hasLayout)s.display='inline-block';}s[na]=s['-moz-opacity']=s['-khtml-opacity']=v||'';break;case'float':isIE?s.styleFloat=v:s.cssFloat=v;break;default:s[na]=v||'';}if(t.settings.update_styles)t.setAttrib(e,'mce_style');});},getStyle:function(n,na,c){n=this.get(n);if(!n)return false;if(this.doc.defaultView&&c){na=na.replace(/[A-Z]/g,function(a){return'-'+a;});try{return this.doc.defaultView.getComputedStyle(n,null).getPropertyValue(na);}catch(ex){return null;}}na=na.replace(/-(\D)/g,function(a,b){return b.toUpperCase();});if(na=='float')na=isIE?'styleFloat':'cssFloat';if(n.currentStyle&&c)return n.currentStyle[na];return n.style[na];},setStyles:function(e,o){var t=this,s=t.settings,ol;ol=s.update_styles;s.update_styles=0;each(o,function(v,n){t.setStyle(e,n,v);});s.update_styles=ol;if(s.update_styles)t.setAttrib(e,s.cssText);},setAttrib:function(e,n,v){var t=this;if(!e||!n)return;if(t.settings.strict)n=n.toLowerCase();return this.run(e,function(e){var s=t.settings;switch(n){case"style":if(s.keep_values){if(v&&!t._isRes(v))e.setAttribute('mce_style',v,2);else e.removeAttribute('mce_style',2);}e.style.cssText=v;break;case"class":e.className=v||'';break;case"src":case"href":if(s.keep_values){if(s.url_converter)v=s.url_converter.call(s.url_converter_scope||t,v,n,e);t.setAttrib(e,'mce_'+n,v,2);}break;case"shape":e.setAttribute('mce_style',v);break;}if(is(v)&&v!==null&&v.length!==0)e.setAttribute(n,''+v,2);else e.removeAttribute(n,2);});},setAttribs:function(e,o){var t=this;return this.run(e,function(e){each(o,function(v,n){t.setAttrib(e,n,v);});});},getAttrib:function(e,n,dv){var v,t=this;e=t.get(e);if(!e||e.nodeType!==1)return false;if(!is(dv))dv='';if(/^(src|href|style|coords|shape)$/.test(n)){v=e.getAttribute("mce_"+n);if(v)return v;}if(isIE&&t.props[n]){v=e[t.props[n]];v=v&&v.nodeValue?v.nodeValue:v;}if(!v)v=e.getAttribute(n,2);if(n==='style'){v=v||e.style.cssText;if(v){v=t.serializeStyle(t.parseStyle(v));if(t.settings.keep_values&&!t._isRes(v))e.setAttribute('mce_style',v);}}if(isWebKit&&n==="class"&&v)v=v.replace(/(apple|webkit)\-[a-z\-]+/gi,'');if(isIE){switch(n){case'rowspan':case'colspan':if(v===1)v='';break;case'size':if(v==='+0'||v===20)v='';break;case'width':case'height':case'vspace':if(v===0)v='';break;case'hspace':if(v===-1)v='';break;case'maxlength':case'tabindex':if(v===32768||v===2147483647)v='';break;case'compact':case'noshade':if(v===65535)return n;return dv;case'shape':v=v.toLowerCase();break;default:if(n.indexOf('on')===0&&v)v=(''+v).replace(/^function\s+anonymous\(\)\s+\{\s+(.*)\s+\}$/,'$1');}}return(v!==undefined&&v!==null&&v!=='')?''+v:dv;},getPos:function(n){var t=this,x=0,y=0,e,d=t.doc,r;n=t.get(n);if(n&&isIE){n=n.getBoundingClientRect();e=t.boxModel?d.documentElement:d.body;x=t.getStyle(t.select('html')[0],'borderWidth');x=(x=='medium'||t.boxModel&&!t.isIE6)&&2||x;n.top+=t.win.self!=t.win.top?2:0;return{x:n.left+e.scrollLeft-x,y:n.top+e.scrollTop-x};}r=n;while(r){x+=r.offsetLeft||0;y+=r.offsetTop||0;r=r.offsetParent;}r=n;while(r){if(!/^table-row|inline.*/i.test(t.getStyle(r,"display",1))){x-=r.scrollLeft||0;y-=r.scrollTop||0;}r=r.parentNode;if(r==d.body)break;}return{x:x,y:y};},parseStyle:function(st){var t=this,s=t.settings,o={};if(!st)return o;function compress(p,s,ot){var t,r,b,l;t=o[p+'-top'+s];if(!t)return;r=o[p+'-right'+s];if(t!=r)return;b=o[p+'-bottom'+s];if(r!=b)return;l=o[p+'-left'+s];if(b!=l)return;o[ot]=l;delete o[p+'-top'+s];delete o[p+'-right'+s];delete o[p+'-bottom'+s];delete o[p+'-left'+s];};function compress2(ta,a,b,c){var t;t=o[a];if(!t)return;t=o[b];if(!t)return;t=o[c];if(!t)return;o[ta]=o[a]+' '+o[b]+' '+o[c];delete o[a];delete o[b];delete o[c];};st=st.replace(/&(#?[a-z0-9]+);/g,'&$1_MCE_SEMI_');each(st.split(';'),function(v){var sv,ur=[];if(v){v=v.replace(/_MCE_SEMI_/g,';');v=v.replace(/url\([^\)]+\)/g,function(v){ur.push(v);return'url('+ur.length+')';});v=v.split(':');sv=tinymce.trim(v[1]);sv=sv.replace(/url\(([^\)]+)\)/g,function(a,b){return ur[parseInt(b)-1];});sv=sv.replace(/rgb\([^\)]+\)/g,function(v){return t.toHex(v);});if(s.url_converter){sv=sv.replace(/url\([\'\"]?([^\)\'\"]+)[\'\"]?\)/g,function(x,c){return'url('+s.url_converter.call(s.url_converter_scope||t,t.decode(c),'style',null)+')';});}o[tinymce.trim(v[0]).toLowerCase()]=sv;}});compress("border","","border");compress("border","-width","border-width");compress("border","-color","border-color");compress("border","-style","border-style");compress("padding","","padding");compress("margin","","margin");compress2('border','border-width','border-style','border-color');if(isIE){if(o.border=='medium none')o.border='';}return o;},serializeStyle:function(o){var s='';each(o,function(v,k){if(k&&v){if(tinymce.isGecko&&k.indexOf('-moz-')===0)return;switch(k){case'color':case'background-color':v=v.toLowerCase();break;}s+=(s?' ':'')+k+': '+v+';';}});return s;},loadCSS:function(u){var t=this,d=t.doc;if(!u)u='';each(u.split(','),function(u){if(t.files[u])return;t.files[u]=true;t.add(t.select('head')[0],'link',{rel:'stylesheet',href:tinymce._addVer(u)});});},addClass:function(e,c){return this.run(e,function(e){var o;if(!c)return 0;if(this.hasClass(e,c))return e.className;o=this.removeClass(e,c);return e.className=(o!=''?(o+' '):'')+c;});},removeClass:function(e,c){var t=this,re;return t.run(e,function(e){var v;if(t.hasClass(e,c)){if(!re)re=new RegExp("(^|\\s+)"+c+"(\\s+|$)","g");v=e.className.replace(re,' ');return e.className=tinymce.trim(v!=' '?v:'');}return e.className;});},hasClass:function(n,c){n=this.get(n);if(!n||!c)return false;return(' '+n.className+' ').indexOf(' '+c+' ')!==-1;},show:function(e){return this.setStyle(e,'display','block');},hide:function(e){return this.setStyle(e,'display','none');},isHidden:function(e){e=this.get(e);return e.style.display=='none'||this.getStyle(e,'display')=='none';},uniqueId:function(p){return(!p?'mce_':p)+(this.counter++);},setHTML:function(e,h){var t=this;return this.run(e,function(e){var x,i,nl,n,p,x;h=t.processHTML(h);if(isIE){function set(){try{e.innerHTML='<br />'+h;e.removeChild(e.firstChild);}catch(ex){while(e.firstChild)e.firstChild.removeNode();x=t.create('div');x.innerHTML='<br />'+h;each(x.childNodes,function(n,i){if(i)e.appendChild(n);});}};if(t.settings.fix_ie_paragraphs)h=h.replace(/<p><\/p>|<p([^>]+)><\/p>|<p[^\/+]\/>/gi,'<p$1 mce_keep="true"> </p>');set();if(t.settings.fix_ie_paragraphs){nl=e.getElementsByTagName("p");for(i=nl.length-1,x=0;i>=0;i--){n=nl[i];if(!n.hasChildNodes()){if(!n.mce_keep){x=1;break;}n.removeAttribute('mce_keep');}}}if(x){h=h.replace(/<p([^>]+)>|<p>/g,'<div$1 mce_tmp="1">');h=h.replace(/<\/p>/g,'</div>');set();if(t.settings.fix_ie_paragraphs){nl=e.getElementsByTagName("DIV");for(i=nl.length-1;i>=0;i--){n=nl[i];if(n.mce_tmp){p=t.doc.createElement('p');n.cloneNode(false).outerHTML.replace(/([a-z0-9\-_]+)=/gi,function(a,b){var v;if(b!=='mce_tmp'){v=n.getAttribute(b);if(!v&&b==='class')v=n.className;p.setAttribute(b,v);}});for(x=0;x<n.childNodes.length;x++)p.appendChild(n.childNodes[x].cloneNode(true));n.swapNode(p);}}}}}else e.innerHTML=h;return h;});},processHTML:function(h){var t=this,s=t.settings;if(!s.process_html)return h;if(tinymce.isGecko){h=h.replace(/<(\/?)strong>|<strong( [^>]+)>/gi,'<$1b$2>');h=h.replace(/<(\/?)em>|<em( [^>]+)>/gi,'<$1i$2>');}else if(isIE)h=h.replace(/'/g,''');h=h.replace(/<a( )([^>]+)\/>|<a\/>/gi,'<a$1$2></a>');if(s.keep_values){h=h.replace(/<!\[CDATA\[([\s\S]+)\]\]>/g,'<!--[CDATA[$1]]-->');if(/<script|style/.test(h)){function trim(s){s=s.replace(/^[\r\n]*|[\r\n]*$/g,'');s=s.replace(/^\s*(\/\/\s*<!--|\/\/\s*<\[CDATA\[|<!--|<\[CDATA\[)[\r\n]*/g,'');s=s.replace(/\s*(\/\/\s*\]\]>|\/\/\s*-->|\]\]>|-->)\s*$/g,'');return s;};h=h.replace(/<script([^>]+|)>([\s\S]*?)<\/script>/g,function(v,a,b){b=trim(b);if(!a)a=' type="text/javascript"';if(b)b='<!--\n'+b+'\n// -->';return'<mce:script'+a+'>'+b+'</mce:script>';});h=h.replace(/<style([^>]+|)>([\s\S]*?)<\/style>/g,function(v,a,b){b=trim(b);return'<mce:style'+a+'><!--\n'+b+'\n--></mce:style><style'+a+' mce_bogus="1">'+b+'</style>';});}h=h.replace(/<([\w:]+) [^>]*(src|href|style|shape|coords)[^>]*>/gi,function(a,n){function handle(m,b,c){var u=c;if(a.indexOf('mce_'+b)!=-1)return m;if(b=='style'){if(t._isRes(c))return m;if(s.hex_colors){u=u.replace(/rgb\([^\)]+\)/g,function(v){return t.toHex(v);});}if(s.url_converter){u=u.replace(/url\([\'\"]?([^\)\'\"]+)\)/g,function(x,c){return'url('+t.encode(s.url_converter.call(s.url_converter_scope||t,t.decode(c),b,n))+')';});}}else if(b!='coords'&&b!='shape'){if(s.url_converter)u=t.encode(s.url_converter.call(s.url_converter_scope||t,t.decode(c),b,n));}return' '+b+'="'+c+'" mce_'+b+'="'+u+'"';};a=a.replace(/ (src|href|style|coords|shape)=[\"]([^\"]+)[\"]/gi,handle);a=a.replace(/ (src|href|style|coords|shape)=[\']([^\']+)[\']/gi,handle);return a.replace(/ (src|href|style|coords|shape)=([^\s\"\'>]+)/gi,handle);});}return h;},getOuterHTML:function(e){var d;e=this.get(e);if(!e)return null;if(isIE)return e.outerHTML;d=(e.ownerDocument||this.doc).createElement("body");d.appendChild(e.cloneNode(true));return d.innerHTML;},setOuterHTML:function(e,h,d){var t=this;return this.run(e,function(e){var n,tp;e=t.get(e);d=d||e.ownerDocument||t.doc;if(isIE&&e.nodeType==1)e.outerHTML=h;else{tp=d.createElement("body");tp.innerHTML=h;n=tp.lastChild;while(n){t.insertAfter(n.cloneNode(true),e);n=n.previousSibling;}t.remove(e);}});},decode:function(s){var e;if(/&[^;]+;/.test(s)){e=this.doc.createElement("div");e.innerHTML=s;return!e.firstChild?s:e.firstChild.nodeValue;}return s;},encode:function(s){return s?(''+s).replace(/[<>&\"]/g,function(c,b){switch(c){case'&':return'&';case'"':return'"';case'<':return'<';case'>':return'>';}return c;}):s;},insertAfter:function(n,r){var t=this;r=t.get(r);return this.run(n,function(n){var p,ns;p=r.parentNode;ns=r.nextSibling;if(ns)p.insertBefore(n,ns);else p.appendChild(n);return n;});},isBlock:function(n){if(n.nodeType&&n.nodeType!==1)return false;n=n.nodeName||n;return/^(H[1-6]|HR|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP)$/.test(n);},replace:function(n,o,k){if(is(o,'array'))n=n.cloneNode(true);return this.run(o,function(o){if(k){each(o.childNodes,function(c){n.appendChild(c.cloneNode(true));});}return o.parentNode.replaceChild(n,o);});},toHex:function(s){var c=/^\s*rgb\s*?\(\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?\)\s*$/i.exec(s);function hex(s){s=parseInt(s).toString(16);return s.length>1?s:'0'+s;};if(c){s='#'+hex(c[1])+hex(c[2])+hex(c[3]);return s;}return s;},getClasses:function(){var t=this,cl=[],i,lo={},f=t.settings.class_filter,ov;if(t.classes)return t.classes;function addClasses(s){each(s.imports,function(r){addClasses(r);});each(s.cssRules||s.rules,function(r){switch(r.type||1){case 1:if(r.selectorText){each(r.selectorText.split(','),function(v){v=v.replace(/^\s*|\s*$|^\s\./g,"");if(/\.mce/.test(v)||!/\.[\w\-]+$/.test(v))return;ov=v;v=v.replace(/.*\.([a-z0-9_\-]+).*/i,'$1');if(f&&!(v=f(v,ov)))return;if(!lo[v]){cl.push({'class':v});lo[v]=1;}});}break;case 3:addClasses(r.styleSheet);break;}});};try{each(t.doc.styleSheets,addClasses);}catch(ex){}if(cl.length>0)t.classes=cl;return cl;},run:function(e,f,s){var t=this,o;if(t.doc&&typeof(e)==='string')e=t.doc.getElementById(e);if(!e)return false;s=s||this;if(!e.nodeType&&(e.length||e.length===0)){o=[];each(e,function(e,i){if(e){if(typeof(e)=='string')e=t.doc.getElementById(e);o.push(f.call(s,e,i));}});return o;}return f.call(s,e);},getAttribs:function(n){var o;n=this.get(n);if(!n)return[];if(isIE){o=[];if(n.nodeName=='OBJECT')return n.attributes;n.cloneNode(false).outerHTML.replace(/([a-z0-9\:\-_]+)=/gi,function(a,b){o.push({specified:1,nodeName:b});});return o;}return n.attributes;},destroy:function(s){var t=this;t.win=t.doc=t.root=null;if(!s)tinymce.removeUnload(t.destroy);},_isRes:function(c){return/^(top|left|bottom|right|width|height)/i.test(c)||/;\s*(top|left|bottom|right|width|height)/i.test(c);}});tinymce.DOM=new tinymce.dom.DOMUtils(document,{process_html:0});})();(function(){var each=tinymce.each,DOM=tinymce.DOM,isIE=tinymce.isIE,isWebKit=tinymce.isWebKit,Event;tinymce.create('static tinymce.dom.Event',{inits:[],events:[],add:function(o,n,f,s){var cb,t=this,el=t.events,r;if(o&&o instanceof Array){r=[];each(o,function(o){o=DOM.get(o);r.push(t.add(o,n,f,s));});return r;}o=DOM.get(o);if(!o)return;cb=function(e){e=e||window.event;if(e&&!e.target&&isIE)e.target=e.srcElement;if(!s)return f(e);return f.call(s,e);};if(n=='unload'){tinymce.unloads.unshift({func:cb});return cb;}if(n=='init'){if(t.domLoaded)cb();else t.inits.push(cb);return cb;}el.push({obj:o,name:n,func:f,cfunc:cb,scope:s});t._add(o,n,cb);return f;},remove:function(o,n,f){var t=this,a=t.events,s=false,r;if(o&&o instanceof Array){r=[];each(o,function(o){o=DOM.get(o);r.push(t.remove(o,n,f));});return r;}o=DOM.get(o);each(a,function(e,i){if(e.obj==o&&e.name==n&&(!f||(e.func==f||e.cfunc==f))){a.splice(i,1);t._remove(o,n,e.cfunc);s=true;return false;}});return s;},clear:function(o){var t=this,a=t.events,i,e;if(o){o=DOM.get(o);for(i=a.length-1;i>=0;i--){e=a[i];if(e.obj===o){t._remove(e.obj,e.name,e.cfunc);e.obj=e.cfunc=null;a.splice(i,1);}}}},cancel:function(e){if(!e)return false;this.stop(e);return this.prevent(e);},stop:function(e){if(e.stopPropagation)e.stopPropagation();else e.cancelBubble=true;return false;},prevent:function(e){if(e.preventDefault)e.preventDefault();else e.returnValue=false;return false;},_unload:function(){var t=Event;each(t.events,function(e,i){t._remove(e.obj,e.name,e.cfunc);e.obj=e.cfunc=null;});t.events=[];t=null;},_add:function(o,n,f){if(o.attachEvent)o.attachEvent('on'+n,f);else if(o.addEventListener)o.addEventListener(n,f,false);else o['on'+n]=f;},_remove:function(o,n,f){if(o){try{if(o.detachEvent)o.detachEvent('on'+n,f);else if(o.removeEventListener)o.removeEventListener(n,f,false);else o['on'+n]=null;}catch(ex){}}},_pageInit:function(){var e=Event;e._remove(window,'DOMContentLoaded',e._pageInit);e.domLoaded=true;each(e.inits,function(c){c();});e.inits=[];},_wait:function(){var t;if(window.tinyMCE_GZ&&tinyMCE_GZ.loaded){Event.domLoaded=1;return;}if(isIE&&document.location.protocol!='https:'){document.write('<script id=__ie_onload defer src=\'javascript:""\';><\/script>');DOM.get("__ie_onload").onreadystatechange=function(){if(this.readyState=="complete"){Event._pageInit();DOM.get("__ie_onload").onreadystatechange=null;}};}else{Event._add(window,'DOMContentLoaded',Event._pageInit,Event);if(isIE||isWebKit){t=setInterval(function(){if(/loaded|complete/.test(document.readyState)){clearInterval(t);Event._pageInit();}},10);}}}});Event=tinymce.dom.Event;Event._wait();tinymce.addUnload(Event._unload);})();(function(){var each=tinymce.each;tinymce.create('tinymce.dom.Element',{Element:function(id,s){var t=this,dom,el;s=s||{};t.id=id;t.dom=dom=s.dom||tinymce.DOM;t.settings=s;if(!tinymce.isIE)el=t.dom.get(t.id);each(['getPos','getRect','getParent','add','setStyle','getStyle','setStyles','setAttrib','setAttribs','getAttrib','addClass','removeClass','hasClass','getOuterHTML','setOuterHTML','remove','show','hide','isHidden','setHTML','get'],function(k){t[k]=function(){var a=arguments,o;if(tinymce.isOpera){a=[id];each(arguments,function(v){a.push(v);});}else Array.prototype.unshift.call(a,el||id);o=dom[k].apply(dom,a);t.update(k);return o;};});},on:function(n,f,s){return tinymce.dom.Event.add(this.id,n,f,s);},getXY:function(){return{x:parseInt(this.getStyle('left')),y:parseInt(this.getStyle('top'))};},getSize:function(){var n=this.dom.get(this.id);return{w:parseInt(this.getStyle('width')||n.clientWidth),h:parseInt(this.getStyle('height')||n.clientHeight)};},moveTo:function(x,y){this.setStyles({left:x,top:y});},moveBy:function(x,y){var p=this.getXY();this.moveTo(p.x+x,p.y+y);},resizeTo:function(w,h){this.setStyles({width:w,height:h});},resizeBy:function(w,h){var s=this.getSize();this.resizeTo(s.w+w,s.h+h);},update:function(k){var t=this,b,dom=t.dom;if(tinymce.isIE6&&t.settings.blocker){k=k||'';if(k.indexOf('get')===0||k.indexOf('has')===0||k.indexOf('is')===0)return;if(k=='remove'){dom.remove(t.blocker);return;}if(!t.blocker){t.blocker=dom.uniqueId();b=dom.add(t.settings.container||dom.getRoot(),'iframe',{id:t.blocker,style:'position:absolute;',frameBorder:0,src:'javascript:""'});dom.setStyle(b,'opacity',0);}else b=dom.get(t.blocker);dom.setStyle(b,'left',t.getStyle('left',1));dom.setStyle(b,'top',t.getStyle('top',1));dom.setStyle(b,'width',t.getStyle('width',1));dom.setStyle(b,'height',t.getStyle('height',1));dom.setStyle(b,'display',t.getStyle('display',1));dom.setStyle(b,'zIndex',parseInt(t.getStyle('zIndex',1)||0)-1);}}});})();(function(){function trimNl(s){return s.replace(/[\n\r]+/g,'');};var is=tinymce.is,isIE=tinymce.isIE,each=tinymce.each;tinymce.create('tinymce.dom.Selection',{Selection:function(dom,win,serializer){var t=this;t.dom=dom;t.win=win;t.serializer=serializer;tinymce.addUnload(t.destroy,t);},getContent:function(s){var t=this,r=t.getRng(),e=t.dom.create("body"),se=t.getSel(),wb,wa,n;s=s||{};wb=wa='';s.get=true;s.format=s.format||'html';if(s.format=='text')return t.isCollapsed()?'':(r.text||(se.toString?se.toString():''));if(r.cloneContents){n=r.cloneContents();if(n)e.appendChild(n);}else if(is(r.item)||is(r.htmlText))e.innerHTML=r.item?r.item(0).outerHTML:r.htmlText;else e.innerHTML=r.toString();if(/^\s/.test(e.innerHTML))wb=' ';if(/\s+$/.test(e.innerHTML))wa=' ';s.getInner=true;return t.isCollapsed()?'':wb+t.serializer.serialize(e,s)+wa;},setContent:function(h,s){var t=this,r=t.getRng(),c,d=t.win.document;s=s||{format:'html'};s.set=true;h=t.dom.processHTML(h);if(r.insertNode){h+='<span id="__caret">_</span>';r.deleteContents();r.insertNode(t.getRng().createContextualFragment(h));c=t.dom.get('__caret');r=d.createRange();r.setStartBefore(c);r.setEndAfter(c);t.setRng(r);d.execCommand('Delete',false,null);t.dom.remove('__caret');}else{if(r.item){d.execCommand('Delete',false,null);r=t.getRng();}r.pasteHTML(h);}},getStart:function(){var t=this,r=t.getRng(),e;if(isIE){if(r.item)return r.item(0);r=r.duplicate();r.collapse(1);e=r.parentElement();if(e&&e.nodeName=='BODY')return e.firstChild;return e;}else{e=r.startContainer;if(e.nodeName=='BODY')return e.firstChild;return t.dom.getParent(e,function(n){return n.nodeType==1;});}},getEnd:function(){var t=this,r=t.getRng(),e;if(isIE){if(r.item)return r.item(0);r=r.duplicate();r.collapse(0);e=r.parentElement();if(e&&e.nodeName=='BODY')return e.lastChild;return e;}else{e=r.endContainer;if(e.nodeName=='BODY')return e.lastChild;return t.dom.getParent(e,function(n){return n.nodeType==1;});}},getBookmark:function(si){var t=this,r=t.getRng(),tr,sx,sy,vp=t.dom.getViewPort(t.win),e,sp,bp,le,c=-0xFFFFFF,s,ro=t.dom.getRoot(),wb=0,wa=0,nv;sx=vp.x;sy=vp.y;if(si=='simple')return{rng:r,scrollX:sx,scrollY:sy};if(isIE){if(r.item){e=r.item(0);each(t.dom.select(e.nodeName),function(n,i){if(e==n){sp=i;return false;}});return{tag:e.nodeName,index:sp,scrollX:sx,scrollY:sy};}tr=t.dom.doc.body.createTextRange();tr.moveToElementText(ro);tr.collapse(true);bp=Math.abs(tr.move('character',c));tr=r.duplicate();tr.collapse(true);sp=Math.abs(tr.move('character',c));tr=r.duplicate();tr.collapse(false);le=Math.abs(tr.move('character',c))-sp;return{start:sp-bp,length:le,scrollX:sx,scrollY:sy};}e=t.getNode();s=t.getSel();if(!s)return null;if(e&&e.nodeName=='IMG'){return{scrollX:sx,scrollY:sy};}function getPos(r,sn,en){var w=t.dom.doc.createTreeWalker(r,NodeFilter.SHOW_TEXT,null,false),n,p=0,d={};while((n=w.nextNode())!=null){if(n==sn)d.start=p;if(n==en){d.end=p;return d;}p+=trimNl(n.nodeValue||'').length;}return null;};if(s.anchorNode==s.focusNode&&s.anchorOffset==s.focusOffset){e=getPos(ro,s.anchorNode,s.focusNode);if(!e)return{scrollX:sx,scrollY:sy};trimNl(s.anchorNode.nodeValue||'').replace(/^\s+/,function(a){wb=a.length;});return{start:Math.max(e.start+s.anchorOffset-wb,0),end:Math.max(e.end+s.focusOffset-wb,0),scrollX:sx,scrollY:sy,beg:s.anchorOffset-wb==0};}else{e=getPos(ro,r.startContainer,r.endContainer);if(!e)return{scrollX:sx,scrollY:sy};return{start:Math.max(e.start+r.startOffset-wb,0),end:Math.max(e.end+r.endOffset-wa,0),scrollX:sx,scrollY:sy,beg:r.startOffset-wb==0};}},moveToBookmark:function(b){var t=this,r=t.getRng(),s=t.getSel(),ro=t.dom.getRoot(),sd,nvl,nv;function getPos(r,sp,ep){var w=t.dom.doc.createTreeWalker(r,NodeFilter.SHOW_TEXT,null,false),n,p=0,d={},o,v,wa,wb;while((n=w.nextNode())!=null){wa=wb=0;nv=n.nodeValue||'';nvl=trimNl(nv).length;p+=nvl;if(p>=sp&&!d.startNode){o=sp-(p-nvl);if(b.beg&&o>=nvl)continue;d.startNode=n;d.startOffset=o+wb;}if(p>=ep){d.endNode=n;d.endOffset=ep-(p-nvl)+wb;return d;}}return null;};if(!b)return false;t.win.scrollTo(b.scrollX,b.scrollY);if(isIE){if(r=b.rng){try{r.select();}catch(ex){}return true;}t.win.focus();if(b.tag){r=ro.createControlRange();each(t.dom.select(b.tag),function(n,i){if(i==b.index)r.addElement(n);});}else{try{if(b.start<0)return true;r=s.createRange();r.moveToElementText(ro);r.collapse(true);r.moveStart('character',b.start);r.moveEnd('character',b.length);}catch(ex2){return true;}}try{r.select();}catch(ex){}return true;}if(!s)return false;if(b.rng){s.removeAllRanges();s.addRange(b.rng);}else{if(is(b.start)&&is(b.end)){try{sd=getPos(ro,b.start,b.end);if(sd){r=t.dom.doc.createRange();r.setStart(sd.startNode,sd.startOffset);r.setEnd(sd.endNode,sd.endOffset);s.removeAllRanges();s.addRange(r);}if(!tinymce.isOpera)t.win.focus();}catch(ex){}}}},select:function(n,c){var t=this,r=t.getRng(),s=t.getSel(),b,fn,ln,d=t.win.document;function first(n){return n?d.createTreeWalker(n,NodeFilter.SHOW_TEXT,null,false).nextNode():null;};function last(n){var c,o,w;if(!n)return null;w=d.createTreeWalker(n,NodeFilter.SHOW_TEXT,null,false);while(c=w.nextNode())o=c;return o;};if(isIE){try{b=d.body;if(/^(IMG|TABLE)$/.test(n.nodeName)){r=b.createControlRange();r.addElement(n);}else{r=b.createTextRange();r.moveToElementText(n);}r.select();}catch(ex){}}else{if(c){fn=first(n);ln=last(n);if(fn&&ln){r=d.createRange();r.setStart(fn,0);r.setEnd(ln,ln.nodeValue.length);}else r.selectNode(n);}else r.selectNode(n);t.setRng(r);}return n;},isCollapsed:function(){var t=this,r=t.getRng(),s=t.getSel();if(!r||r.item)return false;return!s||r.boundingWidth==0||r.collapsed;},collapse:function(b){var t=this,r=t.getRng(),n;if(r.item){n=r.item(0);r=this.win.document.body.createTextRange();r.moveToElementText(n);}r.collapse(!!b);t.setRng(r);},getSel:function(){var t=this,w=this.win;return w.getSelection?w.getSelection():w.document.selection;},getRng:function(){var t=this,s=t.getSel(),r;try{if(s)r=s.rangeCount>0?s.getRangeAt(0):(s.createRange?s.createRange():t.win.document.createRange());}catch(ex){}if(!r)r=isIE?t.win.document.body.createTextRange():t.win.document.createRange();return r;},setRng:function(r){var s;if(!isIE){s=this.getSel();if(s){s.removeAllRanges();s.addRange(r);}}else{try{r.select();}catch(ex){}}},setNode:function(n){var t=this;t.setContent(t.dom.getOuterHTML(n));return n;},getNode:function(){var t=this,r=t.getRng(),s=t.getSel(),e;if(!isIE){if(!r)return t.dom.getRoot();e=r.commonAncestorContainer;if(!r.collapsed){if(tinymce.isWebKit&&s.anchorNode&&s.anchorNode.nodeType==1)return s.anchorNode.childNodes[s.anchorOffset];if(r.startContainer==r.endContainer){if(r.startOffset-r.endOffset<2){if(r.startContainer.hasChildNodes())e=r.startContainer.childNodes[r.startOffset];}}}return t.dom.getParent(e,function(n){return n.nodeType==1;});}return r.item?r.item(0):r.parentElement();},destroy:function(s){var t=this;t.win=null;if(!s)tinymce.removeUnload(t.destroy);}});})();(function(){tinymce.create('tinymce.dom.XMLWriter',{node:null,XMLWriter:function(s){function getXML(){var i=document.implementation;if(!i||!i.createDocument){try{return new ActiveXObject('MSXML2.DOMDocument');}catch(ex){}try{return new ActiveXObject('Microsoft.XmlDom');}catch(ex){}}else return i.createDocument('','',null);};this.doc=getXML();this.valid=tinymce.isOpera||tinymce.isWebKit;this.reset();},reset:function(){var t=this,d=t.doc;if(d.firstChild)d.removeChild(d.firstChild);t.node=d.appendChild(d.createElement("html"));},writeStartElement:function(n){var t=this;t.node=t.node.appendChild(t.doc.createElement(n));},writeAttribute:function(n,v){if(this.valid)v=v.replace(/>/g,'%MCGT%');this.node.setAttribute(n,v);},writeEndElement:function(){this.node=this.node.parentNode;},writeFullEndElement:function(){var t=this,n=t.node;n.appendChild(t.doc.createTextNode(""));t.node=n.parentNode;},writeText:function(v){if(this.valid)v=v.replace(/>/g,'%MCGT%');this.node.appendChild(this.doc.createTextNode(v));},writeCDATA:function(v){this.node.appendChild(this.doc.createCDATA(v));},writeComment:function(v){this.node.appendChild(this.doc.createComment(v.replace(/\-\-/g,' ')));},getContent:function(){var h;h=this.doc.xml||new XMLSerializer().serializeToString(this.doc);h=h.replace(/<\?[^?]+\?>|<html>|<\/html>|<html\/>|<!DOCTYPE[^>]+>/g,'');h=h.replace(/ ?\/>/g,' />');if(this.valid)h=h.replace(/\%MCGT%/g,'>');return h;}});})();(function(){tinymce.create('tinymce.dom.StringWriter',{str:null,tags:null,count:0,settings:null,indent:null,StringWriter:function(s){this.settings=tinymce.extend({indent_char:' ',indentation:1},s);this.reset();},reset:function(){this.indent='';this.str="";this.tags=[];this.count=0;},writeStartElement:function(n){this._writeAttributesEnd();this.writeRaw('<'+n);this.tags.push(n);this.inAttr=true;this.count++;this.elementCount=this.count;},writeAttribute:function(n,v){var t=this;t.writeRaw(" "+t.encode(n)+'="'+t.encode(v)+'"');},writeEndElement:function(){var n;if(this.tags.length>0){n=this.tags.pop();if(this._writeAttributesEnd(1))this.writeRaw('</'+n+'>');if(this.settings.indentation>0)this.writeRaw('\n');}},writeFullEndElement:function(){if(this.tags.length>0){this._writeAttributesEnd();this.writeRaw('</'+this.tags.pop()+'>');if(this.settings.indentation>0)this.writeRaw('\n');}},writeText:function(v){this._writeAttributesEnd();this.writeRaw(this.encode(v));this.count++;},writeCDATA:function(v){this._writeAttributesEnd();this.writeRaw('<![CDATA['+v+']]>');this.count++;},writeComment:function(v){this._writeAttributesEnd();this.writeRaw('<!-- '+v+'-->');this.count++;},writeRaw:function(v){this.str+=v;},encode:function(s){return s.replace(/[<>&"]/g,function(v){switch(v){case'<':return'<';case'>':return'>';case'&':return'&';case'"':return'"';}return v;});},getContent:function(){return this.str;},_writeAttributesEnd:function(s){if(!this.inAttr)return;this.inAttr=false;if(s&&this.elementCount==this.count){this.writeRaw(' />');return false;}this.writeRaw('>');return true;}});})();(function(){var extend=tinymce.extend,each=tinymce.each,Dispatcher=tinymce.util.Dispatcher,isIE=tinymce.isIE,isGecko=tinymce.isGecko;function getIEAtts(n){var o=[];if(n.nodeName=='OBJECT')return n.attributes;n.cloneNode(false).outerHTML.replace(/([a-z0-9\:\-_]+)=/gi,function(a,b){o.push({specified:1,nodeName:b});});return o;};function wildcardToRE(s){return s.replace(/([?+*])/g,'.$1');};tinymce.create('tinymce.dom.Serializer',{Serializer:function(s){var t=this;t.key=0;t.onPreProcess=new Dispatcher(t);t.onPostProcess=new Dispatcher(t);if(tinymce.relaxedDomain&&tinymce.isGecko){t.writer=new tinymce.dom.StringWriter();}else{try{t.writer=new tinymce.dom.XMLWriter();}catch(ex){t.writer=new tinymce.dom.StringWriter();}}t.settings=s=extend({dom:tinymce.DOM,valid_nodes:0,node_filter:0,attr_filter:0,invalid_attrs:/^(mce_|_moz_)/,closed:/(br|hr|input|meta|img|link|param)/,entity_encoding:'named',entities:'160,nbsp,161,iexcl,162,cent,163,pound,164,curren,165,yen,166,brvbar,167,sect,168,uml,169,copy,170,ordf,171,laquo,172,not,173,shy,174,reg,175,macr,176,deg,177,plusmn,178,sup2,179,sup3,180,acute,181,micro,182,para,183,middot,184,cedil,185,sup1,186,ordm,187,raquo,188,frac14,189,frac12,190,frac34,191,iquest,192,Agrave,193,Aacute,194,Acirc,195,Atilde,196,Auml,197,Aring,198,AElig,199,Ccedil,200,Egrave,201,Eacute,202,Ecirc,203,Euml,204,Igrave,205,Iacute,206,Icirc,207,Iuml,208,ETH,209,Ntilde,210,Ograve,211,Oacute,212,Ocirc,213,Otilde,214,Ouml,215,times,216,Oslash,217,Ugrave,218,Uacute,219,Ucirc,220,Uuml,221,Yacute,222,THORN,223,szlig,224,agrave,225,aacute,226,acirc,227,atilde,228,auml,229,aring,230,aelig,231,ccedil,232,egrave,233,eacute,234,ecirc,235,euml,236,igrave,237,iacute,238,icirc,239,iuml,240,eth,241,ntilde,242,ograve,243,oacute,244,ocirc,245,otilde,246,ouml,247,divide,248,oslash,249,ugrave,250,uacute,251,ucirc,252,uuml,253,yacute,254,thorn,255,yuml,402,fnof,913,Alpha,914,Beta,915,Gamma,916,Delta,917,Epsilon,918,Zeta,919,Eta,920,Theta,921,Iota,922,Kappa,923,Lambda,924,Mu,925,Nu,926,Xi,927,Omicron,928,Pi,929,Rho,931,Sigma,932,Tau,933,Upsilon,934,Phi,935,Chi,936,Psi,937,Omega,945,alpha,946,beta,947,gamma,948,delta,949,epsilon,950,zeta,951,eta,952,theta,953,iota,954,kappa,955,lambda,956,mu,957,nu,958,xi,959,omicron,960,pi,961,rho,962,sigmaf,963,sigma,964,tau,965,upsilon,966,phi,967,chi,968,psi,969,omega,977,thetasym,978,upsih,982,piv,8226,bull,8230,hellip,8242,prime,8243,Prime,8254,oline,8260,frasl,8472,weierp,8465,image,8476,real,8482,trade,8501,alefsym,8592,larr,8593,uarr,8594,rarr,8595,darr,8596,harr,8629,crarr,8656,lArr,8657,uArr,8658,rArr,8659,dArr,8660,hArr,8704,forall,8706,part,8707,exist,8709,empty,8711,nabla,8712,isin,8713,notin,8715,ni,8719,prod,8721,sum,8722,minus,8727,lowast,8730,radic,8733,prop,8734,infin,8736,ang,8743,and,8744,or,8745,cap,8746,cup,8747,int,8756,there4,8764,sim,8773,cong,8776,asymp,8800,ne,8801,equiv,8804,le,8805,ge,8834,sub,8835,sup,8836,nsub,8838,sube,8839,supe,8853,oplus,8855,otimes,8869,perp,8901,sdot,8968,lceil,8969,rceil,8970,lfloor,8971,rfloor,9001,lang,9002,rang,9674,loz,9824,spades,9827,clubs,9829,hearts,9830,diams,338,OElig,339,oelig,352,Scaron,353,scaron,376,Yuml,710,circ,732,tilde,8194,ensp,8195,emsp,8201,thinsp,8204,zwnj,8205,zwj,8206,lrm,8207,rlm,8211,ndash,8212,mdash,8216,lsquo,8217,rsquo,8218,sbquo,8220,ldquo,8221,rdquo,8222,bdquo,8224,dagger,8225,Dagger,8240,permil,8249,lsaquo,8250,rsaquo,8364,euro',valid_elements:'*[*]',extended_valid_elements:0,valid_child_elements:0,invalid_elements:0,fix_table_elements:0,fix_list_elements:true,fix_content_duplication:true,convert_fonts_to_spans:false,font_size_classes:0,font_size_style_values:0,apply_source_formatting:0,indent_mode:'simple',indent_char:'\t',indent_levels:1,remove_linebreaks:1,remove_redundant_brs:1},s);t.dom=s.dom;if(s.remove_redundant_brs){t.onPostProcess.add(function(se,o){o.content=o.content.replace(/<br \/>(\s*<\/li>)/g,'$1');});}if(s.fix_list_elements){t.onPreProcess.add(function(se,o){var nl,x,a=['ol','ul'],i,n,p,r=/^(OL|UL)$/,np;function prevNode(e,n){var a=n.split(','),i;while((e=e.previousSibling)!=null){for(i=0;i<a.length;i++){if(e.nodeName==a[i])return e;}}return null;};for(x=0;x<a.length;x++){nl=t.dom.select(a[x],o.node);for(i=0;i<nl.length;i++){n=nl[i];p=n.parentNode;if(r.test(p.nodeName)){np=prevNode(n,'LI');if(!np){np=t.dom.create('li');np.innerHTML=' ';np.appendChild(n);p.insertBefore(np,p.firstChild);}else np.appendChild(n);}}}});}if(s.fix_table_elements){t.onPreProcess.add(function(se,o){each(t.dom.select('table',o.node),function(e){var pa=t.dom.getParent(e,'H1,H2,H3,H4,H5,H6,P'),pa2,n,tm,pl=[],i,ns;if(pa){pa2=pa.cloneNode(false);pl.push(e);for(n=e;n=n.parentNode;){pl.push(n);if(n==pa)break;}tm=pa2;for(i=pl.length-1;i>=0;i--){if(i==pl.length-1){while(ns=pl[i-1].nextSibling)tm.appendChild(ns.parentNode.removeChild(ns));}else{n=pl[i].cloneNode(false);if(i!=0){while(ns=pl[i-1].nextSibling)n.appendChild(ns.parentNode.removeChild(ns));}tm=tm.appendChild(n);}}e=t.dom.insertAfter(e.parentNode.removeChild(e),pa);t.dom.insertAfter(e,pa);t.dom.insertAfter(pa2,e);}});});}},setEntities:function(s){var t=this,a,i,l={},re='',v;if(t.entityLookup)return;a=s.split(',');for(i=0;i<a.length;i+=2){v=a[i];if(v==34||v==38||v==60||v==62)continue;l[String.fromCharCode(a[i])]=a[i+1];v=parseInt(a[i]).toString(16);re+='\\u'+'0000'.substring(v.length)+v;}if(!re){t.settings.entity_encoding='raw';return;}t.entitiesRE=new RegExp('['+re+']','g');t.entityLookup=l;},setValidChildRules:function(s){this.childRules=null;this.addValidChildRules(s);},addValidChildRules:function(s){var t=this,inst,intr,bloc;if(!s)return;inst='A|BR|SPAN|BDO|MAP|OBJECT|IMG|TT|I|B|BIG|SMALL|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|#text|#comment';intr='A|BR|SPAN|BDO|OBJECT|APPLET|IMG|MAP|IFRAME|TT|I|B|U|S|STRIKE|BIG|SMALL|FONT|BASEFONT|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|INPUT|SELECT|TEXTAREA|LABEL|BUTTON|#text|#comment';bloc='H[1-6]|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|FORM|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP';each(s.split(','),function(s){var p=s.split(/\[|\]/),re;s='';each(p[1].split('|'),function(v){if(s)s+='|';switch(v){case'%itrans':v=intr;break;case'%itrans_na':v=intr.substring(2);break;case'%istrict':v=inst;break;case'%istrict_na':v=inst.substring(2);break;case'%btrans':v=bloc;break;case'%bstrict':v=bloc;break;}s+=v;});re=new RegExp('^('+s.toLowerCase()+')$','i');each(p[0].split('/'),function(s){t.childRules=t.childRules||{};t.childRules[s]=re;});});s='';each(t.childRules,function(v,k){if(s)s+='|';s+=k;});t.parentElementsRE=new RegExp('^('+s.toLowerCase()+')$','i');},setRules:function(s){var t=this;t._setup();t.rules={};t.wildRules=[];t.validElements={};return t.addRules(s);},addRules:function(s){var t=this,dr;if(!s)return;t._setup();each(s.split(','),function(s){var p=s.split(/\[|\]/),tn=p[0].split('/'),ra,at,wat,va=[];if(dr)at=tinymce.extend([],dr.attribs);if(p.length>1){each(p[1].split('|'),function(s){var ar={},i;at=at||[];s=s.replace(/::/g,'~');s=/^([!\-])?([\w*.?~_\-]+|)([=:<])?(.+)?$/.exec(s);s[2]=s[2].replace(/~/g,':');if(s[1]=='!'){ra=ra||[];ra.push(s[2]);}if(s[1]=='-'){for(i=0;i<at.length;i++){if(at[i].name==s[2]){at.splice(i,1);return;}}}switch(s[3]){case'=':ar.defaultVal=s[4]||'';break;case':':ar.forcedVal=s[4];break;case'<':ar.validVals=s[4].split('?');break;}if(/[*.?]/.test(s[2])){wat=wat||[];ar.nameRE=new RegExp('^'+wildcardToRE(s[2])+'$');wat.push(ar);}else{ar.name=s[2];at.push(ar);}va.push(s[2]);});}each(tn,function(s,i){var pr=s.charAt(0),x=1,ru={};if(dr){if(dr.noEmpty)ru.noEmpty=dr.noEmpty;if(dr.fullEnd)ru.fullEnd=dr.fullEnd;if(dr.padd)ru.padd=dr.padd;}switch(pr){case'-':ru.noEmpty=true;break;case'+':ru.fullEnd=true;break;case'#':ru.padd=true;break;default:x=0;}tn[i]=s=s.substring(x);t.validElements[s]=1;if(/[*.?]/.test(tn[0])){ru.nameRE=new RegExp('^'+wildcardToRE(tn[0])+'$');t.wildRules=t.wildRules||{};t.wildRules.push(ru);}else{ru.name=tn[0];if(tn[0]=='@')dr=ru;t.rules[s]=ru;}ru.attribs=at;if(ra)ru.requiredAttribs=ra;if(wat){s='';each(va,function(v){if(s)s+='|';s+='('+wildcardToRE(v)+')';});ru.validAttribsRE=new RegExp('^'+s.toLowerCase()+'$');ru.wildAttribs=wat;}});});s='';each(t.validElements,function(v,k){if(s)s+='|';if(k!='@')s+=k;});t.validElementsRE=new RegExp('^('+wildcardToRE(s.toLowerCase())+')$');},findRule:function(n){var t=this,rl=t.rules,i,r;t._setup();r=rl[n];if(r)return r;rl=t.wildRules;for(i=0;i<rl.length;i++){if(rl[i].nameRE.test(n))return rl[i];}return null;},findAttribRule:function(ru,n){var i,wa=ru.wildAttribs;for(i=0;i<wa.length;i++){if(wa[i].nameRE.test(n))return wa[i];}return null;},serialize:function(n,o){var h,t=this;t._setup();o=o||{};o.format=o.format||'html';t.processObj=o;n=n.cloneNode(true);t.key=''+(parseInt(t.key)+1);if(!o.no_events){o.node=n;t.onPreProcess.dispatch(t,o);}t.writer.reset();t._serializeNode(n,o.getInner);o.content=t.writer.getContent();if(!o.no_events)t.onPostProcess.dispatch(t,o);t._postProcess(o);o.node=null;return tinymce.trim(o.content);},_postProcess:function(o){var t=this,s=t.settings,h=o.content,sc=[],p;if(o.format=='html'){p=t._protect({content:h,patterns:[{pattern:/(<script[^>]*>)(.*?)(<\/script>)/g},{pattern:/(<style[^>]*>)(.*?)(<\/style>)/g},{pattern:/(<pre[^>]*>)(.*?)(<\/pre>)/g,encode:1},{pattern:/(<!--\[CDATA\[)(.*?)(\]\]-->)/g}]});h=p.content;if(s.entity_encoding!=='raw')h=t._encode(h);if(!o.set){h=h.replace(/<p>\s+<\/p>|<p([^>]+)>\s+<\/p>/g,s.entity_encoding=='numeric'?'<p$1> </p>':'<p$1> </p>');if(s.remove_linebreaks){h=h.replace(/\r?\n|\r/g,' ');h=h.replace(/(<[^>]+>)\s+/g,'$1 ');h=h.replace(/\s+(<\/[^>]+>)/g,' $1');h=h.replace(/<(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object) ([^>]+)>\s+/g,'<$1 $2>');h=h.replace(/<(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object)>\s+/g,'<$1>');h=h.replace(/\s+<\/(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object)>/g,'</$1>');}if(s.apply_source_formatting&&s.indent_mode=='simple'){h=h.replace(/<(\/?)(ul|hr|table|meta|link|tbody|tr|object|body|head|html|map)(|[^>]+)>\s*/g,'\n<$1$2$3>\n');h=h.replace(/\s*<(p|h[1-6]|blockquote|div|title|style|pre|script|td|li|area)(|[^>]+)>/g,'\n<$1$2>');h=h.replace(/<\/(p|h[1-6]|blockquote|div|title|style|pre|script|td|li)>\s*/g,'</$1>\n');h=h.replace(/\n\n/g,'\n');}}h=t._unprotect(h,p);h=h.replace(/<!--\[CDATA\[([\s\S]+)\]\]-->/g,'<![CDATA[$1]]>');if(s.entity_encoding=='raw')h=h.replace(/<p> <\/p>|<p([^>]+)> <\/p>/g,'<p$1>\u00a0</p>');}o.content=h;},_serializeNode:function(n,inn){var t=this,s=t.settings,w=t.writer,hc,el,cn,i,l,a,at,no,v,nn,ru,ar,iv;if(!s.node_filter||s.node_filter(n)){switch(n.nodeType){case 1:if(n.hasAttribute?n.hasAttribute('mce_bogus'):n.getAttribute('mce_bogus'))return;iv=false;hc=n.hasChildNodes();nn=n.getAttribute('mce_name')||n.nodeName.toLowerCase();if(isIE){if(n.scopeName!=='HTML'&&n.scopeName!=='html')nn=n.scopeName+':'+nn;}if(nn.indexOf('mce:')===0)nn=nn.substring(4);if(!t.validElementsRE.test(nn)||(t.invalidElementsRE&&t.invalidElementsRE.test(nn))||inn){iv=true;break;}if(isIE){if(s.fix_content_duplication){if(n.mce_serialized==t.key)return;n.mce_serialized=t.key;}if(nn.charAt(0)=='/')nn=nn.substring(1);}else if(isGecko){if(n.nodeName==='BR'&&n.getAttribute('type')=='_moz')return;}if(t.childRules){if(t.parentElementsRE.test(t.elementName)){if(!t.childRules[t.elementName].test(nn)){iv=true;break;}}t.elementName=nn;}ru=t.findRule(nn);nn=ru.name||nn;if((!hc&&ru.noEmpty)||(isIE&&!nn)){iv=true;break;}if(ru.requiredAttribs){a=ru.requiredAttribs;for(i=a.length-1;i>=0;i--){if(this.dom.getAttrib(n,a[i])!=='')break;}if(i==-1){iv=true;break;}}w.writeStartElement(nn);if(ru.attribs){for(i=0,at=ru.attribs,l=at.length;i<l;i++){a=at[i];v=t._getAttrib(n,a);if(v!==null)w.writeAttribute(a.name,v);}}if(ru.validAttribsRE){at=isIE?getIEAtts(n):n.attributes;for(i=at.length-1;i>-1;i--){no=at[i];if(no.specified){a=no.nodeName.toLowerCase();if(s.invalid_attrs.test(a)||!ru.validAttribsRE.test(a))continue;ar=t.findAttribRule(ru,a);v=t._getAttrib(n,ar,a);if(v!==null)w.writeAttribute(a,v);}}}if(!hc&&ru.padd)w.writeText('\u00a0');break;case 3:if(t.childRules&&t.parentElementsRE.test(t.elementName)){if(!t.childRules[t.elementName].test(n.nodeName))return;}return w.writeText(n.nodeValue);case 4:return w.writeCDATA(n.nodeValue);case 8:return w.writeComment(n.nodeValue);}}else if(n.nodeType==1)hc=n.hasChildNodes();if(hc){cn=n.firstChild;while(cn){t._serializeNode(cn);t.elementName=nn;cn=cn.nextSibling;}}if(!iv){if(hc||!s.closed.test(nn))w.writeFullEndElement();else w.writeEndElement();}},_protect:function(o){var t=this;o.items=o.items||[];function enc(s){return s.replace(/[\r\n\\]/g,function(c){if(c==='\n')return'\\n';else if(c==='\\')return'\\\\';return'\\r';});};function dec(s){return s.replace(/\\[\\rn]/g,function(c){if(c==='\\n')return'\n';else if(c==='\\\\')return'\\';return'\r';});};each(o.patterns,function(p){o.content=dec(enc(o.content).replace(p.pattern,function(x,a,b,c){b=dec(b);if(p.encode)b=t._encode(b);o.items.push(b);return a+'<!--mce:'+(o.items.length-1)+'-->'+c;}));});return o;},_unprotect:function(h,o){h=h.replace(/\<!--mce:([0-9]+)--\>/g,function(a,b){return o.items[parseInt(b)];});o.items=[];return h;},_encode:function(h){var t=this,s=t.settings,l;if(s.entity_encoding!=='raw'){if(s.entity_encoding.indexOf('named')!=-1){t.setEntities(s.entities);l=t.entityLookup;h=h.replace(t.entitiesRE,function(a){var v;if(v=l[a])a='&'+v+';';return a;});}if(s.entity_encoding.indexOf('numeric')!=-1){h=h.replace(/[\u007E-\uFFFF]/g,function(a){return'&#'+a.charCodeAt(0)+';';});}}return h;},_setup:function(){var t=this,s=this.settings;if(t.done)return;t.done=1;t.setRules(s.valid_elements);t.addRules(s.extended_valid_elements);t.addValidChildRules(s.valid_child_elements);if(s.invalid_elements)t.invalidElementsRE=new RegExp('^('+wildcardToRE(s.invalid_elements.replace(/,/g,'|').toLowerCase())+')$');if(s.attrib_value_filter)t.attribValueFilter=s.attribValueFilter;},_getAttrib:function(n,a,na){var i,v;na=na||a.name;if(a.forcedVal&&(v=a.forcedVal)){if(v==='{$uid}')return this.dom.uniqueId();return v;}v=this.dom.getAttrib(n,na);switch(na){case'rowspan':case'colspan':if(v=='1')v='';break;}if(this.attribValueFilter)v=this.attribValueFilter(na,v,n);if(a.validVals){for(i=a.validVals.length-1;i>=0;i--){if(v==a.validVals[i])break;}if(i==-1)return null;}if(v===''&&typeof(a.defaultVal)!='undefined'){v=a.defaultVal;if(v==='{$uid}')return this.dom.uniqueId();return v;}else{if(na=='class'&&this.processObj.get)v=v.replace(/\s?mceItem\w+\s?/g,'');}if(v==='')return null;return v;}});})();(function(){var each=tinymce.each;tinymce.create('tinymce.dom.ScriptLoader',{ScriptLoader:function(s){this.settings=s||{};this.queue=[];this.lookup={};},isDone:function(u){return this.lookup[u]?this.lookup[u].state==2:0;},markDone:function(u){this.lookup[u]={state:2,url:u};},add:function(u,cb,s,pr){var t=this,lo=t.lookup,o;if(o=lo[u]){if(cb&&o.state==2)cb.call(s||this);return o;}o={state:0,url:u,func:cb,scope:s||this};if(pr)t.queue.unshift(o);else t.queue.push(o);lo[u]=o;return o;},load:function(u,cb,s){var t=this,o;if(o=t.lookup[u]){if(cb&&o.state==2)cb.call(s||t);return o;}function loadScript(u){if(tinymce.dom.Event.domLoaded||t.settings.strict_mode){tinymce.util.XHR.send({url:tinymce._addVer(u),error:t.settings.error,async:false,success:function(co){t.eval(co);}});}else document.write('<script type="text/javascript" src="'+tinymce._addVer(u)+'"></script>');};if(!tinymce.is(u,'string')){each(u,function(u){loadScript(u);});if(cb)cb.call(s||t);}else{loadScript(u);if(cb)cb.call(s||t);}},loadQueue:function(cb,s){var t=this;if(!t.queueLoading){t.queueLoading=1;t.queueCallbacks=[];t.loadScripts(t.queue,function(){t.queueLoading=0;if(cb)cb.call(s||t);each(t.queueCallbacks,function(o){o.func.call(o.scope);});});}else if(cb)t.queueCallbacks.push({func:cb,scope:s||t});},eval:function(co){var w=window;if(!w.execScript){try{eval.call(w,co);}catch(ex){eval(co,w);}}else w.execScript(co);},loadScripts:function(sc,cb,s){var t=this,lo=t.lookup;function done(o){o.state=2;if(o.func)o.func.call(o.scope||t);};function allDone(){var l;l=sc.length;each(sc,function(o){o=lo[o.url];if(o.state===2){done(o);l--;}else load(o);});if(l===0&&cb){cb.call(s||t);cb=0;}};function load(o){if(o.state>0)return;o.state=1;tinymce.util.XHR.send({url:o.url,error:t.settings.error,success:function(co){t.eval(co);done(o);allDone();}});};each(sc,function(o){var u=o.url;if(!lo[u]){lo[u]=o;t.queue.push(o);}else o=lo[u];if(o.state>0)return;if(!tinymce.dom.Event.domLoaded&&!t.settings.strict_mode){var ix,ol='';if(cb||o.func){o.state=1;ix=tinymce.dom.ScriptLoader._addOnLoad(function(){done(o);allDone();});if(tinymce.isIE)ol=' onreadystatechange="';else ol=' onload="';ol+='tinymce.dom.ScriptLoader._onLoad(this,\''+u+'\','+ix+');"';}document.write('<script type="text/javascript" src="'+tinymce._addVer(u)+'"'+ol+'></script>');if(!o.func)done(o);}else load(o);});allDone();},'static':{_addOnLoad:function(f){var t=this;t._funcs=t._funcs||[];t._funcs.push(f);return t._funcs.length-1;},_onLoad:function(e,u,ix){if(!tinymce.isIE||e.readyState=='complete')this._funcs[ix].call(this);}}});tinymce.ScriptLoader=new tinymce.dom.ScriptLoader();})();(function(){var DOM=tinymce.DOM,is=tinymce.is;tinymce.create('tinymce.ui.Control',{Control:function(id,s){this.id=id;this.settings=s=s||{};this.rendered=false;this.onRender=new tinymce.util.Dispatcher(this);this.classPrefix='';this.scope=s.scope||this;this.disabled=0;this.active=0;},setDisabled:function(s){var e;if(s!=this.disabled){e=DOM.get(this.id);if(e&&this.settings.unavailable_prefix){if(s){this.prevTitle=e.title;e.title=this.settings.unavailable_prefix+": "+e.title;}else e.title=this.prevTitle;}this.setState('Disabled',s);this.setState('Enabled',!s);this.disabled=s;}},isDisabled:function(){return this.disabled;},setActive:function(s){if(s!=this.active){this.setState('Active',s);this.active=s;}},isActive:function(){return this.active;},setState:function(c,s){var n=DOM.get(this.id);c=this.classPrefix+c;if(s)DOM.addClass(n,c);else DOM.removeClass(n,c);},isRendered:function(){return this.rendered;},renderHTML:function(){},renderTo:function(n){DOM.setHTML(n,this.renderHTML());},postRender:function(){var t=this,b;if(is(t.disabled)){b=t.disabled;t.disabled=-1;t.setDisabled(b);}if(is(t.active)){b=t.active;t.active=-1;t.setActive(b);}},remove:function(){DOM.remove(this.id);this.destroy();},destroy:function(){tinymce.dom.Event.clear(this.id);}});})();tinymce.create('tinymce.ui.Container:tinymce.ui.Control',{Container:function(id,s){this.parent(id,s);this.controls=[];this.lookup={};},add:function(c){this.lookup[c.id]=c;this.controls.push(c);return c;},get:function(n){return this.lookup[n];}});tinymce.create('tinymce.ui.Separator:tinymce.ui.Control',{Separator:function(id,s){this.parent(id,s);this.classPrefix='mceSeparator';},renderHTML:function(){return tinymce.DOM.createHTML('span',{'class':this.classPrefix});}});(function(){var is=tinymce.is,DOM=tinymce.DOM,each=tinymce.each,walk=tinymce.walk;tinymce.create('tinymce.ui.MenuItem:tinymce.ui.Control',{MenuItem:function(id,s){this.parent(id,s);this.classPrefix='mceMenuItem';},setSelected:function(s){this.setState('Selected',s);this.selected=s;},isSelected:function(){return this.selected;},postRender:function(){var t=this;t.parent();if(is(t.selected))t.setSelected(t.selected);}});})();(function(){var is=tinymce.is,DOM=tinymce.DOM,each=tinymce.each,walk=tinymce.walk;tinymce.create('tinymce.ui.Menu:tinymce.ui.MenuItem',{Menu:function(id,s){var t=this;t.parent(id,s);t.items={};t.collapsed=false;t.menuCount=0;t.onAddItem=new tinymce.util.Dispatcher(this);},expand:function(d){var t=this;if(d){walk(t,function(o){if(o.expand)o.expand();},'items',t);}t.collapsed=false;},collapse:function(d){var t=this;if(d){walk(t,function(o){if(o.collapse)o.collapse();},'items',t);}t.collapsed=true;},isCollapsed:function(){return this.collapsed;},add:function(o){if(!o.settings)o=new tinymce.ui.MenuItem(o.id||DOM.uniqueId(),o);this.onAddItem.dispatch(this,o);return this.items[o.id]=o;},addSeparator:function(){return this.add({separator:true});},addMenu:function(o){if(!o.collapse)o=this.createMenu(o);this.menuCount++;return this.add(o);},hasMenus:function(){return this.menuCount!==0;},remove:function(o){delete this.items[o.id];},removeAll:function(){var t=this;walk(t,function(o){if(o.removeAll)o.removeAll();else o.remove();o.destroy();},'items',t);t.items={};},createMenu:function(o){var m=new tinymce.ui.Menu(o.id||DOM.uniqueId(),o);m.onAddItem.add(this.onAddItem.dispatch,this.onAddItem);return m;}});})();(function(){var is=tinymce.is,DOM=tinymce.DOM,each=tinymce.each,Event=tinymce.dom.Event,Element=tinymce.dom.Element;tinymce.create('tinymce.ui.DropMenu:tinymce.ui.Menu',{DropMenu:function(id,s){s=s||{};s.container=s.container||DOM.doc.body;s.offset_x=s.offset_x||0;s.offset_y=s.offset_y||0;s.vp_offset_x=s.vp_offset_x||0;s.vp_offset_y=s.vp_offset_y||0;if(is(s.icons)&&!s.icons)s['class']+=' mceNoIcons';this.parent(id,s);this.onShowMenu=new tinymce.util.Dispatcher(this);this.onHideMenu=new tinymce.util.Dispatcher(this);this.classPrefix='mceMenu';},createMenu:function(s){var t=this,cs=t.settings,m;s.container=s.container||cs.container;s.parent=t;s.constrain=s.constrain||cs.constrain;s['class']=s['class']||cs['class'];s.vp_offset_x=s.vp_offset_x||cs.vp_offset_x;s.vp_offset_y=s.vp_offset_y||cs.vp_offset_y;m=new tinymce.ui.DropMenu(s.id||DOM.uniqueId(),s);m.onAddItem.add(t.onAddItem.dispatch,t.onAddItem);return m;},update:function(){var t=this,s=t.settings,tb=DOM.get('menu_'+t.id+'_tbl'),co=DOM.get('menu_'+t.id+'_co'),tw,th;tw=s.max_width?Math.min(tb.clientWidth,s.max_width):tb.clientWidth;th=s.max_height?Math.min(tb.clientHeight,s.max_height):tb.clientHeight;if(!DOM.boxModel)t.element.setStyles({width:tw+2,height:th+2});else t.element.setStyles({width:tw,height:th});if(s.max_width)DOM.setStyle(co,'width',tw);if(s.max_height){DOM.setStyle(co,'height',th);if(tb.clientHeight<s.max_height)DOM.setStyle(co,'overflow','hidden');}},showMenu:function(x,y,px){var t=this,s=t.settings,co,vp=DOM.getViewPort(),w,h,mx,my,ot=2,dm,tb,cp=t.classPrefix;t.collapse(1);if(t.isMenuVisible)return;if(!t.rendered){co=DOM.add(t.settings.container,t.renderNode());each(t.items,function(o){o.postRender();});t.element=new Element('menu_'+t.id,{blocker:1,container:s.container});}else co=DOM.get('menu_'+t.id);if(!tinymce.isOpera)DOM.setStyles(co,{left:-0xFFFF,top:-0xFFFF});DOM.show(co);t.update();x+=s.offset_x||0;y+=s.offset_y||0;vp.w-=4;vp.h-=4;if(s.constrain){w=co.clientWidth-ot;h=co.clientHeight-ot;mx=vp.x+vp.w;my=vp.y+vp.h;if((x+s.vp_offset_x+w)>mx)x=px?px-w:Math.max(0,(mx-s.vp_offset_x)-w);if((y+s.vp_offset_y+h)>my)y=Math.max(0,(my-s.vp_offset_y)-h);}DOM.setStyles(co,{left:x,top:y});t.element.update();t.isMenuVisible=1;t.mouseClickFunc=Event.add(co,'click',function(e){var m;e=e.target;if(e&&(e=DOM.getParent(e,'TR'))&&!DOM.hasClass(e,cp+'ItemSub')){m=t.items[e.id];if(m.isDisabled())return;dm=t;while(dm){if(dm.hideMenu)dm.hideMenu();dm=dm.settings.parent;}if(m.settings.onclick)m.settings.onclick(e);return Event.cancel(e);}});if(t.hasMenus()){t.mouseOverFunc=Event.add(co,'mouseover',function(e){var m,r,mi;e=e.target;if(e&&(e=DOM.getParent(e,'TR'))){m=t.items[e.id];if(t.lastMenu)t.lastMenu.collapse(1);if(m.isDisabled())return;if(e&&DOM.hasClass(e,cp+'ItemSub')){r=DOM.getRect(e);m.showMenu((r.x+r.w-ot),r.y-ot,r.x);t.lastMenu=m;DOM.addClass(DOM.get(m.id).firstChild,cp+'ItemActive');}}});}t.onShowMenu.dispatch(t);if(s.keyboard_focus){Event.add(co,'keydown',t._keyHandler,t);DOM.select('a','menu_'+t.id)[0].focus();t._focusIdx=0;}},hideMenu:function(c){var t=this,co=DOM.get('menu_'+t.id),e;if(!t.isMenuVisible)return;Event.remove(co,'mouseover',t.mouseOverFunc);Event.remove(co,'click',t.mouseClickFunc);Event.remove(co,'keydown',t._keyHandler);DOM.hide(co);t.isMenuVisible=0;if(!c)t.collapse(1);if(t.element)t.element.hide();if(e=DOM.get(t.id))DOM.removeClass(e.firstChild,t.classPrefix+'ItemActive');t.onHideMenu.dispatch(t);},add:function(o){var t=this,co;o=t.parent(o);if(t.isRendered&&(co=DOM.get('menu_'+t.id)))t._add(DOM.select('tbody',co)[0],o);return o;},collapse:function(d){this.parent(d);this.hideMenu(1);},remove:function(o){DOM.remove(o.id);this.destroy();return this.parent(o);},destroy:function(){var t=this,co=DOM.get('menu_'+t.id);Event.remove(co,'mouseover',t.mouseOverFunc);Event.remove(co,'click',t.mouseClickFunc);if(t.element)t.element.remove();DOM.remove(co);},renderNode:function(){var t=this,s=t.settings,n,tb,co,w;w=DOM.create('div',{id:'menu_'+t.id,'class':s['class'],'style':'position:absolute;left:0;top:0;z-index:200000'});co=DOM.add(w,'div',{id:'menu_'+t.id+'_co','class':t.classPrefix+(s['class']?' '+s['class']:'')});t.element=new Element('menu_'+t.id,{blocker:1,container:s.container});if(s.menu_line)DOM.add(co,'span',{'class':t.classPrefix+'Line'});n=DOM.add(co,'table',{id:'menu_'+t.id+'_tbl',border:0,cellPadding:0,cellSpacing:0});tb=DOM.add(n,'tbody');each(t.items,function(o){t._add(tb,o);});t.rendered=true;return w;},_keyHandler:function(e){var t=this,kc=e.keyCode;function focus(d){var i=t._focusIdx+d,e=DOM.select('a','menu_'+t.id)[i];if(e){t._focusIdx=i;e.focus();}};switch(kc){case 38:focus(-1);return;case 40:focus(1);return;case 13:return;case 27:return this.hideMenu();}},_add:function(tb,o){var n,s=o.settings,a,ro,it,cp=this.classPrefix;if(s.separator){ro=DOM.add(tb,'tr',{id:o.id,'class':cp+'ItemSeparator'});DOM.add(ro,'td',{'class':cp+'ItemSeparator'});if(n=ro.previousSibling)DOM.addClass(n,'mceLast');return;}n=ro=DOM.add(tb,'tr',{id:o.id,'class':cp+'Item '+cp+'ItemEnabled'});n=it=DOM.add(n,'td');n=a=DOM.add(n,'a',{href:'javascript:;',onclick:"return false;",onmousedown:'return false;'});DOM.addClass(it,s['class']);DOM.add(n,'span',{'class':'mceIcon'+(s.icon?' mce_'+s.icon:'')});n=DOM.add(n,s.element||'span',{'class':'mceText',title:o.settings.title},o.settings.title);if(o.settings.style)DOM.setAttrib(n,'style',o.settings.style);if(tb.childNodes.length==1)DOM.addClass(ro,'mceFirst');if((n=ro.previousSibling)&&DOM.hasClass(n,cp+'ItemSeparator'))DOM.addClass(ro,'mceFirst');if(o.collapse)DOM.addClass(ro,cp+'ItemSub');if(n=ro.previousSibling)DOM.removeClass(n,'mceLast');DOM.addClass(ro,'mceLast');}});})();(function(){var DOM=tinymce.DOM;tinymce.create('tinymce.ui.Button:tinymce.ui.Control',{Button:function(id,s){this.parent(id,s);this.classPrefix='mceButton';},renderHTML:function(){var cp=this.classPrefix,s=this.settings,h,l;l=DOM.encode(s.label||'');h='<a id="'+this.id+'" href="javascript:;" class="'+cp+' '+cp+'Enabled '+s['class']+(l?' '+cp+'Labeled':'')+'" onmousedown="return false;" onclick="return false;" title="'+DOM.encode(s.title)+'">';if(s.image)h+='<img class="mceIcon" src="'+s.image+'" />'+l+'</a>';else h+='<span class="mceIcon '+s['class']+'"></span>'+(l?'<span class="'+cp+'Label">'+l+'</span>':'')+'</a>';return h;},postRender:function(){var t=this,s=t.settings;tinymce.dom.Event.add(t.id,'click',function(e){if(!t.isDisabled())return s.onclick.call(s.scope,e);});}});})();(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,each=tinymce.each,Dispatcher=tinymce.util.Dispatcher;tinymce.create('tinymce.ui.ListBox:tinymce.ui.Control',{ListBox:function(id,s){var t=this;t.parent(id,s);t.items=[];t.onChange=new Dispatcher(t);t.onPostRender=new Dispatcher(t);t.onAdd=new Dispatcher(t);t.onRenderMenu=new tinymce.util.Dispatcher(this);t.classPrefix='mceListBox';},select:function(v){var t=this,e,fv;if(v!=t.selectedValue){e=DOM.get(t.id+'_text');t.selectedValue=v;each(t.items,function(o){if(o.value==v){DOM.setHTML(e,DOM.encode(o.title));fv=1;return false;}});if(!fv){DOM.setHTML(e,DOM.encode(t.settings.title));DOM.addClass(e,'mceTitle');e=0;return;}else DOM.removeClass(e,'mceTitle');}e=0;},add:function(n,v,o){var t=this;o=o||{};o=tinymce.extend(o,{title:n,value:v});t.items.push(o);t.onAdd.dispatch(t,o);},getLength:function(){return this.items.length;},renderHTML:function(){var h='',t=this,s=t.settings,cp=t.classPrefix;h='<table id="'+t.id+'" cellpadding="0" cellspacing="0" class="'+cp+' '+cp+'Enabled'+(s['class']?(' '+s['class']):'')+'"><tbody><tr>';h+='<td>'+DOM.createHTML('a',{id:t.id+'_text',href:'javascript:;','class':'mceText',onclick:"return false;",onmousedown:'return false;'},DOM.encode(t.settings.title))+'</td>';h+='<td>'+DOM.createHTML('a',{id:t.id+'_open',tabindex:-1,href:'javascript:;','class':'mceOpen',onclick:"return false;",onmousedown:'return false;'},'<span></span>')+'</td>';h+='</tr></tbody></table>';return h;},showMenu:function(){var t=this,p1,p2,e=DOM.get(this.id),m;if(t.isDisabled()||t.items.length==0)return;if(t.menu&&t.menu.isMenuVisible)return t.hideMenu();if(!t.isMenuRendered){t.renderMenu();t.isMenuRendered=true;}p1=DOM.getPos(this.settings.menu_container);p2=DOM.getPos(e);m=t.menu;m.settings.offset_x=p2.x;m.settings.offset_y=p2.y;m.settings.keyboard_focus=!tinymce.isOpera;if(t.oldID)m.items[t.oldID].setSelected(0);each(t.items,function(o){if(o.value===t.selectedValue){m.items[o.id].setSelected(1);t.oldID=o.id;}});m.showMenu(0,e.clientHeight);Event.add(DOM.doc,'mousedown',t.hideMenu,t);DOM.addClass(t.id,t.classPrefix+'Selected');},hideMenu:function(e){var t=this;if(e&&e.type=="mousedown"&&(e.target.id==t.id+'_text'||e.target.id==t.id+'_open'))return;if(!e||!DOM.getParent(e.target,function(n){return DOM.hasClass(n,'mceMenu');})){DOM.removeClass(t.id,t.classPrefix+'Selected');Event.remove(DOM.doc,'mousedown',t.hideMenu,t);if(t.menu)t.menu.hideMenu();}},renderMenu:function(){var t=this,m;m=t.settings.control_manager.createDropMenu(t.id+'_menu',{menu_line:1,'class':t.classPrefix+'Menu mceNoIcons',max_width:150,max_height:150});m.onHideMenu.add(t.hideMenu,t);m.add({title:t.settings.title,'class':'mceMenuItemTitle',onclick:function(){if(t.settings.onselect('')!==false)t.select('');}});each(t.items,function(o){o.id=DOM.uniqueId();o.onclick=function(){if(t.settings.onselect(o.value)!==false)t.select(o.value);};m.add(o);});t.onRenderMenu.dispatch(t,m);t.menu=m;},postRender:function(){var t=this,cp=t.classPrefix;Event.add(t.id,'click',t.showMenu,t);Event.add(t.id+'_text','focus',function(e){if(!t._focused){t.keyDownHandler=Event.add(t.id+'_text','keydown',function(e){var idx=-1,v,kc=e.keyCode;each(t.items,function(v,i){if(t.selectedValue==v.value)idx=i;});if(kc==38)v=t.items[idx-1];else if(kc==40)v=t.items[idx+1];else if(kc==13){v=t.selectedValue;t.selectedValue=null;t.settings.onselect(v);return Event.cancel(e);}if(v){t.hideMenu();t.select(v.value);}});}t._focused=1;});Event.add(t.id+'_text','blur',function(){Event.remove(t.id+'_text','keydown',t.keyDownHandler);t._focused=0;});if(tinymce.isIE6||!DOM.boxModel){Event.add(t.id,'mouseover',function(){if(!DOM.hasClass(t.id,cp+'Disabled'))DOM.addClass(t.id,cp+'Hover');});Event.add(t.id,'mouseout',function(){if(!DOM.hasClass(t.id,cp+'Disabled'))DOM.removeClass(t.id,cp+'Hover');});}t.onPostRender.dispatch(t,DOM.get(t.id));},destroy:function(){this.parent();Event.clear(this.id+'_text');}});})();(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,each=tinymce.each,Dispatcher=tinymce.util.Dispatcher;tinymce.create('tinymce.ui.NativeListBox:tinymce.ui.ListBox',{NativeListBox:function(id,s){this.parent(id,s);this.classPrefix='mceNativeListBox';},setDisabled:function(s){DOM.get(this.id).disabled=s;},isDisabled:function(){return DOM.get(this.id).disabled;},select:function(v){var e=DOM.get(this.id),ol=e.options;v=''+(v||'');e.selectedIndex=0;each(ol,function(o,i){if(o.value==v){e.selectedIndex=i;return false;}});},add:function(n,v,a){var o,t=this;a=a||{};a.value=v;if(t.isRendered())DOM.add(DOM.get(this.id),'option',a,n);o={title:n,value:v,attribs:a};t.items.push(o);t.onAdd.dispatch(t,o);},getLength:function(){return DOM.get(this.id).options.length-1;},renderHTML:function(){var h,t=this;h=DOM.createHTML('option',{value:''},'-- '+t.settings.title+' --');each(t.items,function(it){h+=DOM.createHTML('option',{value:it.value},it.title);});h=DOM.createHTML('select',{id:t.id,'class':'mceNativeListBox'},h);return h;},postRender:function(){var t=this,ch;t.rendered=true;function onChange(e){var v=e.target.options[e.target.selectedIndex].value;t.onChange.dispatch(t,v);if(t.settings.onselect)t.settings.onselect(v);};Event.add(t.id,'change',onChange);Event.add(t.id,'keydown',function(e){var bf;Event.remove(t.id,'change',ch);bf=Event.add(t.id,'blur',function(){Event.add(t.id,'change',onChange);Event.remove(t.id,'blur',bf);});if(e.keyCode==13||e.keyCode==32){onChange(e);return Event.cancel(e);}});t.onPostRender.dispatch(t,DOM.get(t.id));}});})();(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,each=tinymce.each;tinymce.create('tinymce.ui.MenuButton:tinymce.ui.Button',{MenuButton:function(id,s){this.parent(id,s);this.onRenderMenu=new tinymce.util.Dispatcher(this);s.menu_container=s.menu_container||DOM.doc.body;},showMenu:function(){var t=this,p1,p2,e=DOM.get(t.id),m;if(t.isDisabled())return;if(!t.isMenuRendered){t.renderMenu();t.isMenuRendered=true;}if(t.isMenuVisible)return t.hideMenu();p1=DOM.getPos(t.settings.menu_container);p2=DOM.getPos(e);m=t.menu;m.settings.offset_x=p2.x;m.settings.offset_y=p2.y;m.settings.vp_offset_x=p2.x;m.settings.vp_offset_y=p2.y;m.settings.keyboard_focus=t._focused;m.showMenu(0,e.clientHeight);Event.add(DOM.doc,'mousedown',t.hideMenu,t);t.setState('Selected',1);t.isMenuVisible=1;},renderMenu:function(){var t=this,m;m=t.settings.control_manager.createDropMenu(t.id+'_menu',{menu_line:1,'class':this.classPrefix+'Menu',icons:t.settings.icons});m.onHideMenu.add(t.hideMenu,t);t.onRenderMenu.dispatch(t,m);t.menu=m;},hideMenu:function(e){var t=this;if(e&&e.type=="mousedown"&&DOM.getParent(e.target,function(e){return e.id===t.id||e.id===t.id+'_open';}))return;if(!e||!DOM.getParent(e.target,function(n){return DOM.hasClass(n,'mceMenu');})){t.setState('Selected',0);Event.remove(DOM.doc,'mousedown',t.hideMenu,t);if(t.menu)t.menu.hideMenu();}t.isMenuVisible=0;},postRender:function(){var t=this,s=t.settings;Event.add(t.id,'click',function(){if(!t.isDisabled()){if(s.onclick)s.onclick(t.value);t.showMenu();}});}});})();(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,each=tinymce.each;tinymce.create('tinymce.ui.SplitButton:tinymce.ui.MenuButton',{SplitButton:function(id,s){this.parent(id,s);this.classPrefix='mceSplitButton';},renderHTML:function(){var h,t=this,s=t.settings,h1;h='<tbody><tr>';if(s.image)h1=DOM.createHTML('img ',{src:s.image,'class':'mceAction '+s['class']});else h1=DOM.createHTML('span',{'class':'mceAction '+s['class']},'');h+='<td>'+DOM.createHTML('a',{id:t.id+'_action',href:'javascript:;','class':'mceAction '+s['class'],onclick:"return false;",onmousedown:'return false;',title:s.title},h1)+'</td>';h1=DOM.createHTML('span',{'class':'mceOpen '+s['class']});h+='<td>'+DOM.createHTML('a',{id:t.id+'_open',href:'javascript:;','class':'mceOpen '+s['class'],onclick:"return false;",onmousedown:'return false;',title:s.title},h1)+'</td>';h+='</tr></tbody>';return DOM.createHTML('table',{id:t.id,'class':'mceSplitButton mceSplitButtonEnabled '+s['class'],cellpadding:'0',cellspacing:'0',onmousedown:'return false;',title:s.title},h);},postRender:function(){var t=this,s=t.settings;if(s.onclick){Event.add(t.id+'_action','click',function(){if(!t.isDisabled())s.onclick(t.value);});}Event.add(t.id+'_open','click',t.showMenu,t);Event.add(t.id+'_open','focus',function(){t._focused=1;});Event.add(t.id+'_open','blur',function(){t._focused=0;});if(tinymce.isIE6||!DOM.boxModel){Event.add(t.id,'mouseover',function(){if(!DOM.hasClass(t.id,'mceSplitButtonDisabled'))DOM.addClass(t.id,'mceSplitButtonHover');});Event.add(t.id,'mouseout',function(){if(!DOM.hasClass(t.id,'mceSplitButtonDisabled'))DOM.removeClass(t.id,'mceSplitButtonHover');});}},destroy:function(){this.parent();Event.clear(this.id+'_action');Event.clear(this.id+'_open');}});})();(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,is=tinymce.is,each=tinymce.each;tinymce.create('tinymce.ui.ColorSplitButton:tinymce.ui.SplitButton',{ColorSplitButton:function(id,s){var t=this;t.parent(id,s);t.settings=s=tinymce.extend({colors:'000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,008000,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF',grid_width:8,default_color:'#888888'},t.settings);t.onShowMenu=new tinymce.util.Dispatcher(t);t.onHideMenu=new tinymce.util.Dispatcher(t);t.value=s.default_color;},showMenu:function(){var t=this,r,p,e,p2;if(t.isDisabled())return;if(!t.isMenuRendered){t.renderMenu();t.isMenuRendered=true;}if(t.isMenuVisible)return t.hideMenu();e=DOM.get(t.id);DOM.show(t.id+'_menu');DOM.addClass(e,'mceSplitButtonSelected');p2=DOM.getPos(e);DOM.setStyles(t.id+'_menu',{left:p2.x,top:p2.y+e.clientHeight,zIndex:200000});e=0;Event.add(DOM.doc,'mousedown',t.hideMenu,t);if(t._focused){t._keyHandler=Event.add(t.id+'_menu','keydown',function(e){if(e.keyCode==27)t.hideMenu();});DOM.select('a',t.id+'_menu')[0].focus();}t.onShowMenu.dispatch(t);t.isMenuVisible=1;},hideMenu:function(e){var t=this;if(e&&e.type=="mousedown"&&DOM.getParent(e.target,function(e){return e.id===t.id+'_open';}))return;if(!e||!DOM.getParent(e.target,function(n){return DOM.hasClass(n,'mceSplitButtonMenu');})){DOM.removeClass(t.id,'mceSplitButtonSelected');Event.remove(DOM.doc,'mousedown',t.hideMenu,t);Event.remove(t.id+'_menu','keydown',t._keyHandler);DOM.hide(t.id+'_menu');}t.onHideMenu.dispatch(t);t.isMenuVisible=0;},renderMenu:function(){var t=this,m,i=0,s=t.settings,n,tb,tr,w;w=DOM.add(s.menu_container,'div',{id:t.id+'_menu','class':s['menu_class']+' '+s['class'],style:'position:absolute;left:0;top:-1000px;'});m=DOM.add(w,'div',{'class':s['class']+' mceSplitButtonMenu'});DOM.add(m,'span',{'class':'mceMenuLine'});n=DOM.add(m,'table',{'class':'mceColorSplitMenu'});tb=DOM.add(n,'tbody');i=0;each(is(s.colors,'array')?s.colors:s.colors.split(','),function(c){c=c.replace(/^#/,'');if(!i--){tr=DOM.add(tb,'tr');i=s.grid_width-1;}n=DOM.add(tr,'td');n=DOM.add(n,'a',{href:'javascript:;',style:{backgroundColor:'#'+c},mce_color:'#'+c});});if(s.more_colors_func){n=DOM.add(tb,'tr');n=DOM.add(n,'td',{colspan:s.grid_width,'class':'mceMoreColors'});n=DOM.add(n,'a',{id:t.id+'_more',href:'javascript:;',onclick:'return false;','class':'mceMoreColors'},s.more_colors_title);Event.add(n,'click',function(e){s.more_colors_func.call(s.more_colors_scope||this);return Event.cancel(e);});}DOM.addClass(m,'mceColorSplitMenu');Event.add(t.id+'_menu','click',function(e){var c;e=e.target;if(e.nodeName=='A'&&(c=e.getAttribute('mce_color')))t.setColor(c);return Event.cancel(e);});return w;},setColor:function(c){var t=this;DOM.setStyle(t.id+'_preview','backgroundColor',c);t.value=c;t.hideMenu();t.settings.onselect(c);},postRender:function(){var t=this,id=t.id;t.parent();DOM.add(id+'_action','div',{id:id+'_preview','class':'mceColorPreview'});},destroy:function(){this.parent();Event.clear(this.id+'_menu');Event.clear(this.id+'_more');DOM.remove(this.id+'_menu');}});})();tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container',{renderHTML:function(){var t=this,h='',c,co,dom=tinymce.DOM,s=t.settings,i,pr,nx,cl;cl=t.controls;for(i=0;i<cl.length;i++){co=cl[i];pr=cl[i-1];nx=cl[i+1];if(i===0){c='mceToolbarStart';if(co.Button)c+=' mceToolbarStartButton';else if(co.SplitButton)c+=' mceToolbarStartSplitButton';else if(co.ListBox)c+=' mceToolbarStartListBox';h+=dom.createHTML('td',{'class':c},dom.createHTML('span',null,'<!-- IE -->'));}if(pr&&co.ListBox){if(pr.Button||pr.SplitButton)h+=dom.createHTML('td',{'class':'mceToolbarEnd'},dom.createHTML('span',null,'<!-- IE -->'));}if(dom.stdMode)h+='<td style="position: relative">'+co.renderHTML()+'</td>';else h+='<td>'+co.renderHTML()+'</td>';if(nx&&co.ListBox){if(nx.Button||nx.SplitButton)h+=dom.createHTML('td',{'class':'mceToolbarStart'},dom.createHTML('span',null,'<!-- IE -->'));}}c='mceToolbarEnd';if(co.Button)c+=' mceToolbarEndButton';else if(co.SplitButton)c+=' mceToolbarEndSplitButton';else if(co.ListBox)c+=' mceToolbarEndListBox';h+=dom.createHTML('td',{'class':c},dom.createHTML('span',null,'<!-- IE -->'));return dom.createHTML('table',{id:t.id,'class':'mceToolbar'+(s['class']?' '+s['class']:''),cellpadding:'0',cellspacing:'0',align:t.settings.align||''},'<tbody><tr>'+h+'</tr></tbody>');}});(function(){var Dispatcher=tinymce.util.Dispatcher,each=tinymce.each;tinymce.create('tinymce.AddOnManager',{items:[],urls:{},lookup:{},onAdd:new Dispatcher(this),get:function(n){return this.lookup[n];},requireLangPack:function(n){var u,s=tinymce.EditorManager.settings;if(s&&s.language){u=this.urls[n]+'/langs/'+s.language+'.js';if(!tinymce.dom.Event.domLoaded&&!s.strict_mode)tinymce.ScriptLoader.load(u);else tinymce.ScriptLoader.add(u);}},add:function(id,o){this.items.push(o);this.lookup[id]=o;this.onAdd.dispatch(this,id,o);return o;},load:function(n,u,cb,s){var t=this;if(t.urls[n])return;if(u.indexOf('/')!=0&&u.indexOf('://')==-1)u=tinymce.baseURL+'/'+u;t.urls[n]=u.substring(0,u.lastIndexOf('/'));tinymce.ScriptLoader.add(u,cb,s);}});tinymce.PluginManager=new tinymce.AddOnManager();tinymce.ThemeManager=new tinymce.AddOnManager();}());(function(){var each=tinymce.each,extend=tinymce.extend,DOM=tinymce.DOM,Event=tinymce.dom.Event,ThemeManager=tinymce.ThemeManager,PluginManager=tinymce.PluginManager,explode=tinymce.explode;tinymce.create('static tinymce.EditorManager',{editors:{},i18n:{},activeEditor:null,preInit:function(){var t=this,lo=window.location;tinymce.documentBaseURL=lo.href.replace(/[\?#].*$/,'').replace(/[\/\\][^\/]+$/,'');if(!/[\/\\]$/.test(tinymce.documentBaseURL))tinymce.documentBaseURL+='/';tinymce.baseURL=new tinymce.util.URI(tinymce.documentBaseURL).toAbsolute(tinymce.baseURL);tinymce.EditorManager.baseURI=new tinymce.util.URI(tinymce.baseURL);if(document.domain&&lo.hostname!=document.domain)tinymce.relaxedDomain=document.domain;if(!tinymce.relaxedDomain&&tinymce.EditorManager.baseURI.host!=lo.hostname&&lo.hostname)document.domain=tinymce.relaxedDomain=lo.hostname.replace(/.*\.(.+\..+)$/,'$1');t.onBeforeUnload=new tinymce.util.Dispatcher(t);Event.add(window,'beforeunload',function(e){t.onBeforeUnload.dispatch(t,e);});},init:function(s){var t=this,pl,sl=tinymce.ScriptLoader,c,e,el=[],ed;function execCallback(se,n,s){var f=se[n];if(!f)return;if(tinymce.is(f,'string')){s=f.replace(/\.\w+$/,'');s=s?tinymce.resolve(s):0;f=tinymce.resolve(f);}return f.apply(s||this,Array.prototype.slice.call(arguments,2));};s=extend({theme:"simple",language:"en",strict_loading_mode:document.contentType=='application/xhtml+xml'},s);t.settings=s;if(!Event.domLoaded&&!s.strict_loading_mode){if(s.language)sl.add(tinymce.baseURL+'/langs/'+s.language+'.js');if(s.theme&&s.theme.charAt(0)!='-'&&!ThemeManager.urls[s.theme])ThemeManager.load(s.theme,'themes/'+s.theme+'/editor_template'+tinymce.suffix+'.js');if(s.plugins){pl=explode(s.plugins);if(tinymce.inArray(pl,'compat2x')!=-1)PluginManager.load('compat2x','plugins/compat2x/editor_plugin'+tinymce.suffix+'.js');each(pl,function(v){if(v&&v.charAt(0)!='-'&&!PluginManager.urls[v]){if(!tinymce.isWebKit&&v=='safari')return;PluginManager.load(v,'plugins/'+v+'/editor_plugin'+tinymce.suffix+'.js');}});}sl.loadQueue();}Event.add(document,'init',function(){var l,co;execCallback(s,'onpageload');if(s.browsers){l=false;each(explode(s.browsers),function(v){switch(v){case'ie':case'msie':if(tinymce.isIE)l=true;break;case'gecko':if(tinymce.isGecko)l=true;break;case'safari':case'webkit':if(tinymce.isWebKit)l=true;break;case'opera':if(tinymce.isOpera)l=true;break;}});if(!l)return;}switch(s.mode){case"exact":l=s.elements||'';if(l.length>0){each(explode(l),function(v){if(DOM.get(v)){ed=new tinymce.Editor(v,s);el.push(ed);ed.render(1);}else{c=0;each(document.forms,function(f){each(f.elements,function(e){if(e.name===v){v='mce_editor_'+c;DOM.setAttrib(e,'id',v);ed=new tinymce.Editor(v,s);el.push(ed);ed.render(1);}});});}});}break;case"textareas":case"specific_textareas":function hasClass(n,c){return c.constructor===RegExp?c.test(n.className):DOM.hasClass(n,c);};each(DOM.select('textarea'),function(v){if(s.editor_deselector&&hasClass(v,s.editor_deselector))return;if(!s.editor_selector||hasClass(v,s.editor_selector)){e=DOM.get(v.name);if(!v.id&&!e)v.id=v.name;if(!v.id||t.get(v.id))v.id=DOM.uniqueId();ed=new tinymce.Editor(v.id,s);el.push(ed);ed.render(1);}});break;}if(s.oninit){l=co=0;each(el,function(ed){co++;if(!ed.initialized){ed.onInit.add(function(){l++;if(l==co)execCallback(s,'oninit');});}else l++;if(l==co)execCallback(s,'oninit');});}});},get:function(id){return this.editors[id];},getInstanceById:function(id){return this.get(id);},add:function(e){this.editors[e.id]=e;this._setActive(e);return e;},remove:function(e){var t=this;if(!t.editors[e.id])return null;delete t.editors[e.id];if(t.activeEditor==e){each(t.editors,function(e){t._setActive(e);return false;});}e.destroy();return e;},execCommand:function(c,u,v){var t=this,ed=t.get(v),w;switch(c){case"mceFocus":ed.focus();return true;case"mceAddEditor":case"mceAddControl":if(!t.get(v))new tinymce.Editor(v,t.settings).render();return true;case"mceAddFrameControl":w=v.window;w.tinyMCE=tinyMCE;w.tinymce=tinymce;tinymce.DOM.doc=w.document;tinymce.DOM.win=w;ed=new tinymce.Editor(v.element_id,v);ed.render();if(tinymce.isIE){function clr(){ed.destroy();w.detachEvent('onunload',clr);w=w.tinyMCE=w.tinymce=null;};w.attachEvent('onunload',clr);}v.page_window=null;return true;case"mceRemoveEditor":case"mceRemoveControl":ed.remove();return true;case'mceToggleEditor':if(!ed){t.execCommand('mceAddControl',0,v);return true;}if(ed.isHidden())ed.show();else ed.hide();return true;}if(t.activeEditor)return t.activeEditor.execCommand(c,u,v);return false;},execInstanceCommand:function(id,c,u,v){var ed=this.get(id);if(ed)return ed.execCommand(c,u,v);return false;},triggerSave:function(){each(this.editors,function(e){e.save();});},addI18n:function(p,o){var lo,i18n=this.i18n;if(!tinymce.is(p,'string')){each(p,function(o,lc){each(o,function(o,g){each(o,function(o,k){if(g==='common')i18n[lc+'.'+k]=o;else i18n[lc+'.'+g+'.'+k]=o;});});});}else{each(o,function(o,k){i18n[p+'.'+k]=o;});}},_setActive:function(e){this.selectedInstance=this.activeEditor=e;}});tinymce.EditorManager.preInit();})();var tinyMCE=window.tinyMCE=tinymce.EditorManager;(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,extend=tinymce.extend,Dispatcher=tinymce.util.Dispatcher;var each=tinymce.each,isGecko=tinymce.isGecko,isIE=tinymce.isIE,isWebKit=tinymce.isWebKit;var is=tinymce.is,ThemeManager=tinymce.ThemeManager,PluginManager=tinymce.PluginManager,EditorManager=tinymce.EditorManager;var inArray=tinymce.inArray,grep=tinymce.grep,explode=tinymce.explode;tinymce.create('tinymce.Editor',{Editor:function(id,s){var t=this;t.id=t.editorId=id;t.execCommands={};t.queryStateCommands={};t.queryValueCommands={};t.plugins={};each(['onPreInit','onBeforeRenderUI','onPostRender','onInit','onRemove','onActivate','onDeactivate','onClick','onEvent','onMouseUp','onMouseDown','onDblClick','onKeyDown','onKeyUp','onKeyPress','onContextMenu','onSubmit','onReset','onPaste','onPreProcess','onPostProcess','onBeforeSetContent','onBeforeGetContent','onSetContent','onGetContent','onLoadContent','onSaveContent','onNodeChange','onChange','onBeforeExecCommand','onExecCommand','onUndo','onRedo','onVisualAid','onSetProgressState'],function(e){t[e]=new Dispatcher(t);});t.settings=s=extend({id:id,language:'en',docs_language:'en',theme:'simple',skin:'default',delta_width:0,delta_height:0,popup_css:'',plugins:'',document_base_url:tinymce.documentBaseURL,add_form_submit_trigger:1,submit_patch:1,add_unload_trigger:1,convert_urls:1,relative_urls:1,remove_script_host:1,table_inline_editing:0,object_resizing:1,cleanup:1,accessibility_focus:1,custom_shortcuts:1,custom_undo_redo_keyboard_shortcuts:1,custom_undo_redo_restore_selection:1,custom_undo_redo:1,doctype:'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">',visual_table_class:'mceItemTable',visual:1,inline_styles:true,convert_fonts_to_spans:true,font_size_style_values:'xx-small,x-small,small,medium,large,x-large,xx-large',apply_source_formatting:1,directionality:'ltr',forced_root_block:'p',valid_elements:'@[id|class|style|title|dir<ltr?rtl|lang|xml::lang|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup],a[rel|rev|charset|hreflang|tabindex|accesskey|type|name|href|target|title|class|onfocus|onblur],strong/b,em/i,strike,u,#p[align],-ol[type|compact],-ul[type|compact],-li,br,img[longdesc|usemap|src|border|alt=|title|hspace|vspace|width|height|align],-sub,-sup,-blockquote[cite],-table[border=0|cellspacing|cellpadding|width|frame|rules|height|align|summary|bgcolor|background|bordercolor],-tr[rowspan|width|height|align|valign|bgcolor|background|bordercolor],tbody,thead,tfoot,#td[colspan|rowspan|width|height|align|valign|bgcolor|background|bordercolor|scope],#th[colspan|rowspan|width|height|align|valign|scope],caption,-div,-span,-code,-pre,address,-h1,-h2,-h3,-h4,-h5,-h6,hr[size|noshade],-font[face|size|color],dd,dl,dt,cite,abbr,acronym,del[datetime|cite],ins[datetime|cite],object[classid|width|height|codebase|*],param[name|value],embed[type|width|height|src|*],script[src|type],map[name],area[shape|coords|href|alt|target],bdo,button,col[align|char|charoff|span|valign|width],colgroup[align|char|charoff|span|valign|width],dfn,fieldset,form[action|accept|accept-charset|enctype|method],input[accept|alt|checked|disabled|maxlength|name|readonly|size|src|type|value|tabindex|accesskey],kbd,label[for],legend,noscript,optgroup[label|disabled],option[disabled|label|selected|value],q[cite],samp,select[disabled|multiple|name|size],small,textarea[cols|rows|disabled|name|readonly],tt,var,big',hidden_input:1,padd_empty_editor:1,render_ui:1,init_theme:1,force_p_newlines:1,indentation:'30px'},s);t.documentBaseURI=new tinymce.util.URI(s.document_base_url||tinymce.documentBaseURL,{base_uri:tinyMCE.baseURI});t.baseURI=EditorManager.baseURI;t.execCallback('setup',t);},render:function(nst){var t=this,s=t.settings,id=t.id,sl=tinymce.ScriptLoader;if(!Event.domLoaded){Event.add(document,'init',function(){t.render();});return;}if(!nst){s.strict_loading_mode=1;tinyMCE.settings=s;}if(!t.getElement())return;if(s.strict_loading_mode){sl.settings.strict_mode=s.strict_loading_mode;tinymce.DOM.settings.strict=1;}if(!/TEXTAREA|INPUT/i.test(t.getElement().nodeName)&&s.hidden_input&&DOM.getParent(id,'form'))DOM.insertAfter(DOM.create('input',{type:'hidden',name:id}),id);t.windowManager=new tinymce.WindowManager(t);if(s.encoding=='xml'){t.onGetContent.add(function(ed,o){if(o.save)o.content=DOM.encode(o.content);});}if(s.add_form_submit_trigger){t.onSubmit.addToTop(function(){if(t.initialized){t.save();t.isNotDirty=1;}});}if(s.add_unload_trigger&&!s.ask){t._beforeUnload=tinyMCE.onBeforeUnload.add(function(){if(t.initialized&&!t.destroyed&&!t.isHidden())t.save({format:'raw',no_events:true});});}tinymce.addUnload(t.destroy,t);if(s.submit_patch){t.onBeforeRenderUI.add(function(){var n=t.getElement().form;if(!n)return;if(n._mceOldSubmit)return;if(!n.submit.nodeType&&!n.submit.length){t.formElement=n;n._mceOldSubmit=n.submit;n.submit=function(){EditorManager.triggerSave();t.isNotDirty=1;return this._mceOldSubmit(this);};}n=null;});}function loadScripts(){if(s.language)sl.add(tinymce.baseURL+'/langs/'+s.language+'.js');if(s.theme.charAt(0)!='-'&&!ThemeManager.urls[s.theme])ThemeManager.load(s.theme,'themes/'+s.theme+'/editor_template'+tinymce.suffix+'.js');each(explode(s.plugins),function(p){if(p&&p.charAt(0)!='-'&&!PluginManager.urls[p]){if(!isWebKit&&p=='safari')return;PluginManager.load(p,'plugins/'+p+'/editor_plugin'+tinymce.suffix+'.js');}});sl.loadQueue(function(){if(s.ask){function ask(){window.setTimeout(function(){Event.remove(t.id,'focus',ask);t.windowManager.confirm(t.getLang('edit_confirm'),function(s){if(s)t.init();});},0);};Event.add(t.id,'focus',ask);return;}if(!t.removed)t.init();});};if(s.plugins.indexOf('compat2x')!=-1){PluginManager.load('compat2x','plugins/compat2x/editor_plugin'+tinymce.suffix+'.js');sl.loadQueue(loadScripts);}else loadScripts();},init:function(){var n,t=this,s=t.settings,w,h,e=t.getElement(),o,ti,u,bi,bc,re;EditorManager.add(t);s.theme=s.theme.replace(/-/,'');o=ThemeManager.get(s.theme);t.theme=new o();if(t.theme.init&&s.init_theme)t.theme.init(t,ThemeManager.urls[s.theme]||tinymce.documentBaseURL.replace(/\/$/,''));each(explode(s.plugins.replace(/\-/g,'')),function(p){var c=PluginManager.get(p),u=PluginManager.urls[p]||tinymce.documentBaseURL.replace(/\/$/,''),po;if(c){po=new c(t,u);t.plugins[p]=po;if(po.init)po.init(t,u);}});if(s.popup_css)s.popup_css=t.documentBaseURI.toAbsolute(s.popup_css);else s.popup_css=t.baseURI.toAbsolute("themes/"+s.theme+"/skins/"+s.skin+"/dialog.css");if(s.popup_css_add)s.popup_css+=','+t.documentBaseURI.toAbsolute(s.popup_css_add);t.controlManager=new tinymce.ControlManager(t);t.undoManager=new tinymce.UndoManager(t);t.undoManager.onAdd.add(function(um,l){if(!l.initial)return t.onChange.dispatch(t,l,um);});t.undoManager.onUndo.add(function(um,l){return t.onUndo.dispatch(t,l,um);});t.undoManager.onRedo.add(function(um,l){return t.onRedo.dispatch(t,l,um);});if(s.custom_undo_redo){t.onExecCommand.add(function(ed,cmd,ui,val,a){if(cmd!='Undo'&&cmd!='Redo'&&cmd!='mceRepaint'&&(!a||!a.skip_undo))t.undoManager.add();});}t.onExecCommand.add(function(ed,c){if(!/^(FontName|FontSize)$/.test(c))t.nodeChanged();});if(isGecko){function repaint(a,o){if(!o||!o.initial)t.execCommand('mceRepaint');};t.onUndo.add(repaint);t.onRedo.add(repaint);t.onSetContent.add(repaint);}t.onBeforeRenderUI.dispatch(t,t.controlManager);if(s.render_ui){w=s.width||e.style.width||e.offsetWidth;h=s.height||e.style.height||e.offsetHeight;t.orgDisplay=e.style.display;re=/^[0-9\.]+(|px)$/i;if(re.test(''+w))w=Math.max(parseInt(w)+(o.deltaWidth||0),100);if(re.test(''+h))h=Math.max(parseInt(h)+(o.deltaHeight||0),100);o=t.theme.renderUI({targetNode:e,width:w,height:h,deltaWidth:s.delta_width,deltaHeight:s.delta_height});t.editorContainer=o.editorContainer;}DOM.setStyles(o.sizeContainer||o.editorContainer,{width:w,height:h});h=(o.iframeHeight||h)+((h+'').indexOf('%')==-1?(o.deltaHeight||0):'');if(h<100)h=100;t.iframeHTML=s.doctype+'<html><head xmlns="http://www.w3.org/1999/xhtml"><base href="'+t.documentBaseURI.getURI()+'" />';t.iframeHTML+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';if(tinymce.relaxedDomain)t.iframeHTML+='<script type="text/javascript">document.domain = "'+tinymce.relaxedDomain+'";</script>';bi=s.body_id||'tinymce';if(bi.indexOf('=')!=-1){bi=t.getParam('body_id','','hash');bi=bi[t.id]||bi;}bc=s.body_class||'';if(bc.indexOf('=')!=-1){bc=t.getParam('body_class','','hash');bc=bc[t.id]||'';}t.iframeHTML+='</head><body id="'+bi+'" class="mceContentBody '+bc+'"></body></html>';if(tinymce.relaxedDomain){if(isIE||(tinymce.isOpera&&parseFloat(opera.version())>=9.5))u='javascript:(function(){document.open();document.domain="'+document.domain+'";var ed = window.parent.tinyMCE.get("'+t.id+'");document.write(ed.iframeHTML);document.close();ed.setupIframe();})()';else if(tinymce.isOpera)u='javascript:(function(){document.open();document.domain="'+document.domain+'";document.close();ed.setupIframe();})()';}n=DOM.add(o.iframeContainer,'iframe',{id:t.id+"_ifr",src:u||'javascript:""',frameBorder:'0',style:{width:'100%',height:h}});t.contentAreaContainer=o.iframeContainer;DOM.get(o.editorContainer).style.display=t.orgDisplay;DOM.get(t.id).style.display='none';if(tinymce.isOldWebKit){Event.add(n,'load',t.setupIframe,t);n.src=tinymce.baseURL+'/plugins/safari/blank.htm';}else{if(!isIE||!tinymce.relaxedDomain)t.setupIframe();e=n=o=null;}},setupIframe:function(){var t=this,s=t.settings,e=DOM.get(t.id),d=t.getDoc(),h,b;if(!isIE||!tinymce.relaxedDomain){d.open();d.write(t.iframeHTML);d.close();}if(!isIE){try{if(!s.readonly)d.designMode='On';}catch(ex){}}if(isIE){b=t.getBody();DOM.hide(b);if(!s.readonly)b.contentEditable=true;DOM.show(b);}t.dom=new tinymce.DOM.DOMUtils(t.getDoc(),{keep_values:true,url_converter:t.convertURL,url_converter_scope:t,hex_colors:s.force_hex_style_colors,class_filter:s.class_filter,update_styles:1,fix_ie_paragraphs:1});t.serializer=new tinymce.dom.Serializer({entity_encoding:s.entity_encoding,entities:s.entities,valid_elements:s.verify_html===false?'*[*]':s.valid_elements,extended_valid_elements:s.extended_valid_elements,valid_child_elements:s.valid_child_elements,invalid_elements:s.invalid_elements,fix_table_elements:s.fix_table_elements,fix_list_elements:s.fix_list_elements,fix_content_duplication:s.fix_content_duplication,convert_fonts_to_spans:s.convert_fonts_to_spans,font_size_classes:s.font_size_classes,font_size_style_values:s.font_size_style_values,apply_source_formatting:s.apply_source_formatting,remove_linebreaks:s.remove_linebreaks,dom:t.dom});t.selection=new tinymce.dom.Selection(t.dom,t.getWin(),t.serializer);t.forceBlocks=new tinymce.ForceBlocks(t,{forced_root_block:s.forced_root_block});t.editorCommands=new tinymce.EditorCommands(t);t.serializer.onPreProcess.add(function(se,o){return t.onPreProcess.dispatch(t,o,se);});t.serializer.onPostProcess.add(function(se,o){return t.onPostProcess.dispatch(t,o,se);});t.onPreInit.dispatch(t);if(!s.gecko_spellcheck)t.getBody().spellcheck=0;if(!s.readonly)t._addEvents();t.controlManager.onPostRender.dispatch(t,t.controlManager);t.onPostRender.dispatch(t);if(s.directionality)t.getBody().dir=s.directionality;if(s.nowrap)t.getBody().style.whiteSpace="nowrap";if(s.auto_resize)t.onNodeChange.add(t.resizeToContent,t);if(s.custom_elements){function handleCustom(ed,o){each(explode(s.custom_elements),function(v){var n;if(v.indexOf('~')===0){v=v.substring(1);n='span';}else n='div';o.content=o.content.replace(new RegExp('<('+v+')([^>]*)>','g'),'<'+n+' mce_name="$1"$2>');o.content=o.content.replace(new RegExp('</('+v+')>','g'),'</'+n+'>');});};t.onBeforeSetContent.add(handleCustom);t.onPostProcess.add(function(ed,o){if(o.set)handleCustom(ed,o)});}if(s.handle_node_change_callback){t.onNodeChange.add(function(ed,cm,n){t.execCallback('handle_node_change_callback',t.id,n,-1,-1,true,t.selection.isCollapsed());});}if(s.save_callback){t.onSaveContent.add(function(ed,o){var h=t.execCallback('save_callback',t.id,o.content,t.getBody());if(h)o.content=h;});}if(s.onchange_callback){t.onChange.add(function(ed,l){t.execCallback('onchange_callback',t,l);});}if(s.convert_newlines_to_brs){t.onBeforeSetContent.add(function(ed,o){if(o.initial)o.content=o.content.replace(/\r?\n/g,'<br />');});}if(s.fix_nesting&&isIE){t.onBeforeSetContent.add(function(ed,o){o.content=t._fixNesting(o.content);});}if(s.preformatted){t.onPostProcess.add(function(ed,o){o.content=o.content.replace(/^\s*<pre.*?>/,'');o.content=o.content.replace(/<\/pre>\s*$/,'');if(o.set)o.content='<pre class="mceItemHidden">'+o.content+'</pre>';});}if(s.verify_css_classes){t.serializer.attribValueFilter=function(n,v){var s,cl;if(n=='class'){if(!t.classesRE){cl=t.dom.getClasses();if(cl.length>0){s='';each(cl,function(o){s+=(s?'|':'')+o['class'];});t.classesRE=new RegExp('('+s+')','gi');}}return!t.classesRE||/(\bmceItem\w+\b|\bmceTemp\w+\b)/g.test(v)||t.classesRE.test(v)?v:'';}return v;};}if(s.convert_fonts_to_spans)t._convertFonts();if(s.inline_styles)t._convertInlineElements();if(s.cleanup_callback){t.onBeforeSetContent.add(function(ed,o){o.content=t.execCallback('cleanup_callback','insert_to_editor',o.content,o);});t.onPreProcess.add(function(ed,o){if(o.set)t.execCallback('cleanup_callback','insert_to_editor_dom',o.node,o);if(o.get)t.execCallback('cleanup_callback','get_from_editor_dom',o.node,o);});t.onPostProcess.add(function(ed,o){if(o.set)o.content=t.execCallback('cleanup_callback','insert_to_editor',o.content,o);if(o.get)o.content=t.execCallback('cleanup_callback','get_from_editor',o.content,o);});}if(s.save_callback){t.onGetContent.add(function(ed,o){if(o.save)o.content=t.execCallback('save_callback',t.id,o.content,t.getBody());});}if(s.handle_event_callback){t.onEvent.add(function(ed,e,o){if(t.execCallback('handle_event_callback',e,ed,o)===false)Event.cancel(e);});}t.onSetContent.add(function(){t.addVisual(t.getBody());});if(s.padd_empty_editor){t.onPostProcess.add(function(ed,o){o.content=o.content.replace(/^(<p>( | |\s|\u00a0|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/,'');});}if(isGecko&&!s.readonly){try{d.designMode='Off';d.designMode='On';}catch(ex){}}setTimeout(function(){if(t.removed)return;t.load({initial:true,format:(s.cleanup_on_startup?'html':'raw')});t.startContent=t.getContent({format:'raw'});t.undoManager.add({initial:true});t.initialized=true;t.onInit.dispatch(t);t.execCallback('setupcontent_callback',t.id,t.getBody(),t.getDoc());t.execCallback('init_instance_callback',t);t.focus(true);t.nodeChanged({initial:1});if(s.content_css){tinymce.each(explode(s.content_css),function(u){t.dom.loadCSS(t.documentBaseURI.toAbsolute(u));});}if(s.auto_focus){setTimeout(function(){var ed=EditorManager.get(s.auto_focus);ed.selection.select(ed.getBody(),1);ed.selection.collapse(1);ed.getWin().focus();},100);}},1);e=null;},focus:function(sf){var oed,t=this,ce=t.settings.content_editable;if(!sf){if(!ce&&(!isIE||t.selection.getNode().ownerDocument!=t.getDoc()))t.getWin().focus();}if(EditorManager.activeEditor!=t){if((oed=EditorManager.activeEditor)!=null)oed.onDeactivate.dispatch(oed,t);t.onActivate.dispatch(t,oed);}EditorManager._setActive(t);},execCallback:function(n){var t=this,f=t.settings[n],s;if(!f)return;if(t.callbackLookup&&(s=t.callbackLookup[n])){f=s.func;s=s.scope;}if(is(f,'string')){s=f.replace(/\.\w+$/,'');s=s?tinymce.resolve(s):0;f=tinymce.resolve(f);t.callbackLookup=t.callbackLookup||{};t.callbackLookup[n]={func:f,scope:s};}return f.apply(s||t,Array.prototype.slice.call(arguments,1));},translate:function(s){var c=this.settings.language||'en',i18n=EditorManager.i18n;if(!s)return'';return i18n[c+'.'+s]||s.replace(/{\#([^}]+)\}/g,function(a,b){return i18n[c+'.'+b]||'{#'+b+'}';});},getLang:function(n,dv){return EditorManager.i18n[(this.settings.language||'en')+'.'+n]||(is(dv)?dv:'{#'+n+'}');},getParam:function(n,dv,ty){var tr=tinymce.trim,v=is(this.settings[n])?this.settings[n]:dv,o;if(ty==='hash'){o={};if(is(v,'string')){each(v.indexOf('=')>0?v.split(/[;,](?![^=;,]*(?:[;,]|$))/):v.split(','),function(v){v=v.split('=');if(v.length>1)o[tr(v[0])]=tr(v[1]);else o[tr(v[0])]=tr(v);});}else o=v;return o;}return v;},nodeChanged:function(o){var t=this,s=t.selection,n=s.getNode()||t.getBody();if(t.initialized){t.onNodeChange.dispatch(t,o?o.controlManager||t.controlManager:t.controlManager,isIE&&n.ownerDocument!=t.getDoc()?t.getBody():n,s.isCollapsed(),o);}},addButton:function(n,s){var t=this;t.buttons=t.buttons||{};t.buttons[n]=s;},addCommand:function(n,f,s){this.execCommands[n]={func:f,scope:s||this};},addQueryStateHandler:function(n,f,s){this.queryStateCommands[n]={func:f,scope:s||this};},addQueryValueHandler:function(n,f,s){this.queryValueCommands[n]={func:f,scope:s||this};},addShortcut:function(pa,desc,cmd_func,sc){var t=this,c;if(!t.settings.custom_shortcuts)return false;t.shortcuts=t.shortcuts||{};if(is(cmd_func,'string')){c=cmd_func;cmd_func=function(){t.execCommand(c,false,null);};}if(is(cmd_func,'object')){c=cmd_func;cmd_func=function(){t.execCommand(c[0],c[1],c[2]);};}each(explode(pa),function(pa){var o={func:cmd_func,scope:sc||this,desc:desc,alt:false,ctrl:false,shift:false};each(explode(pa,'+'),function(v){switch(v){case'alt':case'ctrl':case'shift':o[v]=true;break;default:o.charCode=v.charCodeAt(0);o.keyCode=v.toUpperCase().charCodeAt(0);}});t.shortcuts[(o.ctrl?'ctrl':'')+','+(o.alt?'alt':'')+','+(o.shift?'shift':'')+','+o.keyCode]=o;});return true;},execCommand:function(cmd,ui,val,a){var t=this,s=0,o,st;if(!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint|SelectAll)$/.test(cmd)&&(!a||!a.skip_focus))t.focus();o={};t.onBeforeExecCommand.dispatch(t,cmd,ui,val,o);if(o.terminate)return false;if(t.execCallback('execcommand_callback',t.id,t.selection.getNode(),cmd,ui,val)){t.onExecCommand.dispatch(t,cmd,ui,val,a);return true;}if(o=t.execCommands[cmd]){st=o.func.call(o.scope,ui,val);if(st!==true){t.onExecCommand.dispatch(t,cmd,ui,val,a);return st;}}each(t.plugins,function(p){if(p.execCommand&&p.execCommand(cmd,ui,val)){t.onExecCommand.dispatch(t,cmd,ui,val,a);s=1;return false;}});if(s)return true;if(t.theme.execCommand&&t.theme.execCommand(cmd,ui,val)){t.onExecCommand.dispatch(t,cmd,ui,val,a);return true;}if(t.editorCommands.execCommand(cmd,ui,val)){t.onExecCommand.dispatch(t,cmd,ui,val,a);return true;}t.getDoc().execCommand(cmd,ui,val);t.onExecCommand.dispatch(t,cmd,ui,val,a);},queryCommandState:function(c){var t=this,o,s;if(t._isHidden())return;if(o=t.queryStateCommands[c]){s=o.func.call(o.scope);if(s!==true)return s;}o=t.editorCommands.queryCommandState(c);if(o!==-1)return o;try{return this.getDoc().queryCommandState(c);}catch(ex){}},queryCommandValue:function(c){var t=this,o,s;if(t._isHidden())return;if(o=t.queryValueCommands[c]){s=o.func.call(o.scope);if(s!==true)return s;}o=t.editorCommands.queryCommandValue(c);if(is(o))return o;try{return this.getDoc().queryCommandValue(c);}catch(ex){}},show:function(){var t=this;DOM.show(t.getContainer());DOM.hide(t.id);t.load();},hide:function(){var t=this,d=t.getDoc();if(isIE&&d)d.execCommand('SelectAll');t.save();DOM.hide(t.getContainer());DOM.setStyle(t.id,'display',t.orgDisplay);},isHidden:function(){return!DOM.isHidden(this.id);},setProgressState:function(b,ti,o){this.onSetProgressState.dispatch(this,b,ti,o);return b;},resizeToContent:function(){var t=this;DOM.setStyle(t.id+"_ifr",'height',t.getBody().scrollHeight);},load:function(o){var t=this,e=t.getElement(),h;o=o||{};o.load=true;h=t.setContent(is(e.value)?e.value:e.innerHTML,o);o.element=e;if(!o.no_events)t.onLoadContent.dispatch(t,o);o.element=e=null;return h;},save:function(o){var t=this,e=t.getElement(),h,f;if(!t.initialized)return;o=o||{};o.save=true;if(!o.no_events){t.undoManager.typing=0;t.undoManager.add();}o.element=e;h=o.content=t.getContent(o);if(!o.no_events)t.onSaveContent.dispatch(t,o);h=o.content;if(!/TEXTAREA|INPUT/i.test(e.nodeName)){e.innerHTML=h;if(f=DOM.getParent(t.id,'form')){each(f.elements,function(e){if(e.name==t.id){e.value=h;return false;}});}}else e.value=h;o.element=e=null;return h;},setContent:function(h,o){var t=this;o=o||{};o.format=o.format||'html';o.set=true;o.content=h;if(!o.no_events)t.onBeforeSetContent.dispatch(t,o);if(!tinymce.isIE&&(h.length===0||/^\s+$/.test(h))){o.content=t.dom.setHTML(t.getBody(),'<br mce_bogus="1" />');o.format='raw';}o.content=t.dom.setHTML(t.getBody(),tinymce.trim(o.content));if(o.format!='raw'&&t.settings.cleanup){o.getInner=true;o.content=t.dom.setHTML(t.getBody(),t.serializer.serialize(t.getBody(),o));}if(!o.no_events)t.onSetContent.dispatch(t,o);return o.content;},getContent:function(o){var t=this,h;o=o||{};o.format=o.format||'html';o.get=true;if(!o.no_events)t.onBeforeGetContent.dispatch(t,o);if(o.format!='raw'&&t.settings.cleanup){o.getInner=true;h=t.serializer.serialize(t.getBody(),o);}else h=t.getBody().innerHTML;h=h.replace(/^\s*|\s*$/g,'');o.content=h;if(!o.no_events)t.onGetContent.dispatch(t,o);return o.content;},isDirty:function(){var t=this;return tinymce.trim(t.startContent)!=tinymce.trim(t.getContent({format:'raw',no_events:1}))&&!t.isNotDirty;},getContainer:function(){var t=this;if(!t.container)t.container=DOM.get(t.editorContainer||t.id+'_parent');return t.container;},getContentAreaContainer:function(){return this.contentAreaContainer;},getElement:function(){return DOM.get(this.settings.content_element||this.id);},getWin:function(){var t=this,e;if(!t.contentWindow){e=DOM.get(t.id+"_ifr");if(e)t.contentWindow=e.contentWindow;}return t.contentWindow;},getDoc:function(){var t=this,w;if(!t.contentDocument){w=t.getWin();if(w)t.contentDocument=w.document;}return t.contentDocument;},getBody:function(){return this.bodyElement||this.getDoc().body;},convertURL:function(u,n,e){var t=this,s=t.settings;if(s.urlconverter_callback)return t.execCallback('urlconverter_callback',u,e,true,n);if(!s.convert_urls||(e&&e.nodeName=='LINK')||u.indexOf('file:')===0)return u;if(s.relative_urls)return t.documentBaseURI.toRelative(u);u=t.documentBaseURI.toAbsolute(u,s.remove_script_host);return u;},addVisual:function(e){var t=this,s=t.settings;e=e||t.getBody();if(!is(t.hasVisual))t.hasVisual=s.visual;each(t.dom.select('table,a',e),function(e){var v;switch(e.nodeName){case'TABLE':v=t.dom.getAttrib(e,'border');if(!v||v=='0'){if(t.hasVisual)t.dom.addClass(e,s.visual_table_class);else t.dom.removeClass(e,s.visual_table_class);}return;case'A':v=t.dom.getAttrib(e,'name');if(v){if(t.hasVisual)t.dom.addClass(e,'mceItemAnchor');else t.dom.removeClass(e,'mceItemAnchor');}return;}});t.onVisualAid.dispatch(t,e,t.hasVisual);},remove:function(){var t=this,e=t.getContainer();t.removed=1;t.hide();t.execCallback('remove_instance_callback',t);t.onRemove.dispatch(t);t.onExecCommand.listeners=[];EditorManager.remove(t);DOM.remove(e);},destroy:function(s){var t=this;if(t.destroyed)return;if(!s){tinymce.removeUnload(t.destroy);tinyMCE.onBeforeUnload.remove(t._beforeUnload);if(t.theme.destroy)t.theme.destroy();t.controlManager.destroy();t.selection.destroy();t.dom.destroy();if(!t.settings.content_editable){Event.clear(t.getWin());Event.clear(t.getDoc());}Event.clear(t.getBody());Event.clear(t.formElement);}if(t.formElement){t.formElement.submit=t.formElement._mceOldSubmit;t.formElement._mceOldSubmit=null;}t.contentAreaContainer=t.formElement=t.container=t.settings.content_element=t.bodyElement=t.contentDocument=t.contentWindow=null;if(t.selection)t.selection=t.selection.win=t.selection.dom=t.selection.dom.doc=null;t.destroyed=1;},_addEvents:function(){var t=this,i,s=t.settings,lo={mouseup:'onMouseUp',mousedown:'onMouseDown',click:'onClick',keyup:'onKeyUp',keydown:'onKeyDown',keypress:'onKeyPress',submit:'onSubmit',reset:'onReset',contextmenu:'onContextMenu',dblclick:'onDblClick',paste:'onPaste'};function eventHandler(e,o){var ty=e.type;if(t.removed)return;if(t.onEvent.dispatch(t,e,o)!==false){t[lo[e.fakeType||e.type]].dispatch(t,e,o);}};each(lo,function(v,k){switch(k){case'contextmenu':if(tinymce.isOpera){Event.add(t.getBody(),'mousedown',function(e){if(e.ctrlKey){e.fakeType='contextmenu';eventHandler(e);}});}else Event.add(t.getBody(),k,eventHandler);break;case'paste':Event.add(t.getBody(),k,function(e){var tx,h,el,r;if(e.clipboardData)tx=e.clipboardData.getData('text/plain');else if(tinymce.isIE)tx=t.getWin().clipboardData.getData('Text');eventHandler(e,{text:tx,html:h});});break;case'submit':case'reset':Event.add(t.getElement().form||DOM.getParent(t.id,'form'),k,eventHandler);break;default:Event.add(s.content_editable?t.getBody():t.getDoc(),k,eventHandler);}});Event.add(s.content_editable?t.getBody():(isGecko?t.getDoc():t.getWin()),'focus',function(e){t.focus(true);});if(tinymce.isGecko){Event.add(t.getDoc(),'DOMNodeInserted',function(e){var v;e=e.target;if(e.nodeType===1&&e.nodeName==='IMG'&&(v=e.getAttribute('mce_src')))e.src=t.documentBaseURI.toAbsolute(v);});}if(isGecko){function setOpts(){var t=this,d=t.getDoc(),s=t.settings;if(isGecko&&!s.readonly){if(t._isHidden()){try{if(!s.content_editable)d.designMode='On';}catch(ex){}}try{d.execCommand("styleWithCSS",0,false);}catch(ex){if(!t._isHidden())try{d.execCommand("useCSS",0,true);}catch(ex){}}if(!s.table_inline_editing)try{d.execCommand('enableInlineTableEditing',false,false);}catch(ex){}if(!s.object_resizing)try{d.execCommand('enableObjectResizing',false,false);}catch(ex){}}};t.onBeforeExecCommand.add(setOpts);t.onMouseDown.add(setOpts);}t.onMouseUp.add(t.nodeChanged);t.onClick.add(t.nodeChanged);t.onKeyUp.add(function(ed,e){var c=e.keyCode;if((c>=33&&c<=36)||(c>=37&&c<=40)||c==13||c==45||c==46||c==8||(tinymce.isMac&&c>=91&&c<=93)||e.ctrlKey)t.nodeChanged();});t.onReset.add(function(){t.setContent(t.startContent,{format:'raw'});});if(t.getParam('tab_focus')){function tabCancel(ed,e){if(e.keyCode===9)return Event.cancel(e);};function tabHandler(ed,e){var x,i,f,el,v;function find(d){f=DOM.getParent(ed.id,'form');el=f.elements;if(f){each(el,function(e,i){if(e.id==ed.id){x=i;return false;}});if(d>0){for(i=x+1;i<el.length;i++){if(el[i].type!='hidden')return el[i];}}else{for(i=x-1;i>=0;i--){if(el[i].type!='hidden')return el[i];}}}return null;};if(e.keyCode===9){v=explode(ed.getParam('tab_focus'));if(v.length==1){v[1]=v[0];v[0]=':prev';}if(e.shiftKey){if(v[0]==':prev')el=find(-1);else el=DOM.get(v[0]);}else{if(v[1]==':next')el=find(1);else el=DOM.get(v[1]);}if(el){if(ed=EditorManager.get(el.id||el.name))ed.focus();else window.setTimeout(function(){window.focus();el.focus();},10);return Event.cancel(e);}}};t.onKeyUp.add(tabCancel);if(isGecko){t.onKeyPress.add(tabHandler);t.onKeyDown.add(tabCancel);}else t.onKeyDown.add(tabHandler);}if(s.custom_shortcuts){if(s.custom_undo_redo_keyboard_shortcuts){t.addShortcut('ctrl+z',t.getLang('undo_desc'),'Undo');t.addShortcut('ctrl+y',t.getLang('redo_desc'),'Redo');}if(isGecko){t.addShortcut('ctrl+b',t.getLang('bold_desc'),'Bold');t.addShortcut('ctrl+i',t.getLang('italic_desc'),'Italic');t.addShortcut('ctrl+u',t.getLang('underline_desc'),'Underline');}for(i=1;i<=6;i++)t.addShortcut('ctrl+'+i,'',['FormatBlock',false,'<h'+i+'>']);t.addShortcut('ctrl+7','',['FormatBlock',false,'<p>']);t.addShortcut('ctrl+8','',['FormatBlock',false,'<div>']);t.addShortcut('ctrl+9','',['FormatBlock',false,'<address>']);function find(e){var v=null;if(!e.altKey&&!e.ctrlKey&&!e.metaKey)return v;each(t.shortcuts,function(o){if(o.ctrl!=e.ctrlKey&&(!tinymce.isMac||o.ctrl==e.metaKey))return;if(o.alt!=e.altKey)return;if(o.shift!=e.shiftKey)return;if(e.keyCode==o.keyCode||(e.charCode&&e.charCode==o.charCode)){v=o;return false;}});return v;};t.onKeyUp.add(function(ed,e){var o=find(e);if(o)return Event.cancel(e);});t.onKeyPress.add(function(ed,e){var o=find(e);if(o)return Event.cancel(e);});t.onKeyDown.add(function(ed,e){var o=find(e);if(o){o.func.call(o.scope);return Event.cancel(e);}});}if(tinymce.isIE){Event.add(t.getDoc(),'controlselect',function(e){var re=t.resizeInfo,cb;e=e.target;if(e.nodeName!=='IMG')return;if(re)Event.remove(re.node,re.ev,re.cb);if(!t.dom.hasClass(e,'mceItemNoResize')){ev='resizeend';cb=Event.add(e,ev,function(e){var v;e=e.target;if(v=t.dom.getStyle(e,'width')){t.dom.setAttrib(e,'width',v.replace(/[^0-9%]+/g,''));t.dom.setStyle(e,'width','');}if(v=t.dom.getStyle(e,'height')){t.dom.setAttrib(e,'height',v.replace(/[^0-9%]+/g,''));t.dom.setStyle(e,'height','');}});}else{ev='resizestart';cb=Event.add(e,'resizestart',Event.cancel,Event);}re=t.resizeInfo={node:e,ev:ev,cb:cb};});t.onKeyDown.add(function(ed,e){switch(e.keyCode){case 8:if(t.selection.getRng().item){t.selection.getRng().item(0).removeNode();return Event.cancel(e);}}});}if(tinymce.isOpera){t.onClick.add(function(ed,e){Event.prevent(e);});}if(s.custom_undo_redo){function addUndo(){t.undoManager.typing=0;t.undoManager.add();};if(tinymce.isIE){Event.add(t.getWin(),'blur',function(e){var n;if(t.selection){n=t.selection.getNode();if(!t.removed&&n.ownerDocument&&n.ownerDocument!=t.getDoc())addUndo();}});}else{Event.add(t.getDoc(),'blur',function(){if(t.selection&&!t.removed)addUndo();});}t.onMouseDown.add(addUndo);t.onKeyUp.add(function(ed,e){if((e.keyCode>=33&&e.keyCode<=36)||(e.keyCode>=37&&e.keyCode<=40)||e.keyCode==13||e.keyCode==45||e.ctrlKey){t.undoManager.typing=0;t.undoManager.add();}});t.onKeyDown.add(function(ed,e){if((e.keyCode>=33&&e.keyCode<=36)||(e.keyCode>=37&&e.keyCode<=40)||e.keyCode==13||e.keyCode==45){if(t.undoManager.typing){t.undoManager.add();t.undoManager.typing=0;}return;}if(!t.undoManager.typing){t.undoManager.add();t.undoManager.typing=1;}});}},_convertInlineElements:function(){var t=this,s=t.settings,dom=t.dom,v,e,na,st,sp;function convert(ed,o){if(!s.inline_styles)return;if(o.get){each(t.dom.select('table,u,strike',o.node),function(n){switch(n.nodeName){case'TABLE':if(v=dom.getAttrib(n,'height')){dom.setStyle(n,'height',v);dom.setAttrib(n,'height','');}break;case'U':case'STRIKE':n.style.textDecoration=n.nodeName=='U'?'underline':'line-through';dom.setAttrib(n,'mce_style','');dom.setAttrib(n,'mce_name','span');break;}});}else if(o.set){each(t.dom.select('table,span',o.node).reverse(),function(n){if(n.nodeName=='TABLE'){if(v=dom.getStyle(n,'height'))dom.setAttrib(n,'height',v.replace(/[^0-9%]+/g,''));}else{if(n.style.textDecoration=='underline')na='u';else if(n.style.textDecoration=='line-through')na='strike';else na='';if(na){n.style.textDecoration='';dom.setAttrib(n,'mce_style','');e=dom.create(na,{style:dom.getAttrib(n,'style')});dom.replace(e,n,1);}}});}};t.onPreProcess.add(convert);if(!s.cleanup_on_startup){t.onSetContent.add(function(ed,o){if(o.initial)convert(t,{node:t.getBody(),set:1});});}},_convertFonts:function(){var t=this,s=t.settings,dom=t.dom,fz,fzn,sl,cl;if(!s.inline_styles)return;fz=[8,10,12,14,18,24,36];fzn=['xx-small','x-small','small','medium','large','x-large','xx-large'];if(sl=s.font_size_style_values)sl=explode(sl);if(cl=s.font_size_classes)cl=explode(cl);function convertToFonts(no){var n,f,nl,x,i,v,st;if(tinymce.isWebKit||!s.inline_styles)return;nl=t.dom.select('span',no);for(x=nl.length-1;x>=0;x--){n=nl[x];f=dom.create('font',{color:dom.toHex(dom.getStyle(n,'color')),face:dom.getStyle(n,'fontFamily'),style:dom.getAttrib(n,'style'),'class':dom.getAttrib(n,'class')});st=f.style;if(st.color||st.fontFamily){st.color=st.fontFamily='';dom.setAttrib(f,'mce_style','');}if(sl){i=inArray(sl,dom.getStyle(n,'fontSize'));if(i!=-1){dom.setAttrib(f,'size',''+(i+1||1));}}else if(cl){i=inArray(cl,dom.getAttrib(n,'class'));v=dom.getStyle(n,'fontSize');if(i==-1&&v.indexOf('pt')>0)i=inArray(fz,parseInt(v));if(i==-1)i=inArray(fzn,v);if(i!=-1){dom.setAttrib(f,'size',''+(i+1||1));f.style.fontSize='';}}if(f.color||f.face||f.size){f.style.fontFamily='';dom.setAttrib(f,'mce_style','');dom.replace(f,n,1);}f=n=null;}};t.onSetContent.add(function(ed,o){convertToFonts(ed.getBody());});t.onPreProcess.add(function(ed,o){var n,sp,nl,x;if(!s.inline_styles)return;if(o.get){nl=t.dom.select('font',o.node);for(x=nl.length-1;x>=0;x--){n=nl[x];sp=dom.create('span',{style:dom.getAttrib(n,'style'),'class':dom.getAttrib(n,'class')});dom.setStyles(sp,{fontFamily:dom.getAttrib(n,'face'),color:dom.getAttrib(n,'color'),backgroundColor:n.style.backgroundColor});if(n.size){if(sl)dom.setStyle(sp,'fontSize',sl[parseInt(n.size)-1]);else dom.setAttrib(sp,'class',cl[parseInt(n.size)-1]);}dom.setAttrib(sp,'mce_style','');dom.replace(sp,n,1);}}});},_isHidden:function(){var s;if(!isGecko)return 0;s=this.selection.getSel();return(!s||!s.rangeCount||s.rangeCount==0);},_fixNesting:function(s){var d=[],i;s=s.replace(/<(\/)?([^\s>]+)[^>]*?>/g,function(a,b,c){var e;if(b==='/'){if(!d.length)return'';if(c!==d[d.length-1].tag){for(i=d.length-1;i>=0;i--){if(d[i].tag===c){d[i].close=1;break;}}return'';}else{d.pop();if(d.length&&d[d.length-1].close){a=a+'</'+d[d.length-1].tag+'>';d.pop();}}}else{if(/^(br|hr|input|meta|img|link|param)$/i.test(c))return a;if(/\/>$/.test(a))return a;d.push({tag:c});}return a;});for(i=d.length-1;i>=0;i--)s+='</'+d[i].tag+'>';return s;}});})();(function(){var each=tinymce.each,isIE=tinymce.isIE,isGecko=tinymce.isGecko,isOpera=tinymce.isOpera,isWebKit=tinymce.isWebKit;tinymce.create('tinymce.EditorCommands',{EditorCommands:function(ed){this.editor=ed;},execCommand:function(cmd,ui,val){var t=this,ed=t.editor,f;switch(cmd){case'Cut':case'Copy':case'Paste':try{ed.getDoc().execCommand(cmd,ui,val);}catch(ex){if(isGecko){ed.windowManager.confirm(ed.getLang('clipboard_msg'),function(s){if(s)window.open('http://www.mozilla.org/editor/midasdemo/securityprefs.html','mceExternal');});}else ed.windowManager.alert(ed.getLang('clipboard_no_support'));}return true;case'mceResetDesignMode':case'mceBeginUndoLevel':return true;case'unlink':t.UnLink();return true;case'JustifyLeft':case'JustifyCenter':case'JustifyRight':case'JustifyFull':t.mceJustify(cmd,cmd.substring(7).toLowerCase());return true;case'mceEndUndoLevel':case'mceAddUndoLevel':ed.undoManager.add();return true;default:f=this[cmd];if(f){f.call(this,ui,val);return true;}}return false;},Indent:function(){var ed=this.editor,d=ed.dom,s=ed.selection,e,iv,iu;iv=ed.settings.indentation;iu=/[a-z%]+$/i.exec(iv);iv=parseInt(iv);if(ed.settings.inline_styles&&(!this.queryStateInsertUnorderedList()&&!this.queryStateInsertOrderedList())){each(this._getSelectedBlocks(),function(e){d.setStyle(e,'paddingLeft',(parseInt(e.style.paddingLeft||0)+iv)+iu);});return;}ed.getDoc().execCommand('Indent',false,null);if(isIE){d.getParent(s.getNode(),function(n){if(n.nodeName=='BLOCKQUOTE'){n.dir=n.style.cssText='';}});}},Outdent:function(){var ed=this.editor,d=ed.dom,s=ed.selection,e,v,iv,iu;iv=ed.settings.indentation;iu=/[a-z%]+$/i.exec(iv);iv=parseInt(iv);if(ed.settings.inline_styles&&(!this.queryStateInsertUnorderedList()&&!this.queryStateInsertOrderedList())){each(this._getSelectedBlocks(),function(e){v=Math.max(0,parseInt(e.style.paddingLeft||0)-iv);d.setStyle(e,'paddingLeft',v?v+iu:'');});return;}ed.getDoc().execCommand('Outdent',false,null);},mceSetAttribute:function(u,v){var ed=this.editor,d=ed.dom,e;if(e=d.getParent(ed.selection.getNode(),d.isBlock))d.setAttrib(e,v.name,v.value);},mceSetContent:function(u,v){this.editor.setContent(v);},mceToggleVisualAid:function(){var ed=this.editor;ed.hasVisual=!ed.hasVisual;ed.addVisual();},mceReplaceContent:function(u,v){var s=this.editor.selection;s.setContent(v.replace(/\{\$selection\}/g,s.getContent({format:'text'})));},mceInsertLink:function(u,v){var ed=this.editor,s=ed.selection,e=ed.dom.getParent(s.getNode(),'A');if(tinymce.is(v,'string'))v={href:v};function set(e){each(v,function(v,k){ed.dom.setAttrib(e,k,v);});};if(!e){ed.execCommand('CreateLink',false,'javascript:mctmp(0);');each(ed.dom.select('a'),function(e){if(e.href=='javascript:mctmp(0);')set(e);});}else{if(v.href)set(e);else ed.dom.remove(e,1);}},UnLink:function(){var ed=this.editor,s=ed.selection;if(s.isCollapsed())s.select(s.getNode());ed.getDoc().execCommand('unlink',false,null);s.collapse(0);},FontName:function(u,v){var t=this,ed=t.editor,s=ed.selection,e;if(!v){if(s.isCollapsed())s.select(s.getNode());t.RemoveFormat();}else ed.getDoc().execCommand('FontName',false,v);},FontSize:function(u,v){var ed=this.editor,s=ed.settings,fz=tinymce.explode(s.font_size_style_values),fzc=tinymce.explode(s.font_size_classes),h,bm;each(ed.dom.select('font'),function(e){e.style.fontSize='';});ed.getDoc().execCommand('FontSize',false,v);if(s.inline_styles){each(ed.dom.select('font'),function(e){if(e.parentNode.nodeName=='FONT'&&e.size==e.parentNode.size){if(!bm)bm=ed.selection.getBookmark();ed.dom.remove(e,1);return;}if(v=e.size){if(fzc&&fzc.length>0)ed.dom.setAttrib(e,'class',fzc[parseInt(v)-1]);else ed.dom.setStyle(e,'fontSize',fz[parseInt(v)-1]);}});}ed.selection.moveToBookmark(bm);},queryCommandValue:function(c){var f=this['queryValue'+c];if(f)return f.call(this,c);return false;},queryCommandState:function(cmd){var f;switch(cmd){case'JustifyLeft':case'JustifyCenter':case'JustifyRight':case'JustifyFull':return this.queryStateJustify(cmd,cmd.substring(7).toLowerCase());default:if(f=this['queryState'+cmd])return f.call(this,cmd);}return-1;},_queryState:function(c){try{return this.editor.getDoc().queryCommandState(c);}catch(ex){}},_queryVal:function(c){try{return this.editor.getDoc().queryCommandValue(c);}catch(ex){}},queryValueFontSize:function(){var ed=this.editor,v=0,p;if(isOpera||isWebKit){if(p=ed.dom.getParent(ed.selection.getNode(),'FONT'))v=p.size;return v;}return this._queryVal('FontSize');},queryValueFontName:function(){var ed=this.editor,v=0,p;if(p=ed.dom.getParent(ed.selection.getNode(),'FONT'))v=p.face;if(!v)v=this._queryVal('FontName');return v;},mceJustify:function(c,v){var ed=this.editor,se=ed.selection,n=se.getNode(),nn=n.nodeName,bl,nb,dom=ed.dom,rm;if(ed.settings.inline_styles&&this.queryStateJustify(c,v))rm=1;bl=dom.getParent(n,ed.dom.isBlock);if(nn=='IMG'){if(v=='full')return;if(rm){if(v=='center')dom.setStyle(bl||n.parentNode,'textAlign','');dom.setStyle(n,'float','');this.mceRepaint();return;}if(v=='center'){if(bl&&/^(TD|TH)$/.test(bl.nodeName))bl=0;if(!bl||bl.childNodes.length>1){nb=dom.create('p');nb.appendChild(n.cloneNode(false));if(bl)dom.insertAfter(nb,bl);else dom.insertAfter(nb,n);dom.remove(n);n=nb.firstChild;bl=nb;}dom.setStyle(bl,'textAlign',v);dom.setStyle(n,'float','');}else{dom.setStyle(n,'float',v);dom.setStyle(bl||n.parentNode,'textAlign','');}this.mceRepaint();return;}if(ed.settings.inline_styles&&ed.settings.forced_root_block){if(rm)v='';each(this._getSelectedBlocks(dom.getParent(se.getStart(),dom.isBlock),dom.getParent(se.getEnd(),dom.isBlock)),function(e){dom.setAttrib(e,'align','');dom.setStyle(e,'textAlign',v=='full'?'justify':v);});return;}else if(!rm)ed.getDoc().execCommand(c,false,null);if(ed.settings.inline_styles){if(rm){dom.getParent(ed.selection.getNode(),function(n){if(n.style&&n.style.textAlign)dom.setStyle(n,'textAlign','');});return;}each(dom.select('*'),function(n){var v=n.align;if(v){if(v=='full')v='justify';dom.setStyle(n,'textAlign',v);dom.setAttrib(n,'align','');}});}},mceSetCSSClass:function(u,v){this.mceSetStyleInfo(0,{command:'setattrib',name:'class',value:v});},getSelectedElement:function(){var t=this,ed=t.editor,dom=ed.dom,se=ed.selection,r=se.getRng(),r1,r2,sc,ec,so,eo,e,sp,ep,re;if(se.isCollapsed()||r.item)return se.getNode();re=ed.settings.merge_styles_invalid_parents;if(tinymce.is(re,'string'))re=new RegExp(re,'i');if(isIE){r1=r.duplicate();r1.collapse(true);sc=r1.parentElement();r2=r.duplicate();r2.collapse(false);ec=r2.parentElement();if(sc!=ec){r1.move('character',1);sc=r1.parentElement();}if(sc==ec){r1=r.duplicate();r1.moveToElementText(sc);if(r1.compareEndPoints('StartToStart',r)==0&&r1.compareEndPoints('EndToEnd',r)==0)return re&&re.test(sc.nodeName)?null:sc;}}else{function getParent(n){return dom.getParent(n,function(n){return n.nodeType==1;});};sc=r.startContainer;ec=r.endContainer;so=r.startOffset;eo=r.endOffset;if(!r.collapsed){if(sc==ec){if(so-eo<2){if(sc.hasChildNodes()){sp=sc.childNodes[so];return re&&re.test(sp.nodeName)?null:sp;}}}}if(sc.nodeType!=3||ec.nodeType!=3)return null;if(so==0){sp=getParent(sc);if(sp&&sp.firstChild!=sc)sp=null;}if(so==sc.nodeValue.length){e=sc.nextSibling;if(e&&e.nodeType==1)sp=sc.nextSibling;}if(eo==0){e=ec.previousSibling;if(e&&e.nodeType==1)ep=e;}if(eo==ec.nodeValue.length){ep=getParent(ec);if(ep&&ep.lastChild!=ec)ep=null;}if(sp==ep)return re&&sp&&re.test(sp.nodeName)?null:sp;}return null;},InsertHorizontalRule:function(){if(isGecko||isIE)this.editor.selection.setContent('<hr />');else this.editor.getDoc().execCommand('InsertHorizontalRule',false,'');},RemoveFormat:function(){var t=this,ed=t.editor,s=ed.selection,b;if(isWebKit)s.setContent(s.getContent({format:'raw'}).replace(/(<(span|b|i|strong|em|strike) [^>]+>|<(span|b|i|strong|em|strike)>|<\/(span|b|i|strong|em|strike)>|)/g,''),{format:'raw'});else ed.getDoc().execCommand('RemoveFormat',false,null);t.mceSetStyleInfo(0,{command:'removeformat'});ed.addVisual();},mceSetStyleInfo:function(u,v){var t=this,ed=t.editor,d=ed.getDoc(),dom=ed.dom,e,b,s=ed.selection,nn=v.wrapper||'span',b=s.getBookmark(),re;function set(n,e){if(n.nodeType==1){switch(v.command){case'setattrib':return dom.setAttrib(n,v.name,v.value);case'setstyle':return dom.setStyle(n,v.name,v.value);case'removeformat':return dom.setAttrib(n,'class','');}}};re=ed.settings.merge_styles_invalid_parents;if(tinymce.is(re,'string'))re=new RegExp(re,'i');if((e=t.getSelectedElement())&&!ed.settings.force_span_wrappers)set(e,1);else{d.execCommand('FontName',false,'__');each(isWebKit?dom.select('span'):dom.select('font'),function(n){var sp,e;if(dom.getAttrib(n,'face')=='__'||n.style.fontFamily==='__'){sp=dom.create(nn,{mce_new:'1'});set(sp);each(n.childNodes,function(n){sp.appendChild(n.cloneNode(true));});dom.replace(sp,n);}});}each(dom.select(nn).reverse(),function(n){var p=n.parentNode;if(!dom.getAttrib(n,'mce_new')){p=dom.getParent(n,function(n){return n.nodeType==1&&dom.getAttrib(n,'mce_new');});if(p)dom.remove(n,1);}});each(dom.select(nn).reverse(),function(n){var p=n.parentNode;if(!p||!dom.getAttrib(n,'mce_new'))return;if(ed.settings.force_span_wrappers&&p.nodeName!='SPAN')return;if(p.nodeName==nn.toUpperCase()&&p.childNodes.length==1)return dom.remove(p,1);if(n.nodeType==1&&(!re||!re.test(p.nodeName))&&p.childNodes.length==1){set(p);dom.setAttrib(n,'class','');}});each(dom.select(nn).reverse(),function(n){if(dom.getAttrib(n,'mce_new')||(dom.getAttribs(n).length<=1&&n.className==='')){if(!dom.getAttrib(n,'class')&&!dom.getAttrib(n,'style'))return dom.remove(n,1);dom.setAttrib(n,'mce_new','');}});s.moveToBookmark(b);},queryStateJustify:function(c,v){var ed=this.editor,n=ed.selection.getNode(),dom=ed.dom;if(n&&n.nodeName=='IMG'){if(dom.getStyle(n,'float')==v)return 1;return n.parentNode.style.textAlign==v;}n=dom.getParent(ed.selection.getStart(),function(n){return n.nodeType==1&&n.style.textAlign;});if(v=='full')v='justify';if(ed.settings.inline_styles)return(n&&n.style.textAlign==v);return this._queryState(c);},HiliteColor:function(ui,val){var t=this,ed=t.editor,d=ed.getDoc();function set(s){if(!isGecko)return;try{d.execCommand("styleWithCSS",0,s);}catch(ex){d.execCommand("useCSS",0,!s);}};if(isGecko||isOpera){set(true);d.execCommand('hilitecolor',false,val);set(false);}else d.execCommand('BackColor',false,val);},Undo:function(){var ed=this.editor;if(ed.settings.custom_undo_redo){ed.undoManager.undo();ed.nodeChanged();}else ed.getDoc().execCommand('Undo',false,null);},Redo:function(){var ed=this.editor;if(ed.settings.custom_undo_redo){ed.undoManager.redo();ed.nodeChanged();}else ed.getDoc().execCommand('Redo',false,null);},FormatBlock:function(ui,val){var t=this,ed=t.editor,s=ed.selection,dom=ed.dom,bl,nb,b;function isBlock(n){return/^(P|DIV|H[1-6]|ADDRESS|BLOCKQUOTE|PRE)$/.test(n.nodeName);};bl=dom.getParent(s.getNode(),function(n){return isBlock(n);});if(bl){if((isIE&&isBlock(bl.parentNode))||bl.nodeName=='DIV'){nb=ed.dom.create(val);each(dom.getAttribs(bl),function(v){dom.setAttrib(nb,v.nodeName,dom.getAttrib(bl,v.nodeName));});b=s.getBookmark();dom.replace(nb,bl,1);s.moveToBookmark(b);ed.nodeChanged();return;}}val=ed.settings.forced_root_block?(val||'<p>'):val;if(val.indexOf('<')==-1)val='<'+val+'>';if(tinymce.isGecko)val=val.replace(/<(div|blockquote|code|dt|dd|dl|samp)>/gi,'$1');ed.getDoc().execCommand('FormatBlock',false,val);},mceCleanup:function(){var ed=this.editor,s=ed.selection,b=s.getBookmark();ed.setContent(ed.getContent());s.moveToBookmark(b);},mceRemoveNode:function(ui,val){var ed=this.editor,s=ed.selection,b,n=val||s.getNode();if(n==ed.getBody())return;b=s.getBookmark();ed.dom.remove(n,1);s.moveToBookmark(b);ed.nodeChanged();},mceSelectNodeDepth:function(ui,val){var ed=this.editor,s=ed.selection,c=0;ed.dom.getParent(s.getNode(),function(n){if(n.nodeType==1&&c++==val){s.select(n);ed.nodeChanged();return false;}},ed.getBody());},mceSelectNode:function(u,v){this.editor.selection.select(v);},mceInsertContent:function(ui,val){this.editor.selection.setContent(val);},mceInsertRawHTML:function(ui,val){var ed=this.editor;ed.selection.setContent('tiny_mce_marker');ed.setContent(ed.getContent().replace(/tiny_mce_marker/g,val));},mceRepaint:function(){var s,b,e=this.editor;if(tinymce.isGecko){try{s=e.selection;b=s.getBookmark(true);if(s.getSel())s.getSel().selectAllChildren(e.getBody());s.collapse(true);s.moveToBookmark(b);}catch(ex){}}},queryStateUnderline:function(){var ed=this.editor,n=ed.selection.getNode();if(n&&n.nodeName=='A')return false;return this._queryState('Underline');},queryStateOutdent:function(){var ed=this.editor,n;if(ed.settings.inline_styles){if((n=ed.dom.getParent(ed.selection.getStart(),ed.dom.isBlock))&&parseInt(n.style.paddingLeft)>0)return true;if((n=ed.dom.getParent(ed.selection.getEnd(),ed.dom.isBlock))&&parseInt(n.style.paddingLeft)>0)return true;}else return!!ed.dom.getParent(ed.selection.getNode(),'BLOCKQUOTE');return this.queryStateInsertUnorderedList()||this.queryStateInsertOrderedList();},queryStateInsertUnorderedList:function(){return this.editor.dom.getParent(this.editor.selection.getNode(),'UL');},queryStateInsertOrderedList:function(){return this.editor.dom.getParent(this.editor.selection.getNode(),'OL');},queryStatemceBlockQuote:function(){return!!this.editor.dom.getParent(this.editor.selection.getStart(),function(n){return n.nodeName==='BLOCKQUOTE';});},mceBlockQuote:function(){var t=this,ed=t.editor,s=ed.selection,dom=ed.dom,sb,eb,n,bm,bq,r,bq2,i,nl;function getBQ(e){return dom.getParent(e,function(n){return n.nodeName==='BLOCKQUOTE';});};sb=dom.getParent(s.getStart(),dom.isBlock);eb=dom.getParent(s.getEnd(),dom.isBlock);if(bq=getBQ(sb)){if(sb!=eb||sb.childNodes.length>1||(sb.childNodes.length==1&&sb.firstChild.nodeName!='BR'))bm=s.getBookmark();if(getBQ(eb)){bq2=bq.cloneNode(false);while(n=eb.nextSibling)bq2.appendChild(n.parentNode.removeChild(n));}if(bq2)dom.insertAfter(bq2,bq);nl=t._getSelectedBlocks(sb,eb);for(i=nl.length-1;i>=0;i--){dom.insertAfter(nl[i],bq);}if(/^\s*$/.test(bq.innerHTML))dom.remove(bq,1);if(bq2&&/^\s*$/.test(bq2.innerHTML))dom.remove(bq2,1);if(!bm){if(!isIE){r=ed.getDoc().createRange();r.setStart(sb,0);r.setEnd(sb,0);s.setRng(r);}else{s.select(sb);s.collapse(0);if(dom.getParent(s.getStart(),dom.isBlock)!=sb){r=s.getRng();r.move('character',-1);r.select();}}}else t.editor.selection.moveToBookmark(bm);return;}if(isIE&&!sb&&!eb){t.editor.getDoc().execCommand('Indent');n=getBQ(s.getNode());n.style.margin=n.dir='';return;}if(!sb||!eb)return;if(sb!=eb||sb.childNodes.length>1||(sb.childNodes.length==1&&sb.firstChild.nodeName!='BR'))bm=s.getBookmark();each(t._getSelectedBlocks(getBQ(s.getStart()),getBQ(s.getEnd())),function(e){if(e.nodeName=='BLOCKQUOTE'&&!bq){bq=e;return;}if(!bq){bq=dom.create('blockquote');e.parentNode.insertBefore(bq,e);}if(e.nodeName=='BLOCKQUOTE'&&bq){n=e.firstChild;while(n){bq.appendChild(n.cloneNode(true));n=n.nextSibling;}dom.remove(e);return;}bq.appendChild(dom.remove(e));});if(!bm){if(!isIE){r=ed.getDoc().createRange();r.setStart(sb,0);r.setEnd(sb,0);s.setRng(r);}else{s.select(sb);s.collapse(1);}}else s.moveToBookmark(bm);},_getSelectedBlocks:function(st,en){var ed=this.editor,dom=ed.dom,s=ed.selection,sb,eb,n,bl=[];sb=dom.getParent(st||s.getStart(),dom.isBlock);eb=dom.getParent(en||s.getEnd(),dom.isBlock);if(sb)bl.push(sb);if(sb&&eb&&sb!=eb){n=sb;while((n=n.nextSibling)&&n!=eb){if(dom.isBlock(n))bl.push(n);}}if(eb&&sb!=eb)bl.push(eb);return bl;}});})();tinymce.create('tinymce.UndoManager',{index:0,data:null,typing:0,UndoManager:function(ed){var t=this,Dispatcher=tinymce.util.Dispatcher;t.editor=ed;t.data=[];t.onAdd=new Dispatcher(this);t.onUndo=new Dispatcher(this);t.onRedo=new Dispatcher(this);},add:function(l){var t=this,i,ed=t.editor,b,s=ed.settings,la;l=l||{};l.content=l.content||ed.getContent({format:'raw',no_events:1});l.content=l.content.replace(/^\s*|\s*$/g,'');la=t.data[t.index>0&&(t.index==0||t.index==t.data.length)?t.index-1:t.index];if(!l.initial&&la&&l.content==la.content)return null;if(s.custom_undo_redo_levels){if(t.data.length>s.custom_undo_redo_levels){for(i=0;i<t.data.length-1;i++)t.data[i]=t.data[i+1];t.data.length--;t.index=t.data.length;}}if(s.custom_undo_redo_restore_selection&&!l.initial)l.bookmark=b=l.bookmark||ed.selection.getBookmark();if(t.index<t.data.length)t.index++;if(t.data.length===0&&!l.initial)return null;t.data.length=t.index+1;t.data[t.index++]=l;if(l.initial)t.index=0;if(t.data.length==2&&t.data[0].initial)t.data[0].bookmark=b;t.onAdd.dispatch(t,l);ed.isNotDirty=0;return l;},undo:function(){var t=this,ed=t.editor,l=l,i;if(t.typing){t.add();t.typing=0;}if(t.index>0){if(t.index==t.data.length&&t.index>1){i=t.index;t.typing=0;if(!t.add())t.index=i;--t.index;}l=t.data[--t.index];ed.setContent(l.content,{format:'raw'});ed.selection.moveToBookmark(l.bookmark);t.onUndo.dispatch(t,l);}return l;},redo:function(){var t=this,ed=t.editor,l=null;if(t.index<t.data.length-1){l=t.data[++t.index];ed.setContent(l.content,{format:'raw'});ed.selection.moveToBookmark(l.bookmark);t.onRedo.dispatch(t,l);}return l;},clear:function(){var t=this;t.data=[];t.index=0;t.typing=0;t.add({initial:true});},hasUndo:function(){return this.index!=0||this.typing;},hasRedo:function(){return this.index<this.data.length-1;}});(function(){var Event,isIE,isGecko,isOpera,each,extend;Event=tinymce.dom.Event;isIE=tinymce.isIE;isGecko=tinymce.isGecko;isOpera=tinymce.isOpera;each=tinymce.each;extend=tinymce.extend;tinymce.create('tinymce.ForceBlocks',{ForceBlocks:function(ed){var t=this,s=ed.settings,elm;t.editor=ed;t.dom=ed.dom;elm=(s.forced_root_block||'p').toLowerCase();s.element=elm.toUpperCase();ed.onPreInit.add(t.setup,t);t.reOpera=new RegExp('(\\u00a0| | )<\/'+elm+'>','gi');t.rePadd=new RegExp('<p( )([^>]+)><\\\/p>|<p( )([^>]+)\\\/>|<p( )([^>]+)>\\s+<\\\/p>|<p><\\\/p>|<p\\\/>|<p>\\s+<\\\/p>'.replace(/p/g,elm),'gi');t.reNbsp2BR1=new RegExp('<p( )([^>]+)>[\\s\\u00a0]+<\\\/p>|<p>[\\s\\u00a0]+<\\\/p>'.replace(/p/g,elm),'gi');t.reNbsp2BR2=new RegExp('<p( )([^>]+)>( | )<\\\/p>|<p>( | )<\\\/p>'.replace(/p/g,elm),'gi');t.reBR2Nbsp=new RegExp('<p( )([^>]+)>\\s*<br \\\/>\\s*<\\\/p>|<p>\\s*<br \\\/>\\s*<\\\/p>'.replace(/p/g,elm),'gi');t.reTrailBr=new RegExp('\\s*<br \\/>\\s*<\\\/p>'.replace(/p/g,elm),'gi');function padd(ed,o){if(isOpera)o.content=o.content.replace(t.reOpera,'</'+elm+'>');o.content=o.content.replace(t.rePadd,'<'+elm+'$1$2$3$4$5$6>\u00a0</'+elm+'>');if(!isIE&&!isOpera&&o.set){o.content=o.content.replace(t.reNbsp2BR1,'<'+elm+'$1$2><br /></'+elm+'>');o.content=o.content.replace(t.reNbsp2BR2,'<'+elm+'$1$2><br /></'+elm+'>');}else{o.content=o.content.replace(t.reBR2Nbsp,'<'+elm+'$1$2>\u00a0</'+elm+'>');o.content=o.content.replace(t.reTrailBr,'</'+elm+'>');}};ed.onBeforeSetContent.add(padd);ed.onPostProcess.add(padd);if(s.forced_root_block){ed.onInit.add(t.forceRoots,t);ed.onSetContent.add(t.forceRoots,t);ed.onBeforeGetContent.add(t.forceRoots,t);}},setup:function(){var t=this,ed=t.editor,s=ed.settings;if(s.forced_root_block){ed.onKeyUp.add(t.forceRoots,t);ed.onPreProcess.add(t.forceRoots,t);}if(s.force_br_newlines){if(isIE){ed.onKeyPress.add(function(ed,e){var n,s=ed.selection;if(e.keyCode==13&&s.getNode().nodeName!='LI'){s.setContent('<br id="__" /> ',{format:'raw'});n=ed.dom.get('__');n.removeAttribute('id');s.select(n);s.collapse();return Event.cancel(e);}});}return;}if(!isIE&&s.force_p_newlines){ed.onKeyPress.add(function(ed,e){if(e.keyCode==13&&!e.shiftKey){if(!t.insertPara(e))Event.cancel(e);}});if(isGecko){ed.onKeyDown.add(function(ed,e){if((e.keyCode==8||e.keyCode==46)&&!e.shiftKey)t.backspaceDelete(e,e.keyCode==8);});}}function ren(rn,na){var ne=ed.dom.create(na);each(rn.attributes,function(a){if(a.specified&&a.nodeValue)ne.setAttribute(a.nodeName.toLowerCase(),a.nodeValue);});each(rn.childNodes,function(n){ne.appendChild(n.cloneNode(true));});rn.parentNode.replaceChild(ne,rn);return ne;};if(isIE&&s.element!='P'){ed.onKeyPress.add(function(ed,e){t.lastElm=ed.selection.getNode().nodeName;});ed.onKeyUp.add(function(ed,e){var bl,sel=ed.selection,n=sel.getNode(),b=ed.getBody();if(b.childNodes.length===1&&n.nodeName=='P'){n=ren(n,s.element);sel.select(n);sel.collapse();ed.nodeChanged();}else if(e.keyCode==13&&!e.shiftKey&&t.lastElm!='P'){bl=ed.dom.getParent(n,'P');if(bl){ren(bl,s.element);ed.nodeChanged();}}});}},find:function(n,t,s){var ed=this.editor,w=ed.getDoc().createTreeWalker(n,4,null,false),c=-1;while(n=w.nextNode()){c++;if(t==0&&n==s)return c;if(t==1&&c==s)return n;}return-1;},forceRoots:function(ed,e){var t=this,ed=t.editor,b=ed.getBody(),d=ed.getDoc(),se=ed.selection,s=se.getSel(),r=se.getRng(),si=-2,ei,so,eo,tr,c=-0xFFFFFF;var nx,bl,bp,sp,le,nl=b.childNodes,i;if(e&&e.keyCode==13)return true;for(i=nl.length-1;i>=0;i--){nx=nl[i];if(nx.nodeType==3||(!t.dom.isBlock(nx)&&nx.nodeType!=8)){if(!bl){if(nx.nodeType!=3||/[^\s]/g.test(nx.nodeValue)){if(si==-2&&r){if(!isIE){if(ed.dom.getParent(r.startContainer,function(e){return e===b;})){so=r.startOffset;eo=r.endOffset;si=t.find(b,0,r.startContainer);ei=t.find(b,0,r.endContainer);}}else{tr=d.body.createTextRange();tr.moveToElementText(b);tr.collapse(1);bp=tr.move('character',c)*-1;tr=r.duplicate();tr.collapse(1);sp=tr.move('character',c)*-1;tr=r.duplicate();tr.collapse(0);le=(tr.move('character',c)*-1)-sp;si=sp-bp;ei=le;}}bl=ed.dom.create(ed.settings.forced_root_block);bl.appendChild(nx.cloneNode(1));nx.parentNode.replaceChild(bl,nx);}}else{if(bl.hasChildNodes())bl.insertBefore(nx,bl.firstChild);else bl.appendChild(nx);}}else bl=null;}if(si!=-2){if(!isIE){bl=b.getElementsByTagName(ed.settings.element)[0];r=d.createRange();if(si!=-1)r.setStart(t.find(b,1,si),so);else r.setStart(bl,0);if(ei!=-1)r.setEnd(t.find(b,1,ei),eo);else r.setEnd(bl,0);if(s){s.removeAllRanges();s.addRange(r);}}else{try{r=s.createRange();r.moveToElementText(b);r.collapse(1);r.moveStart('character',si);r.moveEnd('character',ei);r.select();}catch(ex){}}}},getParentBlock:function(n){var d=this.dom;return d.getParent(n,d.isBlock);},insertPara:function(e){var t=this,ed=t.editor,dom=ed.dom,d=ed.getDoc(),se=ed.settings,s=ed.selection.getSel(),r=s.getRangeAt(0),b=d.body;var rb,ra,dir,sn,so,en,eo,sb,eb,bn,bef,aft,sc,ec,n,vp=dom.getViewPort(ed.getWin()),y,ch;function isEmpty(n){n=n.innerHTML;n=n.replace(/<(img|hr|table)/gi,'-');n=n.replace(/<[^>]+>/g,'');return n.replace(/[ \t\r\n]+/g,'')=='';};rb=d.createRange();rb.setStart(s.anchorNode,s.anchorOffset);rb.collapse(true);ra=d.createRange();ra.setStart(s.focusNode,s.focusOffset);ra.collapse(true);dir=rb.compareBoundaryPoints(rb.START_TO_END,ra)<0;sn=dir?s.anchorNode:s.focusNode;so=dir?s.anchorOffset:s.focusOffset;en=dir?s.focusNode:s.anchorNode;eo=dir?s.focusOffset:s.anchorOffset;if(sn===en&&/^(TD|TH)$/.test(sn.nodeName)){dom.remove(sn.firstChild);ed.dom.add(sn,se.element,null,'<br />');aft=ed.dom.add(sn,se.element,null,'<br />');r=d.createRange();r.selectNodeContents(aft);r.collapse(1);ed.selection.setRng(r);return false;}if(sn==b&&en==b&&b.firstChild&&ed.dom.isBlock(b.firstChild)){sn=en=sn.firstChild;so=eo=0;rb=d.createRange();rb.setStart(sn,0);ra=d.createRange();ra.setStart(en,0);}sn=sn.nodeName=="HTML"?d.body:sn;sn=sn.nodeName=="BODY"?sn.firstChild:sn;en=en.nodeName=="HTML"?d.body:en;en=en.nodeName=="BODY"?en.firstChild:en;sb=t.getParentBlock(sn);eb=t.getParentBlock(en);bn=sb?sb.nodeName:se.element;if(t.dom.getParent(sb,function(n){return/OL|UL|PRE/.test(n.nodeName);}))return true;if(sb&&(sb.nodeName=='CAPTION'||/absolute|relative|static/gi.test(sb.style.position))){bn=se.element;sb=null;}if(eb&&(eb.nodeName=='CAPTION'||/absolute|relative|static/gi.test(eb.style.position))){bn=se.element;eb=null;}if(/(TD|TABLE|TH|CAPTION)/.test(bn)||(sb&&bn=="DIV"&&/left|right/gi.test(sb.style.cssFloat))){bn=se.element;sb=eb=null;}bef=(sb&&sb.nodeName==bn)?sb.cloneNode(0):ed.dom.create(bn);aft=(eb&&eb.nodeName==bn)?eb.cloneNode(0):ed.dom.create(bn);aft.removeAttribute('id');if(/^(H[1-6])$/.test(bn)&&sn.nodeValue&&so==sn.nodeValue.length)aft=ed.dom.create(se.element);n=sc=sn;do{if(n==b||n.nodeType==9||t.dom.isBlock(n)||/(TD|TABLE|TH|CAPTION)/.test(n.nodeName))break;sc=n;}while((n=n.previousSibling?n.previousSibling:n.parentNode));n=ec=en;do{if(n==b||n.nodeType==9||t.dom.isBlock(n)||/(TD|TABLE|TH|CAPTION)/.test(n.nodeName))break;ec=n;}while((n=n.nextSibling?n.nextSibling:n.parentNode));if(sc.nodeName==bn)rb.setStart(sc,0);else rb.setStartBefore(sc);rb.setEnd(sn,so);bef.appendChild(rb.cloneContents()||d.createTextNode(''));try{ra.setEndAfter(ec);}catch(ex){}ra.setStart(en,eo);aft.appendChild(ra.cloneContents()||d.createTextNode(''));r=d.createRange();if(!sc.previousSibling&&sc.parentNode.nodeName==bn){r.setStartBefore(sc.parentNode);}else{if(rb.startContainer.nodeName==bn&&rb.startOffset==0)r.setStartBefore(rb.startContainer);else r.setStart(rb.startContainer,rb.startOffset);}if(!ec.nextSibling&&ec.parentNode.nodeName==bn)r.setEndAfter(ec.parentNode);else r.setEnd(ra.endContainer,ra.endOffset);r.deleteContents();if(isOpera)ed.getWin().scrollTo(0,vp.y);if(bef.firstChild&&bef.firstChild.nodeName==bn)bef.innerHTML=bef.firstChild.innerHTML;if(aft.firstChild&&aft.firstChild.nodeName==bn)aft.innerHTML=aft.firstChild.innerHTML;if(isEmpty(bef))bef.innerHTML='<br />';if(isEmpty(aft))aft.innerHTML=isOpera?' ':'<br />';if(isOpera&&parseFloat(opera.version())<9.5){r.insertNode(bef);r.insertNode(aft);}else{r.insertNode(aft);r.insertNode(bef);}aft.normalize();bef.normalize();function first(n){return d.createTreeWalker(n,NodeFilter.SHOW_TEXT,null,false).nextNode()||n;};r=d.createRange();r.selectNodeContents(isGecko?first(aft):aft);r.collapse(1);s.removeAllRanges();s.addRange(r);y=ed.dom.getPos(aft).y;ch=aft.clientHeight;if(y<vp.y||y+ch>vp.y+vp.h){ed.getWin().scrollTo(0,y<vp.y?y:y-vp.h+25);}return false;},backspaceDelete:function(e,bs){var t=this,ed=t.editor,b=ed.getBody(),n,se=ed.selection,r=se.getRng(),sc=r.startContainer,n,w,tn;if(sc&&ed.dom.isBlock(sc)&&!/^(TD|TH)$/.test(sc.nodeName)&&bs){if(sc.childNodes.length==0||(sc.childNodes.length==1&&sc.firstChild.nodeName=='BR')){n=sc;while((n=n.previousSibling)&&!ed.dom.isBlock(n));if(n){if(sc!=b.firstChild){w=ed.dom.doc.createTreeWalker(n,NodeFilter.SHOW_TEXT,null,false);while(tn=w.nextNode())n=tn;r=ed.getDoc().createRange();r.setStart(n,n.nodeValue?n.nodeValue.length:0);r.setEnd(n,n.nodeValue?n.nodeValue.length:0);se.setRng(r);ed.dom.remove(sc);}return Event.cancel(e);}}}function handler(e){var pr;e=e.target;if(e&&e.parentNode&&e.nodeName=='BR'&&(n=t.getParentBlock(e))){pr=e.previousSibling;Event.remove(b,'DOMNodeInserted',handler);if(pr&&pr.nodeType==3&&/\s+$/.test(pr.nodeValue))return;if(e.previousSibling||e.nextSibling)ed.dom.remove(e);}};Event._add(b,'DOMNodeInserted',handler);window.setTimeout(function(){Event._remove(b,'DOMNodeInserted',handler);},1);}});})();(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,each=tinymce.each,extend=tinymce.extend;tinymce.create('tinymce.ControlManager',{ControlManager:function(ed,s){var t=this,i;s=s||{};t.editor=ed;t.controls={};t.onAdd=new tinymce.util.Dispatcher(t);t.onPostRender=new tinymce.util.Dispatcher(t);t.prefix=s.prefix||ed.id+'_';t._cls={};t.onPostRender.add(function(){each(t.controls,function(c){c.postRender();});});},get:function(id){return this.controls[this.prefix+id]||this.controls[id];},setActive:function(id,s){var c=null;if(c=this.get(id))c.setActive(s);return c;},setDisabled:function(id,s){var c=null;if(c=this.get(id))c.setDisabled(s);return c;},add:function(c){var t=this;if(c){t.controls[c.id]=c;t.onAdd.dispatch(c,t);}return c;},createControl:function(n){var c,t=this,ed=t.editor;each(ed.plugins,function(p){if(p.createControl){c=p.createControl(n,t);if(c)return false;}});switch(n){case"|":case"separator":return t.createSeparator();}if(!c&&ed.buttons&&(c=ed.buttons[n]))return t.createButton(n,c);return t.add(c);},createDropMenu:function(id,s,cc){var t=this,ed=t.editor,c,bm,v,cls;s=extend({'class':'mceDropDown',constrain:ed.settings.constrain_menus},s);s['class']=s['class']+' '+ed.getParam('skin')+'Skin';if(v=ed.getParam('skin_variant'))s['class']+=' '+ed.getParam('skin')+'Skin'+v.substring(0,1).toUpperCase()+v.substring(1);id=t.prefix+id;cls=cc||t._cls.dropmenu||tinymce.ui.DropMenu;c=t.controls[id]=new cls(id,s);c.onAddItem.add(function(c,o){var s=o.settings;s.title=ed.getLang(s.title,s.title);if(!s.onclick){s.onclick=function(v){ed.execCommand(s.cmd,s.ui||false,s.value);};}});ed.onRemove.add(function(){c.destroy();});if(tinymce.isIE){c.onShowMenu.add(function(){bm=ed.selection.getBookmark(1);});c.onHideMenu.add(function(){if(bm)ed.selection.moveToBookmark(bm);});}return t.add(c);},createListBox:function(id,s,cc){var t=this,ed=t.editor,cmd,c,cls;if(t.get(id))return null;s.title=ed.translate(s.title);s.scope=s.scope||ed;if(!s.onselect){s.onselect=function(v){ed.execCommand(s.cmd,s.ui||false,v||s.value);};}s=extend({title:s.title,'class':'mce_'+id,scope:s.scope,control_manager:t},s);id=t.prefix+id;if(ed.settings.use_native_selects)c=new tinymce.ui.NativeListBox(id,s);else{cls=cc||t._cls.listbox||tinymce.ui.ListBox;c=new cls(id,s);}t.controls[id]=c;if(tinymce.isWebKit){c.onPostRender.add(function(c,n){Event.add(n,'mousedown',function(){ed.bookmark=ed.selection.getBookmark('simple');});Event.add(n,'focus',function(){ed.selection.moveToBookmark(ed.bookmark);ed.bookmark=null;});});}if(c.hideMenu)ed.onMouseDown.add(c.hideMenu,c);return t.add(c);},createButton:function(id,s,cc){var t=this,ed=t.editor,o,c,cls;if(t.get(id))return null;s.title=ed.translate(s.title);s.label=ed.translate(s.label);s.scope=s.scope||ed;if(!s.onclick&&!s.menu_button){s.onclick=function(){ed.execCommand(s.cmd,s.ui||false,s.value);};}s=extend({title:s.title,'class':'mce_'+id,unavailable_prefix:ed.getLang('unavailable',''),scope:s.scope,control_manager:t},s);id=t.prefix+id;if(s.menu_button){cls=cc||t._cls.menubutton||tinymce.ui.MenuButton;c=new cls(id,s);ed.onMouseDown.add(c.hideMenu,c);}else{cls=t._cls.button||tinymce.ui.Button;c=new cls(id,s);}return t.add(c);},createMenuButton:function(id,s){s=s||{};s.menu_button=1;return this.createButton(id,s);},createSplitButton:function(id,s,cc){var t=this,ed=t.editor,cmd,c,cls;if(t.get(id))return null;s.title=ed.translate(s.title);s.scope=s.scope||ed;if(!s.onclick){s.onclick=function(v){ed.execCommand(s.cmd,s.ui||false,v||s.value);};}if(!s.onselect){s.onselect=function(v){ed.execCommand(s.cmd,s.ui||false,v||s.value);};}s=extend({title:s.title,'class':'mce_'+id,scope:s.scope,control_manager:t},s);id=t.prefix+id;cls=cc||t._cls.splitbutton||tinymce.ui.SplitButton;c=t.add(new cls(id,s));ed.onMouseDown.add(c.hideMenu,c);return c;},createColorSplitButton:function(id,s,cc){var t=this,ed=t.editor,cmd,c,cls,bm;if(t.get(id))return null;s.title=ed.translate(s.title);s.scope=s.scope||ed;if(!s.onclick){s.onclick=function(v){ed.execCommand(s.cmd,s.ui||false,v||s.value);};}if(!s.onselect){s.onselect=function(v){ed.execCommand(s.cmd,s.ui||false,v||s.value);};}s=extend({title:s.title,'class':'mce_'+id,'menu_class':ed.getParam('skin')+'Skin',scope:s.scope,more_colors_title:ed.getLang('more_colors')},s);id=t.prefix+id;cls=cc||t._cls.colorsplitbutton||tinymce.ui.ColorSplitButton;c=new cls(id,s);ed.onMouseDown.add(c.hideMenu,c);ed.onRemove.add(function(){c.destroy();});if(tinymce.isIE){c.onShowMenu.add(function(){bm=ed.selection.getBookmark(1);});c.onHideMenu.add(function(){if(bm){ed.selection.moveToBookmark(bm);bm=0;}});}return t.add(c);},createToolbar:function(id,s,cc){var c,t=this,cls;id=t.prefix+id;cls=cc||t._cls.toolbar||tinymce.ui.Toolbar;c=new cls(id,s);if(t.get(id))return null;return t.add(c);},createSeparator:function(cc){var cls=cc||this._cls.separator||tinymce.ui.Separator;return new cls();},setControlType:function(n,c){return this._cls[n.toLowerCase()]=c;},destroy:function(){each(this.controls,function(c){c.destroy();});this.controls=null;}});})();(function(){var Dispatcher=tinymce.util.Dispatcher,each=tinymce.each,isIE=tinymce.isIE,isOpera=tinymce.isOpera;tinymce.create('tinymce.WindowManager',{WindowManager:function(ed){var t=this;t.editor=ed;t.onOpen=new Dispatcher(t);t.onClose=new Dispatcher(t);t.params={};t.features={};},open:function(s,p){var t=this,f='',x,y,mo=t.editor.settings.dialog_type=='modal',w,sw,sh,vp=tinymce.DOM.getViewPort(),u;s=s||{};p=p||{};sw=isOpera?vp.w:screen.width;sh=isOpera?vp.h:screen.height;s.name=s.name||'mc_'+new Date().getTime();s.width=parseInt(s.width||320);s.height=parseInt(s.height||240);s.resizable=true;s.left=s.left||parseInt(sw/ 2.0) - (s.width /2.0);s.top=s.top||parseInt(sh/ 2.0) - (s.height /2.0);p.inline=false;p.mce_width=s.width;p.mce_height=s.height;p.mce_auto_focus=s.auto_focus;if(mo){if(isIE){s.center=true;s.help=false;s.dialogWidth=s.width+'px';s.dialogHeight=s.height+'px';s.scroll=s.scrollbars||false;}}each(s,function(v,k){if(tinymce.is(v,'boolean'))v=v?'yes':'no';if(!/^(name|url)$/.test(k)){if(isIE&&mo)f+=(f?';':'')+k+':'+v;else f+=(f?',':'')+k+'='+v;}});t.features=s;t.params=p;t.onOpen.dispatch(t,s,p);u=s.url||s.file;if(tinymce.relaxedDomain)u+=(u.indexOf('?')==-1?'?':'&')+'mce_rdomain='+tinymce.relaxedDomain;u=tinymce._addVer(u);try{if(isIE&&mo){w=1;window.showModalDialog(u,window,f);}else w=window.open(u,s.name,f);}catch(ex){}if(!w)alert(t.editor.getLang('popup_blocked'));},close:function(w){w.close();this.onClose.dispatch(this);},createInstance:function(cl,a,b,c,d,e){var f=tinymce.resolve(cl);return new f(a,b,c,d,e);},confirm:function(t,cb,s,w){w=w||window;cb.call(s||this,w.confirm(this._decode(this.editor.getLang(t,t))));},alert:function(tx,cb,s,w){var t=this;w=w||window;w.alert(t._decode(t.editor.getLang(tx,tx)));if(cb)cb.call(s||t);},_decode:function(s){return tinymce.DOM.decode(s).replace(/\\n/g,'\n');}});}());
\ No newline at end of file
--- /dev/null
+// Some global instances\r
+var tinymce = null, tinyMCEPopup, tinyMCE;\r
+\r
+tinyMCEPopup = {\r
+ init : function() {\r
+ var t = this, w, ti, li, q, i, it;\r
+\r
+ li = ('' + document.location.search).replace(/^\?/, '').split('&');\r
+ q = {};\r
+ for (i=0; i<li.length; i++) {\r
+ it = li[i].split('=');\r
+ q[unescape(it[0])] = unescape(it[1]);\r
+ }\r
+\r
+ if (q.mce_rdomain)\r
+ document.domain = q.mce_rdomain;\r
+\r
+ // Find window & API\r
+ w = t.getWin();\r
+ tinymce = w.tinymce;\r
+ tinyMCE = w.tinyMCE;\r
+ t.editor = tinymce.EditorManager.activeEditor;\r
+ t.params = t.editor.windowManager.params;\r
+ t.features = t.editor.windowManager.features;\r
+\r
+ // Setup local DOM\r
+ t.dom = t.editor.windowManager.createInstance('tinymce.dom.DOMUtils', document);\r
+ t.dom.loadCSS(t.features.popup_css || t.editor.settings.popup_css);\r
+\r
+ // Setup on init listeners\r
+ t.listeners = [];\r
+ t.onInit = {\r
+ add : function(f, s) {\r
+ t.listeners.push({func : f, scope : s});\r
+ }\r
+ };\r
+\r
+ t.isWindow = !t.getWindowArg('mce_inline');\r
+ t.id = t.getWindowArg('mce_window_id');\r
+ t.editor.windowManager.onOpen.dispatch(t.editor.windowManager, window);\r
+ },\r
+\r
+ getWin : function() {\r
+ return window.dialogArguments || opener || parent || top;\r
+ },\r
+\r
+ getWindowArg : function(n, dv) {\r
+ var v = this.params[n];\r
+\r
+ return tinymce.is(v) ? v : dv;\r
+ },\r
+\r
+ getParam : function(n, dv) {\r
+ return this.editor.getParam(n, dv);\r
+ },\r
+\r
+ getLang : function(n, dv) {\r
+ return this.editor.getLang(n, dv);\r
+ },\r
+\r
+ execCommand : function(cmd, ui, val, a) {\r
+ a = a || {};\r
+ a.skip_focus = 1;\r
+\r
+ this.restoreSelection();\r
+ return this.editor.execCommand(cmd, ui, val, a);\r
+ },\r
+\r
+ resizeToInnerSize : function() {\r
+ var t = this, n, b = document.body, vp = t.dom.getViewPort(window), dw, dh;\r
+\r
+ dw = t.getWindowArg('mce_width') - vp.w;\r
+ dh = t.getWindowArg('mce_height') - vp.h;\r
+\r
+ if (t.isWindow)\r
+ window.resizeBy(dw, dh);\r
+ else\r
+ t.editor.windowManager.resizeBy(dw, dh, t.id);\r
+ },\r
+\r
+ executeOnLoad : function(s) {\r
+ this.onInit.add(function() {\r
+ eval(s);\r
+ });\r
+ },\r
+\r
+ storeSelection : function() {\r
+ this.editor.windowManager.bookmark = tinyMCEPopup.editor.selection.getBookmark('simple');\r
+ },\r
+\r
+ restoreSelection : function() {\r
+ var t = tinyMCEPopup;\r
+\r
+ if (!t.isWindow && tinymce.isIE)\r
+ t.editor.selection.moveToBookmark(t.editor.windowManager.bookmark);\r
+ },\r
+\r
+ requireLangPack : function() {\r
+ var u = this.getWindowArg('plugin_url') || this.getWindowArg('theme_url');\r
+\r
+ if (u && this.editor.settings.language) {\r
+ u += '/langs/' + this.editor.settings.language + '_dlg.js';\r
+\r
+ if (!tinymce.ScriptLoader.isDone(u)) {\r
+ document.write('<script type="text/javascript" src="' + tinymce._addVer(u) + '"></script>');\r
+ tinymce.ScriptLoader.markDone(u);\r
+ }\r
+ }\r
+ },\r
+\r
+ pickColor : function(e, element_id) {\r
+ this.execCommand('mceColorPicker', true, {\r
+ color : document.getElementById(element_id).value,\r
+ func : function(c) {\r
+ document.getElementById(element_id).value = c;\r
+\r
+ try {\r
+ document.getElementById(element_id).onchange();\r
+ } catch (ex) {\r
+ // Try fire event, ignore errors\r
+ }\r
+ }\r
+ });\r
+ },\r
+\r
+ openBrowser : function(element_id, type, option) {\r
+ tinyMCEPopup.restoreSelection();\r
+ this.editor.execCallback('file_browser_callback', element_id, document.getElementById(element_id).value, type, window);\r
+ },\r
+\r
+ confirm : function(t, cb, s) {\r
+ this.editor.windowManager.confirm(t, cb, s, window);\r
+ },\r
+\r
+ alert : function(tx, cb, s) {\r
+ this.editor.windowManager.alert(tx, cb, s, window);\r
+ },\r
+\r
+ close : function() {\r
+ var t = this;\r
+\r
+ // To avoid domain relaxing issue in Opera\r
+ function close() {\r
+ t.editor.windowManager.close(window);\r
+ tinymce = tinyMCE = t.editor = t.params = t.dom = t.dom.doc = null; // Cleanup\r
+ };\r
+\r
+ if (tinymce.isOpera)\r
+ t.getWin().setTimeout(close, 0);\r
+ else\r
+ close();\r
+ },\r
+\r
+ // Internal functions \r
+\r
+ _restoreSelection : function() {\r
+ var e = window.event.srcElement;\r
+\r
+ if (e.nodeName == 'INPUT' && (e.type == 'submit' || e.type == 'button'))\r
+ tinyMCEPopup.restoreSelection();\r
+ },\r
+\r
+/* _restoreSelection : function() {\r
+ var e = window.event.srcElement;\r
+\r
+ // If user focus a non text input or textarea\r
+ if ((e.nodeName != 'INPUT' && e.nodeName != 'TEXTAREA') || e.type != 'text')\r
+ tinyMCEPopup.restoreSelection();\r
+ },*/\r
+\r
+ _onDOMLoaded : function() {\r
+ var t = this, ti = document.title, bm, h;\r
+\r
+ // Translate page\r
+ h = document.body.innerHTML;\r
+\r
+ // Replace a=x with a="x" in IE\r
+ if (tinymce.isIE)\r
+ h = h.replace(/ (value|title|alt)=([^"][^\s>]+)/gi, ' $1="$2"')\r
+\r
+ document.dir = t.editor.getParam('directionality','');\r
+ document.body.innerHTML = t.editor.translate(h);\r
+ document.title = ti = t.editor.translate(ti);\r
+ document.body.style.display = '';\r
+\r
+ // Restore selection in IE when focus is placed on a non textarea or input element of the type text\r
+ if (tinymce.isIE)\r
+ document.attachEvent('onmouseup', tinyMCEPopup._restoreSelection);\r
+\r
+ t.restoreSelection();\r
+ t.resizeToInnerSize();\r
+\r
+ // Set inline title\r
+ if (!t.isWindow)\r
+ t.editor.windowManager.setTitle(window, ti);\r
+ else\r
+ window.focus();\r
+\r
+ if (!tinymce.isIE && !t.isWindow) {\r
+ tinymce.dom.Event._add(document, 'focus', function() {\r
+ t.editor.windowManager.focus(t.id)\r
+ });\r
+ }\r
+\r
+ // Patch for accessibility\r
+ tinymce.each(t.dom.select('select'), function(e) {\r
+ e.onkeydown = tinyMCEPopup._accessHandler;\r
+ });\r
+\r
+ // Call onInit\r
+ // Init must be called before focus so the selection won't get lost by the focus call\r
+ tinymce.each(t.listeners, function(o) {\r
+ o.func.call(o.scope, t.editor);\r
+ });\r
+\r
+ // Move focus to window\r
+ if (t.getWindowArg('mce_auto_focus', true)) {\r
+ window.focus();\r
+\r
+ // Focus element with mceFocus class\r
+ tinymce.each(document.forms, function(f) {\r
+ tinymce.each(f.elements, function(e) {\r
+ if (t.dom.hasClass(e, 'mceFocus') && !e.disabled) {\r
+ e.focus();\r
+ return false; // Break loop\r
+ }\r
+ });\r
+ });\r
+ }\r
+\r
+ document.onkeyup = tinyMCEPopup._closeWinKeyHandler;\r
+ },\r
+\r
+ _accessHandler : function(e) {\r
+ e = e || window.event;\r
+\r
+ if (e.keyCode == 13 || e.keyCode == 32) {\r
+ e = e.target || e.srcElement;\r
+\r
+ if (e.onchange)\r
+ e.onchange();\r
+\r
+ return tinymce.dom.Event.cancel(e);\r
+ }\r
+ },\r
+\r
+ _closeWinKeyHandler : function(e) {\r
+ e = e || window.event;\r
+\r
+ if (e.keyCode == 27)\r
+ tinyMCEPopup.close();\r
+ },\r
+\r
+ _wait : function() {\r
+ var t = this, ti;\r
+\r
+ if (tinymce.isIE && document.location.protocol != 'https:') {\r
+ // Fake DOMContentLoaded on IE\r
+ document.write('<script id=__ie_onload defer src=\'javascript:""\';><\/script>');\r
+ document.getElementById("__ie_onload").onreadystatechange = function() {\r
+ if (this.readyState == "complete") {\r
+ t._onDOMLoaded();\r
+ document.getElementById("__ie_onload").onreadystatechange = null; // Prevent leak\r
+ }\r
+ };\r
+ } else {\r
+ if (tinymce.isIE || tinymce.isWebKit) {\r
+ ti = setInterval(function() {\r
+ if (/loaded|complete/.test(document.readyState)) {\r
+ clearInterval(ti);\r
+ t._onDOMLoaded();\r
+ }\r
+ }, 10);\r
+ } else {\r
+ window.addEventListener('DOMContentLoaded', function() {\r
+ t._onDOMLoaded();\r
+ }, false);\r
+ }\r
+ }\r
+ }\r
+};\r
+\r
+tinyMCEPopup.init();\r
+tinyMCEPopup._wait(); // Wait for DOM Content Loaded\r
--- /dev/null
+/**\r
+ * $Id: editable_selects.js 867 2008-06-09 20:33:40Z spocke $\r
+ *\r
+ * Makes select boxes editable.\r
+ *\r
+ * @author Moxiecode\r
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+var TinyMCE_EditableSelects = {\r
+ editSelectElm : null,\r
+\r
+ init : function() {\r
+ var nl = document.getElementsByTagName("select"), i, d = document, o;\r
+\r
+ for (i=0; i<nl.length; i++) {\r
+ if (nl[i].className.indexOf('mceEditableSelect') != -1) {\r
+ o = new Option('(value)', '__mce_add_custom__');\r
+\r
+ o.className = 'mceAddSelectValue';\r
+\r
+ nl[i].options[nl[i].options.length] = o;\r
+ nl[i].onchange = TinyMCE_EditableSelects.onChangeEditableSelect;\r
+ }\r
+ }\r
+ },\r
+\r
+ onChangeEditableSelect : function(e) {\r
+ var d = document, ne, se = window.event ? window.event.srcElement : e.target;\r
+\r
+ if (se.options[se.selectedIndex].value == '__mce_add_custom__') {\r
+ ne = d.createElement("input");\r
+ ne.id = se.id + "_custom";\r
+ ne.name = se.name + "_custom";\r
+ ne.type = "text";\r
+\r
+ ne.style.width = se.offsetWidth + 'px';\r
+ se.parentNode.insertBefore(ne, se);\r
+ se.style.display = 'none';\r
+ ne.focus();\r
+ ne.onblur = TinyMCE_EditableSelects.onBlurEditableSelectInput;\r
+ ne.onkeydown = TinyMCE_EditableSelects.onKeyDown;\r
+ TinyMCE_EditableSelects.editSelectElm = se;\r
+ }\r
+ },\r
+\r
+ onBlurEditableSelectInput : function() {\r
+ var se = TinyMCE_EditableSelects.editSelectElm;\r
+\r
+ if (se) {\r
+ if (se.previousSibling.value != '') {\r
+ addSelectValue(document.forms[0], se.id, se.previousSibling.value, se.previousSibling.value);\r
+ selectByValue(document.forms[0], se.id, se.previousSibling.value);\r
+ } else\r
+ selectByValue(document.forms[0], se.id, '');\r
+\r
+ se.style.display = 'inline';\r
+ se.parentNode.removeChild(se.previousSibling);\r
+ TinyMCE_EditableSelects.editSelectElm = null;\r
+ }\r
+ },\r
+\r
+ onKeyDown : function(e) {\r
+ e = e || window.event;\r
+\r
+ if (e.keyCode == 13)\r
+ TinyMCE_EditableSelects.onBlurEditableSelectInput();\r
+ }\r
+};\r
--- /dev/null
+/**\r
+ * $Id: form_utils.js 673 2008-03-06 13:26:20Z spocke $\r
+ *\r
+ * Various form utilitiy functions.\r
+ *\r
+ * @author Moxiecode\r
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+var themeBaseURL = tinyMCEPopup.editor.baseURI.toAbsolute('themes/' + tinyMCEPopup.getParam("theme"));\r
+\r
+function getColorPickerHTML(id, target_form_element) {\r
+ var h = "";\r
+\r
+ h += '<a id="' + id + '_link" href="javascript:;" onclick="tinyMCEPopup.pickColor(event,\'' + target_form_element +'\');" onmousedown="return false;" class="pickcolor">';\r
+ h += '<span id="' + id + '" title="' + tinyMCEPopup.getLang('browse') + '"></span></a>';\r
+\r
+ return h;\r
+}\r
+\r
+function updateColor(img_id, form_element_id) {\r
+ document.getElementById(img_id).style.backgroundColor = document.forms[0].elements[form_element_id].value;\r
+}\r
+\r
+function setBrowserDisabled(id, state) {\r
+ var img = document.getElementById(id);\r
+ var lnk = document.getElementById(id + "_link");\r
+\r
+ if (lnk) {\r
+ if (state) {\r
+ lnk.setAttribute("realhref", lnk.getAttribute("href"));\r
+ lnk.removeAttribute("href");\r
+ tinyMCEPopup.dom.addClass(img, 'disabled');\r
+ } else {\r
+ if (lnk.getAttribute("realhref"))\r
+ lnk.setAttribute("href", lnk.getAttribute("realhref"));\r
+\r
+ tinyMCEPopup.dom.removeClass(img, 'disabled');\r
+ }\r
+ }\r
+}\r
+\r
+function getBrowserHTML(id, target_form_element, type, prefix) {\r
+ var option = prefix + "_" + type + "_browser_callback", cb, html;\r
+\r
+ cb = tinyMCEPopup.getParam(option, tinyMCEPopup.getParam("file_browser_callback"));\r
+\r
+ if (!cb)\r
+ return "";\r
+\r
+ html = "";\r
+ html += '<a id="' + id + '_link" href="javascript:openBrowser(\'' + id + '\',\'' + target_form_element + '\', \'' + type + '\',\'' + option + '\');" onmousedown="return false;" class="browse">';\r
+ html += '<span id="' + id + '" title="' + tinyMCEPopup.getLang('browse') + '"></span></a>';\r
+\r
+ return html;\r
+}\r
+\r
+function openBrowser(img_id, target_form_element, type, option) {\r
+ var img = document.getElementById(img_id);\r
+\r
+ if (img.className != "mceButtonDisabled")\r
+ tinyMCEPopup.openBrowser(target_form_element, type, option);\r
+}\r
+\r
+function selectByValue(form_obj, field_name, value, add_custom, ignore_case) {\r
+ if (!form_obj || !form_obj.elements[field_name])\r
+ return;\r
+\r
+ var sel = form_obj.elements[field_name];\r
+\r
+ var found = false;\r
+ for (var i=0; i<sel.options.length; i++) {\r
+ var option = sel.options[i];\r
+\r
+ if (option.value == value || (ignore_case && option.value.toLowerCase() == value.toLowerCase())) {\r
+ option.selected = true;\r
+ found = true;\r
+ } else\r
+ option.selected = false;\r
+ }\r
+\r
+ if (!found && add_custom && value != '') {\r
+ var option = new Option(value, value);\r
+ option.selected = true;\r
+ sel.options[sel.options.length] = option;\r
+ sel.selectedIndex = sel.options.length - 1;\r
+ }\r
+\r
+ return found;\r
+}\r
+\r
+function getSelectValue(form_obj, field_name) {\r
+ var elm = form_obj.elements[field_name];\r
+\r
+ if (elm == null || elm.options == null)\r
+ return "";\r
+\r
+ return elm.options[elm.selectedIndex].value;\r
+}\r
+\r
+function addSelectValue(form_obj, field_name, name, value) {\r
+ var s = form_obj.elements[field_name];\r
+ var o = new Option(name, value);\r
+ s.options[s.options.length] = o;\r
+}\r
+\r
+function addClassesToList(list_id, specific_option) {\r
+ // Setup class droplist\r
+ var styleSelectElm = document.getElementById(list_id);\r
+ var styles = tinyMCEPopup.getParam('theme_advanced_styles', false);\r
+ styles = tinyMCEPopup.getParam(specific_option, styles);\r
+\r
+ if (styles) {\r
+ var stylesAr = styles.split(';');\r
+\r
+ for (var i=0; i<stylesAr.length; i++) {\r
+ if (stylesAr != "") {\r
+ var key, value;\r
+\r
+ key = stylesAr[i].split('=')[0];\r
+ value = stylesAr[i].split('=')[1];\r
+\r
+ styleSelectElm.options[styleSelectElm.length] = new Option(key, value);\r
+ }\r
+ }\r
+ } else {\r
+ tinymce.each(tinyMCEPopup.editor.dom.getClasses(), function(o) {\r
+ styleSelectElm.options[styleSelectElm.length] = new Option(o.title || o['class'], o['class']);\r
+ });\r
+ }\r
+}\r
+\r
+function isVisible(element_id) {\r
+ var elm = document.getElementById(element_id);\r
+\r
+ return elm && elm.style.display != "none";\r
+}\r
+\r
+function convertRGBToHex(col) {\r
+ var re = new RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)", "gi");\r
+\r
+ var rgb = col.replace(re, "$1,$2,$3").split(',');\r
+ if (rgb.length == 3) {\r
+ r = parseInt(rgb[0]).toString(16);\r
+ g = parseInt(rgb[1]).toString(16);\r
+ b = parseInt(rgb[2]).toString(16);\r
+\r
+ r = r.length == 1 ? '0' + r : r;\r
+ g = g.length == 1 ? '0' + g : g;\r
+ b = b.length == 1 ? '0' + b : b;\r
+\r
+ return "#" + r + g + b;\r
+ }\r
+\r
+ return col;\r
+}\r
+\r
+function convertHexToRGB(col) {\r
+ if (col.indexOf('#') != -1) {\r
+ col = col.replace(new RegExp('[^0-9A-F]', 'gi'), '');\r
+\r
+ r = parseInt(col.substring(0, 2), 16);\r
+ g = parseInt(col.substring(2, 4), 16);\r
+ b = parseInt(col.substring(4, 6), 16);\r
+\r
+ return "rgb(" + r + "," + g + "," + b + ")";\r
+ }\r
+\r
+ return col;\r
+}\r
+\r
+function trimSize(size) {\r
+ return size.replace(/([0-9\.]+)px|(%|in|cm|mm|em|ex|pt|pc)/, '$1$2');\r
+}\r
+\r
+function getCSSSize(size) {\r
+ size = trimSize(size);\r
+\r
+ if (size == "")\r
+ return "";\r
+\r
+ // Add px\r
+ if (/^[0-9]+$/.test(size))\r
+ size += 'px';\r
+\r
+ return size;\r
+}\r
+\r
+function getStyle(elm, attrib, style) {\r
+ var val = tinyMCEPopup.dom.getAttrib(elm, attrib);\r
+\r
+ if (val != '')\r
+ return '' + val;\r
+\r
+ if (typeof(style) == 'undefined')\r
+ style = attrib;\r
+\r
+ return tinyMCEPopup.dom.getStyle(elm, style);\r
+}\r
--- /dev/null
+/**\r
+ * $Id: mctabs.js 758 2008-03-30 13:53:29Z spocke $\r
+ *\r
+ * Moxiecode DHTML Tabs script.\r
+ *\r
+ * @author Moxiecode\r
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+function MCTabs() {\r
+ this.settings = [];\r
+};\r
+\r
+MCTabs.prototype.init = function(settings) {\r
+ this.settings = settings;\r
+};\r
+\r
+MCTabs.prototype.getParam = function(name, default_value) {\r
+ var value = null;\r
+\r
+ value = (typeof(this.settings[name]) == "undefined") ? default_value : this.settings[name];\r
+\r
+ // Fix bool values\r
+ if (value == "true" || value == "false")\r
+ return (value == "true");\r
+\r
+ return value;\r
+};\r
+\r
+MCTabs.prototype.displayTab = function(tab_id, panel_id) {\r
+ var panelElm, panelContainerElm, tabElm, tabContainerElm, selectionClass, nodes, i;\r
+\r
+ panelElm= document.getElementById(panel_id);\r
+ panelContainerElm = panelElm ? panelElm.parentNode : null;\r
+ tabElm = document.getElementById(tab_id);\r
+ tabContainerElm = tabElm ? tabElm.parentNode : null;\r
+ selectionClass = this.getParam('selection_class', 'current');\r
+\r
+ if (tabElm && tabContainerElm) {\r
+ nodes = tabContainerElm.childNodes;\r
+\r
+ // Hide all other tabs\r
+ for (i = 0; i < nodes.length; i++) {\r
+ if (nodes[i].nodeName == "LI")\r
+ nodes[i].className = '';\r
+ }\r
+\r
+ // Show selected tab\r
+ tabElm.className = 'current';\r
+ }\r
+\r
+ if (panelElm && panelContainerElm) {\r
+ nodes = panelContainerElm.childNodes;\r
+\r
+ // Hide all other panels\r
+ for (i = 0; i < nodes.length; i++) {\r
+ if (nodes[i].nodeName == "DIV")\r
+ nodes[i].className = 'panel';\r
+ }\r
+\r
+ // Show selected panel\r
+ panelElm.className = 'current';\r
+ }\r
+};\r
+\r
+MCTabs.prototype.getAnchor = function() {\r
+ var pos, url = document.location.href;\r
+\r
+ if ((pos = url.lastIndexOf('#')) != -1)\r
+ return url.substring(pos + 1);\r
+\r
+ return "";\r
+};\r
+\r
+// Global instance\r
+var mcTabs = new MCTabs();\r
--- /dev/null
+/**\r
+ * $Id: validate.js 758 2008-03-30 13:53:29Z spocke $\r
+ *\r
+ * Various form validation methods.\r
+ *\r
+ * @author Moxiecode\r
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+/**\r
+ // String validation:\r
+\r
+ if (!Validator.isEmail('myemail'))\r
+ alert('Invalid email.');\r
+\r
+ // Form validation:\r
+\r
+ var f = document.forms['myform'];\r
+\r
+ if (!Validator.isEmail(f.myemail))\r
+ alert('Invalid email.');\r
+*/\r
+\r
+var Validator = {\r
+ isEmail : function(s) {\r
+ return this.test(s, '^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+@[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$');\r
+ },\r
+\r
+ isAbsUrl : function(s) {\r
+ return this.test(s, '^(news|telnet|nttp|file|http|ftp|https)://[-A-Za-z0-9\\.]+\\/?.*$');\r
+ },\r
+\r
+ isSize : function(s) {\r
+ return this.test(s, '^[0-9]+(%|in|cm|mm|em|ex|pt|pc|px)?$');\r
+ },\r
+\r
+ isId : function(s) {\r
+ return this.test(s, '^[A-Za-z_]([A-Za-z0-9_])*$');\r
+ },\r
+\r
+ isEmpty : function(s) {\r
+ var nl, i;\r
+\r
+ if (s.nodeName == 'SELECT' && s.selectedIndex < 1)\r
+ return true;\r
+\r
+ if (s.type == 'checkbox' && !s.checked)\r
+ return true;\r
+\r
+ if (s.type == 'radio') {\r
+ for (i=0, nl = s.form.elements; i<nl.length; i++) {\r
+ if (nl[i].type == "radio" && nl[i].name == s.name && nl[i].checked)\r
+ return false;\r
+ }\r
+\r
+ return true;\r
+ }\r
+\r
+ return new RegExp('^\\s*$').test(s.nodeType == 1 ? s.value : s);\r
+ },\r
+\r
+ isNumber : function(s, d) {\r
+ return !isNaN(s.nodeType == 1 ? s.value : s) && (!d || !this.test(s, '^-?[0-9]*\\.[0-9]*$'));\r
+ },\r
+\r
+ test : function(s, p) {\r
+ s = s.nodeType == 1 ? s.value : s;\r
+\r
+ return s == '' || new RegExp(p).test(s);\r
+ }\r
+};\r
+\r
+var AutoValidator = {\r
+ settings : {\r
+ id_cls : 'id',\r
+ int_cls : 'int',\r
+ url_cls : 'url',\r
+ number_cls : 'number',\r
+ email_cls : 'email',\r
+ size_cls : 'size',\r
+ required_cls : 'required',\r
+ invalid_cls : 'invalid',\r
+ min_cls : 'min',\r
+ max_cls : 'max'\r
+ },\r
+\r
+ init : function(s) {\r
+ var n;\r
+\r
+ for (n in s)\r
+ this.settings[n] = s[n];\r
+ },\r
+\r
+ validate : function(f) {\r
+ var i, nl, s = this.settings, c = 0;\r
+\r
+ nl = this.tags(f, 'label');\r
+ for (i=0; i<nl.length; i++)\r
+ this.removeClass(nl[i], s.invalid_cls);\r
+\r
+ c += this.validateElms(f, 'input');\r
+ c += this.validateElms(f, 'select');\r
+ c += this.validateElms(f, 'textarea');\r
+\r
+ return c == 3;\r
+ },\r
+\r
+ invalidate : function(n) {\r
+ this.mark(n.form, n);\r
+ },\r
+\r
+ reset : function(e) {\r
+ var t = ['label', 'input', 'select', 'textarea'];\r
+ var i, j, nl, s = this.settings;\r
+\r
+ if (e == null)\r
+ return;\r
+\r
+ for (i=0; i<t.length; i++) {\r
+ nl = this.tags(e.form ? e.form : e, t[i]);\r
+ for (j=0; j<nl.length; j++)\r
+ this.removeClass(nl[j], s.invalid_cls);\r
+ }\r
+ },\r
+\r
+ validateElms : function(f, e) {\r
+ var nl, i, n, s = this.settings, st = true, va = Validator, v;\r
+\r
+ nl = this.tags(f, e);\r
+ for (i=0; i<nl.length; i++) {\r
+ n = nl[i];\r
+\r
+ this.removeClass(n, s.invalid_cls);\r
+\r
+ if (this.hasClass(n, s.required_cls) && va.isEmpty(n))\r
+ st = this.mark(f, n);\r
+\r
+ if (this.hasClass(n, s.number_cls) && !va.isNumber(n))\r
+ st = this.mark(f, n);\r
+\r
+ if (this.hasClass(n, s.int_cls) && !va.isNumber(n, true))\r
+ st = this.mark(f, n);\r
+\r
+ if (this.hasClass(n, s.url_cls) && !va.isAbsUrl(n))\r
+ st = this.mark(f, n);\r
+\r
+ if (this.hasClass(n, s.email_cls) && !va.isEmail(n))\r
+ st = this.mark(f, n);\r
+\r
+ if (this.hasClass(n, s.size_cls) && !va.isSize(n))\r
+ st = this.mark(f, n);\r
+\r
+ if (this.hasClass(n, s.id_cls) && !va.isId(n))\r
+ st = this.mark(f, n);\r
+\r
+ if (this.hasClass(n, s.min_cls, true)) {\r
+ v = this.getNum(n, s.min_cls);\r
+\r
+ if (isNaN(v) || parseInt(n.value) < parseInt(v))\r
+ st = this.mark(f, n);\r
+ }\r
+\r
+ if (this.hasClass(n, s.max_cls, true)) {\r
+ v = this.getNum(n, s.max_cls);\r
+\r
+ if (isNaN(v) || parseInt(n.value) > parseInt(v))\r
+ st = this.mark(f, n);\r
+ }\r
+ }\r
+\r
+ return st;\r
+ },\r
+\r
+ hasClass : function(n, c, d) {\r
+ return new RegExp('\\b' + c + (d ? '[0-9]+' : '') + '\\b', 'g').test(n.className);\r
+ },\r
+\r
+ getNum : function(n, c) {\r
+ c = n.className.match(new RegExp('\\b' + c + '([0-9]+)\\b', 'g'))[0];\r
+ c = c.replace(/[^0-9]/g, '');\r
+\r
+ return c;\r
+ },\r
+\r
+ addClass : function(n, c, b) {\r
+ var o = this.removeClass(n, c);\r
+ n.className = b ? c + (o != '' ? (' ' + o) : '') : (o != '' ? (o + ' ') : '') + c;\r
+ },\r
+\r
+ removeClass : function(n, c) {\r
+ c = n.className.replace(new RegExp("(^|\\s+)" + c + "(\\s+|$)"), ' ');\r
+ return n.className = c != ' ' ? c : '';\r
+ },\r
+\r
+ tags : function(f, s) {\r
+ return f.getElementsByTagName(s);\r
+ },\r
+\r
+ mark : function(f, n) {\r
+ var s = this.settings;\r
+\r
+ this.addClass(n, s.invalid_cls);\r
+ this.markLabels(f, n, s.invalid_cls);\r
+\r
+ return false;\r
+ },\r
+\r
+ markLabels : function(f, n, ic) {\r
+ var nl, i;\r
+\r
+ nl = this.tags(f, "label");\r
+ for (i=0; i<nl.length; i++) {\r
+ if (nl[i].getAttribute("for") == n.id || nl[i].htmlFor == n.id)\r
+ this.addClass(nl[i], ic);\r
+ }\r
+\r
+ return null;\r
+ }\r
+};\r
new IPF_Command_DB,
new IPF_Command_DBDump,
new IPF_Command_DBRestore,
+ new IPF_Command_CollectStatic,
new IPF_Command_Pack,
new IPF_Command_Unpack,
new IPF_Command_CreateSuperUser,
--- /dev/null
+<?php
+
+class IPF_Command_CollectStatic
+{
+ public $command = 'collectstatic';
+ public $description = 'Collect static files';
+
+ public function run($args=null)
+ {
+ if (!in_array('--quiet', $args))
+ print "Collecting static files\n";
+
+ $destination = IPF::get('document_root') . DIRECTORY_SEPARATOR . IPF::get('static_url');
+
+ foreach (IPF_Project::getInstance()->appList() as $app) {
+ $source = $app->getPath() . 'static';
+ if (is_dir($source))
+ IPF_Utils::copyDirectory($source, $destination);
+ }
+ }
+}
+