(function($){
	$.fn.t_player = function(opt){ //alert($(window).height());
		return this.each(function(){
		//alert(navigator.userAgent);
		var defaults = {
			thumb:{css:{left:$(this).offset().left, top:$(this).offset().top, width:$(this).width(), height:$(this).height()}},
			player:{lib:'jwplayer', attr:{id:'t_player_player'},css:{'z-index':10000, position:'absolute', width:320, height:240, margin:0, padding:0, background:'white'/*, overflow:'show'*/}},
			jwplayer:{url:'http://player.longtailvideo.com/player.swf', render:render_video_jwplayer},
			//flowplayer:{url:'http://player.longtailvideo.com/player.swf', render:null},
			//Shade should cover the whole document
			shade:{attr:{id:'t_player_shade', style:'background:rgba(0,0,0,.5)'}, css:{position:'absolute', margin:0, padding:0, left:0, top:0, width:$(document).width(), height:$(document).height()}},
			media:{type:'video/mp4'}
		};
		var options = merge(defaults,opt); //alert(dump(options.body,", "));
		options.media.src = $(this).attr('href');

		var div_shade,div_player,div_video;

		$(this).click(function(e){
			e.stopPropagation(); e.preventDefault();
			//Calculate size and location everytime user click
			var window_left = $(window).scrollLeft(); //alert(window_left);
			var window_top = $(window).scrollTop(); //alert(window_top);
			var window_width = $(window).width();
			var window_height = $(window).height();
			if(options.player.width>window_width) options.player.css.width = (window_width*.8);
			if(options.player.height>window_height) options.player.css.height = (window_height*.8);
			options.player.css.left = window_left + ((window_width - options.player.css.width)/2);
			options.player.css.top = window_top + ((window_height - options.player.css.height)/2);
			//alert(dump(options.player.css,", "));

			div_shade = render_shade();
			div_player = render_player(div_shade);
			div_video = render_video(div_player);
		});

		function dump(a,s){
			var t='';
			for(i in a){
				if(typeof a[i]=='object') t = t + i + '=['+dump(a[i],s)+']'+s; else t = t + i + '=' + a[i]+s; //alert(i+'='+a[i]);
			}
			return t;
		}

		//Merge options over defaults, if any attribute is an object, merge into that object
		function merge(def,opt){
			var results = def;
			for(i in opt){
				if(typeof opt[i]=='object') merge(def[i],opt[i]); else results[i] = opt[i];
			}
			return results;
		}
		
		function render_shade(){
			var div_shade = $('<div></div>')
				.attr(options.shade.attr)
				.css(options.shade.css)
				.click(function(){ //Remove the overlay when clicked
				$(this).remove();
			});
			$('body').append(div_shade); //Append dark overlay to document
			return div_shade;
		};

		function render_video_vimeo(prm){
			var video_container = prm['container'];
			var div_video = $('<iframe></iframe>').attr({
				src:prm.source+'?autoplay=1',
				width:prm.width,
				height:prm.height
			});
			video_container.append(div_video); //alert(jwplayer);
		}

		function render_video_jwplayer(prm){ //alert('xx');
			//alert(internal_id);
			var video_container = prm['container'];
			var video_player_id = 't_media_player_render_jw_video_player_id';
			//var src = "<source src='"+prm['source']+"' type='"+prm['type']+"' />"; alert(src);
			var video_player = options.jwplayer.url; //'http://player.longtailvideo.com/player.swf';
			//var div_video;
			//div_video = "<video id='"+video_player_id+"'";
			//div_video += " width='"+prm.width+"px'";
			//div_video += " height='"+prm.height+"px'";
			//div_video += " poster='"+"http://content.bitsontherun.com/thumbs/uMp5r6eZ-480.jpg"+"'";
			//div_video += " controls>"+src+"</video>";
			//alert(div_video);
			var div_video = $('<div></div>').attr({id:video_player_id}).css({width:prm.width,height:prm.height});
			video_container.append(div_video);
			jwplayer(video_player_id).setup({
				skin: "http://content.longtailvideo.com/skins/glow/glow.zip",
				stretching: "uniform", //uniform,fill,exactfit,none
				flashplayer: video_player,
				autostart:true,
				file:prm['source']+'?autoplay=1',
				width:prm.width,
				height:prm.height,
				autoplay:true
			});
		}
		
		function render_video(div_parent){ //alert(div_parent);
			//alert(options.media.src);
			if(options.media.src.indexOf('vimeo')!=-1){
				render_video_vimeo({
					container:div_parent,
					source:options.media.src,
					width:options.player.css.width,
					height:options.player.css.height
				});
			} else { //alert($(this).attr('class'));
				//alert(options[options.player['lib']].render);
				options[options.player['lib']].render({
					container:div_parent,
					source:options.media.src,
					width:options.player.css.width,
					height:options.player.css.height,
					type:options.media.type
				});
			}
		}
		
		function render_player(div_parent){
			var div_player = $("<div></div>").attr(options.player.attr).css(options.player.css).css(options.thumb.css)
				.click(function(e){e.stopPropagation();});
			var div_close = $('<div></div>')
				.attr({'class':'t_player_close_button'})
				.css({position:'absolute', display:'block', right:-10, top:-10, width:28, height:26, cursor:'pointer'})
				.click(function(){
					div_shade.remove();
				});; //alert(window.location);
			$(div_parent).append(div_player);
			var css = {left:options.player.css.left, top:options.player.css.top, width:options.player.css.width, height:options.player.css.height}
			//var css = {left:options.player.css.left, top:options.player.css.top, width:options.player.css.width, height:500.1}
			//options.player.css.height = 500;
			//alert(dump(options.player.css,", "));
			//$(div_player).animate(options.player.css, 1000, function(){
			$(div_player).animate(css, 1000, function(){
				$(div_player).append(div_close);
			});
			//alert(dump(div_player.css));
			return div_player;
		};
		});
	};
})(jQuery);
