// ==ClosureCompiler==
// @compilation_level SIMPLE_OPTIMIZATIONS
// @output_file_name replaytv.dev.min.js
// ==/ClosureCompiler==

// ADD YOUR CODE HERE

window['replaySmoothDomain'] = 'http://smoothreplay.rai.it';

var doFocus = function(t) {
  try {
    if (!!t && t != '') {
      var n = $('#' + t);
      if (n.length == 0) {
        n = $('a[name=' + t + ']');
      }
      if (n.length != 0) {
        n[0].focus();
        try {
          var top = n.slice(0, 1).offset();
          top = top.top - 20;
          if (!!top) {
            $('html,body').animate({scrollTop: top}, 500);
          }
        } catch (e) {
        }
      }
    }
  } catch (e) {
  }
  return false;
};

var ReplayTV = function() {
  var self = this;

  self.data = {};
  self.chanCodes = {
    'Rai Uno': '1',
    'Rai Due': '2',
    'Rai Tre': '3',
    'Rai 5': '31',
    '1': 'Rai Uno',
    '2': 'Rai Due',
    '3': 'Rai Tre',
    '31': 'Rai 5'
  };
  self.chanNames = {
    'Rai Uno': 'RaiUno',
    'Rai Due': 'RaiDue',
    'Rai Tre': 'RaiTre',
    'Rai 5': 'RaiCinque',
    '1': 'RaiUno',
    '2': 'RaiDue',
    '3': 'RaiTre',
    '31': 'RaiCinque'
  };
  self.chanLogos = {
    '1': '/dl/replaytv/images/logo_raiuno.png',
    '2': '/dl/replaytv/images/logo_raidue.png',
    '3': '/dl/replaytv/images/logo_raitre.png',
    '31': '/dl/replaytv/images/logo_rai5.png'
  };
  self.chanLogosSmall = {
    '1': '/dl/RaiTV/images/loghi/logo_rai1.png',
    '2': '/dl/RaiTV/images/loghi/logo_rai2.png',
    '3': '/dl/RaiTV/images/loghi/logo_rai3.png',
    '31': '/dl/RaiTV/images/loghi/logo_rai5.png'
  };
  self.chanSites = {
    '1': 'http://www.raiuno.rai.it',
    '2': 'http://www.raidue.rai.it',
    '3': 'http://www.raitre.rai.it',
    '31': 'http://www.rai5.rai.it'
  };
  self.params = {};
  self.currChan = null;
  self.currDay = null;
  self.currSchedule = null;
  self.currVideo = null;
  self.currVideoItem = null;
  self.tryPlayVideo = true;
  self.btnDays = {};
  self.btnChans = {};
  self.vid2data = {};
  self.vid2item = {};


  self.setNielsen = function(u, a) {//url,addictional parameter
    try {
      if (u == undefined || u == null || u == '') {
        u = '' +
            location.protocol +
            '//' +
            location.hostname +
            location.pathname;
        if (location.hash) {
          u += ('' + location.hash).replace('#', '?');
        } else if (location.search) {
          u += '' + location.search;
        }
      }
      if (a != undefined && a != null && a != '') {
        u += '&' + a;
      }

	  if(window.htmlLoad != undefined)	{
		  if(window.htmlLoad == false){
			  u += '&' + 'refresh_ce-awe';
		  }
	  }
      // console.log("{url} = "+ u);
      // $((function(u) {
      //   return function() {
          setNielsen(u);
      //   }
      // })(u));
    } catch (e) {
      try {
        console.log(e);
      } catch (ex) {
      }
    }
  };
  self.initDays = function() {

    var days = ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab'];
    var months = ['gen', 'feb', 'mar', 'apr', 'mag', 'giu',
                  'lug', 'ago', 'set', 'ott', 'nov', 'dic'];
    var d = getServerTime();

    var num = 7;
    // qualche controllo per sapere con certezza da che giorno partire?
    // if (d.getHours()....??
    // controllo l'esistenza dei file? qualche sync "HEAD ... http/1.0" ... :/

    d.setSeconds(0);
    d.setMinutes(0);
    d.setHours(2); // evitiamo problemi con il passaggio all'ora legale...
    var t = d.getTime();
    var oneDay = 86400000; // s
    d.setTime(t - num * oneDay);
    var l = $('#Days ul');
    self.days = {};
    for (var i = 0; i < 7; i++) {
      var dy = d.getFullYear();
      var dm = d.getMonth() + 1;
      var dd = d.getDate();
      var sd = dy + '-' +
          (dm < 10 ? '0' : '') + dm + '-' +
          (dd < 10 ? '0' : '') + dd;
      var n = $('<li><a href="?day=' + sd + '"><span>' +
                days[d.getDay()] + '</span> ' +
                '<strong>' + d.getDate() + '</strong> ' +
                '<span>' + months[d.getMonth()] + '</span></a></li>');
      l.append(n);
      n.data('date', new Date(d.getTime()));
      n.data('dateString', sd);

      self.btnDays[sd] = n;

      // if (sd == self.params.day) {
      //   self.currDay = n;
      // }

      d.setTime(d.getTime() + oneDay);
    }

    var daysItems = $('#Days ul li');

    self.btnDays.all = daysItems;

    daysItems.click(function() {
      daysItems.removeClass('selected');
      $(this).addClass('selected');
      var sd = $(this).data('dateString');

      $.bbq.pushState({day: sd}, 0);

      // self.currDay = $(this);
      // self.loadData();
      return false;
    });
    // if (self.currDay) {
    //   skipNextNielsen = true;
    //   $(self.currDay).click();
    // }
  };
  self.initChans = function() {

    var chans = $('ul.Palinsesto li.chan');
    self.btnChans = {};
    self.btnChans.all = chans;

    chans.each(function() {
      var c = $(this).find('>a').attr('title');

      // console.log("title="+c);
      c = self.chanCodes[c];
      self.btnChans[c] = $(this);
      $(this).data('chanCode', c);
    });


    chans.find('>a').click(function(e) {
      var c = $(this).parent().data('chanCode');
      $.bbq.pushState({ch: c}, 0);
      return false;
    });

  };
  self.fixMenuHrefs = function() {
    // imposta gli href dei menu di selezione giorno/canale
    var hChan = '';
    var hDay = '';

    if (self.currDay) {
      var d = self.currDay.data('date');
      var dy = d.getFullYear();
      var dm = d.getMonth() + 1;
      var dd = d.getDate();
      var sd = dy + '-' +
          (dm < 10 ? '0' : '') + dm + '-' +
          (dd < 10 ? '0' : '') + dd;
      hDay = 'day=' + sd;
    }
    if (self.currChan) {
      var c = self.currChan.find('>a').attr('title');
      c = self.chanCodes[c];
      hChan = 'ch=' + c;
    }
    var chans = $('ul.Palinsesto>li');
    chans.each(function() {
      var c = $(this).find('>a').attr('title');
      c = self.chanCodes[c];
      var h = '?';
      if (hDay != '') {
        h += hDay + '&';
      }
      h += 'ch=' + c;
      $(this).find('>a').attr('href', h);

    });
    var days = $('#Days ul li');
    days.each(function() {
      var d = $(this).data('date');
      var dy = d.getFullYear();
      var dm = d.getMonth() + 1;
      var dd = d.getDate();
      var sd = dy + '-' +
          (dm < 10 ? '0' : '') + dm + '-' +
          (dd < 10 ? '0' : '') + dd;
      var h = '?day=' + sd;
      if (hChan != '') {
        h += '&' + hChan;
      }
      $(this).find('>a').attr('href', h);
    });
    var events = $('div.Prog ol li');

    events.each(function() {
      var det = $(this).data('eventData');
      if (det) {
        var params = {
          day: det.date,
          ch: det.chanCode,
          v: det.i
        };
        $(this).find('a.Info').attr('href', '?' + $.param(params));
      }
    });
  };
  self.mergeData = function(obj, day, channel) {

    var d = day, c = channel;

    if (!self.data[c]) {
      self.data[c] = {};
    }
    self.data[c][d] = [];
    // obj deve contenere come unica chiave l'id del canale...
    var n = 0;
    for (var date in obj[c]) {
      for (var time in obj[c][date]) {
        var det = obj[c][date][time];
        det.date = date.replace(/\//g, '-');
        det.time = time;
        det.chanCode = c;

        if (det.d) {
          // elimino roba come "&amp;agrave;", "&amp;amp;egrave;", "&amp;amp;"
          det.d = det.d.replace(/&(amp;)+([#a-zA-Z0-9]+);/g, '&$2;');
        }
        if (det.t) {
          // elimino roba come "&amp;agrave;", "&amp;amp;egrave;", "&amp;amp;"
          det.t = det.t.replace(/&(amp;)+([#a-zA-Z0-9]+);/g, '&$2;');
        }

        // fix editore...
        if (!det.s) {
          det.s = self.chanSites[c];
        }

        self.data[c][d][n++] = det;
        if (det.i) {
          self.vid2data[det.i] = det;
        }
      }
    }
  };
  self.readParams = function(hashonly) {
    // provo a leggere sia dall'hash che dalla query, prevale l'hash.
    // per ora non e' previsto nulla che metta i parametri in query,
    // ma non si sa mai...
    if (!hashonly) {
      var s = $.deparam.querystring();
      if (s.day) {
        self.params.day = s.day;
      }
      if (s.ch) {
        self.params.ch = s.ch;
      }
      if (s.v) {
        self.params.v = s.v;
      }
      if (s.vd) {
        self.params.vd = s.vd;
      }
      if (s.vc) {
        self.params.vc = s.vc;
      }
    }
    // prevale l'hash !!!
    // var h = $.deparam.fragment();
    var h = $.bbq.getState();
    skipNextNielsen = true; // se lo stato e' vuoto parte una chiamata di troppo
    if (h.day) {
      self.params.day = h.day;
      skipNextNielsen = false;
    }
    if (h.ch) {
      self.params.ch = h.ch;
      skipNextNielsen = false;
    }
    if (h.v) {
      self.params.v = h.v;
      skipNextNielsen = false;
    }
    if (h.vd) {
      self.params.vd = h.vd;
      skipNextNielsen = false;
    }
    if (h.vc) {
      self.params.vc = h.vc;
      skipNextNielsen = false;
    }
    $.bbq.pushState(self.params, 2);
    $(window).bind('hashchange', self.hashChanged);
    self.hashChanged();
  };
  self.loadData = function(day, channel, showSchedule, playVideo) {

    var remoteLoad = false;
    var d = day, c = channel;
    if (self.data[c] && self.data[c][d]) {
      remoteLoad = false;
      window.htmlLoad = false; //see setNielsen method
    } else {
      remoteLoad = true;
      window.htmlLoad = true;//see setNielsen method
      // if (!self.data[c]) {
      //   self.data[c] = {};
      // }
      // if (!self.data[c][d]) {
      //   self.data[c][d] = [];
      // }
    }
    // console.log("remoteLoad = " + remoteLoad);

    if (remoteLoad) {
      if (showSchedule) {
				var s = $('.Palinsesto');
				s = s.find('#chan'+ channel +' div.Prog');
				s.addClass('loading');
        // $('#Schedule').addClass('loading').find('>*').hide();
      }
      // var url = '/dl/portale/html/palinsesti/replaytv/static-h264/'; // test
      var url = '/dl/portale/html/palinsesti/replaytv/static/';
      url += self.chanNames[c] + '_' + d.replace(/-/g, '_');
      // url += '.html?JSONP';
      url += '.html';
      var callback = (function() {
        var sch = showSchedule,
            vid = playVideo,
            ch = c,
            dd = d;
        return function(data) {
          self.mergeData(data, dd, ch);
          if (sch) {
            self.tryShowSchedule();
          }
          if (vid) {
            self.tryPlayCurrentVideo();
          }
        }
      })()
      // window.replayTvCallback = callback;
      // $.getScript(url);
      $.getJSON(url, {}, callback);
    } else {
      if (showSchedule) {
        self.tryShowSchedule();
      }
      if (playVideo) {
        self.tryPlayCurrentVideo();
      }
    }

  };
  self.tryShowSchedule = function() {
    if (self.currDay != null && self.currChan != null) {
      //$('#Schedule').removeClass('loading');
      $('.Palinsesto div.Prog').removeClass('loading');
      var d = self.currDay.data('dateString');
      var c = self.currChan.data('chanCode');
      var baseHref = '?day=' + d + '&ch=' + c;
      var currSchedule = c + ' ' + d;

      if (currSchedule != self.currSchedule &&
          self.data[c] && self.data[c][d]) {
        // self.vid2item = {};
        // console.log('Show schedule for ' + c + ' ' + d);
        var s = $('.Palinsesto');
        self.currSchedule = currSchedule;
        // s.empty();
        // s.append($('<a name="ScheduleMenu" id="ScheduleMenu"></a>'));
        // var e = self.data[c];
        var e = self.data[c][d];
        // for (var i in e) {
        if (!e || e.length == 0) {
          // s.append($('<div class="msg"></div>'));
          s.find('div.Prog').empty().hide();
          s = s.find('div.infoReplay');
          s.find('>*').hide();
          s.find('h2.t').text('Nessun evento disponibile').show();
          s.show();
        } else {
          // s.append($('<div class="scroll-pane"></div>'));
          $('div.infoReplay').hide();
          s.find('div.jScrollPaneContainer').
          replaceWith('<div class="hidden scroll-pane"></div>');
          s.find('div.Prog').empty().hide();
          s = s.find('#chan'+ c +' div.Prog');
          //was: s = s.find('div.Prog');
          s.empty().show();
          var u = $('<ol></ol>');
          u.appendTo(s);
          for (var i = 0; i < e.length; i++) {
            var l = $('<li></li>');
            var det = e[i];
            if (det.i) {
              self.vid2item[det.i] = l;
            }
            l.data('eventData', det);
            l.append('<span>' + det.time + '</span>');

            var resourceAvailable = !!det.r;
            if (isIpad || isIphone || isAndroid) {
              var mobileUrl = det.h264;
              // m3u8 anche su android!
              mobileUrl = (!!det.urlTablet ? det.urlTablet : det.h264);
              resourceAvailable = !!mobileUrl;
            }

            if (resourceAvailable) {
              // if (det.h264) {
              //   gestione disponibilita' su mobile
              // }
              l.addClass('y');
              l.append($('<a class="Info" href="' + baseHref +
                            '&v=' + det.i +
                            '&vd=' + det.date +
                            '&vc=' + det.chanCode + '">'+ det.t +'</a>'));
              l.find('a.Info').click(
                  (function() {
                    var item = l;
                    var dd = det;
                    var vd = d;
                    var vc = c;
                    return function() {
                      // self.playVideo.call(self, item);
                      $.bbq.pushState({v: dd.i, vd: vd, vc: vc}, 0);
                      return false;
                    }
                  })()
              );
              if (!!self.params.v && det.i == self.params.v) {
                $('div.Prog li').removeClass('live');
                l.addClass('live');
              }
            } else if (det.a == '1') {
            	l.addClass('s');
            	l.append(det.t);
            } else {
            	l.addClass('n');
            	l.append(det.t);
            }

			/*"00:05": {
				"t": "COOL TOUR",
				"d": "\"Cool Tour\" gira per Milano per l'Italia e per il mondo, registrando e riproducendo i più attraenti segnali di \"coolness\"",
				"l": "1679",
				"r": "http://mediapolisvod.rai.it/relinker/relinkerServlet.htm?cont=BEKYBFPEF58eeqqEEqual",
				"image": "http://www.rai.it/dl/images/1307527727614114_cooltour.jpg",
				"h264": "http://mediapolisvod.rai.it/relinker/relinkerServlet.htm?cont=8DFkxrBxWSoeeqqEEqual",
				"urlTablet": "http://rai-i.akamaihd.net/i/20120126/cooltour-260120120.05.00_,600,900,1000,1500,.mp4.csmil/master.m3u8",
				"urlSmartPhone": "http://rai-i.akamaihd.net/i/20120126/cooltour-260120120.05.00_,600,.mp4.csmil/master.m3u8",
				"i": "105799",
				"a": "1",
				"aDate": "",
				"endDate": "",
				"s": "http://www.rai5.rai.it/dl/Rai5/home_r5.html",
				"w": "http://www.rai5.rai.it/dl/Rai5/programma.html?ContentItem-8f7434d7-730d-4ef9-a41d-bd5dd5aada0d&refresh_ce",
				"v": "",
				"bsk": "",
				"b250": "",
				"b100": "",
				"bsp": ""
			}*/
			if (!!det.d) {
				var i_LinkSite,i_LinkTV,i_LinkFB,i_Img,i_Tit,i_Desc,i_Durata,s_Durata;
				var infoBox = "";

				i_LinkSite = (!!det.w) ? det.w : "none";
				i_LinkTV =   (!!det.v) ? det.v : "none";
				//i_LinkFB =   (det.f != '') ? det.f : "none";
				i_Img =      (!!det.image) ? det.image : "none";
				i_Tit =       det.t;
				i_Desc =     (!!det.d) ? det.d : "";
				//var s_Durata =    secondsToTime(det.l);
				i_Durata =    Math.floor(det.l / 60);
				//var infoBox = '<div class="descrBox"><!--a href="#" class="close"></a-->';
				var infoBox = '';
				if(i_Img != 'none' && typeof i_Img != 'undefined') {
					infoBox += '<img class="img" src="'+i_Img+'" />';
				}
				infoBox += '<div class="txt">'+
							'<h4>'+i_Tit+'</h4>'+
							'<strong>In onda: <span>'+det.time+'</span></strong>'+
							'<strong>Durata: <span>'+i_Durata+' minuti</span></strong>'+
							'<p>'+i_Desc+'</p>';

							if(i_LinkSite != 'none' && typeof i_LinkSite != 'undefined') {
								infoBox += '<a class="link" target="_top" href="'+i_LinkSite+'">Sito</a>';
							}
							if(i_LinkTV != 'none' && typeof i_LinkTV != 'undefined') {
								infoBox += '<a class="link" target="_top" href="'+i_LinkTV+'">On demand</a>';
							}

							/*
							if(i_LinkFB != 'none' && typeof i_LinkFB != 'undefined') {
								infoBox += '<a class="link" target="_top" href="'+i_LinkFB+'">FB</a>';
							}
							*/
					infoBox += '</div>';

					var descr = $('<div class="descrBox" />').append(infoBox);
					l.append(descr);
			}
            u.append(l);
            $('ul.Palinsesto').height($('.Prog:visible').height())
          }
          // try {
          //   s.jScrollPane({
          //     scrollbarWidth: 16,
          //     dragMinHeight: 30,
          //     showArrows:false
          //   });
          // } catch (ex) {
          // }
        }
      }
    }
  };
  self.tryPlayCurrentVideo = function() {

    if (self.tryPlayVideo && self.params.v && self.vid2data[self.params.v]) {
      $('#Container').addClass('showPlayer');
      if (self.tryPlayVideo && self.currVideo != self.params.v) {
        self.currVideo = self.params.v;
        self.playVideo.call(self, self.vid2data[self.params.v]);
      }
      $('.Prog li').removeClass('live');
      if (self.vid2item[self.currVideo]) {
        self.vid2item[self.currVideo].addClass('live');
      }
      self.tryPlayVideo = false;
    }
  };
  //called when a video is selected
  self.playVideo = function(det) {
    self.tryPlayVideo = false;
    // console.log(det);
    var videoChan = det.chanCode;
    if (!videoChan) {videoChan = '0';}
    var defaultBannerVarsByChan = {
      '0': {
        '300x250': '',
        '300x100': '',
        'spot': '',
        'skin': ''
      },
      '1': {
        '300x250': 'rtv_uno^rtv_uno_medium_box^300x250^',
        '300x100': 'rtv_uno^rtv_uno_3_1_rect^300x100^',
        'spot': 'rtv_streaming_raiuno^rtv_streaming_raiuno^wmv^',
        'skin': ''
      },
      '2': {
        '300x250': 'rtv_due^rtv_due_medium_box^300x250^',
        '300x100': 'rtv_due^rtv_due_3_1_rect^300x100^',
        'spot': 'rtv_streaming_raidue^rtv_streaming_raidue^wmv^',
        'skin': ''
      },
      '3': {
        '300x250': 'rtv_tre^rtv_tre_medium_box^300x250^',
        '300x100': 'rtv_tre^rtv_tre_3_1_rect^300x100^',
        'spot': 'rtv_streaming_raitre^rtv_streaming_raitre^wmv^',
        'skin': ''
      },
      '31': {
        '300x250': 'rai_cinque^rai_cinque_medium_box_var^300x250^',
        '300x100': 'rai_cinque^rai_cinque_3_1_rect_var^300x100',
        'spot': 'rtv_streaming_raicinque^rtv_streaming_raicinque^wmv^',
        'skin': ''
      }
    };

    Banners.vars = [];
    if (det.bsk) {
      Banners.vars[Banners.vars.length] = {
        s: '#BgBanner',
        v: det.bsk,
        t: '',
        hideEmpty: false
      };
    } else {
      Banners.vars[Banners.vars.length] = {
        s: '#BgBanner',
        v: defaultBannerVarsByChan[videoChan]['skin'],
        t: '',
        hideEmpty: false
      };
    }
    if (det.b250) {
      Banners.vars[Banners.vars.length] = {
        s: '.spallaDx .banner300x250:eq(0)',
        v: det.b250,
        t: '',
        hideEmpty: true
      };
    } else {
      Banners.vars[Banners.vars.length] = {
        s: '.spallaDx .banner300x250:eq(0)',
        v: defaultBannerVarsByChan[videoChan]['300x250'],
        t: '',
        hideEmpty: true
      };
    }
    if (det.b100) {
      Banners.vars[Banners.vars.length] = {
        s: '.spallaDx .banner300x100:eq(0)',
        v: det.b100,
        t: '',
        hideEmpty: true
      };
    } else {
      Banners.vars[Banners.vars.length] = {
        s: '.spallaDx .banner300x100:eq(0)',
        v: defaultBannerVarsByChan[videoChan]['300x100'],
        t: '',
        hideEmpty: true
      };
    }

    var p = $('#Player');
    var videoEnded = p.find('#VideoEnded');
    videoEnded.hide();

    $("div.Main div.tit").show();
    $("div.Main div.mid").show();

    if (det.chanCode == 1)
    	$("div.Main div.boxReplay").removeClass().addClass("Rai1").addClass("boxReplay");
    else if (det.chanCode == 2)
    	$("div.Main div.boxReplay").removeClass().addClass("Rai2").addClass("boxReplay");
    else if (det.chanCode == 3)
    	$("div.Main div.boxReplay").removeClass().addClass("Rai3").addClass("boxReplay");
    else if (det.chanCode == 31)
    	$("div.Main div.boxReplay").removeClass().addClass("Rai5").addClass("boxReplay");
    var boxReplay = $('#boxReplay');

    //-- end
    n = $('div.tit h2');    // title
    n.empty();
    if (det.t) {
      n.append(det.t);
    } else {
      n.text('');
    }
    n = $('div.Info div'); // descrizione
		n.replaceWith('<div class="scroll-pane"><p></p></div>');
    n = $('div.Info div');
    if (det.d) {
    	n.show().find('p').append(det.d);
			try {
				n.jScrollPane({scrollbarWidth: 8, dragMinHeight: 16, showArrows: false});
			} catch (e) {}
    } else {
      $('div.Info div').hide();
    }
    n = $('ul.Specifiche'); // durata
    n.empty();
    if (det.l && det.l != '' && det.l != '0') {
      var length = parseInt(det.l, 10);
      var s = length % 60;
      length = Math.floor(length / 60);
      var m = length % 60;
      length = Math.floor(length / 60);
      var h = length;
      h = (h < 10 ? '0' : '') + h;
      m = (m < 10 ? '0' : '') + m;
      s = (s < 10 ? '0' : '') + s;
      length = h + ':' + m + ':' + s;
      n.append("<li><span>Durata:</span> " + length + "</li>");
    } else {
      n.text('');
    }
    //andato in onda
    n.append('<li><span>Andato in onda il:</span> ' +
         det.date.replace(/([0-9][0-9][0-9][0-9])[\/-]([0-9][0-9])[\/-]([0-9][0-9])/,'$3/$2/$1') +
         '</li>');

    n = $('div.Share');

    var facebookUrl = self.getShareOnFacebookUrl(det);

    n.html('<a class="mail" title="Invia ad un amico">' +
           '<span class="solotesto">Invia ad un amico</span></a>' +
           '<a class="fb" href="' + facebookUrl +
           '" title="Condividi su facebook">' +
           '<span class="solotesto">Condividi su Facebook</span></a>');
    n.find('a.fb').click(function() {
      self.shareOnFacebook(det);
      return false;
    });
    n.find('a.mail').click(function() {
      self.sendFriend(det);
      return false;
    }).hover(function() {$(this).addClass('hover');},
             function() {$(this).removeClass('hover');});

    // sito web
    n = $('div.Info a.site');
    if (det.w) {
      n.attr('href', det.w).show();
    } else {
      n.hide();
    }


    // scheda programma rai.tv
    n = $('div.Info a.info');
    if (det.v) {
      n.attr('href', det.v).show();
    } else {
      n.hide();
    }

    window.replayTvVideoEnded = self.videoEnded;
    if (!/^([a-zA-Z0-9]+):\/\//.test(det.r)) {
      det.r = window['replaySmoothDomain'] + det.r;
    }
    var pathBanner = '' + det.bsp;
    if (pathBanner == '') {
      pathBanner = defaultBannerVarsByChan[videoChan]['spot'];
    }
    if (pathBanner != '' && !/^([a-zA-Z0-9]+):\/\//.test(pathBanner)) {
      var rnd = new Date();
      rnd = rnd.getTime();
      if (
          pathBanner ==
              'rtv_streaming_sport^rtv_streaming_sport_mondialicalcio^wmv^' ||
          pathBanner ==
              'rtv_streaming_sport^rtv_streaming_sport_mondialicalcio^'
      ) {
        pathBanner = 'http://ad49.neodatagroup.com/ad/sipra.jsp?daob=1&loc=' +
            pathBanner + '&fmt=vod&rnd=' + rnd;
      } else {
        pathBanner = 'http://ad2.neodatagroup.com/ad/load_ndgruler.jsp?' +
            'sid=49&loc=' + pathBanner + '&bt=n&wt=n&jsvar=&rnd=' + rnd;
      }
      // pathBanner = 'http://ad2.neodatagroup.com/ad/load_ndgruler.jsp?' +
      //   'sid=49&loc=' + pathBanner+'&bt=n&wt=n&jsvar=&rnd='+rnd;
    }
    var windowless = 'true';
    try {
      if (navigator.userAgent.indexOf('Firefox/3.6') > 0) {
        var v = navigator.userAgent.match(/Firefox\/(3.6[^ ]*)/i);
        v = v[1];
        // problema con il windowless, nelle versioni successive alla 3.6
        var Vmin = '3.6';
        var Vmax = '3.6.10'; // il problema non si verifica piu' con la 3.6.10

        if (v > Vmin && v < Vmax) {
          windowless = 'false';
        }
      }
    } catch (e) {
      windowless = 'true';
    }


    if (isIpad || isIphone || isAndroid) {
      var altHtml = '';
      var mobileUrl = det.h264;
      // m3u8 anche su android!
      mobileUrl = (!!det.urlTablet ? det.urlTablet : det.h264);

      if ((isIpad || isIphone) && typeof(det.urlTablet) != 'undefined' && !!det.urlTablet) {
        mobileUrl = det.urlTablet;
      }
      if (typeof(mobileUrl) != 'undefined') {
        // per iPhone e iPad usiamo il tag html5 video con la versione mp4
        // altHtml = '<video width="640" height="360" controls autobuffer>';
        // altHtml = '<video width="100%" height="100%" controls autobuffer>';

        // <video id="VideoPlayer" src="http://mediapolis.rai.it/relinker/relinkerServlet.htm?cont=180354" autoplay="autoplay" controls="controls"> html 5 video not supported </video>
        altHtml = '<video width="100%" height="100%" controls="controls" autobuffer="autobuffer" autoplay="autoplay" src="'+mobileUrl+'">';
        // altHtml += '<source src="'+window.videoURL_MP4+'" type="video/mp4" />';
        altHtml += '<h3>Video non disponibile per dispositivi mobili</h3></video>';
      } else {
        altHtml = '<h3>Video non disponibile per dispositivi mobili</h3>';
      }
      $('#SilverlightPlayer').html(altHtml);
      window.refreshByJS = false;
      if (isAndroid) {
        $('#SilverlightPlayer video').click(function() {
          this.play();
        });
      }
      console.log('container length: ' + $('#SilverlightPlayer').length);
      console.log('video html: ' + $('#SilverlightPlayer').html());
    } else {

      Silverlight.createObjectEx(
          {
            // source: "/dl/objects/silverlight/raitv/ReplayTv.xap",
            source: '/dl/objects/silverlight/uniplayer/Rai.UniPlayer.xap',
            parentElement: $('#SilverlightPlayer')[0],
            id: 'silverlightControl',
            properties: {
              width: '100%',
              height: '100%',
              inplaceInstallPrompt: false,
              background: '#0a0a0a',
              windowless: windowless,
              framerate: '25',
              version: '2.0'
            },
            events: {
              onLoad: function() {
                try {
                  $('#silverlightControl')[0].focus();
                } catch (e) {
                }
              }
            },
            // initParams: "videoPath=" + det.r +
            //     ",aspect=43,auto=true,pathBanner=" + pathBanner +
            //     ",jsCallback=replayTvVideoEnded",
            initParams: 'configUri=' +
                '/dl/objects/silverlight/uniplayer/Config.replaytv.xml,' +
                'mediaUri=' + det.r + ',advertisingUri=' + pathBanner +
                ',overrideConfig=|type$CommandBar;isPopupButtonVisible$false;isExpandButtonVisible$true',
            context: {

            }
          }
      );
    }
    try {
      $('html,body').animate({
        scrollTop: $('#SilverlightPlayer').offset().top - 20
      }, 500);
    } catch (e) {
    }
  };
  self.getShareOnFacebookUrl = function(det) {
    var rnd = new Date();
    rnd = rnd.getTime();

    var t = encodeURIComponent(det.t);

    // var d = det.date.replace(
    //     /([0-9][0-9][0-9][0-9])[\/-]([0-9][0-9])[\/-]([0-9][0-9])/,
    //     '$3/$2/$1');
    // d = encodeURIComponent(d);

    var params = {
      day: det.date,
      ch: det.chanCode,
      v: det.i,
      vd: det.date,
      vc: det.chanCode
    };

    // var u = encodeURIComponent(
    //     "http://www.rai.tv/dl/replaytv/replaytv.html?"+
    //     $.param(params)+'&fbTit='+t+'&fbDesc='+d+
    //     '&fbCh='+det.chanCode+'&'+rnd);

    var u = encodeURIComponent('http://www.rai.tv/dl/replaytv/replaytv.html?' +
                               $.param(params) + '&' + rnd);

    try {
      // console.log(u);
      // console.log(decodeURIComponent(u));
    } catch (e) {
    }
    return 'http://www.facebook.com/sharer.php?u=' + u + '&t=' + t + '&' + rnd;
  };
  self.shareOnFacebook = function(det) {
    var url = self.getShareOnFacebookUrl(det);

    self.setNielsen(null, 'action=facebook');

    window.open(
        url,
        'ReplayTV_sharer',
        'toolbar=0,status=0,width=626,height=436');
    return false;
  };
  self.sendFriend = function(det) {
    self.setNielsen(null, 'action=email');

    var messages = {
      'emailNotValid': 'Email non valida.',
      'emailSendOK': 'Email inviata con successo.',
      'emailSendKO': "Si e' verificato un errore durante l'invio della email."

    };

    var checkEmail = function(email) {
      if (email == '') {
        return false;
      } else if (!/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(email)) {
        return false;
      } else {
        return true;
      }
    };

    var rnd = new Date();
    rnd = rnd.getTime();

    var t = encodeURIComponent(det.t);

    var d = det.date.replace(
        /([0-9][0-9][0-9][0-9])[\/-]([0-9][0-9])[\/-]([0-9][0-9])/, '$3-$2-$1');
    d = encodeURIComponent(d);

    var params = {
      day: det.date,
      ch: det.chanCode,
      v: det.i,
      vd: det.date,
      vc: det.chanCode
    };

    var u = 'http://www.rai.tv/dl/replaytv/replaytv.html?' + $.param(params);

    try {
      console.log(u);
      console.log(decodeURIComponent(u));
    } catch (e) {
    }


    var optionShadowbox = {};
    $('.notice').attr('class', 'notice').html('');
    var sendMail = function() {
      var emailObject = 'Un tuo amico ti segnala Rai.tv';
      var title = det.t;
      var desc = det.d;

      var emailBody = 'Un tuo amico ti segnala:<br /><a href=\"' + u + '\">' +
          title + '</a><br />' + desc +
          '<br />su Rai.tv<br /><br />Messaggio: ' +
          $('#emailCommento').val() +
          '<br /><br /><hr />Entra anche tu nel mondo ' +
          '<a href=\"http://www.rai.tv/dl/RaiTV/MyRaiTV/iscrizione.html\">' +
          'MyRaitv</a> ed inizia a creare la tua homepage personalizzata.' +
          '<br /><br />Buona navigazione<br />' +
          '<a href=\"http://www.rai.tv\">Raitv</a>';

      var valori = {
        emailFrom: $('#emailFrom').val(),
        emailTo: $('#emailTo').val(),
        emailBody: emailBody,
        emailObject: emailObject};

      if (!checkEmail($('#emailFrom').val())) {
        $('#emailFrom').parent().next().
            attr('class', 'notice Error').
            html(messages['emailNotValid']);
      } else if (!checkEmail($('#emailTo').val())) {
        $('#emailTo').parent().next().
            attr('class', 'notice Error').
            html(messages['emailNotValid']);
      } else {
        $.ajax({
          url: '/services/sendEmail.jsp',
          type: 'POST',
          dataType: 'text',
          data: valori,
          success: function(result) {
            if (jQuery.trim(result) == 'ok') {
              optionShadowbox = {
                title: 'Invia ad un amico',
                content: '<div id="msg">' +
                    messages['emailSendOK'] +
                    ' <a title="Chiudi" class="Close" ' +
                    'onclick="Shadowbox.close(); return false;" href="#" ' +
                    'style="display: block; width: 15px; height: 15px; ' +
                    'position: absolute; top: 2px; right: 2px; ' +
                    'background: transparent ' +
                    'url(/dl/RaiTV/images/btn_close_comm.gif) no-repeat ' +
                    'scroll 0 0"><span class="solotesto">Chiudi</span>' +
                    '</a></div>',
                player: 'html',
                height: 100,
                width: 300,
                options: { animate: false}
              };
              Shadowbox.init({
                skipSetup: true // skip the automatic setup
              });
              Shadowbox.open(optionShadowbox);
            } else {
              optionShadowbox = {
                title: 'Invia ad un amico',
                content: '<div id="msg">' + messages['emailSendKO'] +
                    ' <a title="Chiudi" class="Close" ' +
                    'onclick="Shadowbox.close(); return false;" ' +
                    'href="#" style="display: block; width: 15px; ' +
                    'height: 15px; position: absolute; top: 2px; ' +
                    'right: 2px; background: transparent ' +
                    'url(/dl/RaiTV/images/btn_close_comm.gif) no-repeat ' +
                    'scroll 0 0"><span class="solotesto">Chiudi</span>' +
                    '</a></div>',
                player: 'html',
                height: 100,
                width: 300,
                options: { animate: false}
              };
              Shadowbox.init({
                skipSetup: true // skip the automatic setup
              });
              Shadowbox.open(optionShadowbox);
            }
          },
          error: function(result) {
            optionShadowbox = {
              title: 'Invia ad un amico',
              content: '<div id="msg">' + messages['emailSendKO'] + '</div>',
              player: 'html',
              height: 100,
              width: 300,
              options: { animate: false}
            };
            Shadowbox.init({
              skipSetup: true // skip the automatic setup
            });
            Shadowbox.open(optionShadowbox);
          }
        });
      }
    };

    window.replayTvSendFriend = sendMail;

    var html = '<h2 class="inviaAmico">' +
        '<span class="solotesto">Invia ad un amico</span></h2>' +
        '<div class="sendFriend"><ul><li>' +
        '<div class="label">Email amico:</div>' +
        '<div class="input"><input name="emailTo" ' +
        'type="text" class="testo" id="emailTo"/></div>' +
        '<div class="notice"></div></li><li>' +
        '<div class="label">Tua email:</div><div class="input">' +
        '<input name="emailFrom" type="text" class="testo" ' +
        'id="emailFrom"/></div><div class="notice"></div></li>' +
        '<li><div class="label">Messaggio:</div>' +
        '<div class="textarea"><textarea id="emailCommento"></textarea>' +
        '</div></li></ul><div class="inviaAmicoConfirm"><span>' +
        '</span><ul class="confirm"><li><a href="#" ' +
        'onclick="Shadowbox.close(); return false;">Annulla</a></li>' +
        '<li><a href="#" onclick="replayTvSendFriend(); ' +
        'return false;">Invia</a></li></ul></div></div>';
    optionShadowbox = {
      title: 'Invia ad un amico',
      content: '<div id="msg">' + html + '</div>',
      player: 'html',
      height: 320,
      width: 600,
      options: { animate: false, enableKeys: false}
    };
    Shadowbox.init({
      skipSetup: true // skip the automatic setup
    });
    Shadowbox.open(optionShadowbox);
  };
  self.videoEnded = function() {
    // var item = self.currVideoItem;
    // var det = item.data('eventData');
    var det = self.vid2data[self.currVideo];

    var p = $('#Player');
    var videoEnded = p.find('#VideoEnded');
    if (videoEnded.length == 0) {
      videoEnded = $('<div id="VideoEnded"></div>');
      p.append(videoEnded);
    }
    var paramsFull = $.param(self.params);
    var paramsNoVideo = $.param({
      day: self.params.day,
      ch: self.params.ch
    });
    videoEnded.html('<a href="?' + paramsFull +
                    '" class="replay">Riguarda</a>' +
                    '<a class="send">Invia ad un amico</a>' +
                    '<a href="?' + paramsNoVideo +
                    '" class="more">Seleziona un altro contenuto ' +
                    'dal palinsesto</a>' +
                    '<div class="bg"></div>');
    videoEnded.show();
    try {
      videoEnded.find('a.replay').click(function() {
        self.playVideo(det);
        // non cambia l'hash, quindi devo farla qui
        self.setNielsen();
        return false;
      })[0].focus();
    } catch (e) {}
    videoEnded.find('a.send').click(function() {
      self.sendFriend(det);
      return false;
    }).hover(function() {$(this).addClass('hover');},
             function() {$(this).removeClass('hover');});
    videoEnded.find('a.more').click(function() {
      $.bbq.removeState(['v', 'vd', 'vc']);
      doFocus('ReplayMenu');
      // try {
      //   $('html,body').animate({
      //       scrollTop: $('#MainPanel').offset().top}, 500);
      // } catch (e) {
      // }
      return false;
    });
  };
  self.updateChanLogos = function() {
    for (var i = 0; i < self.btnChans.all.length; i++) {
      var s = $('ul.Palinsesto li a h3');
      if (s.is('.selected')) {
        //s.addClass('selected');
      } else {
        s.removeClass('selected');
      }
    }
  };
  self.skipNielsenOnHash = true;
  self.hashChanged = function(e) {
    // console.log('****** ReplayTV.hashChanged ******');

    var h = $.bbq.getState();

    if(h.ch || h.day || h.v){
    	//set default remote loading to false.
    	window.htmlLoad = false;
    }
    // se non ci sono canale o giorno, prova a prendere i dati del video...
    // (non dovrebbe succedere, ma non si sa mai :P)
    if (!h.ch && h.vc) {
      h.ch = h.vc;
    }
    if (!h.day && h.vd) {
      h.day = h.vd;
    }

    // read channel
    self.btnChans.all.removeClass('selected');
    $('ul.Palinsesto li a h3').removeClass('selected');
    if (h.ch) {
      if (self.btnChans[h.ch]) {
        self.params.ch = h.ch;
        //self.btnChans[h.ch].addClass('selected');
        self.btnChans[h.ch].find('a h3').addClass('selected');
        self.currChan = self.btnChans[h.ch];
      } else {
        // canale non esistente
        delete h.ch;
        delete self.params.ch;
        self.currChan = null;
      }
    } else {
      self.currChan = null;
      delete self.params.ch;
      delete h.ch;
    }
    self.updateChanLogos();

    // read day
    self.btnDays.all.removeClass('selected');
    if (h.day) {
      if (self.btnDays[h.day]) {
        self.params.day = h.day;
        self.btnDays[h.day].addClass('selected');
        self.currDay = self.btnDays[h.day];
      } else {
        // giorno non esistente
        delete h.day;
        delete self.params.day;
        self.currDay = null;
      }
    } else {
      self.currDay = null;
      delete self.params.day;
      delete h.day;
    }

    if (h.v) {
      self.params.v = h.v;
      if (!h.vd) {
        h.vd = h.day;
      }
      if (!h.vc) {
        h.vc = h.ch;
      }
      self.params.vd = h.vd;
      self.params.vc = h.vc;
    }
    if (!h.v || !h.vd || !h.vc) {
      delete self.params.v;
      delete self.params.vd;
      delete self.params.vc;
      delete h.v;
      delete h.vd;
      delete h.vc;
      self.currVideo = null;
      self.currVideoItem = null;
      self.tryPlayVideo = false;

      try {
        Banners.reloadAll();
      } catch (e) {}
    }

    // se ch && day, mostra palinsesto
    //    se v, cerca video nel palinsesto; mostralo
    //    (cercare in tutti i giorni/canali??)

    self.fixMenuHrefs();

    if (h.v) {
      if (h.v != self.currVideo) {
        self.tryPlayVideo = true;
        self.loadData(h.vd, h.vc, false, true);
      }
    } else {

      $('#Container').removeClass('showPlayer');
      $('#Container').removeClass('showHighlights');
      $('.Prog ol li').removeClass('live');
      $('#SilverlightPlayer').html('');
      $('.boxReplay div.tit').hide();
      $('.boxReplay div.mid').hide();
      $('#VideoEnded').html('').hide();
      self.currVideo = null;
      self.currVideoItem = null;
      self.tryPlayVideo = true;
      Banners.vars = Banners.defaultVars;
    }
    if (h.day && h.ch) {
      self.loadData(h.day, h.ch, true, false);

    } else {

      var s = $('#Schedule');
      s.find('div.scroll-pane').empty().hide();
      s.find('div.jScrollPaneContainer').
          replaceWith('<div class="hidden scroll-pane"></div>');
      s = s.find('div.msg').hide();
      s.find('>*').show();
      s.find('h2.t').text('').show();
      if (h.day != null) {

    	$('.infoReplay').show();
    	$('.Prog').hide();
        var d = self.currDay.data('date');
        var dy = d.getFullYear();
        var dm = d.getMonth() + 1;
        var dd = d.getDate();
        d = (dd < 10 ? '0' : '') + dd + '/' +
            (dm < 10 ? '0' : '') + dm + '/' + dy;

        var msg = '&lt; Hai selezionato il giorno ' + d +
            ' &gt; <br /><em>Ora seleziona il canale</em>';
        // var msg = "<em>Seleziona il canale</em>";
        $('#Schedule .msg .t').html(msg).show().prependTo($('#Schedule .msg'));

      } else if (h.ch != null) {

    	$('.infoReplay').show();
    	$('.Prog').hide();
        var chanAlt = self.currChan.find('>a').attr('title');

        var msg = '&lt; Hai selezionato il canale ' + chanAlt +
            ' &gt;<br /><em>Ora seleziona il giorno</em>';
        // var msg = "<em>Seleziona il giorno</em>";
        $('#Schedule .msg .t').html(msg).show().prependTo($('#Schedule .msg'));
      } else {

        // $('#Schedule .msg .t').hide();
        $('#Schedule .msg>*').show();
        $('#Schedule .msg .t').html('<em>&gt; Seleziona il canale e ' +
                                    'il giorno</em>').
                               show().
                               appendTo($('#Schedule .msg'));
      }
      s.show();
    }

    if (!self.skipNielsenOnHash) { // esiste gia' la chiamata in pagina: me ne partono due...
      self.setNielsen();
    }
    self.skipNielsenOnHash = false;

    return false;
  };
  self.init = function() {
    this.initDays();
    this.initChans();

    window.skipNextNielsen = true;
    this.readParams(false);

    // non serve chiamare loadData in quanto viene gia' chiamato, se serve,
    // in initChans (se sono arrivati come parametri sia giorno che canale)
    // this.loadData();

    // setNielsen e' gia' chiamata nella pagina
    // setNielsen();
  };
};


/**
 * Modifica la dimensione del player su raitv, spostando i div dove necessario.
 * @param {String} size la nuova dimensione del player. Valori ammessi:
 *   'large' e 'small'
 */
function setPlayerSize(size) {
	var page = $('.Page');
	var myRaiTVPanel = $('.Page .boxMyRaitv');
	var main = page.find('.Main');
	// mi assicuro che il box commenti stia fuori dal Main...
	if (main.find('.boxCommenti').length > 0 && $('.Spalla').length > 0) {
    main.find('.boxCommenti').insertAfter($('.Spalla'));
  }
	switch (size) {
		case 'large':
			main.addClass('largeScreen');
			break;
		case 'small':
		default:
			main.removeClass('largeScreen');
	}
	main.find('.scroll-pane').jScrollPane();
}
function zoomWindow(isZoomed) {
	// console.log('zoomWindow(' + isZoomed + ')');
	var size = 'small';
	if (!!isZoomed) {
		size = 'large';
	}
	if(pageRai != "tematiche-speciale") {
		setPlayerSize(size);
	}
}




function openPopup(time) {
	var l = document.location;
	var u = l.protocol + '//' + l.host + l.pathname;
	u += '?popup&time=' + time;
	u += l.hash;
	// console.log(u);
	window.open(u, 'RaiTV Popup', "scrollbars=no,status=0,width=648,height=400");
}
var bannercode = '';
var Banners = {};
function functionsLoadBanner300x100() {
  Banners.reloadAll();
}


/**
 * Variabili banner: esempio
 */
Banners.vars = [
  {
    s: '#BgBanner',
    v: 'rtv_replaytv^rtv_replaytv_brand^skin^',
    t: '',
    hideEmpty: false
  },
  {
    s: '.spallaDx .banner300x250:eq(0)',
    v: 'rtv_replaytv^rtv_replaytv_medium_box^300X250^',
    t: '',
    hideEmpty: true
  },
  {
    s: '.spallaDx .banner300x100:eq(0)',
    v: 'rtv_replaytv^rtv_replaytv_3_1_rect^300X100^',
    t: '',
    hideEmpty: true
  }
];


/**
 * Variabili banner di default
 */
Banners.defaultVars = Banners.vars;


/**
 * Ricarica tutti i banner configurati
 */
Banners.reloadAll = function() {
  // async call
  if (typeof(getAdagioURL) != 'function') {
    console.log('function getAdagioURL is not defined');
  } else {
    if (Banners.vars.length > 0) {
      setTimeout(function() {
        Banners.load(0);
      }, 10, null);
    }
  }
};


/**
 * Carica uno specifico banner.
 * @param {int} index l'indice del banner da caricare.
 */
Banners.load = function(index) {
  // console.log('Loading banner '+index);
  var v = Banners.vars[index];
  if ($(v.s).length > 0 && v.v != '' && typeof(getAdagioURL) == 'function') {
    var url = getAdagioURL(
        v.v,
        '',
        'Banners.show(' + index + ', false);',
        'Banners.show(' + index + ', true);',
        '',
        '');
    // console.log('Loading banner from '+url);
    bannercode = '';
    $.getScript(url);
  } else {
    bannercode = '';
    Banners.show(index, false);
    // index++;
    // if (index < Banners.vars.length) {
    //   Banners.load(index);
    // }
  }
};


/**
 * Mostra il banner ricevuto dal server
 * @param {int} index l'indice del banner da mostrare.
 * @param {boolean} showFiller in caso di mancata erogazione,
 *    mostra il tappo configurato.
 */
Banners.show = function(index, showFiller) {
  // console.log('Show banner '+index);
  // console.log(bannercode)
  var v = Banners.vars[index];
  var n = $(v.s);
  if (n.length > 0) {
    if (showFiller && v.t != undefined && v.t != null && v.t != '') {
      bannercode = v.t;
    }
    n.html(bannercode);
    if (bannercode != '' || !v.hideEmpty) {
      n.show();
    } else {
      n.hide();
    }
    /* gestione ad hoc per replaytv */
    if (v.s == '#BgBanner') {
      if ($.trim(bannercode) == '') {
        $('#Container').removeClass('withSkin');
      } else {
        $('#Container').addClass('withSkin');
      }
    }
  }
  index++;
  if (index < Banners.vars.length) {
    Banners.load(index);
  }
};
window['Banners'] = Banners;

if (typeof(xmlSipraWBListPass) == 'undefined') {
  xmlSipraWBListPass = function() {
    try {console.log(arguments);}catch (e) {}
  };
}

