/// <reference path="jquery-vsdoc.js" />
var PGRID = [];
var playerGRID = function () {
    var gridTotal;
    var maxGrid = 64;
    var gridPages = 1;
    var gridRows = 0;
    var gridItemsPerRow = 16;
    var headshot = 'no-image171_193.jpg';
    var gridTotal = 82;
    var currentPage = 1;
    var grid = [];
    var startingPage = 1;
    var gridBox = $('#gridBox');
    var lgc = $('#leftGridColumn');
    var alphas = $('span.alphaLetter');
    var pb = $('#profileBox');
    var status;
    $(function () {
        setAlphaSort();
        setGridSort();
        var alpha = $('#gridSearchQuery').val();
        if (alpha.length > 1) {
            performAjaxAlpha(alpha, lgc.find('input[type=radio]:checked').val().trim());
            $('#grid_lname').val($('#gridSearchQuery').val());
        }
        else {
            alphas.each(function () {
                if ($(this).text().toLowerCase() == alpha.toLowerCase())
                    $(this).click();
            });
        }
        status = lgc.find('input[type=radio]:checked').val().trim();
        setFilterView(status);
        if (status == 'active')
            $('#profileBusinessInfo').hide();
        else
            $('#profileBusinessInfo').show();

    });
    function setFilterView(status) {

        if (status == 'inactive') {
            $('#grid_sort_team').hide();
            $('#grid_sort_position').hide();
            $('#grid_teamSelect option:eq(0)').attr('selected', 'selected');
            $('#grid_positionSelect option:eq(0)').attr('selected', 'selected');
            $('#grid_sort_BizType').show();
            $('#grid_sort_state').show();
            $('#grid_sort_chapter').show()
        }
        else {
            $('#grid_sort_team').show();
            $('#grid_sort_position').show();
            $('#grid_sort_BizType').hide();
            $('#grid_sort_state').hide();
            $('#grid_sort_chapter').hide();
        }
        return true;
    }
    function noResultsfound() {
        gridBox.html('<h3>No Results Found</h3>');
        $('#gridPaginator').html('<span class="gridPage bold">1</span>');
        gridPages = 1;

    }
    function performAjaxStatus(status) {
        performAjaxFilter($('#grid_lname').val(),
            status,
            $('#grid_teamSelect option:selected').attr('value'),
            $('#grid_positionSelect option:selected').attr('value'),
            $('#grid_sort_BizType option:selected').attr('value'),
            $('#grid_sort_state option:selected').attr('value'),
            $('#grid_sort_chapter option:selected').attr('value'), 'status');
    }
    function performAjaxAlpha(alphaLetter, status) {
        performAjaxFilter(alphaLetter,
            status,
            $('#grid_teamSelect option:selected').attr('value'),
            $('#grid_positionSelect option:selected').attr('value'),
            $('#grid_sort_BizType option:selected').attr('value'),
            $('#grid_sort_state option:selected').attr('value'),
            $('#grid_sort_chapter option:selected').attr('value'), 'alpha');
    }
    function performAjaxFilter(alphaLetter, status, team, position, type, state, chapter, searchType) {
        gridBox.html('<div class="ajaxLoader"></div>');
        currentPage = 1;
        startingPage = 1;
        trackPageview('/Player_Grid/' + searchType + '/' + status +
    '/Name-' + alphaLetter +
    '/Team-' + team +
    '/Position-' + position + '/');
        var url = '/services/getJSON.aspx';
        //Add more variables here
        var op = "getPlayersGridByFilter";
        if (searchType == 'status')
            op = 'getPlayersGridByStatus';
        if (searchType == 'alpha')
            op = 'getPlayersGridByAlpha';
        var data = { op: op, alpha: alphaLetter, s: status, t: team, p: position, occupation: type, state: state, chapter: chapter };
        $.post(url, data, function (json) {
            grid = json.Head;
            gridTotal = grid.length;
            if (gridTotal > 0)
                setGridPages(); //This calls loadGrid
            else {
                noResultsfound();
            }
        }, "json");
    }
    function loadGrid(page) {
        var gb = gridBox;
        gb.html('');
        var itemsToDisplay = gridTotal - ((currentPage - 1) * maxGrid);

        if (gridTotal < maxGrid)
            itemsToDisplay = gridTotal;
        if (itemsToDisplay > maxGrid)
            itemsToDisplay = maxGrid;

        var thumbClass = 'block';
        PGRID = grid;
        for (var x = 1; x <= itemsToDisplay; x++) {
            //set the starting player for each page
            var itemCounter = ((currentPage - 1) * maxGrid) + x - 1;

            //get each players variables from JSON
            var playerID = (grid[itemCounter].PLAYER_ID);

            var thumb = (grid[itemCounter].LOCATION);
            var name = (grid[itemCounter].FIRST_NAME) + " " + (grid[itemCounter].LAST_NAME);
            var name_comp = (grid[itemCounter].FIRST_NAME) + "-" + (grid[itemCounter].LAST_NAME);
            if (thumb == '' || thumb == null || thumb == ' ' || thumb.lenght < 3) {
                headshot = 'no-image171_193.jpg';
                thumbClass = 'hidden';
            }
            else {
                headshot = thumb;
                thumbClass = 'block';
            }


            if (x % gridItemsPerRow == 1)
                gb.append('<ul class="gridRow"></ul>');
            gb.find('.gridRow:last').append('<li class="griditem"><div class="headshotThumb invisible" dataid="' + itemCounter + '" value="' + name +
        '"><img src="/images/players/headshots/pics/' + headshot + '" alt="' + name_comp + '" class="' + thumbClass + '" pid="' + playerID + '" /></div></li>');

            if (x == itemsToDisplay) {
                $('div.headshotThumb').each(function () {
                    $(this).hover(function () {
                        $(this).fadeTo(200, 1);
                    }, function () {
                        $(this).fadeTo(200, .7);
                    });
                    $(this).hover(function () {
                        updateProfile($(this));
                    }, function () {
                    });
                    $(this).click(function () { goToProfilePage($(this)); }); //REDIRECT TO PROFILE //keepProfile = true; });
                });
                $('div.headshotThumb:eq(0)').hover();
                getItemToFade();
            }
        }
    }
    function URLDecode(str) {
        // Replace + with ' '
        // Replace %xx with equivalent character
        // Put [ERROR] in output if %xx is invalid.
        if (str) {
            var HEXCHARS = "0123456789ABCDEFabcdef";
            var encoded = str;
            var plaintext = "";
            var i = 0;
            while (i < encoded.length) {
                var ch = encoded.charAt(i);
                if (ch == "+") {
                    plaintext += " ";
                    i++;
                } else if (ch == "%") {
                    if (i < (encoded.length - 2)
					&& HEXCHARS.indexOf(encoded.charAt(i + 1)) != -1
					&& HEXCHARS.indexOf(encoded.charAt(i + 2)) != -1) {
                        plaintext += unescape(encoded.substr(i, 3));
                        i += 3;
                    } else {
                        alert('Bad escape combination near ...' + encoded.substr(i));
                        plaintext += "%[ERROR]";
                        i++;
                    }
                } else {
                    plaintext += ch;
                    i++;
                }
            } // while
            return plaintext;
        }
    };

    function goToProfilePage($el) {
        window.location.href = '/player/' + $el.find('img').attr('alt') + '/' + $el.find('img').attr('pid') + '/';
    }
    function updateProfile($el) {
        var gridID = parseInt($($el).attr('dataid'));
        var gi = grid[gridID];
        pb.stop();
        var imgsrc = $el.find('img').attr('src');
        $('#profileImage').css('backgroundImage', 'url(' + imgsrc + ')');
        $('#teamThumbnail').css('backgroundImage', 'url(/Images/playerHeaderTeamLogos/Small/' + gi.TEAM_ID + 'T.png)');
        $('#profilePlayerName').text(URLDecode(gi.FIRST_NAME + " " + gi.LAST_NAME));

        $('#profilePlayerTeam').find('span').text(URLDecode(gi.TEAM_CITY + " " + gi.TEAM_NAME));
        $('#profilePlayerNumber').find('span').text(URLDecode(gi.JERSEY_NUMBER));
        if (gi.POSITION == "")
            $('#profilePlayerPosition').find('span').text("Not Listed");
        else
            $('#profilePlayerPosition').find('span').text(URLDecode(gi.POSITION));
        $('#profilePlayerHeight').find('span').text(URLDecode(gi.HEIGHT_FEET + "' " + gi.HEIGHT_INCH + '"'));
        $('#profilePlayerWeight').find('span').text(URLDecode(gi.WEIGHT));
        $('#profilePlayerCollege').find('span').text(URLDecode(gi.COLLEGE_ATTENDED));

        //BusinessDir
        $('#profileBusinessName').find('span').text(URLDecode(gi.company) || 'N/A');
        if (gi.company_description) {
            gi.company_description = URLDecode(gi.company_description).split(';')[0];
        }
        $('#profileBusinessTitle').find('span').text(URLDecode(gi.company_description) || 'N/A');
        if (gi.alternate_website && gi.alternat_website.length > 5)
            $('#profileBusinessWebsite').find('span').html('<a href="' + URLDecode(gi.alternate_website) + 'target=_blank >' + (URLDecode(gi.alternate_website)) + '</a>');
        if (status == 'inactive') {
            if (gi.chapter.length > 1)
                $('#profilePlayerChapter').find('span').html(URLDecode(gi.chapter).replace('Chapter/', ''));
            else
                $('#profilePlayerChapter').find('span').text('Not Listed');
            $('#profilePlayerChapterPresident').html(URLDecode(gi.chapter_president) || '');
            $('#profilePlayerChapterNational').html(URLDecode(gi.national_steering_committee));
        }

    }
    function setGridPages() {
        if (status == 'active') {
            $('.activePlayerField').show();
            $('.formerPlayerField').hide();
        }
        else {
            $('.activePlayerField').hide();
            $('.formerPlayerField').show();
        }
        var gridPaginator = $('#gridPaginator');
        gridPaginator.html('');
        gridPages = Math.ceil(gridTotal / maxGrid);
        var pages = gridPages;
        if (gridPages > 29 + startingPage) {
            pages = 29 + startingPage;
        }
        for (var i = startingPage; i <= pages; i++) {
            if (gridPages > pages || startingPage > 1) {
                if (i == startingPage)
                    gridPaginator.append('<span class="lightText gridPagePrev">PREV</span>');
            }
            gridPaginator.append('<span class="lightText gridPage">' + i + '</span>');
            if (gridPages > pages || startingPage > 1) {
                if (i == pages)
                    gridPaginator.append('<span class="lightText gridPageNext">NEXT</span>');
            }
        }
        var grid1 = gridPaginator.find('span.gridPage:eq(0)');
        grid1.addClass('bold').removeClass('lightText');
        gridPaginator.find('span.gridPage').click(function () {
            gridPaginator.find('span.bold').removeClass('bold').addClass('lightText');
            currentPage = parseInt($(this).text());
            $(this).addClass('bold').removeClass('lightText');
            trackPageview('/Player_Grid/Page_' + currentPage + '/');
            loadGrid(currentPage);
        });
        gridPaginator.find('span').hover(function () {
            $(this).addClass('linkText');
        }, function () {
            $(this).removeClass('linkText');
        });
        gridPaginator.find('span.gridPagePrev').click(function () {
            var firstPage = parseInt($('#gridPaginator > span.gridPage:eq(0)').html());
            if (firstPage > 1) {
                startingPage = firstPage - 30;
            }
            trackPageview('/Player_Grid/Page_Previous/');
            setGridPages();
        });
        gridPaginator.find('span.gridPageNext').click(function () {
            var lastPage = parseInt($('#gridPaginator > span.gridPage:last').html());
            if (lastPage < gridPages) {
                startingPage = parseInt(grid1.html()) + 30;
            }
            trackPageview('/Player_Grid/Page_Next/');
            setGridPages();
        });
        grid1.click();
    }
    function showprofile($el) {
        var pc = $('#profileContent');
        pb.stop();
        pc.text($el.attr('value'));
    }
    function getItemToFade() {
        var gridItems = gridTotal;
        if (gridItems >= 64)
            gridItems = 64;
        fadeItemIn(gridBox.find('.invisible:eq(0)'));
    }
    function fadeItemIn(el) {
        el.removeClass('invisible').fadeTo(0, .7);
        setTimeout(function () { getItemToFade(); }, 10);
    }
    function setAlphaSort() {
        $(alphas.get(0)).addClass('bold');
        alphas.each(function () {
            $(this).click(function () {
                var letter = $(this).html();
                alphas.removeClass('bold');
                $(this).addClass('bold');
                performAjaxAlpha(letter, lgc.find('input[type=radio]:checked').val());
            });
            $(this).hover(function () {
                $(this).addClass('linkText');
            }, function () {
                $(this).removeClass('linkText');
            });
        });
    }
    function isSortGridEmpty() {
        var ret = true;
        lgc.find('option:selected').each(function () {
            var t = $(this);
            if (t.val() != '0' && t.is(':visible'))
                ret = false;
        });
        var name = $('#grid_lname').val();
        if (name.length >= 1)
            ret = false;
        return ret;
    }
    function setGridSort() {
        lgc.find('input[type=radio]').click(function () {
            status = $(this).val().trim();
            setFilterView(status);
        });
        var sortbtn = $('#filterGrid');
        sortbtn.click(function () {
            var status = lgc.find('input[type=radio]:checked').val();
            var name = $('#grid_lname').val();
            var searchType = 'filter';
            var team = $('#grid_teamSelect option:selected').attr('value');
            var position = $('#grid_positionSelect option:selected').attr('value');
            var occupation = $('#grid_sort_BizType option:selected').attr('value');
            var state = $('#grid_sort_state option:selected').attr('value');
            var chapter = $('#grid_sort_chapter option:selected').attr('value');
            if (isSortGridEmpty()) {
                name = $('#alphabetList').find('.bold').text();
                searchType = 'alpha';
            }
            performAjaxFilter(name,
            status,
            team,
            position,
            occupation,
            state,
            chapter,
            searchType);
            if (status == 'inactive')
                $('#profileBusinessInfo').show();
            else
                $('#profileBusinessInfo').hide();

        });

        lgc.find('input[type="text"]').keyup(function (event) {
            if (event.keyCode == 13) {
                sortbtn.click();
            }
        });
        lgc.find('select').keyup(function (event) {
            if (event.keyCode == 13)
                sortbtn.click();
        });

    }
};
playerGRID();
