var command = "";
var init="";
function InitToolbarButtons() 
{
  kids = document.getElementsByTagName('DIV');
  for (var i=0; i < kids.length; i++) 
  {
    if (kids[i].className == "imagebutton") 
    {
      kids[i].onmouseover = tbmouseover;
      kids[i].onmouseout = tbmouseout;
      kids[i].onmousedown = tbmousedown;
      kids[i].onmouseup = tbmouseup;
      //kids[i].onclick = tbclick;
    }
  }
}

function tbmousedown(e)
{
  this.style.border="inset 2px";
}

function tbmouseup()
{
  this.style.border="outset 2px";
}

function tbmouseout()
{
   if (this.tag!="Pressed") this.style.border="solid 2px #FFFFFF";
}

function tbmouseover()
{
   this.style.border="outset 2px";
}

  function insertNodeAtSelection(win, insertNode)
  {
      // get current selection
      var sel = win.getSelection();

      // get the first range of the selection
      // (there's almost always only one range)
      var range = sel.getRangeAt(0);

      // deselect everything
      sel.removeAllRanges();

      // remove content of current selection from document
      range.deleteContents();

      // get location of current selection
      var container = range.startContainer;
      var pos = range.startOffset;

      // make a new range for the new selection
      range=document.createRange();

      if (container.nodeType==3 && insertNode.nodeType==3) {

        // if we insert text in a textnode, do optimized insertion
        container.insertData(pos, insertNode.nodeValue);

        // put cursor after inserted text
        range.setEnd(container, pos+insertNode.length);
        range.setStart(container, pos+insertNode.length);

      } else {


        var afterNode;
        if (container.nodeType==3) {

          // when inserting into a textnode
          // we create 2 new textnodes
          // and put the insertNode in between

          var textNode = container;
          container = textNode.parentNode;
          var text = textNode.nodeValue;

          // text before the split
          var textBefore = text.substr(0,pos);
          // text after the split
          var textAfter = text.substr(pos);

          var beforeNode = document.createTextNode(textBefore);

          afterNode = document.createTextNode(textAfter);

          // insert the 3 new nodes before the old one
          container.insertBefore(afterNode, textNode);          container.insertBefore(insertNode, afterNode);
          container.insertBefore(beforeNode, insertNode);

          // remove the old node
          container.removeChild(textNode);

        } else {

          // else simply insert the node
          afterNode = container.childNodes[pos];
          container.insertBefore(insertNode, afterNode);
        }

        range.setEnd(afterNode, 0);
        range.setStart(afterNode, 0);
      }

      sel.addRange(range);
  };


function getOffsetTop(elm) {
  var mOffsetTop = elm.offsetTop;
  var mOffsetParent = elm.offsetParent;

  while(mOffsetParent){
    mOffsetTop += mOffsetParent.offsetTop;
   mOffsetParent = mOffsetParent.offsetParent;
 }
 return mOffsetTop;
}


function getOffsetLeft(elm){  var mOffsetLeft = elm.offsetLeft;
  var mOffsetParent = elm.offsetParent;

  while(mOffsetParent){
    mOffsetLeft += mOffsetParent.offsetLeft;
    mOffsetParent = mOffsetParent.offsetParent;
  }
 
  return mOffsetLeft;
}


function getSelectedText(d) {
   if (document.all)  return d.selection.createRange().text;
   else         return d.getSelection();
}

function tbclick(a, v){
   if (a.id != 'createlink' && getSelectedText(getIFrameDocument(v)) == '')
   {
      if (a.tag=="Pressed") a.tag="";
      else a.tag="Pressed";
   }
   
   if ((a.id == "forecolor") || (a.id == "hilitecolor"))
   {
    parent.command = a.id;
    buttonElement = document.getElementById(a.id);
  } 
  else if (a.id == "createlink")
  {
    var szURL = prompt("Enter a URL:", "http://");
    getIFrameDocument(v).execCommand("CreateLink",false,szURL)
  } 
  else if (a.id == "createtable") 
  {
    rowstext = prompt("enter rows");
    colstext = prompt("enter cols");
    rows = parseInt(rowstext);
    cols = parseInt(colstext);
    if ((rows > 0) && (cols > 0)) 
    {
      table = getIFrameDocument(v).createElement("table");
      table.setAttribute("border", "1");
      table.setAttribute("cellpadding", "2");
      table.setAttribute("cellspacing", "2");
      tbody = getIFrameDocument(v).createElement("tbody");
      for (var i=0; i < rows; i++) 
      {
        tr =getIFrameDocument(v).createElement("tr");
        for (var j=0; j < cols; j++) 
        {
          td =getIFrameDocument(v).createElement("td");
          br =getIFrameDocument(v).createElement("br");
          td.appendChild(br);
          tr.appendChild(td);
        }
        tbody.appendChild(tr);
      }
      table.appendChild(tbody);      
      insertNodeAtSelection(getIFrame(v), table);
    }
  } else {
    getIFrameDocument(v).execCommand(a.id, false, null);
  }
  getIFrame(v).focus();
}


function Start(){
   var iframes = document.getElementsByTagName('IFRAME');
   var re =/edit_/;
   for (var i=0; i<iframes.length; i++)
   {
      if (re.exec(iframes[i].id)) 
      {
         var v = iframes[i].id;
         var v1 = v.substr(5);
         getIFrameDocument(v).designMode = "on";
         getIFrameDocument(v).open();
         //if (init) getIFrameDocument(v).write(init);
         //else 
         getIFrameDocument(v).write(document.getElementById(v1).value);
         getIFrameDocument(v).close();
         getIFrame(v).focus();
         InitToolbarButtons();
         if (oBw.ns6) 
         {
            getIFrameDocument(v).execCommand("useCSS",false,true);
         }

         for (c=0; c<document.styleSheets.length; c++)
         {
            AddStyleSheet(window.frames[iframes[i].name].document, document.styleSheets[c].href);
         }
      }
   }
}

function AddStyleSheet(d, url)
{
   var link = d.createElement('link');
   link.setAttribute('href', url);
   link.setAttribute('rel', 'stylesheet');
   link.setAttribute('type', 'text/css');
   // the 'head' element.
   d.childNodes[0].childNodes[0].appendChild(link);
}

function resetForm()
{
    var el = document.getElementsByTagName("input");
    for (i=0; i<el.length; i++)
    {
        if (el[i].type != "button" && el[i].type != "hidden")
        {
            el[i].value = ""
        }
    }
   var iframes = document.getElementsByTagName('IFRAME');
   var re =/edit_/;
   for (var i=0; i<iframes.length; i++)
   {
      if (re.exec(iframes[i].id)) 
      {
    
         var v = iframes[i].id;
         getIFrameDocument(v).open();
         //if (init) getIFrameDocument(v).write(init);
         //else 
         getIFrameDocument(v).write("");
         getIFrameDocument(v).close();
         if (oBw.ns6) 
         {
            getIFrameDocument(v).execCommand("useCSS",false,true);
         }

         for (c=0; c<document.styleSheets.length; c++)
         {
            AddStyleSheet(window.frames[iframes[i].name].document, document.styleSheets[c].href);
         }
      }
   }
}