/* NicEdit - Micro Inline WYSIWYG
 * Copyright 2007-2008 Brian Kirchoff
 *
 * NicEdit is distributed under the terms of the MIT license
 * For more information visit http://nicedit.com/
 * Do not remove this copyright message
 */
var bkExtend=function(){var A=arguments;if(A.length==1){A=[this,A[0]]}for(var B in A[1]){A[0][B]=A[1][B]}return A[0]};function bkClass(){}bkClass.prototype.construct=function(){};bkClass.extend=function(C){var A=function(){if(arguments[0]!==bkClass){return this.construct.apply(this,arguments)}};var B=new this(bkClass);bkExtend(B,C);A.prototype=B;A.extend=this.extend;return A};var bkElement=bkClass.extend({construct:function(B,A){if(typeof (B)=="string"){B=(A||document).createElement(B)}B=$BK(B);return B},appendTo:function(A){A.appendChild(this);return this},appendBefore:function(A){A.parentNode.insertBefore(this,A);return this},addEvent:function(B,A){bkLib.addEvent(this,B,A);return this},setContent:function(A){this.innerHTML=A;return this},pos:function(){var C=curtop=0;var B=obj=this;if(obj.offsetParent){do{C+=obj.offsetLeft;curtop+=obj.offsetTop}while(obj=obj.offsetParent)}var A=(!window.opera)?parseInt(this.getStyle("border-width")||this.style.border)||0:0;return[C+A,curtop+A+this.offsetHeight]},noSelect:function(){bkLib.noSelect(this);return this},parentTag:function(A){var B=this;do{if(B&&B.nodeName&&B.nodeName.toUpperCase()==A){return B}B=B.parentNode}while(B);return false},hasClass:function(A){return this.className.match(new RegExp("(\\s|^)nicEdit-"+A+"(\\s|$)"))},addClass:function(A){if(!this.hasClass(A)){this.className+=" nicEdit-"+A}return this},removeClass:function(A){if(this.hasClass(A)){this.className=this.className.replace(new RegExp("(\\s|^)nicEdit-"+A+"(\\s|$)")," ")}return this},setStyle:function(A){var B=this.style;for(var C in A){switch(C){case"float":B.cssFloat=B.styleFloat=A[C];break;case"opacity":B.opacity=A[C];B.filter="alpha(opacity="+Math.round(A[C]*100)+")";break;case"className":this.className=A[C];break;default:B[C]=A[C]}}return this},getStyle:function(A,C){var B=(!C)?document.defaultView:C;if(this.nodeType==1){return(B&&B.getComputedStyle)?B.getComputedStyle(this,null).getPropertyValue(A):this.currentStyle[bkLib.camelize(A)]}},remove:function(){this.parentNode.removeChild(this);return this},setAttributes:function(A){for(var B in A){this[B]=A[B]}return this}});var bkLib={isMSIE:(navigator.appVersion.indexOf("MSIE")!=-1),addEvent:function(C,B,A){(C.addEventListener)?C.addEventListener(B,A,false):C.attachEvent("on"+B,A)},toArray:function(C){var B=C.length,A=new Array(B);while(B--){A[B]=C[B]}return A},noSelect:function(B){if(B.setAttribute&&B.nodeName.toLowerCase()!="input"&&B.nodeName.toLowerCase()!="textarea"){B.setAttribute("unselectable","on")}for(var A=0;A<B.childNodes.length;A++){bkLib.noSelect(B.childNodes[A])}},camelize:function(A){return A.replace(/\-(.)/g,function(B,C){return C.toUpperCase()})},inArray:function(A,B){return(bkLib.search(A,B)!=null)},search:function(A,C){for(var B=0;B<A.length;B++){if(A[B]==C){return B}}return null},cancelEvent:function(A){A=A||window.event;if(A.preventDefault&&A.stopPropagation){A.preventDefault();A.stopPropagation()}return false},domLoad:[],domLoaded:function(){if(arguments.callee.done){return }arguments.callee.done=true;for(i=0;i<bkLib.domLoad.length;i++){bkLib.domLoad[i]()}},onDomLoaded:function(A){this.domLoad.push(A);if(document.addEventListener){document.addEventListener("DOMContentLoaded",bkLib.domLoaded,null)}else{if(bkLib.isMSIE){document.write("<style>.nicEdit-main p { margin: 0; }</style><script id=__ie_onload defer "+((location.protocol=="https:")?"src='javascript:void(0)'":"src=//0")+"><\/script>");$BK("__ie_onload").onreadystatechange=function(){if(this.readyState=="complete"){bkLib.domLoaded()}}}}window.onload=bkLib.domLoaded}};function $BK(A){if(typeof (A)=="string"){A=document.getElementById(A)}return(A&&!A.appendTo)?bkExtend(A,bkElement.prototype):A}var bkEvent={addEvent:function(A,B){if(B){this.eventList=this.eventList||{};this.eventList[A]=this.eventList[A]||[];this.eventList[A].push(B)}return this},fireEvent:function(){var A=bkLib.toArray(arguments),C=A.shift();if(this.eventList&&this.eventList[C]){for(var B=0;B<this.eventList[C].length;B++){this.eventList[C][B].apply(this,A)}}}};function __(A){return A}Function.prototype.closure=function(){var A=this,B=bkLib.toArray(arguments),C=B.shift();return function(){if(typeof (bkLib)!="undefined"){return A.apply(C,B.concat(bkLib.toArray(arguments)))}}};Function.prototype.closureListener=function(){var A=this,C=bkLib.toArray(arguments),B=C.shift();return function(E){E=E||window.event;if(E.target){var D=E.target}else{var D=E.srcElement}return A.apply(B,[E,D].concat(C))}};



var nicEditorConfig = bkClass.extend({
	buttons : {
		'bold' : {name : __('Click to Bold'), command : 'Bold', tags : ['B','STRONG'], css : {'font-weight' : 'bold'}, key : 'b'},
		'italic' : {name : __('Click to Italic'), command : 'Italic', tags : ['EM','I'], css : {'font-style' : 'italic'}, key : 'i'},
		'underline' : {name : __('Click to Underline'), command : 'Underline', tags : ['U'], css : {'text-decoration' : 'underline'}, key : 'u'},
		'left' : {name : __('Left Align'), command : 'justifyleft', noActive : true},
		'center' : {name : __('Center Align'), command : 'justifycenter', noActive : true},
		'right' : {name : __('Right Align'), command : 'justifyright', noActive : true},
		'justify' : {name : __('Justify Align'), command : 'justifyfull', noActive : true},
		'ol' : {name : __('Insert Ordered List'), command : 'insertorderedlist', tags : ['OL']},
		'ul' : 	{name : __('Insert Unordered List'), command : 'insertunorderedlist', tags : ['UL']},
		'subscript' : {name : __('Click to Subscript'), command : 'subscript', tags : ['SUB']},
		'superscript' : {name : __('Click to Superscript'), command : 'superscript', tags : ['SUP']},
		'strikethrough' : {name : __('Click to Strike Through'), command : 'strikeThrough', css : {'text-decoration' : 'line-through'}},
		'removeformat' : {name : __('Remove Formatting'), command : 'removeformat', noActive : true},
		'indent' : {name : __('Indent Text'), command : 'indent', noActive : true},
		'outdent' : {name : __('Remove Indent'), command : 'outdent', noActive : true},
		'hr' : {name : __('Horizontal Rule'), command : 'insertHorizontalRule', noActive : true}
	},
	iconsPath : 'nicEditorIcons.gif',
	buttonList : ['save','bold','italic','underline','left','center','right','justify','ol','ul','fontSize','fontFamily','fontFormat','indent','outdent','image','upload','link','unlink','forecolor','bgcolor'],
	iconList : {"xhtml":1,"bgcolor":2,"forecolor":3,"bold":4,"center":5,"hr":6,"indent":7,"italic":8,"justify":9,"left":10,"ol":11,"outdent":12,"removeformat":13,"right":14,"save":25,"strikethrough":16,"subscript":17,"superscript":18,"ul":19,"underline":20,"image":21,"link":22,"unlink":23,"close":24,"arrow":26}
	
});
;
var nicEditors={nicPlugins:[],editors:[],registerPlugin:function(B,A){this.nicPlugins.push({p:B,o:A})},allTextAreas:function(C){var A=document.getElementsByTagName("textarea");for(var B=0;B<A.length;B++){nicEditors.editors.push(new nicEditor(C).panelInstance(A[B]))}return nicEditors.editors},findEditor:function(C){var B=nicEditors.editors;for(var A=0;A<B.length;A++){if(B[A].instanceById(C)){return B[A].instanceById(C)}}}};var nicEditor=bkClass.extend({construct:function(C){this.options=new nicEditorConfig();bkExtend(this.options,C);this.nicInstances=new Array();this.loadedPlugins=new Array();var A=nicEditors.nicPlugins;for(var B=0;B<A.length;B++){this.loadedPlugins.push(new A[B].p(this,A[B].o))}nicEditors.editors.push(this);bkLib.addEvent(document.body,"mousedown",this.selectCheck.closureListener(this))},panelInstance:function(B,C){B=this.checkReplace($BK(B));var A=new bkElement("DIV").setStyle({width:(parseInt(B.getStyle("width"))||B.clientWidth)+"px"}).appendBefore(B);this.setPanel(A);return this.addInstance(B,C)},checkReplace:function(B){var A=nicEditors.findEditor(B);if(A){A.removeInstance(B);A.removePanel()}return B},addInstance:function(B,C){B=this.checkReplace($BK(B));if(B.contentEditable||!!window.opera){var A=new nicEditorInstance(B,C,this)}else{var A=new nicEditorIFrameInstance(B,C,this)}this.nicInstances.push(A);return this},removeInstance:function(C){C=$BK(C);var B=this.nicInstances;for(var A=0;A<B.length;A++){if(B[A].e==C){B[A].remove();this.nicInstances.splice(A,1)}}},removePanel:function(A){if(this.nicPanel){this.nicPanel.remove();this.nicPanel=null}},instanceById:function(C){C=$BK(C);var B=this.nicInstances;for(var A=0;A<B.length;A++){if(B[A].e==C){return B[A]}}},setPanel:function(A){this.nicPanel=new nicEditorPanel($BK(A),this.options,this);this.fireEvent("panel",this.nicPanel);return this},nicCommand:function(B,A){if(this.selectedInstance){this.selectedInstance.nicCommand(B,A)}},getIcon:function(D,A){var C=this.options.iconList[D];var B=(A.iconFiles)?A.iconFiles[D]:"";return{backgroundImage:"url('"+((C)?this.options.iconsPath:B)+"')",backgroundPosition:((C)?((C-1)*-18):0)+"px 0px"}},selectCheck:function(C,A){var B=false;do{if(A.className&&A.className.indexOf("nicEdit")!=-1){return false}}while(A=A.parentNode);this.fireEvent("blur",this.selectedInstance,A);this.lastSelectedInstance=this.selectedInstance;this.selectedInstance=null;return false}});nicEditor=nicEditor.extend(bkEvent);
var nicEditorInstance=bkClass.extend({isSelected:false,construct:function(G,D,C){this.ne=C;this.elm=this.e=G;this.options=D||{};newX=parseInt(G.getStyle("width"))||G.clientWidth;newY=parseInt(G.getStyle("height"))||G.clientHeight;this.initialHeight=newY-8;var H=(G.nodeName.toLowerCase()=="textarea");if(H||this.options.hasPanel){var B=(bkLib.isMSIE&&!((typeof document.body.style.maxHeight!="undefined")&&document.compatMode=="CSS1Compat"));var E={width:newX+"px",border:"1px solid #ccc",borderTop:0,overflowY:"auto",overflowX:"hidden"};E[(B)?"height":"maxHeight"]=(this.ne.options.maxHeight)?this.ne.options.maxHeight+"px":null;this.editorContain=new bkElement("DIV").setStyle(E).appendBefore(G);var A=new bkElement("DIV").setStyle({width:(newX-8)+"px",margin:"4px",minHeight:newY+"px"}).addClass("main").appendTo(this.editorContain);G.setStyle({display:"none"});A.innerHTML=G.innerHTML;if(H){A.setContent(G.value);this.copyElm=G;var F=G.parentTag("FORM");if(F){bkLib.addEvent(F,"submit",this.saveContent.closure(this))}}A.setStyle((B)?{height:newY+"px"}:{overflow:"hidden"});this.elm=A}this.ne.addEvent("blur",this.blur.closure(this));this.init();this.blur()},init:function(){this.elm.setAttribute("contentEditable","true");if(this.getContent()==""){this.setContent("<br />")}this.instanceDoc=document.defaultView;this.elm.addEvent("mousedown",this.selected.closureListener(this)).addEvent("keypress",this.keyDown.closureListener(this)).addEvent("focus",this.selected.closure(this)).addEvent("blur",this.blur.closure(this)).addEvent("keyup",this.selected.closure(this));this.ne.fireEvent("add",this)},remove:function(){this.saveContent();if(this.copyElm||this.options.hasPanel){this.editorContain.remove();this.e.setStyle({display:"block"});this.ne.removePanel()}this.disable();this.ne.fireEvent("remove",this)},disable:function(){this.elm.setAttribute("contentEditable","false")},getSel:function(){return(window.getSelection)?window.getSelection():document.selection},getRng:function(){var A=this.getSel();if(!A){return null}return(A.rangeCount>0)?A.getRangeAt(0):A.createRange()},selRng:function(A,B){if(window.getSelection){B.removeAllRanges();B.addRange(A)}else{A.select()}},selElm:function(){var C=this.getRng();if(C.startContainer){var D=C.startContainer;if(C.cloneContents().childNodes.length==1){for(var B=0;B<D.childNodes.length;B++){var A=D.childNodes[B].ownerDocument.createRange();A.selectNode(D.childNodes[B]);if(C.compareBoundaryPoints(Range.START_TO_START,A)!=1&&C.compareBoundaryPoints(Range.END_TO_END,A)!=-1){return $BK(D.childNodes[B])}}}return $BK(D)}else{return $BK((this.getSel().type=="Control")?C.item(0):C.parentElement())}},saveRng:function(){this.savedRange=this.getRng();this.savedSel=this.getSel()},restoreRng:function(){if(this.savedRange){this.selRng(this.savedRange,this.savedSel)}},keyDown:function(B,A){if(B.ctrlKey){this.ne.fireEvent("key",this,B)}},selected:function(C,A){if(!A){A=this.selElm()}if(!C.ctrlKey){var B=this.ne.selectedInstance;if(B!=this){if(B){this.ne.fireEvent("blur",B,A)}this.ne.selectedInstance=this;this.ne.fireEvent("focus",B,A)}this.ne.fireEvent("selected",B,A);this.isFocused=true;this.elm.addClass("selected")}return false},blur:function(){this.isFocused=false;this.elm.removeClass("selected")},saveContent:function(){if(this.copyElm||this.options.hasPanel){this.ne.fireEvent("save",this);(this.copyElm)?this.copyElm.value=this.getContent():this.e.innerHTML=this.getContent()}},getElm:function(){return this.elm},getContent:function(){this.content=this.getElm().innerHTML;this.ne.fireEvent("get",this);return this.content},setContent:function(A){this.content=A;this.ne.fireEvent("set",this);this.elm.innerHTML=this.content},nicCommand:function(B,A){document.execCommand(B,false,A)}});
var nicEditorIFrameInstance=nicEditorInstance.extend({savedStyles:[],init:function(){var B=this.elm.innerHTML.replace(/^\s+|\s+$/g,"");this.elm.innerHTML="";(!B)?B="<br />":B;this.initialContent=B;this.elmFrame=new bkElement("iframe").setAttributes({src:"javascript:;",frameBorder:0,allowTransparency:"true",scrolling:"no"}).setStyle({height:"100px",width:"100%"}).addClass("frame").appendTo(this.elm);if(this.copyElm){this.elmFrame.setStyle({width:(this.elm.offsetWidth-4)+"px"})}var A=["font-size","font-family","font-weight","color"];for(itm in A){this.savedStyles[bkLib.camelize(itm)]=this.elm.getStyle(itm)}setTimeout(this.initFrame.closure(this),50)},disable:function(){this.elm.innerHTML=this.getContent()},initFrame:function(){var B=$BK(this.elmFrame.contentWindow.document);B.designMode="on";B.open();var A=this.ne.options.externalCSS;B.write("<html><head>"+((A)?'<link href="'+A+'" rel="stylesheet" type="text/css" />':"")+'</head><body id="nicEditContent" style="margin: 0 !important; background-color: transparent !important;">'+this.initialContent+"</body></html>");B.close();this.frameDoc=B;this.frameWin=$BK(this.elmFrame.contentWindow);this.frameContent=$BK(this.frameWin.document.body).setStyle(this.savedStyles);this.instanceDoc=this.frameWin.document.defaultView;this.heightUpdate();this.frameDoc.addEvent("mousedown",this.selected.closureListener(this)).addEvent("keyup",this.heightUpdate.closureListener(this)).addEvent("keydown",this.keyDown.closureListener(this)).addEvent("keyup",this.selected.closure(this));this.ne.fireEvent("add",this)},getElm:function(){return this.frameContent},setContent:function(A){this.content=A;this.ne.fireEvent("set",this);this.frameContent.innerHTML=this.content;this.heightUpdate()},getSel:function(){return(this.frameWin)?this.frameWin.getSelection():this.frameDoc.selection},heightUpdate:function(){this.elmFrame.style.height=Math.max(this.frameContent.offsetHeight,this.initialHeight)+"px"},nicCommand:function(B,A){this.frameDoc.execCommand(B,false,A);setTimeout(this.heightUpdate.closure(this),100)}});
var nicEditorPanel=bkClass.extend({construct:function(E,B,A){this.elm=E;this.options=B;this.ne=A;this.panelButtons=new Array();this.buttonList=bkExtend([],this.ne.options.buttonList);this.panelContain=new bkElement("DIV").setStyle({overflow:"hidden",width:"100%",border:"1px solid #cccccc",backgroundColor:"#efefef"}).addClass("panelContain");this.panelElm=new bkElement("DIV").setStyle({margin:"2px",marginTop:"0px",zoom:1,overflow:"hidden"}).addClass("panel").appendTo(this.panelContain);this.panelContain.appendTo(E);var C=this.ne.options;var D=C.buttons;for(button in D){this.addButton(button,C,true)}this.reorder();E.noSelect()},addButton:function(buttonName,options,noOrder){var button=options.buttons[buttonName];var type=(button.type)?eval("(typeof("+button.type+') == "undefined") ? null : '+button.type+";"):nicEditorButton;var hasButton=bkLib.inArray(this.buttonList,buttonName);if(type&&(hasButton||this.ne.options.fullPanel)){this.panelButtons.push(new type(this.panelElm,buttonName,options,this.ne));if(!hasButton){this.buttonList.push(buttonName)}}},findButton:function(B){for(var A=0;A<this.panelButtons.length;A++){if(this.panelButtons[A].name==B){return this.panelButtons[A]}}},reorder:function(){var C=this.buttonList;for(var B=0;B<C.length;B++){var A=this.findButton(C[B]);if(A){this.panelElm.appendChild(A.margin)}}},remove:function(){this.elm.remove()}});
var nicEditorButton=bkClass.extend({construct:function(D,A,C,B){this.options=C.buttons[A];this.name=A;this.ne=B;this.elm=D;this.margin=new bkElement("DIV").setStyle({"float":"left",marginTop:"2px"}).appendTo(D);this.contain=new bkElement("DIV").setStyle({width:"20px",height:"20px"}).addClass("buttonContain").appendTo(this.margin);this.border=new bkElement("DIV").setStyle({backgroundColor:"#efefef",border:"1px solid #efefef"}).appendTo(this.contain);this.button=new bkElement("DIV").setStyle({width:"18px",height:"18px",overflow:"hidden",zoom:1,cursor:"pointer"}).addClass("button").setStyle(this.ne.getIcon(A,C)).appendTo(this.border);this.button.addEvent("mouseover",this.hoverOn.closure(this)).addEvent("mouseout",this.hoverOff.closure(this)).addEvent("mousedown",this.mouseClick.closure(this)).noSelect();if(!window.opera){this.button.onmousedown=this.button.onclick=bkLib.cancelEvent}B.addEvent("selected",this.enable.closure(this)).addEvent("blur",this.disable.closure(this)).addEvent("key",this.key.closure(this));this.disable();this.init()},init:function(){},hide:function(){this.contain.setStyle({display:"none"})},updateState:function(){if(this.isDisabled){this.setBg()}else{if(this.isHover){this.setBg("hover")}else{if(this.isActive){this.setBg("active")}else{this.setBg()}}}},setBg:function(A){switch(A){case"hover":var B={border:"1px solid #666",backgroundColor:"#ddd"};break;case"active":var B={border:"1px solid #666",backgroundColor:"#ccc"};break;default:var B={border:"1px solid #efefef",backgroundColor:"#efefef"}}this.border.setStyle(B).addClass("button-"+A)},checkNodes:function(A){var B=A;do{if(this.options.tags&&bkLib.inArray(this.options.tags,B.nodeName)){this.activate();return true}}while(B=B.parentNode&&B.className!="nicEdit");B=$BK(A);while(B.nodeType==3){B=$BK(B.parentNode)}if(this.options.css){for(itm in this.options.css){if(B.getStyle(itm,this.ne.selectedInstance.instanceDoc)==this.options.css[itm]){this.activate();return true}}}this.deactivate();return false},activate:function(){if(!this.isDisabled){this.isActive=true;this.updateState();this.ne.fireEvent("buttonActivate",this)}},deactivate:function(){this.isActive=false;this.updateState();if(!this.isDisabled){this.ne.fireEvent("buttonDeactivate",this)}},enable:function(A,B){this.isDisabled=false;this.contain.setStyle({opacity:1}).addClass("buttonEnabled");this.updateState();this.checkNodes(B)},disable:function(A,B){this.isDisabled=true;this.contain.setStyle({opacity:0.6}).removeClass("buttonEnabled");this.updateState()},toggleActive:function(){(this.isActive)?this.deactivate():this.activate()},hoverOn:function(){if(!this.isDisabled){this.isHover=true;this.updateState();this.ne.fireEvent("buttonOver",this)}},hoverOff:function(){this.isHover=false;this.updateState();this.ne.fireEvent("buttonOut",this)},mouseClick:function(){if(this.options.command){this.ne.nicCommand(this.options.command,this.options.commandArgs);if(!this.options.noActive){this.toggleActive()}}this.ne.fireEvent("buttonClick",this)},key:function(A,B){if(this.options.key&&B.ctrlKey&&String.fromCharCode(B.keyCode||B.charCode).toLowerCase()==this.options.key){this.mouseClick();if(B.preventDefault){B.preventDefault()}}}});
var nicPlugin=bkClass.extend({construct:function(B,A){this.options=A;this.ne=B;this.ne.addEvent("panel",this.loadPanel.closure(this));this.init()},loadPanel:function(C){var B=this.options.buttons;for(var A in B){C.addButton(A,this.options)}C.reorder()},init:function(){}});


var nicPaneOptions = { };

var nicEditorPane=bkClass.extend({construct:function(D,C,B,A){this.ne=C;this.elm=D;this.pos=D.pos();this.contain=new bkElement("div").setStyle({zIndex:"99999",overflow:"hidden",position:"absolute",left:this.pos[0]+"px",top:this.pos[1]+"px"});this.pane=new bkElement("div").setStyle({fontSize:"12px",border:"1px solid #ccc",overflow:"hidden",padding:"4px",textAlign:"left",backgroundColor:"#ffffc9"}).addClass("pane").setStyle(B).appendTo(this.contain);if(A&&!A.options.noClose){this.close=new bkElement("div").setStyle({"float":"right",height:"16px",width:"16px",cursor:"pointer"}).setStyle(this.ne.getIcon("close",nicPaneOptions)).addEvent("mousedown",A.removePane.closure(this)).appendTo(this.pane)}this.contain.noSelect().appendTo(document.body);this.position();this.init()},init:function(){},position:function(){if(this.ne.nicPanel){var B=this.ne.nicPanel.elm;var A=B.pos();var C=A[0]+parseInt(B.getStyle("width"))-(parseInt(this.pane.getStyle("width"))+8);if(C<this.pos[0]){this.contain.setStyle({left:C+"px"})}}},toggle:function(){this.isVisible=!this.isVisible;this.contain.setStyle({display:((this.isVisible)?"block":"none")})},remove:function(){if(this.contain){this.contain.remove();this.contain=null}},append:function(A){A.appendTo(this.pane)},setContent:function(A){this.pane.setContent(A)}});

var nicEditorAdvancedButton=nicEditorButton.extend({init:function(){this.ne.addEvent("selected",this.removePane.closure(this)).addEvent("blur",this.removePane.closure(this))},mouseClick:function(){if(!this.isDisabled){if(this.pane&&this.pane.pane){this.removePane()}else{this.pane=new nicEditorPane(this.contain,this.ne,{width:(this.width||"270px"),backgroundColor:"#fff"},this);this.addPane();this.ne.selectedInstance.saveRng()}}},addForm:function(C,G){this.form=new bkElement("form").addEvent("submit",this.submit.closureListener(this));this.pane.append(this.form);this.inputs={};for(itm in C){var D=C[itm];var F="";if(G){F=G.getAttribute(itm)}if(!F){F=D.value||""}var A=C[itm].type;if(A=="title"){new bkElement("div").setContent(D.txt).setStyle({fontSize:"14px",fontWeight:"bold",padding:"0px",margin:"2px 0"}).appendTo(this.form)}else{var B=new bkElement("div").setStyle({overflow:"hidden",clear:"both"}).appendTo(this.form);if(D.txt){new bkElement("label").setAttributes({"for":itm}).setContent(D.txt).setStyle({margin:"2px 4px",fontSize:"13px",width:"50px",lineHeight:"20px",textAlign:"right","float":"left"}).appendTo(B)}switch(A){case"text":this.inputs[itm]=new bkElement("input").setAttributes({id:itm,value:F,type:"text"}).setStyle({margin:"2px 0",fontSize:"13px","float":"left",height:"20px",border:"1px solid #ccc",overflow:"hidden"}).setStyle(D.style).appendTo(B);break;case"select":this.inputs[itm]=new bkElement("select").setAttributes({id:itm}).setStyle({border:"1px solid #ccc","float":"left",margin:"2px 0"}).appendTo(B);for(opt in D.options){var E=new bkElement("option").setAttributes({value:opt,selected:(opt==F)?"selected":""}).setContent(D.options[opt]).appendTo(this.inputs[itm])}break;case"content":this.inputs[itm]=new bkElement("textarea").setAttributes({id:itm}).setStyle({border:"1px solid #ccc","float":"left"}).setStyle(D.style).appendTo(B);this.inputs[itm].value=F}}}new bkElement("input").setAttributes({type:"submit"}).setStyle({backgroundColor:"#efefef",border:"1px solid #ccc",margin:"3px 0","float":"left",clear:"both"}).appendTo(this.form);this.form.onsubmit=bkLib.cancelEvent},submit:function(){},findElm:function(B,A,E){var D=this.ne.selectedInstance.getElm().getElementsByTagName(B);for(var C=0;C<D.length;C++){if(D[C].getAttribute(A)==E){return $BK(D[C])}}},removePane:function(){if(this.pane){this.pane.remove();this.pane=null;this.ne.selectedInstance.restoreRng()}}});

var nicButtonTips=bkClass.extend({construct:function(A){this.ne=A;A.addEvent("buttonOver",this.show.closure(this)).addEvent("buttonOut",this.hide.closure(this))},show:function(A){this.timer=setTimeout(this.create.closure(this,A),400)},create:function(A){this.timer=null;if(!this.pane){this.pane=new nicEditorPane(A.button,this.ne,{fontSize:"12px",marginTop:"5px"});this.pane.setContent(A.options.name)}},hide:function(A){if(this.timer){clearTimeout(this.timer)}if(this.pane){this.pane=this.pane.remove()}}});nicEditors.registerPlugin(nicButtonTips);


var nicSelectOptions = {
	buttons : {
		'fontSize' : {name : __('Select Font Size'), type : 'nicEditorFontSizeSelect', command : 'fontsize'},
		'fontFamily' : {name : __('Select Font Family'), type : 'nicEditorFontFamilySelect', command : 'fontname'},
		'fontFormat' : {name : __('Select Font Format'), type : 'nicEditorFontFormatSelect', command : 'formatBlock'}
	}
};

var nicEditorSelect=bkClass.extend({construct:function(D,A,C,B){this.options=C.buttons[A];this.elm=D;this.ne=B;this.name=A;this.selOptions=new Array();this.margin=new bkElement("div").setStyle({"float":"left",margin:"2px 1px 0 1px"}).appendTo(this.elm);this.contain=new bkElement("div").setStyle({width:"90px",height:"20px",cursor:"pointer",overflow:"hidden"}).addClass("selectContain").addEvent("click",this.toggle.closure(this)).appendTo(this.margin);this.items=new bkElement("div").setStyle({overflow:"hidden",zoom:1,border:"1px solid #ccc",paddingLeft:"3px",backgroundColor:"#fff"}).appendTo(this.contain);this.control=new bkElement("div").setStyle({overflow:"hidden","float":"right",height:"18px",width:"16px"}).addClass("selectControl").setStyle(this.ne.getIcon("arrow",C)).appendTo(this.items);this.txt=new bkElement("div").setStyle({overflow:"hidden","float":"left",width:"66px",height:"14px",marginTop:"1px",fontFamily:"sans-serif",textAlign:"center",fontSize:"12px"}).addClass("selectTxt").appendTo(this.items);if(!window.opera){this.contain.onmousedown=this.control.onmousedown=this.txt.onmousedown=bkLib.cancelEvent}this.margin.noSelect();this.ne.addEvent("selected",this.enable.closure(this)).addEvent("blur",this.disable.closure(this));this.disable();this.init()},disable:function(){this.isDisabled=true;this.close();this.contain.setStyle({opacity:0.6})},enable:function(A){this.isDisabled=false;this.close();this.contain.setStyle({opacity:1})},setDisplay:function(A){this.txt.setContent(A)},toggle:function(){if(!this.isDisabled){(this.pane)?this.close():this.open()}},open:function(){this.pane=new nicEditorPane(this.items,this.ne,{width:"88px",padding:"0px",borderTop:0,borderLeft:"1px solid #ccc",borderRight:"1px solid #ccc",borderBottom:"0px",backgroundColor:"#fff"});for(var C=0;C<this.selOptions.length;C++){var B=this.selOptions[C];var A=new bkElement("div").setStyle({overflow:"hidden",borderBottom:"1px solid #ccc",width:"88px",textAlign:"left",overflow:"hidden",cursor:"pointer"});var D=new bkElement("div").setStyle({padding:"0px 4px"}).setContent(B[1]).appendTo(A).noSelect();D.addEvent("click",this.update.closure(this,B[0])).addEvent("mouseover",this.over.closure(this,D)).addEvent("mouseout",this.out.closure(this,D)).setAttributes("id",B[0]);this.pane.append(A);if(!window.opera){D.onmousedown=bkLib.cancelEvent}}},close:function(){if(this.pane){this.pane=this.pane.remove()}},over:function(A){A.setStyle({backgroundColor:"#ccc"})},out:function(A){A.setStyle({backgroundColor:"#fff"})},add:function(B,A){this.selOptions.push(new Array(B,A))},update:function(A){this.ne.nicCommand(this.options.command,A);this.close()}});var nicEditorFontSizeSelect=nicEditorSelect.extend({sel:{1:"1&nbsp;(8pt)",2:"2&nbsp;(10pt)",3:"3&nbsp;(12pt)",4:"4&nbsp;(14pt)",5:"5&nbsp;(18pt)",6:"6&nbsp;(24pt)"},init:function(){this.setDisplay("Font&nbsp;Size...");for(itm in this.sel){this.add(itm,'<font size="'+itm+'">'+this.sel[itm]+"</font>")}}});var nicEditorFontFamilySelect=nicEditorSelect.extend({sel:{arial:"Arial","comic sans ms":"Comic Sans","courier new":"Courier New",georgia:"Georgia",helvetica:"Helvetica",impact:"Impact","times new roman":"Times","trebuchet ms":"Trebuchet",verdana:"Verdana"},init:function(){this.setDisplay("Font&nbsp;Family...");for(itm in this.sel){this.add(itm,'<font face="'+itm+'">'+this.sel[itm]+"</font>")}}});var nicEditorFontFormatSelect=nicEditorSelect.extend({sel:{p:"Paragraph",pre:"Pre",h6:"Heading&nbsp;6",h5:"Heading&nbsp;5",h4:"Heading&nbsp;4",h3:"Heading&nbsp;3",h2:"Heading&nbsp;2",h1:"Heading&nbsp;1"},init:function(){this.setDisplay("Font&nbsp;Format...");for(itm in this.sel){var A=itm.toUpperCase();this.add("<"+A+">","<"+itm+' style="padding: 0px; margin: 0px;">'+this.sel[itm]+"</"+A+">")}}});nicEditors.registerPlugin(nicPlugin,nicSelectOptions);


var nicLinkOptions = {
	buttons : {
		'link' : {name : 'Add Link', type : 'nicLinkButton', tags : ['A']},
		'unlink' : {name : 'Remove Link',  command : 'unlink', noActive : true}
	}
};

var nicLinkButton=nicEditorAdvancedButton.extend({addPane:function(){this.ln=this.ne.selectedInstance.selElm().parentTag("A");this.addForm({"":{type:"title",txt:"Add/Edit Link"},href:{type:"text",txt:"URL",value:"http://",style:{width:"150px"}},title:{type:"text",txt:"Title"},target:{type:"select",txt:"Open In",options:{"":"Current Window",_blank:"New Window"},style:{width:"100px"}}},this.ln)},submit:function(C){var A=this.inputs.href.value;if(A=="http://"||A==""){alert("You must enter a URL to Create a Link");return false}this.removePane();if(!this.ln){var B="javascript:nicTemp();";this.ne.nicCommand("createlink",B);this.ln=this.findElm("A","href",B)}if(this.ln){this.ln.setAttributes({href:this.inputs.href.value,title:this.inputs.title.value,target:this.inputs.target.options[this.inputs.target.selectedIndex].value})}}});nicEditors.registerPlugin(nicPlugin,nicLinkOptions);


var nicColorOptions = {
	buttons : {
		'forecolor' : {name : __('Change Text Color'), type : 'nicEditorColorButton', noClose : true},
		'bgcolor' : {name : __('Change Background Color'), type : 'nicEditorBgColorButton', noClose : true}
	}
};

var nicEditorColorButton=nicEditorAdvancedButton.extend({addPane:function(){var D={0:"00",1:"33",2:"66",3:"99",4:"CC",5:"FF"};var H=new bkElement("DIV").setStyle({width:"270px"});for(var A in D){for(var F in D){for(var E in D){var I="#"+D[A]+D[E]+D[F];var C=new bkElement("DIV").setStyle({cursor:"pointer",height:"15px","float":"left"}).appendTo(H);var G=new bkElement("DIV").setStyle({border:"2px solid "+I}).appendTo(C);var B=new bkElement("DIV").setStyle({backgroundColor:I,overflow:"hidden",width:"11px",height:"11px"}).addEvent("click",this.colorSelect.closure(this,I)).addEvent("mouseover",this.on.closure(this,G)).addEvent("mouseout",this.off.closure(this,G,I)).appendTo(G);if(!window.opera){C.onmousedown=B.onmousedown=bkLib.cancelEvent}}}}this.pane.append(H.noSelect())},colorSelect:function(A){this.ne.nicCommand("foreColor",A);this.removePane()},on:function(A){A.setStyle({border:"2px solid #000"})},off:function(A,B){A.setStyle({border:"2px solid "+B})}});var nicEditorBgColorButton=nicEditorColorButton.extend({colorSelect:function(A){this.ne.nicCommand("hiliteColor",A);this.removePane()}});nicEditors.registerPlugin(nicPlugin,nicColorOptions);


var nicImageOptions = {
	buttons : {
		'image' : {name : 'Add Image', type : 'nicImageButton', tags : ['IMG']}
	}
	
};

var nicImageButton=nicEditorAdvancedButton.extend({addPane:function(){this.im=this.ne.selectedInstance.selElm().parentTag("IMG");this.addForm({"":{type:"title",txt:"Add/Edit Image"},src:{type:"text",txt:"URL",value:"http://",style:{width:"150px"}},alt:{type:"text",txt:"Alt Text",style:{width:"100px"}},align:{type:"select",txt:"Align",options:{none:"Default",left:"Left",right:"Right"}}},this.im)},submit:function(B){var C=this.inputs.src.value;if(C==""||C=="http://"){alert("You must enter a Image URL to insert");return false}this.removePane();if(!this.im){var A="javascript:nicImTemp();";this.ne.nicCommand("insertImage",A);this.im=this.findElm("IMG","src",A)}if(this.im){this.im.setAttributes({src:this.inputs.src.value,alt:this.inputs.alt.value,align:this.inputs.align.value})}}});nicEditors.registerPlugin(nicPlugin,nicImageOptions);


var nicSaveOptions = {
	buttons : {
		'save' : {name : __('Save this content'), type : 'nicEditorSaveButton'}
	}
};

var nicEditorSaveButton=nicEditorButton.extend({init:function(){if(!this.ne.options.onSave){this.margin.setStyle({display:"none"})}},mouseClick:function(){var B=this.ne.options.onSave;var A=this.ne.selectedInstance;B(A.getContent(),A.elm.id,A)}});nicEditors.registerPlugin(nicPlugin,nicSaveOptions);

var nicXHTML=bkClass.extend({stripAttributes:["_moz_dirty","_moz_resizing","_extended"],noShort:["style","title","script","textarea","a"],cssReplace:{"font-weight:bold;":"strong","font-style:italic;":"em"},sizes:{1:"xx-small",2:"x-small",3:"small",4:"medium",5:"large",6:"x-large"},construct:function(A){this.ne=A;if(this.ne.options.xhtml){A.addEvent("get",this.cleanup.closure(this))}},cleanup:function(A){var B=A.getElm();var C=this.toXHTML(B);A.content=C},toXHTML:function(C,A,L){var G="";var O="";var P="";var I=C.nodeType;var Q=C.nodeName.toLowerCase();var N=C.hasChildNodes&&C.hasChildNodes();var B=new Array();switch(I){case 1:var H=C.attributes;switch(Q){case"b":Q="strong";break;case"i":Q="em";break;case"font":Q="span";break}if(A){for(var F=0;F<H.length;F++){var K=H[F];var M=K.nodeName.toLowerCase();var D=K.nodeValue;if(!K.specified||!D||bkLib.inArray(this.stripAttributes,M)||typeof (D)=="function"){continue}switch(M){case"style":var J=D.replace(/ /g,"");for(itm in this.cssReplace){if(J.indexOf(itm)!=-1){B.push(this.cssReplace[itm]);J=J.replace(itm,"")}}P+=J;D="";break;case"class":D=D.replace("Apple-style-span","");break;case"size":P+="font-size:"+this.sizes[D]+";";D="";break}if(D){O+=" "+M+'="'+D+'"'}}if(P){O+=' style="'+P+'"'}for(var F=0;F<B.length;F++){G+="<"+B[F]+">"}if(O==""&&Q=="span"){A=false}if(A){G+="<"+Q;if(Q!="br"){G+=O}}}if(!N&&!bkLib.inArray(this.noShort,M)){if(A){G+=" />"}}else{if(A){G+=">"}for(var F=0;F<C.childNodes.length;F++){var E=this.toXHTML(C.childNodes[F],true,true);if(E){G+=E}}}if(A&&N){G+="</"+Q+">"}for(var F=0;F<B.length;F++){G+="</"+B[F]+">"}break;case 3:G+=C.nodeValue;break}return G}});nicEditors.registerPlugin(nicXHTML);

var nicBBCode=bkClass.extend({construct:function(A){this.ne=A;if(this.ne.options.bbCode){A.addEvent("get",this.bbGet.closure(this));A.addEvent("set",this.bbSet.closure(this));var B=this.ne.loadedPlugins;for(itm in B){if(B[itm].toXHTML){this.xhtml=B[itm]}}}},bbGet:function(A){var B=this.xhtml.toXHTML(A.getElm());A.content=this.toBBCode(B)},bbSet:function(A){A.content=this.fromBBCode(A.content)},toBBCode:function(B){function A(D,C){B=B.replace(D,C)}A(/\n/gi,"");A(/<strong>(.*?)<\/strong>/gi,"[b]$1[/b]");A(/<em>(.*?)<\/em>/gi,"[i]$1[/i]");A(/<span.*?style="text-decoration:underline;">(.*?)<\/span>/gi,"[u]$1[/u]");A(/<ul>(.*?)<\/ul>/gi,"[list]$1[/list]");A(/<li>(.*?)<\/li>/gi,"[*]$1[]");A(/<ol>(.*?)<\/ol>/gi,"[list=1]$1[/list]");A(/<img.*?src="(.*?)".*?>/gi,"[img]$1[/img]");A(/<a.*?href="(.*?)".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]");A(/<br.*?>/gi,"\n");A(/<.*?>.*?<\/.*?>/gi,"");return B},fromBBCode:function(A){function B(D,C){A=A.replace(D,C)}B(/\[b\](.*?)\[\/b\]/gi,"<strong>$1</strong>");B(/\[i\](.*?)\[\/i\]/gi,"<em>$1</em>");B(/\[u\](.*?)\[\/u\]/gi,'<span style="text-decoration:underline;">$1</span>');B(/\[list\](.*?)\[\/list\]/gi,"<ul>$1</ul>");B(/\[list=1\](.*?)\[\/list\]/gi,"<ol>$1</ol>");B(/\[\*\](.*?)\[\/\*\]/gi,"<li>$1</li>");B(/\[img\](.*?)\[\/img\]/gi,'<img src="$1" />');B(/\[url=(.*?)\](.*?)\[\/url\]/gi,'<a href="$1">$2</a>');B(/\n/gi,"<br />");return A}});nicEditors.registerPlugin(nicBBCode);


var nicCodeOptions = {
	buttons : {
		'xhtml' : {name : 'Edit HTML', type : 'nicCodeButton'}
	}
	
};

var nicCodeButton=nicEditorAdvancedButton.extend({width:"350px",addPane:function(){this.addForm({"":{type:"title",txt:"Edit HTML"},code:{type:"content",value:this.ne.selectedInstance.getContent(),style:{width:"340px",height:"200px"}}})},submit:function(B){var A=this.inputs.code.value;this.ne.selectedInstance.setContent(A);this.removePane()}});nicEditors.registerPlugin(nicPlugin,nicCodeOptions);



var area2;

function addArea2() {
	area2 = new nicEditor({fullPanel : true}).panelInstance('myArea2');
}
function removeArea2() {
	area2.removeInstance('myArea2');
}






function shrink(what)
{
	IE = (document.all)
	
	if (IE)
		displaystyle = "block";
	else
		displaystyle = "table-cell";
		
	var totalTDs = document.getElementsByTagName("TD").length;

	var what2 = what + "shrink"; // change DIV for code
	var what3 = what + "code"; // change TH for code
	
	if (document.getElementById(what2).innerHTML == "[-]")
	{
		document.getElementById(what2).innerHTML = "[+]";
		
		for(i=0; i < totalTDs; i++)
		{
			if (document.getElementsByTagName("TD")[i].className == what)
			{
				//document.getElementsByTagName("TD")[i].style.visibility='hidden';
				document.getElementsByTagName("TD")[i].style.display='none';
			}		
		}
		//document.getElementById("bbccol").width = "1";
		//document.getElementById("contable").width="50";
		document.getElementById(what3).style.display="none";
		
	}	
	else
	{
		document.getElementById(what2).innerHTML = "[-]";
			
		for(i=0; i < totalTDs; i++)
		{
			if (document.getElementsByTagName("TD")[i].className == what)
			{
				//document.getElementsByTagName("TD")[i].style.visibility='visible';
				document.getElementsByTagName("TD")[i].style.display=displaystyle;
			}
			document.getElementById(what3).style.display=displaystyle;
		}
	}
		//document.getElementById("bbccol").width = "350";


}  // end function shrink()

function ClipBoard() 
{
	Copied = document.fm.textbox.createTextRange();
	Copied.execCommand("Copy");
	document.fm.textbox.select();
}	// end functuon ClipBoard()

function selectall()
{
	document.fm.textbox.select();
}  // end function selectall()

var htmltext; // variable to save the html data
var finishedtext; // the variable will hold the finished text
					// so we know if we have to put textbox back
					// to HTML before converting to another type
					// pof code

function item(pos, font, face, size, color)
{
        this.pos = pos;
		this.font = font;
        this.face = face;
		this.size = size;
        this.color = color;
}

fontlist = new item(50);
fontclose = new item(50);
anchorlist = new item(50);
textarealist = new item(20);

function do_font(fonttext)
{
	var i = 0;
	var j = 0;
	var n;
	var pos;
	var subfonttext;	
		
	fonttext = fonttext.toUpperCase();
	//document.fm.textbox.value = fonttext;
	
	for (pos = 0; pos != -1; pos)
	{
		pos = fonttext.indexOf("<FONT", pos);
		//document.fm.textbox.value = document.fm.textbox.value + pos;
		
		if (pos != -1)  // if <FONT is found
		{
			n = fonttext.indexOf(">", pos);
		
			fontlist[i] = new item(0, 0, 0, 0, 0);
			fontlist[i].pos = pos;
			fontlist[i].font = 1;

			subfonttext = fonttext.substring(pos, n);
		
			if (subfonttext.search(/FACE/) != -1)
				fontlist[i].face = 1;
			else
				fontlist[i].face = 0;
		
			if (subfonttext.search(/SIZE/) != -1)
				fontlist[i].size = 1;
			else
				fontlist[i].size = 0;
		
			if (subfonttext.search(/COLOR/) != -1)
				fontlist[i].color = 1;
			else
				fontlist[i].color = 0;
			
			//document.fm.textbox.value = document.fm.textbox.value + i +
			//subfonttext + fontlist[i].font + fontlist[i].color + '.';
			
			pos++;
			i++;
			
		}  // end if <FONT is found
		//i--;  // so i equals the length of fontlist
	}  // end for
	

	// Now find all closing font tags </FONT>
	for (pos = 0; pos != -1; pos)
	{
		pos = fonttext.indexOf("</FONT>", pos++);
	
		//document.fm.textbox.value = document.fm.textbox.value + pos;
		if (pos != -1)  // if </FONT> found
		{
			//document.fm.textbox.value = document.fm.textbox.value + "i=" + i + ".";
			fontclose[j] = new item(0, 0, 0, 0, 0);
			fontclose[j].pos = pos;
			fontclose[j].font = 1;	
			for (ii = i-1; ii >= 0; ii--)
			{
				//document.fm.textbox.value = document.fm.textbox.value + "h1.";
				if (fontlist[ii].pos < pos)
				{	
					//document.fm.textbox.value = document.fm.textbox.value + "h2.";
					if (fontlist[ii].font == 1)
					{
						//document.fm.textbox.value = document.fm.textbox.value + "h3.";
						fontlist[ii].font = 0;
						fontclose[j].color = fontlist[ii].color;
						fontclose[j].size = fontlist[ii].size;
						fontclose[j].face = fontlist[ii].face;
						ii = -1;  // since we found it, exit for loop
					}  // end if opening FONT tag
				}  // end if			
			} // end for
			pos++;
			j++;
		}  // end if </FONT> found
		else
		{
			fontclose[j] = new item(0, 0, 0, 0, 0);
			fontclose[j].font = 0;
		}
		
	}  // end for	
	//for (i = 0;fontclose[i].font != 0; i++)
	//	{
	//		document.fm.textbox.value = document.fm.textbox.value +
	//			fontclose[i].font + fontclose[i].color +
	//			fontclose[i].size + fontclose[i].face;
	//	} 
	//alert("hi");
}  //  end function do_font()


function do_anchor(fonttext)
{
	var i = 0;
	var j = 0;
	var n;
	var pos;
	var subfonttext;	
		
	fonttext = fonttext.toUpperCase();
	//document.fm.textbox.value = fonttext;
	
	for (pos = 0; pos != -1; pos)
	{
		pos = fonttext.indexOf("<A HREF", pos);
		//document.fm.textbox.value = document.fm.textbox.value + pos;
		
		if (pos != -1)  // if <A HREF is found
		{
			n = fonttext.indexOf(">", pos);
		
			anchorlist[i] = new item(0, 0, 0, 0, 0);
			//fontlist[i].pos = pos;
			anchorlist[i].font = 1;

			subfonttext = fonttext.substring(pos, n);
		
			if (subfonttext.search(/MAILTO:/) != -1)
			{
				subfonttext = subfonttext.replace(/<A HREF=MAILTO:/, "");
				subfonttext = subfonttext.replace(/\"/, "");
				subfonttext = subfonttext.replace(/\'/, "");
				anchorlist[i].pos = 1; // mailto: flag
				subfonttext = subfonttext.toLowerCase();
				anchorlist[i].face = subfonttext; // email address
			}
			else
			{
				anchorlist[i].pos = 2; // http: flag
			}
			
			//document.fm.textbox.value = document.fm.textbox.value + i +
			//subfonttext + fontlist[i].font + fontlist[i].color + '.';
			
			pos++;
			i++;
			
		}  // end if <A HREF is found
		else
		{
			anchorlist[i] = new item(0, 0, 0, 0, 0);
			anchorlist[i].pos = 0; // no more anchors flag
		}	
		//i--;  // so i equals the length of fontlist
	}  // end for
	
}  //  end function do_anchor()


// this function copies all the textarea data to strings
// to preserve its code exactly as it is and not change it
function do_textarea(fonttext)
{
	var i = 0;
	var j = 0;
	var n;
	var pos;
	var subfonttext;	
		
	textareatext = fonttext;  // need this to preserve case
	fonttext = fonttext.toUpperCase();
	//document.fm.textbox.value = fonttext;
	
	for (pos = 0; pos != -1; pos)
	{
		pos = fonttext.indexOf("<TEXTAREA", pos);
		//document.fm.textbox.value = document.fm.textbox.value + pos;
		
		if (pos != -1)  // if <TEXTAREA is found
		{
			n = fonttext.indexOf(">", pos);
			pos = fonttext.indexOf("</TEXTAREA>", n);
			if (pos != -1) // if </TEXTAREA> is found
			{	
				textarealist[i] = new item(0, 0, 0, 0, 0);
				textarealist[i].face = textareatext.substring(n+1, pos);
				// notice that we copied the area from textareatext
				// because it has not had its case changed to upper
				//fontlist[i].pos = pos;
				textarealist[i].pos = 1;
			}
		
		
			
			//document.fm.textbox.value = document.fm.textbox.value + i +
			//subfonttext + fontlist[i].font + fontlist[i].color + '.';
			
			pos++;
			i++;
			
		}  // end if <TEXTAREA is found
		else
		{
			textarealist[i] = new item(0, 0, 0, 0, 0);
			textarealist[i].pos = 0; // no more textareas flag
		}	
		//i--;  // so i equals the length of fontlist
	}  // end for
	
}  //  end function do_textarea()


function backtohtml()
{
	document.fm.textbox.value = htmltext;

}  // end function back2html()

function showoptions()
{
	var codetype;
	for (i = 0; i < 4; i++)
	{
		if (document.fm.codetype[i].checked)
			codetype = document.fm.codetype[i].value;
	}
	
	document.getElementById('vboption').style.visibility = "hidden";
	document.getElementById('ipboption').style.visibility = "hidden";
	document.getElementById('smfoption').style.visibility = "hidden";
	
	if (codetype == "vbcode")
		document.getElementById('vboption').style.visibility = "visible";
	else if (codetype == "ipb")
		document.getElementById('ipboption').style.visibility = "visible";
	else if (codetype == "smf")
		document.getElementById('smfoption').style.visibility = "visible";

}  // end function showoptions()


function convert()
{
	var bbcodetext = document.fm.textbox.value;
	var codetype;
	var vbcodeoption;
	var ipbcodeoption;
	for (i = 0; i < 4; i++)
	{
		if (document.fm.codetype[i].checked)
			codetype = document.fm.codetype[i].value;
	}
	document.fm.test.value = codetype;
		
	for (i = 0; i < 3; i++)
	{
		if (document.fm.option[i].checked)
			vbcodeoption = document.fm.option[i].value;
	}
	
	for (i = 0; i < 5; i++)
	{
		if (document.fm.option1[i].checked)
			ipbcodeoption = document.fm.option1[i].value;
	}
	
		for (i = 0; i < 2; i++)
	{
		if (document.fm.option2[i].checked)
			smfcodeoption = document.fm.option2[i].value;
	}
	
	// Check to see if current textbox is the same
	// as what is stored in finishedtext.  If so
	// then revert back to HTML text
	if (finishedtext == bbcodetext)
	{
		document.fm.textbox.value = htmltext;
		bbcodetext = document.fm.textbox.value;
	}		
	// copy the textbox.value into htmltext
	htmltext = document.fm.textbox.value;
	
	do_font(bbcodetext);
	
	bbcodetext = bbcodetext.replace(/<SCRIPT[^>]*>/gi, "<TEXTAREA>");
	bbcodetext = bbcodetext.replace(/<\/SCRIPT>/gi, "</TEXTAREA>");
	
	do_textarea(bbcodetext);
	
	
	
	// maybe they put spaces around the = .  Remove them
	bbcodetext = bbcodetext.replace(/ = /gi, "=");
	// maybe they put quotes surrounding the value
	// so look for =" and ">
	bbcodetext = bbcodetext.replace(/=\"/gi, "=");
	//bbcodetext = bbcodetext.replace(/\">/gi, ">");
	// maybe they put single quote surrounding the value
	// so look for =' and '>
	bbcodetext = bbcodetext.replace(/=\'/gi, "=");
	//bbcodetext = bbcodetext.replace(/\'>/gi, ">");	
	
	bbcodetext = bbcodetext.replace(/<param name=movie[^>]*value=/gi, "<movie=");
	
	bbcodetext = bbcodetext.replace(/ BORDER=[^\'\">]*[\'\">]/gi, "");
	//bbcodetext = bbcodetext.replace(/ BORDER=[^\'>]*\'/gi, " ");
	bbcodetext = bbcodetext.replace(/ TARGET=[^\'\">]*[\'\">]/gi, "");
	//bbcodetext = bbcodetext.replace(/ TARGET=[^\'>]*\'/gi, "");
	bbcodetext = bbcodetext.replace(/ CLASSID=[^\'\">]*[\'\">]/gi, "");
	//bbcodetext = bbcodetext.replace(/ CLASSID=[^\'>]*\'/gi, "");
	bbcodetext = bbcodetext.replace(/ ID=[^\'\">]*[\'\">]/gi, "");
	//bbcodetext = bbcodetext.replace(/ ID=[^\'>]*\'/gi, "");
	bbcodetext = bbcodetext.replace(/ NAME=[^\'\">]*[\'\">]/gi, "");
	//bbcodetext = bbcodetext.replace(/ NAME=[^\'>]*\'/gi, "");
	//bbcodetext = bbcodetext.replace(/ ALIGN=[^\"]*\"/gi, "");
	//bbcodetext = bbcodetext.replace(/ ALIGN=[^\']*\'/gi, "");
	//bbcodetext = bbcodetext.replace(/ ALIGN=[^>]*>/gi, ">");
	bbcodetext = bbcodetext.replace(/ STYLE=[^\'\">]*[\'\">]/gi, "");
	//bbcodetext = bbcodetext.replace(/ STYLE=[^\'>]*\'/gi, "");
	bbcodetext = bbcodetext.replace(/ CLASS=[^\'\">]*[\'\">]/gi, "");
	//bbcodetext = bbcodetext.replace(/ CLASS=[^\'>]*\'/gi, "");
	bbcodetext = bbcodetext.replace(/ ALT=[^\'\">]*[\'\">]/gi, "");
	//bbcodetext = bbcodetext.replace(/ ALT=[^\'>]*\'/gi, "");
	bbcodetext = bbcodetext.replace(/ TITLE=[^\'\">]*[\'\">]/gi, "");
	
	do_anchor(bbcodetext);
	
	//document.fm.textbox.value = bbcodetext;
	//alert('here');
	
	bbcodetext = bbcodetext.replace(/<BR>/gi, "\r");
	bbcodetext = bbcodetext.replace(/<BR(.*?)\/>/gi, "\r"); // added (.*?) 5/30/09
	bbcodetext = bbcodetext.replace(/<P>/gi, "\r\r");
	bbcodetext = bbcodetext.replace(/<P [^>]*>/gi, "\r\r");
	bbcodetext = bbcodetext.replace(/<CODE>/gi, "[code]");
	bbcodetext = bbcodetext.replace(/<\/CODE>/gi, "[/code]");
	bbcodetext = bbcodetext.replace(/<BLOCKQUOTE>/gi, "[quote]");
	bbcodetext = bbcodetext.replace(/<\/BLOCKQUOTE>/gi, "[/quote]");
	bbcodetext = bbcodetext.replace(/<UL[^>]*>/gi, "[list]");
	bbcodetext = bbcodetext.replace(/<\/UL>/gi, "[/list]");
	bbcodetext = bbcodetext.replace(/<OL[^>]*>/gi, "[list=1]");
	bbcodetext = bbcodetext.replace(/<\/OL>/gi, "[/list]");
	bbcodetext = bbcodetext.replace(/<LI>/gi, "[*]");
	//bbcodetext = bbcodetext.replace(/<A HREF=mailto:/gi, "");
	//bbcodetext = bbcodetext.replace(/<A HREF/gi, "[url");
	//bbcodetext = bbcodetext.replace(/<\/A>/gi, "[/url]");

	// *** Jeff!! These two remarked statements are the solution
	// to make a better converter:
	// (.*?) = match any character except new line 0 or more times and remember the match
	// ([\s\S]*?) = match \s any white space char once inclduing \n, \S match any non-white space char, *? any number of times or 0 times
	//bbcodetext = bbcodetext.replace(/<A[\s\S]*?HREF=\"(.*?)\"[\s\S]*?>([\s\S]*?)<\/A>/gi, "[url=$1]$2[\/url]");
	bbcodetext = bbcodetext.replace(/<IMG[\s\S]*?SRC=([\s\S]*?)\"[\s\S]*?>/gi, "[img]$1[\/img]");
	bbcodetext = bbcodetext.replace(/<IMG[\s\S]*?SRC=([\s\S]*?)'[\s\S]*?>/gi, "[img]$1[\/img]");
	
	
	//bbcodetext = bbcodetext.replace(/<IMG SRC=/gi, "[img]");
	//bbcodetext = bbcodetext.replace(/.jpg[^>]*>/gi, ".jpg[/img]");
	//bbcodetext = bbcodetext.replace(/.gif[^>]*>/gi, ".gif[/img]");
	//bbcodetext = bbcodetext.replace(/.bmp[^>]*>/gi, ".bmp[/img]");
	//bbcodetext = bbcodetext.replace(/.png[^>]*>/gi, ".png[/img]");
	
	
	bbcodetext = bbcodetext.replace(/<BIG>/gi, "[b]");
	bbcodetext = bbcodetext.replace(/<\/BIG>/gi, "[/b]");
	bbcodetext = bbcodetext.replace(/<B>/gi, "[b]");
	bbcodetext = bbcodetext.replace(/<\/B>/gi, "[/b]");
	bbcodetext = bbcodetext.replace(/<U>/gi, "[u]");
	bbcodetext = bbcodetext.replace(/<\/U>/gi, "[/u]");
	bbcodetext = bbcodetext.replace(/<I>/gi, "[i]");
	bbcodetext = bbcodetext.replace(/<\/I>/gi, "[/i]");
	
	if (codetype == "bbcode")
	{
		bbcodetext = bbcodetext.replace(/<FONT Face[^\'\">]*[\'\">]/gi, "<FONT");
		//bbcodetext = bbcodetext.replace(/<FONT Face[^\']*\'/gi, "<FONT");
		//bbcodetext = bbcodetext.replace(/<FONT Face[^ ]* /gi, "<FONT ");
		//bbcodetext = bbcodetext.replace(/ FACE=[^ ]*\ /gi, " ");
		//bbcodetext = bbcodetext.replace(/ FACE=[^>]*>/gi, ">");
		bbcodetext = bbcodetext.replace(/ FACE=[^\'\"]*[\'\"]/gi, "");
		//bbcodetext = bbcodetext.replace(/ FACE=[^\']*\'/gi, ">");
		
		//alert(bbcodetext);
		//bbcodetext = bbcodetext.replace(/<\/FONT>/gi, "[/size][/color]");
	}  // end if bbcode
	
	if (codetype == "vbcode")
	{
		bbcodetext = bbcodetext.replace(/<STRONG>/gi, "[highlight]");
		bbcodetext = bbcodetext.replace(/<\/STRONG>/gi, "[/highlight]");
		bbcodetext = bbcodetext.replace(/<TEXTAREA[^>]*>/gi, "[code1]");
		bbcodetext = bbcodetext.replace(/<\/TEXTAREA>/gi, "[/code1]");
		// <FONT STYLE="background-color:yellow> <-- for hightlighting
		
	}  // end if vbcode
	
	if (codetype == "ipb")
	{
		bbcodetext = bbcodetext.replace(/<SUP>/gi, "[sup]");
		bbcodetext = bbcodetext.replace(/<\/SUP>/gi, "[/sup]");
		bbcodetext = bbcodetext.replace(/<SUB>/gi, "[sub]");
		bbcodetext = bbcodetext.replace(/<\/SUB>/gi, "[/sub]");
		bbcodetext = bbcodetext.replace(/<HR[^>]*>/gi, "[hr]");
		bbcodetext = bbcodetext.replace(/<STRIKE>/gi, "[s]");
		bbcodetext = bbcodetext.replace(/<\/STRIKE>/gi, "[/s]");
		bbcodetext = bbcodetext.replace(/<TEXTAREA[^>]*>/gi, "[code3]");
		bbcodetext = bbcodetext.replace(/<\/TEXTAREA>/gi, "[/code3]");
		// <FONT STYLE="background-color:yellow> <-- for hightlighting
		
	}  // end if ipb
	
	
	if (codetype == "bbcode" || codetype == "vbcode" ||
		codetype == "ipb")
	{	
		bbcodetext = bbcodetext.replace(/<PRE[^>]*>/gi, "[code]");
		bbcodetext = bbcodetext.replace(/<\/PRE>/gi, "[/code]");
		
	}  // end if bbcode or vbcode
	
	if (codetype == "bbcode")
	{
		bbcodetext = bbcodetext.replace(/<TEXTAREA[^>]*>/gi, "[code2]");
		bbcodetext = bbcodetext.replace(/<\/TEXTAREA>/gi, "[/code2]");
	}
	
	if (codetype == "smf" || codetype == "vbcode" ||
		codetype == "ipb")
	{
		bbcodetext = bbcodetext.replace(/<FONT Face/gi, "[font");
		bbcodetext = bbcodetext.replace(/ Face=/gi, "][font=");
		//bbcodetext = bbcodetext.replace(/<\/FONT>/gi, "[/font][/size][/color]");
	
		bbcodetext = bbcodetext.replace(/<LEFT>/gi, "[left]");
		bbcodetext = bbcodetext.replace(/<\/LEFT>/gi, "[/left]");
		bbcodetext = bbcodetext.replace(/<CENTER>/gi, "[center]");
		bbcodetext = bbcodetext.replace(/<\/CENTER>/gi, "[/center]");
		bbcodetext = bbcodetext.replace(/<RIGHT>/gi, "[right]");
		bbcodetext = bbcodetext.replace(/<\/RIGHT>/gi, "[/right]");
	
	} // end if smf or vbcode
	
	if (codetype == "ipb" || codetype == "bbcode")
	{
		bbcodetext = bbcodetext.replace(/<STRONG>/gi, "[b]");
		bbcodetext = bbcodetext.replace(/<\/STRONG>/gi, "[/b]");
	}
	
	if (codetype == "ipb" || codetype == "smf")
	{	
		bbcodetext = bbcodetext.replace(/<object[^>]*width=/gi, "[flash=");
		bbcodetext = bbcodetext.replace(/<object[^>]*height=/gi, "[flash=");
		bbcodetext = bbcodetext.replace(/\" height=/gi, ",");
		bbcodetext = bbcodetext.replace(/\' height=/gi, ",");
		bbcodetext = bbcodetext.replace(/\" width=/gi, ",");
		bbcodetext = bbcodetext.replace(/\' width=/gi, ",");
		bbcodetext = bbcodetext.replace(/ width=/gi, ",");
		bbcodetext = bbcodetext.replace(/ height=/gi, ",");
		bbcodetext = bbcodetext.replace(/\<movie=/gi, "");	
		//bbcodetext = bbcodetext.replace(/<embed src=/gi, "");
		bbcodetext = bbcodetext.replace(/.swf[^>]*>/gi, ".swf[/flash]");
	} // end if ipb or smf
	
	if (codetype == "smf")
	{
		bbcodetext = bbcodetext.replace(/<TEXTAREA[^>]*>/gi, "[code4]");
		bbcodetext = bbcodetext.replace(/<\/TEXTAREA>/gi, "[/code4]");
		// because smf does not have ordered list <OL> support
		bbcodetext = bbcodetext.replace(/\[list=1\]/gi, "[list]");
		//bbcodetext = bbcodetext.replace(/<STRONG>/gi, "[glow=red,2,50]");
		//bbcodetext = bbcodetext.replace(/<\/STRONG>/gi, "[/glow]");
		bbcodetext = bbcodetext.replace(/<STRONG>/gi, "[b]");
		bbcodetext = bbcodetext.replace(/<\/STRONG>/gi, "[/b]");
		
		bbcodetext = bbcodetext.replace(/<STRIKE>/gi, "[s]");
		bbcodetext = bbcodetext.replace(/<\/STRIKE>/gi, "[/s]");
		bbcodetext = bbcodetext.replace(/<MARQUEE[^>]*>/gi, "[move]");
		bbcodetext = bbcodetext.replace(/<\/MARQUEE>/gi, "[/move]");
		bbcodetext = bbcodetext.replace(/<PRE>/gi, "[pre]");
		bbcodetext = bbcodetext.replace(/<\/PRE>/gi, "[/pre]");
		bbcodetext = bbcodetext.replace(/<HR[^>]*>/gi, "[hr]");

		bbcodetext = bbcodetext.replace(/<TABLE[^>]*>/gi, "[table]");
		bbcodetext = bbcodetext.replace(/<TR[^>]*>/gi, "[tr]");
		bbcodetext = bbcodetext.replace(/<TD[^>]*>/gi, "[td]");
		bbcodetext = bbcodetext.replace(/<TH[^>]*>/gi, "[td]");
		bbcodetext = bbcodetext.replace(/<\/TABLE>/gi, "[/table]");
		bbcodetext = bbcodetext.replace(/<\/TR>/gi, "[/tr]");
		bbcodetext = bbcodetext.replace(/<\/TD>/gi, "[/td]");
		bbcodetext = bbcodetext.replace(/<\/TH>/gi, "[/td]");
		bbcodetext = bbcodetext.replace(/<SUP>/gi, "[sup]");
		bbcodetext = bbcodetext.replace(/<\/SUP>/gi, "[/sup]");
		bbcodetext = bbcodetext.replace(/<SUB>/gi, "[sub]");
		bbcodetext = bbcodetext.replace(/<\/SUB>/gi, "[/sub]");
		bbcodetext = bbcodetext.replace(/<TT>/gi, "[tt]");
		bbcodetext = bbcodetext.replace(/<\/TT>/gi, "[/tt]");
		bbcodetext = bbcodetext.replace(/<ABBR TITLE=/gi, "[acronym=");
		bbcodetext = bbcodetext.replace(/<\/ABBR>/gi, "[/acronym]");
		bbcodetext = bbcodetext.replace(/<ACRONYM TITLE=/gi, "[acronym=");
		bbcodetext = bbcodetext.replace(/<\/ACRONYM>/gi, "[/acronym]");
	} // end if smf	
	else
	{
		// table tags for everyone but smf
	
		bbcodetext = bbcodetext.replace(/<TR[^>]*>/gi, "\r");
		bbcodetext = bbcodetext.replace(/<TD[^>]*>/gi, " ");
		bbcodetext = bbcodetext.replace(/<TH[^>]*>/gi, " ");
	
		bbcodetext = bbcodetext.replace(/<\/TR>/gi, " ");
		bbcodetext = bbcodetext.replace(/<\/TD>/gi, " ");
		bbcodetext = bbcodetext.replace(/<\/TH>/gi, " ");
	}		
	// font size and color tags
	bbcodetext = bbcodetext.replace(/<FONT SIZE=/gi, "[size=");
	bbcodetext = bbcodetext.replace(/<FONT color=/gi, "[color=");
	// maybe they put the size and color in one font statement
	// so look for SPACE color and SPACE size
	bbcodetext = bbcodetext.replace(/ color=/gi, "][color=");
	bbcodetext = bbcodetext.replace(/ size=/gi, "][size=");
		
	// The following for loop is for /FONT tags
	// we are removing global search because we have to remove
	// each </FONT> tag one at a time because some are closing
	// [color], [size], or [font]
	var fonttag;
	for (i = 0; fontclose[i].font != 0; i++)
	{
		fonttag = "";

		if (fontclose[i].color == 1)
			fonttag = fonttag + "[/color]";
		if (fontclose[i].size == 1)
			fonttag = fonttag + "[/size]";
		if (codetype == "smf" || codetype == "vbcode" ||
			codetype == "ipb")
			if (fontclose[i].face == 1)
				fonttag = fonttag + "[/font]";
		
		bbcodetext = bbcodetext.replace(/<\/FONT>/i, fonttag);
	}  // end for
		
	// The following for loop is to search anchor tags
	// to have the right closing for mailto or http.
	// It also does </A> tags
	// we remove the global case in the replace function
	for (i = 0; anchorlist[i].pos != 0; i++)
	{
		if (anchorlist[i].pos == 2)  // if URL
		{
			bbcodetext = bbcodetext.replace(/<A HREF/i, "[url");
			bbcodetext = bbcodetext.replace(/<\/A>/i, "[/url]");
		}  // end if URL
		if (anchorlist[i].pos == 1)  // if mailto:
		{
			if (codetype == "bbcode")
				bbcodetext = bbcodetext.replace(/<A HREF[^<]*<\/A>/i, anchorlist[i].face);	
			else  // if codetype is smf or vbcode
			{
				bbcodetext = bbcodetext.replace(/<A HREF=MAILTO:/i, "[email=");
				bbcodetext = bbcodetext.replace(/<\/A>/i, "[/email]");
			}
		}  // end if mailto:
	}  // end for loop for anchor tags
						
	// This replaces all remaining HTML code between < and >
	//bbcodetext = htmltext.replace(/<&#91;^>&#93;*>/g, "");
	bbcodetext = bbcodetext.replace(/<[^>]*>/g, "");

	// This will convert all > into ] because we left
	// some open up top such as removing <font size
	// and <UL
	bbcodetext = bbcodetext.replace(/>/g, "]");
	bbcodetext = bbcodetext.replace(/\'>/g, "]");
	bbcodetext = bbcodetext.replace(/\">/g, "]");
	bbcodetext = bbcodetext.replace(/\']/g, "]");
	bbcodetext = bbcodetext.replace(/\"]/g, "]");
	
	// The following for loop searches through all textareas.
	// It takes place after all < > tags have been removed
	// because it needs to go back in and put all the data
	// back into the <TEXTAREA></TEXTAREA> tags unchanged.
	// For that we search for [code1] & [code2]
	for (i = 0; textarealist[i].pos != 0; i++)
	{
		if (textarealist[i].pos == 1)  // if TEXTAREA
		{
			//alert("hi");
			// turn textarea to Vb Codes [php] tag
			if (vbcodeoption == "php")
				bbcodetext = bbcodetext.replace(/\[code1\][\w\W]*?\[\/code1\]/i, "[php]" + textarealist[i].face + "[/php]");
			if (vbcodeoption == "code")
				bbcodetext = bbcodetext.replace(/\[code1\][\w\W]*?\[\/code1\]/i, "[code]" + textarealist[i].face + "[/code]");
			if (vbcodeoption == "html")
				bbcodetext = bbcodetext.replace(/\[code1\][\w\W]*?\[\/code1\]/i, "[html]" + textarealist[i].face + "[/html]");	
			if (ipbcodeoption == "sql")
				bbcodetext = bbcodetext.replace(/\[code3\][\w\W]*?\[\/code3\]/i, "[sql]" + textarealist[i].face + "[/sql]");
			if (ipbcodeoption == "code")
				bbcodetext = bbcodetext.replace(/\[code3\][\w\W]*?\[\/code3\]/i, "[code]" + textarealist[i].face + "[/code]");
			if (ipbcodeoption == "html")
				bbcodetext = bbcodetext.replace(/\[code3\][\w\W]*?\[\/code3\]/i, "[html]" + textarealist[i].face + "[/html]");	
			if (ipbcodeoption == "php")
				bbcodetext = bbcodetext.replace(/\[code3\][\w\W]*?\[\/code3\]/i, "[php]" + textarealist[i].face + "[/php]");	
			if (ipbcodeoption == "xml")
				bbcodetext = bbcodetext.replace(/\[code3\][\w\W]*?\[\/code3\]/i, "[xml]" + textarealist[i].face + "[/xml]");	
			if (smfcodeoption == "code")
				bbcodetext = bbcodetext.replace(/\[code4\][\w\W]*?\[\/code4\]/i, "[code]" + textarealist[i].face + "[/code]");	
			if (smfcodeoption == "php")
				bbcodetext = bbcodetext.replace(/\[code4\][\w\W]*?\[\/code4\]/i, "[php]" + textarealist[i].face + "[/php]");	
			
			// turn textarea to bbcode [code] tag
			bbcodetext = bbcodetext.replace(/\[code2\][\w\W]*?\[\/code2\]/i, "[code]" + textarealist[i].face + "[/code]");
		}  // end if TEXTAREA
	}  // end for loop for textarea tags
	
	// put converted text into textbox
	document.fm.textbox.value = bbcodetext;
	
	// put the finsished text into finishedtext variable
	finishedtext = document.fm.textbox.value;
	
} // end function convert()


