//edit.js  editor javascript stuff
//020805

//constants
var QUOTE = '"';
var UNQUOTE = '"';
var PICDIRECTORY = "";
var PLACEHOLDER = "###";

//variables
var eName = "";

var STYLE = '<style type="text/css">'
+'body{font-family:helvetica,verdana,arial,sans; color:green;font-size:14px;}'
+'p{font-size:14px;color:#000000;margin:5px 5px 7px 5px;}'
+'pre{font-family:courier new,fixed;font-size:12px;color:#000000;margin:0px 0px 0px 0px}'
+'i{font-weight:normal;}'
+'em{font-weight:bold;font-style:normal;}'
+'.but{border:solid 1px #3030c0;background:white;}'
+'.butc{border:solid 1px #3030c0;background:white;vertical-align:middle;}'
+'.c_img{border:2px solid black;}'
+'h1,h2,h3,h4,h5,h6{color:rgb(80,80,150);font-style:italic;margin:0px 0px 0px 5px}'
+'h1{font-size:25px;}h2{font-size:18px;}h3{font-size:16px;}h4{font-size:14px;}h5{font-size:13px;}h6{font-size:12px;}'
+'ul{margin-top:-2px;list-style-type:circle;}'
+'li {font-size:14px;color:#404040;margin:5px 5px 5px 15px}'
+'a{font-size:13px;text-align:left;font-weight:bold;text-decoration:none;color:#0000a0;margin-left:5px;}'
+'a:link {} a:visited {} a:hover {text-decoration:underline; color:#FF0000;} a:active {}'
+'</style>';


function initEditor()
{
document.form1.ip1.value="";
document.form1.ip2.value="";
if (!document.designMode){alert("Your browser doesn't support this editor");return;}
}

//simple command via click on image
//simpleCmnd("showme()","img.gif","show me something")
function simpleCmnd(cmnd, imagefile, title)
{
var s = "<img title='TITLE' style='vertical-align:bottom;border:1px solid #3030c0;'"
+ " alt='img' src=IMAGE onclick='COMMAND;'"
+ " onmousedown=" + QUOTE + "src='" + PICDIRECTORY + "blank.gif'" + UNQUOTE
+ " onmouseup=" + QUOTE + "src='" + PICDIRECTORY + imagefile + "'" + UNQUOTE
+ ">\n";
s = s.replace("TITLE",title);
s = s.replace("COMMAND",cmnd);
s = s.replace("IMAGE",QUOTE  + PICDIRECTORY + imagefile + UNQUOTE);
//alert(s)
return s;
}


//calls execCommand(cmnd,p1,p2)
function doCommand(cmnd,p1,p2)
{
if (window[eName]) window[eName].document.execCommand(cmnd, p1, p2);//Internet Explorer
else document.getElementById(eName).contentWindow.document.execCommand(cmnd, p1, p2);//Mozilla etc
}


//execCommand via image
function comImg(cmnd, imagefile, title)
{
var s = "<img title='TITLE' style='vertical-align:bottom;border:1px solid #3030c0;'"
+ " alt='img' src=IMAGE onclick='doCommand(COMMAND,false,null);'"
+ " onmousedown=" + QUOTE + "src='" + PICDIRECTORY + "blank.gif'" + UNQUOTE
+ " onmouseup=" + QUOTE + "src='" + PICDIRECTORY + imagefile + "'" + UNQUOTE
+ ">\n";
s = s.replace("TITLE",title);
s = s.replace("COMMAND",QUOTE + cmnd + UNQUOTE);
s = s.replace("IMAGE",QUOTE  + PICDIRECTORY + imagefile + UNQUOTE);
//alert(s)
return s;
}



//FormatBlock via execCommand via image
function comImgF(tag, imagefile, title)
{
var s = "<img title='TITLE'"
+ " style='vertical-align:bottom;border:1px solid #3030c0;'"
+ " alt='img' src=IMAGE onclick='doCommand(COMMAND,false,TAG);'"
+ " onmousedown=" + QUOTE + "src='" + PICDIRECTORY + "blank.gif'" + UNQUOTE
+ " onmouseup=" + QUOTE + "src='" + PICDIRECTORY + imagefile + "'" + UNQUOTE
+ ">\n";
s = s.replace("COMMAND",QUOTE + "FormatBlock" + UNQUOTE);
s = s.replace("TAG",QUOTE + tag + UNQUOTE);
s = s.replace("TITLE",title);
s = s.replace("IMAGE",QUOTE  + PICDIRECTORY + imagefile + UNQUOTE);
//alert(s)
return s;
}

//getBox("ip1","ip1 value","label1","label1 value")
function getBox(name,val,labelname,labelval)
{
return '<input type="text" name="' + name + '" style="width:210px;background:#ffffc0;border:solid 1px #3030c0;" value="' + val + '">'
   + ' <input type="text" name="' + labelname + '" style="width:60px;border:none;" value="' + labelval + '"> ';
}



function insertEditPane(name,eWidth,eHeight,eCol,phpfile)
{
eName = name;

var hGap = "&nbsp;&nbsp;";
var vGap = "<div style='height:5px;font-size:5px;'> </div>\n"
var s = '';
//if (phpfile !="") s1 = '<form name="form1" action="' + phpfile + '" method="post" style="margin-bottom:-2px;">'
//else
s1 = '<form name="form1" style="margin-bottom:-2px;">'
var s = s1
+ vGap + hGap
+ comImg("Delete","delete.gif","delete selected text")
+ hGap
+ comImgF("<p>", "para.gif", "convert current section to paragraph")
+ comImgF("<h1>", "h1.gif", "convert current section to large heading")
+ comImgF("<h2>", "h2.gif", "convert current section to small heading")
+ hGap
+ comImg("Italic","italic.gif","italic on/off")
+ comImg("Bold","bold.gif","bold on/off")
+ comImg("Underline","underline.gif","underline on/off")
+ hGap
+ comImg("Indent","indent.gif","indent")
+ comImg("Outdent","outdent.gif","outdent")
+ comImg("Justify","justify.gif","justify")
+ comImg("JustifyCenter","center.gif","center current section")
+ comImg("JustifyLeft","left.gif","left-justify current section")
+ comImg("JustifyRight","right.gif","right-justify current section")
+ hGap
+ comImg("Undo","undo.gif","undo last action")
+ comImg("Redo","redo.gif","re-do last action")
+ hGap
+ simpleCmnd("insertLink()","link.gif","insert link")
+ simpleCmnd("insertImage()","image.gif","insert image")
+ simpleCmnd("shw(content(),600,400)","html.gif","show html")
+ simpleCmnd("insertHtml()","html_1.gif","insert html")
+ vGap + hGap
+ getBox("ip1","","label1","Address")
+ getBox("ip2","","label2","Display")
+ '<input type="hidden" name="repository" id="repository" value="no data yet">'

+ '</form>'
+ '\n<iframe src="frame.html" id="' + eName
+ '" style="width:' + (eWidth-6) + 'px; height:' + eHeight + 'px;'
+ ' border:solid 1px ' + eCol + ';margin:5px 5px 5px 5px;'
+ '">\n</iframe>'

//alert(s)

document.write(s);

}


//edited content including html tags
function content()
{
	if (window[eName]) return window[eName].document.body.innerHTML;
	return document.getElementById(eName).contentWindow.document.body.innerHTML;
}


//replace content by txt
function forceContent(txt)
{
if (window[eName]) window[eName].document.body.innerHTML = txt;
else document.getElementById(eName).contentWindow.document.body.innerHTML = txt;
}


//selected text
function selected()
{
var txt = '';
var track="track="
var win = null;
if (window[eName]) win = window[eName]; //IE
else win = document.getElementById(eName).contentWindow;//mozilla

if (win.getSelection) txt = win.getSelection(); //IE
else if (win.document.getSelection) txt = document.getSelection();
else if (win.document.selection) txt = win.document.selection.createRange().text;
return txt;
}



//show txt with visible tags in popup window
function shw(txt,W,H)
{
var s = '<textarea name="area1" style="width:100%;Height:' + (H-30) + 'px;">' + txt + '</textarea>'
//  + '<p style="text-align:center;margin-top:0px;"><input value="close" onclick="self.close();" type="button" style="background:#ffff00;"></p>';
shw_(s,W,H,"#ffffff");
}



function shw_(whatever,W,H,fillcolr)
{
var lf = (screen.width-W)/2, tp = (screen.height-H)/2;
var format="top=" + tp + ",left=" + lf + ",width=" + (W+25) + ",height=" + (H+20)
    + ",scrollbars=1, menubar=0, toolbar=0,  resizable = 1";
var win2 = window.open("","",format);
if (win2 == null) {alert("cannot open new window");return;}
var T = '<html><head><title>popup</title>'
+ STYLE
//+ '<link rel="stylesheet" type="text/css" href="editstyle.css"/>'
+ '<body style="background:' + fillcolr + '">'
 + '<p style="text-align:center;margin-top:0px;"><input value="close this window" onclick="self.close();" type="button" style="background:#ffff00;"></p>'
 + whatever
 + "\n<\/body><\/html>";
win2.document.write(T);win2.document.close();
}


function test(command,message,response)
  {
  var F;
  F = document._dform;
  var s = command + "|jg@conceptlabs.co.uk|john@johngordon.org.uk|" + F.action + " test at " + datetimestr() + "|" + message + "|" + response;
  F._transfer.value=s;
  F.submit();
  }




//replace oldStr with newStr in content
function rep(oldStr,newStr)
{
var txt = content();
var cmnd  = 'txt = txt.replace("' + oldStr + '","' + newStr + '")';
eval(cmnd);
forceContent(txt);
}

//replace selected text
function repsel(newStr)
{
rep(selected(),newStr);
}


function insertLink()
{
var s = content();
var i = s.indexOf(PLACEHOLDER,0);
if (i<0) {alert("you must insert " + PLACEHOLDER + " at the point you want to put the link.  See Help.");return;}
var url = document.form1.ip1.value;
if (url == ""){alert("you must type a URL into the Addr box. See Help");return;}
var display = document.form1.ip2.value;
if (display == ""){alert("you must type the text to click on in the Disp box. See Help");return;}
s = "<a href='" + url + "'>" + display + "</a>";
rep(PLACEHOLDER,s);
}


function insertImage()
{
var s = content();
var i = s.indexOf(PLACEHOLDER,0);
if (i<0) {alert("you must insert " + PLACEHOLDER + " at the point you want to put the image.  See Help.");return;}
var url = document.form1.ip1.value;
if (url == ""){alert("you must type a filename in the Addr box. See Help");return;}
s = "<img class='c_img' src='" + url + "' alt='Image' align='left' hspace='5' vspace='5'>"
s = unescape(s);
rep(PLACEHOLDER,s);
}

function insertHtml()
{
var s = content();
var i = s.indexOf(PLACEHOLDER,0);
if (i<0) {alert("you must insert " + PLACEHOLDER + " at the point you want to insert HTML.  See Help.");return;}
var txt = document.form1.ip1.value;
if (txt == ""){alert("you must type some HTML into the Addr box. See Help");return;}
rep(PLACEHOLDER,txt);
}



//email stuff


function ff(v,n)//used in dateTimeStr()
  {
  var t = v.toFixed(0);
  var L = n - t.length;
  while (L-- > 0) t = '0' + t;
  return t;
  }

//date time string like "2000-01-01 12:00:00"
function dateTimeStr()
  {
  var d = new Date();
  return ff(d.getFullYear(),4) + "-" + ff(d.getMonth() + 1,2) + "-" + ff(d.getDate(),2)
   + " " + ff(d.getHours(),2) + ":" + ff(d.getMinutes(),2) + ":" + ff(d.getSeconds(),2);
  }

//send message to editorial team and send thank you page to punter
//executed from edit page
//operates by invoking submit() event for hidden form on editor
function sendAndRelocate()
{
//SENDMAILPATH MUST BE CORRECT FOR SERVER HOSTING FORM ACTION EVENT
//var SENDMAILPATH = "/usr/sbin/sendmail";//123
//var SENDMAILPATH = "/usr/sbin/sendmail -froot\@johngordonsweb.co.uk";//streamlinenet
//var SENDMAILPATH = "/usr/lib/sendmail"; //local

var WEBPAGEROOT = "http://www.datchworth.info/";
var SENDMAILPATH = "/usr/sbin/sendmail";//123
var SENDER      = "contributor";//RETURN ADDRESS. IT WON'T BE USED
var RECIPIENT   = "jg@conceptlabs.co.uk,tonycharles@amca.co.uk,millers13@btinternet.com,chris.wilkins@tesco.net";
//var RECIPIENT   = "jg@conceptlabs.co.uk,john@johngordon.org.uk";//COMMA DELIMITED LIST OF ADDRESSEES
var SUBJECT     = "Contribution to webpage";//SUBJECT OF MESSAGE
var CONTENT     = "";//CONTENT OF MESSAGE to be completed
var REDIRECT    = WEBPAGEROOT + "thankyou.html";//THE WEBPAGE THE PUNTER WILL BE DIRECTED TO

var postscript  = dateTimeStr();
SUBJECT += " " + postscript;
CONTENT += content() + "\n" + postscript + "\n";
var xx = '|';
var s = SENDMAILPATH + xx + SENDER + xx + RECIPIENT + xx + SUBJECT + xx + CONTENT + xx + REDIRECT;
document._tform._transfer.value = s;
document._tform.submit();
}

