/**
 * VC Kwoen - Friends Group Website
 * Copyright (c) 2005-2010 Tim Kurvers
 * 
 * @author		Tim Kurvers <tim@moonsphere.net>
 * @copyright	2010 Tim Kurvers
 * @link		http://www.vckwoen.nl
 */

/**
 * VC Kwoen Class
 */
var VCKwoen = function() {
	
	/**
	 * Sloppy accessible singleton
	 */
	VCKwoen.instance = this;
		
	/**
	 * Reference to self
	 */
	var self = this;
	
	/**
	 * Sets the caret position
	 * @see		http://plugins.jquery.com/project/caret
	 */
	this.caret = function(id, position, range) {
		var target = document.getElementById(id);
		var arglen = arguments.length; 
		if(arglen == 0 || arglen == 1) {
			if(target.selectionStart) {
				var pos = target.selectionStart;
				return (pos > 0) ? pos : 0;
			}else if(target.createTextRange) {
				target.focus();
				var range = document.selection.createRange();
				if(range == null) {
					return 0;
				}
				var re = target.createTextRange();
				var rc = re.duplicate();
				re.moveToBookmark(range.getBookmark());
				rc.setEndPoint('EndToStart', re);
				return rc.text.length;
			}else{
				return 0;
			}
		}else{
			target.focus();
			if(position < 0) {
				position = target.value.length + position;
			}
			if(target.setSelectionRange) {
				var end = (range === undefined) ? position : position + range;
				target.setSelectionRange(position, end);
			}else if(target.createTextRange) {
				var range = target.createTextRange();
				range.collapse(true);
				range.moveEnd('character', position);
				range.moveStart('character', position);
				range.select();
			}
		}
	};
	
	/**
	 * Adds code to the given field
	 */
	this.code = function(id, type) {
		var field = document.getElementById(id);
		switch(type) {
			case 'b':
				field.value += '[b][/b]';
				this.caret(id, -4);
			break;
			case 'i':
				field.value += '[i][/i]';
				this.caret(id, -4);
			break;
			case 'u':
				field.value += '[u][/u]';
				this.caret(id, -4);
			break;
			case 'strike':
				field.value += '[strike][/strike]';
				this.caret(id, -9);
			break;
			case 'url':
				var url = window.prompt("Geef URL (Link)", "http://");
				field.value += '[url=' + url + ']Label[/url]';
				this.caret(id, -11, 5);
			break;
			case 'qurl':
				var url = window.prompt("Geef URL (Link)", "http://");
				field.value += '[url]' + url + '[/url]';
				field.focus();
			break;
			case 'quote':
				field.value += '[quote][/quote]';
				this.caret(id, -8);
			break;
			case 'image':
				return;
			break;
		}
	};
	
	/**
	 * Adds a smilie to the given field
	 */
	this.smilie = function(id, smilie) {
		var field = document.getElementById(id);
		field.value += smilie;
		field.focus();
	};
	
}
