﻿var serviceBaseUrl = "/Service/";
var allGenres = new Object();
var state = StateHandler.getInstance();
var currentActivityBoxState = "t0";
$(document).ready(function() {
    
    $(".slidetabs").tabs(".imagessb > div", {
	    effect: 'fade',
	    fadeOutSpeed: "slow",    	
	    rotate: true	    
    }).slideshow({autoplay: true, interval: 10000})
    
    //var slideShowInterval = setInterval(f, delay);
    
    
    
    
    
    // Setze Seitenname
    //register known Listeners
    $("#ListingFilterBox a").registerStateListener();
    //read Parameters from URL
    state.readUrl();
    //Baue GenreDropDown
    initGenres();
 
     $("#FilterDevices").AppZappDrowDown({
        clickEvent: function(relation) {
            fireEvent("deviceFilter", relation);
        },
        cssPrefix: "FilterDevices_",
        activeRelation: state.getParam("deviceFilter", "All")
    });
    $("#FilterPopular").AppZappDrowDown({
        clickEvent: function(relation) {
            fireEvent("popFilter", relation);
        },
        cssPrefix: "FilterPopular_",
        activeRelation: state.getParam("popFilter", "All")
    });
    $("#FilterPrice").AppZappDrowDown({
        clickEvent: function(relation) {
            fireEvent("priceFilter", relation);
        },
        cssPrefix: "FilterPrice_",
        activeRelation: state.getParam("priceFilter", "All")
    });
    $("#FilterActivity").AppZappDrowDown({
        clickEvent: function(relation) {
            fireEvent("activityFilter", relation);
        },
        cssPrefix: "FilterActivity_",
        activeRelation: state.getParam("activityFilter", "All")
    });
    //setze aktive Filter
    initFilterState();

    $.fn.EndlessList.globals.currentPage = parseInt(state.getParam("cPage", "1")) - 1;
    $.fn.EndlessList.globals.loadList = loadList;
    $.fn.EndlessList.globals.afterItemsLoaded = afterItemsLoaded;    
    $.fn.EndlessList.globals.appsPerPage = 15;
    $.fn.EndlessList.globals.loadElement = '/Service/listings.asmx/GetActivityDetails';
    $.fn.EndlessList.globals.template = $("#ActivityDetailTemplate").html();
    $.fn.EndlessList.globals.pagerTop = ".pagerTop";
    $.fn.EndlessList.globals.pagerBottom = ".pagerBottom";
    $("#ListingBox").EndlessList();
    $("#sideBoxHeader").click(function(e) {
        $(".sideBoxContent").toggle();
        $(this).toggleClass("open");
    });   
    
    $(".preFilter").hover(function(){
        $(this).addClass("hover");
    },function(){$(this).removeClass("hover");});
    $(".preFilter").click(function(e){
        e.preventDefault();
        var newState = $(this).attr("rel");
        $(".preFilter").removeClass("active");
        if(newState == currentActivityBoxState){
            currentActivityBoxState = "t0";            
        }else{
            $(this).addClass("active");
            currentActivityBoxState = newState;        
            trackEvent("ActivityTabs","Activate",newState);
        }        
       
        switch(currentActivityBoxState){
            case "t0":
                state.fireEvent("popFilter", "All");
                $("#popFilterAll").trigger('select');
                state.fireEvent("priceFilter", "All");
                $("#priceFilterAll").trigger('select');
                state.fireEvent("activityFilter", "All");
                $("#activityFilterAll").trigger('select');
            break;
            case "t1":                
                state.fireEvent("popFilter", "Popular");
                $("#popFilterPopular").trigger('select');
                state.fireEvent("priceFilter", "All");
                $("#priceFilterAll").trigger('select');
                state.fireEvent("activityFilter", "Price");             
                $("#activityFilterPrice").trigger('select');
            break;
            case "t3":
                state.fireEvent("popFilter", "Popular");
                $("#popFilterPopular").trigger('select');
                state.fireEvent("priceFilter", "Free");
                $("#priceFilterFree").trigger('select');
                state.fireEvent("activityFilter", "Price");               
                $("#activityFilterPrice").trigger('select');
            break;
            case "t2":
                state.fireEvent("popFilter", "Popular");
                $("#popFilterPopular").trigger('select');
                state.fireEvent("priceFilter", "All");
                $("#priceFilterAll").trigger('select');
                state.fireEvent("activityFilter", "All");   
                $("#activityFilterAll").trigger('select');             
            break;
            case "t4":
                state.fireEvent("popFilter", "Popular");
                $("#popFilterPopular").trigger('select');
                state.fireEvent("priceFilter", "All");
                $("#priceFilterAll").trigger('select');
                state.fireEvent("activityFilter", "New");     
                $("#activityFilterNew").trigger('select');           
            break;
            
        }
        state.notifyListeners();
        initFilterState();
        $.fn.EndlessList.globals.currentPage = 0;
        $.fn.EndlessList.reloadList();            
    }); 
    
   
});
PageClick = function(pageclickednumber) {
    $("#pager").pager({ pagenumber: pageclickednumber, pagecount: $.fn.EndlessList.globals.totalPages, buttonClickCallback: PageClick });
}
function afterItemsLoaded(){        
    $.ajax({
        type: "POST",
        url: "/Service/Community.asmx/GetNewestCustomLists",
        data: "{'count':'10'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(msg) {
            var json = eval('(' + msg.d + ')');
            
            $("#newestCollections").setTemplate($("#CommunityCustomListTemplate").html());
            $("#newestCollections").processTemplate(json);
        }
    });  
     $.ajax({
        type: "POST",
        url: "/Service/Community.asmx/GetNewestComments",
        data: "{'genreID':'0','count':'10'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(msg) {
            var json = eval('(' + msg.d + ')');
            
            $("#newestComments").setTemplate($("#CommunityCommentsTemplate").html());
            $("#newestComments").processTemplate(json);
        }
    });  
}
// setzte die undynamischen Filter States
function initFilterState() {    
    $("#ListingFilterBox a").removeClass("active").parent().removeClass("active");   
    $("#FilterGenre a:first").addClass("active").parent().addClass("active");
    $("#FilterPopular a:first").addClass("active").parent().addClass("active");
    $("#FilterPrice a:first").addClass("active").parent().addClass("active");
    $("#FilterActivity a:first").addClass("active").parent().addClass("active");
    $("#FilterDevices a:first").addClass("active").parent().addClass("active");
}
function loadList(page, appsPerPage) {
    $.ajax({
        type: "POST",
        url: "/Service/listings.asmx/getRecentActivities",
        data: "{'genre':'" + state.getParam("genre", "0") + "','priceFilter':'" + state.getParam("priceFilter", "All") + "','activityFiler':'" + state.getParam("activityFilter", "All") + "','popFilter':'" + state.getParam("popFilter", "All") + "','deviceFilter':'" + state.getParam("deviceFilter", "All") + "','page':'" + page + "','appsPerPage':'" + appsPerPage + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(msg) {
            $.fn.EndlessList.loadedList(eval('(' + msg.d + ')'));
        }
    });
}
// hier werden die Genres geladen und die Elemente für Stateful aufbereitet.
function initGenres() {
    $.ajax({
        type: "POST",
        url: serviceBaseUrl + "listings.asmx/GetGenres",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        error: function(msg) {
            alert('error');
        },
        success: function(msg) {
            $("#FilterGenre").empty();
            var json = eval('(' + msg.d + ')');
            $("#FilterGenre").setTemplate($("#GenreTemplate").html());
            $("#FilterGenre").processTemplate(json);
            for (var k = 0; k < json.List.length; k++) {
                // speichere Genre in Array
                allGenres[json.List[k].ID] = json.List[k].Name;
            }
            $("#FilterGenre").AppZappDrowDown({
                clickEvent: function(relation) {
                    fireEvent("genre", relation);
                },
                cssPrefix: "FilterGenre_",
                activeRelation: state.getParam("genre", "0")
            });

            // muss hier nochmal gemacht werden, da die Elemente nachgeladen wurden.
            state.notifyListeners();
        }
    });
}	  
