﻿
var images = [".png", ".jpg", ".jpeg", ".bmp", ".gif"];
var videos = [".mp4", ".mov", ".f4v", ".flv", ".3gp", ".3g2", "youtube.com", "youtu.be"];
var audios = [".mp3", ".aac", ".m4a"];
var savePostTimeoutID = 0;

function isImage(path) {
    path = path.toLowerCase();
    for (var i = 0; i < images.length; ++i) {
        if (path.search(images[i]) != -1)
            return true;
    }
    return false;
}

function isAudio(path) {
    path = path.toLowerCase();
    for (var i = 0; i < audios.length; ++i) {
        if (path.search(audios[i]) != -1)
            return true;
    }
    return false;
}

function isVideo(path) {
    path = path.toLowerCase();
    for (var i = 0; i < videos.length; ++i) {
        if (path.search(videos[i]) != -1)
            return true;
    }
    return false;
}

function isMediaFile(path) {
    return isAudio(path) || isVideo(path);
}

function insertSmile(smile) {
    var txtBodyID;
    if ($("*[id*=divQuickEdit]")[0] && $("*[id*=divQuickEdit]")[0].style.display == "")
        txtBodyID = $("*[id*=txtQuickEditBody]")[0].id;
    else
        txtBodyID = txtBody.id;

    replace_selection(txtBodyID, smile);
    var s = get_selection(txtBodyID);
    set_selection(txtBodyID, s.end, s.end);
}

function insertColor(color) {
    var leftText = "[" + colorToolTipBBCode + "=" + color + "]";
    var rightText = "[/" + colorToolTipBBCode + "]";
    wrap_selection(txtBody.id, leftText, rightText);
}

function insertSize(sender) {
    var size = sender.value;
    if (size != "-1") {
        var leftText = "[size=" + size + "]";
        var rightText = "[/size]";
        wrap_selection(txtBody.id, leftText, rightText);
    }
}

function insertFont(sender) {
    var font = sender.value;
    if (font != "-1") {
        var leftText = "[font=" + font + "]";
        var rightText = "[/font]";
        wrap_selection(txtBody.id, leftText, rightText);
    }
}

function insertBBCode(bbcode) {
    document.getElementById("divImageCollapsed").style.display = (bbcode == "player") ? "none" : "";
    getFupImage().selectionEnabled = !(bbcode == "player");
    if (bbcode == "img") {
        var wnd = getWndInsertImage();
        wnd.mode = "img";
        wnd.setHeaderText("AceHigh.ru :: Вставить картинку");
        wnd.show();
        return false;
    }
    else if (bbcode == "player") {
        var wnd = getWndInsertImage();
        wnd.mode = "player";
        wnd.setHeaderText("AceHigh.ru :: Вставить видео или mp3-файл");
        wnd.show();
        return false;
    }
    else if (bbcode == "size")
        insertSize(size);
    else {

        var leftText = "[" + bbcode + "]";
        var rightText = "[/" + bbcode + "]";

        if (bbcode == "url") {
            leftText = "[url=http://]";
        }

        var sel = get_selection(txtBody.id);
        wrap_selection(txtBody.id, leftText, rightText);

        if (bbcode == "url") {
            try {
                var pos = sel.start + leftText.length - 1;
                set_selection(txtBody.id, pos, pos);
            }
            catch (ex) { }
        }
    }
}

function insertImage() {
    var fromFile = document.getElementById("rbImageFromFile").checked;
    var cursor;
    cursor = hdnPosition.value;
    if (!fromFile) {
        var imageLink = document.getElementById("txtImageLink").value;

        if (!UrlUtils.isUrl(imageLink)) {
            alert("Ссылка на файл указана неверно");
            return false;
        }

        imageLink = imageLink.replace("http://http://", "http://");
    }

    getWndInsertImage().hide();

    if (getWndInsertImage().mode == "img") {
        if (fromFile) {
            var concatFilesNames = "";
            var showCollapsed;

            var files = getFupImage().getUploadedFiles();
            for (var i = 0; i < files.length; i++) {
                if(isImage(files[i].fileName))
                {
                     showCollapsed = files[i].selected;
                     if (showCollapsed)
                         concatFilesNames += '[img col]' + files[i].fileName + '[/img]';
                     else
                         concatFilesNames += '[img]' + files[i].fileName + '[/img]';

                     set_selection(txtBody.id, cursor, cursor);
                     replace_selection(txtBody.id, concatFilesNames);
                     if (i < files.length - 1)
                         replace_selection(txtBody.id, "\r\n");
                }
            }
         }
        
        else {
            var showCollapsed = document.getElementById("chkImageCollapsed").checked;
            var stringLink;
            if (showCollapsed)
                stringLink = '[img col]' + imageLink + '[/img]';
            else
                stringLink = '[img]' + imageLink + '[/img]';
            set_selection(txtBody.id, cursor, cursor);
            replace_selection(txtBody.id, stringLink);
        }
        getFupImage().removeAllFiles(true);
    }
    else {
        if (fromFile) {
            var concatFilesNames = "";
            var showCollapsed;
            var files = getFupImage().getUploadedFiles();
            for (var i = 0; i < files.length; i++) {
                if (isMediaFile(files[i].fileName)) {
                    showCollapsed = files[i].selected;
                    if (showCollapsed)
                        concatFilesNames += '[player col]' + files[i].fileName + '[/player]';
                    else
                        concatFilesNames += '[player]' + files[i].fileName + '[/player]';
                    set_selection(txtBody.id, cursor, cursor);
                    replace_selection(txtBody.id, concatFilesNames);
                    if (i < files.length - 1)
                        replace_selection(txtBody.id, "\r\n");
                }
            }
        }
        else {
           // var imageLink = document.getElementById("txtImageLink").value;
            var showCollapsed = document.getElementById("chkImageCollapsed").checked;
            var stringLink;
            if (showCollapsed)
                stringLink = '[player col]' + imageLink + '[/player]';
            else
                stringLink = '[player]' + imageLink + '[/player]';
            set_selection(txtBody.id, cursor, cursor);
            replace_selection(txtBody.id, stringLink);
        }
        getFupImage().removeAllFiles(true);
    }
}

function moveCaretToEnd(element) {
    if (element.createTextRange) {
        var r = element.createTextRange();
        r.collapse(false);
        r.select();
    }

    if (element.selectionStart) {
        var end = element.value.length;
        element.setSelectionRange(end, end);
        element.focus();
    }
}

function clearPostBody() {
    txtPostTitle.value = "";
    txtBody.value = "";
    txtBody.focus();
}

function isPostBodyEmpty() {
    return txtBody.value.trim() == "";
}

function setFocusToPostBody() {    
    txtBody.focus();
}

function setForumToEndOfPostBody() {
    moveCaretToEnd(txtBody);
}

function appendToPostBody(text) {
    txtBody.value += text;    
}

function fixPostBody() {
    if (typeof (txtBody) != "undefined" && txtBody != null) {
        if ((txtBody.value.trim() != "") && (hdnFixedPostMode.value == "True")) {
            divPosting.className = "posting postingFixed";
            btnFixedPostMode.style["display"] = "";
            if (typeof (divPostingDummy) != "undefined" && divPostingDummy != null)
                divPostingDummy.style.display = "";
        }
        else {
            divPosting.className = "posting";
            if (typeof (divPostingDummy) != "undefined" && divPostingDummy != null)
                divPostingDummy.style.display = "none";

            if (txtBody.value.trim() == "")
                btnFixedPostMode.style["display"] = "none";
            else
                btnFixedPostMode.style["display"] = "";
        }
    }
}

function deleteAttachment(attachmentID, sender) {
    var span = sender.parentNode;
    span.className = "deletedAttachment";
    hdnAttachmentsID.value += "_" + attachmentID + "_";
}

function restoreAttachment(attachmentID, sender) {
    var span = sender.parentNode;
    span.className = "attachment";
    hdnAttachmentsID.value = hdnAttachmentsID.value.replace("_" + attachmentID + "_", "");
}

function savePost(str) {
    if (typeof (savePostTimeoutID) != 'undefined' && savePostTimeoutID != 0) {
        clearTimeout(savePostTimeoutID);
        savePostTimeoutID = 0;
    }

    if ($("*[id*=txtBody]").val() == undefined)
        return;

    var onCompleteFunction = savePost_complete;
    if (str == "ToExtendedMode")
        onCompleteFunction = savePost_complete_toExtendedMode;
    if (str == "BackToTopic")
        onCompleteFunction = savePost_complete_backToTopic;

    var post = new Object();
    post.Title = txtPostTitle.value;
    post.Body = txtBody.value;
    post.TopicID = topicID;
    post.FixedPostMode = hdnFixedPostMode.value;
    if (typeof (hdnQuotePostsID) != "undefined") {
        post.QuotePostsID = hdnQuotePostsID.value;
        hdnQuotePostsID.value = "";
    }
    else {
        post.QuotePostsID = "";
    }
    var args = {
        method: "post",
        onComplete: onCompleteFunction,
        postBody: Utils.toJsonString(post)
    };

    new Ajax(urlSavePost, args);
}

function savePost_complete(request) {

}
