(function($) {
	
	$.extend($.fn, {	
		youtube: function(param) {
			
			if (!param) var param = {};
						
			//Check params
			if (param.language == undefined || param.language == '') raiseError("Please specify language to use.");			
			param.ref = $(this);
			
			//Start
			$.ajax({
				type: "GET",
				url: "../resources/"+param.language+"/videos.xml",
				dataType: ($.browser.msie) ? "html" : "xml",
				success: function(xml) 
				{
					//Parsing xml
					xml = parseXml(xml);
					parseXmlFile(xml);														
				},
				error : function() { 
					document.getElementById(param.ref.attr("id")).innerHTML = "<p>Dati attualmente non disponibili</p>";
				}				
			});
			
			function raiseError(errorMsg) 
			{
				alert("WARNING!\n"+errorMsg);
				return false;
			}					
			
			function parseXmlFile(xml)
			{				
				var htmlBuilt="";
				
				//Parsing xml
				$(xml).find('category').each(function()
				{
					var galleryId = $(this).attr('id');
					htmlBuilt += "<div class='yt_gallery'><strong>"+galleryId+"</strong></div>\n<div class='ytVideoContainer'>\n";
					
					$(this).find('video').each(function()
					{
						htmlBuilt+='<div class=\'ytOuterVideoContainer\' style=\'\'>\n';
						var videoUrl = $(this).attr('url');
						var videoId = $(this).attr('id');					
						var htmlBuiltD='';
						
						$.ajax({
							type: "GET",
							async: false,
							url: "../proxy.ashx",
							data: "yt="+videoId,
							dataType: ($.browser.msie) ? "html" : "xml",
							success: function(xml) 
							{
								//Adding thumbnail								
								xml = parseXml(xml);
								htmlBuiltD = "";
								htmlBuiltD += "\t<a href='"+videoUrl+"' rel='prettyPhoto' onclick='pageTracker._trackEvent(\"evento - youtube\",\"open\",\""+videoId+"\");'><img src='http://img.youtube.com/vi/"+videoId+"/2.jpg'></a>\n";
								htmlBuiltD += "\t<div class='ytVideoInnerContainer'>\n"
											 +"\t\t<div><strong><a href='"+videoUrl+"' onclick='pageTracker._trackEvent(\"evento - youtube\",\"open\",\""+videoId+"\");' rel='prettyPhoto'>"+$(xml).find('title:eq(0)').text()+"</a></strong></div>\n"
											 +"\t\t<div>"+$(xml).find('content').text()+"</div>\n"
											 
							},
							error : function(request,error) { 
								document.getElementById(param.ref.attr("id")).innerHTML = "<p>Dati attualmente non disponibili</p>";
							}										
						});	
						htmlBuilt += htmlBuiltD+"\t</div>\n</div>\n";
					});					
					htmlBuilt += "</div>\n";
				});			
				
				//Assign html to referenced object using a workaround for that stupid IE!		
				document.getElementById(param.ref.attr("id")).innerHTML = htmlBuilt;
				
				//prettyPhoto
				$("a[rel^='prettyPhoto']").prettyPhoto({theme:'dark_square'});				
			}
			
			//IE workaround to parseXML
			function parseXml(xml)
			{				
				if (jQuery.browser.msie)
				{
					var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
					xmlDoc.loadXML(xml);
					xml = xmlDoc;
				}
				return xml;
			}				
		}
	});		
})(jQuery);