", ""];
options=[whizzyTranslate("Choose style")+":", whizzyTranslate("Paragraph"), whizzyTranslate(h)+" 1 ", whizzyTranslate(h)+" 2 ", whizzyTranslate(h)+" 3 ", whizzyTranslate(h)+" 4 ", whizzyTranslate(h)+" 5 ", whizzyTranslate(h)+" 6", whizzyTranslate("Address"), whizzyTranslate("Fixed width")];
}else if (select == 'fontname') {
values=["Arial, Helvetica, sans-serif", "Arial, Helvetica, sans-serif","'Arial Black', Helvetica, sans-serif", "'Comic Sans MS' fantasy", "Courier New, Courier, monospace", "Georgia, serif", "Impact,sans-serif","'Times New Roman', Times, serif", "'Trebuchet MS',sans-serif", "Verdana, Arial, Helvetica, sans-serif"];
options=[whizzyTranslate("Font")+":", "Arial","Arial Black", "Comic", "Courier", "Georgia", "Impact","Times New Roman", "Trebuchet","Verdana"]
}else if(select == 'fontsize'){
values=["3", "1", "2", "3", "4", "5", "6", "7"];
options=[whizzyTranslate("Font size")+":", "1 "+whizzyTranslate("Small"), "2", "3", "4", "5", "6", "7 "+whizzyTranslate("Big")]
}else{
values=vals[select];
options=opts[select]
}
writeToWhizzy('\n")
}
function tagButs(){
writeToWhizzy('")\' value="H1" title="">")\' value="H2" title="">")\' value="H3" title="">")\' value="H4" title="">")\' value="P" title="
">")\' value="S" title="" style="font-weight:bold">")\' value="E" title="" style="font-style:italic;">")\' value="•—" title="">")\' value="@" title="">")\' value="[♥]" title="
">")\' value="←" title="
">');
}
function xC(c,o){return oW.document.execCommand(c,false,o)}
function makeSo(cm,op){//format selected text or line in the whizzy
hideDialogs();
oW.focus();
if(dobut[cm]) {insHTML(dobut[cm]); return;}
if (/Firefox/.test(navigator.userAgent)) {xC("styleWithCSS",cm=="hilite")} //no spans for bold, italic, ok hilite
if(cm=="justify"){cm="full"}
if("leftrightcenterfull".indexOf(cm)!=-1){cm="justify"+cm}
else if(cm=="number"){cm="insertorderedlist"}
else if(cm=="bullet"){cm="insertunorderedlist"}
else if (cm=="rule"){cm="inserthorizontalrule"}
switch(cm){
case "color":whizzyGetId('cf_cmd'+idTa).value="forecolor"; if(textSel()){whizzyShowElement('COLOR_FORM'+idTa)} break;
case "hilite":whizzyGetId('cf_cmd'+idTa).value=cm; if(textSel()){whizzyShowElement('COLOR_FORM'+idTa)} break;
case "image":doImage(); break;
case "link":doLink(); break;
case "html":showHTML(); break;
case "table":doTable(); break;
case "delete_row":doRow('delete','0'); break;
case "add_row_above":doRow('add','0'); break;
case "add_row_below":doRow('add','1'); break;
case "delete_column":doCol('delete','0'); break;
case "add_column_before":doCol('add','0'); break;
case "add_column_after":doCol('add','1'); break;
case "table_in_cell":hideDialogs(); whizzyShowElement('TABLE_FORM'+idTa); break;
case "clean":cleanUp(); break;
case "spellcheck":spellCheck(); break;
case "fullscreen":fullscreen(); break;
default:xC(cm,op); break;
}
oW.focus();
}
function doSelect(selectname) { //select on toolbar used - do it
var idx=whizzyGetId(selectname).selectedIndex;
var selected=whizzyGetId(selectname).options[idx].value;
whizzyGetId(selectname).selectedIndex=0;
selectname=selectname.replace(idTa,"");
if (" _formatblock_fontname_fontsize".indexOf('_'+selectname) > 0) {
var cmd=selectname;
oW.focus();
xC(cmd,selected);
} else {
insHTML(selected);
}
oW.focus();
}
function vC(colour){// view Color
if(!colour){colour=whizzyGetId('cf_color'+idTa).value}
whizzyGetId('cPrvw'+idTa).style.backgroundColor=colour;
whizzyGetId('cf_color'+idTa).value=colour
}
function sC(color) { //set Color
hideDialogs();
var cmd=whizzyGetId('cf_cmd'+idTa).value;
if(!color){color=whizzyGetId('cf_color'+idTa).value}
if(rng){rng.select();}
if(cmd=="hilite"){try{xC("hilitecolor",color)}catch(e){xC("backcolor",color)}}
else{xC(cmd,color)}
oW.focus();
}
function doLink(){
if(textSel()){
if(papa.nodeName=='A'){whizzyGetId("lf_url"+idTa).value=papa.href}
whizzyShowElement('LINK_FORM'+idTa)
}
}
function insertLink(url) {
if (rng){rng.select()}
var a,i,mk='http://whizzy.wig/mark',
URL=url ? url : whizzyGetId("lf_url"+idTa).value;
if (URL.replace(/ /g,"")===""){xC('Unlink',null)}else{
xC('CreateLink',mk);
a=oW.document.body.getElementsByTagName("A");
for (i=0;i0?papa.border:0;
whizzyGetId("if_margin"+idTa).value=papa.style.margin?papa.style.margin:papa.hspace>0?papa.hspace:0;
}
whizzyShowElement('IMAGE_FORM'+idTa);
}
function insertImage(URL, side, border, margin, alt) { // insert image as specified
hideDialogs();
if(!URL){URL=whizzyGetId("if_url"+idTa).value}
if (URL) {
if (!alt){alt=whizzyGetId("if_alt"+idTa).value ? whizzyGetId("if_alt"+idTa).value: URL.replace(/.*\/(.+)\..*/,"$1")}
img='
';
insHTML(img)
}
}
function doTable(){ //show table controls if in a table, else make table
if(trail && trail.indexOf('TABLE') > 0){whizzyShowElement('TABLE_CONTROLS'+idTa)}
else{whizzyShowElement('TABLE_FORM'+idTa)}
}
function doRow(toDo,below) { //insert or delete a table row
var pa=papa,tRow,tCols,newRow,newCell;
while(pa.tagName != "TR"){pa=pa.parentNode}
tRow=pa.rowIndex;
tCols=pa.cells.length;
while(pa.tagName != "TABLE"){pa=pa.parentNode}
if(toDo=="delete"){pa.deleteRow(tRow)}
else{
newRow=pa.insertRow(tRow+parseInt(below,10));//1=below 0=above
for(i=0;i0)&&(cols>0)){
table='';
for (i=1;i<=rows;i++){
table=table+"";
for (j=1;j<=cols;j++){
if (i==1){
if(head=="1"){table += "Title"+j+" | "}//Title1 Title2 etc.
else{table+=""+j+" | "}
}
else if(j==1){table+=""+i+" | "}
else{table += "# | "}
}
table+ "
";
}
table+="
";
insHTML(table)
}
}
function doWin(URL) { //popup for browse function
ppw=wn.open(URL,'popWhizz','toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=640,height=480,top=100');
ppw.focus();
}
function spellCheck(){//check spelling with ieSpell if available
try {
var axo=new ActiveXObject("ieSpell.ieSpellExtension");
axo.CheckAllLinkedDocuments(document);
} catch(e) {
if(e.number==-2146827859) {
if(confirm("ieSpell is not installed on your computer. \n Click [OK] to go to download page."))
{wn.open("http://www.iespell.com/download.php","DownLoad")}
}else{
alert("Error Loading ieSpell: Exception " + e.number)
}
}
}
function getWinSize(){//Returns window width,height
var winW=window.innerWidth?window.innerWidth:document.documentElement.clientWidth?document.documentElement.clientWidth:document.body.clientWidth;
var winH=window.innerHeight?window.innerHeight:document.documentElement.clientHeight?document.documentElement.clientHeight:document.body.clientHeight;
return {w:winW,h:winH}
}
function fullscreen() { //Enable or disable fullscreen
var container=whizzyGetId("CONTAINER"+idTa);
if(!isFullscreen()) {
if(document.body.style.overflow){document.body.style.overflow="hidden";}else{document.documentElement.style.overflow="hidden";}
document.body.style.visibility="hidden";
container.style.visibility="visible"
container.style.position="absolute";
container.style.top=(window.pageYOffset?window.pageYOffset:document.body.scrollTop?document.body.scrollTop:document.documentElement.scrollTop) + "px";
container.style.left="0";
container.style.width=getWinSize().w+"px";
container.style.height=getWinSize().h+"px";
whizzyGetId("whizzy"+idTa).style.backgroundColor="#fff";
whizzyGetId("whizzy"+idTa).style.height=getWinSize().h-whizzyGetId("CONTROLS"+idTa).offsetHeight+"px";
}
else {
if(document.body.style.overflow){document.body.style.overflow="visible";}else{document.documentElement.style.overflow="";}
document.body.style.visibility="visible";
container.style.position="relative";
container.style.top=whizzyGetId(idTa).style.top?whizzyGetId(idTa).style.top:"0px";
container.style.left=whizzyGetId(idTa).style.left?whizzyGetId(idTa).style.left:"0px";
container.style.width=taOrigSize[idTa].w;
container.style.height="auto";
whizzyGetId("whizzy"+idTa).style.backgroundColor="transparent";
whizzyGetId("whizzy"+idTa).style.height=taOrigSize[idTa].h;
}
}
function getDir() { //Detect current whizzywig directory
var base=location.href,e=document.getElementsByTagName('base'),i;
for(i=0;i,...
h=h.replace(/<(\/?)strong([^>]*)>/gi,"<$1B$2>").replace(/<(\/?)em>/gi,"<$1I>");
return h
}
function tidyH(d){//attempt valid xhtml
function lc(str){return str.toLowerCase()}
function qa(str){return str.replace(/(\s+\w+=)([^"][^>\s]*)/gi,'$1"$2"');}
function sa(str){return str.replace(/("|;)\s*[A-Z-]+\s*:/g,lc);}
var sz=['medium','xx-small','x-small','small','medium','large','x-large','xx-large'],
fs=d.getElementsByTagName("FONT"),i,ih;
for (i=0;i]*)/gi,"$1span$2")
.replace(/(<\/?)[B](\s+[^>]*)?>/gi, "$1strong$2>")
.replace(/(<\/?)[I](\s+[^>]*)?>/gi, "$1em$2>")
.replace(/<\/?(COL|XML|ST1|SHAPE|V:|O:|F:|F |PATH|LOCK|IMAGEDATA|STROKE|FORMULAS)[^>]*>/gi, "")
.replace(/\bCLASS="?(MSOw*|Apple-style-span)"?/gi,"")
.replace(/<[^>]+=[^>]+>/g,qa) //quote all atts
.replace(/<(TABLE|TD|TH|COL)(.*)(WIDTH|HEIGHT)=["'0-9A-Z]*/gi, "<$1$2")//no fixed size tables (%OK) [^A-Za-z>]
.replace(/<([^>]+)>\s*<\/\1>/g, "")//empty tag
.replace(/><(H|P|D|T|BLO|FOR|IN|SE|OP|UL|OL|LI|SC)/gi,">\n<$1")//newline adjacent blocks
.replace(/(
)([^\r\n])/gi,"$1\n$2")//newline on BR
.replace(/([^\n])<(P|DIV|TAB|FOR)/gi,"$1\n\n<$2") //add white space
.replace(/([^\n])<\/(UL|OL|DL|DIV|TAB|FOR)/gi,"$1\n$2") //end block
.replace(/([^\n])(<\/TR)/gi,"$1\n $2") //end row
.replace(/\n<(BLO|LI|OP|TR|IN|DT)/gi,"\n <$1") //indent..
.replace(/\n<(TD|TH|DD)/gi,"\n <$1") //..more
.replace(window.location.href+'#','#') //IE anchor bug
.replace(/<(IMG|INPUT|BR|HR|LINK|META)([^>]*)>/gi,"<$1$2 />") //self-close tags
.replace(/(<\/?[A-Z]*)/g,lc) //lowercase tags...
.replace(/STYLE="[^"]*"/gi,sa); //lc style atts
return ih
}
function kb_handler(e){//keyboard controls for Moz
var cmd=false, prm=false,k;
if(e && (e.ctrlKey && e.keyCode==e.DOM_VK_V)||(e.shiftKey && e.keyCode==e.DOM_VK_INSERT))
{setTimeout('cleanUp()',10)}
else if(e && e.keyCode==13 && !e.shiftKey &&papa.nodeName=="BODY"){cmd="formatblock"; prm=""}
else if(e && e.ctrlKey){
k=String.fromCharCode(e.charCode).toLowerCase();
cmd=(k=='b')?'bold':(k=='i')?'italic':(k=='l')?'link':(k=='m')?'image':false;
}
if(cmd){
makeSo(cmd,prm);
e.preventDefault();//stop event bubble
e.stopPropagation()
}
}
function doTag(html){//insert HTML into textarea
var url,close='',before,after;
if(!html){html=prompt("Enter some HTML or text to insert:", "")}
whizzyGetId(idTa).focus();
if(html==''){
url=prompt("Link address:","http://");
html=''
}
if(html=='
'){
url=prompt("Address of image:","http://");
var alt=prompt("Description of image");
html ='
';
}
if(html.indexOf('<')===0 && html.indexOf('br') != 1 && html.indexOf('img') != 1)
{close=html.replace(/<([a-z0-6]+).*/,"<\/$1>")}
if(html != '' && html != ''){close+='\n'}
if (document.selection){
sel=document.selection.createRange();
sel.text=html+sel.text+close
}else{
before=whizzyGetId(idTa).value.slice(0,whizzyGetId(idTa).selectionStart);
sel=whizzyGetId(idTa).value.slice(whizzyGetId(idTa).selectionStart,whizzyGetId(idTa).selectionEnd);
after=whizzyGetId(idTa).value.slice(whizzyGetId(idTa).selectionEnd);
whizzyGetId(idTa).value =before+html+sel+close+after
}
whizzyGetId(idTa).focus()
}
function insHTML(html){//insert HTML at current selection
if(!html){html=prompt(whizzyTranslate("Enter some HTML or text to insert:"), "")}
if(html.indexOf('js:')===0){
try{eval(html.replace(/^js:/,''))} catch(e){}
return
}
whereAmI();
try {xC("inserthtml",html+sel)}
catch(e){if (document.selection) {
if(papa&&papa.nodeName=='IMG'){papa.outerHTML=html+papa.outerHTML;}
else if(rng){rng.select(); rng.pasteHTML(html+rng.htmlText)}
} }
}
function whereAmI(e){
if(!e){e=wn.event}
var mu=e&&e.type=='mouseup',pa,id;
if (msIE){//Issue 11
oW.document.getElementsByTagName("body")[0].focus();
sel=oW.document.selection;
rng=sel.createRange();
papa=mu?e.srcElement:(sel.type == "Control")?rng.item(0):rng.parentElement();
}else{
sel=oW.getSelection();
// FIXED: if sel is null then controls are not working..!!
if(sel == null) {
sel = '';
}
sn=sel.anchorNode;
papa=mu?e.target:(sn.nodeName == '#text')?sn.parentNode:sn;
}
pa=papa;
trail=papa.nodeName;
while(!pa.nodeName.match(/^(HTML|BODY)/) && pa.className!="wzCtrl"){
pa=pa.parentNode;
trail=pa.nodeName+'>'+trail
}
if(pa.className=="wzCtrl"){trail=sel=rng=null}
id=pa.nodeName=="HTML" ? pa.getElementsByTagName("BODY")[0].id : pa.id.replace("CONTROL","");
setCurrentWhizzy(id);
wn.status=id+":"+trail;
if(trail.indexOf('TABLE')>0){whizzyShowElement('TABLE_CONTROLS'+idTa)}else{whizzyHideElement('TABLE_CONTROLS'+idTa)}
}
function setCurrentWhizzy(id){//set current whizzy
if(id==="" || whizzies.join().indexOf(id)=='-1'){return}
if (id!=idTa){
idTa=id;
try {oW=whizzyGetId("whizzy"+id).contentWindow;} catch(e){alert('set current: '+id)}
if(oW){if(oW.focus){oW.focus()}wn.status=oW.document.body.id}
}
}
function writeToWhizzy(str,finalize){//write to whizzy container
if(!writeToWhizzy.temp){writeToWhizzy.temp=""}
writeToWhizzy.temp+=str;
if(finalize){
whizzyGetId("CONTAINER"+idTa).innerHTML+=writeToWhizzy.temp;
writeToWhizzy.temp=""
}
}
function textSel(){if(sel && sel.type != "None" && sel.type != "Caret"){return true}else{alert(whizzyTranslate("Select some text first")); return false}}
function whizzyShowElement(id){whizzyGetId(id).style.display='block'}//show element
function whizzyHideElement(id){whizzyGetId(id).style.display='none'}//hide element
function whizzyGetId(id){return document.getElementById(id)}//get element by ID
function whizzyTranslate(key){return (wn.language && language[key]) ? language[key] : key;}//translation