/*
 * Codestars bbCode 1.0
 * By Floris Weijenburg (http://www.florisweijenburg.nl)
 * Copyright (c) 2008 Floris Weijenburg
 * All programming rights reserved.
*/

CS.DOM.bbCode = function(elementName) 
{
	this.targetField = document.getElementById(elementName); 
}

CS.DOM.bbCode.prototype.AppendTags = function(token)
{
	var valueAddition;
	var openTag  = '[' + token + ']'; 
	var closeTag = '[/' + token + ']';
	
	if(!this.GetSelected(openTag, closeTag))
	{
		valueAddition = (this.targetField.value == '' || this.targetField.value == null ? 
		openTag+closeTag : openTag+closeTag);	 
		if(this.targetField != null) { this.AddValueToElement(valueAddition); }
	} 
}

CS.DOM.bbCode.prototype.AddSmiley = function(smileyCode) 
{
	var valueAddition;
	
	valueAddition = (this.targetField.value == '' || this.targetField.value == null ? smileyCode : smileyCode);	
	this.AddValueToElement(valueAddition);
}

CS.DOM.bbCode.prototype.AddValueToElement = function(valueAddition)
{
    if(window.getSelection || document.getSelection)
    /* Mozilla, Firefox, Safari, Opera, Netscape, Icab */
    {
        var selBegin = (this.targetField).selectionStart;
        var selEnd = (this.targetField).selectionEnd;
        var oldValue = (this.targetField).value;
        var extraSpace = (this.targetField.value == '' || this.targetField.value == null ? '' : ' ');
        
        (this.targetField).value = oldValue.substring(0, selBegin) + extraSpace + valueAddition + ' '  + oldValue.substring(selEnd, oldValue.length);
        (this.targetField).focus();
        
        if((this.targetField).setSelectionRange) 
        {
            (this.targetField).setSelectionRange(selBegin, selBegin);
        }
    }
    else if(document.selection)
    /* Explorer */
    {
        (this.targetField).focus();
        var selection = document.selection.createRange();
        selection.text = ' ' + valueAddition + ' ';
    }
}

CS.DOM.bbCode.prototype.UrlEvent = function() 
{
	var url = window.prompt('Geef het internet adres op:', 'http://');
	var text = window.prompt('Geef de titel van het internet adres op:', '');
	var bbCodeString;
	
	if(url != '' && url != null) {
		if(text == '' || text == null) { 
			bbCodeString = '[url]' + url + '[/url] ';
		} else {
			bbCodeString = '[url=' + url + ']' + text + '[/url] ';
		}
		this.targetField.value += bbCodeString;
	}
} 

CS.DOM.bbCode.prototype.ImageEvent = function() 
{
	var url = window.prompt('Geef de URL op van de afbeelding:', 'http://');
	var bbCodeString;
	
	if(url != '' && url != null) 
	{
		this.targetField.value += '[img]' + url + '[/img] ';
	}
} 

CS.DOM.bbCode.prototype.GetSelected = function(openTag, closeTag) 
{
	var changed = false;
	
	if(window.getSelection) 
	{ 
		// Netscape/mozilla
		var start = this.targetField.selectionStart;
		var end   = this.targetField.selectionEnd;
		
		if(end - start > 0) {
			var oldtext = this.targetField.value;
			var newtext = oldtext.substring(0, start) + openTag + oldtext.substring(start, end);
			
			newtext += closeTag + oldtext.substring(end, oldtext.length);
			this.targetField.value = newtext;
			changed = true; 
		}
	} else if(document.selection != "") 
	{
		// Internet Explorer
		var txt = document.selection.createRange().text;
		
		if(txt.length > 0) 
		{
			document.selection.createRange().text = openTag+txt+closeTag;
			changed = true;
		}
	}
	
	return changed;
}