/**
 * for internal use only
 *
 * @author   Thomas Meyer
 * @license  http://www.gnu.org/licenses/gpl.txt
 */

/**
 * add embedded tag to textarea
 *
 * @param  string  target
 * @param  string  source
 */
function yanaAddEmbTag(tag, e)
{
    if (!window.focusedTextarea) {
        alert(noselection);
        return;
    }
    var ziel = document.getElementById(window.focusedTextarea);
    var startTag = tag.match(/^\[[^\]]+\]/);
    var endTag = tag.match(/\[\/[^\]]+\]$/);

    if (!endTag) {
        
        ziel.value += tag;

    } else if (document.selection && document.selection.createRange().parentElement().id == ziel.id) {

        var currentSelection = document.selection.createRange().text;
        if (currentSelection == '') {
            alert(noselection);
            return;
        } else {
            document.selection.createRange().text = startTag + currentSelection + endTag;
        }

    } else if (window.getSelection) {

        var currentSelection = ziel.value.slice(ziel.selectionStart,ziel.selectionEnd);
        if (currentSelection == '') {
            alert(noselection);
            return;
        } else {
            ziel.value = ziel.value.slice(0, ziel.selectionStart) +
            startTag + currentSelection + endTag +
            ziel.value.slice(ziel.selectionEnd, ziel.textLength);
        }

    } else {

        ziel.value += tag;

    }
    ziel.focus();
    if (e.preventDefault) {
        e.preventDefault();
    }
}

/**
 * prepare an ajax request
 *
 * @param  string  $id
 */
function yanaPreviewStart($id)
{
    if (!document.body || !AjaxRequest){
        window.setTimeout('yanaPreviewStart("' + $id + '")', 500);
        return;
    } else {
        if (!window.yanaPreview) {
            window.yanaPreview = new Array();
        }
        window.yanaPreview[$id] = new AjaxRequest(php_self + "?action=preview&id=" + window.yanaProfileId);
        window.yanaPreview[$id].setTarget($id);
        window.yanaPreview[$id].setHandler(yanaPreviewHandle);
    }
}

/**
 * show html preview of a text
 *
 * send request
 *
 * @param  string  $id
 */
function yanaPreviewSend($id)
{
    if (!window.focusedTextarea) {
        return;
    }
    var source = window.focusedTextarea;
    if (document.getElementById(source)) {
        window.yanaPreview[$id].send("&eintraege=" + escape(document.getElementById(source).value.replace(/\n/g, '[br]')));
    }
}

/**
 * show html preview of a text
 *
 * handle response
 *
 * @param  Object  $http
 * @param  Node    $target
 */
function yanaPreviewHandle($http, $target)
{
    var responseText = $http.responseText.replace(/<body[^>]>(.*)<\/body>/, '$1');
    if (responseText) {
        if (document.all) {
            $target.innerHTML = '<div class="fieldset" style="width:' + yanaPreviewWidth[$target.id] + ';">' +
            '<div class="gui_preview_head">' + preview_js  + '</div>' +
            '<div class="gui_preview_body" style="height:' + yanaPreviewHeight[$target.id] + ';' +
            'width:' + yanaPreviewWidth[$target.id] + ';">' +
            $http.responseText.replace(/<body[^>]>(.*)<\/body>/, '$1') +
            '</div></div>';
        } else {
            $target.innerHTML = '<fieldset style="width:' + yanaPreviewWidth[$target.id] + ';">' +
            '<legend class="gui_preview_head">' + preview_js  + '</legend>' +
            '<div class="gui_preview_body" style="height:' + yanaPreviewHeight[$target.id] + ';' +
            'width:' + yanaPreviewWidth[$target.id] + ';">' +
            $http.responseText.replace(/<body[^>]>(.*)<\/body>/, '$1') +
            '</div></fieldset>';
        }
    } else {
        $target.innerHTML = '';
    }
}
/**
 * Yana Framework 3.0.0RC1
 * Copyright © 2008  Thomas Meyer  http://www.yanaframework.net
 * Copyright Hinweise dürfen NICHT entfernen werden!
 * Copyright notices may NOT be removed!
 */
