﻿var prm = null;
var ready = false;
var confirmed = false;
var dockToAction = null;
var lastDock = null;
var elementToClick = null;
var elementToConfirm = null;

$("form")[0].onsubmit = function() {
    confirmCancel();
    if (theForm.ctl00$HiddenFieldDummyDelete != null) {
        if (isEditing()) {
            theForm.ctl00$HiddenFieldDummyDelete.value = "true";
        } else {
            theForm.ctl00$HiddenFieldDummyDelete.value = "";
        }
    }
    var ret = ready && confirmed;
    confirmed = false;
    return ret;
};

if (Sys.WebForms.PageRequestManager != undefined) {
    prm = Sys.WebForms.PageRequestManager.getInstance();
    prm.add_pageLoaded(pageLoaded);
    prm.add_initializeRequest(initializeRequest);
    prm.add_endRequest(endRequest);
}

function confirmCancel() {
    var texts = $('input[type="hidden"][value="textediting"]');
    var blogs = $('input[type="hidden"][value="blogediting"]');
    var sender = $($get(theForm.__EVENTTARGET.value.replace(/\$/g, '_')));

    if ((texts.length == 0 && blogs.length == 0) || sender.length == 0) {
        confirmed = true;
        return;
    }

    if (!sender.hasClass('raddock') && sender.parents('.raddock').length) {
        sender = sender.parents('.raddock');
    }

    var dontconfirm = false;
    if (sender.hasClass('dontconfirm'))
        dontconfirm = true;
    else if (texts.length > 0 && (sender[0] != null && sender[0].id == texts.parents('.raddock')[0].id))
        dontconfirm = true;
    else if (blogs.length > 0 && (sender[0] != null && sender[0].id == blogs.parents('.raddock')[0].id))
        dontconfirm = true;

    if (!dontconfirm && !confirmed && texts.length + blogs.length > 0) {
        confirmed = false;
        var con = $($get('divConfirmCancelText')).find('.confirmtext');
        texts.length > 0 ? con.show().next().hide() : con.hide().next().show();
        var cbe = $find('CancelTextConfirmButton');
        cbe.set_postBackScript('confirmed = true;__doPostBack(theForm.__EVENTTARGET.value, theForm.__EVENTARGUMENT.value);');
        cbe._displayConfirmDialog();
    } else {
        confirmed = true;
    }
}

function isEditing() {
    return $('input[type="hidden"][value="textediting"]').length +
            $('input[type="hidden"][value="blogediting"]').length +
            $('input[type="hidden"][value="linklistediting"]').length +
            $('.menucontainer:visible').length > 0;
}

function notEditing() {
    return !isEditing();
}

function pageLoaded(sender, args) {
    ready = true;
    confirmed = false;
    if (dockToAction != null) {
        var tmp = dockToAction.split(';');
        confirmWebpartAction($find(tmp[0]), tmp[1]);
    } else if (elementToClick != null) {
        $($get(elementToClick)).click();
    } else if (elementToConfirm != null) {
        $get(elementToConfirm).ConfirmButtonBehavior._displayConfirmDialog();
    }
    dockToAction = null;
    elementToClick = null;
    elementToConfirm = null;
    lastDock = null;
    if (theForm.ctl00$HiddenFieldDummyDelete != null) {
        theForm.ctl00$HiddenFieldDummyDelete.value = '';
    }
}

function initializeRequest(sender, args) {
    var postBackElement = args.get_postBackElement();
    var pr = $get('ctl01_UpdateProgressMain');

    if (pr != null && sender._form.__EVENTARGUMENT == 'dockPositionChanged') {
        pr.style.display = 'block';
    }
    if (prm != null && prm.get_isInAsyncPostBack()) {
        args.set_cancel(true);
    }
}

function endRequest(sender, args) {
    if ($get('ctl01_UpdateProgressMain') != null) {
        $get('ctl01_UpdateProgressMain').style.display = 'none';
    }
}

function getLeftScroll() {
    return window.pageXOffset ? window.pageXOffset : (document.documentElement && document.documentElement.scrollLeft) ? document.documentElement.scrollLeft : document.body.scrollLeft
}

function getTopScroll() {
    return window.pageYOffset ? window.pageYOffset : (document.documentElement && document.documentElement.scrollTop) ? document.documentElement.scrollTop : document.body.scrollTop
}

function toggleMenu(sender, eventArgs) {
    var a = sender._getBounds();
    var menu = $(sender.get_element()).find('.mainmenu');

    var left = a.x + a.width - menu.width();
    var top = a.y - menu.height() - 5;

    menu.css("left", left + "px");
    menu.css("top", top + "px");

    sender.set_enableDrag(!sender.get_enableDrag());
    menu.toggle("fast");
}

function showMenuViaServer(menudivId, also_visible, relToElementId, above) {
    var menudiv = $('#' + menudivId + (also_visible ? '' : ':hidden'));

    if (menudiv.length > 0) {
        if (typeof (relToElementId) != 'undefined') {
            var relToElement = $get(relToElementId);

            var relToOffset = $(relToElement).offset();
            if (above) {
                menudiv.css('top', relToOffset.top - menudiv.height());
                menudiv.css('left', relToOffset.left + $(relToElement).width() - menudiv.width());
            } else {
                menudiv.css('top', relToOffset.top);
                menudiv.css('left', relToOffset.left);
            }
        }

        menudiv.show("fast", function() {
            if (this.getBoundingClientRect != undefined && this.getBoundingClientRect().top < 50) {
                scrollToTop(this.id, 50);
            } else if (this.getBoundingClientRect == undefined) {
                scrollToTop(this.id, 50);
            }
        });
    }
}

function scrollToTop(id, topOffset) {
    var ctl = $($get(id));
    $.scrollTo(ctl, "slow", { offset: -topOffset, axis: "y", onAfter: function(e) {
        if (e.length > 0 && e[0].getBoundingClientRect != undefined) {
            var top = e[0].getBoundingClientRect().top;
            if (top < 0) {
                e.css("top", topOffset + "px");
            }
        }
    }
    });
}

function hideMenuViaServer(menudivId) {
    $($get(menudivId)).hide("fast");
}

function hideMenu(sender) {
    $(sender).parents('.menucontainer').hide('fast');
    var dock = $find($(sender).parents('.raddock')[0].id);
    dock.set_enableDrag(true);
}

function confirmDelete(sender, dropdownElements, radioType, idAndType, textFormat, namebox, litconfirm) {
    var type = radioType.find("input[type='radio'][checked]").val();
    var element = dropdownElements.val();
    var cbe = $find('MenuConfirmButtonExtender');
    if (namebox.val().length == 0) {
        return false;
    }
    cbe.set_postBackScript("__doPostBack('" + sender.name + "','')");

    if (type != undefined && type == '2') {
        textFormat = textFormat.replace('{1}', radioType.find('.urltextbox').val());
    }

    if (type != undefined && type == '1' && element != undefined && element != idAndType) {
        textFormat = textFormat.replace('{1}', dropdownElements.find("option[value='" + element + "']").text());
    }

    if ((type != undefined && type != '1') || (element != undefined && element != idAndType)) {
        litconfirm.html(textFormat);
        cbe._displayConfirmDialog();
        return false;
    }
    return true;
}

function confirmDeleteSimp(sender, text, litconfirm) {
    if (!isEditing()) {
        var cbe = $find('MenuConfirmButtonExtender');
        cbe.set_postBackScript(sender.href.replace('javascript:', '').replace(/%20/g,' '));
        litconfirm.html(text);
        cbe._displayConfirmDialog();
        return false;
    } else {
        return true;
    }
}

function confirmWebpartAction(sender, args) {
    if (isEditing()) {
        return;
    }

    var cbe = $find("CloseWebpartConfirmButton");
    var msg = $(sender._element).find('.confirmmessage').html();
    var con = $($get('divMajorConfirm')).find('.confirmtext');
    if (msg != null && msg != '') {
        con.html(msg).show().next().hide();
    } else {
        var found = false;
        var url = $(sender._element).find('a.modulelink');
        if (url.length > 0) {
            var el = $('.RadTreeView a[href="' + url.attr('href') + '"]');
            if (el.length > 0) {
                found = true;
                msg = $($get('divMajorConfirm')).find('.confirmtextspec').html();
                msg = msg.replace("{0}", el.html()).replace("{0}", el.html());
                con.html(msg).show().next().hide();
            }
        }
        if (!found) {
            con.hide().next().show();
        }
    }
    var name = args.Command != null ? args.Command.get_name() : args;

    cbe.set_postBackScript("$find('" + sender._element.id + "').getCommand('" + name + "').conditionalPostback()");
    cbe._displayConfirmDialog();

    if (args.set_cancel != null)
        args.set_cancel(true);
}

function fillReportInfo(sender, text) {
    $(sender).parent().parent().parent().find('.reportinfo').html(text);
}

function fillReportInfoForWhile(sender, text, later) {
    fillReportInfo(sender, text);
    setTimeout("var sender = $('#" + sender.id + "');" +
               "fillReportInfo(sender, '');" +
               "sender.mouseover(function() {fillReportInfo(this,'" + later + "');});" +
               "sender.mouseout(function() {fillReportInfo(this,'');});", 10000);
}

function initTopDock(sender, e) {
    sender.set_handle(sender.get_element());
}

function initBottomDock(sender, e) {
    sender.set_handle($(sender.get_element()).find('.dragger')[0]);
}

function bottomDockDragEnd(dock, args) {
    $(dock._element).css("position", "static").find('.rdContent').css("overflow", "");
}

function dockDragStart(dock, args) {
    lastDock = new Array(dock.get_element().id, dock.get_dockZoneID(), dock.get_index());
}

function repositionLastDock() {
    if (lastDock) {
        $get(lastDock[1]).control.dock($get(lastDock[0]).control, lastDock[2]);
    }
}

/* editor */

currentEditor = null;

function setEditorFocus(editor) {
    editor.get_toolAdapter()._showToolbarHolder(true);
    setTimeout(function() { editor.setFocus(); }, 50);
}

function editorLoadBlog(editor) {
    editor.add_submit(OnClientSubmit);
    disableStretch(editor);
    editorRegisterDialogs();

    var iframe = editor.get_contentAreaElement();
    iframe.allowTransparency = true;
}

function editorInit(editor) {
    var toolbarPrototype = Telerik.Web.UI.Editor.DefaultToolAdapter.prototype;
    toolbarPrototype._positionToolbarAboveEditor = positionToolbarAboveEditor;
    if (!toolbarPrototype.old_onContextMenu) {
        toolbarPrototype.old_onContextMenu = toolbarPrototype.onContextMenu;
        toolbarPrototype.onContextMenu = function(e) {
            var element = e.srcElement ? e.srcElement : e.target;
            if (element.tagName == "IMG") return false;
            this.old_onContextMenu(e);
        }
    }
}

function editorLoad(editor) {
    editor.add_submit(OnClientSubmit);
    setRadDockTitlebar(editor.get_element(), true);
    disableStretch(editor);
    editorRegisterDialogs();

    setEditorFocus(editor);
    scrollToTop(editor.get_element().id, 100);

    var iframe = editor.get_contentAreaElement();
    iframe.allowTransparency = true;
}

function OnClientSubmit(editor) {
    var radControls = $telerik.radControls;
    var lastEditor = null;
    for (var i = 0; i < radControls.length; i++) {
        var control = radControls[i];
        if (Telerik.Web.UI.RadEditor.isInstanceOfType(control)) {
            lastEditor = control;
        }
    }

    if (lastEditor)
        lastEditor.setFocus();
}

function disableStretch(editor) {
    var f = function() {
        var oWnd = editor.get_toolAdapter().get_window();
        oWnd.set_behaviors(Telerik.Web.UI.WindowBehaviors.None);
    };

    setTimeout(f, 300);
    var element = document.all ? editor.get_document().body : editor.get_document();
    $telerik.addExternalHandler(element, "click", function(e) {
        setTimeout(f, 300);
    });
    $telerik.addExternalHandler(element, "focus", function(e) {
        setTimeout(f, 300);
    });
}

function setRadDockTitlebar(element, s) {
    if (s) {
        $(element).parents('.rdHTitlebar').children('.rdTitlebar').hide();
    } else {
        $(element).parents('.rdHTitlebar').children('.rdTitlebar').show()
    }
}

function editorOnClose(sender) {
    $('body').click();
}

function positionToolbarAboveEditor() {
    $(this._toolbarHolder._popupElement).addClass('isolatedToolbar');
    var wnd = this._toolbarHolder;
    var editor = this.get_editor();
    var editorSize = $telerik.getBounds(editor.get_element());
    var bodywidth = $telerik.getBounds(document.body).width;
    var windowSize = $telerik.getBounds(wnd.get_popupElement());
    var x = editorSize.x;
    if (x + windowSize.width > bodywidth)
        x = bodywidth - windowSize.width - 20;
    var y = editorSize.y - windowSize.height;
    wnd.moveTo(x, y);
}

function enableEditMode(sender) {
    $(sender).parent().nextAll('input.edit').click();
}

function editorRegisterDialogs() {
    Telerik.Web.UI.Editor.CommandList["YouTube"] = showEditorToolbarYouTubeDlg;
    Telerik.Web.UI.Editor.CommandList["Wrzuta"] = showEditorToolbarWrzutaDlg;
    Telerik.Web.UI.Editor.CommandList["Hyperlink"] = showEditorToolbarHyperlink;
    Telerik.Web.UI.Editor.CommandList["AddImage"] = showEditorAddImageDlg;
}

function showEditorToolbarYouTubeDlg(commandName, editor, args) {
    var oncallback = function(sender, args) {
        editor.pasteHtml(flashContentFix(args));
    }
    editor.showDialog("YouTubeToolDlg", {}, oncallback);
}

function flashContentFix(content) {
    content = content.replace('</param>', '</param><param name="wmode" value="transparent"></param>');
    if ($telerik.isIE6 || $telerik.isFirefox) {
        var embedMatch = function(match, gr1, gr2, gr3, str, index) {
            var newTag = String.format("<img isflash=\"true\" {0} />{1}", gr1, gr2);
            newTag = newTag.replace(/\ssrc=/gi, String.format(" src=\"{0}\" flashSrc=", "/App_Themes/DefaultTheme/Editor/n_flash.gif"));
            return newTag;
        }
        var embedRegExp = new RegExp("<embed([^>]*)>(.*)?(</embed>)", "ig");
        var newContent = content.replace(embedRegExp, embedMatch);
        return newContent;
    } else {
        return content;
    }
}


function showEditorToolbarWrzutaDlg(commandName, editor, args) {
    var oncallback = function(sender, args) {
        editor.pasteHtml(args);
    }
    //    editor.showDialog("WrzutaToolDlg", {}, oncallback);
}

function showEditorToolbarHyperlink(commandName, editor, args) {
    var oncallback = function(sender, args) {
        if (typeof (args.url) == 'string') {
            if (args.url.indexOf("://") > 0) {
                editor.pasteHtml(String.format('<a href="{0}">{1}</a>', args.url, args.name));
            } else {
                editor.pasteHtml(String.format('<a href="{0}">{1}</a>', 'http://' + args.url, args.name));
            }
        }
    }

    var text = null;
    var selection = editor.getSelection();
    if (selection != null) {
        text = selection.getText();
    }

    editor.showDialog("HyperlinkToolDlg", { "text": text }, oncallback);
}

function showEditorAddImageDlg(commandName, editor, args) {
    currentEditor = editor;
    eval($(editor.get_element()).parent().find("input[id$='ImageUploaderParams']").val());
    editor.get_toolAdapter().get_toolbarHolder().Hide();
}

function editorCommandExecuting(editor, args) {
    var command = args.get_commandName();
    if (command == "JustifyLeft") {
        setAlignment(editor, "left");
        args.set_cancel(true);
    } else if (command == "JustifyRight") {
        setAlignment(editor, "right");
        args.set_cancel(true);
    } else if (command == "JustifyCenter") {
        setAlignment(editor, "center");
        args.set_cancel(true);
    }

    function setAlignment(editor, align) {
        var sel = editor.getSelectionHtml();
        editor.pasteHtml("<div align=" + align + " style='text-align:" + align + "'>" + sel + "</div>");
    }
}

function trimAll(sString) {
    while (sString.substring(0, 1) == ' ') {
        sString = sString.substring(1, sString.length);
    }
    while (sString.substring(sString.length - 1, sString.length) == ' ') {
        sString = sString.substring(0, sString.length - 1);
    }
    return sString;
}

function dockAction(id) {
    dockToAction = id;
}

function clickElement(id) {
    elementToClick = id;
}

function displayAssociatedConfirm(id) {
    elementToConfirm = id;
}

function closeUploader() {
    var b = $find('ImageUploaderModalBehavior');
    b.hide();
}

function WizardDisableNextButton(btn) {
    if (btn) {
        btn.attr("disabled", true);
        btn.removeClass("button dalej").removeClass("button dalej_gray");
        btn.addClass("button dalej_gray");
    }
}

function WizardEnableNextButton(btn) {
    if (btn) {
        btn.removeAttr("disabled");
        btn.removeClass("button dalej").removeClass("button dalej_gray");
        btn.addClass("button dalej");
    }
}

function CheckOffScreenEntries(xsize, id) {
    menu = $($get(id));
    li = menu.find('li');
    cm = menu.find('.rdNew');
    sum = 0;
    li.each(function() { sum += $(this).width(); });    
    
    if (xsize > 0 && sum + 170 > xsize)
        cm.hide();
    else
        cm.show();
}

function addImgBordersToWidth(id)
{
    ctl = $($get(id));
    img = ctl.find('img');
    ctl.width(ctl.width() + parseInt(img.css('borderLeftWidth'), 10) * 2);
    ctl.height(ctl.height() + parseInt(img.css('borderTopWidth'), 10) * 2);
}
