﻿function imageListCallback(el) {
        loadingCtrObj.removeClass('loading');
        //need to add the class 'last' to every fourth img
        var eventImageLinks = eventImageCtrObj.find('ul li a.flickrPhoto');
        if (eventImageLinks.length > 0){
            var i = 0;
            eventImageLinks.each(function() {
                if (i % 4 == 3) {
                    $(this).parent().addClass('last');
                }
                i++;
                $(this).attr('rel', 'event-image');
            });

//            eventImageLinks.fancybox({
//                'overlayOpacity': 0.7,
//                'overlayColor': '#FFF',
//                'hideOnContentClick': true
//            });
            eventImageCtrObj.fadeIn('fast');
            Pagination();
        }
        else {
            NoPhotos();
        }
        
        
    }
    
    function NoPhotos() {
        loadingCtrObj.removeClass('loading');
        eventImageCtrObj.append('<p>There are currently no photos for this event.</p>');
        loadingCtrObj.css('height','40px');
    }
    
    var drawPagination = 1;
    function Pagination() {
        var currentPage = eventImageCtrObj.find('input:eq(0)').val();
        var totalPages = eventImageCtrObj.find('input:eq(1)').val();
        var itemsPerPage = eventImageCtrObj.find('input:eq(2)').val();
        var totalImages = eventImageCtrObj.find('input:eq(3)').val();
        
        var prevLinkObj;
        var nextLinkObj;
        var firstLinkObj;
        var lastLinkObj;
        var visiblePageLinks = 20;
        var visibleStartPage;
        var visibleEndPage;
            if (totalPages > 1) {
                if (drawPagination == 1) {
                    CreatePreviousLink();
                    if (totalPages > 20) 
                        CreateFirstLink();

                    paginationCtrObj.append('<span id="flickrPageLinks"></span>');
                }
                
                var startPageIndex = CalculateStartIndex();
                var endPageIndex = startPageIndex + visiblePageLinks;
                if (totalPages < visiblePageLinks) {
                    endPageIndex = totalPages;
                }
                
                paginationCtrObj.find('#flickrPageLinks').html('');
                var pageLinkCtr = paginationCtrObj.find('#flickrPageLinks');
                for (var i =startPageIndex;i <= endPageIndex;i++) {
                    showLink = true;
                    if (i == currentPage)
                        showLink = false;
                    pageLinkCtr.append(CreatePageLink(i,showLink));
                }
                    
                
                if (drawPagination == 1) {
                    if (totalPages > 20) 
                        CreateLastLink();
                    CreateNextLink();
                }
                prevLinkObj = paginationCtrObj.find('#flickrPrevious');
                nextLinkObj = paginationCtrObj.find('#flickrNext');
                firstLinkObj = paginationCtrObj.find('#flickrFirst');
                lastLinkObj = paginationCtrObj.find('#flickrLast');
                BindClickEvents();
                ToggleHandleDisplays();
            }
            drawPagination = 0;
        
        function ToggleHandleDisplays() {
            if (currentPage == 1) {
                prevLinkObj.hide();
                firstLinkObj.hide();
            }
            else {
                prevLinkObj.show();
                if (startPageIndex >= 2)
                    firstLinkObj.show();
                else
                    firstLinkObj.hide();
            }
            if (currentPage == totalPages) {
                nextLinkObj.hide();
                lastLinkObj.hide();
            }
            else {
                nextLinkObj.show();
                if (endPageIndex < totalPages) 
                    lastLinkObj.show();
                else
                    lastLinkObj.hide();
            }
        }
        
        function CommonClickEvents(pageSelected) {
            loadingCtrObj.addClass('loading');
            eventImageCtrObj.fadeOut('fast',function(){
                eventImageCtrObj.html('');
                GetImages(pageSelected);
            });
        }
        
        function BindClickEvents() {
            paginationCtrObj.find('#flickrPageLinks a').click(function() {
                var pageSelected = $(this).attr('href');
                //ie appends the url so need to get last index of slash
                if (pageSelected.lastIndexOf('/') > 0)
                    pageSelected = pageSelected.substring(pageSelected.lastIndexOf('/') + 1);
                CommonClickEvents(pageSelected);
                return false;
            });
            BindNextEvent();
            BindPreviousEvent();
            BindFirstEvent();
            BindLastEvent();
        }
        
        function BindNextEvent() {
            var nextLink = nextLinkObj;
            nextLink.unbind('click');
            nextLink.click(function(){
                var pageSelected = (parseInt(currentPage) + 1);
                CommonClickEvents(pageSelected);
                return false;
            });
        }
        
        function BindPreviousEvent() {
            var previousLink = prevLinkObj;
            previousLink.unbind('click');
            previousLink.click(function(){
                var pageSelected = (parseInt(currentPage) - 1);
                CommonClickEvents(pageSelected);
                return false;
            });
        }
        
        function BindFirstEvent() {
            var firstLink = firstLinkObj;
            firstLink.unbind('click');
            firstLink.click(function(){
                var pageSelected = 1;
                CommonClickEvents(pageSelected);
                return false;
            });
        }
        
        function BindLastEvent() {
            var lastLink = lastLinkObj;
            lastLink.unbind('click');
            lastLink.click(function(){
                var pageSelected = $(this).attr('href');
                //ie appends the url so need to get last index of slash
                if (pageSelected.lastIndexOf('/') > 0)
                    pageSelected = pageSelected.substring(pageSelected.lastIndexOf('/') + 1);
                CommonClickEvents(pageSelected);
                return false;
            });
        }
        
        function CreateFirstLink() {
            var firstLink = '<a href="1" id="flickrFirst" class="pageNumber button">1...</a> ';
            paginationCtrObj.append(firstLink);
        }
        
        function CreateLastLink() {
            var lastLink = '&nbsp;<a href="'+totalPages+'" id="flickrLast" class="pageNumber button">...'+totalPages+'</a> ';
            paginationCtrObj.append(lastLink);
        }
        
        function CreatePreviousLink() {
            var previousLink = '<a href="" id="flickrPrevious" class="pageNumber button">Previous</a> ';
            paginationCtrObj.append(previousLink);
        }
        
        function CreateNextLink() {
            var nextLink = '<a href="" id="flickrNext" class="pageNumber button">Next</a> ';
            paginationCtrObj.append(nextLink);
        }
        
        function CalculateStartIndex() {
            if (currentPage == 1 || totalPages < visiblePageLinks || currentPage < (visiblePageLinks / 2)) 
                return 1;
            else {
                var startPage = currentPage - (visiblePageLinks / 2);
                if (startPage > (totalPages - visiblePageLinks))
                    startPage = totalPages - visiblePageLinks;
                return startPage;
            }
            
            return 1;
        }
        
        function CreatePageLink(pageNumber, showLink) {
            if (showLink)
                return "<a href='"+pageNumber+"' class='pageNumber button'><span>"+pageNumber+"</span></a> ";
            else 
                return "<span>" + pageNumber + "</span> ";
        }
    }