/*
 jqVideoBox 1.00
 - Jquery version required: 1.2.x, 1.3.x
 
 Changelog:
 
 - 1.00 ported from mootools plugin videbox (http://videobox-lb.sourceforge.net/) to jquery
 */
 
 /* Coded by: emposha <admin@emposha.com> */
/* Copyright: Emposha.com <http://www.emposha.com/> - Distributed under MIT - Keep this message! */
/*
 * initialWidth        - Initial width of the box
 * initialHeight       - Initial height of the box
 * defaultWidth        - Default width of the box
 * defaultHeight       - Default height of the box
 * animateCaption      - Enable/Disable caption animation
 * defaultOverLayFade  - Default overlay fade value
 * flvplayer  	       - Path to default flash player
 */
;(function($) {
	    jQuery.fn.jqvideobox = function (opt) 
	    {
    		return this.each(function()
			{
				function init()
		        {
		        	if (jQuery("#lbOverlay").length == 0)
		        	{
			        	var _overlay = jQuery(document.createElement("div")).attr({"id": "lbOverlay"}).click(closeMe);
			        	var _center = jQuery(document.createElement("div")).attr({"id": "lbCenter"}).css({'width': options.initialWidth+'px', 'height': options.initialHeight+'px', 'display': 'none'});
			        	var _bottomContainer = jQuery(document.createElement("div")).attr({"id": "lbBottomContainer"}).css('display', 'none');

			        	var _bottom = jQuery(document.createElement("div")).attr('id', 'lbBottom');
						var _close = jQuery(document.createElement("a")).attr({id: 'lbCloseLink', href: '#'}).click(closeMe);
						var _caption = jQuery(document.createElement("div")).attr('id', 'lbCaption');
						var _number = jQuery(document.createElement("div")).attr('id', 'lbNumber');
						var _clear = jQuery(document.createElement("div")).css('clear', 'both');	
						
						var _prevlink = jQuery(document.createElement("a")).attr({id: 'lbPrevLink', href: '#'}).click(prevVideo);
						var _nextlink = jQuery(document.createElement("a")).attr({id: 'lbNextLink', href: '#'}).click(nextVideo);
						_bottom.append(_close).append(_caption).append(_number).append(_clear);
						_bottomContainer.append(_bottom);
			        	jQuery("body").append(_overlay).append(_center).append(_bottomContainer).append(_prevlink).append(_nextlink);
		        	}
		        	
	        		overlay = jQuery("#lbOverlay");
	        		center = jQuery("#lbCenter");
	        		caption = jQuery("#lbCaption");
	        		bottomContainer = jQuery("#lbBottomContainer");
		        	prevlink = jQuery("#lbPrevLink");
		        	nextlink = jQuery("#lbNextLink");
		        	
		        	element.click(activate);
		        }
		        
		        function prevVideo()
		        {
		        	return false;
		        }
		        
		        function nextVideo()
		        {
		        	return false;
		        }
		        
		        function closeMe()
				{
						overlay.fadeTo("fast",0,function(){jQuery(this).css('display','none')});
						center.css('display','none');
						bottomContainer.css('display', 'none');
						prevlink.css('display','none');
						nextlink.css('display','none');
						center.html('');
						return false;
				}
		        
		        function activate()
		        {
					setup(href);
					top = jQuery(window).scrollTop() + ((jQuery(window).height() / 2) - (options.defaultHeight / 2));
					left= ((jQuery(window).width() / 2) - (options.defaultWidth / 2));
					if (document.all) iefaktor = 10; else iefaktor = 0;
					center.css({'top': top + 'px', 'left':  left + 'px','display': 'none', 'background': '#fff url(css/loading.gif) no-repeat center', 'height': (options.contentsHeight+38), 'width': (options.contentsWidth+iefaktor)});					
					overlay.css('display','block').fadeTo("fast",options.defaultOverLayFade);
					caption.html(title);
					center.fadeIn("slow",
						function()
						{
							insert();
						}
					);
					return false;
		        }
		        
		        function insert()
		        {
		        	center.css('background','#fff');
					flash ? so.write(center.attr("id")) : center.html(other) ;					
					if (document.all) iefaktor = 10; else iefaktor = 0;
					bottomContainer.css({'top': (top + center.height() + 10) + "px", 'left': center.css('left'), 'width': (options.contentsWidth+iefaktor)+'px'});
					if (options.animateCaption)
					{
						bottomContainer.slideDown('slow');
					}
					else
					{
						bottomContainer.css('display','block');
					}
					//prevlink.css({'top': (top + (options.defaultHeight /2 )) + "px", 'display': 'block', 'left':  (parseInt(center.css('left'),10) + options.defaultWidth) + 'px'});
					//nextlink.css({'top': (top + (options.defaultHeight /2 )) + "px", 'display': 'block', 'left':  (parseInt(center.css('left'),10) - 53) + 'px'});
		        }
		        
		        function setup(sLinkHref)
		        {
		        	var aDim = rel.match(/[0-9]+/g);
		        	overlay.css({'top': jQuery(window).scrollTop()+'px', 'height': jQuery(window).height()+'px'});
					options.contentsWidth = (aDim && (aDim[0] > 0)) ? aDim[0] : options.defaultWidth;
					options.contentsHeight = (aDim && (aDim[1] > 0)) ? aDim[1] : options.defaultHeight;

					if (document.all) options.contentsHeight += 5;

								
					if (sLinkHref.match(/youtube\.com\/watch/i)) 
					{
				    	flash = true;
						var hRef = sLinkHref;
						var videoId = hRef.split('=');
						videoID = videoId[1];
						so = new SWFObject("http://www.youtube.com/v/"+videoID, "flvvideo", options.contentsWidth, options.contentsHeight, "0");
						so.addParam("wmode", "transparent");
					}
					else if (sLinkHref.match(/metacafe\.com\/watch/i)) 
					{
				      	flash = true;
						var hRef = sLinkHref;
						var videoId = hRef.split('/');
						videoID = videoId[4];
						so = new SWFObject("http://www.metacafe.com/fplayer/"+videoID+"/.swf", "flvvideo", options.contentsWidth, options.contentsHeight, "0");
						so.addParam("wmode", "transparent");
					}
					else if (sLinkHref.match(/google\.com\/videoplay/i)) 
					{
			      		flash = true;
						var hRef = sLinkHref;
						var videoId = hRef.split('=');
						videoID = videoId[1];
						so = new SWFObject("http://video.google.com/googleplayer.swf?docId="+videoID+"&hl=en", "flvvideo", options.contentsWidth, options.contentsHeight, "0");
						so.addParam("wmode", "transparent");
					}
					else if (sLinkHref.match(/ifilm\.com\/video/i)) 
					{
					  	flash = true;
						var hRef = sLinkHref;
						var videoId = hRef.split('video/');
						videoID = videoId[1];
						so = new SWFObject("http://www.ifilm.com/efp", "flvvideo", options.contentsWidth, options.contentsHeight, "0", "#000");
						so.addVariable("flvbaseclip", videoID+"&");
						so.addParam("wmode", "transparent");
					}
					else if (sLinkHref.match(/\.mov/i)) 
					{
						flash = false;
						other = '<embed height="'+options.contentsHeight+'" width="'+options.contentsWidth+'" autoplay="';
						if (options.autoplay == true) other += 'true'; else other += 'false';
						other += '" bgcolor="#ffffff" src="'+sLinkHref+'" style="display: block;">';
					}
					else if (sLinkHref.match(/\.wmv/i) || sLinkHref.match(/\.asx/i)) 
					{
						flash = false;
					 	other = '<object NAME="Player" WIDTH="'+options.contentsWidth+'" HEIGHT="'+options.contentsHeight+'" align="left" hspace="0" type="application/x-oleobject" CLASSID="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6"><param NAME="URL" VALUE="'+sLinkHref+'"><param><param NAME="AUTOSTART" VALUE="false"></param><param name="showControls" value="true"></param><embed WIDTH="'+options.contentsWidth+'" HEIGHT="'+options.contentsHeight+'" align="left" hspace="0" SRC="'+sLinkHref+'" TYPE="application/x-oleobject" AUTOSTART="';
					 	if (options.autoplay == true) other += 'true'; else other += 'false';
					 	other += '"></embed></object>'
					}
					else if (sLinkHref.match(/\.flv/i) || sLinkHref.match(/\.mp4/i)) 
					{
					 	flash = false;
					 	other = '<embed width="'+(options.contentsWidth)+'" height="'+(options.contentsHeight+38)+'" salign="tl" id="mediapsfsflayer" pluginspage="http://www.macromedia.com/go/getflashplayer" bgcolor="#ffffff" quality="hight" autoplay="';
					 	
					 	if (options.autoplay == true) other += 'true'; else other += 'false';
					 	other += '" scale="noscale" allowfullscreen="false" base="." flashvars="video='+sLinkHref+'&amp;skin=skin-play-seek-mute-vol.swf&amp;contentpath=..&amp;skinscalemaximum=1&amp;autoplay=';
					 	if (options.autoplay == true) other += 'true'; else other += 'false';
					 	if (options.flashvars.preview) other += '&amp;preview='+options.flashvars.preview;
					 	other += '&amp;skincolor='+options.skincolor+'&amp;loop=false&amp;islive=false&amp;volume=0.5&amp;smoothing=true&amp;debug=false&amp;autoscale=false&amp;videowidth='+(options.contentsWidth)+'&amp;videoheight='+options.contentsHeight+'"  base="." salign="tl"  name="mediapsfsflayer" mediawrapchecked="true" src="flvplayer/flvplayer.swf" type="application/x-shockwave-flash" splayername="SWF" tplayername="SWF" style="visibility: visible;"/>';

					}
					else if (sLinkHref.match(/\.wav/i) || sLinkHref.match(/\.mp3/i)|| sLinkHref.match(/\.avi/i)|| sLinkHref.match(/\.mpg/i)) 
					{
					 	flash = false;				 	
					 	other = '<embed width="'+options.contentsWidth+'" height="'+options.contentsHeight+'" autostart="';
					 	if (options.autoplay == true) other += '1'; else other += '0';
					 	other += '" bgcolor="#ffffff" style="display: block;" pluginspage="http://www.apple.com/quicktime/download/" mediawrapchecked="true" src="'+sLinkHref+'" type="video/quicktime" id="Player1263589659891" splayername="QT" tplayername="QT"/>';

					}
					else if (sLinkHref.match(/\.htm/i) || sLinkHref.match(/\.html/i)|| sLinkHref.match(/\.txt/i)|| sLinkHref.match(/\.pdf/i)|| sLinkHref.match(/\.doc/i)|| sLinkHref.match(/\.xls/i)|| sLinkHref.match(/\.xml/i)|| sLinkHref.match(/\.odt/i)|| sLinkHref.match(/\.ods/i)) 
					{
					 	flash = false;				 	
					 	other = '<iframe src="'+sLinkHref+'" id="iframe_vorschau" style="width:'+options.contentsWidth+'px; height:'+options.contentsHeight+'px; border: 0px solid; background-color: white"></iframe>';
					}
					else										
					{
					  	flash = true;
						videoID = sLinkHref;
						so = new SWFObject(videoID, "flvvideo", options.contentsWidth, options.contentsHeight, "0");
					}
				}
				

function getSettings(el, options2) {
	options2 = options2 || {};
	var $el = jQuery(el);
	var cls = el.className || '';
	// support metadata plugin (v1.0 and v2.0)
	var meta = jQuery.metadata ? $el.metadata() : jQuery.meta ? $el.data() : {};
	meta = meta || {};
	var w = meta.width	 || parseInt(((cls.match(/w:(\d+)/)||[])[1]||0));
	var h = meta.height || parseInt(((cls.match(/h:(\d+)/)||[])[1]||0));

	if (w) meta.width	= w;
	if (h) meta.height = h;
	if (cls) meta.cls = cls;

	var a = {};
	var b = options2;
	var c = meta;

	var p = { params: { bgColor: options2.bgColor || '#ffffff' } };
	var opts = jQuery.extend({}, a, b, c);
	jQuery.each(['attrs','params','flashvars','silverlight'], function(i,o) {
		opts[o] = jQuery.extend({}, p[o] || {}, a[o] || {}, b[o] || {}, c[o] || {});
	});

	if (typeof opts.caption == 'undefined') opts.caption = $el.text();

	// make sure we have a source!
	opts.src = opts.src || $el.attr('href') || $el.attr('src') || 'unknown';
	return opts;
};

		        var options = jQuery.extend({				        
						initialWidth: 250,		// Initial width of the box (px)
						initialHeight: 250,		// Initial height of the box (px)
						defaultWidth: 425,		// Default width of the box (px)
						defaultHeight: 350,	// Default height of the box (px)
						animateCaption: true,	// Enable/Disable caption animation
						defaultOverLayFade: 0.8,	//Default overlay fade value
						flvplayer: 'swf/flvplayer.swf',
						skincolor: '0x667788',
						autoplay: false
			        }, opt);
			    
			    //system vars
			    var overlay, center, caption, bottomContainer, so, flash, videoID, other, top;
			    var element = jQuery(this);
			    var href = element.attr("href");
					var title = element.attr("title");
					var rel = element.attr("rel");

					//lets start it
				
					options2 = {};
					var options = getSettings(this, options);
					if (options.width > 0) options.defaultWidth = options.width;
					if (options.height > 0) options.defaultHeight = options.height;
			
	        init();
			});
		}
	})(jQuery);
