/*
		Kridabo Editor v0.50
		
		(c)Copyright 2005 Sichbo Interactive (www.sichbo.ca)
		Used under license.
		
	*/
	
	var LastColorInterval = 0;			// Counter for the color picker time-out
	var LastMouseOverColor = false;		// Used to track if the mouse is over the color picker
	var colorTimer;						// Timer for the color picker time-out
	var OrigTop = 15;					// Used to track EditBar style.top attribute
	var OrigLeft = 15;					// Used to track EditBar style.left attribute
	var KridaboDragObject = null;		// Used as the object holder for the toolbar
	var KridaboEditBarID = 0;				// Incriments by one each time a new bar is made

	var emoticons = "star_full.gif;star_half.gif;star_empty.gif;tick.gif;cross.gif;warning.gif;info.gif;arrow_right_blue.gif";
	
	// Method to store the innerHTML of the edit regions into
	// a hidden input field.
	function Kridabo_SaveVals(m_target)
	{

		if ($(m_target+'_editregion'))
			$(m_target+'_postdata').value = $(m_target+'_editregion').innerHTML.replace("“","\"").replace("’","'").replace("”", "\"");
	}

	// Method to apply styles to the editable region
	function Kridabo_ApplyStyle(command, m_target)
	{
	    if (!$(m_target+'_editregion')) return;
		$(m_target+'_editregion').contentWindow.focus();
		$(m_target+'_editregion').contentWindow.document.execCommand(command, false, null);
		$(m_target+'_editregion').contentWindow.focus();
		SaveKridaboHtml(m_target);
	}
	
	// Method to apply styles to the editable region
	function Kridabo_ApplyFormatBlock(format, m_target)
	{
	    
	    if (!$(m_target+'_editregion')) return;
	    if( document.all )
	    {
	        if (format=="H1")
	            format = "Heading 1";
	        if (format=="H2")
	            format = "Heading 2";
	        if (format=="H3")
	            format = "Heading 3";
	        if (format=="H4")
	            format = "Heading 4";
	        if (format=="H5")
	            format = "Heading 5";
	        if (format=="H6")
	            format = "Heading 6";
	    }
		$(m_target+'_editregion').contentWindow.focus();
		$(m_target+'_editregion').contentWindow.document.execCommand("FormatBlock", false, format.toString());
		$(m_target+'_editregion').contentWindow.focus();
		SaveKridaboHtml(m_target);
	}

	// Method to open the Color Picker when you clik on the Font Color icon
	function Kridabo_OpenColorBox(evt, m_target)
	{
	    evt = (evt) ? evt : (window.event) ? window.event : ""; 
	    
	    var box = $(m_target+"_colorbox");
	  
	    box.style.top = mouseY+"px";//+3+document.body.scrollTop;
	    box.style.left = mouseX+"px";
		box.style.visibility = 'visible';
		box.style.zIndex = (indexes++)+100;
		colorTimer = setInterval("Kridabo_CloseColorBox('"+m_target+"')",500);
	}
	
	// Method to open the Emoticon Picker when you clik on the Font Color icon
	function Kridabo_OpenEmoticonBox(evt, m_target)
	{
	    evt = (evt) ? evt : (window.event) ? window.event : ""; 
	    
	    var box = $(m_target+"_emoticonbox");
		box.style.top = mouseY+"px";
		box.style.left = mouseX+"px";
		box.style.visibility = 'visible';
		box.style.zIndex = (indexes++)+100;
		colorTimer = setInterval("Kridabo_CloseEmoticonBox('"+m_target+"')",500);
	}
	
	// Method to close the Color Picker when it times out
	function Kridabo_CloseColorBox(m_target)
	{
		var box = $(m_target+"_colorbox");
		LastColorInterval++;
		if (LastColorInterval>1&&!LastMouseOverColor)
		{
			box.style.visibility = 'hidden';
			clearInterval(colorTimer);
			LastColorInterval = 0;
		}
	}
	
	// Method to close the Color Picker when it times out
	function Kridabo_CloseEmoticonBox(m_target)
	{
		var box = $(m_target+"_emoticonbox");
		LastColorInterval++;
		if (LastColorInterval>1&&!LastMouseOverColor)
		{
			box.style.visibility = 'hidden';
			clearInterval(colorTimer);
			LastColorInterval = 0;
		}
	}
	
	// Method to take all the Css styles in the document and
	// list them in the Style list box
	function Kridabo_FillStyleList(m_target)
	{
	
		if (document.styleSheets.length>0)
		{
			var CssRules = document.styleSheets[0].cssText.split('\n');
			for(i=0;i<CssRules.length;i++)
			{
				var rule = CssRules[i].substring(0,CssRules[i].indexOf('{')).replace('.','').replace(' ','');
				if (rule!='')
				{
					var m_option = document.createElement("OPTION");
					$(m_target+"_StyleSelect").options.add(m_option);
					m_option.innerText = rule;
					m_option.Value = rule;
				}
			
			}
		}
	}
	
	function GetSelection(m_target)
	{
	    if ($(m_target+'_editregion').contentWindow.document.selection)
	        return $(m_target+'_editregion').contentWindow.document.selection;
	    else
	        return $(m_target+'_editregion').contentWindow.getSelection(); 
	}
	
  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);
      }
      if (range.endOffset>0)
        sel.addRange(range);
  };
	
	// Method to apply CSS Class
	function Kridabo_ApplyCssClass(style, m_target)
	{
		if (style!='-1')
		{
		    if (!$(m_target+'_editregion')) return;
		    
			var m_scroll = document.body.scrollTop;
			
			$(m_target+'_editregion').contentWindow.focus();
			
			Kridabo_ApplyStyle('removeformat', m_target);
	        var sel =  GetSelection(m_target);
	       
	        if (document.all)
	        {
	            var rng = sel.createRange();
	            NewHTML = "<font class='" + style + "'>" + rng.htmlText +"</font>";
	            rng.pasteHTML(NewHTML);
	        }
	        else
	        {
	            var n = $(m_target+'_editregion').contentWindow.document.createElement("font");
	            n.setAttribute("class", style);
	            n.innerHTML = sel.toString();
	            insertNodeAtSelection($(m_target+'_editregion').contentWindow, n);
            }
	        
	        $(m_target+'_editregion').contentWindow.focus();
	    
			document.body.scrollTop = m_scroll;
		}
		
	}
	
	
	
	// Method to apply CSS style
	function Kridabo_ApplyCssStyle(style, m_target)
	{
		if (style!='-1')
		{
		    if (!$(m_target+'_editregion')) return;
		    
			var m_scroll = document.body.scrollTop;
			$(m_target+'_editregion').focus();
			Kridabo_ApplyStyle('RemoveFormat', m_target);
			var sel = document.selection.createRange();
			NewHTML = "<span style=\"" + style + "\">" + sel.htmlText +"</span>"
			sel.pasteHTML(NewHTML)
			$(m_target+'_editregion').focus();
			document.body.scrollTop = m_scroll;
		}
		
	}
	
	// Method to apply font
	function Kridabo_ApplyFont(m_font, m_target)
	{
		if (m_font!='-1')
		{
		    if (!$(m_target+'_editregion')) return;
		
			var m_scroll = document.body.scrollTop;

			$(m_target+'_editregion').contentWindow.focus();
		    $(m_target+'_editregion').contentWindow.document.execCommand("fontname", false, m_font);
		    $(m_target+'_editregion').contentWindow.focus();
		
			document.body.scrollTop = m_scroll;
		}
	}
	
	// Method to apply font size
	function Kridabo_ApplyFontSize(m_size, m_target)
	{
		if (m_size!='')
		{
		    if (!$(m_target+'_editregion')) return;
		    
			var m_scroll = document.body.scrollTop;

			$(m_target+'_editregion').contentWindow.focus();
		    $(m_target+'_editregion').contentWindow.document.execCommand("fontsize", false, m_size);
		    $(m_target+'_editregion').contentWindow.focus();
		    
			document.body.scrollTop = m_scroll;
		}
	}
	
	// Method to handle Click event of the Color Picker
	function Kridabo_ChangeColor(color, m_target)
	{
	    if (!$(m_target+'_editregion')) return;
	    
		var m_scroll = document.body.scrollTop;

		$(m_target+'_editregion').contentWindow.focus();
	    $(m_target+'_editregion').contentWindow.document.execCommand("forecolor", false, color);
	 
	    $(m_target+'_editregion').contentWindow.focus();
		    
		document.body.scrollTop = m_scroll;
		$(m_target+"_colorbox").style.visibility = 'hidden';
		clearInterval(colorTimer);
		LastMouseOverColor = false;
		LastColorInterval = 0;
	}
	
	// Method to draw the color picker dynamically.
	function Kridabo_DrawEmoticonPickerHtml(m_target)
	{
		//Debug('Kridabo_DrawEmoticonPickerHtml Start');
		var str = ("<div id=\""+m_target+"_emoticonbox\" OnMouseOver=\"LastColorInterval=0;LastMouseOverColor=true;\" OnMouseOut=\"LastMouseOverColor=false;\" style=\"left:-1000; top: -1000px;position:absolute;visibility:hidden\">");
		str += ("<table border=0 cellpadding=0 cellspacing=0 bgcolor=\"#000000\">");
		str += ("<tr>");
		str += ("<td>");
		str += ("<table border=0 bordercolor=#000000 cellpadding=0 cellspacing=1>");
		str += ("<tr> ");
		
		var icons = emoticons.split(';');
		
		for(x=0;x<icons.length;x++)
		{
			str += ("<td onclick=\"Kridabo_InsertIcon('"+icons[x]+"', '"+m_target+"');\" width=16 height=16 bgColor=white><img src=\"/images/shared/emoticons/"+icons[x]+"\" width=16 height=16></td>");
			if (x%4==0
				&& x>0)
				str += "</tr><tr>";
		}
		str += "</tr></table></td></tr></table></div>";
		//$(m_target+"_holder").innerHTML += str;
		$("layerHolder").innerHTML += str;
		//Debug('Kridabo_DrawEmoticonPickerHtml Finish');
	}
	
	// Method to draw the color picker dynamically.
	function Kridabo_DrawColorPickerHtml(m_target)
	{
		//Debug('Kridabo_DrawColorPickerHtml Start');
		var str = ("<div id=\""+m_target+"_colorbox\" OnMouseOver=\"LastColorInterval=0;LastMouseOverColor=true;\" OnMouseOut=\"LastMouseOverColor=false;\" style=\"left:-1000;top:-1000px;position:absolute;visibility:hidden\">");
		str += ("<table border=0 cellpadding=0 cellspacing=0 bgcolor=\"#000000\">");
		str += ("<tr>");
		str += ("<td>");
		str += ("<table border=0 bordercolor=#000000 cellpadding=0 cellspacing=1>");
		str += ("<tbody>");
		str += ("<tr> ");
		
		c = new Array();
		c[1] = "FF";
		c[2] = "CC";
		c[3] = "99";
		c[4] = "66";
		c[5] = "33";
		c[6] = "00";
		
		kn = new Array();
		kn[1] = "FF0000";
		kn[2] = "00FF00";
		kn[3] = "0000FF";
		kn[4] = "FFF000";
		kn[5] = "000FFF";
		kn[6] = "FF00FF";

		d = 0;

		for (i=1;i <=6;i++)
		{
			if (i >1)
			{
				str += ( "</tr>\n<tr>\n");
			}
			d++;
			colour = c[7-i] + c[7-i] + c[7-i];
			str += ("<td bgcolor=\"#"+colour+"\" height=7 width=7 style=\"cursor: pointer;\" onmousedown=\"Kridabo_ChangeColor('#"+colour+"', '"+m_target+"')\"><img src=/images/space.gif width=5 height=5></td>\n");
					
			for (m=1;m <=3;m++)
			{	
				for (n=1;n <=6;n++)
				{	
					d++;
					colour = c[i] + c[m] + c[n];
					 str += ("<td bgcolor=\"#"+colour+"\" height=7 width=7 style=\"cursor: pointer;\" onmousedown=\"Kridabo_ChangeColor('"+colour+"', '"+m_target+"')\"><img src=/images/space.gif width=5 height=5></td>\n");
					
				}
				
			}
		}
		str += ( "</tr>\n<tr>\n");
		
		for (i=1;i <=6;i++)
		{
			if (i >1)
			{
				str += ( "</tr>\n<tr>\n");
			}
			d++;
			colour = kn[i];
			str += ("<td bgcolor=\"#"+colour+"\" height=7 width=7 style=\"cursor: pointer;\" onmousedown=\"Kridabo_ChangeColor('#"+colour+"', '"+m_target+"')\"><img src=/images/space.gif width=5 height=5></td>\n");
			
			for (m=4;m <=6;m++)
			{	
				for (n=1;n <=6;n++)
				{	
					d++;
					colour = c[i] + c[m] + c[n];
					 str += ("<td bgcolor=\"#"+colour+"\" height=7 width=7 style=\"cursor: pointer;\" onmousedown=\"Kridabo_ChangeColor('"+colour+"', '"+m_target+"')\"><img src=/images/space.gif width=5 height=5></td>\n");
					
				}
				
			}
		}
		
        str += ("</tr></tbody></table></table></td></tr></table></div>");
		//$(m_target+"_holder").innerHTML += str;
		$("layerHolder").innerHTML += str;
		//Debug('Kridabo_DrawColorPickerHtml Finish');
	}

	// Method to position all the Kridabo tools bars
	function Kridabo_PositionToolBars()
	{
		//Debug('Kridabo_PositionToolBars Start');
		Kridabo_PositionDocumentBar();
		Kridabo_PositionEditBar();
		//Debug('Kridabo_PositionToolBars Finish');
	}
	
	// Positions the document bar
	function Kridabo_PositionDocumentBar()
	{
		if ($("KridaboDocumentBar"))
		{
			$("KridaboDocumentBar").style.left = (document.body.clientWidth - 142);
			$("KridaboDocumentBar").style.top = (document.body.clientHeight - 25)+document.body.scrollTop;
			Kridabo_PositionDocumentBar_Timeout = setTimeout('Kridabo_PositionDocumentBar()',200);
		}
	}
	
	// Positions the edit bar
	function Kridabo_PositionEditBar() 
	{
     	if ($('KridaboEditBar'+KridaboEditBarID)) 
	  	{
			$('KridaboEditBar'+KridaboEditBarID).style.top = parseInt(OrigTop)+document.body.scrollTop;
			
     	}      
	 	Kridabo_PositionEditBar_Timeout = setTimeout('Kridabo_PositionEditBar()',200);
  	}

	// Method to handle mouse down for Dragging
	function KridaboEditBar_onmousedown() 
	{
			KridaboDragObject  = $('KridaboEditBar'+KridaboEditBarID);
			
			OrigTop = window.event.clientY - parseInt(KridaboDragObject.style.top);
			OrigLeft = window.event.clientX - parseInt(KridaboDragObject.style.left);
			
			window.event.returnValue = false;
			window.event.cancelBubble = true;
	}
	
	// Method to handle Drag Stopping
	function KridaboEditBar_onmouseup() {
		if(KridaboDragObject) {
			OrigLeft = parseInt(KridaboDragObject.style.left);
			OrigTop = parseInt(KridaboDragObject.style.top)-document.body.scrollTop;
			KridaboDragObject = null;
		}
	}
	
	// Method to handle Dragging
	function KridaboEditBar_onmousemove() {
		
		if (KridaboDragObject) {
			if (window.event.clientX >= 0 && window.event.clientY >= 0) 
			{
				KridaboDragObject.style.left = window.event.clientX - parseInt(OrigLeft);
				
				KridaboDragObject.style.top = window.event.clientY - parseInt(OrigTop) ;
			}
			window.event.returnValue = false;
			window.event.cancelBubble = true;
			
		}
		
	}
	
	var Kridabo_PositionEditBar_Timeout
	var Kridabo_PositionDocumentBar_Timeout;
	function Kridabo_CreateEditor(m_target, m_serverpath, width) //html, css, 
	{
	   
	    
		clearTimeout(Kridabo_PositionEditBar_Timeout);
		clearTimeout(Kridabo_PositionDocumentBar_Timeout);
		
		//if (m_serverpath=="")
		//	m_serverpath = "http://dev.sichbo.ca/kridabo/";
			
		if (!m_serverpath.substring(m_serverpath.length-1,1)=="/")
			m_serverpath += "/";
		
		LastColorInterval = 0;			// Counter for the color picker time-out
		LastMouseOverColor = false;		// Used to track if the mouse is over the color picker
		colorTimer;						// Timer for the color picker time-out
		KridaboEditBarID++;

		$(m_target+"_toolbar").innerHTML = '';
		var str = "";
	
			
		str = "<span id=\"KridaboEditBar"+KridaboEditBarID+"\" style=\"position:relative; left:0px; top: 0px; z-index:1\"></span>";

        if (!width)
            width = "100%";
	
			str += ("<table id=\""+m_target+"_tb1\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" width=\""+width+"\">");
			str += ("<tr>");
			//str += ("<td><img src=\""+m_serverpath+"icons/bar_handle1.gif\" width=\"8\" height=\"24\"></td>");
			str += ("<td><img src=\""+m_serverpath+"icons/bar_bgcolor.gif\" width=\"5\" height=\"24\" align=\"top\"></td>");

				str += ("      <td background=\""+m_serverpath+"icons/bar_bgcolor.gif\"><select name=\""+m_target+"_StyleSelect\" id=\""+m_target+"_StyleSelect\" onChange=\"Kridabo_ApplyCssClass(this.value,'"+m_target+"');this.selectedIndex=0;\" style=\"font-family:verdana, arial; font-size:7.5pt; width:100px;\">");
				str += ("          <option value=\"-1\" selected>Select Document Style...</option>");
				str += ("        </select></td>");
				
				str += ("      <td background=\""+m_serverpath+"icons/bar_bgcolor.gif\"><select name=\""+m_target+"_ParaStyle\" id=\""+m_target+"_ParaStyle\" onChange=\"if (this.selectedIndex==1) { Kridabo_ApplyStyle(this.value,'"+m_target+"') } else { Kridabo_ApplyFormatBlock(this.value,'"+m_target+"'); } this.selectedIndex=0;\" style=\"font-family:verdana, arial; font-size:7.5pt; width:100px;\">");
			str += ("          <option value=\"-1\">Format...</option>");
			str += ("          <option value=\"RemoveFormat\">None (Clear Formatting)</option>");
			str += ("          <option value=\"P\">Paragraph</option>");
			str += ("          <option value=\"H1\">Heading 1</option>");
			str += ("          <option value=\"H2\">Heading 2</option>");
			str += ("          <option value=\"H3\">Heading 3</option>");
			str += ("          <option value=\"H4\">Heading 4</option>");
			str += ("          <option value=\"H5\">Heading 5</option>");
			str += ("          <option value=\"H6\">Heading 6</option>");
			str += ("          <option value=\"Pre\">Preformatted</option>");
			str += ("        </select></td>");	
			
			str += ("      <td background=\""+m_serverpath+"icons/bar_bgcolor.gif\"><select name=\""+m_target+"_Font\" id=\""+m_target+"_Font\" onChange=\"Kridabo_ApplyFont(this.value,'"+m_target+"');this.selectedIndex=0;\" style=\"font-family:verdana, arial; font-size:7.5pt; width:100px;\">");
			str += ("          <option value=\"-1\">Font...</option>");
			str += ("          <option value=\"Tahoma, Verdana, Arial, Helvetica, sans-serif\">Tahoma</option>");
			str += ("          <option value=\"Verdana, Arial, Helvetica, sans-serif\">Verdana</option>");
			str += ("          <option value=\"Arial, Helvetica, sans-serif\">Arial</option>");
			str += ("          <option value=\"Geneva, Arial, Helvetica, sans-serif\">Geneva</option>");
			str += ("          <option value=\"Georgia, &quot;Times New Roman&quot;, Times, serif\">Georgia</option>");
			str += ("          <option value=\"&quot;Times New Roman&quot;, Times, serif\">Times New Roman</option>");
			str += ("          <option value=\"&quot;Courier New&quot;, Courier, monospace\">Courier New</option>");
			str += ("        </select></td>");	
			str += ("      <td background=\""+m_serverpath+"icons/bar_bgcolor.gif\"><select name=\""+m_target+"_FontSize\" id=\""+m_target+"_FontSize\" onChange=\"Kridabo_ApplyFontSize(this.value,'"+m_target+"');this.selectedIndex=0;\" style=\"font-family:verdana, arial; font-size:7.5pt; width:40px;\">");
			str += ("          <option value=\"\">Size</option>");
			str += ("          <option value=\"1\">1</option>");
			str += ("          <option value=\"2\">2</option>");
			str += ("          <option value=\"3\">3</option>");
			str += ("          <option value=\"4\">4</option>");
			str += ("          <option value=\"5\">5</option>");
			str += ("          <option value=\"6\">6</option>");
			str += ("          <option value=\"7\">7</option>");
			str += ("          <option value=\"8\">8</option>");
			str += ("        </select></td>");	
				
		    //str += ("      <td> <img src=\""+m_serverpath+"icons/bar_bgcolor.gif\" width=\"5\" height=\"24\" align=\"top\"></td>");
			//str += ("      <td><img src=\""+m_serverpath+"icons/bar_space.gif\" width=\"1\" height=\"24\"></td>");
			str += ("<td width=\"100%\"><img src=\""+m_serverpath+"icons/bar_bgcolor.gif\"  width=\"100%\" height=\"24\" align=\"top\"></td>");
			

			
			str += ("    </tr>");
			str += ("  </table>");
			
			
	        str += "<table id=\""+m_target+"_tb2\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" width=\""+width+"\"><tr>";
            
            str += ("      <td><img src=\""+m_serverpath+"icons/alignleft.gif\" width=24 height=24  OnClick=\"Kridabo_ApplyStyle('justifyleft','"+m_target+"');\" alt=\"Align Left\" style=\"cursor: pointer;\"></td>");
			str += ("      <td><img src=\""+m_serverpath+"icons/aligncenter.gif\" width=24 height=24  OnClick=\"Kridabo_ApplyStyle('justifycenter','"+m_target+"');\" alt=\"Align Center\" style=\"cursor: pointer;\"></td>");
			str += ("      <td><img src=\""+m_serverpath+"icons/alignright.gif\" width=24 height=24  OnClick=\"Kridabo_ApplyStyle('justifyright','"+m_target+"');\" alt=\"Align Right\" style=\"cursor: pointer;\"></td>");
			str += ("      <td><img src=\""+m_serverpath+"icons/alignjustify.gif\" width=24 height=24  OnClick=\"Kridabo_ApplyStyle('justifyfull','"+m_target+"');\" alt=\"Justify\" style=\"cursor: pointer;\"></td>");
			
			str += ("      <td><img src=\""+m_serverpath+"icons/bar_space.gif\" width=\"1\" height=\"24\"></td>");
			str += ("      <td><img src=\""+m_serverpath+"icons/list.gif\" width=24 height=24  OnClick=\"Kridabo_ApplyStyle('insertunorderedlist','"+m_target+"');\" alt=\"Create Bullet List\" style=\"cursor: pointer;\"></td>");
			str += ("      <td><img src=\""+m_serverpath+"icons/orderedlist.gif\" width=24 height=24  OnClick=\"Kridabo_ApplyStyle('insertorderedlist','"+m_target+"');\" alt=\"Create Numbered List\" style=\"cursor: pointer;\"></td>");
			str += ("      <td><img src=\""+m_serverpath+"icons/outdent.gif\" width=24 height=24 width=\"24\" height=\"24\" style=\"cursor: pointer;\" alt=\"Outdent\" OnClick=\"Kridabo_ApplyStyle('outdent','"+m_target+"');\"></td>");
			str += ("      <td><img src=\""+m_serverpath+"icons/indent.gif\" width=24 height=24 width=\"24\" height=\"24\" style=\"cursor: pointer;\" alt=\"Indent\" OnClick=\"Kridabo_ApplyStyle('indent','"+m_target+"');\"></td>");
			
			str += ("      <td><img src=\""+m_serverpath+"icons/bar_space.gif\" width=\"1\" height=\"24\"></td>");
			
			//str += ("<td><img src=\""+m_serverpath+"icons/bar_handle1.gif\" width=\"8\" height=\"24\"></td>");
			str += ("<td><img src=\""+m_serverpath+"icons/bar_bgcolor.gif\" width=\"5\" height=\"24\" align=\"top\"></td>");
			
			
			str += ("      <td><img src=\""+m_serverpath+"icons/cut.gif\" width=24 height=24 OnClick=\"Kridabo_ApplyStyle('Cut','"+m_target+"');\" alt=\"Cut\" style=\"cursor: pointer;\"></td>");
			str += ("      <td><img src=\""+m_serverpath+"icons/copy.gif\" width=24 height=24  OnClick=\"Kridabo_ApplyStyle('Copy','"+m_target+"');\" alt=\"Copy\" style=\"cursor: pointer;\"></td>");
			str += ("      <td><img src=\""+m_serverpath+"icons/paste.gif\" width=24 height=24  OnClick=\"Kridabo_ApplyStyle('Paste','"+m_target+"');\" alt=\"Paste\" style=\"cursor: pointer;\"></td>");
			//str += ("      <td><img src=\""+m_serverpath+"icons/undo.gif\" width=24 height=24  OnClick=\"Kridabo_ApplyStyle('Undo','"+m_target+"');\" alt=\"Undo\" style=\"cursor: pointer;\"></td>");
			//str += ("      <td><img src=\""+m_serverpath+"icons/redo.gif\" width=24 height=24  OnClick=\"Kridabo_ApplyStyle('Redo','"+m_target+"');\" alt=\"Redo\" style=\"cursor: pointer;\"></td>");
			str += ("      <td><img src=\""+m_serverpath+"icons/bar_space.gif\" width=\"1\" height=\"24\"></td>");
			
			str += ("      <td><img src=\""+m_serverpath+"icons/fontcolor.gif\" width=24 height=24 OnClick=\"Kridabo_OpenColorBox(event, '"+m_target+"');\" alt=\"Text Color\" style=\"cursor: pointer;\"></td>");
			

			str += ("      <td><img src=\""+m_serverpath+"icons/bold.gif\" width=24 height=24 OnClick=\"Kridabo_ApplyStyle('Bold','"+m_target+"');\" alt=\"Bold\" style=\"cursor: pointer;\"></td>");
			str += ("      <td><img src=\""+m_serverpath+"icons/italic.gif\" width=24 height=24 OnClick=\"Kridabo_ApplyStyle('Italic','"+m_target+"');return false;\" alt=\"Italics\" style=\"cursor: pointer;\"></td>");
			str += ("      <td><img src=\""+m_serverpath+"icons/underline.gif\" width=24 height=24  OnClick=\"Kridabo_ApplyStyle('Underline','"+m_target+"');\" alt=\"Underline\" style=\"cursor: pointer;\"></td>");
			
			str += ("      <td><img src=\""+m_serverpath+"icons/insert-image.gif\" width=24 height=24 width=\"24\" height=\"24\" style=\"cursor: pointer;\" alt=\"Insert Picture...\" OnClick=\"InsertImage('"+m_target+"');\"></td>");
			//str += ("      <td><img src=\""+m_serverpath+"icons/insert-file.gif\" width=24 height=24 width=\"24\" height=\"24\" style=\"cursor: pointer;\" alt=\"Insert File Download Link...\" OnClick=\"InsertFile('"+m_target+"');\"></td>");
			str += ("      <td><img src=\""+m_serverpath+"icons/hyperlink.gif\" width=24 height=24 width=\"24\" height=\"24\" style=\"cursor: pointer;\" alt=\"Create Hyperlink\" OnClick=\"InsertUrl('"+m_target+"');\"></td>");
			str += ("      <td><img src=\""+m_serverpath+"icons/pagebreak.gif\" width=24 height=24 width=\"24\" height=\"24\" style=\"cursor: pointer;\" alt=\"Insert Page Break\"  OnClick=\"Kridabo_InsertHtml('<div class=NFBreak style=page-break-before:always contenteditable=false>&nbsp;</div>','"+m_target+"');\"></td>");

			str += ("      <td><img src=\""+m_serverpath+"icons/emoticon.gif\" width=24 height=24 alt=\"Insert Emoticon\" OnClick=\"Kridabo_OpenEmoticonBox(event, '"+m_target+"');\" style=\"cursor: pointer;\"></td>");
			str += ("      <td><img src=\""+m_serverpath+"icons/viewhtml.gif\" height=\"24\" width=\"24\" onclick=\"ToggleHtmlView('"+m_target+"');\" style=\"cursor: pointer;\" alt=\"Toggle HTML View\"/></td>");
			str += ("      <td width=\"100%\"><img src=\""+m_serverpath+"icons/bar_bgcolor.gif\"  width=\"100%\" height=\"24\" align=\"top\"></td>");		
			str += ("    </tr>");
			str += ("  </table>");
			
			str += ("</div>");
			
			str += "<table id=\""+m_target+"_tb3\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" width=\""+width+"\" style=\"display: none\" bgcolor=\"#DBD8D1\"><tr>";
			str += "<td align=\"right\"><img src=\""+m_serverpath+"icons/viewhtml.gif\" height=\"24\" width=\"24\" style=\"cursor: pointer;\" alt=\"Toggle HTML View\" onclick=\"ToggleHtmlView('"+m_target+"');\"/></td>";
			str += "    </tr>";
			str += "  </table>";
            str += "<textarea id=\""+m_target+"_source\" style=\"display: none; width: "+width+"; height: 300px; font-family: Courier New; display: none;\"></textarea>";

		$(m_target+"_toolbar").innerHTML = str;

		Kridabo_DrawColorPickerHtml(m_target);
		Kridabo_DrawEmoticonPickerHtml(m_target);
		Kridabo_PositionToolBars(); 
	
		var o = new Object();
		o.ID = m_target;
		o.Html = $(m_target).value;//html;
		o.Css = $(m_target + "_Css").value;
		o.View = "design";
		o.Header = "";
		
		InitialiseEditor(o);
		editors.push(o);
		
		//Debug('Kridabo_CreateEditor Finish');
	}
	
	function InitialiseEditor(o)
	{
	     var m_target = o.ID;
	     var html = o.Html;
	     var css = o.Css;
	    
	     var view = "design";
	     var editor;
	     
	     for(var i=0;i<editors.length;i++)
         {  
            if (editors[i].ID==m_target)
            {
                view = editors[i].View;
                editor = editors[i];
               
                break;
            }
         }

        $(m_target+"_source").style.display = (view=="source")?"block":"none";
        
        if ($(m_target+'_editregion'))
            $(m_target+"_editregion").style.display = (view=="design")?"block":"none";
        
        $(m_target+"_tb1").style.display = $(m_target+"_editregion").style.display;
        $(m_target+"_tb2").style.display = $(m_target+"_editregion").style.display;
        $(m_target+"_tb3").style.display = $(m_target+"_source").style.display;

        //if (editor && editor.Header)
        //{
        
        html = GetBody(html);
        
        $(m_target+"_source").value = html;
        html = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"><html> "+css+" <body style=\"font-family: Arial, Helvetica, sans-serif;  font-size: 9.25pt;\" leftmargin=\"0\" topmargin=\"0\" class=\"Composer\">"+html+"</body></html>";
        //alert(html);
        //}

        if ($(m_target+'_editregion') && $(m_target+"_editregion").style.display=="block")
        {
            var doc = null;
            if (document.all)
            {
                doc =  $(m_target+"_editregion").contentWindow.document;
                if (o.EventsSet)
                {
                    doc.innerHTML = html;
                }
                else
                {
                 doc.open();
		         doc.write(html);
		         doc.close();
		         doc.recalc();
		        }
            }
            else
            {
                doc = $(m_target+"_editregion").contentDocument;
                // alert(doc?"got doc":"no doc");
                if (!doc)
                {
                    $(m_target+"_editregion").onload = RepairEditors;
                    return;
                }
                //doc = iframe.contentWindow;
                
                //doc =  $(m_target+"_editregion").contentWindow.document;
               
		        doc.open();
		        doc.write(html);
		        doc.close();
		    }
		    //alert("test");
		    doc.designMode = "on";
		   // $(m_target+"_editregion").contentWindow.document.designMode = "on";
		}
		
		if (o.EventsSet)
		    return;
         
		if (document.all)
	    {
	        if ($(m_target+'_editregion'))
	        {
	            $(m_target+"_editregion").contentWindow.document.onkeyup = function() { SaveKridaboHtml( m_target) ; }
		        $(m_target+"_editregion").contentWindow.document.onmouseup = function() { SaveKridaboHtml( m_target) ; }
		    }
		    $(m_target+"_source").onChange = function() { SaveKridaboHtml( m_target ) ; }
		}
		else
		{
		    if ($(m_target+'_editregion'))
		    {
		        $(m_target+"_editregion").contentWindow.document.addEventListener("mousedown",  function() { SaveKridaboHtml( m_target ) ; }, true);
	            $(m_target+"_editregion").contentWindow.document.addEventListener("keyup",  function() { SaveKridaboHtml( m_target ) ; }, true);
	        }
	        $(m_target+"_source").addEventListener("onchange", function() { SaveKridaboHtml( m_target ) ; }, true);
		}
		o.EventsSet = true;
		
	}
	function getIframeDoc(iFrameId){
    var
    oIFrame = document.getElementById(iFrameId),
    oFramedDoc = typeof oIFrame.contentDocument != 'undefined'?
    oIFrame.contentDocument: // W3C way
    typeof oIFrame.contentWindow != 'undefined'?
    oIFrame.contentWindow.document: // Microsoft way
    typeof oIFrame.document != 'undefined'?
    oIFrame.document: // Traditional way
    null; // And no way.
    return oFramedDoc;
    }
	var editors = new Array();
	function StartMozillaEditors()
	{
	    if (document.all)
	        return;
	        
	    for(var i=0;i<editors.length;i++)
	    {
	        if ($(editors[i]+"_editregion"))
	        {
	            var str = editors[i];
	            SetEvents(str);
	        }
	    }
	}
	

	function Kridabo_InsertHtml(html, m_target)
	{
		 if (!$(m_target+'_editregion')) return;
        if (document.all)
        {
            var m_scroll = document.body.scrollTop;
           
            
            $(m_target+'_editregion').contentWindow.focus();
            $(m_target+'_editregion').contentWindow.focus();
        
           
	        var sel =  $(m_target+'_editregion').contentWindow.document.selection.createRange();
	        sel.pasteHTML(html);
	        $(m_target+'_editregion').contentWindow.focus();
	        document.body.scrollTop = m_scroll;
    	    
        }
        else
        {
            $(m_target+'_editregion').contentWindow.focus();

	        var sel =  GetSelection(m_target);
            var n = $(m_target+'_editregion').contentWindow.document.createElement("span");
            n.innerHTML = html;
            insertNodeAtSelection($(m_target+'_editregion').contentWindow, n);
             $(m_target+'_editregion').contentWindow.focus();
        }
        SaveKridaboHtml(m_target);
	}
	
	var LastTarget;
	function InsertImage(m_target)
	{
		LastTarget = m_target;
        //__Popup("/js/insertimage.aspx", 550, 320, ", resizable=no, scroll=no, modal=yes");
        //window.showModelessDialog("/js/InsertImageHost.htm", window, "dialogHeight:320px; dialogWidth:500px; center:yes; resizable: no; scroll: no;");
		if (!$("insertImageDiv"))
			$("layerHolder").innerHTML += "<div style=\"position: absolute; top: 0px; left: 0px; visibility: hidden; width: 460px; height: 200px; background-color: #FFFFFF; border: 1px solid #000000; padding: 2px;\" id=\"insertImageDiv\"></div>";
		
		var box = $("insertImageDiv");
		box.innerHTML = "<iframe frameborder=\"0\" src=\"/InsertImage.aspx\" width=\"460\" height=\"200\"></iframe>"
		
		box.style.top = mouseY+"px";
		box.style.left = (mouseX-100)+"px";
		box.style.visibility = 'visible';
		box.style.zIndex = (indexes++)+100;
		
        //SaveKridaboHtml(m_target);
	}
	function InsertImageHide()
	{
		if ($("insertImageDiv"))
		{
			$("insertImageDiv").innerHTML = "";
			$("insertImageDiv").style.visibility = "hidden";
		}
	}
	
	function InsertFile(m_target)
	{
		LastTarget = m_target;
		__Popup("/Work/Documents?NoMenu=1&SelectMode=1", 800, 400, ", modal=yes");
	    SaveKridaboHtml(m_target);
	}
	
	function InsertUrl(m_target)
	{
	     if (!$(m_target+'_editregion')) return;
	     
		//LastTarget = m_target;
		//__Popup("/Work/Documents?NoMenu=1&SelectMode=1", 800, 400, ", modal=yes");
	    //var win = window.open("/Work/Documents?NoMenu=1&SelectMode=1", "insertfile", "height=400, width=800, center=yes, resizable=yes, scroll=no, modal=yes");
	    if (document.all)
	    {
	        $(m_target+'_editregion').contentWindow.focus();
		    $(m_target+'_editregion').contentWindow.document.execCommand("createlink", true, null);
		    $(m_target+'_editregion').contentWindow.focus();
	    }
	    else
	    {
	        var url = prompt("Enter the URL you wish to insert:");
	        if (url)
	        {
	            var sel =  GetSelection(m_target);
                var n = $(m_target+'_editregion').contentWindow.document.createElement("A");
	            n.innerHTML = sel.toString();
	            if (n.innerHTML.length==0)
	                n.innerHTML = url;
	            n.href = url;
	            insertNodeAtSelection($(m_target+'_editregion').contentWindow, n);
	            $(m_target+'_editregion').contentWindow.focus();
	        }
	    }
	    
	    SaveKridaboHtml(m_target);
	}
	
	// Method to insert emoticion
	function Kridabo_InsertIcon(icon, m_target)
	{
	    Kridabo_InsertHtml("<img src=\"/images/shared/emoticons/"+icon+"\" align=absmiddle>",m_target); 
		$(m_target+"_emoticonbox").style.visibility = 'hidden';
		SaveKridaboHtml(m_target);
	}
	
	function GetBody(html)
	{
	    if (!html)
	        return "";
	        
	    var rx = new RegExp("<body.*?>(.*?)</body>", "g");
        var m = rx.exec(html);
        while (m != null
            && m.length>0)
        {
            html = m[1];
            m = rx.exec(html);
        }
        return html;
	}

	function SaveKridaboHtml( Kridabo_UID )
	{
	
	    var htmlEditor = $(Kridabo_UID+'_editregion');
	    var sourceEditor = $(Kridabo_UID+'_source');
	    var editor;
	    var html;
	    for(var i=0;i<editors.length;i++)
        {  
            if (editors[i].ID==Kridabo_UID)
            {
                editor = editors[i];
                break;
            }
        }
        if (editor==null)
            return;
        if (editor.View=="design")
        {
            if (htmlEditor.contentWindow.document.body)
            {
                $(Kridabo_UID).value = GetBody(htmlEditor.contentWindow.document.body.innerHTML);
                if (htmlEditor.contentWindow.document.styleSheets.length>0)
                    editor.Header = "<style type=\"text/css\">" + htmlEditor.contentWindow.document.styleSheets[0].cssText + "</style>";
                editor.Html = $(Kridabo_UID).value; //htmlEditor.contentWindow.document.body.parentNode.innerHTML;
                sourceEditor.value = $(Kridabo_UID).value;
            }
        }
	    else
	    {
	        $(Kridabo_UID).value = sourceEditor.value;
	        editor.Html = $(Kridabo_UID).value;
	    }
    }
    
    function RepairEditors()
    {
        setTimeout("RepairEditorsThreaded()", 0);
    }
    
 
    function RepairEditorsThreaded()
    {
        repairing = true;
        var newAr = new Array();
        for(var i=0;i<editors.length;i++)
        {
            var editor = $(editors[i].ID+'_editregion');
            if (editor)
            {
                editor.onload = null; // clear event
               var dupe = false;
               for(var x=0;x<newAr.length;x++)
               {
                    if (newAr[x].ID.toString()==editors[i].ID.toString())
                    {
                        dupe = true;
                        break;
                    }
               }
               if (dupe)
               continue;
               InitialiseEditor(editors[i]);
               newAr.push(editors[i]);
            }
        }
        editors = newAr;
    }
    
    function ToggleHtmlView( Kridabo_UID )
    {
         for(var i=0;i<editors.length;i++)
         {  
            if (editors[i].ID==Kridabo_UID)
            {
                editors[i].View = editors[i].View=="design"?"source":"design";
                InitialiseEditor(editors[i]);
                return;
            }
         }
    }
    
 
