(function(){
	if (!window.console) {
		window.console = {};
	}
	if (typeof(window.console.log)!='function') {
		window.console.log = function(){}
	}
})();


var isIpad = (navigator.userAgent.match(/iPad/i));
var isIphone = (navigator.userAgent.match(/iPhone/i));
var isAndroid = (navigator.userAgent.match(/android/i));

var count = 0;
/*** Modifica per Barra Player Firefox 3.6.6 ***/
var windowless = 'true';
if(navigator.userAgent.indexOf("Firefox/3.6") > 0) {
	windowless = 'false';
}

if (typeof(refreshByJS) == 'undefined') {
	var refreshByJS = true;
}

function rewriteHREF() {
	$(".listaVideoLista a, .listaVideo a").each(function(){
		$(this).attr("href","http://www.raisport.rai.it"+$(this).attr("href").replace(/.html/g,'-raisport.html'));
	});
};

function playMe (urlHtml){
	clearInterval(refreshPage);
	$('.boxArtFoto').hide();
	$('.boxArtVideo').show();
	var urlXml = urlHtml.replace('.html','.xml');

	$("#Video").css("width","610px");
	$("#Video").css("height","343px"); // 16:9
	/*
	width: 610px;
	height: 343px; // 4:3
	height: 495px; // 16:9
	*/

	UniPlayer.createPlayer({
			configUri: '/dl/objects/silverlight/uniplayer/Config.smooth.xml',
			cmsUri: urlXml
		}, $('#silverlightControlHost'));
	setNielsen(location.href + "?xml=" + urlXml);
	$("#silverlightControlHost").css("width","100%");
	$("#silverlightControlHost").css("height","100%");
	return false;
};

function playMeNow (urlHtml){
	clearInterval(refreshPage);
	var urlXml = urlHtml.replace('.html','.xml');
	if ($('#silverlightControlHost').length == 0) {
		$('#Video').append('<div id="silverlightControlHost" />');
	}

	$("#Video").css("width","610px");
	$("#Video").css("height","343px"); // 16:9
	/*
	width: 610px;
	height: 343px; // 4:3
	height: 495px; // 16:9
	*/


	UniPlayer.createPlayer({
			configUri: '/dl/objects/silverlight/uniplayer/Config.smooth.xml',
			cmsUri: urlXml
		}, $('#silverlightControlHost'));
	setNielsen(location.href + "?xml=" + urlXml);
	$("#silverlightControlHost").css("width","100%");
	$("#silverlightControlHost").css("height","100%");
};

function playFotoMe (urlHtml){
	clearInterval(refreshPage);
	$('.boxArtFoto').hide();
	$('.boxArtVideo').show();
	setTimeout(function(){
		var urlXml = urlHtml.replace('.html','-xml.xml');
	Silverlight.createObject(
		// "/dl/portale/silverlight/PhotoGallery/PhotoGallery.xap",
		"/dl/objects/silverlight/raitv/PhotoGallery.xap",
		$('#Video')[0],
		'silverlightControl',
		{
			width: 320,
			height: 260,
			inplaceInstallPrompt: false,
			background: '#0a0a0a',
			windowless: 'true',
			framerate: '25',
			version: '3.0'
		},
		{
			onError: function(){}
		},
		'slideShowTimer=5, galleryXmlPath='+urlXml+', statsFunct=setNielsenLoc, thumbsVisible=false',
		{
		}
	);
		$("#Video").css("width","320px");
		$("#Video").css("height","260px");
		setNielsen(location.href+"?xml="+urlXml);
	},500);
	$('.boxArtVideo>*').show();
};

function playFotoMeNow (urlHtml){
	clearInterval(refreshPage);
	var urlXml = urlHtml.replace('.html','-xml.xml');
	//Silverlight.InstallAndCreateSilverlightPhotogallery(urlXml,"Video");
	$("#Video").css("width","320px");
	$("#Video").css("height","260px");
	Silverlight.createObject(
		// "/dl/portale/silverlight/PhotoGallery/PhotoGallery.xap",
		"/dl/objects/silverlight/raitv/PhotoGallery.xap",
		$('#Video')[0],
		'silverlightControl',
		{
			width: 320,
			height: 260,
			inplaceInstallPrompt: false,
			background: '#0a0a0a',
			windowless: 'true',
			framerate: '25',
			version: '3.0'
		},
		{
			onError: function(){}
		},
		'slideShowTimer=5, galleryXmlPath='+urlXml+', statsFunct=setNielsenLoc, thumbsVisible=false',
		{
		}
	);
	setNielsen(location.href+"?xml="+urlXml);
};

function drawObjSL (xmlpath){
	var userAgent = navigator.userAgent.toLowerCase();
	var safari  = /webkit/.test( userAgent );
	var opera   = /opera/.test( userAgent );

	var html = '<div id=\"silverlightControlHost\"><object height=\"260\" width=\"320\" type=\"application/x-silverlight-2\" data=\"data:application/x-silverlight-2,\" id=\"plugin\" name=\"plugin\"><param value=\"/dl/portale/silverlight/Vod/Lettore_Rai_VOD.xap\" name=\"source\"><param value=\"onSilverlightError\" name=\"onerror\"><param value=\"#0a0a0a\" name=\"background\">';
	if (opera || safari) {
		html += '<param value=\"false\" name=\"windowless\">';
		if (!$('#Video').data('webkitMenuHoverHandled')) {
			$('#Video').data('webkitMenuHoverHandled', true);
			$('#Video').data('menuHoverCount', 0);
			// seleziono solo gli item che aprono un sottomenu
			$("#menuTendina>li:has(ul)").each(function (idx) {
				$(this).hover(function(){
					var n = $('#Video').data('menuHoverCount');
					n++;
					$('#Video').data('menuHoverCount', n);
					if (n>0) {
						$('#Video').css('visibility', 'hidden');
					}
				},function(){
					var n = $('#Video').data('menuHoverCount');
					n--;
					if (n<0) {n=0;}
					$('#Video').data('menuHoverCount', n);
					if (n<=0) {
						$('#Video').css('visibility', 'visible');
					}
				});
			});
		}
	} else {
		html += '<param value=\"true\" name=\"windowless\">';
	}
	html += '<param value=\"2.0.31005.0\" name=\"minRuntimeVersion\"><param value=\"true\" name=\"autoUpgrade\"><param value=\"true\" name=\"enableHtmlAccess\"><param value=\"xmlPath='+xmlpath+',auto=true\" name=\"initparams\"><a>Se vuoi visualizzare il video installa Microsoft Silverlight</a><br /><a class=\"c2\" href=\"http://go.microsoft.com/fwlink/?LinkID=124807\"><img class=\"c1\" alt=\"Installa Microsoft Silverlight\" src=\"http://go.microsoft.com/fwlink/?LinkId=108181\"></a></object></div>';
	$("#Video").html(html);
};

function startTime() {
	var today = serverDate.getServerTime();
	var h = today.getHours();
	var m = today.getMinutes();
	var s = today.getSeconds();
	// add a zero in front of numbers<10
	m = checkTime(m);
	s = checkTime(s);
	$('#oraTappa').html(h+":"+m+":"+s).show();
	t = setTimeout('startTime()',500);
};

function checkTime(i){
	if (i<10) {i="0" + i;}
	return i;
};

/* ========== CalendarioByCategoria ========== */
/*
js necessari:
<script type="text/javascript" src="/dl/js/getServerTime.html">;</script>
<script type="text/javascript" src="/dl/js/jquery/plugin/ui-1.7.2/ui.core.js">;</script>
<script type="text/javascript" src="/dl/js/jquery/plugin/ui-1.7.2/ui.datepicker.mod.js">;</script>
<script type="text/javascript" src="/dl/js/jquery/plugin/ui-1.7.2/i18n/ui.datepicker-it.js">;</script>

html utilizzato:
<div class="box300 boxCalendar" id="BoxCalendario">
	<div class="top">
		<span>Filtra video per</span>
	</div>
	<div class="mid">
		<div class="datepicker"> </div>

	</div>
	<div class="bot">
	</div>
</div>

esempio di inizializzazione:
$(function() {
	new CalendarioByCategoria({
		id: 'BoxCalendario',
		startDate:   new Date(2010,5,20),
		endDate:     new Date(2010,6,11),
		defaultDate: new Date(2010,6,1),
		video: {
			"Notti Mondiali":       "ContentSet-2bcae8d1-07f3-475b-9164-8f22e5b76053",
			"Dribbling Mondiale":   "ContentSet-710d15e8-a5f1-4b45-8f93-3444573539f9",
			"Mondiale Rai Sera":    "ContentSet-93ceaab5-598e-4526-84eb-7c4af0e98065",
			"Mondiale Rai Sprint":  "ContentSet-30a70116-90b9-4475-b3a1-55f9c7e1f924"
		}
	});
});


possibili sviluppi:
	* aggiungere un suffisso da usare nel caricamento dell'xml (xmlSuffix)
	* aggiungere un suffisso da usare nei link ai video (linkSuffix)
	* aggiungere una callback da richiamare al click sui link (linkClickFunction)
*/

var CalendarioByCategoria = function(config) {
	var self = this;
	self.config = $.extend({},
		{
			id: 'BoxCalendario',
			startDate: new Date(2010,0,1),
			defaultDate: getServerTime(),
			xmlSuffix: '-V-0.xml',
			linkSuffix: '-raisport',
			linkTarget:'_top',
			linkClickFunction: null,
			video: {}
		}, config);
	if (self.config.defaultDate && self.config.defaultDate.split) {
		var s = self.config.defaultDate.split('/');
		self.config.defaultDate = new Date(parseInt(s[2], 10), parseInt(s[1], 10)-1, parseInt(s[0], 10));
	}
	if (self.config.startDate && self.config.startDate.split) {
		var s = self.config.startDate.split('/');
		self.config.startDate = new Date(parseInt(s[2], 10), parseInt(s[1], 10)-1, parseInt(s[0], 10));
	}
	if (self.config.endDate && self.config.endDate.split) {
		var s = self.config.endDate.split('/');
		self.config.endDate = new Date(parseInt(s[2], 10), parseInt(s[1], 10)-1, parseInt(s[0], 10));
	}

	self.setNielsen = function() {
		var url = ''+document.location;
		var c = '?';
		if (/\?/.test(url)) {
			c = '&';
		}
		if (window.categoryNielsen) {
			url += c+window.categoryNielsen;
			c = '&';
		}
		url += c+'calendar.filter='+self.currentFilter;
		url += '&calendar.date='+self.currentDate;
		try {
			window.setNielsen(url);
		} catch (e) {}
	};
	self.mergeData = function(xmlJson) {
		// read xmlJson
		// read @name
		if(!xmlJson) return;

		var sets = [];
		if (typeof(xmlJson['set']) != 'undefined') {
			sets = [xmlJson['set']];
		} else if (typeof(xmlJson['sets']) != 'undefined') {
			sets = xmlJson['sets']['set'];
		} else if (typeof(xmlJson['block']) != 'undefined') {
			sets = xmlJson['block']['sets']['set'];
		}
		if (!sets.length) {
			sets = [sets];
		}

		for (var k = 0; k<sets.length; k++) {
			var set = sets[k];

			var name = set['@attributes']['name'];
			if (!self.videoDisplay[name]) {
				self.videoDisplay[name] = {};
			}
			// render video in self.videoDisplay[@name]...
			if (set['items']['item']) {
				if (!set['items']['item'].length) {
					set['items']['item'] = [set['items']['item']];
				}
				if (!self.videoDisplay[name].finali) {
					self.videoDisplay[name].finali = {};
				}
				if (!self.videoDisplay[name].validDates) {
					self.videoDisplay[name].validDates = [];
				}
				if (!self.videoDisplay[name].validDateClasses) {
					self.videoDisplay[name].validDateClasses = [];
				}
				for (var i = 0; i<set['items']['item'].length; i++) {
					var item = set['items']['item'][i];
					var itemDate = item['@attributes']['createDate'];
					if (item['units']['dateUnit']) {
						if (!item['units']['dateUnit'].length) {
							item['units']['dateUnit'] = [item['units']['dateUnit']];
						}
						for (var j = 0; j<item['units']['dateUnit'].length; j++) {
							if (item['units']['dateUnit'][j]['@attributes']['type'] == 'Data Pubblicazione') {
								itemDate = item['units']['dateUnit'][j]['date'];
							}
						}
					}
					var finalClass = '';
					for (var j = 0; j<item['categories']['category'].length; j++) {
						//console.log("Categoria = " + item['categories']['category'][j]['@attributes']['name']);
						if (item['categories']['category'][j]['@attributes']['name'] == 'Finale') {
							finalClass = item['categories']['category'][j]['@attributes']['name'];
						}
					}
					var dateClass = 'date_'+itemDate.replace(/(\d{2})[\/-](\d{2})[\/-](\d{4})/, "$3$2$1");
					// var myDate = itemDate.split(/[\/-]/);
					// myDate = new Date(parseInt(myDate[2], 10), parseInt(myDate[1], 10)-1, parseInt(myDate[0], 10));
					var itemDate = itemDate.replace(/(\d{2})[\/-](\d{2})[\/-](\d{4})/, "$3-$2-$1");
					if (finalClass != '') {
						self.videoDisplay[name].finali[itemDate] = true;
					}
					self.videoDisplay[name].validDates.push(itemDate);
					self.videoDisplay[name].validDateClasses.push(dateClass);
					var li = $('<li class="'+dateClass+'"><a class="'+finalClass+'" href="/dl/RaiTV/programmi/media/'+item['@attributes']['uniquename']+self.config.linkSuffix+'.html" target="'+self.config.linkTarget+'" >'+item['@attributes']['name']+'</a></li>');
					li.data('itemData', item);
					li.hide();
					if (self.config.linkClickFunction && typeof(self.config.linkClickFunction) == 'function') {
						li.find('a').click(self.config.linkClickFunction);
					}
					self.videoDisplay[name].ul.append(li);
				}
			}
		}
		// (re)apply filters
		self.updateSettings();
		self.createDatePicker();
		self.applyFilters();
	};
	self.updateSettings = function() {
		var reconf = false;
		for (var name in self.videoDisplay) {
			if (self.videoDisplay[name].validDates) {
				for (var j = 0; j < self.videoDisplay[name].validDates.length; j++) {
					var d = self.videoDisplay[name].validDates[j];
					//console.log(name + " -- " + self.videoDisplay[name].finali[d] + " -- " + d);
					if (self.videoDisplay[name].finali[d]) {
						if (!self.finali[d]) {
							self.finali[d] = {};
						}
						self.finali[d][name] = true;
					}

					if (!self.validDates[d]) {
						self.validDates[d] = {};
					}
					self.validDates[d][name] = true;

					d = d.split('-');
					d = new Date(parseInt(d[0], 10), parseInt(d[1], 10)-1, parseInt(d[2], 10));

					if (self.config.startDate && self.config.startDate.getTime()>d.getTime()) {
						self.config.startDate = d;
						reconf = true;
					}
					if (self.config.endDate && self.config.endDate.getTime()<d.getTime()) {
						self.config.endDate = d;
						reconf = true;
					}
				}
			}
		}
		// non va... :/
		if (reconf) {
			$.datepicker._changeDatepicker(self.datepicker, {
				minDate: self.config.startDate,
				maxDate: self.config.endDate
			});
		}
	};
	self.applyFilters = function() {
		for (var i in self.videoDisplay) {
			// self.currentDate
			// self.currentFilter
			if (self.currentFilter == '' || self.currentFilter == i) {
				var c = self.currentDate;
				if (c != '') {
					self.videoDisplay[i].ul.find('li').hide();
					c = 'date_'+c.replace(/[\/-]/g,'');
					self.videoDisplay[i].ul.find('li.'+c).show();
				} else {
					self.videoDisplay[i].ul.find('li').show();
				}
			} else {
				self.videoDisplay[i].ul.find('li').hide();
			}

			if (self.videoDisplay[i].ul.find('li:visible').length > 0) {
				self.videoDisplay[i].tit.show();
			} else {
				self.videoDisplay[i].tit.hide();
			}
		}
		/* non qui, se no al caricamento sparo mille chiamate
		self.setNielsen();
		*/
	};
	self.afterDatePicker = function() {
		var year = self.yearChoice;
		var month = self.monthChoice;

		var removeDayLink = function(td) {
			if ($(td).find('>a').length > 0) {
				var d = $(td).find('>a,>span').text();
				var active = $(td).find('>a').is('.ui-state-active');
				$(td).html('<span class="ui-state-default'+(active?' ui-state-active':'')+'">'+d+'</span>');
				$(td).addClass('ui-datepicker-unselectable').addClass('ui-state-disabled');
			}
		};

		if (self.currentFilter != '' && self.videoDisplay[self.currentFilter].validDates) {
			self.datepicker.find(".ui-datepicker-calendar td:not(.ui-datepicker-unselectable)").each(function(){
				var day = parseInt($(this).find('>a,>span').text(), 10);
				day = (day <10?'0':'')+""+day;
				var thisDayString = year+'-'+(month<10?'0':'')+month+'-'+day;
				var isValid = false;
				for (var i = 0; i<self.videoDisplay[self.currentFilter].validDates.length; i++) {
					if (self.videoDisplay[self.currentFilter].validDates[i] == thisDayString) {
						isValid = true;
					}
				}
				if (!isValid && $(this).find('>a').length > 0) {
					// var d = $(td).find('>a,>span').text();
					// $(td).html('<span class="ui-state-default">'+d+'</span>');
					// $(td).addClass('ui-datepicker-unselectable').addClass('ui-state-disabled');
					removeDayLink($(this));
				}
			});
		}
		self.datepicker.find(".ui-datepicker-calendar td>a").attr("class","ui-state-default");
		self.datepicker.find(".ui-datepicker-calendar td>span").each(function(){
			var day = parseInt($(this).text(), 10);
			day = (day <10?'0':'')+""+day;
			var thisDayString = year+'-'+(month<10?'0':'')+month+'-'+day;
			$(this).parent().removeAttr("onclick");
			if (thisDayString == self.currentDate) {
				$(this).addClass("ui-state-active").addClass("ui-state-highlight");
			} else {
				$(this).removeClass("ui-state-highlight");
			}
		});
		self.datepicker.find(".ui-datepicker-calendar td>a").each(function(){
			var day = parseInt($(this).text(), 10);
			day = (day <10?'0':'')+""+day;
			var thisDayString = year+'-'+(month<10?'0':'')+month+'-'+day;
			$(this).parent().removeAttr("onclick");
			$(this).attr("href","#");
			//alert(self.dataEvento.D+""+self.dataEvento.M+""+self.dataEvento.Y + " == " + day+""+(month <10?'0':'')+""+month+""+year);

			if (self.validDates[thisDayString] && (self.currentFilter == '' || self.validDates[thisDayString][self.currentFilter])) {
				// $(this).addClass("ui-state-active");
			} else {
				removeDayLink($(this).parent('td'));
			}
			if (thisDayString == self.currentDate) {
				$(this).addClass("ui-state-active").addClass("ui-state-highlight");
			} else {
				$(this).removeClass("ui-state-highlight");
			}

			if (self.finali[thisDayString] && (self.currentFilter == '' || self.finali[thisDayString][self.currentFilter])) {
				$(this).addClass("Finale");
			}

			// if(self.dataEvento.D+""+self.dataEvento.M+""+self.dataEvento.Y == day+""+(month <10?'0':'')+""+month+""+year) {
			// 	$(this).attr("class","ui-state-default ui-state-active");
			// } else {
			// 	$(this).attr("class","ui-state-default ui-state-highlight ui-state-active");
			// }
			$(this).click(function(){
				self.datepicker.find(".ui-datepicker-calendar td>*").removeClass('ui-state-highlight').removeClass('ui-state-active');
				$(this).addClass('ui-state-highlight').addClass('ui-state-active');
				var day = parseInt($(this).text(), 10);
				// day = (day <10?'0':'')+""+day;
				self.currentDate = year+"-"+(month <10?'0':'')+""+month+"-"+(day <10?'0':'')+""+day;
				self.config.defaultDate = new Date(year, month-1, day);
				self.applyFilters();
				self.setNielsen();
				return false;
			});
		});
	};

	self.createDatePicker = function() {
		self.datepicker.datepicker('destroy');
		self.datepicker.datepicker(
			{
				dateFormat: 'dd MM, yyyy',
				defaultDate: self.config.defaultDate,
				minDate: self.config.startDate,
				maxDate: self.config.endDate,
				//monthNames: ['gennaio','febbraio','marzo','aprile','maggio','giugno','luglio','agosto','settembre','ottobre','novembre','dicembre'],
				onFinishHtmlDatePicker: function(year, month, inst) {
					self.yearChoice = year;
					self.monthChoice = month;
					self.afterDatePicker();
				}
			},
			$.datepicker.regional['it']
		);
	};

	self.init = function() {
		self.container = $('#'+self.config.id);
		self.container.data('CalendarioByCategoria', self);

		self.validDates = {};
		self.finali = {};

		self.datepicker = self.container.find('.datepicker');

		self.currentFilter = '';
		self.currentDate = '';
		var d = self.config.defaultDate;
		d = [d.getFullYear(), d.getMonth()+1, d.getDate()];
		d[2] = (d[2]<10?'0':'')+d[2];
		d[1] = (d[1]<10?'0':'')+d[1];
		self.currentDate = d[0]+'-'+d[1]+'-'+d[2];

		self.filterSelector = $('<ul class="selector"></ul>');
		var li = $('<li class="current"><a href="#setId=">Tutti</a></li>');
		li.data('setId', '');
		li.data('setName', 'Tutti');
		self.filterSelector.append(li);
		li.click(function() {
			self.currentFilter = '';
			self.filterSelector.find('li').removeClass('current');
			$(this).addClass('current');
			self.createDatePicker();
			self.applyFilters();
			return false;
		});
		self.videoDisplay = {};
		var mid = self.container.find('.mid');
		for (var i in self.config.video) {
			li = $('<li><a href="#setId='+self.config.video[i]+'">'+i+'</a></li>');
			li.data('setId', self.config.video[i]);
			li.data('setName', i);
			self.filterSelector.append(li);
			var tit = $('<h3 class="catName">'+i+'</h3>').appendTo(mid);
			var ul = $('<ul class="catVideo"></ul>').appendTo(mid);
			self.videoDisplay[i] = {
				tit: tit,
				ul: ul
			};
			li.click(function() {
				self.currentFilter = $(this).data('setName');
				self.filterSelector.find('li').removeClass('current');
				$(this).addClass('current');
				self.createDatePicker();
				self.applyFilters();
				return false;
			});

			$.ajaxSetup({jsonp: 'jsonp'});
			$.getJSON("http://service.rai.it/xml2json.php?jsonp=?&xmlurl=http://www.rai.tv/dl/RaiTV/programmi/liste/"+self.config.video[i]+self.config.xmlSuffix, self.mergeData);
		}
		self.filterSelector.hover(function(){$(this).addClass('hover');}, function(){$(this).removeClass('hover');});
		self.container.find('>.top').append(self.filterSelector);


		self.createDatePicker();
	};

	self.init();
};
/* ======== End CalendarioByCategoria ======== */

/******************PREVIEW**************************/
function onMouseOverPreview(){
	$("ul.Camere>li>img").mouseover(function(){
		if($(this).parent("LI").hasClass('selected') ||
			$(this).siblings(".preview").text() == "" ||
			$(".previewSL").length > 0
			){
			// return false;
		} else {
			console.log("onMouseOverPreview = ok");
			$(this).before("<div class=\"previewSL\" style=\"width:69px;height:52px\"></div>");
			$(this).hide();
			var previewURL = $(this).siblings(".preview").text();
			var imgUri = $(this).attr('src');
			if (imgUri != undefined && imgUri != null && imgUri != '' && !/http:\/\//i.test(imgUri)) {
				imgUri = 'http://www.rai.tv/'+imgUri;
			}
			if (imgUri == undefined || imgUri == null || imgUri == '') {
				imgUri = '';
			}
			console.log("creo Player");

			var element = $(this).parent("LI");
			var funcName = (function() {
				var t = new Date();
				t = t.getTime();
				var r = Math.floor(Math.random()*997);
				var baseName = 'bf';
				var fname = baseName+t+r;
				while (typeof(window[fname]) != 'undefined') {
					r = Math.floor(Math.random()*997);;
					fname = baseName+''+t+''+r;
				}
				return fname;
			})();
			var func = (function(el) {
				return function() {
					onClickPreview(el);
				};
			})(element);
			window[funcName] = func;
			var funcName2 = (function() {
				var t = new Date();
				t = t.getTime();
				var r = Math.floor(Math.random()*997);
				var baseName = 'bf';
				var fname = baseName+t+r;
				while (typeof(window[fname]) != 'undefined') {
					r = Math.floor(Math.random()*997);;
					fname = baseName+''+t+''+r;
				}
				return fname;
			})();
			var func2 = (function(el) {
				return function() {
					onMouseOutPreview(el);
				};
			})(element);
			window[funcName2] = func2;
			$('.previewSL', $(this).parent()).mouseout(func2);

			// sfrutto UniPlayer.getInitParams per ottenere la stringa degli initparams a partire dal solito object che passiamo a UniPlayer.play
			var initParams = UniPlayer.getInitParams({
				configUri: "/dl/objects/silverlight/uniplayer/Config.preview.xml", // config per la preview: minimale, non mostra spot, hl, commandbar...
				mediaUri: previewURL, // l'url del flusso di cui fare l'anteprima
				advertisingUri: "", // nessuna pubblicita'
				overrideConfig: {
					CommandBar: {isVisible: false},
					Startup: {autoPlay: true}, // visto che lo istanziamo al mouseover puo' andare in autoplay. se decidiamo di istanziarli tutti all'inizio, mettiamo false
					Part: {18: {sourceUri: imgUri}}, // sarebbe per il tappo, ma non l'ho messo nell'xml (da problemi)
					Core: {
						maxBandwidth: "500000", // limite di banda: 500k
						previewEndCallbackFunction: funcName2, // nome della callback al mouseout
						contentClickCallbackFunction: funcName // nome della callback al click
					}
				}
			});
			// creo l'object all'interno di $('.previewSL') (nota: vuole il nodo dom, quindi passo $('.previewSL')[0] )
			Silverlight.createObjectEx(
			{
				source: UniPlayer.xapPath,
				parentElement: $('.previewSL', $(this).parent())[0],
				id: 'previewSLObjects',
				properties: {
					width: '100%',
					height: '100%',
					inplaceInstallPrompt: false,
					background: 'transparent',
					windowless: windowless,
					framerate: '25',
					version: '3.0'
				},
				events: {},
				initParams: initParams,
				context: {}
			});
		}
	});
};

function onMouseOutPreview(element){
	// return false;

	console.log("onMouseOutPreview = ok");
	if (element == undefined) {
		element = $(".previewSL").parent("LI");
	}
	$(".previewSL", element).next().show();
	$(".previewSL", element).remove();
};

function onClickPreview(element){
	console.log("onClickPreview = ok");
	if (element == undefined) {
		element = $(".previewSL").parent("LI");
	}


	var full = element.find(".full").text();
	var varUri = element.find(".hlpath").text();
	var varAdvertisingUri = element.find(".AdvertisingUri").text();
	var type = "wmv";
	if(element.find(".full").hasClass("smooth")){
		type = "smooth";
	}

	console.log("type = " + type);
	console.log("ulrvideo =" + full);
	console.log("hlpath =" + varUri);
	console.log("banner = " + varAdvertisingUri);

	// var varConfigUri = "/dl/objects/silverlight/uniplayer/Config.standard.xml";
	// ora il player riconosce decentemente il flusso smooth o wmv :)
	var varConfigUri = "/dl/objects/silverlight/uniplayer/Config.smooth.xml";
	var varInitiallyVisible = 'false';
	var varRefreshInterval = '0';
	var varIsHighlightsButtonVisible = 'false';

	if(	type == "smooth") {
		varConfigUri = "/dl/objects/silverlight/uniplayer/Config.smooth.xml";
		if(varUri != "") {
			varInitiallyVisible = 'true';
			varRefreshInterval = '60';
			varIsHighlightsButtonVisible = 'true';
		}
	}

	resultPlayer = UniPlayer.play({
		configUri: varConfigUri,
		mediaUri: full,
		advertisingUri: varAdvertisingUri,
		overrideConfig: {
			Part: {
					10: {uri: varUri, initiallyVisible: varInitiallyVisible, refreshInterval: varRefreshInterval}
					},
			CommandBar: {isHighlightsButtonVisible: varIsHighlightsButtonVisible, highlightsButtonText: 'Cronaca'},
			Core: {maxBandwidth: ""}
		}
	},'#Player');

	if(resultPlayer == 1) {
		element.addClass("selected").siblings().removeClass("selected");
		var index =  $("ul.Camere>li").index($("ul.Camere>li.selected"));
		var telecamera = "principale";
		if(index > 0) {
			telecamera = "soggettiva_"+index;
		}
		setNielsen(location.href+"?Daegu 2011^diretta^"+telecamera+"^");
		onMouseOutPreview();
	}

	return false;
};
/******************FINE PREVIEW**************************/


if (typeof(refreshByJS) == 'undefined') {
	var refreshByJS = true;
}
functionsLoadBanner300x100 = Banners.reloadAll;

var refreshPage = null;
var resultPlayer = 0;

$(function(){
	$(".altreCamere>h3>span").html("Altri canali");

	if(refreshByJS) {
		refresh_ce = window.location.href.replace('?refresh_ce', '')+'?refresh_ce';
		refreshPage = setInterval("window.location.replace(refresh_ce)", 300*1000);
	}
	/*escape amp;*/
	$('a').each(function(){var a = $(this).attr('href'); if (!!a) {a = a.replace(/&amp;/g, '&');$(this).attr('href', a);}});

	if ($('.boxLargo').length>0 && $('.superBanner').length>0) {
		if ($('.superBanner>*').filter(function(){return !$(this).is('script');}).length==0) {
			$('.superBanner').hide();
			$('.boxLargo').addClass('piuLargo');
		}
	}

/*	$(".Altro li a").click(function() {
		index = $(".Altro li a").index(this);
		$('boxArtVideo .Altro li a:eq('+index+')').addClass('selected');
		$(this).parent().siblings().children('A').removeClass('selected');
		return false;
	});
*/

	$(".boxArtFoto .Altro li a").click(function() {
		index = $(".boxArtFoto .Altro li a").index(this);
		$('.boxArtVideo .Altro li a:eq('+index+')').addClass('selected');
		$(this).parent().siblings().children('a').removeClass('selected');
		//return false;
	});

	$(".boxArtVideo .Altro li a").click(function() {
		$(this).addClass('selected');
		$(this).parent().siblings().children('a').removeClass('selected');
		//return false;
	});

	$("UL.Media .btnAudio").click(function(){
		openGenericPopUp($(this).attr("href"),"Radio RaiSport",390,515);
		return false;
	});

/************* BOX MULTIMEDIA ****************************/
		$('#pane').jScrollPane({animateTo:true,showArrows:false, scrollbarWidth:16 });

		$(".oraInizio").each(function(){
			$(this).prev().children('.ora').html(formatDate(new Date(getDateFromFormat(jQuery.trim($(this).text()),"dd-MM-yyyy HH:mm")),"dd MMM HH:mm"));
		});

		var trovato = false;
		var now = serverDate.getServerTime();
		//var now = new Date();
		var oraClient = (now.getDate()<10?'0':'')+now.getDate()+"-"+((now.getMonth()+1)<10?'0':'')+(now.getMonth()+1)+"-"+now.getFullYear() + " " +(now.getHours()<10?'0':'')+now.getHours()+":"+(now.getMinutes()<10?'0':'')+now.getMinutes();
		var heightScroll = 0;
		var lastItem = 0;
		$(".elencoPalinsesto>ul>li").each(function(i) {
			var oraInizio = jQuery.trim($(this).children(".oraInizio").text());
			var oraFine = jQuery.trim($(this).children(".oraFine").text());
			if(oraClient >= oraInizio && oraClient < oraFine) {
				$(this).addClass("onAir");
				var editore = jQuery.trim($(this).children(".editore").text());
				var link =' href="http://www.raisport.rai.it/dl/raisport/multimedia/diretta.html?cid='+$(this).attr('id')+'" target="_blank"';
				$(this).html('<a '+link+'>'+$(this).html()+'</a>');
			}
		});
/************* BOX MULTIMEDIA FINE ****************************/

/************* PLAYER SMOOTH*************/
	if($(".altreCamere").length > 0) {
		$('#paneOrizaltreDirette').jScrollHorizontalPane({scrollbarHeight:16, scrollbarMargin:0});
			// onMouseOverPreview();
			$("ul.Camere>li").click(function(){
				onClickPreview($(this));
				return false;
			});
			$("ul.Camere>li>span:eq(0)").click(function(){
				onClickPreview($(this).parent("LI"));
			});
	}
	/************* Fine PLAYER SMOOTH *************/

	// nella pagina c'e' la chiamata nielsen inline (non js): non vengono quindi caricati i banner. li carico qui


	if (!refreshByJS &&
		typeof(UniPlayer) != 'undefined' &&
		UniPlayer.lastParams &&
		UniPlayer.lastParams.advertisingUri &&
		UniPlayer.lastParams.advertisingUri != '') {
		// uniplayer istanziato con variabili banner
	} else if (typeof(MediaItem) != 'undefined' &&
		videoBannerSL != '' &&
		MediaItem.type != false &&
			(MediaItem.forceUniPlayer == true ||
			MediaItem.type == 'SmoothStreamingLive')) {
		// player istanziato con variabili banner
	} else {
		try {
			Banners.reloadAll();
		} catch (e) {
		}
	}

	// su ipad nascondo la preview (silverlight)
	if (isIpad || isIphone || isAndroid) {
		$('.boxGenericoNero .previewStream').hide();
		// mostra due link alle dirette
		var linkDirette = $('<li><a class="btnVideo" href="http://www.raisport.rai.it/dl/raisport/multimedia/2011/diretta.html?cid=ContentItem-18b9bd8c-1ab9-44e8-a684-fd3430493964">Diretta Raisport 1</a></li>'+
			'<li><a class="btnVideo" href="http://www.raisport.rai.it/dl/raisport/multimedia/diretta.html?cid=ContentItem-6e538313-40e4-41c2-a869-1db4957e424e">Diretta Raisport 2</a></li>')
		$('.boxGenericoNero ul.Media').prepend(linkDirette);

		// faccio funzionare il menu al tocco invece che al mouseover...
		var menuItems = $('.menuSport ul#menuTendina>li');
		menuItems.bind('touchstart', function() {
			menuItems.removeClass('iehover');
			$(this).addClass('iehover');
		});
		menuItems.bind('blur', function() {
			menuItems.removeClass('iehover');
		});
		$('.box_Header').bind('touchstart', function() {
			menuItems.removeClass('iehover');
		});
	}
	if (isIpad || isIphone) {
		$('.ultimOra').hide();
	}
});



/* crea una versione html/js/css del flash */
if (!!AC_FL_RunContent) {
	AC_FL_RunContent = (function(f) {
		return function() {
			var forward = true;
			if (isIphone || isIpad || isAndroid) {
				var o = {};
				for (var i = 0; i < arguments.length; i+=2) {
					o[arguments[i]] = arguments[i+1] || true;
				}
				if (o.movie == '/dl/raisport/flash/focus') {
					forward = false;
					createRaisportFocusHtml(o);
				}
			}
			if (forward) {
				f.apply(this, arguments);
			}
		}
	})(AC_FL_RunContent);
}
function createRaisportFocusHtml(options) {
	console.log(options);
	var opts = {
		tempo: 10000,
		animationDuration: 500,
		container: '#Focus',
		width: options.width,
		height: options.height,
		id: options.id,
		name: options.name,
		tipo: 'Sport Focus HP Set'
	};
	var fv = options.flashvars;
	fv = fv.split('&');
	for (var i = 0; i < fv.length; i++) {
		var p = fv[i].indexOf('=');
		if (p > 0) {
			opts[fv[i].substring(0, p)] = fv[i].substring(p+1);
		} else {
			opts[fv[i]] = fv[i];
		}
	}
	opts.tempo = parseInt(opts.tempo);
	opts.animationDuration = parseInt(opts.animationDuration);
	console.log(opts);
	if (!!opts.datapath) {
		if (!/^https?:/i.test(opts.datapath)) {
			opts.datapath = 'http://www.raisport.rai.it' + opts.datapath;
		}
		url = 'http://service.rai.it/xml2json.php?xmlurl=' +
      encodeURIComponent(opts.datapath) + '&jsonp=?';

		$.ajaxSetup({jsonp: 'jsonp'});
		$.ajax({
			url: url,
			dataType: 'json',
			context: opts,
			success: renderRaisportFocusHtml
		});
	}
	function renderRaisportFocusHtml(data) {
		opts.data = data;
		console.log(opts);
		var set = null;
		data.block.sets.set = $.makeArray(data.block.sets.set);
		for (var i = 0; i < data.block.sets.set.length; i++) {
			if (data.block.sets.set[i]['@attributes'].type == opts.tipo) {
				set = data.block.sets.set[i];
			}
		}
		if (set != null) {
			var items = $.makeArray(set.items.item);

			if (items.length > 0) {
				var focus = {};
				focus._outer = $('<div class="focusHtml" />').appendTo($(opts.container));
				focus._prev = $('<a class="prev" />').appendTo(focus._outer);
				focus._main = $('<div class="main" />').appendTo(focus._outer);
				focus._next = $('<a class="next" />').appendTo(focus._outer);
				focus._listMask = $('<div class="list" />').appendTo(focus._outer);
				focus._list = $('<ul />').appendTo(focus._listMask);

				focus._maskLink = $('<a href="#" />').
						appendTo($('<div class="mask" />').
										 appendTo(focus._main));
				focus._mainImg = $('<img src="/dl/portale/image/pixel.png" />').
						appendTo(focus._main);
				focus._mainDesc = $('<div class="desc" />').appendTo(focus._main);
				focus._mainTit = $('<h3 />').appendTo(focus._mainDesc);
				focus._mainText = $('<p />').appendTo(focus._mainDesc);

				focus._timer = false;
				function stopTimer() {
					if (focus._timer) {
						window.clearTimeout(focus._timer);
					}
				}
				function startTimer() {
					stopTimer();
					if (opts.tempo > 0) {
						focus._timer = window.setTimeout(focus.next,
															opts.tempo + opts.animationDuration);
					}
				}
				focus.prev = function() {
					currItemIndex = (currItemIndex - 1 + items.length) % items.length;
					showItem(currItemIndex, true);
					return false;
				};
				focus.next = function() {
					currItemIndex = (currItemIndex + 1 + items.length) % items.length;
					showItem(currItemIndex, true);
					return false;
				};
				function getImage(item, size) {
					var img = $.makeArray(item.units.imageUnit);
					img = img[0];
					var imgPath = img.image;
					if (!!size) {
						img.imageEX = $.makeArray(img.imageEX);
						for (var i = 0; i < img.imageEX.length; i++) {
							if (img.imageEX[i].indexOf('/'+size) >= 0 ) {
								imgPath = img.imageEX[i];
							}
						}
					}
					return imgPath;
				}
				function showItem(itemIndex, animate) {
					startTimer();
					currItemIndex = itemIndex;
					var item = null;
					for (var i = 0; item == null && i < items.length; i++) {
						if (items[i].itemIndex == itemIndex) {
							item = items[i];
						}
					}
					if (item == null) {
						return false;
					}
					var imgPath = getImage(item, '443x327');
					var texts = $.makeArray(item.units.textUnit);
					var title = item['@attributes'].name;
					var text = '';
					for (var i = 0; i < texts.length; i++) {
						var type = texts[i]['@attributes'].type;
						if (type == 'Title') {
							title = texts[i].text;
						} else if (type == 'Descrizione Breve') {
							text = texts[i].text;
						}
					}
					var href = $.makeArray(item.units.linkUnit)[0];
					href = href.link || href.page;

					focus._mainImg.attr('src', imgPath);
					focus._mainTit.html(title);
					focus._mainText.html(text);
					focus._maskLink.attr('href', href);

					// move list to item
					var currItem = item._li[0];
					if (wrapList) {
						var top = (itemIndex + 3) * itemHeight;
						if (itemIndex >= items.length - 3) {
							currItem = item._li[1]; // prende il secondo duplicato
						}
						var prevItem = focus._list.find('li.selected');
						var prevIndex = prevItem.data('itemIndex');
						if (animate) {
							// determina da dove far partire l'animazione
							prevIndex = (prevIndex + 1 + items.length) % items.length - 1;
							var prevTop = (prevIndex + 3) * itemHeight;
							focus._list.css('top', '-' + prevTop + 'px');
							focus._list.animate({'top': '-' + top + 'px'}, 500);
						} else {
							focus._list.css('top', '-' + top + 'px');
						}
					}
					focus._list.find('li').removeClass('selected');
					currItem.addClass('selected');

					return false;
				}

				function addItem(item) {
					var li = $('<li />').appendTo(focus._list);
					li.data('itemIndex', item.itemIndex);
					li.data('item', item);
					item._li = item._li || [];
					item._li.push(li);
					var imgPath = getImage(item, '111x81');
					$('<img />').attr('src', imgPath).appendTo(li);
					li.click(function() {
						showItem(item.itemIndex, true);
					});
				}
				for (var i = 0; i < items.length; i++) {
					items[i].itemIndex = i; // save index before duplication
				}
				var wrapList = items.length > 4;
				var displayList = [];
				if (wrapList) {
					// copio gli ultimi 4 elementi e li metto in testa (per l'animazione)
					// ne prendo 3, per poter animare correttamente anche nel caso
					// in cui l'utente clicchi sul terzo quando e' visualizzato l'ultimo
					$.merge(displayList, items.slice(-3));
					$.merge(displayList, items);
					// e copio i primi tre elementi e li metto in coda (per )
					$.merge(displayList, items.slice(0, 3));
				} else {
					$.merge(displayList, items);
				}
				for (var i = 0; i < displayList.length; i++) {
					addItem(displayList[i]);
				}

				var currItemIndex = 0;
				var itemHeight = 76;
				showItem(currItemIndex, false);
				focus._prev.click(focus.prev);
				focus._next.click(focus.next);

			}
		}
	}
}

