/*
 * jQuery Media Browser Plugin
 * Copyright (c) 2011 Mental Workout
 * Version: 1.0 (02/15/2011)
 * Requires: jQuery v1.4 or later
 */
;(function($) {

    $.fn.mediabrowser = function(options) {

		// setup defaults
		var defaults = {
			playerWidth			: 980,
			playerHeight		: 500,
			dataHeight          : 550,
			playerColor			: "#000000",
			initialized			: false,
			active				: false,
			isIpad				: false,
			type                : "standalone",
			playerName			: "mentalworkoutPlayer",
			noflash             : "/_static/img/plugins/mediabrowser/no_flash_player_550.jpg",
			flashPlayerURL		: "/_static/swf/plugins/mediabrowser/mw_mediaplayer.swf",
			mediabrowserHTML 	:
			'<div id="mediabrowser"> \
				<div class="mediabrowsercontent">\
					<div class="movieitems">\
						<div class="mediabrowserlogo"><a href="/"></a></div>\
						<a class="b b-size-normal b-noshadow b-theme-grey b-text-align-left b-text-color-none b-icon b-icon-name-cross b-icon-align-left" href="javascript:void(0)" title="Close" style="width: 22px; float: right;"><span style="padding-left: 10px ! important;"><i style="left: 0"></i></span></a>\
						<div id="swfholder"></div>\
					</div>\
				</div>\
			</div>\
			<div id="mediabrowserback"></div>'
		};
		
		var opts = $.extend({}, defaults, options);
		
		if ((navigator.userAgent.indexOf('iPhone') != -1) || (navigator.userAgent.indexOf('iPod') != -1) || (navigator.userAgent.indexOf('iPad') != -1)){
			opts.isIpad = true;
		}
		
		/* Images Preloading  
		$(this).find('li[data-url]').each(function(){
			var ext = $(this).attr('data-url').slice(-3);
			if (ext == 'jpg' || ext == 'png' || ext == 'gif' || ext == 'peg' || $(this).attr('data-url').indexOf('/thumb/') > 0) {
				var img = new Image();
				img.src = rootURL + $(this).attr('data-url');
			}
		});
		$(this).find('li[data-poster]').each(function(){
			var ext = $(this).attr('data-poster').slice(-3);
			if (ext == 'jpg' || ext == 'png' || ext == 'gif' || ext == 'peg' || $(this).attr('data-poster').indexOf('/thumb/') > 0) {
				var img = new Image();
				img.src = rootURL + $(this).attr('data-poster');
			}
		});*/
		
		if (opts.isIpad) {
			$(this).find('li > a').each(function(){
				var dp = $(this).parent().attr("data-path");
				var link = $(this);
				$.ajax({
					type: "GET",
					url: dp.substring(dp.indexOf('/', 10)),
					dataType: "xml",
					success: function(xml) {
						var index = parseInt($(xml).find('gallery').attr('startIndex'));
						if (!(index >= 0)) index = 0;
						link.attr('href', $(xml).find('url').eq(index).text());
					}
				});
			});
			$(this).find('li > a').click(function(e){ e.stopPropagation(); });
		} else {
			$(this).addClass('mediaBrowser');
			$(this).find('li > a').click(function(e){
				// close dropdowns if exists
				$('.select-box-scroll').hide();
			
				var index = $(this).parent().index();
			
				$("body").append(opts.mediabrowserHTML);
				if ($.browser.msie && $.browser.version <= 7)
					$("html").data('scrollTop', $("html")[0].scrollTop);
				$('html').addClass('mediabrowser');
				$('#mediabrowser').addClass(opts.type == "primetime" ? "primetime" : "")
				$('#mediabrowser .mediabrowsercontent').height(opts.dataHeight);

				$("#mediabrowser .movieitems .b, #mediabrowserback").click(function(){
					$(window).unbind('resize', mbResize);
					fadeInOutMediabrowser(0, opts);
					return false;
				});
			
				if (!opts.active)
					fadeInOutMediabrowser($(this).parent(), opts);
				
				if (opts.type == 'standalone') {
					mbResize();
					$(window).bind('resize', mbResize);
				}
				
				return false;
			});
		
			$(document).keyup(function(e){
				if (e.keyCode == 27)
				{
					$(window).unbind('resize', mbResize);
					fadeInOutMediabrowser(0, opts);
				}
			});
		}
	};
	
	function thisMovie(movieName) {
	 if (navigator.appName.indexOf("Microsoft") != -1) {
		   return window[movieName];
		 } else {
		    return document[movieName];
		 }
	};

	function initFlashplayer(flashvars, opts) {
		//debugger;
		if(!opts.isIpad){
			var params = {
				quality           : "best",
				menu              : "false",
				scale             : "noscale",
				salign            : "lt",
				allowscriptaccess : "always",
				allowfullscreen   : "true"
			};
			var attributes = {
			   id: opts.playerName,
			   name: opts.playerName
			};
			$("#swfholder").html("").append('<div id="'+ opts.playerName +'"></div>');
			swfobject.embedSWF(opts.flashPlayerURL, opts.playerName, opts.playerWidth, opts.dataHeight, "9.0.0",false, flashvars, params, attributes);
			if ($("#" + opts.playerName).is('div')) 
				$("#swfholder").prepend('<div class="swf-image"><img src="' + opts.noflash + '" alt="" /><a href="http://get.adobe.com/flashplayer/"></a></div>');
		} else{
			$("#" + opts.playerName).remove();
			$.ajax({
				type: "GET",
				url: flashvars.dataPath.substring(flashvars.dataPath.indexOf('/', 10)),
				dataType: "xml",
				success: function(xml) {
					$("#swfholder").css("height", opts.dataHeight).html("").append('<video controls="" width="' + opts.playerWidth + '" height="' + opts.dataHeight + '"><source width="' + opts.playerWidth + '" height="' + opts.dataHeight + '" src="' + $(xml).find('url').eq(0).text() +'"' + ($(xml).find('url').eq(0).text().indexOf('video') > 0 ? ' type="video/mp4"' : '') +" /></video>")
				}
			});
		}
	};

	function fadeInOutMediabrowser(item, opts) {
		if (opts.active){
			//thisMovie(opts.playerName).closePlayer();
			$('#mediabrowser').remove();
			$('#mediabrowserback').fadeOut('slow', function() { 
				opts.active = false; 
				$('#mediabrowserback').remove();
				$('html').removeClass('mediabrowser');
				if ($.browser.msie && $.browser.version <= 7)
					$('html')[0].scrollTop = $('html').data('scrollTop');
			});
		}else{
			var fv = {
				dataPath : item.attr("data-path")
			};
			initFlashplayer(fv, opts);
			opts.active=true;
			
			if ($.browser.msie) {
				$('#mediabrowserback').show();
				$('#mediabrowser').fadeIn();
			}
			else {
				$('#mediabrowserback').fadeIn('slow', function(){
					$('#mediabrowser').fadeIn('slow');
				});
			}
		}
	};
	
})(jQuery);

function mbResize(){
	//$('#mediabrowser').css({top: Math.max(0, ($(window).height() - $('#mediabrowser .mediabrowsercontent').height() - 22 - (($("#mediabrowser .mediaBrowser > li").length <= 1) ? 0 : $('#mediabrowser .playlistholder').height()))/2 )});
	var mbcH = $('#mediabrowser .mediabrowsercontent').height();
	var wH = $(window).height();
	$('#mediabrowser').css({top: Math.max(0, (wH - mbcH - 22)/2 ),
							height: mbcH > wH ? wH + 'px' : 'auto'});
	if ($.browser.msie && $.browser.version >= 8) 
		$('#mentalworkoutPlayer').height(mbcH + ((mbcH^wH)&1));
}

function changeMediaPlayerHeight(amount){
	if (amount <= 1) return;
	$('#mediabrowser .mediabrowsercontent').height(603);
	$('#mentalworkoutPlayer').height(603);
	mbResize();
}
