 /***********************************************
 *
 * Simple Style Toolbar
 * Created by ImaginaryPaper (2007)
 * http://www.imaginarypaper.com
 * Please do not remove the header
 *
 ************************************************/


// Turn Styles off by default
style_behavior=0;
bold_style_behavior=0;
italics_style_behavior=0;
underline_style_behavior=0;


function turnStyleOn(style_value){
	switch (style_value){
		case "b":
			bold_style_behavior=1;
			break;
		case "i":
			italics_style_behavior=1;
			break;
		case "u":
			underline_style_behavior=1;
			break;
	}

	open_tag = "<" + style_value + ">";
	return open_tag;
}
function turnStyleOff(style_value){
	switch (style_value){
		case "b":
			bold_style_behavior=0;
			break;
		case "i":
			italics_style_behavior=0;
			break;
		case "u":
			underline_style_behavior=0;
			break;
	}
	close_tag = "</" + style_value + ">";
	return close_tag;
}
function styleCheck(style_value){
	switch (style_value){
		case "b":
			style_behavior=bold_style_behavior;
			break;
		case "i":
			style_behavior=italics_style_behavior;
			break;
		case "u":
			style_behavior=underline_style_behavior;
			break;
	}
	return style_behavior;
}
function wrapStyle(current_entry) {
	// This brings the focus back to the textarea
	document.getElementsByTagName('textarea')[0].focus();

	if (document.selection) {// IE
		IEStyle(current_entry);
	} else { //Mozilla
		mozStyle(current_entry);
	}
}
function mozStyle(style_value) {
	txtarea = document.getElementsByTagName('textarea')[0];
	strSelection = (txtarea.value).substring(txtarea.selectionStart, txtarea.selectionEnd);
	beforeSelection = (txtarea.value).substring(0,txtarea.selectionStart);
	afterSelection = (txtarea.value).substring(txtarea.selectionEnd);
			
	if (strSelection != "") {
		open_tag=turnStyleOn(style_value);
		close_tag=turnStyleOff(style_value);
		txtarea.value = beforeSelection + open_tag + strSelection + close_tag + afterSelection;
	} else {
		if (styleCheck(style_value)==0) { // Styles turned on?
			open_tag=turnStyleOn(style_value);
			txtarea.value = txtarea.value + open_tag;
		} else {
			close_tag=turnStyleOff(style_value); //Style is now off
			txtarea.value = txtarea.value + close_tag;
		}
	}
}
function IEStyle(style_value) {
	strSelection = document.selection.createRange().text;
    	if(strSelection != "") { // User has selected text to stylize
		open_tag=turnStyleOn(style_value);
		close_tag=turnStyleOff(style_value);
		document.selection.createRange().text = open_tag + strSelection + close_tag;
    	} else { // No text has been highlighted to style
		if (styleCheck(style_value)==0) { // Styles turned on?
			open_tag=turnStyleOn(style_value);
			document.selection.createRange().text = open_tag;
		} else {
			close_tag=turnStyleOff(style_value); //Style is now off
			document.selection.createRange().text = close_tag;
		}
	}
}
function doLink() { 
	document.getElementsByTagName('textarea')[0].focus();

	// Browser Check!
	if (document.selection) {// IE
		IELink();
	} else { //Mozilla
		mozLink();
	}
}
function IELink() {
	strSelection = document.selection.createRange().text;
   	if(strSelection != "") { // User has selected text to link
		usr_link = prompt("Enter URL:","http://");
		if (usr_link != null) {
			document.selection.createRange().text = "<a href=\"" + usr_link + "\">" + strSelection + "</a>";
		}
    	} else { // No text has been highlighted to link
		usr_link = prompt("Enter URL:","http://");
		if (usr_link != null) {
			usr_link_text = prompt("Link Text:","");
			if (usr_link_text != null) {
				document.selection.createRange().text = "<a href=\"" + usr_link + "\">" + usr_link_text + "</a>";
			}
		}
	}
}
function mozLink() {
	txtarea = document.getElementsByTagName('textarea')[0];
	strSelection = (txtarea.value).substring(txtarea.selectionStart, txtarea.selectionEnd);
	beforeSelection = (txtarea.value).substring(0,txtarea.selectionStart);
	afterSelection = (txtarea.value).substring(txtarea.selectionEnd);

   	if(strSelection != "") { // User has selected text to link
		usr_link = prompt("Enter URL:","http://");
		if (usr_link != null) {
			txtarea.value = beforeSelection + "<a href=\"" + usr_link + "\">"  + strSelection + "</a>" + afterSelection;
  		}
   	} else { // No text has been highlighted to link
		usr_link = prompt("Enter URL:","http://");
		if (usr_link != null) {
			usr_link_text = prompt("Link Text:","");
			if (usr_link_text != null) {
				txtarea.value = beforeSelection +  "<a href=\"" + usr_link + "\">" + usr_link_text + "</a>" + afterSelection;
			}
		}
	}
}
function mouseover() {
	this.className = "raised";
}
function mouseout() {
	this.className = "button";
}
function mousedown() {
	this.className = "pressed";
}
function mouseup() {
	this.className = "raised";
}
function format_sel(v) {
	wrapStyle(v);
	return;
}
function mozBreak() {
	txtarea = document.getElementsByTagName('textarea')[0];
	txtarea.value = txtarea.value + "<br><br>";
}
function IEBreak() {
	document.selection.createRange().text = "<br><br>";
}
function assignEvent() {
	var btn_id = this.id;
	
	if (btn_id.length > 1)
		doLink();
	else
		format_sel(btn_id);
}
function init() {
	var btn_styles = document.getElementsByTagName('img');
	var text_area = document.getElementsByTagName('textarea');
	
	for(var count=0; count < btn_styles.length; count++){
		btn_styles[count].onmouseover = mouseover;
		btn_styles[count].onmouseout = mouseout;
		btn_styles[count].onmousedown = mousedown;
		btn_styles[count].onmouseup = mouseup;
		btn_styles[count].onclick = assignEvent;
	}
	
	text_area[0].onkeypress = function (evt) {
		//var keyCode = evt.keyCode;
		if(evt && evt.which) { 
			evt=evt;
			characterCode = evt.which;
		} else {
			evt=event;
			characterCode = evt.keyCode;
		}
		if(characterCode == 13){
			if (document.selection) {// IE
				IEBreak();
			} else { //Mozilla
				mozBreak();
			}	
		}

		return;
	};
}
window.onload = init;