var prefixDevil = "";
if(location.href.indexOf("/live/dl/") != -1) {
	prefixDevil = "/live";
}

/* Estrae i parametri da una stringa, dalla query o dall'hash dell'url.
 * I parametri devono essere codificati come nella query delle url: nome1=valore1&nome2=valore2
 * Se un parametro non ha valore, nell'array viene impostato come valore true.
 */
function getParams(s) {
	if (s == null) {
		s = document.location.search;
		if (s == null || s == '') {
			s = document.location.hash;
		}
	}
	if (s.match(/^\?/) || s.match(/^#/)) {
		s = s.substring(1);
	}
	var strParams = s.split('&');
	var params = {};
	var i = 0;
	for (i in strParams) {
		var name = strParams[i];
		var value = true;
		var pos = name.indexOf('=');
		if (pos>0) {
			value = decodeURIComponent(name.substring(pos+1));
			name = name.substring(0, pos);
		}
		params[name] = value;
	}
	return params;
};
function getParam(name, string) {
	var params = getParams(string);
	return params[name] || false;
};


var Radio3 = function() {
};

Radio3.prototype.ensureConsoleLog = function() {
	var debugEnabled = false;
	if (getParam('debug') == 'true') {
		debugEnabled = true;
	}
	// Garantisce che la chiamata a console.log non vada in errore
	if (typeof(window.console) == 'undefined') {
		window.console = {};
	}
	// Nota: questo garantisce che console.log sia una funzione,
	// ma potrebbe sovrascrivere un'eventuale variabile con lo stesso nome...
	// Ad ogni modo, non dovrebbe mai succedere: console.log deve loggare :P
	if (typeof(window.console.log) != 'function') {
		if (debugEnabled) {
			var c = $('div#ConsoleLog');
			if (c.length == 0) {
				c = $('<div id="ConsoleLog"></div>');
				$(document.body).append(c);
				c.css({
					display: 'none',
					position: 'absolute',
					top: '1px',
					left: '1px',
					width: '300px',
					height: '200px',
					overflow: 'hidden',
					zIndex: '65535',
					backgroundColor: '#fff',
					border: '1px solid #333',
					color: '#000'
				});
				try {
					c.stop().animate({top: $(window).scrollTop()+'px'}, 200);
				} catch(e) {
				}
				$(window).scroll(function() {
					try {
						c.stop().animate({top: $(window).scrollTop()+'px'}, 200);
					} catch (e) {
					}
				});
				var d = $('<div></div>');
				c.append(d);
				d.css({
					display: 'block',
					position: 'absolute',
					top: '0px',
					left: '0px',
					width: '300px',
					height: '179px',
					overflow: 'auto',
					zIndex: '1',
					backgroundColor: '#fff',
					whiteSpace: 'pre',
					fontFamily: 'Courier New, mono',
					fontSize: '11px',
					textAlign: 'left',
					color: '#000'
				});

				c.append('<form><input type="text" /></form>');
				var textInput = c.find('input');
				textInput.css({
					position: 'absolute',
					bottom: '0px',
					left: '0px',
					right: '0px',
					height: '20px',
					width: '300px',
					border: '0px solid #000',
					borderTop: '1px solid #000',
					zIndex: '2',
					backgroundColor: '#000',
					color: '#fff',
					fontFamily: 'Courier New, mono',
					fontSize: '12px',
					textAlign: 'left'
				});
				var evalCode = function() {
					var t = textInput[0].value;
					try {
						console.log(eval(t));
					} catch(e) {
						console.log(e);
					}
					return false;
				};
				c.find('form').bind('submit', evalCode);
			}
			c.show();
			d = c.find('>div');
			var linesLimit = 10;
			console.log = function() {
				var s = '';
				var i = 0;
				for (i = 0; i<arguments.length; i++) {
					s += ''+arguments[i];
					if (i<arguments.length-1) {
						s += ' ';
					}
				}
				// c.append('<span>'+s+'</span><br />');
				d.append('<div style="border-bottom: 1px dotted #aaa;">'+s+'</div>');
				try {
					d.scrollTop(d[0].scrollHeight);
				} catch(e) {
				}
				var n = d.find('>div');
				if (n.length>linesLimit) {
					n.slice(0, n.length-linesLimit).remove();
				}
				return true;
			};
		} else {
			console.log = function() {
				return true;
			};
		}
	}

	if (typeof(debug) != 'function') {
		debug = console.log;
	}
	if (typeof(window.debug) != 'function') {
		window.debug = window.console.log;
	}
};

Radio3.prototype.initScrollbars = function() {
	this.ensureConsoleLog();
	var p = $('.scroll-pane,#paneGenerico,#paneGenericoRSS');
	var not = $('#paneProgrammi,#panePalinsesto,#Palinsesto .display');
	p.not(not);
	p = p.filter(function() {
		return $(this).parents('#ScrollConcerti').length == 0;
	});
	p = p.filter(function() {
		var t = $(this);
		var r = false;
		r = t.is('#paneProgrammi') ||
			t.is('#panePalinsesto') ||
			t.is('#Palinsesto');
		return !r;
	});
	p = p.filter(':visible');
	if (p.length > 0) {
		p.each(function() {
			var $this = $(this);
			$this.find('script').remove();
			try {
				$this.jScrollPane({showArrows:false, scrollbarWidth:16});
			} catch(e) {
			}
		});
	}
};
Radio3.prototype.paneProgrammi = function() {
	this.ensureConsoleLog();
	var p = $('#paneProgrammi:visible');
	if (p.length > 0) {
		p.each(function() {
			var $this = $(this);
			try {
				if ($.browser.msie && $.browser.version < 7) {
					// gestione ad hoc?
				} else {
					$this.jScrollPane({showArrows:false, scrollbarWidth:16, dragMinHeight: 16});
				}
			} catch(e) {
			}
			/*
			var items = $this.find('li');
			var tabs = $this.closest('div.boxGenerico').find('#pagStatus ul li');
			var filters = ['*', '.InOnda', '.NonInOnda'];
			var f = (function(){
				return function() {
					tabs.removeClass('selected');
					$(this).addClass('selected');
					var currFilter = filters[tabs.index($(this))];
					setNielsen(location.href+'#PaneProgrammi&filter='+currFilter);
					items.not(currFilter).hide();
					items.filter(currFilter).show();
					try {
						if ($.browser.msie && $.browser.version < 7) {
							// gestione ad hoc?
						} else {
							$this.jScrollPane({showArrows:false, scrollbarWidth:16, dragMinHeight: 16, reset: true});
						}
					} catch(e) {
					}
					return false;
				};
			})();
			tabs.click(f);
			skipNextNielsen = true;
			$(tabs[1]).click();
			*/
		});
	}
};

Radio3.prototype.playlist = function() {
	this.ensureConsoleLog();
	var p = $('div.boxGenerico.playlist');
	if (p.length > 0) {
		var radio3 = this;

		// inizializzo le varie funzioni locali, sovrascrivendo la funzione
		// playlist di Radio3 (non mi serve piu': non posso avere piu' di una
		// playlist in una pagina, e in generale piu' di un controllo
		// realplayer in una pagina)
		var RealAudioStateDecode = {
			0: 'Stopped',
			1: 'Contacting',
			2: 'Buffering',
			3: 'Playing',
			4: 'Seeking',
			5: 'Paused',
			'STOPPED'    : 0,
			'CONTACTING' : 1,
			'BUFFERING'  : 2,
			'PLAYING'    : 3,
			'SEEKING'    : 4,
			'PAUSED'     : 5
		};
		radio3.playlist = {};
		radio3.playlist.player = false;
		radio3.playlist.items = false;
		radio3.playlist.currentIndex = -1;
		radio3.playlist.mediaEnded = false;
		radio3.playlist.play = function(h) {
			radio3.playlist.mediaEnded = false;
			radio3.playlist.autoAdvance = false;

			radio3.playlist.currentIndex = -1;
			for (i = 0; i<radio3.playlist.items.length; i++) {
				if (radio3.playlist.getUrl(i) == h) {
					radio3.playlist.currentIndex = i;
				}
			}

			radio3.playlist.items.removeClass('current');
			radio3.playlist.items.css({textDecoration: 'none'});
			$(radio3.playlist.items[radio3.playlist.currentIndex ]).addClass('current');
			$(radio3.playlist.items[radio3.playlist.currentIndex ]).css({textDecoration: 'underline'});

			radio3.playlist.player.DoStop();
			radio3.playlist.player.SetSource(h);
			radio3.playlist.player.DoPlay();

			radio3.playlist.autoAdvance = true;
		};
		radio3.playlist.getUrl = function(index) {
			index = parseInt(''+index);
			var h = null;
			if (index < radio3.playlist.items.length) {
				h = $(radio3.playlist.items[index]).find('a.audioItem').attr('href');
			}
			return h;
		};
		radio3.playlist.next = function() {
			if (!radio3.playlist.autoAdvance) {
				return false;
			}
			var doNext = {};
				doNext[RealAudioStateDecode.STOPPED    ] = true;
				doNext[RealAudioStateDecode.CONTACTING ] = false;
				doNext[RealAudioStateDecode.BUFFERING  ] = false;
				doNext[RealAudioStateDecode.PLAYING    ] = false;
				doNext[RealAudioStateDecode.SEEKING    ] = false;
				doNext[RealAudioStateDecode.PAUSED     ] = false;

			if (!doNext[radio3.playlist.player.GetPlayState()]) {
				console.log('radio3.playlist.next: skip for current state ('+radio3.playlist.player.GetPlayState()+')');
				return false;
			}
			console.log('radio3.playlist.next');
			radio3.playlist.currentIndex++;
			var h = '';
			if (radio3.playlist.currentIndex < radio3.playlist.items.length) {
				h = radio3.playlist.getUrl(radio3.playlist.currentIndex);
			} else {
				return false;
			}
			radio3.playlist.play(h);
		};
		// Fine: inizializzo le varie funzioni locali

		// inizializzo le varie funzioni globali
		window.OnRealAudioStateChange = function(old_state, new_state) {
			/*
				Parameter Value	Play State
				0	Stopped
				1	Contacting
				2	Buffering
				3	Playing
				4	Seeking
				5	Paused
			*/

			console.log('OnRealAudioStateChange', RealAudioStateDecode[old_state], RealAudioStateDecode[new_state]);
			switch (new_state) {
				case RealAudioStateDecode.STOPPED    :
					console.log(
						radio3.playlist.mediaEnded,
						' - ',
						radio3.playlist.autoAdvance,
						': ',
						radio3.playlist.lastClipInfo.pos,
						' / ',
						radio3.playlist.lastClipInfo.len);
					if (radio3.playlist.mediaEnded) {
						radio3.playlist.next();
					}
					break;
				case RealAudioStateDecode.CONTACTING :
					break;
				case RealAudioStateDecode.BUFFERING  :
					break;
				case RealAudioStateDecode.PLAYING    :
					break;
				case RealAudioStateDecode.SEEKING    :
					break;
				case RealAudioStateDecode.PAUSED     :
					break;
			}
		};
		// queste due sono una per ie (activex) l'altra per ff e dintorni...
		window.OnStateChange = window.R3Playlist_OnStateChange = function(old_state, new_state) {
			OnRealAudioStateChange(old_state, new_state);
		};
		window.OnPlayStateChange = window.R3Playlist_OnPlayStateChange = function(old_state, new_state) {
			OnRealAudioStateChange(old_state, new_state);
		};

		window.OnRealAudioPositionChange = function(pos, len) {
			// aggiorno solo se non sono in stato contacting o buffering
			if (len>0) {
				radio3.playlist.lastClipInfo = {};
				radio3.playlist.lastClipInfo.pos = pos;
				radio3.playlist.lastClipInfo.len = len;
			}
			if (
				len > 0
				&&
				radio3.playlist.player.GetPlayState() == RealAudioStateDecode.PLAYING
				) {
				// console.log('OnRealAudioPositionChange', radio3.playlist.player.GetPlayState(), ' - ', pos, '/', len);
				// radio3.playlist.mediaEnded = pos >= len;
				radio3.playlist.mediaEnded = ((pos * 1.0) / len) > 0.99;
			}
		};
		window.OnPosLength = window.R3Playlist_OnPosLength = function(pos, len) {
			// console.log('OnPosLength', pos, len);
			OnRealAudioPositionChange(pos, len);
		};
		window.OnPositionChange = window.R3Playlist_OnPositionChange = function(pos, len) {
			// console.log('OnPositionChange', pos, len);
			OnRealAudioPositionChange(pos, len);
		};

		window.OnClipClosed = window.R3Playlist_OnClipClosed = function() {
			console.log('OnClipClosed');
		};
		window.OnClipOpened = window.R3Playlist_OnClipOpened = function() {
			console.log('OnClipOpened');
		};
		window.OnShowStatus = window.R3Playlist_OnShowStatus = function(status_text) {
			console.log('OnShowStatus');
		};
		// Fine: inizializzo le varie funzioni globali



		var $this = p;
		radio3.playlist.box = $this;
		var playerDiv = $this.find('.Mid .player');
		var list = $this.find('.Mid ul>li');
		var firstItem = list.slice(0,1).find('a.audioItem');
		var params = {
			autostart: 'false',
			// controls: 'PositionField',
			// controls: 'StatusField',
			controls: 'All',
			console: 'R3Playlist',
			maintainaspect: 'true',
			autogotourl: 'false',
			loop: 'false',
			center: 'true',
			nologo: 'true',
			numloop: '0',
			shuffle: 'false',
			// src: '' + firstItem.attr('href'),
			src: '',
			// scriptcallbacks: 'OnStateChange,OnPlayStateChange,OnClipClosed,OnClipOpened,OnShowStatus,OnPosLength,OnPositionChange'
			scriptcallbacks: 'All'
		};

		// creo l'oggetto principale
		var s = '';
		if ($.browser.msie) {
			s = '<object id="R3Playlist" width="270" height="52" type="audio/x-pn-realaudio-plugin" classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA">';
		} else {
			s = '<object id="R3Playlist" width="270" height="52" type="audio/x-pn-realaudio-plugin">';
		}
		for (i in params) {
			s += '<param name="'+i+'" value="'+params[i]+'" />';
		}
		s += '</object>';
		playerDiv.html(s);

		// creo anche un oggetto per visualizzare la posizione: comodo in sviluppo
		s = '<object id="R3PlaylistPosField" width="135" height="20" type="audio/x-pn-realaudio-plugin">';
		params.controls = 'PositionField';
		params.scriptcallbacks = '';
		for (i in params) {
			s += '<param name="'+i+'" value="'+params[i]+'" />';
		}
		s += '</object>';
		playerDiv.append(s);


		var player = playerDiv.find('#R3Playlist');
		try {
			if (player.length > 0) {
				player = player[0];
				radio3.playlist.player = player;
				player.SetConsoleEvents(true);
				radio3.playlist.items = list;
				radio3.playlist.currentIndex = 0;

				list.find('a.audioItem').click(function() {
					var h = $(this).attr('href');
					radio3.playlist.play(h);
					return false;
				});
				if (radio3.playlist.player.GetPlayState() == 3) {
					var h = unescape(radio3.playlist.player.GetSource());
					radio3.playlist.play(h); // cosi' imposto lo stile all'item giusto...
				}
				console.log('current state ('+radio3.playlist.player.GetPlayState()+')');
			}
		} catch(e) {
		}
	}
};

Radio3.prototype.caroselloContenuti = function() {
	var n = $("#Contenuti .Item");
	if (n.length > 0) {
		n.jCarouselLite({
			auto:   false,
			btnNext: "#Contenuti .btnNext",
			btnPrev: "#Contenuti .btnPrev",
			speed: 1000,
			visible: 4,
			scroll: 2,
			easing: "easeOutBack"
		});

		n.find('li').each(function() {
			var l = $('a', this).attr('href');
			var t = $('h3', this).text();
			var prog = $('h4', this).text();
			if (prog.length < 0) { prog = t;}
			var desc = prog;
			$(this).click(function(){
				var w = 450;
				var h = 340;
				var x = (screen.width-w)/2;
				var y = (screen.height-h)/2;
				var style = "width="+w+", height="+h+", status=no, menubar=no, toolbar=no, scrollbar=no, top="+y+", left="+x;
				window.open('/dl/radio3/popupaudio.html?t='+encodeURIComponent(t)+'&p='+encodeURIComponent(prog)+'&d='+encodeURIComponent(desc)+'&u='+encodeURIComponent(l), 'RadioRaiPlayer', style);
				return false;
			});
		});
		// $("#Contenuti .btnNext").click(function() {
		// 	setNielsen(location.href+'#CaroselloContenuti&action=next');
		// });
		// $("#Contenuti .btnPrev").click(function() {
		// 	setNielsen(location.href+'#CaroselloContenuti&action=prev');
		// });
		n.find('img').bind('load', function() {
			addReflections();
		});
	}
	addReflections();
};
Radio3.prototype.initCaroselloContenuti = function() {
	$('.raitvBox ul.tab li').click(function(){
		if($('a span',this).text() != 'Podcast') {
			$('.allPodcast').hide();
		} else {
			$('.allPodcast').show();
		}
		var id = $(this).attr('id');
		$('.raitvBox ul.tab li').removeClass('selected');
		$(this).addClass('selected');
		$.ajax({
			url: "/dl/radio3/"+id+".html",
			cache: true,
			dataType: "html",
			success: function(result) {
				$("#Contenuti .Item").html(result);
				radio3.caroselloContenuti();
			},
			error : function(result){}
		});
		setNielsen(location.href+"?raitvBox="+id);
		return false;
	});
	this.caroselloContenuti();
};

Radio3.prototype.initLanciHP = function() {
	var n = $('.container_lanci');
	if (n.length > 0) {
		n.each(function() {
			var $this = $(this);
			var display = $this.find('>div.imgLancetto');
			var items = $this.find('.lanci>li');
			var fOthers = function() {
					items.not(this).find('>a').removeClass('hover');
					$(this).find('>a').addClass('hover');
					var h = $(this).find('>a').slice(0,1).attr('href');
					if (!h) { h = ''; }
					var img = $(this).find('>span.solotesto').text();
					if (!img) { img = ''; }
					var tit = $(this).find('>a p').text();
					if (!tit) { tit = ''; }
					display.css({backgroundImage: 'url('+img+')'});
					display.find('a').attr('href', h).attr('title', tit);
					display.find('img').attr('alt', tit);

					// fix per ie6 con filter... -.-;
					display.find('a span').not('.testoLancio').addClass('imgLancio');
					var t = $(this).find('span.testoLancio').text();
					var testo = display.find('a span.testoLancio');
					if (testo.length == 0) {
						testo = $('<span class="testoLancio"></span>');
						display.find('a').append(testo);
					}
					testo.text(t);
					if ($.trim(t) == '') {
						testo.hide();
					} else {
						testo.show();
					}
					// testo.hide();
				};
			var fIe = function() {
					items.not(this).find('>a').removeClass('hover');
					$(this).find('>a').addClass('hover');
					var h = $(this).find('>a').slice(0,1).attr('href');
					if (!h) { h = ''; }
					var img = $(this).find('>span.solotesto').text();
					if (!img) { img = ''; }
					var tit = $(this).find('>a p').text();
					if (!tit) { tit = ''; }
					display.css({backgroundImage: 'url('+img+')'});
					display.find('a').attr('href', h).attr('title', tit);
					display.find('img').attr('alt', tit);
				};
			var f = fOthers;
			if ($.browser.msie && $.browser.version < 7) {
				f = fIe;
			}
			items.bind('mouseover',f);
			items.slice(0,1).trigger('mouseover');
		});
	}
};

Radio3.prototype.initLanciGrandi = function() {
	$('.LancioGrande:visible').each(function() {
		var h = $('.Testo', $(this)).height();
		// altezza minima
		var minH = 33;
		var maxH = 63;
		if (h<minH)
			$('.Testo', $(this)).height(minH);
		$(this).hover(
			function() {
				$(this).stop(true, false);
				var h = $('.Testo', $(this)).height();
				h=(h>maxH)?maxH:(h<minH?minH:h);
				// $('.Descrizione', $(this)).animate( {marginTop: (-15-h)+'px', height: (7+h)+'px'}, 500);
				// $('.Descrizione', $(this)).animate( {marginTop: (-h)+'px', height: (7+h)+'px'}, 500);
				$('.Descrizione', $(this)).animate( {marginTop: (-9-h)+'px', height: (7+h)+'px'}, 500);
			},
			function() {
				$(this).stop(true, false);
				// $('.Descrizione', $(this)).animate( {marginTop: '-48px', height: '40px'}, 500);
				// $('.Descrizione', $(this)).animate( {marginTop: '-33px', height: '40px'}, 500);
				$('.Descrizione', $(this)).animate( {marginTop: '-42px', height: '40px'}, 500);
			}
		);
	});
};

Radio3.prototype.initFocus = function() {
	var focus = $('#Focus');
	if (focus.length > 0) {
		focus.each(function() {
			var focus = $(this);

			var tempo = 10*1000; // 10s

			var visibleCount = 4;
			var itemHeight = 72;
			var itemOffset = 0; // margine superiore (negativo) di un item

			var lanci  = focus.find('#Lanci');
			// var items  = lanci.find('>ul.focusLanci>li');
			var items  = lanci.find('>ul.focusLanci li');
			var desc   = focus.find('.descSelezionato');
			var player = focus.find('#player');

			var timer = false;
			var autoAdvance = true;
			var videoPlaying = false;
			var currentIndex = 0;
			var itemCount = items.length;
			var playerSL = false;
			var cycle = false;

			desc.css({
				zIndex: 100
			});
			lanci.css({
				position: 'relative',
				overflow: 'hidden'
			});
			lanci.find('>ul.focusLanci').css({
				height: 'auto',
				position: 'absolute',
				top: '0px',
				left: '0px'
			});

			var ensureVisible = function(item, noAnimate) {
				// if (!noAnimate) {
				// 	var n = $(items[currentIndex]).data('jumpToItemBeforeAnimation');
				// 	if (n) {
				// 		currentIndex = items.index(n);
				// 		items.not(n).removeClass('selected');
				// 		n.addClass('selected');
				// 		ensureVisible($(items[currentIndex-1]), true);
				// 	}
				// }
				var index = items.index(item) * -1;
				var minTop = (visibleCount - itemCount) * itemHeight + itemOffset;
				if (minTop > 0) {
					minTop = 0;
				}
				var top = index * itemHeight + itemOffset;
				if (top > 0) {
					top = 0;
				}
				if (top < minTop) {
					top = minTop;
				}
				if (!!noAnimate) {
					lanci.find('>ul.focusLanci').css({
						top: top+'px'
					});
				} else if (cycle) {
					lanci.find('>ul.focusLanci').animate({
						top: top+'px'
					}, 500, null, function() {
						var n = item.data('jumpToItemAfterAnimation');
						if (n) {
							currentIndex = items.index(n);
							ensureVisible(n, true);
							items.not(n).removeClass('selected');
							n.addClass('selected');
						}
					});
				} else {
					lanci.find('>ul.focusLanci').animate({
						top: top+'px'
					}, 500);
				}
			};

			if (itemCount > visibleCount) {
				cycle = true;
				var ul = lanci.find('>ul.focusLanci');
				var dubAfter = ul.find('li').slice(0, visibleCount-1);
				dubAfter.each(function() {
					var c = $(this).clone(true);
					c.removeClass('selected');
					c.data('jumpToItemAfterAnimation', $(this));
					ul.append(c);
				});
				var dubBefore = ul.find('li').slice(itemCount - visibleCount + 1, itemCount);
				var n = false;
				dubBefore.each(function() {
					var c = $(this).clone(true);
					c.removeClass('selected');
					// $(this).data('jumpToItemBeforeAnimation', c);
					c.data('jumpToItemAfterAnimation', $(this));

					if (!n) {
						ul.prepend(c);
						n = c;
					} else {
						n.after(c);
						n = c;
					}
				});

				items = ul.find('li');
				itemCount = items.length;
			}

			var next = function() {
				currentIndex = (currentIndex + 1) % itemCount;
				var currItem = $(items[currentIndex]);
				ensureVisible(currItem);
				items.not(currItem).removeClass('selected');
				currItem.addClass('selected');
				show(currItem);
				if (autoAdvance) {
					timerStart();
				}
			};
			var prev = function() {
				currentIndex = (currentIndex - 1 + itemCount) % itemCount;
				var currItem = $(items[currentIndex]);
				ensureVisible(currItem);
				items.not(currItem).removeClass('selected');
				currItem.addClass('selected');
				show(currItem);
				if (autoAdvance) {
					timerStart();
				}
			};
			var timerStop = function() {
				autoAdvance = false;
				if (timer) {
					clearTimeout(timer);
					timer = false;
				}
			};
			var timerStart = function() {
				autoAdvance = true;
				if (timer) {
					clearTimeout(timer);
					timer = false;
				}
				timer = setTimeout(next, tempo);
			};


			var getHtmlObjectSL_BAK = function(width,height,pathVideo,pathBanner,pathXML,auto, onLoad) {
				var url = "";
				if (pathXML != "") {
					url = "xmlPath="+pathXML;
				} else {
					url = "videoPath="+pathVideo;
					if (pathBanner != "") {
						url+=",pathbanner="+pathBanner;
					}
				}
				if (!!onLoad) {
					onLoad = '<param name="onLoad" value="'+onLoad+'" />';
				} else {
					onLoad = '';
				}
				var html = '<div id="silverlightControlHostVideo"><object height="'+height+'" width="'+width+'" type="application/x-silverlight-2" data="data:application/x-silverlight-2," id="SLPlayer" name="SLPlayer"><param value="http://www.objects.rai.it/dl/objects/silverlight/raitv/Lettore_Rai_VOD.xap" name="source" /><param value="#0a0a0a" name="background" /><param value="true" name="windowless" /><param value="2.0.31005.0" name="minRuntimeVersion" /><param value="true" name="autoUpgrade" /><param value="true" name="enableHtmlAccess" />'+onLoad+'<param value="'+url+',auto='+auto+'" name="initparams" /><center style="color:black;"><a>Se vuoi visualizzare il video installa Microsoft Silverlight</a></center><a href="http://go.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;"><img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Installa Microsoft Silverlight" style="border-style: none"/></a></center></object></div>';
				return html;
			};

			var slOnLoad = function(plugIn, userContext, sender) {
				console.log(plugIn, userContext, sender);
				var media = sender.findName(userContext.mediaName);
				var arg = {};
				media.AddEventListener("MediaOpened", function() {
					console.log('mediaOpened', sender, arg);
					timerStop();
					media.AddEventListener("MediaEnded", function() {
						console.log('mediaEnded', sender, arg);
						autoAdvance = true;
						videoPlaying = false;
						next();
					});
				});
				if(plugIn && plugIn.content) {
					playerSL = plugIn;
					plugIn.content.onfullscreenchange = function() {
						console.log('OnFullScreenChange', sender, arg);
					};
				}
			};
			var getHtmlObjectSL = function(width,height,pathVideo,pathBanner,pathXML,auto, onLoad) {
				var url = "";
				if (pathXML != "") {
					url = "xmlPath="+pathXML;
				} else {
					url = "videoPath="+pathVideo;
					if (pathBanner != "") {
						url+=",pathbanner="+pathBanner;
					}
				}
				if (!onLoad) {
					onLoad = function() {};
				} else {
					var f = onLoad;
					onLoad = function(a,b,c) {
						return f(a,b,c);
					};
				}
				var initParams = url+',auto='+auto;
				// var html = '<div id="silverlightControlHostVideo"><object height="'+height+'" width="'+width+'" type="application/x-silverlight-2" data="data:application/x-silverlight-2," id="SLPlayer" name="SLPlayer"><param value="http://www.objects.rai.it/dl/objects/silverlight/raitv/Lettore_Rai_VOD.xap" name="source" /><param value="#0a0a0a" name="background" /><param value="true" name="windowless" /><param value="2.0.31005.0" name="minRuntimeVersion" /><param value="true" name="autoUpgrade" /><param value="true" name="enableHtmlAccess" />'+onLoad+'<param value="'+url+',auto='+auto+'" name="initparams" /><center style="color:black;"><a>Se vuoi visualizzare il video installa Microsoft Silverlight</a></center><a href="http://go.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;"><img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Installa Microsoft Silverlight" style="border-style: none"/></a></center></object></div>';
				var html = '<div id="silverlightControlHostVideo">';
				html += Silverlight.createObject(
					"/dl/objects/silverlight/raitv/Lettore_Rai_VOD.xap",
					null, // $('#silverlightControlHostVideo')[0],
					'SLPlayer',
					{
						id: 'SLPlayer',
						width: width,
						height: height,
						inplaceInstallPrompt: false,
						background: 'transparent',
						windowless: 'true',
						framerate: '25',
						version: '2.0'
					},
					{
						onLoad: onLoad,
						onError: function(){}
					},
					initParams,
					{
						mediaName: 'me'
					}
				);
				html += '</div>';
				return html;
			};

			var playVideoClick = function(event) {
				var item = $(this).data('item');
				return playVideo(item);
			}
			var playVideo = function(item) {
				if (!item) {
					return false;
				}
				var id = $(item).attr('id');
				setNielsen(location.href+'#Focus&playVideo='+id);
				var width  = 384;
				var height = 288;
				var pathXML = '/dl/RaiTV/programmi/media/'+id+'.xml';
				var pathBanner = "";
				var pathVideo = "";
				var autoPlay = true;
				Silverlight.__cleanup();
				var html = getHtmlObjectSL(width,height,pathVideo,pathBanner,pathXML,autoPlay, slOnLoad);
				timerStop();
				videoPlaying = true;
				player.html(html);
				// playerSL = player.find('#SLPlayer')[0];
				$(player).css({position: 'relative', zIndex: 0});
				$(playerSL).css({position: 'relative', zIndex: 1});
				desc.hide();
				return false;
			};

			var removePreview = function() {
				if (videoPlaying) {
					player.find('>img').remove();
					player.find('>a').remove();
				}
			};
			var show = function(item) {
				var id = $(item).attr('id');
				var link = $(item).find('a').not('.apriLancio');
				var tit = $(item).find('>div.info>.tit>h3');
				var sub = $(item).find('>div.info>.tit>h4');
				var im = $(item).find('img.hidden');
				if (tit.length>0) {
					tit = tit.html();
				} else {
					tit = '';
				}
				if (sub.length>0) {
					sub = sub.html();
				} else {
					sub = '';
				}
				if (im.length>0) {
					im = im.clone(false);
					im.height(288);
					im.width(384);
					im.removeClass('hidden');
					im.css({
						position: 'absolute',
						zIndex: 50,
						width: '384px',
						height: '288px',
						left: '0px',
						top: '0px'
					});
				} else {
					im = '';
				}

				var data = {};
				data.desc = '<h2>'+tit+'</h2><span>'+sub+'</span>';
				data.img = im;
				focus.data('currItemData', data);
				desc.html(data.desc).show();
				if (!videoPlaying) {
					player.empty();
					playerSL = false;
				} else {
					removePreview();
				}
				player.append(data.img);

				if ($(item).is('.r3_video')) {
					var a = $('<a href="#"></a>');
					a.css({
						cursor: 'pointer',
						position: 'absolute',
						zIndex: 51,
						width: '165px',
						height: '164px',
						left: '109px', // 384
						top: '62px', // 288
						backgroundColor: 'transparent',
						backgroundPosition: 'left top',
						backgroundAttachment: 'scroll',
						backgroundRepeat: 'no-repeat',
						backgrounImage: 'none'
					});
					if ($.browser.msie && $.browser.version < 7) {
						a.css({
							filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale', src='/dl/radio3/2009/images/btn_play_video.png')"
						});
					} else {
						a.css({
							backgroundImage: 'url(/dl/radio3/2009/images/btn_play_video.png)'
						});
					}
					a.data('item', item);
					a.click(playVideoClick);
					player.append(a);
				}
				if ($(item).is('.r3_foto')) {
					if (link.length>0) {
						var href = link.attr('href');
						// var link = $('<a class="linkLancio">Vai al sito</a>');
						// link.attr('href', href);
						// player.append(link);
						var link = $('<a></a>');
						link.attr('href', href);
						desc.wrapInner(link);
						// desc.find('>*').wrapInner(link);

						/* non lo vogliono più
						var link2 = $('<a class="linkLancio2"><span class="solotesto" style="display: none;">vai al sito</span></a>');
						link2.attr('href', href);
						desc.prepend(link2);
						*/
						desc.find('h2').css('width', 'auto');
						desc.find('*').andSelf().css('cursor', 'pointer').click(function() {
							// link.click();
							document.location = href;
						});
					}
				}
			};


			items.each(function() {
				var h = $(this).find('a.linkLancio').attr('href');
				// $(this).find('a').attr('href', h);
				$(this).find('.linkLancio').css({display: 'none'});
				var index = items.index(this);
				var it = this;
				var a = $(this).find('a.apriLancio,');
				$(this).add(a).css('cursor', 'pointer').click(function() {
					/*timerStop();
					videoPlaying = false; // forzo lo stop del video
					currentIndex = index-1;
					currentIndex = index;
					next();
					setNielsen(location.href+'#Focus&item='+index);
					timerStart(); // siamo nel mouseover dell'item, in teoria... ^^
					return false;
					*/
					/* mod per utilizzare hover */

					if ($(this).is('.r3_foto')) {
							document.location = h;
					} else {
						timerStop();
						videoPlaying = false; // forzo lo stop del video
						currentIndex = index;
						var currItem = $(items[currentIndex]);
						items.not(currItem).removeClass('selected');
						currItem.addClass('selected');
						show(currItem);
						setNielsen(location.href+'#Focus&item='+index);
						timerStart(); // siamo nel mouseover dell'item, in teoria... ^^
						return false;
					/* mod per utilizzare hover */
					}
				});

				a.attr('href', '#Focus');
			});
			if (focus.find('a[name=Focus]').length == 0) {
				focus.prepend('<a name="Focus" class="solotesto"></a>');
			}

			items.hover(function() {
			 	timerStop();
			 	show(this);
			 }, function() {
			 	if (videoPlaying) {
			 		removePreview();

			 		desc.hide();
			 	} else {
			 		timerStart();
			 		show(items[currentIndex]);
			 	}
			});

			if (cycle) {
				currentIndex = visibleCount - 2;
			} else {
				currentIndex = -1;
			}
			next();

			focus.find('.navFocus .upFocus').click(function() {
				prev();
				setNielsen(location.href+'#Focus&item='+currentIndex);
			});
			focus.find('.navFocus .dwFocus').click(function() {
				next();
				setNielsen(location.href+'#Focus&item='+currentIndex);
			});

			radio3.focus = {};
			radio3.focus.next = next;
			radio3.focus.prev = prev;
			radio3.focus.timerStop = timerStop;
			radio3.focus.timerStart = timerStart;
		});
	}
};



Radio3.prototype.initPalinsesti = function() {
	var n = $('#PalinsestoCompleto');
	if (n.length > 0) {
		$(function() {
			window.palinsesto = new Palinsesti();
			window.palinsesto.init();
		});
	}
};
/* *********** Palinsesto ************ */
var ServerDateTimeConverter = function() {
	if (typeof(getServerDateTime) == 'undefined') {
		$.globalEval('function getServerDateTime(){\n'+
		'	var a = new Date();\n'+
		'	var m = a.getMonth() + 1;\n'+
		'	m = m<10?"0"+m:m;\n'+
		'	var d = a.getDate();\n'+
		'	d = d<10?"0"+d:d;\n'+
		'	var sd = a.getFullYear()+"/"+m+"/"+d;\n'+
		'	var h = a.getHours();\n'+
		'	h = h<10?"0"+h:h;\n'+
		'	var mm = a.getMinutes();\n'+
		'	mm = mm<10?"0"+mm:mm;\n'+
		'	var s = a.getSeconds();\n'+
		'	s = s<10?"0"+s:s;\n'+
		'	var st = h+":"+m+":"+s;\n'+
		'	return [sd, st];\n'+
		'}');
	}
	sDateTime = getServerDateTime();
	this.serverDate = sDateTime[0];
	this.serverTime = sDateTime[1];

	var serverDateTime = new Date(this.serverDate);
	var hh = this.serverTime.match(/([0-9]{2}):([0-9]{2}):([0-9]{2})/);
	var mm = hh[2];
	var ss = hh[3];
	hh = hh[1];
	serverDateTime.setHours(hh);
	serverDateTime.setMinutes(mm);
	serverDateTime.setSeconds(ss);

	var localDateTime = new Date();
	// add this.clientOffsetMillis to local time to get server time
	this.clientOffsetMillis = serverDateTime - localDateTime;
};
ServerDateTimeConverter.prototype.getServerTime = function() {
	var d = new Date();
	d = new Date(d.getTime() + this.clientOffsetMillis);
	return d;
};
serverDateTimeConverter = new ServerDateTimeConverter();

function wrapFunction(obj, func) {
	return function() {
		return func.call(obj, arguments);
	}
};

var Palinsesti = function() {
	this.st = serverDateTimeConverter;
	this.channel = 'RadioTre';
	this.basePath = '/dl/portale/html/palinsesti/guidatv/static/';
	this.selectBase = '#PalinsestoCompleto';
	this.selectGiorni = this.selectBase + ' .tabs_giorni';
	this.selectOrari  = this.selectBase + ' .tab_giornata';
	this.selectMattina    = this.selectBase + ' .container .mattina';
	this.selectPomeriggio = this.selectBase + ' .container .pomeriggio';
	this.selectSera       = this.selectBase + ' .container .sera';
	this.selectLoading    = this.selectBase + ' .container .loading';
	this.cssClassesGiorni = {active: 'tab_giorno_verde', inactive: 'tab_giorno_grigio'};
	this.cssClassesOrari  = {active: 'tab_giornata_verde', inactive: 'tab_giornata_grigio'};
	this.cache = {};
	this.currentDate = null;
};
Palinsesti.prototype.dataLoaded = function(progList) {
	var mattina    = $(this.selectMattina).empty();
	var pomeriggio = $(this.selectPomeriggio).empty();
	var sera       = $(this.selectSera).empty();

	var elementi = $('li', progList).filter(function(){return $('span.ora', $(this)).length > 0;});

	elementi.removeClass('passato');
	elementi.removeClass('corrente');
	elementi.removeClass('futuro');
	if ($('ul', progList).length===0) {
		progList.wrapInner('<ul></ul>');
	}
	var orari = {mattina: '12:00', pomeriggio: '18:00', sera: '23:00'};
	var orariElaborati = {mattina: false, pomeriggio: false, sera: false};
	var hr = $('<div class="hr"></div>');
	//debug('Parsing '+elementi.length+' elements...');
	elementi.each(function(i) {
		var ora = $('span.ora', $(this)).clone(true);
		var h = ora.text();
		var info = $('<h3></h3>').append($('span.info', $(this)).clone(true));

		if (h <= orari.mattina && !orariElaborati.mattina) {
			mattina.append(hr.clone(true));
			mattina.append(ora);
			mattina.append(info);
		} else if (h <= orari.pomeriggio && !orariElaborati.pomeriggio) {
			orariElaborati.mattina = true;
			pomeriggio.append(hr.clone(true));
			pomeriggio.append(ora);
			pomeriggio.append(info);
		} else if (h <= orari.sera && !orariElaborati.sera) {
			orariElaborati.pomeriggio = true;
			sera.append(hr.clone(true));
			sera.append(ora);
			sera.append(info);
		} else {
			orariElaborati.sera = true;
			sera.append(hr.clone(true));
			sera.append(ora);
			sera.append(info);
		}
	});
	mattina.append(hr.clone(true));
	pomeriggio.append(hr.clone(true));
	sera.append(hr.clone(true));

	$(this.selectLoading).hide();
	this.showGiornata(this.prevState[0], this.prevState[1], this.prevState[2]);
};
Palinsesti.prototype.selectDay = function(day, ln) {
	if (this.currentDate == day) {
		return false;
	}
	this.currentDate = day;
	//$('a', ln).text(''+day);
	$(this.selectGiorni + ' div.'+this.cssClassesGiorni.active).
		removeClass(this.cssClassesGiorni.active).
		addClass(this.cssClassesGiorni.inactive);
	ln.
		removeClass(this.cssClassesGiorni.inactive).
		addClass(this.cssClassesGiorni.active);

	var mattina    = $(this.selectMattina);
	var pomeriggio = $(this.selectPomeriggio);
	var sera       = $(this.selectSera);

	var vm = mattina   .filter(':visible').length==0?false:true;
	var vp = pomeriggio.filter(':visible').length==0?false:true;
	var vs = sera      .filter(':visible').length==0?false:true;

	this.prevState = [vm, vp, vs];
	$(this.selectLoading).show();

	skipNextNielsen = true;
	this.showGiornata(false, false, false);

	mattina.empty();
	pomeriggio.empty();
	sera.empty();

	var d = day.getDate();
	var m = day.getMonth();
	var y = day.getFullYear();
	var w = day.getDay();
	// var dateString = ((d<10)?'0'+d:''+d)+'-'+((m<9)?'0'+(m+1):''+(m+1))+'-'+y;
	var dateString = y+'_'+((m<9)?'0'+(m+1):''+(m+1))+'_'+((d<10)?'0'+d:''+d);

	if (this.cache[dateString] != null) {
		this.dataLoaded(this.cache[dateString]);
	} else {
		var path = this.basePath + this.channel + '_' + dateString + '.html';
		var obj = this;
		debug('loading path:\n'+path);
		$.ajax(
			{
				async: true,
				url: path,
				success: (function(){
					var o = obj;
					var ds = dateString;
					return function(htmlText) {
						//debug('********* loaded *********\n'+htmlText);
						o.cache[ds] = $('<ul></ul>').append(htmlText);
						o.dataLoaded.call(o, o.cache[ds]);
					}
				})(),
				// testare su produzione (404 su devil)
				error: function(arg){var s = ''; for (var i in arg) {s+=i+'\n'};debug('failure:\n'+arg.statusText
+'\n'+s);}
			}
		);
	}
};
Palinsesti.prototype.showGiornata = function(mattina, pomeriggio, sera) {
	debug('mattina: '+mattina+'\npomeriggio: '+pomeriggio+'\nsera: '+sera);
	var m = $(this.selectMattina);
	var p = $(this.selectPomeriggio);
	var s = $(this.selectSera);
	var f = (function() {
		var mm = m;
		var pp = p;
		var ss = s;
		var vmm = mattina;
		var vpp = pomeriggio;
		var vss = sera;
		return function() {
			debug('Setting visibilities\nmattina: '+vmm+'\npomeriggio: '+vpp+'\nsera: '+vss);
			vmm ? mm.slideDown(500):false;
			vpp ? pp.slideDown(500):false;
			vss ? ss.slideDown(500):false;
		};
	})();

	!mattina    ? m.slideUp(500, f):false;
	!pomeriggio ? p.slideUp(500, f):false;
	!sera       ? s.slideUp(500, f):false;

	var n = [];
	mattina    ? n.push('mattina'   ):false;
	pomeriggio ? n.push('pomeriggio'):false;
	sera       ? n.push('sera '     ):false;
	n = n.join('&');

	var d = this.currentDate.getDate();
	var m = this.currentDate.getMonth();
	var y = this.currentDate.getFullYear();
	var w = this.currentDate.getDay();
	var dateString = y + '/' + ((m<9)?'0'+(m+1):''+(m+1)) + '/' + ((d<10)?'0'+d:''+d);

	setNielsen(location.href+'#day='+dateString+'&'+n);
};
Palinsesti.prototype.initGiorni = function() {
	var weekDays = ['Domenica', 'Lunedì', 'Martedì', 'Mercoledì', 'Giovedì', 'Venerdì', 'Sabato'];
	var d = this.st.getServerTime();
	var p = $(this.selectGiorni);
	var self = this;
	p.empty();
	for (var i = 0; i<7; i++, d.setDate(d.getDate()+1)) {
		var w = d.getDay();
		var t = $('<div class="tab_giorno_grigio"><a href="#">'+weekDays[w]+'</a></div>');
		var f = (function() {
			var day = new Date(d.getTime());
			var obj = self;
			var l = t;
			return function() {
				obj.selectDay(day, l);
				l.blur();
				$('a', l).blur();
				return false;
			}
		})();
		t.click(f);
		$('a', t).click(f);
		p.append(t);
	}
};
Palinsesti.prototype.initOrari = function() {
	var p = $(this.selectOrari);
	var orari = ['Mattina', 'Pomeriggio', 'Sera'];
	var setVisibilities = [[true, false, false], [false, true, false], [false, false, true]];
	var self = this;
	for (i in orari) {
		var t = $('<div class="'+self.cssClassesOrari.inactive+'"><a href="#">'+orari[i]+'</a></div>');
		var f = (function() {
			var o = setVisibilities[i];
			var obj = self;
			var l = t;
			var pp = p;
			return function() {
				obj.showGiornata(o[0], o[1], o[2]);
				l.blur();
				$('a', l).blur();
				$('div', pp).removeClass(obj.cssClassesOrari.active);
				$('div', pp).addClass(obj.cssClassesOrari.inactive);
				l.removeClass(obj.cssClassesOrari.inactive);
				l.addClass(obj.cssClassesOrari.active);
				return false;
			}
		})();
		t.click(f);
		$('a', t).click(f);
		p.append(t);
	}
};
Palinsesti.prototype.init = function() {
	this.initGiorni();
	this.initOrari();
	skipNextNielsen = true;
	$(this.selectGiorni+' div:eq(0)').click();
	skipNextNielsen = true;
	$(this.selectOrari+' div:eq(0)').click();
	skipNextNielsen = true;
};

var PalinsestiCompact = function() {
	// per le stesse configurazioni
	this.palinsesti = new Palinsesti();
	this.selectBase = '.OnAir .Container';
	this.selectData = this.selectBase + ' .DataPalinsesto';
	this.selectMain = this.selectBase + ' #Palinsesto .display';
};
PalinsestiCompact.prototype.dataLoaded = function(progList) {
	var elementi = $('li', progList).filter(function(){return $('span.ora', $(this)).length > 0;});

	// TODO sistemare questo selettore!!
	var cont = $('ul', $(this.selectMain));
	cont.empty();

	elementi.removeClass('passato');
	elementi.removeClass('corrente');
	elementi.removeClass('futuro');
	debug('Parsing '+elementi.length+' elements...');

	var currentItemTop=0;
	var lastItem = null;
	var day = this.palinsesti.st.getServerTime();
	var h = day.getHours();
	h = h<10?'0'+h:h;
	var m = day.getMinutes();
	m = m<10?'0'+m:m;
	var currTime = h+':'+m;
	var sumHeights = true;

	elementi.each(function(i) {
		var ora = $('span.ora', $(this)).clone(true);
		var h = ora.text();
		ora = $('<span class="Ora">ore '+h+'</span>');
		var info = $('span.info', $(this)).clone(true).removeClass('info');
		var li = $('<li></li>').append(ora).append(info);
		cont.append(li);
		debug('h: '+h+'\nc: '+currTime);
		if (h <= currTime && sumHeights) {
			currentItemTop += li.outerHeight();
			lastItem = li;
		} else {
			sumHeights = false;
		}
	});
	if (lastItem!=null) {
		currentItemTop-=lastItem.outerHeight();
	}
	try {
		if ($.browser.msie && $.browser.version < 7) {
			// gestione ad hoc?
		} else {
			$('#Palinsesto .display').jScrollPane(
				{
					scrollbarOnLeft: false,
					scrollbarWidth: 18,
					showArrows: true,
					arrowSize: 18,
					dragMinHeight: 20,
					dragMaxHeight: 60
				}
			);
		}
	} catch(e) {
	}
	try {
		$('#Palinsesto .jScrollPaneDrag').css('width', '16px');
		$('#Palinsesto .jScrollPaneDragTop').css('width', '16px');
		$('#Palinsesto .jScrollPaneDragBottom').css('width', '16px');
		$('#Palinsesto .display')[0].scrollTo(currentItemTop);
	} catch (e) {
	}
	//$('#Palinsesto .display ul').css('top', '-'+currentItemTop+'px');
	//OnAirScrollBar.updateScroller(OnAirScrollBar);
};
PalinsestiCompact.prototype.init = function() {
	var day = this.palinsesti.st.getServerTime();
	var weekDays = ['domenica', 'lunedì', 'martedì', 'mercoledì', 'giovedì', 'venerdì', 'sabato'];
	var d = day.getDate();
	var m = day.getMonth();
	var y = day.getFullYear();
	var w = day.getDay();
	var dateString = ((d<10)?'0'+d:''+d)+'-'+((m<9)?'0'+(m+1):''+(m+1))+'-'+y;

	$(this.selectData).text(weekDays[w]+' '+d);

	var path = this.palinsesti.basePath + this.palinsesti.channel + '_' + dateString + '.html';
	//debug('Loading:\n'+path);
	var obj = this;
	$.ajax(
		{
			async: true,
			url: path,
			success: (function(){
				var o = obj;
				return function(htmlText) {
					//debug('********* loaded *********\n'+htmlText);
					o.dataLoaded.call(o, $('<ul></ul>').append(htmlText));
				}
			})(),
			// testare su produzione (404 su devil)
			error: function(arg){var s = ''; for (var i in arg) {s+=i+'\n'};debug('failure:\n'+arg.statusText
+'\n'+s);}
		}
	);
};
/* ********* Fine Palinsesto ********* */


/* ************* Podcast ************* */
Radio3.prototype.initPodcastPagination = function() {
	var n = $('#ListaPodcast');
	if (n.length > 0 && typeof($.fn.pagination) == 'function') {
		var podcastOptions = new Array();

		function podcastPageselectCallback(page_id, panel) {
			setNielsen(location.href+'?page='+page_id);
			// nasconde il link PaginaPrecedente se siamo alla prima pagina
			$("span.prev.current", panel).css('visibility', 'hidden');
			// nasconde il link PaginaSuccessiva se siamo all'ultima pagina
			$("span.next.current", panel).css('visibility', 'hidden');

			// // duplica i link di navigazione nei due div .pagineTop e .pagineBottom
			// var p1 = panel.clone(true);
			// var p2 = panel.clone(true);
			// $("#PagePodcast .pagineTop").empty().append(p1.children());
			// $("#PagePodcast .pagineBottom").empty().append(p2.children());

			// effettua la paginazione vera e propria
			var from = page_id * podcastOptions.itemsPerPage;
			var to = ( page_id + 1 ) * podcastOptions.itemsPerPage;
			podcastOptions.items.hide();
			podcastOptions.items.slice(from, to).show();
			// $("#ListaPodcast li:gt("+from+"):lt("+podcastOptions.itemsPerPage+")").show();
			return false;
		}


		podcastOptions.items= $("#ListaPodcast li");
		podcastOptions.itemsPerPage = 10000;
		podcastOptions.itemCount = $("#ListaPodcast li").length;
		podcastOptions.anchor = "#podcastPage";

		if (podcastOptions.itemCount >= podcastOptions.itemsPerPage) {
			var panel = $(".bloccoSx .paginazione");
			panel.pagination(podcastOptions.itemCount, {
				items_per_page: podcastOptions.itemsPerPage,
				num_edge_entries: 5,
				num_display_entries: podcastOptions.itemsPerPage,
				prev_text:"&lt;",
				next_text:"&gt;",
				link_to: podcastOptions.anchor,
				callback: podcastPageselectCallback
			});
			skipNextNielsen = true;
			podcastPageselectCallback(0, panel);
		}
	}
};

function replaceMSWord(str) {
	str = str.replace(/…/g,'...');
	str = str.replace(/“/g,'"');
	str = str.replace(/”/g,'"');
	str = str.replace(/’/g,"'");
	return str;
};
function downloadPodcast(path,name,est) {
	if(typeof est == 'undefined') {est = "";}
	if(name == null && name =="") {name = "RaiTvPodcast";}

	var p = new RegExp('[;àèìòù&"/\\\\]','g');
	name = name.replace(p,'_');

	if(path != null && path !="") {
		window.open("http://www.rai.tv/services/download.jsp?path="+escape(path)+"&name="+escape(replaceMSWord(name))+"&est="+est,"podcast");
	}
	return false;
};

/* *********** Fine Podcast ********** */

/* *******  Archivio Programma ******* */
function programmaArchivioInitPagination(){};
Radio3.prototype.programmaArchivioInitPagination = function() {
	/* create pagination element */
	var panel = $(".bloccoSx .paginazione");
	if (panel.length == 0) {
		panel = $("#SitoPagination");
	}
	if ($(".bloccoSx .lancioWide").length > 0 && panel.length > 0 && $('#ListaPodcast').length == 0) {
		var programmaArchivioOptions = new Array();
		// panel.appendTo($('.bloccoSx'));

		function programmaArchivioPageselectCallback(page_id, panel) {
			setNielsen(location.href+'?page='+page_id);
			// nasconde il link PaginaPrecedente se siamo alla prima pagina
			$("span.prev.current", panel).css('visibility', 'hidden');
			// nasconde il link PaginaSuccessiva se siamo all'ultima pagina
			$("span.next.current", panel).css('visibility', 'hidden');

			// effettua la paginazione vera e propria
			var from = page_id * programmaArchivioOptions.itemsPerPage;
			var to = ( page_id + 1 ) * programmaArchivioOptions.itemsPerPage;
			programmaArchivioOptions.items.hide();
			programmaArchivioOptions.items.slice(from, to).show();

			var st = $('.bloccoSx').offset();
			if (st) {
				st = st.top - 25;
				if ($('html,body').scrollTop() >= st)
					$('html,body').animate({scrollTop: st}, 500);
			}

			return false;
		}
		programmaArchivioOptions.itemsPerPage = 10;
		programmaArchivioOptions.items = $(".bloccoSx .lancioWide");
		programmaArchivioOptions.itemCount = programmaArchivioOptions.items.length;

		if (programmaArchivioOptions.itemCount<=programmaArchivioOptions.itemsPerPage) {
			//$("#SitoPagination").prev().hide();
			panel.hide();
			//$("#SitoPagination").next().hide();
		} else {
			//$("#SitoPagination").prev().show();
			panel.show();
			//$("#SitoPagination").next().show();
			//programmaArchivioOptions.anchor = "#podcastPage"

			panel.pagination(programmaArchivioOptions.itemCount, {
				items_per_page: programmaArchivioOptions.itemsPerPage,
				num_edge_entries: 5,
				num_display_entries: programmaArchivioOptions.itemsPerPage,
				prev_text:"&lt;",
				next_text:"&gt;",
				link_to: programmaArchivioOptions.anchor,
				callback: programmaArchivioPageselectCallback
			});
			skipNextNielsen = true;
			programmaArchivioPageselectCallback(0, panel);
		}
	}
};
/* ***** Fine Archivio Programma ***** */


/* ************* Musica ************** */
function musicaApplyFilter(anno, mese, giorno) {

	if(anno == undefined)
	{
		anno= dataEvento.Y;
		mese = dataEvento.M;
		giorno = dataEvento.D;
	}
	var n = $("#ScrollConcerti");
	$("li", n).hide();
	var filterMonth=".dateMese_"+anno+mese;
	var filter =".date_"+anno+mese+giorno;
	$("li"+filterMonth, n).show();

	if ($("li"+filterMonth+":visible", n).length == 0) {
		$('.tit_prossimi_concerti span', n).html("Nessun concerto trovato");
		$('.tit_prossimi_concerti', n).show();
	} else {
		$('.tit_prossimi_concerti', n).hide();
		$("li.titolo.date_"+dataEvento.Y+dataEvento.M, n).show();
	}

	var datepicker = $('#datepicker');
	var tddays = datepicker.find('table.ui-datepicker-calendar td');
	var days = {};
	tddays.each(function() {
		var t = parseInt($.trim($(this).find('a').text()),10);
		if (t != NaN && t > 0) {
			days[t] = this;
			console.log(days[t]);
			$(this).find('a').replaceWith("<span class=\"ui-state-default\">" + t + "</span>");
		}
	});
	$('.concertiHtml li.'+filterMonth).each(function() {
		var c = $(this).attr('class');
		var d = c.replace(/.*date_([0-9]{4})([0-9]{2})([0-9]{2}).*/i, '$3');
		// console.log(d);
		d = parseInt(d, 10);
		if (days[d]) {
			//$(days[d]).addClass('ui-state-active');
		//	alert(days[d]);
			$(days[d]).find('span').replaceWith("<a href=\"#\" class=\"ui-state-default ui-state-highlight ui-state-active\">"+d+"</a>");

			//$(days[d]).click(function(){alert("OK");});
			//$(days[d]).attr("href","?y="+anno+"&m="+mese);
		}
	});
	$(".ui-datepicker-calendar td").removeAttr("onclick");
/*	$(".ui-datepicker-calendar td>a:not(.ui-state-active)").click(function(){
		return false;
	});*/

	$(".ui-datepicker-calendar td>a.ui-state-active").click(function(){
			$(".ui-datepicker-calendar td>a.ui-state-active").addClass("ui-state-highlight");
			$(this).removeClass("ui-state-highlight");
			var day = $(this).text();
			day = (day <10?'0':'')+""+day;
			myday = ".date_"+anno+mese+day;
			setNielsen(location.href+'#showDate='+anno+mese+day);
			var trovato = false;
			var lastItem = 0;
			var heightScroll = 0;
			$('.concertiHtml li.'+filterMonth).each(function(i) {
			if(!trovato){
				heightScroll = heightScroll + $(this).outerHeight();
				if($(this).hasClass(myday))
					{
						trovato = true;
						lastItem = $(this).outerHeight();
					}
				}
			});
		$.scrollTo('#ScrollConcerti',{offset:-50});
		$('#ScrollConcerti .scroll-pane')[0].scrollTo(heightScroll-lastItem);
		return false;
	});
	//AGGIUNGO CONTROLLO SU GIORNI CALENDARIO
	/* $(".ui-datepicker-calendar td>a").attr("class","ui-state-default");
	$(".ui-datepicker-calendar td>a").each(function(){

					$(this).parent().removeAttr("onclick");
					var day = $(this).text();
					day = (day <10?'0':'')+""+day;
					var item = $("li"+filterMonth+":visible", n); // mi serve la lista die
					//var item = $(xmlEventi).find("gi[d='"+day+"/"+month+"/"+year+"']"+condizioneFiltro);
					//alert(day+"/"+month+"/"+year+" --- " + item.length);
					var arrJav = $.makeArray(item );
					if( arrJav.length > 0) {
						var dateLi = "date_"+anno+mese+day;
						for(i=0; i<arrJav.length; i++){

							if(dateLi == arrJav.item[i]){alert("OK");}
						}
						var found= $.inArray(dateLi,item);
						if(found != "-1") {
							$(this).attr("class","ui-state-default ui-state-active");
						} else {
							$(this).attr("class","ui-state-default ui-state-highlight ui-state-active");
						}
						$(this).attr("href","?y="+anno+"&m="+mese+"&d="+day);
					} else {
						if(dataEvento.D+dataEvento.M+dataEvento.Y == day+""+mese+""+anno) {
							$(this).replaceWith("<span class=\"ui-state-default ui-state-active\">" + $(this).text() + "</span>");
						} else {
							$(this).replaceWith("<span class=\"ui-state-default\">" + $(this).text() + "</span>");
						}
					}
				});  */
	//FINE CONTROLLO
	scrollConcertiScrollbar();
	return;
}
	function setTodayConcertListScroll(dataEvento) {
		var myMonth=".dateMese_"+dataEvento.Y+dataEvento.M;
		var myday =".date_"+dataEvento.Y+dataEvento.M+dataEvento.D;
		var trovato = false;
		var lastItem = 0;
		var heightScroll = 0;
		$('.concertiHtml li.'+myMonth).each(function(i) {
		if(!trovato){
			heightScroll = heightScroll + $(this).outerHeight();
			if($(this).hasClass(myday))
				{
					trovato = true;
					lastItem = $(this).outerHeight();
				}
			}
		});
		console.log(myday);
		$('#ScrollConcerti .scroll-pane')[0].scrollTo(heightScroll-lastItem);
	}
/************************NON PIU' USATE ***********************************/
// function musicaApplyMonthFilter(y, m) {
	// $("#ScrollConcerti ul.date").hide();
	// $("#ScrollConcerti h2.date").hide();
	// for (var d = 1; d<32; d++) {
		// var s = y+(m<10?'0':'')+m+(d<10?'0':'')+d;
		// $("#ScrollConcerti .date_"+s).show();
	// }
	// $("#ScrollConcerti ul.date:has(li:hidden)").prev().hide();
	// $("#ScrollConcerti ul.date:has(li:visible)").prev().show();
	// $("#ScrollConcerti ul.date:hidden").prev().hide();
// }

// function musicaApplyDateFilter(dataPartenza) {
	// var n = $("#ScrollConcerti");

	// $('.tit_prossimi_concerti', n).hide();
	// $("li.date", n).hide();
	// if (dataEvento != null) {
		// $(".date_"+dataPartenza, n).show();
		// if (musicaDefaultDate == null && $('.tit_prossimi_concerti', n).length > 0) {
			// $('.tit_prossimi_concerti', n).show();
			// $(".date_"+dataPartenza, n).nextAll().andSelf().show();
		// }
	// }
	// return;
// }
/***************************************************************************/
function scrollConcertiScrollbar() {
	try {
		$('#ScrollConcerti .scroll-pane').jScrollPane({
			showArrows: false,
			scrollbarWidth: 16,
			dragMinHeight: 100,
			reset:true
		});
	} catch(e) {
	}
}

		/********************Calendario**************************/
//musica_IConcertidelmattino  - musica_IconcertidelQuirinale - musica_Domenicainconcerto - musica_IConcertidiPalazzoVenezia - musica_RitornodiFiamma

			var yearToday;
			var monthToday;
			var	dayToday;

			var yearChoice;
			var monthChoice;

			var yearDefault;
			var monthDefault;

			var xmlEventi;
			var xmlEventiUrl = "";
			var htmlEventiUrl = [];

			// var programmiMusicali = {
				// "musica_IConcertidelmattino" : "CM",
				// "musica_IConcertidelQuirinale" : "CQ",
				// "musica_Domenicainconcerto" : "DC",
				// "musica_IConcertidiPalazzoVenezia" : "PV",
				// "musica_RitornodiFiamma" : "RF",
				// "musica_OperaLirica" : "OL",
				// "musica_Jazz" : "JZ"
			// };
			var programmiMusicali = {
				"musica_IConcertidelmattino" : "CM",
				"musica_IConcertidelQuirinale" : "CQ",
				"musica_Domenicainconcerto" : "DC",
				"musica_IConcertidiPalazzoVenezia" : "PV",
				"musica_RitornodiFiamma" : "RF",
				"musica_IlCartellonediRadio3Suite" : "CS",
				"musica_LaStanzadellaMusica" : "SM"
			};

			var dataEvento = null;



			function createDatePicker(dataEvento) {
				var yearDefault = dataEvento.Y;
				var monthDefault = dataEvento.M;
				var dayDeafault = dataEvento.D;
				$("#datepicker").datepicker('destroy');
				$("#datepicker").datepicker(
					{	dateFormat:'dd MM, yyyy',
						defaultDate:new Date(yearDefault,(monthDefault-1),dayDeafault),
						//minDate: '-2M', maxDate: '+4M',
						onChangeMonthYear: function(year, month, day, inst) {
							yearChoice = year;
							monthChoice =  (month<10?'0':'')+month;
							dayChoice =(day<10?'0':'')+day;
							setNielsen(location.href+'#showMonth='+yearChoice+monthChoice);
							xmlEventiUrl = $(xmlAnni).find("anno[label='"+yearChoice+"']").attr("html");
							if (xmlEventiUrl != undefined) {
								$('.concertiHtml').load(xmlEventiUrl, function() {
									musicaApplyFilter(yearChoice,monthChoice, dayChoice);
								});
							} else {
								var n = $("#ScrollConcerti");
								$("li", n).hide();
								$('.tit_prossimi_concerti span', n).html("Nessun concerto trovato");
								$('.tit_prossimi_concerti', n).show();
							}
						}
					},$.datepicker.regional['it']
				);

			};


			__htmlQueueIndex =  0;
			__htmlLoading =  0;

			function stringToDoc(s) {
			   var doc;
			   if (window.ActiveXObject) {
				   doc = new ActiveXObject('Microsoft.XMLDOM');
				   doc.async = 'false';
				   doc.loadXML(s);
			   }
			   else
				   doc = (new DOMParser()).parseFromString(s, 'text/xml');
			   return (doc && doc.documentElement && doc.documentElement.tagName != 'parsererror') ? doc : null;
			};

			function waitToRender() {
				setTodayConcertListScroll(dataEvento);
			}

			function initPageConcerti() {
				if (  $(document).getUrlParam("y") != null &&
					  $(document).getUrlParam("m") != null &&
					  $(document).getUrlParam("d") != null) {
						dataEvento = {	Y: $(document).getUrlParam("y"),
										M: $(document).getUrlParam("m"),
										D:$(document).getUrlParam("d")
						};
				}
			 	yearToday = musicaTodayY;
				monthToday = (musicaTodayM<10?'0':'')+musicaTodayM;
				dayToday = (musicaTodayD<10?'0':'')+musicaTodayD;
				dataEvento = {Y: yearToday, M: monthToday, D: dayToday};
				$.ajax({
					type: "GET",
					url: prefixDevil+"/dl/radio3/xml/"+blockname+".html",
					dataType: "text",
					success: function(xml){
						xmlAnni=stringToDoc(xml);
						if (musicaFiltroAnni != null) {
							/* xmlEventiUrl = $(xmlAnni).find("anno[label='"+musicaFiltroAnni+"']").attr("xml"); */
							htmlEventiUrl.push($(xmlAnni).find("anno[label='"+musicaFiltroAnni+"']").attr("html"));
						} else {
							var annoEvento = yearToday;
							if(dataEvento != null) {
								annoEvento = dataEvento.Y;
							}

							xmlEventiUrl = $(xmlAnni).find("anno[label='"+annoEvento+"']").attr("html");
							$('.concertiHtml').load(xmlEventiUrl, function() {
								musicaApplyFilter();
							});
						}
						createDatePicker(dataEvento);
						setTimeout(waitToRender, 500);
					}
				 });
			};
		/******************** FINE Calendario**************************/

// uses musicaFiltroConcerto
// uses musicaTodayM
// uses musicaTodayY
// hardcoded: stagione dal settembre ad agosto
var musicaConcertiMinY = 2008; // si parte da settembre 2008: stagione 2008-2009
var musicaConcertiCurrY = null;
var musicaConcertiXml = prefixDevil+"/dl/radio3/ajax_concerti.html";
function musicaInitPannelloConcerti() {
	$('#MusicaConcerti .nav').append($('<span class="stagione"></span>'));
	$('#MusicaConcerti .nav .stagione').before($('<span class="prev">&lt; Prec</span>').click(musicaConcertiPrevYear));
	$('#MusicaConcerti .nav .stagione').after($('<span class="next">Succ &gt;</span>').click(musicaConcertiNextYear));
	if (musicaTodayM >= 9) {
		// il mese corrente appartiene alla stagione musicaTodayY / musicaTodayY+1
		musicaConcertiSetYear(musicaTodayY);
	} else {
		// il mese corrente appartiene alla stagione musicaTodayY-1 / musicaTodayY
		musicaConcertiSetYear(musicaTodayY-1);
	}
}
function musicaConcertiPrevYear() {
	musicaConcertiSetYear(musicaConcertiCurrY - 1);
	setNielsen(location.href+'#showYear='+musicaConcertiCurrY);
}
function musicaConcertiNextYear() {
	musicaConcertiSetYear(musicaConcertiCurrY + 1);
	setNielsen(location.href+'#showYear='+musicaConcertiCurrY);
}
function musicaConcertiSetYear(y) {
	if (y < musicaConcertiMinY)
		y = musicaConcertiMinY;
	if (y > musicaTodayY)
		y = musicaTodayY;

	musicaConcertiCurrY = y;


	$('#MusicaConcerti .nav .prev').css('visibility', (y <= musicaConcertiMinY?'hidden':'visible'));
	$('#MusicaConcerti .nav .next').css('visibility', (y >= musicaTodayY?'hidden':'visible'));

	$('#MusicaConcerti .nav .stagione').html('Stagione '+y+'-'+(y+1));
	var t = $('#MusicaConcerti .tabs');
	t.empty();
	var l = $('<ul class="tab mesi_left anno_'+y+'"></ul>');
	var m = 1;
	for (m = 9; m<13; m++) {
		l.append($('<li></li>').append(musicaConcertiBuildLink(y, m)));
	}
	y=y+1
	for (m = 1; m<3; m++) {
		l.append($('<li></li>').append(musicaConcertiBuildLink(y, m)));
	}
	t.append(l);
	l = $('<ul class="tab mesi_right anno_'+y+'"></ul>');
	for (m = 3; m<9; m++) {
		l.append($('<li></li>').append(musicaConcertiBuildLink(y, m)));
	}
	t.append(l);
}
function musicaConcertiBuildLink(y, m) {
	var mm = new Array('Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre');
	var n = $('<a href="?y='+y+'&m='+m+'">'+mm[m-1]+' '+y+'</a>');
	//n.click(function(){document.location=('?y='+y+'&m='+m); musicaApplyMonthFilter(y, m); $(document.body).css('scrollTop', '0px'); return false;});
	return n;
}
/* *********** Fine Musica *********** */

// inserire qui dentro tutto quello che serve per inizializzare la pagina
Radio3.prototype.init = function() {
	this.paneProgrammi();
	this.initScrollbars();
	this.playlist();
	this.initCaroselloContenuti();
	this.initLanciHP();
	this.initFocus();
	this.initPalinsesti();
	this.initPodcastPagination();
	this.programmaArchivioInitPagination();
	this.initLanciGrandi();
};


function openAudioPopup(u) {
	var href = u;
	if (!href || href == '') {
		href = $(this).attr('href');
	}
	var origHref = href;
	href = href.replace('.html', '.xml');
	// alert('Getting xml...\n\n'+href);
	var loadingAnimation = $('#loadingAnimation');
	if (loadingAnimation.length == 0) {
		loadingAnimation = $('<img id="loadingAnimation" alt="Caricamento in corso... si aprirà un popup" src="/dl/portale/image/loading.gif" height="18" style="vertical-align: top" valign="top" />');
		$('.contLinkAudio a').append(loadingAnimation);
	}
	loadingAnimation.show();
	var prog = '';
	$.get(
		href,
		null,
		function(data, textStatus, req) {
			loadingAnimation.remove();
			var t = '';
			var prog = '';
			var desc = '';
			var l = '';

			var xml = $(data);
			t = xml.find('textUnit[type=Title] text').text();
			prog = xml.find('parent[name=Programmi] parent[name=Radio3]').parents('category').attr('name');
			desc = xml.find('textUnit[type=Testo breve] text').text();
			l = xml.find('audioUnit[type=Rai Tv Audio] url').text();
			if (typeof(l) == 'undefined' || l == 'undefined' || l == '') {
				var rssL = xml.find('linkUnit[type=Rai Tv RSS Link] link').text();
			}

			if (prog == undefined) {
				prog = '';
			}

			if (typeof(l) != 'undefined' && l != 'undefined' && l != '') {
				var w = 450;
				var h = 340;
				var x = (screen.width-w)/2;
				var y = (screen.height-h)/2;
				var s = "width="+w+", height="+h+", status=no, menubar=no, toolbar=no, scrollbar=no, top="+y+", left="+x;
				var popup = window.open('/dl/radio3/popupaudio.html?u='+encodeURIComponent(l)+'&p='+encodeURIComponent(prog)+'&d='+encodeURIComponent(desc)+'&t='+encodeURIComponent(t), 'RadioRaiPlayer', s);
				popup.focus();
			} else if (typeof(rssL) != 'undefined' && rssL != 'undefined' && rssL != '') {
				var w = 550;
				var h = 440;
				var x = (screen.width-w)/2;
				var y = (screen.height-h)/2;
				var s = "width="+w+", height="+h+", status=no, menubar=no, toolbar=no, scrollbar=no, top="+y+", left="+x;
				var popup = window.open('/dl/radio3/popupaudioPodcast.html?u='+encodeURIComponent(rssL)+'&p='+encodeURIComponent(prog)+'&d='+encodeURIComponent(desc)+'&t='+encodeURIComponent(t), 'RadioRaiPlayer', s);
				popup.focus();
			} else {
				var u = origHref.replace('.html', '-popup.html');
				var o = "scrollbars=no,status=0,width=447,height=282";
				window.open(u, 'Radio3Popup', o);
				return false;
			}
		}
	);
	setNielsen(location.href+'&p='+encodeURIComponent(prog)+'&t='+encodeURIComponent(t));
	return false;
};

var videoBannerSL = '';
var videoBanner = '';

var bannerVars = {};
bannerVars['300x250']   = '';
bannerVars['300x100^a'] = '';
bannerVars['300x100^b'] = '';
bannerVars['leaderboard'] = '';
// bannerVars['300x250']   = 'rai_news^rai_news_tg2_medium_box_var^300x250^';
// bannerVars['300x100^a'] = 'rai_news^rai_news_tg2_3_1_rect_var^300x100^';

// bannerVars['300x250']   = 'rai_home^rai_home^300x250^up';
// bannerVars['300x100^a'] = 'rai_home^rai_home_3_1_rect_var';
// bannerVars['300x100^b'] = 'rai_home^rai_home^300x100^b';

var bannercode = '';
var Banners = {};
Banners.reloadAll = function() {
	// async call
	setTimeout(Banners.load250, 10);
};
Banners.tappo300x250 = '';

Banners.load250 = function() {
	// console.log('Loading banner 300x250');
	var v = null;
	v = bannerVars['300x250'];
	bannercode = '';

	if (v != null && v != '' && $('.bloccoDx  .banner300x250').length > 0) {
		var url = getAdagioURL(
			v,
			'',
			"$('.bloccoDx  .banner300x250').html(bannercode).show();Banners.load100a();",
			"$('.bloccoDx  .banner300x250').html(Banners.tappo300x250).show();Banners.load100a();",
			'',
			'');
		// console.log('Loading banner from '+url);
		$.getScript(url);
	} else {
		 $('.bloccoDx  .banner300x250').hide();
		Banners.load100a();
	}
};
Banners.load100a = function() {
	// console.log(bannercode)
	// console.log('Loading banner 300x100^a');
	var v = null;
	v = bannerVars['300x100^a'];
	bannercode = '';

	if (v != null && v != '' && $('.bloccoDx  .banner300x100:eq(0)').length > 0) {
		var url = getAdagioURL(
			v,
			'',
			"$('.bloccoDx  .banner300x100:eq(0)').html(bannercode).show();Banners.load100b();",
			"$('.bloccoDx  .banner300x100:eq(0)').html('').hide();Banners.load100b();",
			'',
			'');
		// console.log('Loading banner from '+url);
		$.getScript(url);
	} else {
		 $('.bloccoDx  .banner300x100:eq(0)').hide();
		Banners.load100b();
	}
};
Banners.load100b = function() {
	// console.log(bannercode)
	// console.log('Loading banner 300x100^b');
	var v = null;
	v = bannerVars['300x100^b'];
	bannercode = '';

	if (v != null && v != '' && $('.bloccoDx  .banner300x100:eq(1)').length > 0) {
		var url = getAdagioURL(
			v,
			'',
			"$('.bloccoDx  .banner300x100:eq(1)').html(bannercode).show();Banners.loadLeaderboard();",
			"$('.bloccoDx  .banner300x100:eq(1)').html('').hide();Banners.loadLeaderboard();",
			'',
			'');
		// console.log('Loading banner from '+url);
		$.getScript(url);
	} else {
		 $('.bloccoDx  .banner300x100:eq(1)').hide();
		Banners.loadLeaderboard();
	}
};
Banners.loadLeaderboard = function() {
	// console.log(bannercode)
	// console.log('Loading Leaderboard');
	var v = null;
	v = bannerVars['leaderboard'];
	bannercode = '';

	if (v != null && v != '' && $('.box_Header .Leaderboard').length > 0) {
		var url = getAdagioURL(
			v,
			'',
			"$('.box_Header  .Leaderboard').html(bannercode).show();",
			// "$('.box_Header  .Leaderboard').html('').hide();",
			"$('.box_Header  .Leaderboard').html('');",
			'',
			'');
		// console.log('Loading banner from '+url);
		$.getScript(url);
	} else {
		// $('.box_Header  .Leaderboard').hide();
	}
};



if (typeof(Silverlight) == 'undefined' || typeof(Silverlight.createObject) == 'undefined') {
	// $.getScript('/dl/portale/silverlight/Silverlight.js');
	document.write('<script type="text/javascript" src="/dl/portale/silverlight/Silverlight.js">;</script>');
}
if (typeof(getAdagioURL) == 'undefined') {
	// $.getScript('http://ad2.neodatagroup.com/uploads/js/sid49jq.js');
	document.write('<script type="text/javascript" src="http://ad2.neodatagroup.com/uploads/js/sid49jq.js">;</script>');
}
var radio3 = new Radio3();
radio3.ensureConsoleLog();
var skipBanners = false;
$(function() {
	radio3.init();
	radio3.ensureConsoleLog();
	if (!skipBanners) {
		Banners.reloadAll();
	}
	$('a').each(function(){var a = $(this).attr('href'); if (!!a) {a = a.replace(/&amp;/g, '&');$(this).attr('href', a);}});


	/* carico auto SL foto/video */
	var sL = $('.contLinkFoto .sezione a');
	if (sL.length > 0) {
		$('.contLinkFoto .sezione a').click();
	}

	// sovrascrivo alcune funzioni definite in jquery.xslt-native.js
	window.stringToDoc = function(s) {
		var doc = null;
		try {
			if (window.ActiveXObject) {
				try {
					doc = new ActiveXObject('Microsoft.XMLDOM');
					doc.async = 'false';
					doc.loadXML(s);
				} catch (e1) {
					doc = null;
				}
				if (doc == null || (doc.parseError && doc.parseError.errorCode)) {
					// var t = unescape( encodeURIComponent( s ) ); // encode -> utf8
					// var t = decodeURIComponent( escape( s ) ); // decode da utf8
					// var t = s.replace("<?xml version='1.0' encoding='ISO-8859-1'?>", "");
					var t = unescape( encodeURIComponent( s.replace("<?xml version='1.0' encoding='ISO-8859-1'?>", "") ));
					doc = new ActiveXObject('Microsoft.XMLDOM');
					doc.async = 'false';
					doc.loadXML(t);
				}
			} else {
				doc = (new DOMParser()).parseFromString(s, 'text/xml');
			}
		} catch (e) {
		}
		return (doc && doc.documentElement && doc.documentElement.tagName != 'parsererror') ? doc : null;
	};
	window.transformXml = function(xml,xsl) {
		var r = '';
		// code for IE
		try {
			if (window.ActiveXObject) {
				r = xml.transformNode(xsl);
			} // code for Mozilla, Firefox, Opera, etc.
			else if (document.implementation && document.implementation.createDocument)
			{
				xsltProcessor=new XSLTProcessor();
				xsltProcessor.importStylesheet(xsl);
				r = xsltProcessor.transformToFragment(xml,document);
			}
		} catch (e) {
			r = '';
		}
		return r;
	};


	/*
	sms = {};
	sms.xmlUrl = '/radio3sms/smsradiotre34.xml';
	sms.divId = 'sms';
	*/

	if (typeof(smsParams) == 'undefined') {
		smsParams = {};
		smsParams.xmlUrl = '/radio3sms/smsradiotre.xml';
		smsParams.xslUrl = '/dl/xsl/radio3N_sms.xsl';
		smsParams.divId = 'sms';
	}
	if (typeof(smsParams) != 'undefined') {
		var xmlUrl = smsParams.xmlUrl;
		var xslUrl = smsParams.xslUrl;
		var divId = smsParams.divId;
		if (!divId) {
			divId = 'sms';
		}
		var rnd = new Date();
		rnd = rnd.getTime();
		xmlUrl += '?'+rnd;
		var cycleSms = function() {
			var n = $("#"+divId).find('div.lastSms');
			var m = n.find('>div');
			var numTries = n.data('smsNumTries');
			if (!numTries) {
				numTries = 0;
			}
			numTries++;
			n.data('smsNumTries', numTries);
			if (m.length == 0 && numTries < 10) {
				setTimeout(cycleSms, 50);
			}
			if (n.data('cycleInited') == true) {
				return;
			}
			n.data('cycleInited', true);
			var c = m.length;
			var i = 0;
			// Evitiamo strani comportamenti di exploder:
			// div.lastSms dovra' avere un solo sms alla volta come figlio >_>
			//
			// Posso chiamare "remove()" senza problemi,
			// perche' mi resta il riferimento nell'array "m"
			// (nota: remove() elimina dati ed eventi associati, ma qui non ce ne sono)
			var next = function() {
				var p = i;
				i = (i+1) % c;
				$(m.get(p)).fadeOut(500, function() {
					$(m.get(p)).hide().remove();
					n.append($(m.get(i)));
					$(m.get(i)).fadeIn(500);
				});
			};
			if (window.lastSmsInterval) {
				clearInterval(window.lastSmsInterval);
			}
			if (c>1) {
				m.hide().remove();
				n.append($(m.get(i)));
				$(m.get(i)).show();
				window.lastSmsInterval = setInterval(next, 15000);
			} else {
				m.show();
			}
		};
		var callback = cycleSms;
		if (xslUrl == '/dl/xsl/radio3N_smsFull.xsl') {
			callback = smsFullPagination;
		}
		if($('#'+divId).length > 0) {
			$("#"+divId).xslt({
				xmlUrl: xmlUrl,
				xslUrl: xslUrl,
				callbackPostRender: callback
			});
		};
	}

});

function smsFullPagination() {
	var n = $('#smsFull');
	if (n.length > 0 && typeof($.fn.pagination) == 'function') {
		var opts = new Array();

		function paginationCallback(page_id, panel) {
			setNielsen(location.href+'?page='+page_id);
			// nasconde il link PaginaPrecedente se siamo alla prima pagina
			$("span.prev.current", panel).css('visibility', 'hidden');
			// nasconde il link PaginaSuccessiva se siamo all'ultima pagina
			$("span.next.current", panel).css('visibility', 'hidden');

			// // duplica i link di navigazione nei due div .pagineTop e .pagineBottom
			// var p1 = panel.clone(true);
			// var p2 = panel.clone(true);
			// $("#PagePodcast .pagineTop").empty().append(p1.children());
			// $("#PagePodcast .pagineBottom").empty().append(p2.children());

			// effettua la paginazione vera e propria
			var from = page_id * opts.itemsPerPage;
			var to = ( page_id + 1 ) * opts.itemsPerPage;
			opts.items.hide();
			opts.items.slice(from, to).show();
			return false;
		}


		opts.items= $("#smsFull li");
		opts.itemsPerPage = 15;
		opts.itemCount = opts.items.length;
		opts.anchor = "#PageContents";

		if (opts.itemCount >= opts.itemsPerPage) {
			var panel = $(".bloccoSx .paginazione");
			panel.pagination(opts.itemCount, {
				items_per_page: opts.itemsPerPage,
				num_edge_entries: 5,
				num_display_entries: opts.itemsPerPage,
				prev_text:"&lt;",
				next_text:"&gt;",
				link_to: opts.anchor,
				callback: paginationCallback
			});
			skipNextNielsen = true;
			paginationCallback(0, panel);
		}
	}
};

var skipNextNielsen = false;
var setNielsen = function(url) {
	if (skipNextNielsen) {
		skipNextNielsen = false;
		return false;
	}

	Banners.reloadAll();

	if (url == undefined){url = location.href};
	if (url.match("^/dl")){url = "http://www.radio3.rai.it"+url};
	if (url.match("www.rai.tv")){url = url.replace(/www\.rai\.tv/gi, 'www.radio3.rai.it')};
	url = encodeURIComponent(url);
	// Zozzata richiesta da nielsen
	url = url.replace(/%2F/g,'/');
	var rnd = (new Date()).getTime();
	$("#nielsen img").attr("src","//secure-it.imrworldwide.com/cgi-bin/m?ci=rainet-it&cg=0&si="+url+"&rnd="+rnd);
};

function openPopUpGeneric(url,title,width,height) {
	window.open(url,title, "width="+width+", height="+height+", status=no, menubar=no, toolbar=no scrollbar=no");
	return false;
};


function renderPuntateHomepage(puntate, printHtml) {
	puntate = puntate.sort(function(a, b) {
		var da = a.date;
		var db = b.date;
		da = da.replace(/(\d\d)[\/-](\d\d)[\/-](\d\d\d\d)/, '$3$2$1');
		db = db.replace(/(\d\d)[\/-](\d\d)[\/-](\d\d\d\d)/, '$3$2$1');
		// console.log(a,b,da,db);
		var r = 0;
		if (da<db) {
			r = -1;
		} else if (da>db) {
			r = 1;
		}
		return -r; // descending order!
	});

	var html = '';
	for (var i = 0; i<puntate.length; i++) {
		var p = puntate[i];
		var h = '<div class="lancioWide">';
		h += '<div class="Top"></div>';
		h += '<div class="Mid">';
		if (p.image != '') {
			h += '		<a class="linkPuntata" href="'+p.href+'">';
			h += '			<img src="'+p.image+'" class="imgPuntata" />';
			h += '		</a>';
		}
		if (p.title != '' && p.date != '') {
			h += '		<a class="linkPuntata" href="'+p.href+'">';
			h += '			<h2>'+(p.noPrintDate == 'true'?'':'<span class="date">'+p.date+'</span>')+p.title+'</h2>';
			h += '		</a>';
		}
		h += '	<p>'+p.abstract+'</p>';
		for (var j = 0; j<p.links.length; j++) {
			h += '		<div class="sezione"><a href="'+p.links[j].link+'">'+p.links[j].title+'</a></div>';
		}
		h += '</div>';
		h += '<div class="Bot"></div>';
		h += '</div>';
		html += h;
	}
	if (!printHtml) {
		return html;
	} else {
		document.write(html);
	}
}

