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

//var textarea;
//var content;
var bbeditorDir;
//document.write("<link href=\"bbeditor/styles.css\" rel=\"stylesheet\" type=\"text/css\">");

function edToolbar(obj) {
		var textareaObj=$('#'+obj); 
		if( textareaObj.attr('hasBBEditor') ) return;
		//document.write( getBBEditorHTML(obj) ); 
		var buttonsDiv=document.createElement('div');
		buttonsDiv.id="bbEditorButtons"
		buttonsDiv.innerHTML= getBBEditorHTML(obj)
		
		textareaObj.before( buttonsDiv ); 
		textareaObj.attr('hasBBEditor',1);
	//document.write("<textarea id=\""+ obj +"\" name = \"" + obj + "\" cols=\"" + width + "\" rows=\"" + height + "\"></textarea>");
}

function getBBEditorHTML(obj){
 
	var bbCSSLink = document.createElement('link');
	bbCSSLink.setAttribute('rel', 'stylesheet');
	bbCSSLink.type = 'text/css';
	bbCSSLink.href = bbeditorDir+'bbeditor/styles.css'; 
	$('head').append(bbCSSLink);
	
	var html='';
	html=html+"<div class='bbEditorToolbar'> ";	
    html=html+  "<img class=\"bbEditorButton\" src=\""+bbeditorDir+"bbeditor/images/bold.gif\" name=\"btnBold\" onClick=\"doAddTags('[b]','[/b]','" + obj + "')\">" ;
    html=html+  "<img class=\"bbEditorButton\" src=\""+bbeditorDir+"bbeditor/images/italic.gif\" name=\"btnItalic\" onClick=\"doAddTags('[i]','[/i]','" + obj + "')\"> ";
	html=html+  "<img class=\"bbEditorButton\" src=\""+bbeditorDir+"bbeditor/images/underline.gif\" name=\"btnUnderline\" onClick=\"doAddTags('[u]','[/u]','" + obj + "')\"> ";
	html=html+  "<img class=\"bbEditorButton\" src=\""+bbeditorDir+"bbeditor/images/link.gif\" name=\"btnLink\" onClick=\"doURL('" + obj + "')\"> ";
	html=html+  "<img class=\"bbEditorButton\" src=\""+bbeditorDir+"bbeditor/images/picture.gif\" name=\"btnPicture\" onClick=\"doImage('" + obj + "')\"> ";
	//html=html+"<img class=\"bbEditorButton\" src=\""+bbeditorDir+"bbeditor/images/ordered.gif\" name=\"btnList\" onClick=\"doList('[LIST=1]','[/LIST]','" + obj + "')\">";
	//html=html+"<img class=\"bbEditorButton\" src=\""+bbeditorDir+"bbeditor/images/unordered.gif\" name=\"btnList\" onClick=\"doList('[LIST]','[/LIST]','" + obj + "')\">";
	html=html+  "<img class=\"bbEditorButton\" src=\""+bbeditorDir+"bbeditor/images/quote.gif\" name=\"btnQuote\" onClick=\"doAddTags('[quote]','[/quote]','" + obj + "')\"> ";
	html=html+  "<img class=\"bbEditorButton\" src=\""+bbeditorDir+"bbeditor/images/emoticon.gif\" name=\"btnEmoticon\" onClick=\"toggleEmoticonPanel()\"> ";
	html=html+  "<div class='bbEditorEmoticonSelector' > ";
	//html=html+      "<div class='bbEditorEmoticonTxt'></div>";
	html=html+ 	    "<a onClick=\"doAddEmoticon('" + obj + "',':-)')\" ><img class=\"bbEditorEmoticon\" src=\""+bbeditorDir+"bbeditor/images/emoticon_smile.png\" alt=\"smile\" /></a>";
	html=html+ 	    "<a onClick=\"doAddEmoticon('" + obj + "',':-D')\" ><img class=\"bbEditorEmoticon\" src=\""+bbeditorDir+"bbeditor/images/emoticon_grin.png\" alt=\"grin\" /></a>";
	html=html+ 	    "<a onClick=\"doAddEmoticon('" + obj + "',':-(')\" ><img class=\"bbEditorEmoticon\" src=\""+bbeditorDir+"bbeditor/images/emoticon_sad.png\" alt=\"sad\" /></a>";
	html=html+ 	    "<a onClick=\"doAddEmoticon('" + obj + "',':-|')\" ><img class=\"bbEditorEmoticon\" src=\""+bbeditorDir+"bbeditor/images/emoticon_bland.png\" alt=\"expressionless\" /></a>";
	html=html+ 	    "<a onClick=\"doAddEmoticon('" + obj + "','8-)')\" ><img class=\"bbEditorEmoticon\" src=\""+bbeditorDir+"bbeditor/images/emoticon_shades.png\" alt=\"shades\" /></a>";
	html=html+ 	    "<a onClick=\"doAddEmoticon('" + obj + "','>:-(')\" ><img class=\"bbEditorEmoticon\" src=\""+bbeditorDir+"bbeditor/images/emoticon_angry.png\" alt=\"angry\" /></a>";
	html=html+ 	    "<a onClick=\"doAddEmoticon('" + obj + "','>:-)')\" ><img class=\"bbEditorEmoticon\" src=\""+bbeditorDir+"bbeditor/images/emoticon_mischief.png\" alt=\"mischievous\" /></a>";
	html=html+ 	    "<a onClick=\"doAddEmoticon('" + obj + "',':\\'-(')\" ><img class=\"bbEditorEmoticon\" src=\""+bbeditorDir+"bbeditor/images/emoticon_cry.png\" alt=\"crying\" /></a>";
	html=html+ 	    "<a onClick=\"doAddEmoticon('" + obj + "',':-0')\" ><img class=\"bbEditorEmoticon\" src=\""+bbeditorDir+"bbeditor/images/emoticon_oface.png\" alt=\"surprise\" /></a>";
	html=html+ 	    "<a onClick=\"doAddEmoticon('" + obj + "',';-)')\" ><img class=\"bbEditorEmoticon\" src=\""+bbeditorDir+"bbeditor/images/emoticon_wink.png\" alt=\"wink\" /></a>";
	html=html+ 	    "<a onClick=\"doAddEmoticon('" + obj + "',':-P')\" ><img class=\"bbEditorEmoticon\" src=\""+bbeditorDir+"bbeditor/images/emoticon_tongue.png\" alt=\"tongue out\" /></a>";
	html=html+ 	    "<a onClick=\"doAddEmoticon('" + obj + "',':-/')\" ><img class=\"bbEditorEmoticon\" src=\""+bbeditorDir+"bbeditor/images/emoticon_slant.png\" alt=\"awkward\" /></a>";
	html=html+ 	    "<a onClick=\"doAddEmoticon('" + obj + "',':-S')\" ><img class=\"bbEditorEmoticon\" src=\""+bbeditorDir+"bbeditor/images/emoticon_confused.png\" alt=\"confused\" /></a>";
	html=html+  "</div> ";
	html=html+"</div>";
  	//html=html+"<img class=\"bbEditorButton\" src=\""+bbeditorDir+"bbeditor/images/code.gif\" name=\"btnCode\" onClick=\"doAddTags('[code]','[/code]','" + obj + "')\">";
   return html;
}

function doImage(obj)
{
var textarea = document.getElementById(obj); 
var url = prompt('Enter the Image URL:','http://');
if (url == null) {
	return false;
}

var scrollTop = textarea.scrollTop;
var scrollLeft = textarea.scrollLeft;

	if (document.selection) 
			{
				textarea.focus();
				var sel = document.selection.createRange();
				sel.text = '[img]' + url + '[/img]';
			}
   else 
    {
		var len = textarea.value.length;
	    var start = textarea.selectionStart;
		var end = textarea.selectionEnd;
		
        var sel = textarea.value.substring(start, end);
	    //alert(sel);
		var rep = '[img]' + url + '[/img]';
        textarea.value= textarea.value.substring(0,start) + rep + textarea.value.substring(end,len) ;
		
			
		textarea.scrollTop = scrollTop;
		textarea.scrollLeft = scrollLeft;
	}

}

function doURL(obj){
	var textarea = document.getElementById(obj);
	var url = prompt('Enter the URL:','http://');
	if (url == null) {
		return false;
	}
	var scrollTop = textarea.scrollTop;
	var scrollLeft = textarea.scrollLeft;

	if (document.selection) 
			{
				textarea.focus();
				var sel = document.selection.createRange();
				
				if(sel.text==""){
					// no [url] because we have autolink on
					sel.text = url;
				} else {
					sel.text = '[url=' + url + ']' + sel.text + '[/url]';
				}			
	
				
			}
   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 = url;
				} else
				{
				var rep = '[url=' + url + ']' + sel + '[/url]';
				}
	    //alert(sel);
		
        textarea.value= textarea.value.substring(0,start) + rep + textarea.value.substring(end,len) ;
		
			
		textarea.scrollTop = scrollTop;
		textarea.scrollLeft = scrollLeft;
	}
}

function doAddTags(tag1,tag2,obj){
	var textarea = document.getElementById(obj);
	textareaObj=$(textarea);
	// 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 toggleEmoticonPanel(){
	$('.bbEditorEmoticonSelector').each(function(i,el){
		if(el.style.display=='block')
			 el.style.display='none';
		else el.style.display='block';
		clearTimeout(el.hovrTmr);
		el.onmouseover=function(){
			clearTimeout(this.hovrTmr)
		}
		el.onmouseout=function(){
			this.hovrTmr=setTimeout("$('.bbEditorEmoticonSelector').css('display','none')",3000)
		}
	});
}


function doAddEmoticon( obj, newEmoticon ){ 
	
	if(!newEmoticon) return false;
	 
	if( newEmoticon.substring(newEmoticon.length-1) )
		newEmoticon=newEmoticon+' ';
	
	var textarea = document.getElementById(obj);

	var scrollTop = textarea.scrollTop;
	var scrollLeft = textarea.scrollLeft;

	if (document.selection){
		textarea.focus();
		var sel = document.selection.createRange();
				
		if(sel.text==""){
			sel.text = newEmoticon;
		} else {
			sel.text = sel.text + newEmoticon;
		}			
		//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 = newEmoticon;
		} else {
			var rep = sel + newEmoticon;
		}
	    //alert(sel);
		
        textarea.value= textarea.value.substring(0,start) + rep + textarea.value.substring(end,len) ;
			
		textarea.scrollTop = scrollTop;
		textarea.scrollLeft = scrollLeft;
	} 
	
	toggleEmoticonPanel();
}


function doList(tag1,tag2,obj){
	var textarea = document.getElementById(obj);
	textareaObj=$(textarea);
	// 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;
 }
} 