/*
 * jTube 1.0 - YouTube video link beautifier plugin for jQuery
 *
 * Copyright (c) 2011 Mars
 *
 * Licensed under the GPL license:
 *   http://www.gnu.org/licenses/gpl.html
 *
 * Plugin home & Author URL:
 *   http://marscode.blogspot.com
 *
 */
(function( $ ){

  $.fn.jTube = function(size) {
  
	function strip(html)
	{
	   var tmp = document.createElement("DIV");
	   tmp.innerHTML = html;
	   return tmp.textContent||tmp.innerText;
	}
	
    this.each(function() {
		var url = $(this).attr("href");
		
		if (typeof url == 'undefined') return;
		
		var rExp = new RegExp('(?:youtube\.com/(?:user/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})','i');      	
		var results = rExp.exec(url);
		var isYouTube = true;
		
		if (results === null) {
			if (!url.match("(.mp4|.m4v|.m4a|.flv|.264|.h264)")) {
				return;
			}
			else
			{
				isYouTube = false;
			}
		}

		var vid;
		var newUrl;
		
		if (isYouTube) {		
		
			vid = results[1];
			if(size == "small"){
				newUrl = "http://img.youtube.com/vi/"+vid+"/2.jpg";
			}else {
				newUrl = "http://img.youtube.com/vi/"+vid+"/0.jpg";
			}		
		}
		else
		{
			vid = escape(url);
			newUrl = "http://www.boletus.hr/images/video.png";
		}
		var text = $(this).text();
		var isUrl = text.match(/(^|["'(\s]|&lt;)((?:(?:https?|ftp):\/\/|mailto:).+?)((?:[:?]|\.+)?(?:\s|$)|&gt;|[)"',])/g);
		var shortText = isUrl ? (isYouTube ? "[YouTube Video link]" : "[Video link]") : (text.length < 23 ? text : text.substring(0,20)+"...");
		
		var img = $('<a style="border:0;margin:0;padding:0;text-decoration:none;" href="' + url + '" alt="' + shortText + '"><div style="overflow:visible;vertical-align:bottom;text-align:center;background-color:transparent;text-decoration:underline;display:inline-block;width:130px;font-size:10px;cursor: pointer;border:1px dotted #CCCCCC"><div style="position:relative;width:130px;paddin-top:2px;paddin-bottom:4px;"><div id="img"  style="width:120px;background-color:white;position:absolute;top:-105px;display:none;border:1px solid black;padding:5px;"><img style="opacity:0.7;" alt="Play Video" src="' + newUrl + '" /><div id="playbutton"  style="position:absolute;top:30px;left:45px;width:40px;height:40px;background-image:url(js/play.png);border:0px solid black;"></div></div>' + shortText + '</div></a>');
		img.mouseenter(function() {
			$('#img',this).stop().css("opacity", 1).fadeIn();
		});
		img.mouseleave(function() {
			$('#img',this).stop().css("opacity", 1).fadeOut();
		});

		$('img, #playbutton',img).mouseenter(function() {
			$(this).closest("img").stop().css("opacity", 0.7).fadeTo(300,1);
		});
		$('img, #playbutton',img).mouseleave(function() {
			$(this).closest("img").stop().css("opacity", 1).fadeTo(300,0.7);
		});
		
		var content;

		if (isYouTube) {
			content = '<iframe title="YouTube video player" class="youtube-player" type="text/html" width="800" height="600" src="http://www.youtube.com/embed/' + vid + '?autoplay=1" frameborder="0" allowFullScreen></iframe>';
		}
		else
		{ 
			var script = '<script type="text/javascript">$(document).ready(function() {flowplayer("player", "http://www.boletus.hr/flowplayer.commercial-3.2.7.swf",{"key":"#@52ddce197c6fc243a81","clip":{onFinish: function() {var d = window;if (typeof parent != "undefined") d=parent;d.document.videoFinished();},"autoPlay":true,"autoBuffering":true,"scaling":"fit","url":"' + vid + '"},"canvas":{"backgroundColor":"#000000"},"play":{"opacity":0},"plugins":{sharing: {url: "flowplayer.sharing-3.2.1.swf",facebook: true},"controls":{"durationColor":"#ffffff","backgroundColor":"#ffffff","bufferGradient":"none","buttonOverColor":"#000000","bufferColor":"#292929","backgroundGradient":"none","progressGradient":"none","sliderGradient":"none","borderRadius":"0px","sliderColor":"#CACACA","timeColor":"#ffffff","progressColor":"#CACACA","buttonColor":"#292929","opacity":1}},"playerId":"player","playlist":[{"autoPlay":true,"autoBuffering":true,"scaling":"fit","url":"' + vid + '"}]});});</script>';
			content = '<div class="flow-player" id="player"></div>' + script;
		}				
		
		
		$('#img',img).click(function(e) {	
			$(this).stop().hide();			
			var fb = $.fancybox({
				onStart			: function() {
					$("iframe").css("visibility", "hidden");
				},
				onClosed			: function() {
					$("iframe").css("visibility", "visible");
				},
				'scrolling'   : 'auto',
				'padding'       : 10,
				'transitionIn'  : 'fade',
				'transitionOut' : 'fade',
				'type'			: 'html',
				'showCloseButton': true,
				'titlePosition' : 'inside',
				'content'		: content,
        		'autoDimensions'	: false,
				'width'         		: 800,
				'height'        		: 600,
				'titleShow'		: true,
				'title'         : (isUrl ? "<a href=\"" + text + "\" alt=\"Link\">Slijedi link ili downloadaj video</a>" : "<a href=\"" + url + "\" alt=\"Link\">" + text + "</a>")
			});	
			document.videoFinished = (function(obj) {
				return function() {
					obj.close();
				}
			})($.fancybox);
			
			var event = e || window.event;
			
			if (event.stopPropagation) {
				event.stopPropagation();
			  } else {
				event.cancelBubble = true;
			  } 
			return false;
		});
		img.click((function(url){
			return function(e) {
			
			var event = e || window.event;
			
			window.location = url;
			
			if (event.stopPropagation) {
				event.stopPropagation();
			  } else {
				event.cancelBubble = true;
			  } 
			return false;
			}
		})((isUrl ? text : url)));
		$(this).replaceWith(img);

	});
			
    return this;
  };
})( jQuery );

