﻿var Shortcuts_url = 'Shortcuts.aspx';


function Shortcuts_init()
{
    $('editGroup').addEvent('keypress', Shortcuts_handleTextBoxSubmit);
    Shortcuts_setEditGroup($('groupId_0'), 0);
    Shortcuts_initDragDrop();
}


function Shortcuts_initDragDrop() {
    jQuery("#ShortcutsShortcutContainer li").draggable({
        handle: ".dragHandle",
        cursor: "move",
        revert: true
    });

    jQuery("#ShortcutsGroupContainer .folderClosed").droppable({
        tolerance: "pointer",
        hoverClass: "focus",
        drop: function(event, ui) {
            var targetGroupId = jQuery(event.target).attr("groupId");
            var shortcutId = ui.draggable.attr("shortcutId");
            var groupId = ui.draggable.attr("groupId");
            Shortcuts_moveShortcut(targetGroupId, shortcutId, groupId);
        }
    });
}


function Shortcuts_openGroup(groupId) {
    var container = $('ShortcutsShortcutContainer');
    Shortcuts_setLoader(container);

    var data = {
        type: 'listShortcuts',
        groupId: groupId
    };
    var callback = function(html) {
        Shortcuts_removeLoader(container);
        container.innerHTML = html;
        Shortcuts_initDragDrop();

        Shortcuts_closeFolders();

        var groupObj = $('groupId_' + groupId);
        if (groupObj == null) return;

        groupObj.addClass('folderOpen');
        Shortcuts_setEditGroup(groupObj, groupId);
    };
    sendAndGetResponse(Shortcuts_url, data, callback);
}


function Shortcuts_getAllGroups(groupId) {
    var container = $('ShortcutsGroupContainer');
    Shortcuts_setLoader(container);

    var data = {
        type: 'listGroups',
        groupId: groupId
    };
    var callback = function(html) {
        Shortcuts_removeLoader(container);
        container.innerHTML = html;
        Shortcuts_initDragDrop();
    };
    sendAndGetResponse(Shortcuts_url, data, callback);
}


function Shortcuts_setEditGroup(groupObj, groupId) {
    $('ButtonSave').removeEvents('click');
    if (groupId > 0) {
        $('editGroup').value = groupObj.getElement('a').innerHTML;
        $('ButtonSave').innerHTML = $('LabelShortcutsTitleSaveChange').innerHTML;
        $('ButtonSave').addEvent('click', function(){Shortcuts_saveGroup(groupId);});
    }
    else {
        $('editGroup').value = '';
        $('ButtonSave').innerHTML = $('LabelShortcutsTitleSaveNew').innerHTML;
        $('ButtonSave').addEvent('click', function(){Shortcuts_saveGroup(0);});
    }
}


function Shortcuts_moveShortcut(groupId, shortcutId, oldGroupId)
{
    var data = {
        type: 'moveShortcut',
        groupId: groupId,
        shortcutId: shortcutId
    };
    var callback = function(html) {
        var error;
        if (error = getErrorFromResponse(html)) {
            alert(error);
        }
        else {
            Shortcuts_openGroup(oldGroupId);
        }
    };
    sendAndGetResponse(Shortcuts_url, data, callback);
}


function Shortcuts_saveGroup(groupId) {
    var groupName = $('editGroup').value;
    if (!groupName) {
        return;
    }

    var data = {
        type: 'saveGroup',
        groupId: groupId ,
        groupName: groupName
    };
    var callback = function(html) {
        var error;
        if (error = getErrorFromResponse(html)) {
            alert(error);
        }
        else {
            $('editGroup').value = '';
            Shortcuts_getAllGroups(groupId);
        }
    };
    sendAndGetResponse(Shortcuts_url, data, callback);
}


function Shortcuts_deleteGroup(groupId) {
    var data = {
        type: 'deleteGroup',
        groupId: groupId
    };
    var callback = function(html) {
        var error;
        if (error = getErrorFromResponse(html)) {
            alert(error);
        }
        else {
            Shortcuts_getAllGroups(0);
            Shortcuts_openGroup(0);
        }
    };
    sendAndGetResponse(Shortcuts_url, data, callback);
}


function Shortcuts_deleteShortcut(groupId, shortcutId) {
    var data = {
        type: 'deleteShortcut',
        shortcutId: shortcutId
    };
    var callback = function(html) {
        var error;
        if (error = getErrorFromResponse(html)) {
            alert(error);
        }
        else {
            Shortcuts_openGroup(groupId);
        }
    };
    sendAndGetResponse(Shortcuts_url, data, callback);
}


function Shortcuts_closeFolders()
{
    var groups = $('ShortcutsGroupContainer').getElements('.folderOpen');
    for (var i = 0; i < groups.length; i++) {
        groups[i].removeClass('folderOpen');
    }
}


function Shortcuts_setLoader(container) {
    container.innerHTML = '';
    container.addClass('empty');
    container.addClass('loader1');
}


function Shortcuts_removeLoader(container) {
    container.removeClass('empty');
    container.removeClass('loader1');
}


function Shortcuts_handleTextBoxSubmit(event) {
    if (event.key == 'enter') {
        event.stop();
        return false;
    }

    return true;
}
