﻿function hashArray()
{
    var hashArray = new Object();
    
    hashArray.arrKeys = new Array();
    hashArray.arrValues = new Array();

    hashArray.setValue = function(key, value) {
        this.arrKeys.push(key);
        this.arrValues.push(value);
    }

    hashArray.getValue = function(key) {
        var intKey = $.inArray(key, this.arrKeys);
        return this.arrValues[intKey];
    }
    
    return hashArray;
}

function getItemsNumber() {
    var itemHeight = 122;
    var itemWidth = 122;
    var header = 23 + 23 + 42; //header + footer + next button
    var windowHeight = $(window).height();
    var windowWidth = $(window).width();
    var verticalCount = Math.round((windowHeight - header) / itemHeight);
    var horizontalCount = Math.round(windowWidth / itemWidth);
    var count = verticalCount * horizontalCount;
    if (count == 0) {
        count = [horizontalCount, verticalCount, 1].filter(function(e) { return e > 0 })[0];
    }
    return count;
}

function toggleDajPanelContent(id)
{
    $('#panelContent'+id).toggle();
    var obj = $('#panelToggle'+id);
    $('#panelContent'+id).is(':visible') ? obj.html('&#150;') : obj.html('+');
}

function toggleDajPanelRounds(select)
{
    var row = $('#included_rounds');
    select.selectedIndex == 0 ? row.show() : row.hide();
}

function baseJudgingTool(save_path, left_container, right_container)
{
    var objPd = new Object;
    objPd.activeWork = null;
    objPd.activate = function(id) {
        var strId = 'asset_' + id;
        $('.image img').removeClass('activated');
        $('#' + strId + ' img').addClass('activated');
        if(objPd.activeWork == null){
            objPd.setNavigationButtonActions();
        }       
        this.activeWork = id;
        objPd.updateDashboard();
    }
    objPd.setNavigationButtonActions = function(){
        $(document).ready(function() {
            $('#fancy_left').get(0).onclick = objPd.activatePrevious;
            $('#fancy_left span').get(0).onclick = objPd.activatePrevious;
            $('#fancy_right').get(0).onclick = objPd.activateNext;
            $('#fancy_right span').get(0).onclick = objPd.activateNext;
        });
    }
    objPd.updateDashboard = function() {
        var self = this;
        $.ajax({
            type: "POST",
            url: "/DAJ/PromoteDemoteJudgingDashboard",
            data: { work_id: this.activeWork },
            dataType: "html",
            success: function(msg) {
                var objMsg = eval("(" + msg + ")");
                var uploadLink = "/Assets/Upload/" + objMsg.Barcode;
                if (objMsg.Portfolio == "True") {
                    uploadLink = "/Assets/UploadPortfolio/" + objMsg.StudentId + "/" + objMsg.TypeId;
                }
                $('#dashboardContent').html('Title: ' + objMsg.Title + '<br /><br />Type: ' + objMsg.Type + '<br /><br />Materials: ' + objMsg.Materials + '<br /><br />Dimensions: ' + objMsg.Dimensions + '<br /><br />Barcode: <a href="' + uploadLink + '" target="_blank">' + objMsg.Barcode + '</a><br /><br /><a href="' + objMsg.AssetFullPath + '" >Download Original File</a>');
                $('#Comment').html(objMsg.Comment);
            }
        });
    }
    objPd.countJudgings = function() {
        var h_1 = $('#' + left_container + '_header span');
        var h_2 = $('#' + right_container + '_header span');
        var left_count = $('#' + left_container + ' li').size();
        var right_count = $('#' + right_container + ' li').size();
        h_1.html('(' + left_count + ')');
        h_2.html('(' + right_count + ')');
    }
    objPd.activatePrevious = function() {
        var element = $('#asset_' + objPd.activeWork).parent().prev().children('a.image').attr('id');
        var id = element.split('_').pop();
        objPd.activate(id);
    }
    objPd.activateNext = function() {
        var element = $('#asset_' + objPd.activeWork).parent().next().children('a.image').attr('id');
        var id = element.split('_').pop();
        objPd.activate(id);
    }
    objPd.initFancy = function() {
        $("a.judgingImage").fancybox({ 'zoomSpeedIn': 300, 'zoomSpeedOut': 300, 'overlayShow': false });
    }
    objPd.setLimit = function(limit) {
        this.limit = limit;
    }
    objPd.limitExceeded = function() {
        if (this.limit == null) {
            return false;
        }
        return this.limit < $('#' + right_container + ' li').size();
    }
    objPd.judgingWorksPopup = function(path) {
        window.open(path, 'JudgingWorks', 'fullscreen=1,menubar=0,toolbar=0,scrollbars=1,resizable=0,status=0');
    }

    $('#' + left_container).sortable({ connectWith: '#' + right_container, receive: function(event, ui) { objPd.countJudgings(); ui.item.children().attr('rel', left_container); } });
    $('#' + right_container).sortable({ connectWith: '#' + left_container, receive: function(event, ui) { if (objPd.limitExceeded()) { $('#' + left_container).sortable('cancel'); }  objPd.countJudgings(); ui.item.children().attr('rel', right_container); } });

    return objPd;
}

function promoteDemoteTool(save_path, left_container, right_container) {
    var objPd = new baseJudgingTool(save_path, left_container, right_container);
    objPd.completedJudging = function(panel_id) {
        var leftParams = $('#' + left_container).sortable("serialize", { key: left_container }) || left_container + '=0';
        var rightParams = $('#' + right_container).sortable("serialize", { key: right_container }) || right_container + '=0';

        $.ajax({
            type: "POST",
            url: save_path,
            data: leftParams + '&' + rightParams + '&panel_id=' + panel_id,
            dataType: "html",
            success: function(msg) {
                var objMsg = eval("(" + msg + ")");
                if (objMsg.type == 'Success') {
                    $('#message').html(objMsg.content).removeClass().addClass('success').show();
                }
                else if (objMsg.type == 'Failure') {
                    $('#message').html(objMsg.content).removeClass().addClass('failure').show();
                }
            }
        });
    }

    return objPd;
}

function nominateTool(save_path, left_container, right_container) {
    var objPd = new promoteDemoteTool(save_path, left_container, right_container);
    objPd.setLimit(5);
    return objPd;
}

function winnersTool(save_path, left_container, right_container) {
    var objWT = new baseJudgingTool(save_path, left_container, right_container);
    objWT.chooseWinner = function(region_id) {
        var leftParams = $('#' + left_container).sortable("serialize", { key: left_container }) || left_container + '=0';
        var rightParams = $('#' + right_container).sortable("serialize", { key: right_container }) || right_container + '=0';

        $.ajax({
            type: "POST",
            url: save_path,
            data: leftParams + '&' + rightParams + '&region_id=' + region_id,
            dataType: "html",
            success: function(msg) {
                var objMsg = eval("(" + msg + ")");
                if (objMsg.type == 'Success') {
                    $('#message').html(objMsg.content).removeClass().addClass('success').show();
                }
                else if (objMsg.type == 'Failure') {
                    $('#message').html(objMsg.content).removeClass().addClass('failure').show();
                }
            }
        });
    }
    objWT.setLimit(1);
    return objWT;
}

function confirmLink(link, message)
{
    if (confirm(message)) {
        var f = document.createElement('form');
        f.action = link.href;
        f.method = 'POST';
        link.parentNode.appendChild(f);
        f.submit();
        return false;
    }
    else {
        return false;
    }
}

function AssetBrowserInitFancy()
{
    $(document).ready(function() {
        $(".iframe").fancybox(
                    { 'frameWidth': 900, 'frameHeight': 700 }
                );
    });
}

function AssetBrowser(numberOfAssets,workId) {
    var ab = new Object();
    ab.number = numberOfAssets;
    ab.current = 0;
    ab.workId = workId;
    ab.previous = function() {
        if (this.current <= 0) return;
        this.current--;
        this.showCurrent();
    }
    ab.next = function() {
        if (this.current + 1 >= this.number) return;
        this.current++;
        this.showCurrent();
    }
    ab.setLinksVisibility = function() {
        if (this.current == 0) {
            $('#previousLink').hide();
        } else {
            $('#previousLink').css('display', 'inline');
        }
        if (this.current + 1 == this.number) {
            $('#nextLink').hide();
        } else {
            $('#nextLink').css('display', 'inline');
        }
    }
    ab.showCurrent = function() {
        $('.assetBrowser').hide();
        var current = $('#asset_browser_image_' + this.current);
        ab.updateDashboard(ab.workId, current.attr('title'));
        current.show();
        this.setLinksVisibility();
    }

    $(window).scroll(function() {
        var leftMagin = Math.ceil(($(window).width() - 120) / 2);
        $('#assetsBrowserNavigation').css('margin-left', (leftMagin + $(window).scrollLeft()) + 'px');
    });

    ab.updateDashboard = function(activeWork, activeAsset) {
        $.ajax({
            type: "POST",
            url: "/DAJ/PromoteDemoteJudgingDashboard",
            data: { work_id: activeWork, asset_id: activeAsset },
            dataType: "html",
            success: function(msg) {
                var objMsg = eval("(" + msg + ")");
                var uploadLink = "/Assets/Upload/" + activeWork;
                if (objMsg.Portfolio == "True") {
                    uploadLink = "/Assets/UploadPortfolio/" + objMsg.StudentId + "/" + objMsg.TypeId;
                }
                window.parent.$('#dashboardContent').html('Title: ' + objMsg.Title + '<br /><br />Type: ' + objMsg.Type + '<br /><br />Materials: ' + objMsg.Materials + '<br /><br />Dimensions: ' + objMsg.Dimensions + '<br /><br />Barcode: <a href="' + uploadLink + '" target="_blank">' + objMsg.Barcode + '</a><br /><br /><a href="' + objMsg.AssetFullPath + '" >Download Original File</a>');
                window.parent.$('#Comment').html(objMsg.Comment);
            }
        });
    }
        
    return ab;
}

function ProgramsFilter() {
    var ProgramsFilter = new Object();
    ProgramsFilter.programsRecognition = new Array();
    ProgramsFilter.programsExhibition = new Array();
    ProgramsFilter.programsPublication = new Array();
    ProgramsFilter.programsScholarships = new Array();
    ProgramsFilter.IsFilterActive = false; 
    ProgramsFilter.showRecognition = false;
    ProgramsFilter.showExhibition = false;
    ProgramsFilter.showPublication = false;
    ProgramsFilter.showScholarships = false;
    ProgramsFilter.AddId = function(id, is_recognition, is_exhibition, is_publication, is_scholarships) {
        if (is_recognition) {
            ProgramsFilter.programsRecognition.push(id);
        }
        if (is_exhibition) {
            ProgramsFilter.programsExhibition.push(id);
        }
        if (is_publication) {
            ProgramsFilter.programsPublication.push(id);
        }
        if (is_scholarships) {
            ProgramsFilter.programsScholarships.push(id);
        }
    }
    ProgramsFilter.ToggleRecognition = function() {
        ProgramsFilter.DisableFilters();
        ProgramsFilter.showRecognition = !ProgramsFilter.showRecognition;
        return ProgramsFilter.UpdateList();
    }
    ProgramsFilter.ToggleExhibition = function() {
        ProgramsFilter.DisableFilters();
        ProgramsFilter.showExhibition = !ProgramsFilter.showExhibition;
        return ProgramsFilter.UpdateList();
    }
    ProgramsFilter.TogglePublication = function() {
        ProgramsFilter.DisableFilters();
        ProgramsFilter.showPublication = !ProgramsFilter.showPublication;
        return ProgramsFilter.UpdateList();
    }
    ProgramsFilter.ToggleScholarships = function() {
        ProgramsFilter.DisableFilters();
        ProgramsFilter.showScholarships = !ProgramsFilter.showScholarships;
        return ProgramsFilter.UpdateList();
    }
    ProgramsFilter.DisableFilters = function() {
        ProgramsFilter.showRecognition = false;
        ProgramsFilter.showExhibition = false;
        ProgramsFilter.showPublication = false;
        ProgramsFilter.showScholarships = false;
        return ProgramsFilter.UpdateList();
    }
    ProgramsFilter.UpdateList = function() {
        $j('.tagRecognition').css('font-weight', ProgramsFilter.showRecognition ? 'bold' : 'normal');
        $j('.tagExhibition').css('font-weight', ProgramsFilter.showExhibition ? 'bold' : 'normal');
        $j('.tagPublication').css('font-weight', ProgramsFilter.showPublication ? 'bold' : 'normal');
        $j('.tagScholarships').css('font-weight', ProgramsFilter.showScholarships ? 'bold' : 'normal');
        if (ProgramsFilter.IsFilterActive()) {
            $j('.orgProgramsList li').hide();
            
            if (ProgramsFilter.showRecognition) {
                $j.each(ProgramsFilter.programsRecognition, function(index, value) {
                    $j('#orgProgram_' + value).show();
                });
            }
            if (ProgramsFilter.showExhibition) {
                $j.each(ProgramsFilter.programsExhibition, function(index, value) {
                    $j('#orgProgram_' + value).show();
                });
            }
            if (ProgramsFilter.showPublication) {
                $j.each(ProgramsFilter.programsPublication, function(index, value) {
                    $j('#orgProgram_' + value).show();
                });
            }
            if (ProgramsFilter.showScholarships) {
                $j.each(ProgramsFilter.programsScholarships, function(index, value) {
                    $j('#orgProgram_' + value).show();
                });
            }
        } else {
            $j('.orgProgramsList li').show();
        }
        return false;
    }

    ProgramsFilter.IsFilterActive = function() {
        return ProgramsFilter.showRecognition || ProgramsFilter.showExhibition || ProgramsFilter.showPublication || ProgramsFilter.showScholarships;
    }
    
    return ProgramsFilter;
}

function updateDashboard(activeWork) {
    $.ajax({
        type: "POST",
        url: "/DAJ/PromoteDemoteJudgingDashboard",
        data: { work_id: activeWork },
        dataType: "html",
        success: function(msg) {
            var objMsg = eval("(" + msg + ")");
            var uploadLink = "/Assets/Upload/" + activeWork;
            if (objMsg.Portfolio == "True") {
                uploadLink = "/Assets/UploadPortfolio/" + objMsg.StudentId + "/" + objMsg.TypeId;
            }
            $('#dashboardContent').html('Title: ' + objMsg.Title + '<br /><br />Type: ' + objMsg.Type + '<br /><br />Materials: ' + objMsg.Materials + '<br /><br />Dimensions: ' + objMsg.Dimensions + '<br /><br />Barcode: <a href="' + uploadLink + '" target="_blank">' + objMsg.Barcode + '</a><br /><br /><a href="' + objMsg.AssetFullPath + '" >Download Original File</a>');
            $('#Comment').html(objMsg.Comment);
        }
    });
}