_____________________
FreeTextBox-MainScript.js _____________________
//** FreeTextBox Main Script ********************/
// by John Dyer
// http://www.freetextbox.com/
//***********************************************/
/** START:BROWSER DETECTION ********************/
_d=document;
_nv=navigator.appVersion.toLowerCase();
_f=false;_t=true;
ie4=(!_d.getElementById&&_d.all)?_t:_f;
ie5=(_nv.indexOf("msie 5.0")!=-1)?_t:_f;
ie55=(_nv.indexOf("msie 5.5")!=-1)?_t:_f;
ie6=(_nv.indexOf("msie 6.0")!=-1)?_t:_f;
isIE=(ie5||ie55||ie6)?_t:_f;
/** END:BROWSER DETECTION ********************/
/** START:MAIN FREETEXTBOX FUNCTIONS ********************/
function FTB_InitializeAll() {
for (var i=0; i<FTB_StartUpArray.length; i++)
FTB_Initialize(FTB_StartUpArray[i]);
}
function FTB_Initialize(ftbName) {
startMode = eval(ftbName + "_StartMode");
readOnly = eval(ftbName + "_ReadOnly");
designModeCss = eval(ftbName + "_DesignModeCss");
htmlModeCss = eval(ftbName + "_HtmlModeCss");
hiddenHtml = FTB_GetHiddenField(ftbName);
editor = FTB_GetIFrame(ftbName);
if (readOnly) {
editor.document.designMode = 'Off';
} else {
editor.document.designMode = 'On';
}
editor.document.open();
//if (!isIE) editor.document.write("<html><body><style type='text/css'>body { direction: rtl; }</style>");
editor.document.write(hiddenHtml.value);
//if (!isIE) editor.document.write("</body><html>");
editor.document.close();
if (isIE) {
if (htmlModeCss != "" || designModeCss != "" ) {
editor.document.createStyleSheet(designModeCss);
editor.document.createStyleSheet(htmlModeCss);
editor.document.styleSheets[1].disabled = true;
}
} else {
// turn off <span style="font-weight:bold">, use <b>
editor.document.execCommand("useCSS", false, true);
}
if (readOnly) {
editor.document.contentEditable = 'False';
} else {
editor.document.contentEditable = 'True';
}
editor.document.body.style.border = '0';
if (FTB_GetTextDirection(ftbName) == "RightToLeft")
editor.document.body.style.direction = 'rtl';
if (isIE) {
editor.document.onkeydown = function() {
return FTB_Event(ftbName);
};
editor.document.onkeypress = function() {
return FTB_Event(ftbName);
};
editor.document.onclick = function() {
return FTB_Event(ftbName);
};
editor.document.onmousedown = function() {
return FTB_Event(ftbName);
};
} else {
editor.addEventListener("keydown", function() {
return FTB_Event(ftbName);
}, true);
editor.addEventListener("keypress", function() {
return FTB_Event(ftbName);
}, true);
editor.addEventListener("click", function() {
return FTB_Event(ftbName);
}, true);
editor.addEventListener("mousedown", function() {
return FTB_Event(ftbName);
}, true);
}
if (startMode != "DesignMode" && FTB_HideToolbar(ftbName)) {
toolbar = FTB_GetToolbar(ftbName);
if (toolbar != null) toolbar.style.display = 'none';
}
eval(ftbName + "_Initialized = true;");
}
function FTB_GetFtbName(ftb) {
ftbName = ftb.name;
underscore = ftbName.lastIndexOf("_");
return ftbName.substring(0,underscore);
}
function FTB_ChangeMode(ftb,goToHtmlMode) {
editor = ftb;
ftbName = FTB_GetFtbName(ftb);
var toolbar = FTB_GetToolbar(ftbName);
var hideToolbar = FTB_HideToolbar(ftbName);
var editorContent;
var iframe = document.getElementById(ftbName + "_Editor");
editor.focus();
if (goToHtmlMode) {
if (isIE) {
if (editor.document.styleSheets.length > 0) {
editor.document.styleSheets[0].disabled = true;
editor.document.styleSheets[1].disabled = false;
}
if (FTB_HtmlModeDefaultsToMonoSpaceFont(ftbName) && editor.document.styleSheets.length < 2) {
editor.document.body.style.fontFamily = 'Courier New, Courier New';
editor.document.body.style.fontSize = '10pt';
}
editorContent = editor.document.body.innerHTML;
//alert(editorContent);
editor.document.body.innerText = editorContent;
} else {
editorContent = document.createTextNode(editor.document.body.innerHTML);
editor.document.body.innerHTML = "";
editor.document.body.appendChild(editorContent);
}
if (toolbar != null && hideToolbar ) {
if (!isIE) iframe.style.height = '50%';
toolbar.style.display = 'none';
if (!isIE) setTimeout(function() { iframe.style.height = '100%'; }, 0);
}
return true;
} else {
// go to Design Mode
if (isIE) {
editorContent = editor.document.body.innerText;
if (FTB_HtmlModeDefaultsToMonoSpaceFont(ftbName) && editor.document.styleSheets.length < 2) {
editor.document.body.style.fontFamily = '';
editor.document.body.style.fontSize = '';
}
if (editor.document.styleSheets.length > 0) {
editor.document.styleSheets[0].disabled = false;
editor.document.styleSheets[1].disabled = true;
}
editor.document.body.innerHTML = editorContent;
} else {
editorContent = editor.document.body.ownerDocument.createRange();
editorContent.selectNodeContents(editor.document.body);
editor.document.body.innerHTML = editorContent.toString();
}
if (toolbar != null && hideToolbar ) {
if (!isIE) iframe.style.height = '50%';
toolbar.style.display = '';
if (!isIE) setTimeout(function() { iframe.style.height = '100%'; editor.focus();}, 0);
}
editor.focus();
return true;
}
}
function FTB_CopyHtmlToHidden(ftbName) {
if (!FTB_Initialized(ftbName)) return;
hiddenHtml = FTB_GetHiddenField(ftbName);
editor = FTB_GetIFrame(ftbName);
if (isIE) {
if (FTB_IsHtmlMode(ftbName)) {
hiddenHtml.value = editor.document.body.innerText;
} else {
hiddenHtml.value = editor.document.body.innerHTML;
}
} else {
if (FTB_IsHtmlMode(ftbName)) {
editorContent = editor.document.body.ownerDocument.createRange();
editorContent.selectNodeContents(editor.document.body);
hiddenHtml.value = editorContent.toString();
} else {
hiddenHtml.value = editor.document.body.innerHTML;
}
}
if (hiddenHtml.value == '<P> </P>' || hiddenHtml.value == '<br>') {
hiddenHtml.value = '';
}
}
function FTB_Format(ftbName,commandName) {
editor = FTB_GetIFrame(ftbName);
if (FTB_IsHtmlMode(ftbName)) return;
editor.focus();
editor.document.execCommand(commandName,'',null);
//FTB_Event(ftbName);
}
function FTB_SurroundText(ftbName,start,end) {
if (FTB_IsHtmlMode(ftbName)) return;
editor = FTB_GetIFrame(ftbName);
editor.focus();
if (isIE) {
var sel = editor.document.selection.createRange();
html = start + sel.htmlText + end;
sel.pasteHTML(html);
} else {
selection = editor.window.getSelection();
editor.focus();
if (selection) {
range = selection.getRangeAt(0);
} else {
range = editor.document.createRange();
}
FTB_InsertText(ftbName, start + selection + end);
}
}
function FTB_InsertText(ftbName,insertion) {
if (FTB_IsHtmlMode(ftbName)) return;
editor = FTB_GetIFrame(ftbName);
editor.focus();
if (isIE) {
sel = editor.document.selection.createRange();
sel.pasteHTML(insertion);
} else {
editor.focus();
selection = editor.window.getSelection();
if (selection) {
range = selection.getRangeAt(0);
} else {
range = editor.document.createRange();
}
var fragment = editor.document.createDocumentFragment();
var div = editor.document.createElement("div");
div.innerHTML = insertion;
while (div.firstChild) {
fragment.appendChild(div.firstChild);
}
selection.removeAllRanges();
range.deleteContents();
var node = range.startContainer;
var pos = range.startOffset;
switch (node.nodeType) {
case 3:
if (fragment.nodeType == 3) {
node.insertData(pos, fragment.data);
range.setEnd(node, pos + fragment.length);
range.setStart(node, pos + fragment.length);
} else {
node = node.splitText(pos);
node.parentNode.insertBefore(fragment, node);
range.setEnd(node, pos + fragment.length);
range.setStart(node, pos + fragment.length);
}
break;
case 1:
node = node.childNodes[pos];
node.parentNode.insertBefore(fragment, node);
range.setEnd(node, pos + fragment.length);
range.setStart(node, pos + fragment.length);
break;
}
selection.addRange(range);
}
}
function FTB_CheckTag(item,tagName) {
if (item.tagName.search(tagName)!=-1) {
return item;
}
if (item.tagName=='BODY') {
return false;
}
item=item.parentElement;
return FTB_CheckTag(item,tagName);
}
/** END:MAIN FREETEXTBOX FUNCTIONS ********************/
/** START:PROPERTIES ********************/
function FTB_IsHtmlMode(ftbName) {
return (eval(ftbName + "_HtmlMode"));
}
function FTB_TabMode(ftbName) {
return (eval(ftbName + "_TabMode"));
}
function FTB_BreakMode(ftbName) {
return (eval(ftbName + "_BreakMode"));
}
function FTB_HtmlModeDefaultsToMonoSpaceFont(ftbName) {
return (eval(ftbName + "_HtmlModeDefaultsToMonoSpaceFont"));
}
function FTB_HideToolbar(ftbName) {
return (eval(ftbName + "_HideToolbar"));
}
function FTB_UpdateToolbar(ftbName) {
return (eval(ftbName + "_UpdateToolbar"));
}
function FTB_ButtonRenderMode(ftbName) {
return (eval(ftbName + "_ButtonRenderMode"));
}
function FTB_GetHiddenField(ftbName) {
return document.getElementById(ftbName);
}
function FTB_GetTextDirection(ftbName) {
return (eval(ftbName + "_TextDirection"));
}
function FTB_Initialized(ftbName) {
return (eval(ftbName + "_Initialized"));
}
function FTB_GetIFrame(ftbName) {
if (isIE) {
return eval(ftbName + "_Editor");
//return document.getElementById(ftbName + "_Editor");
} else {
return document.getElementById(ftbName + "_Editor").contentWindow;
}
}
function FTB_GetToolbar(ftbName) {
return document.getElementById(ftbName + "_Toolbar");
}
function FTB_GetToolbarArray(ftbName) {
return eval(ftbName + "_ToolbarItems");
}
function FTB_GetCssID(ftbName) {
cssID = ftbName;
while (cssID.substring(0,1) == '_') {
cssID = cssID.substring(1);
}
return cssID;
}
/** START: BUTTONS **************/
/** CSS BUTTON FUNCTIONS **************/
function FTB_SetButtonStyle(buttonTD,style,checkstyle) {
if (buttonTD == null) return;
if (buttonTD.className != checkstyle)
buttonTD.className = style;
}
function FTB_GetClassSubName(className) {
underscore = className.indexOf("_");
if (underscore < 0) return className;
return className.substring(underscore+1);
}
/** JS BUTTON FUNCTIONS **************/
function FTB_ButtonOver(theTD,ftbName,imageOver,imageDown) {
FTB_SetButtonStyle(theTD,FTB_GetCssID(ftbName)+'_ButtonOver',null);
//if (eval(ftbName+'_OverImage').src != '')
// theTD.style.backgroundImage = "url(" + eval(ftbName+'_OverImage').src + ")";
if(imageOver == 1 & theTD.childNodes.length && theTD.childNodes[0].tagName == "IMG"){
oldSrc = theTD.childNodes[0].src;
if (oldSrc.indexOf('.over.') == -1) {
theTD.childNodes[0].src=oldSrc.substring(0, oldSrc.length-4) + ".over.gif";
}
}
//FTB_Event(ftbName);
}
function FTB_ButtonOut(theTD,ftbName,imageOver,imageDown) {
FTB_SetButtonStyle(theTD,FTB_GetCssID(ftbName)+'_ButtonNormal',null);
document.body.style.cursor = 'default';
theTD.style.backgroundImage='';
if(theTD.childNodes.length && theTD.childNodes[0].tagName == "IMG"){
oldSrc = theTD.childNodes[0].src;
if (oldSrc.indexOf('.over.') > 0) {
theTD.childNodes[0].src=oldSrc.substring(0, oldSrc.length-9) + ".gif";
}
if (oldSrc.indexOf('.down.') > 0) {
theTD.childNodes[0].src=oldSrc.substring(0, oldSrc.length-9) + ".gif";
}
}
//FTB_Event(ftbName);
}
function FTB_ButtonDown(theTD,ftbName,imageOver,imageDown) {
document.body.style.cursor = 'default';
FTB_SetButtonStyle(theTD,FTB_GetCssID(ftbName)+'_ButtonDown',null);
//if (eval(ftbName+'_DownImage').src != '')
// theTD.style.backgroundImage = "url(" + eval(ftbName+'_DownImage').src + ")";
if(imageDown == 1 && theTD.children.length && theTD.children[0].tagName == "IMG"){
oldSrc = theTD.children[0].src;
if (oldSrc.indexOf('.over.') > 0) {
theTD.children[0].src=oldSrc.substring(0, oldSrc.length-9) + ".down.gif";
}
}
//FTB_Event(ftbName);
}
function FTB_ButtonUp(theTD,ftbName,imageOver,imageDown) {
document.body.style.cursor = 'auto';
FTB_SetButtonStyle(theTD,FTB_GetCssID(ftbName)+'_ButtonOver',null);
//if (eval(ftbName+'_OverImage').src != '')
// theTD.style.backgroundImage = "url(" + eval(ftbName+'_OverImage').src + ")";
if(imageOver == 1 && theTD.children.length && theTD.children[0].tagName == "IMG"){
oldSrc = theTD.children[0].src;
if (oldSrc.indexOf('.over.') == -1) {
theTD.children[0].src=oldSrc.substring(0, oldSrc.length-4) + ".over.gif";
}
}
//FTB_Event(ftbName);
}
/** END:PROPERTIES ********************/
/** START:TABS ********************/
function FTB_SetActiveTab(theTD,ftbName) {
parentTR = theTD.parentElement;
parentTR = document.getElementById(ftbName + "_TabRow");
selectedTab = 1;
totalButtons = parentTR.cells.length-1;
for (var i=1;i< totalButtons;i++) {
parentTR.cells[i].className = FTB_GetCssID(ftbName) + "_TabOffRight";
if (theTD == parentTR.cells[i]) { selectedTab = i; }
}
if (selectedTab==1) {
parentTR.cells[0].className = FTB_GetCssID(ftbName) + "_StartTabOn";
} else {
parentTR.cells[0].className = FTB_GetCssID(ftbName) + "_StartTabOff";
parentTR.cells[selectedTab-1].className = FTB_GetCssID(ftbName) + "_TabOffLeft";
}
theTD.className = FTB_GetCssID(ftbName) + "_TabOn";
}
function FTB_TabOver() {
document.body.style.cursor='default';
}
function FTB_TabOut() {
document.body.style.cursor='auto';
}
/** END:TABS ********************/
function FTB_Event(ftbName) {
editor = FTB_GetIFrame(ftbName);
htmlMode = FTB_IsHtmlMode(ftbName);
var _TAB = 9;
var _ENTER = 13;
var _QUOTE = 222;
var _OPENCURLY = '“';
var _CLOSECURLY = '”';
if (isIE) {
// TAB Functions
if (editor.event.keyCode == _TAB) {
var tabMode = FTB_TabMode(ftbName);
if (tabMode == "Disabled") {
editor.event.cancelBubble = true;
editor.event.returnValue = false;
}
if (tabMode == "InsertSpaces") {
FTB_InsertText(ftbName," ");
editor.event.cancelBubble = true;
editor.event.returnValue = false;
}
if (tabMode == "NextControl") {
// do nothing for TabMode.NextControl
}
}
// IE defaults to <p>, Mozilla to <br>
if (editor.event.keyCode == _ENTER) {
var breakMode = FTB_BreakMode(ftbName);
if (breakMode == "LineBreak" || editor.event.ctrlKey || htmlMode) {
var sel = editor.document.selection;
if (sel.type == 'Control') {
return;
}
var r = sel.createRange();
if ((!FTB_CheckTag(r.parentElement(),'LI'))&&(!FTB_CheckTag(r.parentElement(),'H'))) {
r.pasteHTML('<br>');
editor.event.cancelBubble = true;
editor.event.returnValue = false;
r.select();
r.collapse(false);
return false;
}
}
}
}
// update ToolbarItems only every 50 milliseconds b/c it is expensive
if (!htmlMode && FTB_UpdateToolbar(ftbName)) {
if (editor.timerToolbar) {
clearTimeout(editor.timerToolbar);
}
editor.timerToolbar = setTimeout(function() {
FTB_SetToolbarItems(ftbName);
editor.timerToolbar = null;
}, 50);
}
}
function FTB_SetToolbarItems(ftbName) {
editor = FTB_GetIFrame(ftbName);
htmlMode = FTB_IsHtmlMode(ftbName);
toolbarArray = FTB_GetToolbarArray(ftbName);
//document.getElementById("Debug").value = "";
if (toolbarArray) {
for (var i=0; i<toolbarArray.length; i++) {
toolbarItemID = toolbarArray[i][0];
toolbarItem = document.getElementById(toolbarItemID);
commandIdentifier = toolbarArray[i][1];
state = "";
try {
if (toolbarItemID.indexOf("Button") > -1) {
state = editor.document.queryCommandState(commandIdentifier);
FTB_SetButtonState(toolbarItemID,ftbName,state);
} else {
state = editor.document.queryCommandValue(commandIdentifier);
switch (commandIdentifier) {
case "backcolor":
if (isIE) {
state = FTB_GetHexColor(state);
} else {
if (state == "") state = "#FFFFFF";
}
break;
case "forecolor":
if (isIE) {
state = FTB_GetHexColor(state);
} else {
if (state == "") state = "#000000";
}
break;
case "formatBlock":
//document.getElementById("Debug").value += "****: " + state + "\n";
if (!isIE) {
if (state == "p" || state == "" || state == "<x>")
state = "<body>";
else
state = "<" + state + ">";
}
break;
}
//document.getElementById("Debug").value += commandIdentifier + ": " + state + "\n";
FTB_SetDropDownListState(toolbarItemID,state);
}
} catch(e) {
}
}
}
}
function FTB_GetHexColor(intColor) {
intColor = intColor.toString(16).toUpperCase();
while (intColor.length < 6) {
intColor = "0" + intColor;
}
return "#" + intColor.substring(4,6) + intColor.substring(2,4) + intColor.substring(0,2);
}
function FTB_SetDropDownListState(ddlName,value) {
ddl = document.getElementById(ddlName);
if (ddl) {
for (var i=0; i<ddl.options.length; i++) {
if (ddl.options[i].text == value || ddl.options[i].value == value) {
ddl.options.selectedIndex = i;
return;
}
}
}
}
function FTB_SetButtonState(buttonName,ftbName,value) {
buttonTD = document.getElementById(buttonName);
if (buttonTD) {
if (value) {
if (FTB_ButtonRenderMode(ftbName) == 'Css')
buttonTD.className = FTB_GetCssID(ftbName) + "_ButtonActive";
else
FTB_ButtonOver(buttonTD,ftbName,0,0);
} else {
if (FTB_ButtonRenderMode(ftbName) == 'Css')
buttonTD.className = FTB_GetCssID(ftbName) + "_ButtonNormal";
else
FTB_ButtonOut(buttonTD,ftbName,0,0);
}
}
}
// *******************************
function FTB_GetParentElement(ftbName) {
editor = FTB_GetIFrame(ftbName);
var sel = FTB_GetSelection(ftbName);
var range = FTB_CreateRange(ftbName,sel);
if (isIE) {
switch (sel.type) {
case "Text":
case "None":
// It seems that even for selection of type "None",
// there _is_ a parent element and it's value is not
// only correct, but very important to us. MSIE is
// certainly the buggiest browser in the world and I
// wonder, God, how can Earth stand it?
return range.parentElement();
case "Control":
return range.item(0);
default:
return editor.document.body;
}
} else try {
var p = range.commonAncestorContainer;
if (!range.collapsed && range.startContainer == range.endContainer &&
range.startOffset - range.endOffset <= 1 && range.startContainer.hasChildNodes())
p = range.startContainer.childNodes[range.startOffset];
/*
alert(range.startContainer + ":" + range.startOffset + "\n" +
range.endContainer + ":" + range.endOffset);
*/
while (p.nodeType == 3) {
p = p.parentNode;
}
return p;
} catch (e) {
return null;
}
}
function FTB_InsertNodeAtSelection(ftbName,toBeInserted) {
if (!isIE) {
var editor = FTB_GetIFrame(ftbName);
var sel = FTB_GetSelection(ftbName);
var range = FTB_CreateRange(ftbName,sel);
// remove the current selection
sel.removeAllRanges();
range.deleteContents();
var node = range.startContainer;
var pos = range.startOffset;
switch (node.nodeType) {
case 3: // Node.TEXT_NODE
// we have to split it at the caret position.
if (toBeInserted.nodeType == 3) {
// do optimized insertion
node.insertData(pos, toBeInserted.data);
range = this._createRange();
range.setEnd(node, pos + toBeInserted.length);
range.setStart(node, pos + toBeInserted.length);
sel.addRange(range);
} else {
node = node.splitText(pos);
var selnode = toBeInserted;
if (toBeInserted.nodeType == 11 /* Node.DOCUMENT_FRAGMENT_NODE */) {
selnode = selnode.firstChild;
}
node.parentNode.insertBefore(toBeInserted, node);
editor.selectNodeContents(selnode);
}
break;
case 1: // Node.ELEMENT_NODE
var selnode = toBeInserted;
if (toBeInserted.nodeType == 11 /* Node.DOCUMENT_FRAGMENT_NODE */) {
selnode = selnode.firstChild;
}
node.insertBefore(toBeInserted, node.childNodes[pos]);
FTB_SelectNodeContents(editor,selnode);
break;
}
}
}
// Selects the contents inside the given node
function FTB_SelectNodeContents(ftbName, node, pos) {
editor = FTB_GetIFrame(ftbName);
var range;
var collapsed = (typeof pos != "undefined");
if (isIE) {
range = editor.document.body.createTextRange();
range.moveToElementText(node);
(collapsed) && range.collapse(pos);
range.select();
} else {
var sel = FTB_GetSelection(ftbName);
range = editor.document.createRange();
range.selectNodeContents(node);
(collapsed) && range.collapse(pos);
sel.removeAllRanges();
sel.addRange(range);
}
};
// returns the current selection object
function FTB_GetSelection(ftbName) {
editor = FTB_GetIFrame(ftbName);
if (isIE) {
return editor.document.selection;
} else {
return editor.getSelection();
}
}
// returns a range for the current selection
function FTB_CreateRange(ftbName,sel) {
editor = FTB_GetIFrame(ftbName);
if (isIE) {
return sel.createRange();
} else {
//TODO: this.focusEditor();
if (typeof sel != "undefined") {
try {
return sel.getRangeAt(0);
} catch(e) {
return editor.document.createRange();
}
} else {
return editor.document.createRange();
}
}
}
/* TABLE FUNCTIONS
MODIFIED FROM HtmlArea (thanks guys!)
**********************************************/
// helper function that clears the content in a table row
function FTB_ClearRow(tr) {
var tds = tr.getElementsByTagName("td");
for (var i = tds.length; --i >= 0;) {
var td = tds[i];
td.rowSpan = 1;
td.innerHTML = (isIE) ? "" : "<br />";
}
}
function FTB_SplitRow(td) {
var n = parseInt("" + td.rowSpan);
var nc = parseInt("" + td.colSpan);
td.rowSpan = 1;
tr = td.parentNode;
var itr = tr.rowIndex;
var trs = tr.parentNode.rows;
var index = td.cellIndex;
while (--n > 0) {
tr = trs[++itr];
var otd = editor._doc.createElement("td");
otd.colSpan = td.colSpan;
otd.innerHTML = mozbr;
tr.insertBefore(otd, tr.cells[index]);
}
//editor.forceRedraw();
//editor.updateToolbar();
}
function FTB_SplitCol(td) {
var nc = parseInt("" + td.colSpan);
td.colSpan = 1;
tr = td.parentNode;
var ref = td.nextSibling;
while (--nc > 0) {
var otd = editor._doc.createElement("td");
otd.rowSpan = td.rowSpan;
otd.innerHTML = mozbr;
tr.insertBefore(otd, ref);
}
//editor.forceRedraw();
//editor.updateToolbar();
}
function FTB_SplitCell(td) {
var nc = parseInt("" + td.colSpan);
splitCol(td);
var items = td.parentNode.cells;
var index = td.cellIndex;
while (nc-- > 0) {
FTB_SplitRow(items[index++]);
}
}
function FTB_SelectNextNode(el) {
var node = el.nextSibling;
while (node && node.nodeType != 1) {
node = node.nextSibling;
}
if (!node) {
node = el.previousSibling;
while (node && node.nodeType != 1) {
node = node.previousSibling;
}
}
if (!node) {
node = el.parentNode;
}
//editor.selectNodeContents(node);
}
function FTB_GetClosest(ftbName,tagName) {
var editor = FTB_GetIFrame(ftbName);
var ancestors = FTB_GetAllAncestors(ftbName);
var ret = null;
tagName = ("" + tagName).toLowerCase();
for (var i in ancestors) {
var el = ancestors[i];
if (el.tagName.toLowerCase() == tagName) {
ret = el;
break;
}
}
return ret;
}
function FTB_GetAllAncestors(ftbName) {
editor = FTB_GetIFrame(ftbName);
var p = FTB_GetParentElement(ftbName);
var a = [];
while (p && (p.nodeType == 1) && (p.tagName.toLowerCase() != 'body')) {
a.push(p);
p = p.parentNode;
}
a.push(editor.document.body);
return a;
}
function FTB_InsertColumn(ftbName,after) {
editor = FTB_GetIFrame(ftbName);
var td = FTB_GetClosest(ftbName,"td");
if (!td) {
return;
}
var rows = td.parentNode.parentNode.rows;
var index = td.cellIndex;
for (var i = rows.length; --i >= 0;) {
var tr = rows[i];
var otd = editor.document.createElement("td");
otd.innerHTML = (isIE) ? "" : "<br />";
//if last column and insert column after is select append child
if (index==tr.cells.length-1 && after) {
tr.appendChild(otd);
} else {
var ref = tr.cells[index + ((after) ? 1 : 0)]; // 0
tr.insertBefore(otd, ref);
}
}
}
function FTB_InsertTableRow(ftbName,after) {
if (FTB_IsHtmlMode(ftbName)) return;
var tr = FTB_GetClosest(ftbName,"tr");
if (!tr) {
return;
}
var otr = tr.cloneNode(true);
FTB_ClearRow(otr);
tr.parentNode.insertBefore(otr, ((after) ? tr.nextSibling : tr));
}
function FTB_CreateTable(ftbName,cols,rows,width,widthUnit,align,cellpadding,cellspacing,border) {
var editor = FTB_GetIFrame(ftbName);
var sel = FTB_GetSelection(ftbName);
var range = FTB_CreateRange(ftbName,sel);
var doc = editor.document;
// create the table element
var table = doc.createElement("table");
// assign the given arguments
table.style.width = width + widthUnit;
table.align = align;
table.border = border;
table.cellspacing = cellspacing;
table.cellpadding = cellpadding;
var tbody = doc.createElement("tbody");
table.appendChild(tbody);
for (var i = 0; i < rows; ++i) {
var tr = doc.createElement("tr");
tbody.appendChild(tr);
for (var j = 0; j < cols; ++j) {
var td = doc.createElement("td");
tr.appendChild(td);
// Mozilla likes to see something inside the cell.
if (!isIE) td.appendChild(doc.createElement("br"));
}
}
if (isIE) {
range.pasteHTML(table.outerHTML);
} else {
FTB_InsertNodeAtSelection(ftbName,table);
}
return true;
}
-----------------------------------------------------------------------
____________________ FreeTextBox-ToolbarItemsScript.js
__________________________
//** FreeTextBox Builtin ToolbarItems Script (2.0.7) ***/
// by John Dyer
// http://www.freetextbox.com/
//**********************************************/
function FTB_Bold(ftbName) {
FTB_Format(ftbName,'bold');
}
function FTB_BulletedList(ftbName) {
FTB_Format(ftbName,'insertunorderedlist');
}
function FTB_Copy(ftbName) {
try {
FTB_Format(ftbName,'copy');
} catch (e) {
alert('Your security settings to not allow you to use this command. Please visit http://www.mozilla.org/editor/midasdemo/securityprefs.html for more information.');
}
}
function FTB_CreateLink(ftbName) {
if (FTB_IsHtmlMode(ftbName)) return;
editor = FTB_GetIFrame(ftbName);
editor.focus();
if (isIE) {
editor.document.execCommand('createlink','1',null);
} else {
var url = prompt('Enter a URL:', 'http://');
if ((url != null) && (url != '')) editor.document.execCommand('createlink',false,url);
}
}
function FTB_Cut(ftbName) {
try {
FTB_Format(ftbName,'cut');
} catch (e) {
alert('Your security settings to not allow you to use this command. Please visit http://www.mozilla.org/editor/midasdemo/securityprefs.html for more information.');
}
}
function FTB_Delete(ftbName) {
editor = FTB_GetIFrame(ftbName);
if (confirm('Do you want to delete all the HTML and text presently in the editor?')) {
editor.document.body.innerHTML = '';
if (isIE) {
editor.document.body.innerText = '';
}
}
editor.focus();
}
function FTB_DeleteTableColumn(ftbName) {
if (FTB_IsHtmlMode(ftbName)) return;
var td = this.FTB_GetClosest(ftbName,"td");
if (!td) {
return;
}
var index = td.cellIndex;
if (td.parentNode.cells.length == 1) {
//alert("Don't delete last column");
return;
}
// set the caret first to a position that doesn't disappear
FTB_SelectNextNode(td);
var rows = td.parentNode.parentNode.rows;
for (var i = rows.length; --i >= 0;) {
var tr = rows[i];
tr.removeChild(tr.cells[index]);
}
}
function FTB_DeleteTableRow(ftbName) {
var tr = FTB_GetClosest(ftbName,"tr");
if (!tr) {
return;
}
var par = tr.parentNode;
if (par.rows.length == 1) {
//alert("Don't delete the last row!");
return;
}
// set the caret first to a position that doesn't
// disappear.
FTB_SelectNextNode(tr);
par.removeChild(tr);
}
function FTB_ieSpellCheck(ftbName) {
if (FTB_IsHtmlMode(ftbName)) return;
if (!isIE) {
alert('IE Spell is not supported in Mozilla');
return;
}
try {
var tspell = new ActiveXObject('ieSpell.ieSpellExtension');
tspell.CheckAllLinkedDocuments(window.document);
} catch (err){
if (window.confirm('You need ieSpell to use spell check. Would you like to install it?')){window.open('http://www.iespell.com/download.php');};
};
}
function FTB_Indent(ftbName) {
FTB_Format(ftbName,'indent');
}
function FTB_InsertDate(ftbName) {
var d = new Date();
FTB_InsertText(ftbName,d.toLocaleDateString());
}
function FTB_InsertImage(ftbName) {
if (FTB_IsHtmlMode(ftbName)) return;
editor = FTB_GetIFrame(ftbName);
editor.focus();
editor.document.execCommand('insertimage',1,'');
}
function FTB_InsertRule(ftbName) {
FTB_Format(ftbName,'inserthorizontalrule');
}
function FTB_InsertTable(ftbName) {
editor = FTB_GetIFrame(ftbName);
editor.focus();
var tableWin = window.open("","tableWin","width=400,height=180");
tableWin.focus();
tableWin.document.body.innerHTML = "";
tableWin.document.write("<html>\
<head> \
<style type='text/css'> \
html, body { \
background: ButtonFace; \
color: ButtonText; \
font: 11px Tahoma,Verdana,sans-serif; \
margin: 0px; \
padding: 0px; \
} \
body { padding: 5px; } \
table { \
font: 11px Tahoma,Verdana,sans-serif; \
} \
form p { \
margin-top: 5px; \
margin-bottom: 5px; \
} \
.fl { width: 9em; float: left; padding: 2px 5px; text-align: right; } \
.fr { width: 7em; float: left; padding: 2px 5px; text-align: right; } \
fieldset { padding: 0px 10px 5px 5px; } \
select, input, button { font: 11px Tahoma,Verdana,sans-serif; } \
button { width: 70px; } \
.space { padding: 2px; } \
\
.title { background: #ddf; color: #000; font-weight: bold; font-size: 120%; padding: 3px 10px; margin-bottom: 10px; \
border-bottom: 1px solid black; letter-spacing: 2px; \
} \
form { padding: 0px; margin: 0px; } \
</style> \
<script language='JavaScript'> \
function insertTable() { \
cols = parseInt(document.getElementById('f_cols').value); \
rows = parseInt(document.getElementById('f_rows').value); \
width = document.getElementById('f_width').value; \
widthUnit = document.getElementById('f_unit').options[document.getElementById('f_unit').selectedIndex].value; \
align = document.getElementById('f_align').value; \
cellpadding = document.getElementById('f_padding').value; \
cellspacing = document.getElementById('f_spacing').value; \
border = document.getElementById('f_border').value; \
window.opener.FTB_CreateTable('" + ftbName + "',cols,rows,width,widthUnit,align,cellpadding,cellspacing,border); \
} \
</script> \
</head> \
<body> \
<form action=''> \
\
<table border='0' style='padding: 0px; margin: 0px'> \
<tbody> \
<tr> \
<td style='width: 4em; text-align: right'>Rows:</td> \
<td><input type='text' name='rows' id='f_rows' size='5' title='Number of rows' value='2' /></td> \
<td></td> \
<td></td> \
<td></td> \
</tr> \
<tr> \
<td style='width: 4em; text-align: right'>Cols:</td> \
<td><input type='text' name='cols' id='f_cols' size='5' title='Number of columns' value='4' /></td> \
<td style='width: 4em; text-align: right'>Width:</td> \
<td><input type='text' name='width' id='f_width' size='5' title='Width of the table' value='100' /></td> \
<td><select size='1' name='unit' id='f_unit' title='Width unit'> \
<option value='%' selected='1' >Percent</option> \
<option value='px' >Pixels</option> \
<option value='em' >Em</option> \
</select></td> \
</tr> \
</tbody> \
</table> \
\
<fieldset style='float: left; margin-left: 5px;'> \
<legend>Layout</legend> \
\
<div class='space'></div> \
\
<div class='fl'>Alignment:</div> \
<select size='1' name='align' id='f_align' \
title='Positioning of this image'> \
<option value='' selected='1' >Not set</option> \
<option value='left' >Left</option> \
<option value='right' >Right</option> \
<option value='texttop' >Texttop</option> \
<option value='absmiddle' >Absmiddle</option> \
<option value='baseline' >Baseline</option> \
<option value='absbottom' >Absbottom</option> \
<option value='bottom' >Bottom</option> \
<option value='middle' >Middle</option> \
<option value='top' >Top</option> \
</select> \
\
<p /> \
\
<div class='fl'>Border thickness:</div> \
<input type='text' name='border' id='f_border' size='5' value='1' title='Leave empty for no border' /> \
\
<div class='space'></div> \
\
</fieldset> \
\
<fieldset style='float:right; margin-right: 5px;'> \
<legend>Spacing</legend> \
\
<div class='space'></div> \
\
<div class='fr'>Cell spacing:</div> \
<input type='text' name='spacing' id='f_spacing' size='5' value='1' \
title='Space between adjacent cells' /> \
\
<p /> \
\
<div class='fr'>Cell padding:</div> \
<input type='text' name='padding' id='f_padding' size='5' value='1' \
title='Space between content and border in cell' /> \
\
<div class='space'></div> \
\
</fieldset> \
\
<div style='margin-top: 85px; border-top: 1px solid #999; padding: 2px; text-align: right;'> \
<button type='button' name='ok' onclick='insertTable();window.close();'>Insert</button> \
<button type='button' name='cancel' onclick='window.close();'>Cancel</button> \
</div> \
</form> \
</body></html>");
}
function FTB_InsertTableColumnAfter(ftbName) {
FTB_InsertColumn(ftbName,true);
}
function FTB_InsertTableColumnBefore(ftbName) {
FTB_InsertColumn(ftbName,false);
}
function FTB_InsertTableRowAfter(ftbName) {
FTB_InsertTableRow(ftbName,true);
}
function FTB_InsertTableRowBefore(ftbName) {
FTB_InsertTableRow(ftbName,false);
}
function FTB_InsertTime(ftbName) {
var d = new Date();
FTB_InsertText(ftbName,d.toLocaleTimeString());
}
function FTB_Italic(ftbName) {
FTB_Format(ftbName,'italic');
}
function FTB_JustifyRight(ftbName) {
FTB_Format(ftbName,'justifyright');
}
function FTB_JustifyCenter(ftbName) {
FTB_Format(ftbName,'justifycenter');
}
function FTB_JustifyFull(ftbName) {
FTB_Format(ftbName,'justifyfull');
}
function FTB_JustifyLeft(ftbName) {
FTB_Format(ftbName,'justifyleft');
}
function FTB_NetSpell(ftbName) {
if (FTB_IsHtmlMode(ftbName)) return;
try {
checkSpellingById(ftbName + '_Editor');
} catch(e) {
alert('Netspell libraries not properly linked.');
}
}
function FTB_NumberedList(ftbName) {
FTB_Format(ftbName,'insertorderedlist');
}
function FTB_Outdent(ftbName) {
FTB_Format(ftbName,'outdent');
}
function FTB_Paste(ftbName) {
try {
FTB_Format(ftbName,'paste');
} catch (e) {
alert('Your security settings to not allow you to use this command. Please visit http://www.mozilla.org/editor/midasdemo/securityprefs.html for more information.');
}
}
function FTB_Print(ftbName) {
if (isIE) {
FTB_Format(ftbName,'print');
} else {
editor = FTB_GetIFrame(ftbName);
editor.print();
}
}
function FTB_Redo(ftbName) {
FTB_Format(ftbName,'undo');
}
function FTB_RemoveFormat(ftbName) {
FTB_Format(ftbName,'removeformat');
}
function FTB_Save(ftbName) {
FTB_CopyHtmlToHidden(ftbName);
__doPostBack(ftbName,'Save');
}
function FTB_StrikeThrough(ftbName) {
FTB_Format(ftbName,'strikethrough');
}
function FTB_SubScript(ftbName) {
FTB_Format(ftbName,'subscript');
}
function FTB_SuperScript(ftbName) {
FTB_Format(ftbName,'superscript');
}
function FTB_Underline(ftbName) {
FTB_Format(ftbName,'underline');
}
function FTB_Undo(ftbName) {
FTB_Format(ftbName,'undo');
}
function FTB_Unlink(ftbName) {
if (FTB_IsHtmlMode(ftbName)) return;
editor = FTB_GetIFrame(ftbName);
editor.focus();
editor.document.execCommand('unlink',false,null);
}
function FTB_SetFontBackColor(ftbName,name,value) {
editor = FTB_GetIFrame(ftbName);
if (FTB_IsHtmlMode(ftbName)) return;
editor.focus();
editor.document.execCommand('backcolor','',value);
}
function FTB_SetFontFace(ftbName,name,value) {
editor = FTB_GetIFrame(ftbName);
if (FTB_IsHtmlMode(ftbName)) return;
editor.focus();
editor.document.execCommand('fontname','',value);
}
function FTB_SetFontForeColor(ftbName,name,value) {
editor = FTB_GetIFrame(ftbName);
if (FTB_IsHtmlMode(ftbName)) return;
editor.focus();
editor.document.execCommand('forecolor','',value);
}
function FTB_SetFontSize(ftbName,name,value) {
editor = FTB_GetIFrame(ftbName);
if (FTB_IsHtmlMode(ftbName)) return;
editor.focus();
editor.document.execCommand('fontsize','',value);
}
function FTB_InsertHtmlMenu(ftbName,name,value) {
FTB_InsertText(ftbName,value);
}
function FTB_SetParagraph(ftbName,name,value) {
if (FTB_IsHtmlMode(ftbName)) return;
editor = FTB_GetIFrame(ftbName);
if (value == '<body>') {
editor.document.execCommand('formatBlock','','Normal');
editor.document.execCommand('removeFormat');
return;
}
editor.document.execCommand('formatBlock','',value);
}
function FTB_SetStyle(ftbName,name,value) {
var className = value;
editor = FTB_GetIFrame(ftbName);
// retrieve parent element of the selection
var parent = FTB_GetParentElement(ftbName);
var surround = true;
var isSpan = (parent && parent.tagName.toLowerCase() == "span");
/*
// remove class stuff??
if (isSpan && index == 0 && !/\S/.test(parent.style.cssText)) {
while (parent.firstChild) {
parent.parentNode.insertBefore(parent.firstChild, parent);
}
parent.parentNode.removeChild(parent);
editor.updateToolbar();
return;
}
*/
// if we're already in a SPAN
if (isSpan) {
if (parent.childNodes.length == 1) {
parent.className = className;
surround = false;
FTB_SetToolbarItems(ftbName);
}
}
if (surround) {
FTB_SurroundText(ftbName,"<span class='" + className + "'>", "</span>");
}
}
function FTB_SymbolsMenu(ftbName,name,value) {
FTB_InsertText(ftbName,value);
}
function FTB_InsertMSNEmoticons(ftbName) {
if (!isIE)
{
alert("Not support!");
}
if (FTB_IsHtmlMode(ftbName)) return;
editor = FTB_GetIFrame(ftbName);
editor.focus();
var folder = "Emoticons/MSN";
var galleryscript ="EmoticonsGallery.aspx?rif="+folder+"&cif="+folder;
imgArr = showModalDialog(galleryscript,window,"help:0;status:0;resizeable:1;");
if (imgArr != null)
{
imagestring = "<IMG ALT='" + imgArr["tip"] + "' SRC='" + imgArr["filename"] + "' HEIGHT=" + imgArr["height"] + " WIDTH=" + imgArr["width"] + " BORDER=0>";
sel = editor.document.selection.createRange();
sel.pasteHTML(imagestring);
}
else
{
return;
}
}
function FTB_InsertQQEmoticons(ftbName) {
if (!isIE)
{
alert("Not support!");
}
if (FTB_IsHtmlMode(ftbName)) return;
editor = FTB_GetIFrame(ftbName);
editor.focus();
var folder = "Emoticons/QQ";
var galleryscript ="EmoticonsGallery.aspx?rif="+folder+"&cif="+folder;
imgArr = showModalDialog(galleryscript,window,"help:0;status:0;resizeable:1;");
if (imgArr != null)
{
imagestring = "<IMG ALT='" + imgArr["tip"] + "' SRC='" + imgArr["filename"] + "' HEIGHT=" + imgArr["height"] + " WIDTH=" + imgArr["width"] + " BORDER=0>";
sel = editor.document.selection.createRange();
sel.pasteHTML(imagestring);
}
else
{
return;
}
}
function FTB_InsertTAOBAOEmoticons(ftbName) {
if (!isIE)
{
alert("Not support!");
}
if (FTB_IsHtmlMode(ftbName)) return;
editor = FTB_GetIFrame(ftbName);
editor.focus();
var folder = "Emoticons/TAOBAO";
var galleryscript ="EmoticonsGallery.aspx?rif="+folder+"&cif="+folder;
imgArr = showModalDialog(galleryscript,window,"help:0;status:0;resizeable:1;");
if (imgArr != null)
{
imagestring = "<IMG ALT='" + imgArr["tip"] + "' SRC='" + imgArr["filename"] + "' HEIGHT=" + imgArr["height"] + " WIDTH=" + imgArr["width"] + " BORDER=0>";
sel = editor.document.selection.createRange();
sel.pasteHTML(imagestring);
}
else
{
return;
}
}
function FTB_InsertJuPaiEmoticons(ftbName) {
if (!isIE)
{
alert("Not support!");
}
if (FTB_IsHtmlMode(ftbName)) return;
editor = FTB_GetIFrame(ftbName);
editor.focus();
var folder = "Emoticons/JuPai";
var galleryscript ="EmoticonsGallery.aspx?rif="+folder+"&cif="+folder;
imgArr = showModalDialog(galleryscript,window,"help:0;status:0;resizeable:1;");
if (imgArr != null)
{
imagestring = "<IMG ALT='" + imgArr["tip"] + "' SRC='" + imgArr["filename"] + "' HEIGHT=" + imgArr["height"] + " WIDTH=" + imgArr["width"] + " BORDER=0>";
sel = editor.document.selection.createRange();
sel.pasteHTML(imagestring);
}
else
{
return;
}
}
---------------------------------------------------------------
_____________________ FreeTextBox-ToolbarItemsScript1.js
_______________________________
//** FreeTextBox Builtin ToolbarItems Script (2.0.7) ***/
// by John Dyer
// http://www.freetextbox.com/
//**********************************************/
function FTB_Bold(ftbName) {
FTB_Format(ftbName,'bold');
}
function FTB_BulletedList(ftbName) {
FTB_Format(ftbName,'insertunorderedlist');
}
function FTB_Copy(ftbName) {
try {
FTB_Format(ftbName,'copy');
} catch (e) {
alert('Your security settings to not allow you to use this command. Please visit http://www.mozilla.org/editor/midasdemo/securityprefs.html for more information.');
}
}
function FTB_CreateLink(ftbName) {
if (FTB_IsHtmlMode(ftbName)) return;
editor = FTB_GetIFrame(ftbName);
editor.focus();
if (isIE) {
editor.document.execCommand('createlink','1',null);
} else {
var url = prompt('Enter a URL:', 'http://');
if ((url != null) && (url != '')) editor.document.execCommand('createlink',false,url);
}
}
function FTB_Cut(ftbName) {
try {
FTB_Format(ftbName,'cut');
} catch (e) {
alert('Your security settings to not allow you to use this command. Please visit http://www.mozilla.org/editor/midasdemo/securityprefs.html for more information.');
}
}
function FTB_Delete(ftbName) {
editor = FTB_GetIFrame(ftbName);
if (confirm('Do you want to delete all the HTML and text presently in the editor?')) {
editor.document.body.innerHTML = '';
if (isIE) {
editor.document.body.innerText = '';
}
}
editor.focus();
}
function FTB_DeleteTableColumn(ftbName) {
if (FTB_IsHtmlMode(ftbName)) return;
var td = this.FTB_GetClosest(ftbName,"td");
if (!td) {
return;
}
var index = td.cellIndex;
if (td.parentNode.cells.length == 1) {
//alert("Don't delete last column");
return;
}
// set the caret first to a position that doesn't disappear
FTB_SelectNextNode(td);
var rows = td.parentNode.parentNode.rows;
for (var i = rows.length; --i >= 0;) {
var tr = rows[i];
tr.removeChild(tr.cells[index]);
}
}
function FTB_DeleteTableRow(ftbName) {
var tr = FTB_GetClosest(ftbName,"tr");
if (!tr) {
return;
}
var par = tr.parentNode;
if (par.rows.length == 1) {
//alert("Don't delete the last row!");
return;
}
// set the caret first to a position that doesn't
// disappear.
FTB_SelectNextNode(tr);
par.removeChild(tr);
}
function FTB_ieSpellCheck(ftbName) {
if (FTB_IsHtmlMode(ftbName)) return;
if (!isIE) {
alert('IE Spell is not supported in Mozilla');
return;
}
try {
var tspell = new ActiveXObject('ieSpell.ieSpellExtension');
tspell.CheckAllLinkedDocuments(window.document);
} catch (err){
if (window.confirm('You need ieSpell to use spell check. Would you like to install it?')){window.open('http://www.iespell.com/download.php');};
};
}
function FTB_Indent(ftbName) {
FTB_Format(ftbName,'indent');
}
function FTB_InsertDate(ftbName) {
var d = new Date();
FTB_InsertText(ftbName,d.toLocaleDateString());
}
function FTB_InsertImage(ftbName) {
if (FTB_IsHtmlMode(ftbName)) return;
editor = FTB_GetIFrame(ftbName);
editor.focus();
editor.document.execCommand('insertimage',1,'');
}
function FTB_InsertRule(ftbName) {
FTB_Format(ftbName,'inserthorizontalrule');
}
function FTB_InsertTable(ftbName) {
editor = FTB_GetIFrame(ftbName);
editor.focus();
var tableWin = window.open("","tableWin","width=400,height=180");
tableWin.focus();
tableWin.document.body.innerHTML = "";
tableWin.document.write("<html>\
<head> \
<style type='text/css'> \
html, body { \
background: ButtonFace; \
color: ButtonText; \
font: 11px Tahoma,Verdana,sans-serif; \
margin: 0px; \
padding: 0px; \
} \
body { padding: 5px; } \
table { \
font: 11px Tahoma,Verdana,sans-serif; \
} \
form p { \
margin-top: 5px; \
margin-bottom: 5px; \
} \
.fl { width: 9em; float: left; padding: 2px 5px; text-align: right; } \
.fr { width: 7em; float: left; padding: 2px 5px; text-align: right; } \
fieldset { padding: 0px 10px 5px 5px; } \
select, input, button { font: 11px Tahoma,Verdana,sans-serif; } \
button { width: 70px; } \
.space { padding: 2px; } \
\
.title { background: #ddf; color: #000; font-weight: bold; font-size: 120%; padding: 3px 10px; margin-bottom: 10px; \
border-bottom: 1px solid black; letter-spacing: 2px; \
} \
form { padding: 0px; margin: 0px; } \
</style> \
<script language='JavaScript'> \
function insertTable() { \
cols = parseInt(document.getElementById('f_cols').value); \
rows = parseInt(document.getElementById('f_rows').value); \
width = document.getElementById('f_width').value; \
widthUnit = document.getElementById('f_unit').options[document.getElementById('f_unit').selectedIndex].value; \
align = document.getElementById('f_align').value; \
cellpadding = document.getElementById('f_padding').value; \
cellspacing = document.getElementById('f_spacing').value; \
border = document.getElementById('f_border').value; \
window.opener.FTB_CreateTable('" + ftbName + "',cols,rows,width,widthUnit,align,cellpadding,cellspacing,border); \
} \
</script> \
</head> \
<body> \
<form action=''> \
\
<table border='0' style='padding: 0px; margin: 0px'> \
<tbody> \
<tr> \
<td style='width: 4em; text-align: right'>Rows:</td> \
<td><input type='text' name='rows' id='f_rows' size='5' title='Number of rows' value='2' /></td> \
<td></td> \
<td></td> \
<td></td> \
</tr> \
<tr> \
<td style='width: 4em; text-align: right'>Cols:</td> \
<td><input type='text' name='cols' id='f_cols' size='5' title='Number of columns' value='4' /></td> \
<td style='width: 4em; text-align: right'>Width:</td> \
<td><input type='text' name='width' id='f_width' size='5' title='Width of the table' value='100' /></td> \
<td><select size='1' name='unit' id='f_unit' title='Width unit'> \
<option value='%' selected='1' >Percent</option> \
<option value='px' >Pixels</option> \
<option value='em' >Em</option> \
</select></td> \
</tr> \
</tbody> \
</table> \
\
<fieldset style='float: left; margin-left: 5px;'> \
<legend>Layout</legend> \
\
<div class='space'></div> \
\
<div class='fl'>Alignment:</div> \
<select size='1' name='align' id='f_align' \
title='Positioning of this image'> \
<option value='' selected='1' >Not set</option> \
<option value='left' >Left</option> \
<option value='right' >Right</option> \
<option value='texttop' >Texttop</option> \
<option value='absmiddle' >Absmiddle</option> \
<option value='baseline' >Baseline</option> \
<option value='absbottom' >Absbottom</option> \
<option value='bottom' >Bottom</option> \
<option value='middle' >Middle</option> \
<option value='top' >Top</option> \
</select> \
\
<p /> \
\
<div class='fl'>Border thickness:</div> \
<input type='text' name='border' id='f_border' size='5' value='1' title='Leave empty for no border' /> \
\
<div class='space'></div> \
\
</fieldset> \
\
<fieldset style='float:right; margin-right: 5px;'> \
<legend>Spacing</legend> \
\
<div class='space'></div> \
\
<div class='fr'>Cell spacing:</div> \
<input type='text' name='spacing' id='f_spacing' size='5' value='1' \
title='Space between adjacent cells' /> \
\
<p /> \
\
<div class='fr'>Cell padding:</div> \
<input type='text' name='padding' id='f_padding' size='5' value='1' \
title='Space between content and border in cell' /> \
\
<div class='space'></div> \
\
</fieldset> \
\
<div style='margin-top: 85px; border-top: 1px solid #999; padding: 2px; text-align: right;'> \
<button type='button' name='ok' onclick='insertTable();window.close();'>Insert</button> \
<button type='button' name='cancel' onclick='window.close();'>Cancel</button> \
</div> \
</ |
请发表评论