var Slideshow = {
    IMG_ID_PREFIX: "slide_",
    AUTOSLIDE_TIMEOUT: 4000,
    ANIMATION_DURATION: 900,
    source: null,
    container: null,
    currentSlide: 0,
    images: null,
    windowWidth: 0,
    windowHeight: 0,
    autoSlideTimer: null,
    sliding: false,
	randomNum: 0,
    init: function(C, D){
        Slideshow.source = C;
        Slideshow.container = $('<div id="slides_container"/>').appendTo("body").click(Slideshow.stop);
        Slideshow.images = new Array();
        for (var B = 0; B < Slideshow.source.length; B++) {
            var A = new Object();
            A.div = $('<div class="slide"/>');
            A.img = $('<img id="' + Slideshow.IMG_ID_PREFIX + B + '" style="position:absolute"/>');
            A.info = $('<div class="slideshowInfo"><img class="slideTypeImg"/><span class="slideTitle"/><br/><span class="slideDate"/></div>');
            A.height = 0;
            A.width = 0;
            A.loaded = false;
            A.div.append(A.img).append(A.info);
            A.img.load(Slideshow.loadCallback);
            Slideshow.images[B] = A;
            Slideshow.container.append(A.div);
            A.div.hide()
        }
        $("#btnPrev").ifixpng().click(function(){
            Slideshow.stop();
            Slideshow.prev();
            Slideshow.start("prev");
			try { 
				Tracker.track(Show.configuration.showName + " - Jumbotron Image", "Shows");
			}
			catch (e) {
				Tracker.track("Index - Jumbotron Image", "Shows");
			}
        });
        $("#btnNext").ifixpng().click(function(){
            Slideshow.stop();
            Slideshow.next();
            Slideshow.start("next");
            try { 
				Tracker.track(Show.configuration.showName + " - Jumbotron Image", "Shows");
			}
			catch (e) {
				Tracker.track("Index - Jumbotron Image", "Shows");
			}
        });
        Slideshow.currentSlide = D;
        Slideshow.loadImage(D);
        Slideshow.loadImage(Slideshow.nextIndex(D));
        $(window).bind("resize", function(){
            var E = null;
            if (E == null) {
                E = window.setTimeout(function(){
                    Slideshow.resize();
                    E = null
                }, 500)
            }
        });
        $("#slides_container").bind("mousewheel", function(E, F){
            if (F < 0) {
                $("#btnNext").click()
            }
            else {
                $("#btnPrev").click()
            }
            return false
        });
        $(window).keyup(function(E){
            if (E.keyCode == 37) {
                $("#btnNext").click()
            }
            else {
                if (E.keyCode == 39) {
                    $("#btnPrev").click()
                }
            }
            return false
        });
        Slideshow.resize();
        if ($.browser.mozilla) {
            window.setInterval(function(){
                window.scrollTo(0, 0)
            }, 50)
        }
    },
    startSlideShow: function(){
        Slideshow.currentSlide = Math.ceil(Slideshow.source.length * Math.random()) - 1;
        Slideshow.start("next")
    },
    start: function(D, C){
        if (Slideshow.autoSlideTimer != null) {
            return
        }
        var A = Slideshow.currentSlide;
        Slideshow.loadImage(A);
        function B(){
            if (Slideshow.images[A].loaded) {
                Slideshow.autoSlideTimer = window.setInterval(Slideshow[D], Slideshow.AUTOSLIDE_TIMEOUT);
                if (C) {
                    Slideshow.currentSlide = Slideshow.prevIndex(Slideshow.currentSlide)
                }
                Slideshow[D]()
            }
            else {
                window.setTimeout(B, 20)
            }
        }
        B()
    },
    stop: function(){
        if (Slideshow.autoSlideTimer != null) {
            window.clearInterval(Slideshow.autoSlideTimer);
            Slideshow.autoSlideTimer = null
        }
    },
    loadImage: function(A){
        var C = Slideshow.source[A];
        var B = Slideshow.images[A];
        if (!B.loaded) {
            B.img.attr("src", C.jumboNailUrl);
            B.img.click(function(){
				document.location = C.slideUrl
            })
        }
        if (C.slideType == -1) {
            B.info.hide()
        }
        else {
            $(".slideTitle", B.info).html(C.slideTitle);
            $(".slideDate", B.info).html("Added " + Slideshow.formatDate(C.slideDate));
			if (C.slideType == 12 || C.slideType == 13) {
				$(".slideTypeImg", B.info).attr("src", root_path + "global/imgs/jumbotronTypes/" + C.slideType + ".gif");
				$(".slideTypeImg", B.info).css("background-color", "transparent");
			}
			else {
				$(".slideTypeImg", B.info).attr("src", root_path + "global/imgs/jumbotronTypes/" + C.slideType + ".png");
				$(".slideTypeImg", B.info).css("background-color", "#FFFFFF");
			}
            B.info.click(function(){
				document.location = C.slideUrl
            });
            B.info.show()
        }
    },
    loadCallback: function(){
        var B = this.id.substring(Slideshow.IMG_ID_PREFIX.length);
        var A = new Image();
        A.onload = function(){
            Slideshow.images[B].height = A.height;
            Slideshow.images[B].width = A.width;
            Slideshow.images[B].loaded = true
        };
        A.src = this.src
    },
	generateRandomNum: function() {
		Slideshow.randomNum = Math.floor(Math.random() * 10000000);
	},
    slide: function(B, A){
        if (Slideshow.sliding || !Slideshow.images[B].loaded) {
            return
        }
        Slideshow.sliding = true;
        Slideshow.images[B].div.css("left", (Slideshow.windowWidth * (A ? 2 : 0)) + "px").css("z-index", 2).show();
        Slideshow.resizeImage(B);
        Slideshow.images[B].div.animate({
            left: Slideshow.windowWidth
        }, Slideshow.ANIMATION_DURATION, "easeInOutQuint", function(){
            Slideshow.images[Slideshow.currentSlide].div.hide();
            Slideshow.images[B].div.css("z-index", 1);
            Slideshow.currentSlide = B;
            Slideshow.sliding = false;
            var C = Slideshow.source[Slideshow.currentSlide];
			
			if (C.slideType == -1) {
            	$("#currentslide").html('This is: <a href="' + C.slideUrl + '">' + C.slideTitle + "</a>").show()
            }
			//ad with tracking slide
			else if (C.slideType == 12) {
				//omniture
				s.referrer = "";
				s.tl(this, 'o', Show.configuration.showName + ' Ad: ' + C.slideUrl);
				
				//tracking pixel code
				$("#slides_container").append('<div id="ad-347002" align="center" style="padding: 0; margin: 0; border: 0;"></div>');
				
				Slideshow.generateRandomNum();
				
				//GTA
				//$("#ad-347002").append('<img src="http://altfarm.mediaplex.com/ad/tr/7936-87288-16616-21?mpt=' + String(Slideshow.randomNum) + '" />');
				//Coke Zero
				//$("#ad-347002").append('<img src="http://ad.doubleclick.net/ad/N4390.httpOX3277/B3650508.7;sz=1x1;ord=' + String(Slideshow.randomNum) + '?" />');
				//$("#ad-347002").append('<img src="http://amch.questionmarket.com/adsc/d638232/5/641548/adscout.php?ord=' + String(Slideshow.randomNum) + '" height="1" width="1" border="0">')
				//$("#ad-347002").append('<img src="http://view.atdmt.com/IWC/view/132325427/direct/01/?mpt=' + String(Slideshow.randomNum) + '" border="0"/><div style="position:absolute;visibility:hidden;">$smartcount$</div>');
				//Zelda
				//$("#ad-347002").append('<a href="http://ads.pointroll.com/PortalServe/?pid=914584N71720091124165655&pos=c&r=' + String(Slideshow.randomNum) + '"><img border="0" width="1" height="1" src="http://ads.pointroll.com/PortalServe/?pid=914584N71720091124165655&pos=i&r=' + String(Slideshow.randomNum) + '"></a>');
				//Mazda
				//$("#ad-347002").append('<A HREF="http://ad.doubleclick.net/jump/N3016.adultswim.com/B4249546.10;sz=1x1;ord=' + String(Slideshow.randomNum) + '?"><IMG SRC="http://ad.doubleclick.net/ad/N3016.adultswim.com/B4249546.10;sz=1x1;ord=' + String(Slideshow.randomNum) + '?" BORDER=0 WIDTH=1 HEIGHT=1></A>');
				//Rockstar
				$("#ad-347002").append('<img src="http://altfarm.mediaplex.com/ad/tr/7936-98200-16616-17?mpt=' + String(Slideshow.randomNum) + '" border="0">');
			}
			else {
				$("#currentslide").hide()
			}
			
            Slideshow.images[Slideshow.currentSlide].div.find(".slideTypeImg").ifixpng()
        })
    },
    prev: function(){
        var A = Slideshow.prevIndex(Slideshow.currentSlide);
        Slideshow.slide(A, false);
        Slideshow.loadImage(Slideshow.prevIndex(A))
    },
    prevIndex: function(A){
        return A == 0 ? Slideshow.source.length - 1 : A - 1
    },
    next: function(){
        var A = Slideshow.nextIndex(Slideshow.currentSlide);
        Slideshow.slide(A, true);
        Slideshow.loadImage(Slideshow.nextIndex(A))
    },
    nextIndex: function(A){
        return (A + 1) % Slideshow.source.length
    },
    resizeImage: function(A){
        var C = Slideshow.images[A];
        C.div.css("width", Slideshow.windowWidth);
        var B = Math.ceil(C.width / C.height * Slideshow.windowHeight);
        var D = Math.max(C.width, Slideshow.windowWidth);
        B = isNaN(B) ? 0 : B;
        D = isNaN(D) ? 0 : D;
        C.img.css("width", Math.max(B, D) + "px")
    },
    resize: function(){
        Slideshow.windowWidth = $(window).innerWidth();
        Slideshow.windowHeight = $.browser.mozilla ? window.innerHeight : $(window).innerHeight();
        Slideshow.container.width(Slideshow.windowWidth * 3);
        Slideshow.container.height(Slideshow.windowHeight);
        Slideshow.container.css("left", "-" + Slideshow.windowWidth + "px");
        Slideshow.resizeImage(Slideshow.currentSlide);
        Slideshow.images[Slideshow.currentSlide].div.css("left", Slideshow.windowWidth + "px")
    },
    formatDate: function(A){
        try {
            if (isNaN(Date.parse(A))) {
                throw "illegal argument"
            }
            currentDate = new Date();
            postedDate = new Date(Date.parse(A));
            offset = currentDate.getTime() - postedDate.getTime();
            if (offset < 2 * 24 * 60 * 60 * 1000 & offset > 1 * 24 * 60 * 60 * 1000) {
                return "yesterday"
            }
            days = Math.round(offset / (24 * 60 * 60 * 1000));
            return days + " day" + (days > 1 ? "s" : "") + " ago"
        } 
        catch (B) {
            return "recently"
        }
    }
};

