﻿///<reference name="MicrosoftAjax.js"/>

function insertAtCaret(textEl, fileName) {
    var linkText = getLinkText(textEl);

    linkText = linkText == "" ? fileName : linkText;
    var snip = calculateSnipName(fileName);
    var text =
    "\n<" + snip + " src=\"" + fileName + "\">"
    + linkText +
    "</" + snip + ">\n";

    replaceSelectedText(textEl, text);

}

function insertAtCaret2(textEl, tagName) {
    var linkText = getLinkText(textEl);

    var text =
    "\n<snip lang=\"" + tagName + "\">"
    + linkText +
    "</snip>\n";

    replaceSelectedText(textEl, text);
}

function getLinkText(textEl) {
    var linkText = "";

    //IE
    if (document.selection != undefined) {
        linkText = trim(document.selection.createRange().text);
    }

    //Firefox
    if (textEl.setSelectionRange) {
        linkText = textEl.value.substring(textEl.selectionStart, textEl.selectionEnd); // + "<>" + textEl.value.substring(textEl.selectionStart, textEl.selectionEnd) + </> + textEl.value.substring(textEl.selectionEnd, textEl.value.length)
    }

    return linkText;

}

function replaceSelectedText(textEl, text) {
    //IE
    if (document.selection != undefined) {
        if (textEl.createTextRange && textEl.caretPos) {
            var caretPos = textEl.caretPos;
            caretPos.text =
        caretPos.text.charAt(caretPos.text.length - 1) == ' ' ?
        text + ' ' : text;
        }
        else {
            textEl.value += text;
        }
    } //Firefox
    else if (textEl.setSelectionRange) {

        textEl.value = textEl.value.substring(0, textEl.selectionStart) + text + ' ' + textEl.value.substring(textEl.selectionEnd, textEl.value.length);

    } //Maradék
    else {
        textEl.value += text;
    }
}

function calculateSnipName(fileName) {
    var startExt, snipElementName;
    snipElementName = "file";
    if ((startExt = fileName.lastIndexOf(".")) > 0) {
        var extension = fileName.substr(startExt + 1).toLowerCase();
        switch (extension) {
            case "jpg":
                snipElementName = "img";
                break;
            case "gif":
                snipElementName = "img";
                break;
            case "png":
                snipElementName = "img";
                break;
            case "bmp":
                snipElementName = "img";
                break;
            default:
                snipElementName = "file";
        }
    }
    return snipElementName;
}
function trim(s) {
    s = s.replace(/^\s*/, '').replace(/\s*$/, '');
    return s;
}

function storeCaret(textEl) {
    if (textEl.createTextRange)
        textEl.caretPos = document.selection.createRange().duplicate();
}