/*
 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
 */
 
jQuery(
    function ($) 
    {
	    $.fn.jqvideobox = function (opt) 
	    {
    		return this.each(function(count)//personalizzazione messo count tra parantesi per contare i cicli di each
                {
                        function init()
		        {

		        	if ($("#lbOverlay").length == 0)
		        	{
                                    //alert("create overlay")

			        	var _overlay = $(document.createElement("div")).attr({"id": "lbOverlay"}).click(closeMe);
			        	var _center = $(document.createElement("div")).attr({"id": "lbCenter"}).css({'width': options.initialWidth+'px', 'height': options.initialHeight+'px', 'display': 'none'});
			        	var _bottomContainer = $(document.createElement("div")).attr({"id": "lbBottomContainer"}).css('display', 'none');

			        	var _bottom = $(document.createElement("div")).attr('id', 'lbBottom');
						var _close = $(document.createElement("a")).attr({id: 'lbCloseLink', href: '#'}).click(closeMe);
						var _caption = $(document.createElement("div")).attr('id', 'lbCaption');
						var _number = $(document.createElement("div")).attr('id', 'lbNumber');
						var _clear = $(document.createElement("div")).css('clear', 'both');	
						
						//var _prevlink = $(document.createElement("a")).attr({id: 'lbPrevLink', href: '#'}).click(prevVideo);
						//var _nextlink = $(document.createElement("a")).attr({id: 'lbNextLink', href: '#'}).click(nextVideo);

                                                //personalizzazione
                                                var _otherVideo = $(document.createElement("div")).attr('id', 'thumbPreview');
                                                _bottom.append(_otherVideo);
                                                //var _clearGall = $(document.createElement("div")).css('clear', 'both');
                                                //_bottom.append(_clearGall);
                                                //_bottom.append(_clearGall);
                                                //end personalizzazione

                                                _bottom.append(_close).append(_caption).append(_number).append(_clear);
						_bottomContainer.append(_bottom);
			        	//$("body").append(_overlay).append(_center).append(_bottomContainer).append(_prevlink).append(_nextlink);
                                        $("body").append(_overlay).append(_center).append(_bottomContainer);
 
                                }

                                //personalizzazione
                                //NOTA: se html della pagina arriva da una chiamata ajax e contiene link A con class=vidbox,
                                //se richiama di nuovo la $(".vidbox").jqvideobox(); allora ricreo correttamente anche la GalleryThumb
                                //poichè in setupGalleryThumb remove il contenuto di _otherVideo e lo ricreo ogni volta
                                if(count==0) 
                                {
                                   setupGalleryThumb();
                                   $(".scrollable").scrollable();
                                }
                                //end personalizzazione
		        	
	        		overlay = $("#lbOverlay");
	        		center = $("#lbCenter");
	        		caption = $("#lbCaption");
	        		bottomContainer = $("#lbBottomContainer");
		        	//prevlink = $("#lbPrevLink");
		        	//nextlink = $("#lbNextLink");
		        	
		        	element.click(activate);
		        }

                   

		        function prevVideo()
		        {
		        	return false;
		        }
		        
		        function nextVideo()
		        {
		        	return false;
		        }
		        
		        function closeMe()
                        {
                                overlay.fadeTo("fast",0,function(){$(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);

                                //personalizzazione
                                setGalleryThumbSelected(href);
                                //personalizzazione

                                top = $(window).scrollTop() + (($(window).height() / 2) - (options.defaultHeight / 2));
                                left= (($(window).width() / 2) - (options.defaultWidth / 2));
                                center.css({'top': top + 'px', 'left':  left + 'px','display': 'none', 'background': '#fff url(/include/mod/comp/images/ajaxloading2.gif) no-repeat center', 'height': options.contentsHeight, 'width': options.contentsWidth});
                                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) ;
                            bottomContainer.css({'top': (top + center.height() + 10) + "px", 'left': center.css('left'), 'width': options.contentsWidth+'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)
		        {
                                sLinkHref = "/docs/files/"+sLinkHref;//personalizzazione
					
		        	var aDim = rel.match(/[0-9]+/g);
		        	overlay.css({'top': $(window).scrollTop()+'px', 'height': $(window).height()+'px'});

					options.contentsWidth = (aDim && (aDim[0] > 0)) ? aDim[0] : options.defaultWidth;
					options.contentsHeight = (aDim && (aDim[1] > 0)) ? aDim[1] : options.defaultHeight;
					
					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;
						if (navigator.plugins && navigator.plugins.length) 
						{
			          		other ='<object id="qtboxMovie" type="video/quicktime" codebase="http://www.apple.com/qtactivex/qtplugin.cab" data="'+sLinkHref+'" width="'+options.contentsWidth+'" height="'+options.contentsHeight+'"><param name="src" value="'+sLinkHref+'" /><param name="scale" value="aspect" /><param name="controller" value="true" /><param name="autoplay" value="true" /><param name="bgcolor" value="#000000" /><param name="enablejavascript" value="true" /></object>';
			      		} 
			      		else 
			      		{
			        		other = '<object classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" codebase="http://www.apple.com/qtactivex/qtplugin.cab" width="'+options.contentsWidth+'" height="'+options.contentsHeight+'" id="qtboxMovie"><param name="src" value="'+sLinkHref+'" /><param name="scale" value="aspect" /><param name="controller" value="true" /><param name="autoplay" value="true" /><param name="bgcolor" value="#000000" /><param name="enablejavascript" value="true" /></object>';
			      		}
					}
					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="false"></embed></object>'
					}
					else if (sLinkHref.match(/\.flv/i) || sLinkHref.match(/\.f4v/i) || sLinkHref.match(/\.mp4/i) )
					{
					 	flash = true;
					 	so = new SWFObject(options.flvplayer+"?file="+sLinkHref, "flvvideo", options.contentsWidth, options.contentsHeight, "0", "#000");
                                                so.addVariable('autostart','true');
                                                so.addParam('allowFullScreen','true');//se lo metto inline sopra non va
 					}
					else 
					{
					  	flash = true;
						videoID = sLinkHref;
						so = new SWFObject(videoID, "flvvideo", options.contentsWidth, options.contentsHeight, "0");
					}
				}
 

                                //personalizzazione mie
                                function setupGalleryThumb()
                                {
                                    _otherVideo = $('#thumbPreview');
                                    _otherVideo.children().remove();//cancello il contenuto e lo ricreo...se arrivo da chiamata a

                                    _vidbox = $('.vidbox');
                                    if(_vidbox.size()>1)//se ho + di un video (con class=vidbox) nella pagina creo gallery altrimenti no
                                    {
                                        //http://flowplayer.org/tools/demos/scrollable/index.html
                                        //faccio uno scrollable basandomi su jquerytools
                                        /*<a class="prev browse left"></a>
                                        <div class="scrollable">
                                        <div class="items">
                                        <div><img src="xxx" /></div>
                                        </div>
                                        </div>
                                        <a class="next browse right"></a>*/

                                        jqtools_scroll_prev='<a class="prev browse left"></a>'
                                        var _scrollable = $(document.createElement("div")).attr({className:'scrollable'})
                                        var _items = $(document.createElement("div")).attr({className:'items'})
                                        jqtools_scroll_next='<a class="next browse right"></a>'

                                        _otherVideo.append(jqtools_scroll_prev)
                                        _otherVideo.append(_scrollable);
                                        _scrollable.append(_items);
                                        _otherVideo.append(jqtools_scroll_next)

                                        _vidbox.each(function(){
                                           thumbVideo = $(this).attr("thumb")
                                           hrefVideo = $(this).attr("href")
                                           tooltipVideo = $(this).attr("tooltipVideo")

                                           if(thumbVideo!='')
                                           {
                                                var _thumbVideo = $(document.createElement("img")).attr({name: hrefVideo, src: thumbVideo, title: tooltipVideo})
                                                _thumbVideo.click(function() {
                                                    nameVideo = $(this).attr('name')
                                                    setGalleryThumbSelected(nameVideo)
                                                    showVideo(nameVideo)
                                                });
                                                var _genericDiv = $(document.createElement("div"));
                                                _items.append(_genericDiv)
                                                _genericDiv.append(_thumbVideo)
                                            }
                                        });
                                    }
                                }
                                function showVideo(srcNewVideo)
                                {
                                       setup(srcNewVideo);
                                       insert();
                                }

                                function setGalleryThumbSelected(hrefSel)
                                {
                                    //prima spengo tutte poi accendo quella selezionata
                                   // alert($(".items > img"))//su explorer non va
                                    $(".active").each(function(){
                                        $(this).attr("class","");
                                    });
                                    //poi accendo solo quella selezionata
                                    _imgThumb = $('img[name*="'+hrefSel+'"]')
                                    _imgThumb.attr("class","active");
                                }
                                //end personalizzazione


                                var options = $.extend({
						initialWidth: 450,		// Initial width of the box (px)
						initialHeight: 450,		// Initial height of the box (px)
						defaultWidth: 560,		// 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: '/include/mod/comp/jwplayer/player.swf'
                                                flvplayer: '/include/mod/comp/jwplayer/player5-4_licensed.swf'
			        }, opt);
			    
			    //system vars
			    var overlay, center, caption, bottomContainer, so, flash, videoID, other, top;
			    var element = $(this);
			    var href = element.attr("href");
				var title = element.attr("title");
				var rel = element.attr("rel");

				//lets start it
		        init();
			});
		}
	}

);
