//==============================================================================
var NavigationApp = function(){
}

NavigationApp.prototype.siteNavigationGoForward = function(){
    Navigation.getNavigationInfo(1, function(){
        Navigation.execFunction();
    });
}

NavigationApp.prototype.siteNavigationGoBack = function(){
    Navigation.getNavigationInfo(-1, function(){
        Navigation.execFunction();
    });
}

NavigationApp.prototype.initSiteNavButtons = function(){
    var nav = $('div.site-navigator');
    if (!nav.html()){
        nav.append('<a class="left-nav" href="javascript:void(0);" onclick="return false;">&nbsp;</a>&nbsp;&nbsp;<a class="right-nav" href="javascript:void(0);" onclick="return false;">&nbsp;</a>&nbsp;&nbsp;');
    }
    Navigation.updateSiteNavButtons();
}

NavigationApp.prototype.initPlaylistNavButtons = function(){
    var nav = $('div.playlist-navigator div.site-navigator');
    if (!nav.html()){
        nav.append('<a class="left-nav" href="javascript:void(0);" onclick="return false;">&nbsp;</a>&nbsp;&nbsp;<a class="right-nav" href="javascript:void(0);" onclick="return false;">&nbsp;</a>&nbsp;&nbsp;');
    }
    Navigation.updateSiteNavButtons();
}

NavigationApp.prototype.updateSiteNavButtons = function(){

    if( this.currentStep > 1) {
        
        var left  = $('.left-nav');
        left.unbind('click');
        left.click(function(){
            Navigation.siteNavigationGoBack();
            return false;
        });
        left.attr("class","left-nav-a");
    
    } else {

        var left_a  = $('.left-nav-a');
        left_a.unbind('click');
        left_a.click(function(){
            return false;
        });
        left_a.attr("class","left-nav");

    }
    
    if( this.currentStep < this.maxStep ) {

        var right = $('.right-nav');
        right.unbind('click');
        right.click(function(){
            Navigation.siteNavigationGoForward();
            return false;
        });
        right.attr("class","right-nav-a");

    } else {

        var right_a = $('.right-nav-a');
        right_a.unbind('click');
        right_a.click(function(){
            return false;
        });
        right_a.attr("class","right-nav");
       
    }
}

NavigationApp.prototype.execFunction = function(){
    if ('undefined' == typeof(this.currentFunctionParams)|| null == this.currentFunctionParams ) {

        eval(this.currentFunction + '("'+this.link+'")');

    } else {
        if ('object' == typeof(this.currentFunctionParams)) {

            str ='"' + this.currentFunctionParams.join('", "') +'"';
            eval(this.currentFunction+'('+str+')');

        } else {

            eval(this.currentFunction+'("'+this.currentFunctionParams+'")');

        }

    }

}

NavigationApp.prototype.getNavigationInfo = function(direction, onOk){
    var t = this;
    $.ajax({
        type: "POST",
        url: 'navigation/_AjaxNavigation',
        data: {
            direction: direction
        },
        dataType: "json",

        success: function(data){

            if ('undefined' != typeof(data.maxStep) && null != data.maxStep ) {
                t.maxStep = data.maxStep;
            } else {
                t.maxStep = 0;
            }

            if ('undefined' != typeof(data.currentStep) && null != data.currentStep ) {
                t.currentStep = data.currentStep;
            } else {
                t.currentStep = 0;
            }

            if ('undefined' != typeof(data.link) && null != data.link ) {
                t.link = data.link;
            } else {
                t.link = '/';
            }

            if ('undefined' != typeof(data.functionName) && null != data.functionName ) {
                t.currentFunction = data.functionName;
            } else {
                t.currentFunction = '$.Ajaxor.goToLink';
            }

            if ('undefined' != typeof(data.functionParams) && null != data.functionParams ) {
                t.currentFunctionParams = data.functionParams;
            } else {
                t.currentFunctionParams = null;
            }
            
            if ('function' == typeof onOk) {
                onOk();
            }
        
        },
        complete: function(){
      
        },
        error: function() {

        }
    });

    return false;
}

NavigationApp.prototype.currentStep = null;
NavigationApp.prototype.maxStep = null;
NavigationApp.prototype.link = '/';
NavigationApp.prototype.currentFunction = '$.Ajaxor.goToLink';
NavigationApp.prototype.currentFunctionParams = null;

var Navigation;

function initNavigation(){
    Navigation = new NavigationApp();
    Navigation.getNavigationInfo(0, function(){
        Navigation.initSiteNavButtons();
    });

}

$(function(){
    initNavigation();

});