var mpParams = {};

function defaultMpParams(){
	mpParams.pages = 8;
	mpParams.itemsPage = 8;
	mpParams.currentPage = 1;
}

function getTrailersList() {
	$('.infiniteCarousel').removeClass('.infiniteCarousel').addClass('.infiniteCarousel');
	var validTrailers = 0;
	var invalidTrailers = 0;
	defaultMpParams();
	for(var j=0; j<mpParams.pages; j++) {
		for(var k=0; k<mpParams.itemsPage;k++) {
			current = (k+(j*mpParams.itemsPage)) + invalidTrailers;
			if(movies[current] == null) {
				pagesRequired = parseInt(validTrailers/mpParams.itemsPage,10);
				if(validTrailers%mpParams.itemsPage != 0) { pagesRequired++; }
				if(pagesRequired < mpParams.pages ) {
					mpParams.pages = pagesRequired;
				}
				break;
			}
			if(movies[current].trailer != null && movies[current].trailer != '' && movies[current].trailer != 'http://' ) {
				validTrailers++;
			} else {
				type = true;
				switch(movies[current].innerType.toLowerCase()) {
					case 'movie'    : movies[current].trailer = 'http://video.versiondigital.es/generic/trailer-generic-movie.flv'; break;
					case 'opera'    : movies[current].trailer = 'http://video.versiondigital.es/generic/trailer-generic-opera.flv'; break;
					case 'concert'  : movies[current].trailer = 'http://video.versiondigital.es/generic/trailer-generic-music.flv'; break;
					case 'children' : movies[current].trailer = 'http://video.versiondigital.es/generic/trailer-generic-children.flv'; break;
					case 'sports'   : movies[current].trailer = 'http://video.versiondigital.es/generic/trailer-generic-sports.flv'; break;
					case 'theatre'  : movies[current].trailer = 'http://video.versiondigital.es/generic/trailer-generic-theatre.flv'; break;
					default: type = false;
				}
				if(type) {
					validTrailers++;
				} else {
					k--;
					invalidTrailers++;
				}
			}
		}
	}
	
	
	$('#mediaPlayer').css('display','block');
	$('.infiniteCarousel').infiniteCarousel();
	//x = 0;
	//while(movies[x].trailer == null || movies[x].trailer == '' ) { x++; }
	//showTrailer(movies[x].id);
	if(!$.browser.msie) {
		$('.trailerCover').mouseover(function() { $(this).removeClass('trailerCoverOut').addClass('trailerCoverOver'); });
		$('.trailerCover').mouseout(function() { $(this).removeClass('trailerCoverOver').addClass('trailerCoverOut'); });
	} else {
		$('.trailerCover').mouseover(function() { $(this).removeClass('trailerCoverOut').addClass('trailerCoverOverIE'); });
		$('.trailerCover').mouseout(function() { $(this).removeClass('trailerCoverOverIE').addClass('trailerCoverOut'); });
	}

}



function getMovieById(id) {
	for(var i=0;i<movies.length; i++) {
		if(movies[i].id == id) { return movies[i]; }
	}
}


function showTrailer(movieId) {
	$('#videoPlayer').css('background-image','url(' + _contextPath + '/vdserv/primage?id='+movieId+')');
	$('#videoPlayer #vplayer').remove();
	$('#videoPlayer').html('<div id="vplayer"><div class="playButton"></div></div>');
	$('.playButton').click(function() { playTrailer(movieId); });
}

function playTrailer(movieId) {
	movie = getMovieById(movieId);
	
	// Setting video params
	var flashvars = {
			flvpFolderLocation: _contextPath + "/resources/flvplayer/flvplayer/",
			flvpVideoSource: movie.trailer,
			flvpPreRollImage: _contextPath + "/vdserv/primage?id="+movie.id,
			flvpWidth: "355",
			flvpHeight: "200",
			flvpInterfaceDisplay: "autohide",
			//flvpCustomLogo: "http://www.okode.com/wp-content/themes/okodeWeb/images/okode-logo.png", 
			//flvpCustomLogoUrl: "http://www.okode.com/",
			flvpInitVolume: "50",
			flvpAutoStartMovie: "true",
			flvpTurnOnCorners: "true",
			flvpShowbBack: "false",
			flvpShowbForward: "false",
			flvpVideoLooping: "false",
			flvpShowbInfo: "false",
			flvpShowbCc: "false",
			flvpShowbMenu: "false",
			flvpShowTimerText: "true",
			flvpScrubBarFrontColor: "0xCB7203",
			flvpVolumeFrontColor: "0xCB7203",
			flvpBackButtonRollOverColor: "0xCB7203",
			flvpVideoNameMenuFontColor: "0xCB7203",
			flvpPlayButtonRollOverColor: "0xCB7203",
			flvpPauseButtonRollOverColor: "0xCB7203",
			flvpStopButtonRollOverColor: "0xCB7203",
			flvpForwardButtonRollOverColor: "0xCB7203",
			flvpInfoButtonRollOverColor: "0xCB7203",
			flvpCCButtonRollOverColor: "0xCB7203",
			flvpFullscreenButtonRollOverColor: "0xCB7203",
			flvpMenuButtonRollOverColor: "0xCB7203",
			flvpCloseMenuButtonRollOverColor: "0xCB7203",
			flvpScrubBarDragRollOverColor: "0xCB7203",
			flvpVolumeButtonOnRollOverColor: "0xCB7203",
			flvpVolumeButtonOffRollOverColor: "0xCB7203",
			flvpVolumeDragRollOverColor: "0xCB7203"
		};
	var params = {
			bgcolor: "000000", 
			menu: "false", 
			allowfullscreen: "true"
		};
	// Setting video
	flvPlayer = swfobject.embedSWF(_contextPath + "/javax.faces.resource/flvplayer/FLVplayer.swf.jsf", 
				"vplayer", "355", "200", "9.0.0", 
				_contextPath + "/javax.faces.resource/flvplayer/swfobject/expressInstall.swf.jsf", 
				flashvars,
				params);
	
	// if not flash installed
	if($('div#vplayer').length > 0) {
		$('#videoPlayer').html('<div style="padding:10px;background:black;color:white;">Se necesita tener instalado <b>'
				+'<a href="http://get.adobe.com/es/flashplayer/" target="_blank" style="color:white;">Flash Player</a></b></div>');
	}
}



/* CAROUSEL */
$.fn.infiniteCarousel = function () {

    function repeat(str, num) {
        return new Array( num + 1 ).join( str );
    }
  
    return this.each(function () {
        var $wrapper = $('> div', this).css('overflow', 'hidden'),
            $slider = $wrapper.find('> ul'),
            $items = $slider.find('> li'),
            $single = $items.filter(':first'),
            
            singleWidth = $single.outerWidth(), 
            visible = Math.ceil($wrapper.innerWidth() / singleWidth); // note: doesn't include padding or border
            //mpParams.currentPage = 1,
            //pages = Math.ceil($items.length / visible);            


        // 1. Pad so that 'visible' number will always be seen, otherwise create empty items
        if (($items.length % visible) != 0) {
            $slider.append(repeat('<li class="empty" />', visible - ($items.length % visible)));
            $items = $slider.find('> li');
        }

        // 2. Top and tail the list with 'visible' number of items, top has the last section, and tail has the first
        $items.filter(':first').before($items.slice(- visible).clone().addClass('cloned'));
        $items.filter(':last').after($items.slice(0, visible).clone().addClass('cloned'));
        $items = $slider.find('> li'); // reselect
        
        // 3. Set the left position to the first 'real' item
        $wrapper.scrollLeft(singleWidth * visible);
        
        // 4. paging function
        function gotoPage(page) {
            var dir = page < mpParams.currentPage ? -1 : 1,
                n = Math.abs(mpParams.currentPage - page),
                left = singleWidth * dir * visible * n;
                        
            $wrapper.filter(':not(:animated)').animate({
                scrollLeft : '+=' + left
            }, 500, function () {
                if (page == 0) {
                    $wrapper.scrollLeft(singleWidth * visible * mpParams.pages);
                    page = mpParams.pages;
                } else if (page > mpParams.pages) {
                    $wrapper.scrollLeft(singleWidth * visible);
                    // reset back to start position
                    page = 1;
                } 

                mpParams.currentPage = page;
                
                $('.currentPag').addClass('pag').removeClass('currentPag');
                //$('.paginator > img.pag').click(function () { return gotoPage($(this).attr('pag')); });
                $('.pag[pag="'+mpParams.currentPage+'"]').addClass('currentPag').removeClass('pag');
                //$('.currentPag').unbind('click');
            });                
            
            return false;
        }
        
        if($('.back').length == 0 && $('.arrow .forward').length == 0) {
        	$wrapper.after('<a class="arrow back"></a><a class="arrow forward"></a>');
            // 5. Bind to the forward and back buttons
            $('a.back', this).click(function () {
                return gotoPage(mpParams.currentPage - 1);                
            });
            
            $('a.forward', this).click(function () {
                return gotoPage(mpParams.currentPage + 1);
            });
            
            // create a public interface to move to a specific page
            $(this).bind('goto', function (event, page) {
                gotoPage(page);
            });
        	
        }
        
        // paginator
        if($('.paginator').length == 0) { $wrapper.after('<div class="paginator"></div>'); }
        
        pagHTML = '';
        for(i=1; i<=mpParams.pages; i++) {
        	pagHTML += '<img src="' + _contextPath + '/javax.faces.resource/images/spaceball.gif.jsf" width="7" height="7" pag="'+i+'" class="pag"></img>';
        }

        $('.infiniteCarousel > .paginator').html(pagHTML);
        
        //$('.infiniteCarousel > .paginator > img.pag').live('click', function () {  gotoPage($(this).attr('pag')); });
        
        $('.pag[pag="'+mpParams.currentPage+'"]').addClass('currentPag').removeClass('pag');
        $('.currentPag').unbind('click');

        
    });  
};




