$(document).ready(function(e){

	UpdateToolbar();

	$(".imagedb").bind('click', function(e){
		OpenImageDB(this);
		e.preventDefault();
	});

});

function UpdateToolbar(){
        $(".toolbar > ul > li > a").unbind('click').bind('click', function(e){
                var $formular = $(this).parent().parent().parent().parent();
                var $textarea = $formular.find('textarea');
                if (document.selection){
                        var select_string = document.selection.createRange();
                        var select_start = $textarea.val().indexOf(select_string.text);
                        var select_stop = (parseInt(select_string.text.length) + parseInt(select_start));
                } else {
                        var select_start = document.getElementById($textarea.attr('id')).selectionStart;
                        var select_stop = document.getElementById($textarea.attr('id')).selectionEnd;
                }
                var text = $textarea.val().substring(0, select_start);
                var mod_text = $textarea.val().substring(select_start, select_stop);
                var text_rest = $textarea.val().substring(select_stop);
                var cursor_pos = select_start;
                switch ($(this).parent().attr('class')){
                        case 'bold':
                                if (mod_text.indexOf('[b]') != 0 && mod_text.indexOf('[/b]') != mod_text.length-4){
                                        mod_text = '[b]' + mod_text + '[/b]';
                                        cursor_pos += 3;
                                } else {
                                        mod_text = mod_text.substring(3, mod_text.length-4);
                                }
                                break;
                        case 'italic':
                                if (mod_text.indexOf('[i]') != 0 && mod_text.indexOf('[/i]') != mod_text.length-4){
                                        mod_text = '[i]' + mod_text + '[/i]';
                                        cursor_pos += 3;
                                } else {
                                        mod_text = mod_text.substring(3, mod_text.length-4);
                                }
                                break;
                        case 'underline':
                                if (mod_text.indexOf('[u]') != 0 && mod_text.indexOf('[/u]') != mod_text.length-4){
                                        mod_text = '[u]' + mod_text + '[/u]';
                                        cursor_pos += 3;
                                } else {
                                        mod_text = mod_text.substring(3, mod_text.length-4);
                                }
                                break;
                        case 'strikethrough':
                                if (mod_text.indexOf('[s]') != 0 && mod_text.indexOf('[/s]') != mod_text.length-4){
                                        mod_text = '[s]' + mod_text + '[/s]';
                                        cursor_pos += 3;
                                } else {
                                        mod_text = mod_text.substring(3, mod_text.length-4);
                                }
                                break;
                        case 'url':
                                if (mod_text.indexOf('http://') != -1){
                                        cursor_pos += 7+parseInt(mod_text.length);
                                        mod_text = '[url=' + mod_text + ']' + mod_text + '[/url]';
                                } else {
                                        cursor_pos += 13+parseInt(mod_text.length);
                                        mod_text = '[url=http://' + mod_text + ']' + mod_text + '[/url]';
                                }
                                break;
                        case 'code':
                                if (mod_text.indexOf('[code]') != 0 && mod_text.indexOf('[/code]') != mod_text.length-7){
                                        mod_text = '[code]' + mod_text + '[/code]';
                                        cursor_pos += 6;
                                } else {
                                        mod_text = mod_text.substring(6, mod_text.length-7);
                                }
                                break;
                        case 'quote':
                                if (mod_text.indexOf('[quote]') != 0 && mod_text.indexOf('[/quote]') != mod_text.length-8){
                                        mod_text = '[quote]' + mod_text + '[/quote]';
                                        cursor_pos += 7;
                                } else {
                                        mod_text = mod_text.substring(7, mod_text.length-8);
                                }
                                break;
                        case 'image':
                                OpenImageDB(this);
                                break;
                }

                $textarea.val(text + mod_text + text_rest);
                setCaretTo(document.getElementById($textarea.attr('id')), cursor_pos);
                e.preventDefault();
        });

}
function setCaretTo(obj, pos) {
    if(obj.createTextRange) {
        /* Create a TextRange, set the internal pointer to
           a specified position and show the cursor at this
           position
        */
        var range = obj.createTextRange();
        range.move("character", pos);
        range.select();
    } else if(obj.selectionStart) {
        /* Gecko is a little bit shorter on that. Simply
           focus the element and set the selection to a
           specified position
        */
        obj.focus();
        obj.setSelectionRange(pos, pos);
    }
}

function OpenImageDB(link){
    var width = 1005;
    var height = 700;

    var topvar = (screen.height / 2) - (height / 2);
    var leftvar = (screen.width / 2) - (width / 2);

    try
    {
        var imageDBSelector = window.open(link.href, "imageDBSelector", "width=" + width + ",height=" + height + ",top=" + topvar + ",left=" + leftvar + ",scrollbars,status,resizable");
        imageDBSelector.focus();
    }
    catch (exception)
    {
        alert("Der skete en fejl, da popupvinduet til billededatabase skulle genereres. Tjek din browsers indstillinger.");
    }
}

function insert_image(id, name){
    var $textarea = $("#" + name);
    if (document.selection){
        var select_string = document.selection.createRange();
        var select_start = $textarea.val().indexOf(select_string.text);
        var select_stop = (parseInt(select_string.text.length) + parseInt(select_start));
    } else {
        var select_start = document.getElementById($textarea.attr("id")).selectionStart;
        var select_stop = document.getElementById($textarea.attr("id")).selectionEnd;
    }
    var before = $textarea.val().substring(0, select_start);
    var after = $textarea.val().substring(select_start, $textarea.val().length);
    $textarea.val(before + "[image=" + id + "][/image]" + after);
    $textarea.focus();
}

function select_image(id, name, path) {
    $("[name='select_image_" + name + "']").attr('src', path);
    $("[name='" + name + "']").val(id);
}