var found = false;
$(document).ready(function(e){

	UpdateToolbar();

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

	UpdateInput();

	UpdateDnD();

});

function UpdateDnD(){
	$("#product_list").tableDnD({
		onDrop: function(table, row) {
            var rows = table.tBodies[0].rows;
            str = '';
            for (var i=0; i<rows.length; i++) {
                str += rows[i].id+","+i+";";
            }
            $.post('/action.php', {'class':'Product', 'action':'sort', 'rows':str}, function(html){
            	$("#admin_list").html(html);
            	UpdateDnD();
            });
	    }

	});
	
	$("#service_list").tableDnD({
		onDrop: function(table, row) {
            var rows = table.tBodies[0].rows;
            str = '';
            for (var i=0; i<rows.length; i++) {
                str += rows[i].id+","+i+";";
            }
            $.post('/action.php', {'class':'Service', 'action':'sort', 'rows':str}, function(html){
            	$("#admin_list").html(html);
            	UpdateDnD();
            });
	    }

	});
	
	$("#teaser_list").tableDnD({
		onDrop: function(table, row) {
            var rows = table.tBodies[0].rows;
            str = '';
            for (var i=0; i<rows.length; i++) {
                str += rows[i].id+","+i+";";
            }
            $.post('/action.php', {'class':'Index_Teaser', 'action':'sort', 'rows':str}, function(html){
            	$("#admin_list").html(html);
            	UpdateDnD();
            });
	    }

	});
}

function UpdateInput(){
	$("#employee_info_form input").unbind('keyup').bind('keyup', function(e){
		found = false;
		$("[type='text']").each(function(){
			if ($(this).val() == ''){
				found = true;
			}
		});
		if ($(this).val() != '' && !found){
			$(this).parent().append('<input type="text" value="" name="info[]" />');
			UpdateInput();
		}


	});
}

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 'headline':
                                if (mod_text.indexOf('[h2]') != 0 && mod_text.indexOf('[/h2]') != mod_text.length-5){
                                        mod_text = '[h2]' + mod_text + '[/h2]';
                                        cursor_pos += 4;
                                } else {
                                        mod_text = mod_text.substring(4, mod_text.length-5);
                                }
                                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 += 6+parseInt(mod_text.length);
                                    cursor_pos_end = parseInt(cursor_pos) + parseInt(mod_text.length);
                                    cursor_pos_end_ie = parseInt(mod_text.length);
                                    mod_text = '[url=' + mod_text + ']' + mod_text + '[/url]';
                                } else {
                                    cursor_pos += 5;
                                    cursor_pos_end = parseInt(cursor_pos) + 7 + parseInt(mod_text.length);
                                    cursor_pos_end_ie = 7 + 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);
                if (typeof(cursor_pos_end) == 'undefined'){
                        setCaretTo(document.getElementById($textarea.attr('id')), cursor_pos);
                } else {
                        setSelectionTo(document.getElementById($textarea.attr('id')), cursor_pos, cursor_pos_end, cursor_pos_end_ie);
                }
                e.preventDefault();
        });

}

function setSelectionTo(obj, pos, pos2, pos3) {
    if(obj.createTextRange) {
        /* IE */
        var range = obj.createTextRange();
        range.collapse(true);
        range.moveStart("character", pos);
        range.moveEnd("character", pos3);
        range.select();
    } else if(obj.selectionStart) {
                /* Gecko */
        obj.focus();
        obj.setSelectionRange(pos, pos2);
    }
}

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();
}