/*****************************************/
// Name: Javascript Textarea BBCode Markup Editor
// Version: 1.3
// Author: Balakrishnan
// Last Modified Date: 25/jan/2009
// License: Free
// URL: http://www.corpocrat.com
/******************************************/

/*****************************************/
// Modified by Michael A. Peters
//  for DOMBlogger
//
// - JS ported to DOM2 for xhtml compliance
// - functionallity customized
// - Added color selectors
// < mpeters@mac.com >
// Version: 1.3.mod.0.7
// Last Modified Date: 26/jan/2010
// URL: http://www.clfsrpm.net/
//
/******************************************/

function addButton(image,name,title,toolBar) {
   var button = document.createElement("img");
   var imageURI = 'bbeditor/images/' + image;
   button.setAttribute("class","button");
   button.setAttribute("src",imageURI);
   button.setAttribute("title",title);
   button.setAttribute("alt",name);
   button.setAttribute("id",name);
   button.setAttribute("width","22");
   button.setAttribute("height","22");
   toolBar.appendChild(button);
   }
   
function addColor(color,toolBar) {
   //alert(color);
   var niceColor = color.substr(0, 1).toUpperCase() + color.substr(1);
   var imageURI = 'bbeditor/images/' + color + '.png';
   var name = 'btn' . niceColor;
   var button = document.createElement("img");
   button.setAttribute("class","button");
   button.setAttribute("src",imageURI);
   button.setAttribute("title",niceColor);
   button.setAttribute("alt",name);
   button.setAttribute("id",name);
   var func = "wrapColor('" + color + "')"
   AttachEvent(button,'click',function() {wrapColor(color)},false);
   toolBar.appendChild(button);
   }
   
function wrapColor(color) {
   var first = '[color=' + color + ']';
   doAddTags(first,'[/color]');
   }

function edToolbar() {
   var toolBar = document.getElementById("bbtoolbar");
   toolBar.setAttribute("class","toolbar");
   
   addButton('bold.gif','btnBold','Bold',toolBar);
   var button = document.getElementById('btnBold');
   AttachEvent(button,'click',function() {doAddTags('[b]','[/b]')},false);
   
   addButton('italic.gif','btnItalic','Italic',toolBar);
   var button = document.getElementById('btnItalic');
   AttachEvent(button,'click',function() {doAddTags('[i]','[/i]')},false);
   
   addButton('underline.gif','btnUnderline','Underline',toolBar);
   var button = document.getElementById('btnUnderline');
   AttachEvent(button,'click',function() {doAddTags('[u]','[/u]')},false);
   
   addButton('link.gif','btnLink','Hyperlink',toolBar);
   var button = document.getElementById('btnLink');
   AttachEvent(button,'click',function() {doFancy('[url]','[/url]','Enter the link URL :')},false);
   
   addButton('picture.gif','btnPicture','Image',toolBar);
   var button = document.getElementById('btnPicture');
   //button.addEventListener('click',doImage,false);
   AttachEvent(button,'click',doImage,false);

   addButton('ordered.gif','btnOList','Orderd List',toolBar);
   var button = document.getElementById('btnOList');
   AttachEvent(button,'click',function() {doList('[ol]','[/ol]')},false);

   addButton('unordered.gif','btnUList','Bullet List',toolBar);
   var button = document.getElementById('btnUList');
   AttachEvent(button,'click',function() {doList('[ul]','[/ul]')},false);

   addButton('quote.gif','btnQuote','Quotation',toolBar);
   var button = document.getElementById('btnQuote');
   AttachEvent(button,'click',function() {doAddTags('[quote]','[/quote]')},false);

   addButton('email.png','btnEmail','Email Address',toolBar);
   var button = document.getElementById('btnEmail');
   AttachEvent(button,'click',function() {doFancy('[email]','[/email]','Enter the email address :')},false);

   addButton('code.gif','btnCode','Code Block',toolBar);
   var button = document.getElementById('btnCode');
   AttachEvent(button,'click',doCode,false);
   
   addButton('media.png','btnMedia','Multimedia',toolBar);
   var button = document.getElementById('btnMedia');
   AttachEvent(button,'click',function() {doAddTags('[media]','')},false);
   
//   var clear = document.createElement("div");
//   clear.setAttribute("style","clear: both;");
//   toolBar.appendChild(clear);

//   var breakEl = document.createElement("br");
//   toolBar.appendChild(breakEl);
//   var textEn  = document.createTextNode("Font Colors:");
//   toolBar.appendChild(textEn);
//   var breakEl = document.createElement("br");
//   toolBar.appendChild(breakEl);
   
   var w3cColor = ['aqua', 'black', 'blue', 'fuchsia', 'gray', 'green', 'lime', 'maroon', 'navy', 'olive', 'purple', 'red', 'silver', 'teal', 'white', 'yellow'];
   
   for (var i=0; i<w3cColor.length; i++) {
      addColor(w3cColor[i],toolBar);
      }

   }

function doFancy(tag1,tag2,phrase) {
   var textarea = document.getElementById('bloginput');
   var userInput = prompt(phrase,'');
   var scrollTop = textarea.scrollTop;
   var scrollLeft = textarea.scrollLeft;
   var myFancy = tag1.replace(/\]/,"=");
 
   if (document.selection) {
      textarea.focus();
      var sel = document.selection.createRange();
      if(sel.text==""){
         sel.text = tag1  + userInput + tag2;
         } else {
         sel.text = myFancy + userInput + ']' + sel.text + tag2;
         }			
         //alert(sel.text);
      } else {
      var len = textarea.value.length;
      var start = textarea.selectionStart;
      var end = textarea.selectionEnd;
      
      var sel = textarea.value.substring(start, end);
      if(sel=="") {
         var rep = tag1 + userInput + tag2;
         } else {
         var rep = myFancy + userInput + ']' + sel + tag2;
         }
      //alert(sel);
 
      textarea.value =  textarea.value.substring(0,start) + rep + textarea.value.substring(end,len);
      textarea.scrollTop = scrollTop;
      textarea.scrollLeft = scrollLeft;
      }
   }
   
function doImage() {
   var tag1 = '[img]';
   var tag2 = '[/img]';
   var phrase = 'Enter the image URL :';
   var textarea = document.getElementById('bloginput');
   var userInput = prompt(phrase,'');
   var scrollTop = textarea.scrollTop;
   var scrollLeft = textarea.scrollLeft;
   var myFancy = tag1.replace(/\]/,"=");
 
   if (document.selection) {
      textarea.focus();
      var sel = document.selection.createRange();
      if(sel.text==""){
         sel.text = tag1  + userInput + tag2;
         } else {
         sel.text = myFancy + sel.text + ']' + userInput + tag2;
         }			
         //alert(sel.text);
      } else {
      var len = textarea.value.length;
      var start = textarea.selectionStart;
      var end = textarea.selectionEnd;
      
      var sel = textarea.value.substring(start, end);
      if(sel=="") {
         var rep = tag1 + userInput + tag2;
         } else {
         var rep = myFancy + sel + ']' + userInput + tag2;
         }
      //alert(sel);
 
      textarea.value =  textarea.value.substring(0,start) + rep + textarea.value.substring(end,len);
      textarea.scrollTop = scrollTop;
      textarea.scrollLeft = scrollLeft;
      }
   }
   
function doCode() {
   var tag1 = '[code]';
   var tag2 = '[/code]';
   var phrase = 'Enter the Code Language :';
   var textarea = document.getElementById('bloginput');
   var userInput = prompt(phrase,'');
   var scrollTop = textarea.scrollTop;
   var scrollLeft = textarea.scrollLeft;
   var myFancy = tag1.replace(/\]/,"=");
   //alert(myFancy);
 
   if (document.selection) {
      textarea.focus();
      var sel = document.selection.createRange();
      if(userInput==""){
         sel.text = tag1 + '\n' + sel.text + '\n' + tag2;
         } else {
         sel.text = myFancy + userInput + ']\n' + sel.text + '\n' + tag2;
         }			
         //alert(sel.text);
      } else {
      var len = textarea.value.length;
      var start = textarea.selectionStart;
      var end = textarea.selectionEnd;
      
      var sel = textarea.value.substring(start, end);
      if(userInput=="") {
         var rep = tag1 + '\n' + sel + '\n' + tag2;
         } else {
         var rep = myFancy + userInput + ']\n' + sel + '\n' + tag2;
         }
 
      textarea.value =  textarea.value.substring(0,start) + rep + textarea.value.substring(end,len);
      textarea.scrollTop = scrollTop;
      textarea.scrollLeft = scrollLeft;
      }
   }
 
function doAddTags(tag1,tag2) {
   var textarea = document.getElementById('bloginput');
   // Code for IE
   if (document.selection) {
      textarea.focus();
      var sel = document.selection.createRange();
      //alert(sel.text);
      sel.text = tag1 + sel.text + tag2;
      } else {
      // Code for Mozilla Firefox
      var len = textarea.value.length;
      var start = textarea.selectionStart;
      var end = textarea.selectionEnd;
 
      var scrollTop = textarea.scrollTop;
      var scrollLeft = textarea.scrollLeft;
 
      var sel = textarea.value.substring(start, end);
      //alert(sel);
      var rep = tag1 + sel + tag2;
      textarea.value =  textarea.value.substring(0,start) + rep + textarea.value.substring(end,len);
      textarea.scrollTop = scrollTop;
      textarea.scrollLeft = scrollLeft;
      }
   }
 
function doList(tag1,tag2) {
   var textarea = document.getElementById('bloginput');
   // Code for IE
   if (document.selection) {
      textarea.focus();
      var sel = document.selection.createRange();
      var list = sel.text.split('\n');
      for(i=0;i<list.length;i++) {
         list[i] = '[*]' + list[i];
         }
         //alert(list.join("\n"));
      sel.text = tag1 + '\n' + list.join("\n") + '\n' + tag2;
      } else {
      // Code for Firefox
      var len = textarea.value.length;
      var start = textarea.selectionStart;
      var end = textarea.selectionEnd;
      var i;
      var scrollTop = textarea.scrollTop;
      var scrollLeft = textarea.scrollLeft;
  
      var sel = textarea.value.substring(start, end);
      //alert(sel);
 
      var list = sel.split('\n');
      for(i=0;i<list.length;i++) {
         list[i] = '[*]' + list[i];
         }
     //alert(list.join("<br>"));
     var rep = tag1 + '\n' + list.join("\n") + '\n' +tag2;
     textarea.value =  textarea.value.substring(0,start) + rep + textarea.value.substring(end,len);
     textarea.scrollTop = scrollTop;
     textarea.scrollLeft = scrollLeft;
     }
  }

//window.onload = edToolbar;
womAdd('edToolbar()');
womOn();