var gup = function(name) {
    var results = (new RegExp("[\\?&]" + name + "=([^&#]*)")).exec(window.location.href);
    if (results == null) { return "" }
    else { return results[1] }
};
function initDebug() {
    $("body").prepend("<div id='debug'></div>");
    $("#debug").css({
        'position':'fixed',
        'width':'200px',
        'height':'400px',
        'background':'#333',
        'color':'Lime',
        'border':'3px solid #666',
        'padding':'4px',
        'font-family':'Monaco, Courier New',
        'right':'10px',
        'top':'200px',
        'text-align':'left',
        'font-size':'10px',
        'display':'block'
    });
}
var _debug_counter = 0;
function debug(msg) { 
    return;
		if ($("#debug").size() == 0)
        initDebug();
    $("#debug").append("<p>" + (_debug_counter++) + "> " + msg + "</p>");
}
var Visor = function() {
    var $_launches;
    var _startedup = false;
    var _intvl;
    var _duration = 5000;
    var _switching;

    function _loadBG($e) {
        if ($e.children(".background-visor").size() > 0)
            return;
        var $bg = $("<div class='background-visor'><img /></div>");
        var src = $e.find("a[name=background]").attr("rel");
        $bg.children("img").attr("src", src);
        $e.find("a[name=background]").remove();
        $e.append($bg);
        _addShadow($e);
    }
    function _addShadow($e) {
        $e.append("<div class='shadow'></div>");
    }
    function _preloadMedia($e) {
        _loadBG($e);
    }
    function _preloadNextMedia($e) {
        var $next = $e.next();
        _preloadMedia($next);
    }
    function _listClick(e) {
        $li = $(e.currentTarget).parent();
        if (_switching) {
            return;
        }
        clearInterval(_intvl);
        var i = $(".series-menu ul li").index($li);
        var $wanted = $_launches.children().eq(i);
        _preloadMedia($wanted);
        _intvl = setInterval(Visor.NextVisor, _duration);

        _loadVisor($wanted);
    }
    function _loadVisor($e) {
        _switching = true;
        var i = $_launches.children(".visor").index($e);
        $(".series-menu ul li a")
            .filter(".selected")
            .fadeTo("slow", .3)
            .removeClass("selected")
            .end()
            .eq(i)
            .fadeTo("slow", 1)
            .addClass("selected");

        var $active = $_launches.children(".visor.active");
        _preloadNextMedia($e);
        $active.fadeOut(function() {
            $(this).removeClass("active");
        });
        $e.fadeIn(function() {
            $(this).addClass("active");

            var to = $('.visor.active').children('.titles').find('.linker').attr('href');

            $('.linkerTo').attr('href', to);
            _switching = false;
            if ($(this).hasClass("video") && $(this).find(".player").size() == 0) {
                id = "video-fox-" + i;
                $div = $("<div class='player'><img src='/images/play.png' /></div>").attr("id", id);
                $(this).append($div);
                var video_url = $("a[name=video-id]", this).attr("rel");
                flowplayer(id, "/swf/flowplayer.commercial-3.1.2.swf", {
                    key: '#@06d513ac126b0d41601',
                    clip: {
                        url: video_url,
                        accelerated: true,
                        scaling: 'fit',
                        provider: 'rtmp',
                        urlResolvers: 'bwcheck',
                        autoPlay: false
                    },
                    canvas: {
                        backgroundColor: '#000000',
                        backgroundGradient: 'none'
                    },
                    onBeforeClick: function(clip) {
                        clearInterval(_intvl);
                    },
                    onLoad: function(clip) {
                        clearInterval(_intvl);
                    },
                    plugins: {
                        rtmp: {
                            url: 'flowplayer.rtmp-3.1.0.swf',
                            netConnectionUrl: 'rtmp://85.94.205.240/fox'
                        },
                        bwcheck: {
                            url: 'flowplayer.bwcheck-3.1.3-dev3.swf',
                            serverType: 'fms',
                            dynamic: true,
                            netConnectionUrl: 'rtmp://85.94.205.240/fox',
                            bitrates: [512, 1024, 2048, 4096],
                            urlPattern: 'mp4:fds_{1}/{0}'
                        },
                        controls: null
                    },
                    play: {
                        url: '/images/play.png',
                        opacity: 1,
                        width: 36,
                        height: 36,
                        label: null,
                        replayLabel: null
                    }
                });
            }
        });
    }

    function _loadThumbnails() {
        $ul = $(".series-menu ul");
        $_launches.children(".visor").each(function(i, v) {
            var $thumb = $(v).find("a[name=thumbnail]");
            var thumb_src = $thumb.attr("rel");
            $thumb.remove();
            var $li = $("<li></li>");
            var $a = $("<a></a>");
            $a.attr("href", "#")
                .click(_listClick)
                .hover(
                    function() {
                        if ($(this).hasClass("selected"))
                            return;
                        $(this).css("opacity", 1);
                    },
                    function() {
                        if ($(this).hasClass("selected"))
                            return;
                        $(this).fadeTo("slow", .3);
                    }
                )
                .append("<img src='" + thumb_src + "' />");
            $li.append($a);
            $ul.append($li);
            $a.fadeTo("slow", .3);
        });
        $(".series-menu ul li a")
            .eq(0)
            .addClass("selected")
            .fadeTo("slow", 1);
    }
    return {
        Startup: function() {
            _switching = false;
            $_launches = $("#launches");
            _loadThumbnails();
            var $active = $_launches.children(".visor.active");

            if ($active.size() == 0) //nessuno attivo? Attivo il primo
                $active = $_launches.children(".visor").eq(0).addClass("active");

            if ($active.children(".background-visor").size() == 0) {
                _loadBG($active);
                $active.children(".background-visor").fadeIn("slow"); //visualizzo il background
            }

            if ($active.children(".shadow").size() == 0) {
                _addShadow($active);
            }
            _preloadNextMedia($active);
            _intvl = setInterval(Visor.NextVisor, _duration);
            _startedup = true;
        },
        NextVisor: function() {
            var $active = $_launches.children(".visor.active");
            var $next = $active.next();
            if ($next.size() == 0)
                $next = $_launches.children().eq(0);
            _loadVisor($next);
        },
        PrevVisor: function() {
            var $active = $_launches.children(".visor.active");
            var $prev = $active.prev();
            if ($prev.size() == 0)
                $prev = $_launches.children(":last");
            _loadVisor($prev);
        },
        Stop: function() {
            clearInterval(_intvl);
        },
        Start: function() {
            if (_startedup) {
                if (_intvl != undefined) {
                    clearInterval(_intvl);
                }
                _intvl = setInterval(Visor.NextVisor, _duration);
            }
        },
        IsRunning: function() {
            return _startedup;
        }
    }
} ();

var Tendina = function() {
    var $_serie_button;
    var _keep_open;
    return {
        Init: function() {
            $_serie_button = $("#hd .main-menu ul li.serie a");
        },
        Show: function() {
            if (Visor.IsRunning()) {
                Visor.Stop();
                var $bg = $("#launches .visor.active .background-visor").clone().addClass("under-menu");
                $("#hd").append($bg);
            }
            $("#hd .launch").css("visibility", "hidden");
            $(".tendina").fadeIn("fast");
            _keep_open = true;
            $_serie_button.addClass("hidden");
            $(".cont-adv").attr("visibility", "hidden");
        },
        Hide: function() {
            //return;
            //            console.log("hide");
            $("#hd .launch").css("visibility", "visible");
            if (Visor.IsRunning()) {
                $(".under-menu").remove();
                Visor.Start();
            }
            _keep_open = false;
            $(".tendina").hide();
            $_serie_button.removeClass("hidden");
        },
        TryToHide: function() {
            //            console.log("try hide");
            if (!_keep_open)
                Tendina.Hide();
        },
        WantToHideYou: function() {
            //            console.log("want to hide");
            _keep_open = false;
            setTimeout(Tendina.TryToHide, 500);
        },
        KeepMeOpen: function() {
            //            console.log("keep me open");
            _keep_open = true;
        }
    }
} ();

var ThumbScroller = function() {
    var $_container;
    var $_navigator;
    var $_up_button;
    var $_down_button;
    var $_media_controller;
    var _up = 1;
    var _down = -1;
    var _min_top;
    var _tot_items;
    var _rows_to_scroll;
    var _rows_per_page;
    var _items_per_row;
    var _items_per_page;
    var _delta_y;
    var _current_y;
    var _pages;
    var _current_page;
    var _scrolling;
    var _duration;
    var _current_image;
		var _color;

    function _changePage(dir) {
        var new_page = _current_page - dir;
        if (new_page < 1 || new_page > _pages)
            return;
        _goToPage(new_page);
    }
    function _goToPage(page) {
        if (_scrolling)
            return;
        y = (page - 1) * _delta_y * _rows_per_page * -1;
        _scrollTo(y);
        _current_page = page;
        $_navigator.find("a").removeClass("selected").removeClass(_color).eq(page - 1).addClass("selected "+_color);
				
    }
    function _scrollTo(y) {
        _scrolling = true;
        $_container.animate({ top: y }, _duration, null, function() {
            _scrolling = false;
        });
        _current_y = y;
    }
    function _scroll(dir) {
        if (_scrolling)
            return;
        if (_rows_per_page == _rows_to_scroll) {
            _changePage(dir);
            return;
        }
        var new_y = _current_y + (dir * _delta_y * _rows_to_scroll);
        if (new_y > 0 || new_y < _min_top)
            return;
        _scrollTo(new_y);
    }
    function _scrollUp() {
        _scroll(_up);
    }
    function _scrollDown() {
        _scroll(_down);
    }
    function _checkMediaPage() {
        var page_of_media = Math.floor((_current_image) / _items_per_page) + 1;
        if (_current_page != page_of_media)
            _goToPage(page_of_media);
    }
    function _nextMedia() {
        _changeMedia(1);
    }
    function _prevMedia() {
        _changeMedia(-1);
    }
    function _changeMedia(dir) {
				if(_current_image + dir < 0) {
					index = _tot_items - 1;
				}
				else if(_current_image + dir >(_tot_items - 1)) {
					index = 0;
				}
				else {
					index = _current_image + dir;
				}
				_goToMedia(index);
        _checkMediaPage();
    }
    function _goToMedia(index) {
        _current_image = index;

        var url = $_container.find(".image a").eq(index).attr("rel");
        var $img = $("<img />")
                        .attr("src", url)
                        .css("display", "none")
                        .css("position", "absolute");
        var abs = $_container.find(".abstract").eq(index).html();
        var $p = $("<p></p>")
                        .css("display", "none")
                        .css("position", "absolute")
                        .html(abs);

        /* fade images */
        $(".cont-player .cont-image .image").append($img);
        $img.fadeIn(function() {
            $(this).addClass("media");
        });
        $(".cont-player img.media").fadeOut(function() {
            $(this).remove();
        });

        /* fade abstracts */
        //$(".cont-player").append($p);
				$p.insertAfter(jQuery('div.cont-image'));
        $p.fadeIn(function() {
            $(this).addClass("active");
        });
        $(".cont-player p.active").fadeOut(function() {
            $(this).remove();
        });
    }
    function _bind_events() {
        $_up_button.attr("href", "javascript:void(0);").click(_scrollUp);
        $_down_button.attr("href", "javascript:void(0);").click(_scrollDown);
        $_container.find(".image .shadow-top").click(function() {
            if ($_container.parent().parent().hasClass("ajax")) {
                var index = $_container.find(".image .shadow-top").index(this);
                _goToMedia(index);
            }
            else {
                location.href = $(this).siblings("a").attr("href");                
            }
        });
				$_container.find(".item .cont-btn-guarda a").click(function() {
            if ($_container.parent().parent().hasClass("ajax")) {
                var index = $_container.find(".item .cont-btn-guarda a").index(this);
                _goToMedia(index);
            }
            else {
                location.href = $(this).siblings("a").attr("href");                
            }
        });
        $_media_controller.find(".arrow-dx a").attr("href", "javascript:void(0)").click(_nextMedia);
        $_media_controller.find(".arrow-sx a").attr("href", "javascript:void(0)").click(_prevMedia);
    }
    function _createPages() {
        _pages = Math.ceil(_tot_items / _items_per_page);
        var $ul = $("<ul></ul>");
        var i = 1; while (i <= _pages) {
            var $a = $("<a href='javascript:void(0);'>" + i + "</a>");
						if(_color != '') {
							$a.mouseover(function() { $(this).addClass(_color) });
							$a.mouseout(function() { $(this).removeClass(_color) });
						}
            
						$a.click(function() { ThumbScroller.Page(parseInt($(this).text())); });
            var $li = $("<li></li>").append($a);
            if (1 == i) {
							$a.addClass("selected");
							if(_color != '') {
								$a.addClass(_color);
							}
						}            
            $ul.append($li);
            i++;
        }
        $_navigator.append($ul);
    }
    function _init() {
        _current_y = 0;
        _tot_items = $_container.find(".item").size();
        _items_per_page = _items_per_row * _rows_per_page;
        _delta_y = $_container.find(".item").eq(0).height() +
					parseInt($_container.find(".item").eq(0).css("margin-bottom").replace("px", "")) +
					parseInt($_container.find(".item").eq(0).css("margin-top").replace("px", ""));
        _min_top = _delta_y * Math.floor(_tot_items / _rows_per_page) * -1;
        _scrolling = false;
        _current_image = 0;
        _bind_events();
        _createPages();
    }
    return {
        Apply: function(options) {
            $_container = $(options.selector + ">div");
            $_up_button = $(options.up_button);
            $_down_button = $(options.down_button);
            $_navigator = $(options.navigator_selector);
            $_media_controller = $(".cont-controller");
            _rows_per_page = options.rows_per_page;
            _rows_to_scroll = options.rows_to_scroll;
            _items_per_row = options.items_per_row;
            _duration = options.duration;
            _current_page = 1;
						_color = options.colour;
            _init();
        },
        Page: function(page) {
            _goToPage(page);
        }
    }
} ();

$(function() {

    $(".tendina").hide().hover(
        function() {
            Tendina.KeepMeOpen();
        },
        function() {
            Tendina.Hide();
        }
    );

    $(".main-menu ul li.serie").hover(Tendina.Show, Tendina.WantToHideYou);
    $("#hd .main-menu ul>li:not(.serie)").hover(Tendina.Hide);
    $(".series-menu .buttons .up").click(Visor.PrevVisor);
    $(".series-menu .buttons .down").click(Visor.NextVisor);
    Tendina.Init();

		jQuery('#menu_all').hide();

		jQuery('#label-search').click(function() {
			document.search.submit();
		})
		jQuery('#all_shows_menu_link').click(function() {
			jQuery('#menu_all').show();
			jQuery('#menu_top').hide();
		});

		jQuery('#top_shows_menu_link').click(function() {
			jQuery('#menu_all').hide();
			jQuery('#menu_top').show();
		});

});

