//DanPHPSupport - A Support System written in PHP | Written by Daniel Lo Nigro of DanSoft Australia | 
//http://www.dansoftaustralia.net/
//Modified For Toufee.com

var b = 2;
var i = 2;
var u = 2;
var q = 2;
var c = 2;
var url = 2;
var img = 2;


function getSelObj() {
	var selectionObject;

	if (document.getSelection) {
		selectionObject = document.getSelection();
	}
	else if (document.selection) { // should come last; Opera!
		selectionObject = document.selection.createRange();
	}	
		
	return selectionObject;
}

function getSelectionText() {
	var selectionObject = getSelObj();	
	if (selectionObject.text)
		selectionObject = selectionObject.text;
	return selectionObject;
}

function setSelectionText(insertText) {
	var insertNode = document.createTextNode(insertText);
	var sel = getSelObj();	
	var range = getRangeObject();
	
	sel.removeAllRanges();
	range.deleteContents();
	
	var container = range.startContainer;
	var pos = range.startOffset;

	range=document.createRange();
	alert(container.nodeType+':'+insertNode.nodeType);
	if (container.nodeType==3 && insertNode.nodeType==3) {
	    container.insertData(pos, insertNode.nodeValue);
	
	    range.setEnd(container, pos+insertNode.length);
	    range.setStart(container, pos+insertNode.length);
	}else {
	    var afterNode;
	    
		if (container.nodeType==3) {
	
	      var textNode = container;
	      container = textNode.parentNode;
	      var text = textNode.nodeValue;

	      var textBefore = text.substr(0,pos);t
	      var textAfter = text.substr(pos);
	
	      var beforeNode = document.createTextNode(textBefore);
	      afterNode = document.createTextNode(textAfter);
	
	      container.insertBefore(afterNode, textNode);
	      container.insertBefore(insertNode, afterNode);
	      container.insertBefore(beforeNode, insertNode);

	      container.removeChild(textNode);
	    } else {
	      afterNode = container.childNodes[pos];
	      container.insertBefore(insertNode, afterNode);
    	}

	    range.setEnd(afterNode, 0);
	    range.setStart(afterNode, 0);
  	}
	
	sel.addRange(range);
}

function getRangeObject() {
	var selectionObject = getSelObj();
	
	if (selectionObject.getRangeAt)
		return selectionObject.getRangeAt(0);
	else { // Safari!
		var range = document.createRange();
		range.setStart(selectionObject.anchorNode,selectionObject.anchorOffset);
		range.setEnd(selectionObject.focusNode,selectionObject.focusOffset);
		return range;
	}
}

function doGetCaretPosition (ctrl) {
	var CaretPos = 0;
	// IE Support
	if (document.selection) {
		ctrl.focus ();
		var Sel = document.selection.createRange ();
		Sel.moveStart ('character', -ctrl.value.length);
		CaretPos = Sel.text.length;
	}
	// Firefox support
	else if (ctrl.selectionStart || ctrl.selectionStart == '0')
	CaretPos = ctrl.selectionStart;
	return (CaretPos);
}

function setCaretPosition(ctrl, pos){
	if(ctrl.setSelectionRange)
	{
		ctrl.focus();
		ctrl.setSelectionRange(pos,pos);
	}
	else if (ctrl.createTextRange) {
		var range = ctrl.createTextRange();
		range.collapse(true);
		range.moveEnd('character', pos);
		range.moveStart('character', pos);
		range.select();
	}
}

function tag(tagadd, tagclose, name) {	
	var field = document.getElementById('message'); 	
	
	if(typeof field.selectionStart == 'number'){
		startPos = field.selectionStart;
  		endPos = field.selectionEnd;
		before = field.value.substr(0, startPos);
  		selected = field.value.substr(field.selectionStart, (field.selectionEnd - field.selectionStart));
		if((name=="quote")&&(selected.length==0)){
			selected = getSelectionText();
		}
  		after = field.value.substr(field.selectionEnd, (field.value.length - field.selectionEnd));
  		field.value = before + tagadd + selected + tagclose + after;
		setCaretPosition(field, startPos+tagadd.length);		
	} else {
		var range = document.selection.createRange();
		var stored_range = range.duplicate();
		selected = range.text;
		if((name=="quote")&&(selected.length==0)){
			selected = getSelectionText();
		}
		if (range.parentElement() == field){
			document.selection.createRange().text = tagadd + selected + tagclose;
			range.setStart(tagadd.length);
			range.setEnd(tagadd.length);
		}else{
			field.innerText = field.innerText+tagadd+selected+tagclose;
		}
	}
	field.focus();
	return false;
}

//Function for adding font color and size tags
function font(bbopen, bbclose) {
	
	var r = "";

	if (document.selection) {
		r = document.selection.createRange().text;
	}
	
	if(r != ""){
		rr = bbopen + r + bbclose;
		document.selection.createRange().text = rr;
	} else {
		var post = document.adminForm.message;
		post.value += bbopen + bbclose;
		post.focus();
		return;
	}
}

//Function for adding smilies
function smilie (smilie) {
        var post = document.adminForm.message;
        post.value += smilie;
        post.focus();
        return;
}

//Helpbox messages
bold_help = "Bold Text: [b]Text[/b]";
italic_help = "Italic Text: [i]Text[/i]";
underline_help = "Underline Text: [u]Text[/u]";
quote_help = "Quote Text: [quote]Text[/quote] or [quote=name]Text[/quote]";
code_help = "Code Display: [code]Code[/code]";
img_help = "Insert Image: [img]http://Image_URL[/img]";
url_help = "Insert URL: [url]http://URL[/url] or [url=http://URL]URL Text[/url]";
fontcolor_help = "Font Color: [color=red]Text[/color]  Tip: you can also use Color=#FF0000";
fontsize_help = "Font Size: [size=50%]Small Text[/size]";

//Function for displaying help information
// Shows the help messages in the helpline window
function helpline(help) {
	//var helpbox = document.adminForm.helpbox;
	var helpbox = document.getElementById('helpbox');
	helpbox.value = eval(help + "_help");
}
