/****************************************************************************************************
	bearMedia 
	
	Built with jQuery - http://jquery.com
	
	Build-A-Bear Workshop

	Created by the friendly folks at Happy Cog
	http://www.happycog.com/
****************************************************************************************************/
(function($) {
	
	$.fn.bearMedia = function(options){
		return this.each(function(){
			new $bm(this, options);
		});
	};
	
	var defaultsOptions = {};

	$.bearMedia = function(element, options){
		
		this.identifier = "bm-" + this.genIdentifier(10);
		$(element).addClass(this.identifier);
		
		this.playerIdentifier = "bm-player-" + this.genIdentifier(10);
		$(element).addClass(this.identifier);
		
		this.controlsIdentifier = "bm-controls-" + this.genIdentifier(10);
		$(element).addClass(this.identifier);
		
		var self = this;		

		this.type		= null;
		this.media	 	= $("."+this.identifier);
		this.options    = $.extend({}, defaultsOptions, options || {});

		if (this.media.find('.video-playlist').size()>0){
			this.type = "video";
		} else if (this.media.find('.audio-playlist').size()>0) {
			this.type = "audio";
		}
		this.media.addClass(this.type);

		var media = this.media;
		
		if (this.type == "video") {
			
			this.media.prepend('<div class="player-container"></div>');
			this.media.find('.player-container').prepend('<div id="'+this.controlsIdentifier+'" class="player-controls"></div>');
			this.media.find('.player-container').prepend('<div id="'+this.playerIdentifier+'" class="video-player"></div>');
			
		    this.media.append('<div class="next-prev"><span class="prev">Previous</span><span class="next">Next</span></div>');
		    this.media.find('.video-playlist').wrap('<div class="playlist-wrapper"></div>');
		    this.media.find('.playlist-wrapper').wrap('<div class="playlist-container"></div>');


		    this.media.find(".playlist-wrapper").scrollable({ 
		         size: 3,
		         items: '.video-playlist', 
		         vertical: true, 
		         next: '.next-prev .next', 
		         prev: '.next-prev .prev' 
		     });
		
			$f(this.playerIdentifier, { src: "/s/flowplayer-3.1.3.swf", wmode: 'transparent' }, {
				
				clip: {
					autoPlay: false,  
					autoBuffering: true
				},
				
				plugins: {controls: null},
			
				onLoad: function(){
					media.find('.video-playlist li').each(function(){
						var video = $(this)
						video.find('h3 a').click(function(){
							media.find('.video-playlist li').removeClass("active");
							video.addClass("active");
						});
					});
				}
				
			}).playlist(".video-playlist li h3", {loop:false}).controls(this.controlsIdentifier, {duration: 25});
			
		} else if (this.type == "audio") {
			
			this.media.wrapInner('<div class="bear-audio"></div>');
			
			this.media.find('.audio-playlist').before('<div class="player-container"></div>');
			this.media.find('.player-container').prepend('<div id="'+this.controlsIdentifier+'" class="player-controls"></div>');
			this.media.find('.player-container').prepend('<div id="'+this.playerIdentifier+'" class="video-player"></div>');
			
			$f(this.playerIdentifier, { src: "/s/flowplayer-3.1.3.swf", wmode: 'transparent' }, { 
			    plugins: {
					controls: null,
					audio: { 
			            url: '/s/flowplayer.audio-3.1.2.swf' 
			        }
				},

			    clip: { 
			        autoPlay: false, 
			        onBeforeBegin: function() { 
			            $f(this.playerIdentifier).close(); 
			        } 
			    },
			
				onLoad: function(){
					media.find('.audio-playlist li').each(function(){
						var audio = $(this)
						audio.find('h4 a').click(function(){
							media.find('.audio-playlist li').removeClass("active");
							audio.addClass("active");
						});
					});
				}

			}).playlist(".audio-playlist li h4", {loop:false}).controls(this.controlsIdentifier, {duration: 25});
		}
	}
		
	var $bm = $.bearMedia;

	$bm.fn = $bm.prototype = {
        bearMedia: '1.1.0'
    };

    $bm.fn.extend = $bm.extend = $.extend;
	
	$bm.fn.extend({		
		/****************************************************************************************************
			generates a random string to use as an id for the modals to avoid creating nodes 
			that have already been created
		****************************************************************************************************/		
		genIdentifier: function(num){
			var c = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
			var identifier = '';
			for (var t=0; t<num; t++) {
				var i = Math.floor(Math.random() * c.length);
				identifier += c.substring(i,i+1);
			}
			return identifier;
		}
				
	});	

})(jQuery);