(function ($) {
	var jwplayerPath = "/player/";
	var player = {};
	var streamer = ["http","youtube","rtmp"];
	var vimeoAsStreamer = "vimeo.swf";
	var thumbDefault = "/images/player/default.png";
	var thumbUnavailable = "/images/player/unavailable.png";
	
	// array descrittivo dei codici restituiti dal server
	// [la scelta dell'array è per evitare problemi con vecchi browsers]
	var statusText = [];
	statusText[100] = "Continue";
	statusText[101] = "Switching Protocols";
	statusText[200] = "OK";
	statusText[201] = "Created";
	statusText[202] = "Accepted";
	statusText[203] = "Non-Authoritative Information";
	statusText[204] = "No Content";
	statusText[205] = "Reset Content";
	statusText[206] = "Partial Content";
	statusText[300] = "Multiple Choices";
	statusText[301] = "Moved Permanently";
	statusText[302] = "Found";
	statusText[303] = "See Other";
	statusText[304] = "Not Modified";
	statusText[305] = "Use Proxy";
	statusText[306] = "(unused, but reserved)";
	statusText[307] = "Temporary Redirect";
	statusText[400] = "Bad Request";
	statusText[401] = "Unauthorized";
	statusText[402] = "Payment Required";
	statusText[403] = "Forbidden";
	statusText[404] = "Page Not Found";
	statusText[405] = "Method Not Allowed";
	statusText[406] = "Not Acceptable";
	statusText[407] = "Proxy Authentication Required";
	statusText[408] = "Request Timeout";
	statusText[409] = "Conflict";
	statusText[410] = "Gone";
	statusText[411] = "Length Required";
	statusText[412] = "Precondition Failed";
	statusText[413] = "Request Entity Too Large";
	statusText[414] = "Request-URI Too Long";
	statusText[415] = "Unsupported Media Type";
	statusText[416] = "Requested Range Not Satisfiable";
	statusText[417] = "Expectation Failed";
	statusText[500] = "Internal Server Error";
	statusText[501] = "Not Implemented";
	statusText[502] = "Bad Gateway";
	statusText[503] = "Service Unavailable";
	statusText[504] = "Gateway Timeout";
	statusText[505] = "HTTP Version Not Supported";
	statusText[509] = "Bandwidth Limit Exceeded";

	function log (msg) {
		$("#log").html($("#log").html() + "<br />" + msg);
	};
	
	// Return a boolean value telling whether // the first argument is a string
	function isString () {
		if (typeof arguments[0] == "string") {
			return true;
		} else if (typeof arguments[0] == "object") {
			var criterion =  arguments[0].constructor.toString().match(/string/i);
			return (criterion != null);
		}
		return false;
	};
	
	// Return a boolean value telling whether // the first argument is an Array
	function isArray () {
		if (typeof arguments[0] == "object") {
			var criterion = arguments[0].constructor.toString().match(/array/i); 
			return (criterion != null);
		}
		return false;
	};
	
	// Format Timer (hh:mm:ss)
	function formatTime (second, hour, minute) {
		if (second > 3600) {
			var ore = Math.floor(second / 3600);
			if (ore < 10) ore = "0" + ore;
			var rest = Math.ceil(second % 3600);
			var format = formatTime(rest, ore);
		} else if (second > 60) {
			var minuti = Math.floor(second / 60);
			if (minuti < 10) minuti = "0" + minuti;
			var rest = Math.ceil(second % 60);
			var format = formatTime(rest, ore, minuti);
		} else if (second < 60) {
			if (!hour) hour = "00";
			if (!minute) minute = "00";
			if (!second) {
				second = "00";
			} else {
				second = Math.round(second);
				if (second < 10) {
					second = "0" + second;
				}
			}
			var format = hour + ":" + minute + ":" + second;
		}
		return format;
	};
	
	// Video ID Extractor
	function youtubeIDextract (url) { 
		var youtube_id; 
		youtube_id = url.replace(/^[^v]+v.(.{11}).*/, "$1"); 
		return youtube_id; 
	};
	
	// Cut video description to avoid too long text
	function cutString (stringa, max_char) {
		if (stringa.length > max_char) {
			stringa_tagliata = stringa.substring(0, max_char);
			last_space = stringa_tagliata.lastIndexOf(" ");
			stringa_ok = stringa_tagliata.substring(0, last_space);
			return stringa_ok + "...";
		} else {
			return stringa;
		}
	};
	
	// Create the player
	function setPlayer (setting) {

		// No setting, no good stuff!
		if (!setting) return false;

		// No playlist, no good stuff!
		if (!setting.playlist || setting.playlist.length == 0) return false;

		// Set start index to 0, if not passed
		if (!setting.start || setting.playlist.length < setting.start + 1) {
			setting.start = 0;
		}

		// Check if video data exist
		if (setting.playlist[setting.start].file && setting.playlist[setting.start].file != "") {
			
			var width = (setting.playlist[setting.start].width > 0) ? setting.playlist[setting.start].width : setting.width;
			var height = (setting.playlist[setting.start].height > 0) ? setting.playlist[setting.start].height : setting.height;
			
			// Object containing player elements
			var elements = {};
			
			// Empty container
			elements.container = setting.container.empty();
			elements.container.css({
				"width": width + "px",
				"height": height + "px"
			});
			
			$("<div id=\"playerContainer_" + setting.playerID + "\"></div>").appendTo(elements.container);
			
			// Default setup
			setup = $.extend({
				"flashplayer": setting.player + "player.swf",
				"id": "playerID_" + setting.playerID,
				"name": "playerID_" + setting.playerID,
				"wmode": "transparent",
				"controlbar": "none",
				"autostart": setting.autostart,
				"plugins": {
					"viral": {
						"oncomplete": false,
						"onpause": false
					}
				},
				"height": height,
				"width": width
			}, setting.playlist[setting.start]);
			jwplayer("playerContainer_" + setting.playerID).setup(setup);
			
			// On Ready
			jwplayer("playerContainer_" + setting.playerID).onReady(function () {
				
				// Title, description and image
				var title = (setting.playlist[setting.start].title && setting.playlist[setting.start].title != "") ? setting.playlist[setting.start].title : null;
				var description = (setting.playlist[setting.start].description && setting.playlist[setting.start].description != "") ? setting.playlist[setting.start].description : null;
				var image = (setting.playlist[setting.start].image && setting.playlist[setting.start].image != "") ? setting.playlist[setting.start].image : null;
				var provider = jwplayer("playerContainer_" + setting.playerID).getPlaylistItem(jwplayer("playerContainer_" + setting.playerID).getPlaylistItem().index).provider;
				
				// VIDEO TITLE
				if (title && height >= 240) {
					elements.title = $("<div class=\"flashTitle\"></div>").appendTo(elements.container);
					elements.title.append("<div></div>").children("div")
					.append("<h1>" + setting.playlist[setting.start].title + "</h1>")
					.append((description) ? "<p>" + cutString(description, 150) + "</p>" : "");
					
					if (setting.playlist[setting.start].link && setting.playlist[setting.start].link != "") {
						elements.title.click(function (e) {
							window.open(setting.playlist[setting.start].link);
							return false;
						});
					}
				}
			
				// PLAYLIST PREVIEW
				// I use jcarousel and tipsy
				// You could customize as you need
				if ($().jcarousel && $().tipsy && setting.playlist.length > 1 && height >= 240) {
					
					elements.carousel = $("<ul class=\"jcarousel-skin-cytp\"></ul>").appendTo(elements.container);
					
					// remove tipsy to avoid duplicate
					$(".tipsy").remove();
					
					var elem = [];
					for (var i = 0; i < setting.playlist.length; i++) {
						if (setting.playlist[i]) {
							var title = (setting.playlist[i].title && setting.playlist[i].title != "") ? setting.playlist[i].title : null;
							var image = (setting.playlist[i].image && setting.playlist[i].image != "") ? setting.playlist[i].image : null;
							var html = "<li><a href=\"#\" title=\"" + escape((title) ? title : "") + "\">";
							html += "<span>" + (i + 1) + "/" + setting.playlist.length + "</span>";
							html += "<img class=\"index-" + i + "\" src=\"" + ((image) ? image : thumbDefault) + "\" />";
							html += "</a></li>";
							
							elem[i] = $(html).appendTo(elements.carousel);
							
							if (setting.start == i) {
								elem[i].children("a").click(function (e) {
									if (!elements.container.hasClass("playing")) {
										jwplayer("playerContainer_" + setting.playerID).play();
									} else {
										jwplayer("playerContainer_" + setting.playerID).pause();
									}
									return false;
								});
							} else {
								elem[i].children("a").click(function (e) {
									var x = $(this).children("img").attr("class").replace("index-", "");
									setting.start = parseInt(x);
									setPlayer(setting);
									return false;
								});
							}
															
							if (title) {
								elem[i].children("a").tipsy({
									"title": function () {
										return unescape($(this).attr("original-title"));
									}
								});
							}
						} else {
							var html = "<li><a href=\"#\" title=\"Video currently unavailable\">";
							html += "<span>" + (i + 1) + "/" + setting.playlist.length + "</span>";
							html += "<img class=\"index-" + i + "\" src=\"" + thumbUnavailable + "\" />";
							html += "</a></li>";
							
							$(html).appendTo(elements.carousel)
							.children("a").css({
								"cursor": "default"
							}).click(function (e) {
								return false;
							}).tipsy({
								"title": function () {
									return $(this).attr("original-title");
								}
							});
						}
					}
					elements.carousel.jcarousel({
						"start": setting.start + 1,
						"scroll": 1,
						"buttonNextHTML": "<div>&raquo;</div>",
						"buttonPrevHTML": "<div>&laquo;</div>"
					});
				}
				
				// player controller
				elements.control = $("<div class=\"flashControl\"></div>").appendTo(elements.container); // A Controller container div, inserted by the plugin
				
				// play/pause on click event
				elements.play = $("<a href=\"#\" class=\"flashPlay\"></a>").appendTo(elements.control) // The control play/pause button
				.click(function (e) {
					if (!elements.container.hasClass("playing")) {
						jwplayer("playerContainer_" + setting.playerID).play();
					} else {
						jwplayer("playerContainer_" + setting.playerID).pause();
					}					
					return false;
				});
	
				elements.current = $("<div class=\"flashCurrent\"></div>").appendTo(elements.control); // Current elapsed time
				elements.current.html(formatTime(0));
				
				elements.volume = $("<div class=\"flashVolume\"></div>").appendTo(elements.control); // The control sound volume
				for (var i = 0; i < 10; i++) {
					// volume on click event
					$("<div rel=\"volume_" + i + "\" class=\"flashCursor\"></div>").appendTo(elements.volume) // The control sound volume cursor
					.click(function (e) {
						var index = $(this).attr("rel").replace("volume_", "");
						if (index >= 0 && index < 10) {
							$("div.flashCursor:lt(" + (index + 1) + ")", elements.control).addClass("selected");
							$("div.flashCursor:gt(" + index + ")", elements.control).removeClass("selected");
							volume = (Math.round(index) + 1) * 10;
							if (volume < 0) volume = 0;
							if (volume > 100) volume = 100;
							jwplayer("playerContainer_" + setting.playerID).setVolume(volume);
							setting.volume = volume;
						}
						return false;
					});
				}
				$("<div class=\"flashClear\"></div>").appendTo(elements.volume);
				
				// mute on click event
				elements.mute = $("<a href=\"#\" class=\"flashMute\"></a>").appendTo(elements.control) // The control sound mute
				.click(function (e) {
					if (jwplayer("playerContainer_" + setting.playerID).getMute()) {
						jwplayer("playerContainer_" + setting.playerID).setMute(false);
						setting.muted = false;
					} else {
						jwplayer("playerContainer_" + setting.playerID).setMute(true);
						setting.muted = true;
					}
					return false;
				});
				
				elements.duration = $("<div class=\"flashDuration\"></div>").appendTo(elements.control); // Duration of the video
				elements.duration.html(formatTime(0));
				
				elements.progress = $("<div class=\"flashProgress\"></div>").appendTo(elements.control); // Progress bar
				elements.progCont = $("<div class=\"flashProgressContainer\"></div>").appendTo(elements.progress); // Progress bar
				elements.buffered = $("<div class=\"flashBuffered\"></div>").appendTo(elements.progCont); // The light blue elapsed bar
				elements.elapsed = $("<div class=\"flashElapsed\"></div>").appendTo(elements.progCont); // The light blue elapsed bar
				
				$("<div class=\"flashClear\"></div>").appendTo(elements.control);
				
				// progress bar on click event
				// When a click occurs on the progress bar, seek to the
				// appropriate moment of the video.
				elements.progress.click(function (e) {
					var duration = jwplayer("playerContainer_" + setting.playerID).getDuration();
					if (duration >= 0) {
						if ($.inArray(provider, streamer) >= 0 || provider.match(/^(.)*vimeo.swf$/i)) {
							var ratio = (e.pageX - elements.progCont.offset().left) / elements.progCont.width();
							jwplayer("playerContainer_" + setting.playerID).seek(Math.round(duration * ratio));
						} else {
							var nw = e.pageX - elements.progCont.offset().left;
							if (nw <= elements.buffered.width()) {
								var ratio = nw / elements.progCont.width();
								jwplayer("playerContainer_" + setting.playerID).seek(Math.round(duration * ratio));
							}
						}
					}
					return false;
				});
				
				// container on hover event (ie6 hack)
				elements.container.hover(function () {
					if ($(this).is(".flashContainer.playing")) {
						if (elements.title) {
							elements.title.css({
								"display": "block"
							});
						}
						if (elements.control && setting.control == "hide") {
							elements.control.css({
								"display": "block"
							});
						}
					}
					
					return false;
				}, function () {
					if ($(this).is(".flashContainer.playing")) {
						if (elements.title) {
							elements.title.css({
								"display": "none"
							});
						}
						if (elements.control && setting.control == "hide") {
							elements.control.css({
								"display": "none"
							});
						}
					}
					
					return false;
				});
				
				// onready volume
				var volume = (setting.volume <= 100 && setting.volume >= 0) ? setting.volume : jwplayer("playerContainer_" + setting.playerID).getVolume();
				jwplayer("playerContainer_" + setting.playerID).setVolume(volume);
				var index = Math.round(volume / 10);
				$("div.flashCursor:lt(" + index + ")", elements.control).addClass("selected");
				
				// onready muted
				if (setting.muted || jwplayer("playerContainer_" + setting.playerID).getMute()) {
					jwplayer("playerContainer_" + setting.playerID).setMute(true);
					elements.container.addClass("muted");
				} else {
					jwplayer("playerContainer_" + setting.playerID).setMute(false);
					elements.container.removeClass("muted");
				}
				
				var interval = false;
				
				// On End
				jwplayer("playerContainer_" + setting.playerID).onComplete(function () {
					
					window.clearInterval(interval);
					interval = false;

					elements.current.html(formatTime(0));
					elements.elapsed.width(0);
					elements.buffered.width(0);
					elements.container.removeClass("playing");

					if (elements.title) {
						elements.title.css({
							"display": "block"
						});
					}
					
					if (elements.control) {
						elements.control.css({
							"display": "block"
						});
					}
					
					if (setting.playlist.length > 1) {
						if (setting.playlist.length > setting.start + 1) {
							setting.start++;
							setPlayer(setting);
						} else {
							setting.start = 0;
							setPlayer(setting);
						}
					}
					
					return false;
				});
				
				// On Play
				jwplayer("playerContainer_" + setting.playerID).onPlay(function (e) {
					elements.container.addClass("playing");
					
					// Progress Bar updater
					if (!interval) {
						interval = window.setInterval(function () {
							var duration = jwplayer("playerContainer_" + setting.playerID).getDuration();
							if (duration >= 0) {
								var position = jwplayer("playerContainer_" + setting.playerID).getPosition();
								elements.duration.html(formatTime(duration));
								elements.elapsed.width(((position / duration) * 100) + "%");
								elements.current.html(formatTime(position));
							}
						}, 1000);
					}
					
					return false;
				});
				
				// On Pause
				jwplayer("playerContainer_" + setting.playerID).onPause(function (e) {
					window.clearInterval(interval);
					interval = false;
					
					elements.container.removeClass("playing");
					
					return false;
				});
				
				// On Mute
				jwplayer("playerContainer_" + setting.playerID).onMute(function (e) {
					if (e.mute) {
						elements.container.addClass("muted");
					} else {
						elements.container.removeClass("muted");
					}
				});
				
				// On Buffer change
				jwplayer("playerContainer_" + setting.playerID).onBufferChange(function (e) {					
					if ($.inArray(provider, streamer) >= 0 || provider.match(/^(.)*vimeo.swf$/i)) {
						var bufferRatio = Math.round(elements.elapsed.width() / elements.progCont.width() * 100);
						var bufferPercent = e.bufferPercent + bufferRatio;
						
						if (bufferPercent <= 100) {
							elements.buffered.width(bufferPercent + "%");
						} else {
							elements.buffered.width("100%");
						}
					} else {
						elements.buffered.width(e.bufferPercent + "%");
					}

					return false;
				});
				
				// On Error
				jwplayer("playerContainer_" + setting.playerID).onError(function (e) {
					var msg = "Can not perform the requested operation.\n";
					msg += "Error found: " + e.message + "\n";
					msg += "Try to continue?";
					
					if (window.confirm(msg)) {
						if (setting.playlist.length > 1) {
							// remove from playlist
							setting.playlist.splice(setting.start, 1);
							
							// try to play next video if actual not exist
							if (setting.playlist.length > 0) {
								if (setting.playlist.length <= setting.start) {
									setting.start = 0;
									setPlayer(setting);
								} else {
									for (var i = setting.start; i < setting.playlist.length; i++) {
										if (setting.playlist[i]) {
											setting.start = i;
											setPlayer(setting);
											break;
										}
									}
								}
							}
						} else {
							setting.start = 0;
							setPlayer(setting);
						}
					}
					
					return false;
				});
				
				// On Time
				jwplayer("playerContainer_" + setting.playerID).onTime(function (e) {					

					return false;
				});
				
				// On Buffer
				jwplayer("playerContainer_" + setting.playerID).onBuffer(function (e) {
					
					return false;
				});

				// On Idle
				jwplayer("playerContainer_" + setting.playerID).onIdle(function (e) {
					
					return false;
				});
							
				return false;

			});
		} else {
			if (setting.playlist.length > 0) {
				// remove from playlist
				setting.playlist.splice(setting.start, 1);
				
				// try to play next video if actual not exist
				if (setting.playlist.length > 0) {
					if (setting.playlist.length <= setting.start) {
						setting.start = 0;
						setPlayer(setting);
					} else {
						for (var i = setting.start; i < setting.playlist.length; i++) {
							if (setting.playlist[i]) {
								setting.start = i;
								setPlayer(setting);
								break;
							}
						}
					}
				}
			}
		}
		
		return false;
	};

	// JQuery JWPlayer Plugin
	$.fn.JWPlayer = function (options) {
		
		// Default values
		options = $.extend({
			"player": jwplayerPath,
			"control": "hide",
			"width": 640,
			"height": 480,
			"autostart": false,
			"volume": 100,
			"muted": false,
			"start": 0
		},
		options);
		
		if (this.length > 0) {
			
			var lastDate;
			
			this.each(function (index, domElement) {
				
				// UNIQUE ID
				// is an unique identifier of video, ready for use as a function name
				if (this.id) {
					var uniqId = this.id;
				} else {
					var curDate = new Date().getTime();
					var uniqId = (lastDate === curDate) ? (curDate + 1000) : curDate;
					lastDate = curDate;
				}

				// PLAYER SETTINGS
				player[uniqId] = {};
				player[uniqId].that = this; // safe uniqid
				player[uniqId].playerID = uniqId; // safe uniqid
				player[uniqId].player = options.player; // safe uniqid
				player[uniqId].control = options.control; // safe uniqid
				player[uniqId].autostart = options.autostart; // Start playlist when player is ready
				player[uniqId].volume = options.volume; // Start video index
				player[uniqId].muted = options.muted; // Start video index
				player[uniqId].start = options.start; // Start video index
				player[uniqId].width = options.width;
				player[uniqId].height = options.height;
				player[uniqId].playlist = []; // Playlist
				
				if (options.xml) { // xml
					$.get(options.xml, null, function (data, textStatus, XMLHttpRequest) {
						
						if(textStatus != "error") {
							if ($(data).find("config").length == 1) {
								$(data).find("config").each(function (i, dom) {
 
									if ($(this).attr("autostart") && $(this).attr("autostart") != "") {
										player[uniqId].autostart = $(this).attr("autostart");
									}
									
									if ($(this).attr("volume") && $(this).attr("volume") != "") {
										player[uniqId].volume = $(this).attr("volume");
									}
									
									if ($(this).attr("muted") && $(this).attr("muted") != "") {
										player[uniqId].muted = $(this).attr("muted");
									}
									
									if ($(this).attr("start") && $(this).attr("start") != "") {
										player[uniqId].start = $(this).attr("start");
									}
									
									if ($(this).attr("width") && $(this).attr("width") != "") {
										player[uniqId].width = $(this).attr("width");
									}
									
									if ($(this).attr("height") && $(this).attr("height") != "") {
										player[uniqId].height = $(this).attr("height");
									}
									
									if ($(this).find("item").length > 0) {
										$(this).find("item").each(function (i, dom) {
											if ($(this).find("file").length == 1) {
												
												var video = {};
												video.file = $(this).find("file").text();
												if ($(this).find("title").text() != "") video.title = $(this).find("title").text();
												if ($(this).find("description").text() != "") video.description = $(this).find("description").text();
												if ($(this).find("image").text() != "") video.image = $(this).find("image").text();
												if ($(this).find("streamer").text() != "") video.streamer = $(this).find("streamer").text();
												if ($(this).find("provider").text() != "") video.provider = $(this).find("provider").text();
												if ($(this).find("duration").text() != "") video.duration = $(this).find("duration").text();
												if ($(this).find("width").text() != "") video.width = $(this).find("width").text();
												if ($(this).find("height").text() != "") video.height = $(this).find("height").text();
												if ($(this).find("link").text() != "") video.link = $(this).find("link").text();

												// Is Youtube
												if (!video.image && video.file.match(/^http:\/\/(?:www\.)?youtube.com\/watch\?(?=.*v=\w+)(?:\S+)?$/i)) {
													video.image = "http://i.ytimg.com/vi/" + youtubeIDextract(video.file) + "/hqdefault.jpg";
												}
												
												// Is Vimeo
												if (video.file.match(/^http:\/\/(?:www\.)?vimeo.com\/([0-9]+)$/i)) {
													video.provider = options.player + "vimeo.swf";
												}
								
												player[uniqId].playlist.push(video);
											}
										});
										
										// No video to play
										if (player[uniqId].playlist.length == 0) return false;
													
										// Replace tag with a div containing player
										$(player[uniqId].that).replaceWith("<div id=\"JWPlayer_" + player[uniqId].playerID + "\"></div>");
										
										// Set player area
										player[uniqId].container = $("#JWPlayer_" + player[uniqId].playerID).addClass("flashContainer noPrint")
										.css({
											"width": player[uniqId].width + "px",
											"height": player[uniqId].height + "px"
										});

										// try to initialize player for first time
										setPlayer(player[uniqId]);
									}
								});
							}
						} else {
							var msg = "Can not perform the requested operation.\n";
							msg += "Error found: " + statusText[XMLHttpRequest.status];
							alert(msg);
						}
						
					}, "xml");
				} else { // Other
					if (options.video) {
						if (isString(options.video)) { // only url
							
							var video = {};
							video.file = options.video;
							
							// Is Youtube
							if (video.file.match(/^http:\/\/(?:www\.)?youtube.com\/watch\?(?=.*v=\w+)(?:\S+)?$/i)) {
								video.image = "http://i.ytimg.com/vi/" + youtubeIDextract(video.file) + "/hqdefault.jpg";
							}
							
							// Is Vimeo
							if (video.file.match(/^http:\/\/(?:www\.)?vimeo.com\/([0-9]+)$/i)) {
								video.provider = options.player + "vimeo.swf";
							}
			
							player[uniqId].playlist.push(video);
							
						} else if (isArray(options.video)) { // Array
							for (var i = 0; i < options.video.length; i++) {
								if (isString(options.video[i])) {
									
									var video = {};
									video.file = options.video[i];
									
									// Is Youtube
									if (video.file.match(/^http:\/\/(?:www\.)?youtube.com\/watch\?(?=.*v=\w+)(?:\S+)?$/i)) {
										video.image = "http://i.ytimg.com/vi/" + youtubeIDextract(video.file) + "/hqdefault.jpg";
									}
									
									// Is Vimeo
									if (video.file.match(/^http:\/\/(?:www\.)?vimeo.com\/([0-9]+)$/i)) {
										video.provider = options.player + "vimeo.swf";
									}
									
									player[uniqId].playlist.push(video);
									
								} else {
									
									if (options.video[i].file && options.video[i].file != "") {
										// Is Youtube
										if (!options.video[i].image && options.video[i].file.match(/^http:\/\/(?:www\.)?youtube.com\/watch\?(?=.*v=\w+)(?:\S+)?$/i)) {
											options.video[i].image = "http://i.ytimg.com/vi/" + youtubeIDextract(options.video[i].file) + "/hqdefault.jpg";
										}
										
										// Is Vimeo
										if (options.video[i].file.match(/^http:\/\/(?:www\.)?vimeo.com\/([0-9]+)$/i)) {
											options.video[i].provider = options.player + "vimeo.swf";
										}
										
										player[uniqId].playlist.push(options.video[i]);
									}
									
								}
							}
						} else{ // Object
							
							if (options.video.file && options.video.file != "") {
								var video = options.video;
								
								// Is Youtube
								if (!video.image && video.file.match(/^http:\/\/(?:www\.)?youtube.com\/watch\?(?=.*v=\w+)(?:\S+)?$/i)) {
									video.image = "http://i.ytimg.com/vi/" + youtubeIDextract(video.file) + "/hqdefault.jpg";
								}
								
								// Is Vimeo
								if (video.file.match(/^http:\/\/(?:www\.)?vimeo.com\/([0-9]+)$/i)) {
									video.provider = options.player + "vimeo.swf";
								}
				
								player[uniqId].playlist.push(video);
							}
							
						}
					} else {
						
						// video url in HREF attribute
						var href = $(this).attr("href");
						if (href && href != "") {
							
							var video = {};
							video.file = href;
							video.title = $(this).attr("title");
							video.image = $(this).attr("src");
							
							// Is Youtube
							if (!video.image && video.file.match(/^http:\/\/(?:www\.)?youtube.com\/watch\?(?=.*v=\w+)(?:\S+)?$/i)) {
								video.image = "http://i.ytimg.com/vi/" + youtubeIDextract(video.file) + "/hqdefault.jpg";
							}
							
							// Is Vimeo
							if (video.file.match(/^http:\/\/(?:www\.)?vimeo.com\/([0-9]+)$/i)) {
								video.provider = options.player + "vimeo.swf";
							}
			
							player[uniqId].playlist.push(video);
						}
						
						// video urls in REL attribute
						var rel = $(this).attr("rel");
						if (rel && rel != "") {
							var urls = rel.split(",");
							if (urls && urls.length > 0) {
								for (var i = 0; i < urls.length; i++) {
									var video = {};
									video.file = urls[i];
									
									// Is Youtube
									if (!video.image && video.file.match(/^http:\/\/(?:www\.)?youtube.com\/watch\?(?=.*v=\w+)(?:\S+)?$/i)) {
										video.image = "http://i.ytimg.com/vi/" + youtubeIDextract(video.file) + "/hqdefault.jpg";
									}
									
									// Is Vimeo
									if (video.file.match(/^http:\/\/(?:www\.)?vimeo.com\/([0-9]+)$/i)) {
										video.provider = options.player + "vimeo.swf";
									}
									
									player[uniqId].playlist.push(video);
								}
							}
						}
						
					}
					
					// No video to play
					if (player[uniqId].playlist.length == 0) return false;
								
					// Replace tag with a div containing player
					$(this).replaceWith("<div id=\"JWPlayer_" + player[uniqId].playerID + "\"></div>");
					
					// Set player area
					player[uniqId].container = $("#JWPlayer_" + player[uniqId].playerID).addClass("flashContainer noPrint")
					.css({
						"width": player[uniqId].width + "px",
						"height": player[uniqId].height + "px"
					});
					
					// try to initialize player for first time
					setPlayer(player[uniqId]);
				}
				
				return false;
			});
		}
		
		return false;
	};
})(jQuery);
