﻿var orderMode = ["byRating", "byDate", "byViews"];
var timeOutID = undefined;
var concertAPIs = new Array();
var concertPhotoAPIs = new Array();
var concertVideoAPIs = new Array();
var concertTabIndex = 0;
var concertPhotosTabIndex = 0;
var concertVideosTabIndex = 0;
var concertTimeOutID = undefined;
var concertPhotosTimeOutID = undefined;
var concertVideosTimeOutID = undefined;
var scrollTime = 5000;
var concertTimeoutID = new Array();
var photoTimeoutID = new Array();
var videoTimeoutID = new Array();
var autoscrollInterval = 5000;

function doRequest(scrollPath, tabIndex, requestType) {
    var requestUrl = '';
    var params = ({
        'order': orderMode[tabIndex]
    });
    var scroollAPIs;
    requestUrl = '/Handlers/Home.ashx';
    var naviPath;
    switch (requestType) {
        case ('concert'):
            {
                naviPath = '#concertNavi' + tabIndex;
                if (concertTimeOutID) {
                    clearTimeout(concertTimeOutID);
                }
                params['action'] = 'concert';
                concertTabIndex = tabIndex;
                scroollAPIs = concertAPIs;
                break;
            }
        case ('photo'):
            {
                naviPath = '#photoNavi' + tabIndex;
                if (concertPhotosTimeOutID) {
                    clearTimeout(concertPhotosTimeOutID);
                }
                params['action'] = 'photo';
                concertPhotosTabIndex = tabIndex;
                scroollAPIs = concertPhotoAPIs;
                break;
            }
        case ('video'):
            {
                naviPath = '#videoNavi' + tabIndex;
                if (concertVideosTimeOutID) {
                    clearTimeout(concertVideosTimeOutID);
                }
                params['action'] = 'video';
                concertVideosTabIndex = tabIndex;
                scroollAPIs = concertVideoAPIs;
                break;
            }
    }
    var itms = $(scrollPath).find('.items').children();
    if (itms.length > 0) {
        if (scroollAPIs[tabIndex] == undefined) {
            var parent = $(scrollPath).parent().parent();
            scroollAPIs[tabIndex] = $(scrollPath).scrollable({
                prevPage: parent.find('div.paneNavigation div.prevPage'),
                nextPage: parent.find('div.paneNavigation div.nextPage'),
                clickable: false
            }).circular().navigator({ navi: naviPath }).mousewheel({ api: true });
            switch (requestType) {
                case ('concert'):
                    {
                        concertTimeoutID[tabIndex] = setInterval("concertAPIs[" + tabIndex + "].nextPage()", autoscrollInterval);
                        break;
                    }
                case ('photo'):
                    {
                        photoTimeoutID[tabIndex] = setInterval("concertPhotoAPIs[" + tabIndex + "].nextPage()", autoscrollInterval);
                        break;
                    }
                case ('video'):
                    {
                        videoTimeoutID[tabIndex] = setInterval("concertVideoAPIs[" + tabIndex + "].nextPage()", autoscrollInterval);
                        break;
                    }
            }
        }
    } else {
        $(scrollPath).parentsUntil('panes').children('.loadOverlay').show().fadeTo('fast', overlayOpacity);
        $.ajax({
            type: 'GET',
            cache: true,
            async: true,
            url: requestUrl,
            data: params,
            success: function(data) {
                $(scrollPath).parentsUntil('panes').children('.loadOverlay').stop().fadeTo('normal', 0, function() { $(this).hide(); });
                var $d = $(data);
                if ($d.find('result').text() == 'success') {
                    var $itemsContainer = $(scrollPath + ' div.items')
                    $itemsContainer.html($(data).find('html').text());

                    if (scroollAPIs[tabIndex] == undefined) {
                        var parent = $(scrollPath).parent().parent();
                        scroollAPIs[tabIndex] = $(scrollPath).scrollable({
                            prevPage: parent.find('div.paneNavigation div.prevPage'),
                            nextPage: parent.find('div.paneNavigation div.nextPage'),
                            clickable: false
                        }).circular().navigator({ navi: naviPath }).mousewheel({ api: true });
                        switch (requestType) {
                            case ('concert'):
                                concertTimeoutID[tabIndex] = setInterval("concertAPIs[" + tabIndex + "].nextPage()", autoscrollInterval);
                                break;
                            case ('photo'):
                                photoTimeoutID[tabIndex] = setInterval("concertPhotoAPIs[" + tabIndex + "].nextPage()", autoscrollInterval);
                                break;
                            case ('video'):
                                videoTimeoutID[tabIndex] = setInterval("concertVideoAPIs[" + tabIndex + "].nextPage()", autoscrollInterval);
                                break;
                        }
                    }
                }
                else { return false; }
            }
        });
    }
}
function StopConcertsAutoScroll(index) {
    if (concertTimeoutID[index] != undefined) {
        clearInterval(concertTimeoutID[index]);
    }
}
function StopAndPlayConcertsAutoScroll(index) {
    StopConcertsAutoScroll(index);
    concertTimeoutID[index] = setInterval("concertAPIs[" + index + "].nextPage()", autoscrollInterval);
}

function StopPhotosAutoScroll(index) {
    if (photoTimeoutID[index] != undefined) {
        clearInterval(photoTimeoutID[index]);
    }
}
function StopAndPlayPhotosAutoScroll(index) {
    StopPhotosAutoScroll(index);
    photoTimeoutID[index] = setInterval("concertPhotoAPIs[" + index + "].nextPage()", autoscrollInterval);
}

function StopVideosAutoScroll(index) {
    if (videoTimeoutID[index] != undefined) {
        clearInterval(videoTimeoutID[index]);
    }
}
function StopAndPlayVideosAutoScroll(index) {
    StopVideosAutoScroll(index);
    videoTimeoutID[index] = setInterval("concertVideoAPIs[" + index + "].nextPage()", autoscrollInterval);
}

$(function() {
    if ($.browser.safari || $.browser.mozilla) {
        $('div.ConcertsBox div.panes .first').fadeIn(1);
        $('div.ConcertPhotosBox div.panes .first').fadeIn(1);
        $('div.ConcertVideosBox div.panes .first').fadeIn(1);
    }
    else {
        $('div.ConcertsBox div.panes .first').animate({ opacity: 1 }, 1);
        $('div.ConcertPhotosBox div.panes div.pane:eq(0)').animate({ opacity: 1 }, 1);
        $('div.ConcertVideosBox div.panes div.pane:eq(0)').animate({ opacity: 1 }, 1);
    }

    var concertTabApi = $("div.mainHomeContent div.ConcertsBox div.additionalLink ul").tabs("div.ConcertsBox div.panes > div.pane", {
        api: true,
        initialIndex: 1,
        onBeforeClick: function(tabIndex) {
            var scrollPath = 'div.mainHomeContent div.ConcertsBox div.pane:eq(' + tabIndex.toString() + ') div.scrolable';
            var result = doRequest(scrollPath, tabIndex, 'concert');
        }
    });
    var concertPhotoApi = $("div.mainHomeContent div.ConcertPhotosBox div.additionalLink ul").tabs("div.ConcertPhotosBox div.panes > div.pane", {
        api: true,
        initialIndex: 1,
        onBeforeClick: function(index) {
            if (photoTimeoutID[index] != undefined) {
                clearInterval(photoTimeoutID[index]);
            }
            var scrollPath = 'div.mainHomeContent div.ConcertPhotosBox div.pane:eq(' + index.toString() + ') div.scrolable';
            var result = doRequest(scrollPath, index, 'photo');
        }
    });
    var concertVideoApi = $("div.mainHomeContent div.ConcertVideosBox div.additionalLink ul").tabs("div.ConcertVideosBox div.panes > div.pane", {
        api: true,
        initialIndex: 1,
        onBeforeClick: function(index) {
            if (videoTimeoutID[index] != undefined) {
                clearInterval(videoTimeoutID[index]);
            }
            var scrollPath = 'div.mainHomeContent div.ConcertVideosBox div.pane:eq(' + index.toString() + ') div.scrolable';
            var result = doRequest(scrollPath, index, 'video');
        }
    });

    $('.ConcertsBox div.additionalLink ul li').click(function() {
        var index = $(this).index();
        if (concertAPIs[index]) {
            concertAPIs[index].begin(0);
            StopAndPlayConcertsAutoScroll(index);
        }
    })
    $('.ConcertsBox .panes .pane').mouseover(function() {
        var index = $(this).index();
        StopConcertsAutoScroll(index);
    })
    $('.ConcertsBox .panes .pane').mouseout(function() {
        var index = $(this).index();
        StopAndPlayConcertsAutoScroll(index);
    })
    $('.ConcertsBox .panes .paneNavigation div').mouseover(function() {
        var index = $(this).parent().parent().index();
        StopConcertsAutoScroll(index);
    })
    $('.ConcertsBox .panes .paneNavigation div').mouseout(function() {
        var index = $(this).parent().parent().index();
        StopAndPlayConcertsAutoScroll(index);
    })


    $('.ConcertPhotosBox div.additionalLink ul li').click(function() {
        var index = $(this).index();
        if (concertPhotoAPIs[index]) {
            concertPhotoAPIs[index].begin(0);
            StopAndPlayPhotosAutoScroll(index);
        }
    })
    $('.ConcertPhotosBox .panes .pane').mouseover(function() {
        var index = $(this).index();
        StopPhotosAutoScroll(index);
    })
    $('.ConcertPhotosBox .panes .pane').mouseout(function() {
        var index = $(this).index();
        StopAndPlayPhotosAutoScroll(index);
    })
    $('.ConcertPhotosBox .panes .paneNavigation div').mouseover(function() {
        var index = $(this).parent().parent().index();
        StopPhotosAutoScroll(index);
    })
    $('.ConcertPhotosBox .panes .paneNavigation div').mouseout(function() {
        var index = $(this).parent().parent().index();
        StopAndPlayPhotosAutoScroll(index);
    })

    $('.ConcertVideosBox div.additionalLink ul li').click(function() {
        var index = $(this).index();
        if (concertVideoAPIs[index]) {
            concertVideoAPIs[index].begin(0);
            StopAndPlayVideosAutoScroll(index);
        }
    })
    $('.ConcertVideosBox .panes .pane').mouseover(function() {
        var index = $(this).index();
        StopVideosAutoScroll(index);
    })
    $('.ConcertVideosBox .panes .pane').mouseout(function() {
        var index = $(this).index();
        StopAndPlayVideosAutoScroll(index);
    })
    $('.ConcertVideosBox .panes .paneNavigation div').mouseover(function() {
        var index = $(this).parent().parent().index();
        StopVideosAutoScroll(index);
    })
    $('.ConcertVideosBox .panes .paneNavigation div').mouseout(function() {
        var index = $(this).parent().parent().index();
        StopAndPlayVideosAutoScroll(index);
    })
});
