var Songs;
var Ramowka;
var CStart = 0;
var ShoutboxInstance;
var PlaylistLastUpdate = 0;
var ErrorLog = '';
var Log = '';
var LastEventLogged = '';
var ShoutboxActive = false;

var U2Special = {
  PotentiallyActive: function() {
    //var servtime = GetServerTime();
    //XLog('servtime: '+servtime);
    var ret = Radio.id==1; // && servtime>=1250751600 && servtime<=1350751600;
    XLog('PotentiallyActive returns '+ret);
    return false;
    return ret;
  },
  FetchState: function() {
    XLog('FetchState()');
    new Ajax.Request('/stacje/u2.txt', {
      method: 'get',
      onSuccess: function (transport) {
        XLog('U2 Status received OK');
        var res = eval('('+transport.responseText+')');
        U2Special.active = res.z>0;
        U2Special.zaslepka = U2Special.active ? ('<DIV STYLE="margin-top:-28px;margin-left:-1px;"><IMG SRC="/img/liners/u2_zaslepka' + res.z + '.gif"></DIV>') : '';
        U2Special.text = '<DIV ALIGN=center>'+res.t+'</DIV>';
        XLog(U2Special.zaslepka);
      }
    });
  },
  UpdateList: function() {
    $('TabPlaylista').update(U2Special.text);
  },
  freq: 30,
  active: false,
  zaslepka: '',
  text: ''
}

var uid = readCookie('uid');
if (uid==null) {
  UserID = 0;
} else {
  UserID = uid;
}

var rcd = readCookie('defvol');
var DVol = (rcd==null ? 6 : rcd);

var RamEx;  // GetRamowka periodical executer

var D_NOTHING = 0, D_SONG = 1, D_TEXT = 2;

var EV_LOAD = 1, EV_UNLOAD = 2, EV_CHANGE = 10, EV_COMMENT = 50, EV_VOTE = 51, EV_PLAY = 101, EV_STOP = 102, EV_TEST = 250;

var ACT_PLAYRADIO = 300, ACT_SWITCHRADIO = 302, ACT_UNLOADRADIO = 310, ACT_SHOUTBOX = 800;

var tabsTouched = 0;

var Display = {
  'what' : D_NOTHING,
  'text' : '',
  'song' : { 'wyk': '', 'tyt': '', 'ply': '', 'id_wyk': '', 'd_b': '', 'rok': '', 'idp': '', 'idu': '', 'tst': 0, 'wyk_ply': '', 'id_wyk_ply': '', 'link_wyk': '', 'link_ply': '', 'm_id_mono': 0, 'm_id_poli': 0, 'm_id_mp3': 0, 'txt': 0 },
  'refresh' : true
}

//var URLPREFIX = 'http://portal.krakow.rmf/stacje/';
var URLPREFIX = '';

var IE = isIE();
var UseJSControls = (IE && !NoEmbed) || UseFlash;

var buffering = false;
var tserver;
var BufStart = 0;
var BufTime = -1;

var MPlayerText = '';

var mPLAYER;

var Festival = {
  'idr': $A([28]),
  'txt': '<A TARGET="_blank" HREF="/?p=off2009">Off Festival 2009</A>',
  'idw': $A([9703,9704,9705,9706,9707,1438,3662,8448,3677,1041,2079,3672,9863,9864,9865,9866,9867,9868,4422,5544,4840,5157,9917,4437,3682,9918,8447,9919,9920,5041,9968,9969,9970,8852,9971,9972,9743,9973,9974,9975,10000,10001,10002,1122,10003,10004,2590,9702,10043,10044,10045,7402,1107,10078,9917,10080,10081,10082,10083,10084,10085,10086,10075])
}

var TimeoutVote = false;
var LockVote = false;

function getFlashObject(flashid) {
  var ret;
  if (navigator.appName.indexOf("Microsoft") != -1) {
    ret = window[flashid];
  } else {
    ret = window.document[flashid];
  }
  return ret;
}

function ImagePreload(s) {
  //XLog('Preload: '+s);
  var i = new Image();
  i.src = s;
}

function ChangeImg(imgobj,url) {
  var i = new Image();
  i.src = url;
  //XLog('Img change: '+imgobj+' - '+url);
  $(imgobj).src = url;
  $(imgobj).src = url;
}

function DoOnLoad() {
  XLog('onLoad() execution start');
  findMPlayer();
  var cdt = new Date();
  BufStart = cdt.getTime();
  ImagePreload(URLPREFIX+'img/p/star0.gif');
  ImagePreload(URLPREFIX+'img/p/star1.gif');
  ImagePreload(URLPREFIX+'img/p/star2.gif');
  ImagePreload(URLPREFIX+'img/p/star5.gif');
  if ( UseJSControls ) {
    $('podpasek').hide();
    for (var z=0; z<=8; z++) ImagePreload(URLPREFIX+'img/p/volume'+z+'.gif');
    ImagePreload(URLPREFIX+'img/p/zaslepka.jpg');
    ImagePreload(URLPREFIX+'img/p2/btn_stop.jpg');
    ImagePreload(URLPREFIX+'img/p2/btn_play.jpg');
    //ImagePreload(URLPREFIX+'img/p/btn_stop_rollover.jpg');
    //ImagePreload(URLPREFIX+'img/p/btn_play_rollover.jpg');
    XLog(document.cookie);
    mpVolume(DVol);
  } else {
    $('podpasek').show();
  }

  GetPlaying();
  if (Radio.ramowka!='') GetRamowka();
  if (U2Special.PotentiallyActive()) U2Special.FetchState();

  if (UseJSControls) {
    new PeriodicalExecuter(ShowCurrentStatus, 0.6);
    var mver = parseInt(mpVersionInfo(0));
    if (mver<11) {
      MPlayerText = '<A HREF="#" onClick="OpenWin(\'http://www.microsoft.com/windows/windowsmedia/download/\');return false;">Zainstaluj najnowszego Windows Media Playera - masz wersję '+mver+'!</A>';
      Alert(MPlayerText,false);
    }
  }

  new PeriodicalExecuter(FillDisplayInfo, 1.414);
  new PeriodicalExecuter(UpdateDisplay, 0.987);

  if (U2Special.PotentiallyActive()) {
    XLog('FetchState periodical executer started');
    new PeriodicalExecuter(U2Special.FetchState, U2Special.freq);
  }

  new PeriodicalExecuter(GetPlaying, Radio.freq);
  new PeriodicalExecuter(DoGetPlaylist, Radio.getplaylistfreq);
  if (Radio.ramowka!='') {
    RamEx = new PeriodicalExecuter(GetRamowka, Radio.ramowkafreq);
    XLog('Ramowka periodical executer started');
  } else {
    XLog('Ramowka not defined, so GetRamowka() not started');
  }
  GetFavorites();
  window.setTimeout(CheckFavorites,3000);
  new PeriodicalExecuter(GetFavorites, 900);
  new PeriodicalExecuter(CheckFavorites, 15);
  window.focus();
  LogEvent(EV_LOAD,NoEmbed?1:0);
  
  LogActivity(ACT_PLAYRADIO,Radio.id);
  ChooseTab('TabPlaylista');
  //ChooseTab('TabTekst');
  
  if (0) {  // wlacz shoutboxy
    ShoutboxInstance = new Shoutbox(Radio.id,'shoutbox',Config.UserID,Config.UserName);
    UpdateShoutbox();
    new PeriodicalExecuter(UpdateShoutbox,7);
  }
}

function UpdateShoutbox() {
  if (ShoutboxActive) ShoutboxInstance.FetchData();
}

function DoOnUnload() {
  if (UseJSControls) mpStop();
  LogEvent(EV_UNLOAD);
  LogActivity(ACT_UNLOADRADIO,Radio.id);
}


function GetServerTime() {
  if (Songs==null) {
    XLog('Songs==null in GetServerTime()');
    return '';
  } else if (Object.isUndefined(Songs.tdiff)) {
    XLog('Unknown server time difference in GetServerTime()');
    return '';
  } else {
    var currentDate = new Date();
    return Math.round(currentDate.getTime()/1000) - Songs.tdiff;
  }
}

function Pad2(n) {
  return n<10 ? '0'+n : n;
}

function XLog(s) {
  if (Debug) {
    cdt = new Date();
    ln = Pad2(cdt.getHours()) + ':' + Pad2(cdt.getMinutes()) + ':' + Pad2(cdt.getSeconds()) + ' ' + s + '<br>';
    $('TabLog').insert(ln);
    if (window.console) console.log(ln);
  }
}

function CDir(s) {
  if (Debug) {
    if (window.console) console.dir(s);
  }
}

function GetCurrentFakty() {
  if (undefined==Songs.tdiff) {
    XLog('Server time unknown in GetCurrentFakty()');
    return '';
  } else if (undefined==Ramowka) {
    XLog('Ramowka undefined in GetCurrentFakty()');
    return '';
  } else if (undefined==Ramowka.fakty) {
    //XLog('Ramowka.fakty undefined in GetCurrentFakty()');
    return '';
  } else {
    var i = 0;
    while (undefined!=Ramowka.fakty[i]) {
      fakt = Ramowka.fakty[i];
      if (tserver>=fakt.tfstart && tserver<=fakt.tfstop) return fakt.nazwa;
      i++;
    }
    if (undefined!=Ramowka.breaki) {
      i = 0;
      while (undefined!=Ramowka.breaki[i]) {
        fakt = Ramowka.breaki[i];
        //XLog(tserver+' - break '+i+': '+fakt.tfstart+'...'+fakt.tfstop+' - '+(tserver>=fakt.tfstart && tserver<=fakt.tfstop));
        if (tserver>=fakt.tfstart && tserver<=fakt.tfstop) return fakt.nazwa;
        i++;
      }
    }
    return '';
  }
}

function GetCurrentAudycja() {
  //XLog('GetCurrentAudycja() run');
  if (undefined==Songs.tdiff) {
    XLog('Server time unknown in GetCurrentAudycja()');
    return '';
  } else if (undefined==Ramowka) {
    XLog('Ramowka undefined in GetCurrentAudycja()');
    return '';
  } else if (undefined==Ramowka.ramofka) {
    XLog('Ramowka.ramofka undefined in GetCurrentAudycja()');
    return '';
  } else {
    i = 10;
    while (undefined==Ramowka.ramofka[i] && i>0) i--;
    while (undefined!=Ramowka.ramofka[i]) {
      aud = Ramowka.ramofka[i];
      //XLog('ramofka '+i+' : '+tserver+'/'+aud.trstart);
      if (tserver>=aud.trstart) {
  	    var ret = (aud.rstart=='' || aud.prowadzacy=='') ? aud.prowadzacy : 'od '+aud.rstart+' '+aud.prowadzacy;
		ret = ret.truncate(50,'...');
		return Object.isUndefined(aud.link) || aud.link=='' ? ret : '<A HREF="'+aud.link+'" target="_blank">'+ret+' &raquo;</A>';
	  }
      i--;
    }
    return '';
  }
}

function DoGetPlaylist() {
  $('TabWait').show();
  var playlisturl = Radio.air==1 ? 'playlista.html?id='+Radio.id : '/stacje/stacje_gramy_playlista_'+Radio.id+'.txt';
  new Ajax.Request(playlisturl, {
    method: 'get',
    onSuccess: function (transport) {
      XLog('Playlist received OK');
      var cdt = new Date();
      PlaylistLastUpdate = cdt.getTime();
      $('TabWait').hide();
      $('TabPlaylista').update(transport.responseText);
      DoUpdateDisplay(true);
    }
  });
}

function GetRamowka() {
  if (Radio.ramowka!='') {
    XLog('Ramowka requested');
    new Ajax.Request(Radio.ramowka+'?chaos='+Math.random(), {
      method: 'get',
      onSuccess: function (transport) {
        XLog('Ramowka received OK');
        var res = eval('('+transport.responseText+')');
        Ramowka = res;
        //XLog('After parsing Ramowka');
        UpdateDisplay();
      }
    });
  }
}


function ChooseTab(t) {
  XLog('Tab '+t+' selected');
  var allTabs = $('TabPlaylista','TabStacje','TabDebug','TabLog','TabPomoc','TabKontakt','TabFav','TabInfo','TabTekst');
  var allTabsText = $('TabPlaylistaText','TabStacjeText','TabDebugText','TabLogText','TabPomocText','TabKontaktText','TabFavText','TabTekstText');

  allTabs.invoke('hide');
  
  tabsTouched++;

  switch (t) {
    case 'TabPlayer':
      $('TabStrip').show();
    break;

    case 'TabPlaylista':
      var cdt = new Date();
      var playdiff = cdt.getTime()-PlaylistLastUpdate;
      if (playdiff<Radio.listfreq) {
        XLog('Playlist shown from cache ('+playdiff+'/'+Radio.listfreq+' ms)');
      } else {
        XLog('Playlist requested');
        DoGetPlaylist();
      }
    break;

    case 'TabDebug':
      var WMPtext = '';
      if (IE && !UseFlash) {
        var max = mPLAYER.error.errorCount;
        var errs = '';
        for (var i=0; i<max; i++) {
          var errItem = mPLAYER.error.item(i);
          errs += errItem.errorCode + ': '+errItem.errorDescription+'<br>';
        }
        WMPtext = ' &bull; WMP wersja '+mpVersionInfo(true)+'<br>Błędy WMP: '+max+'<br>'+errs+'<br>'+ErrorLog;
      }
      var RamowkaTexts = Radio.ramowka=='' ? '' : '<P>Fakty: '+GetCurrentFakty()+'<BR>Audycja: '+GetCurrentAudycja();
      $('TabDebug').update(Radio.name+' (id: '+Radio.id+') &bull; '+Radio.stream+'<br>AJAX: <a target="_blank" href="/stacje/stacje_gramy_'+Radio.id+'.txt?chaos='+Math.random()+'">teraz grane</A>'+' &bull; <a target="_blank" href="playlista.html?id='+Radio.id+'&chaos='+Math.random()+'">playlista</A>'+' &bull; <a target="_blank" href="'+Radio.ramowka+'">ramówka</A>'+'<br>Odświeżanie playlisty co '+Radio.freq+' s'+', ramówki co '+Radio.ramowkafreq+'/'+Radio.extraramowkafreq+', stream delay '+Radio.delay+'<br>IE: '+IE+WMPtext+RamowkaTexts);
    break;

  };

  allTabsText.invoke('setStyle',{color: '#000000'});
  XLog(t);
  $(t+'Text').setStyle({color: '#FF0000'});
  $(t).show();
}


function UpdateRamowkaDisplay() {
  if ((f=GetCurrentFakty())!='') {
    //$('TabPlayerRamowka').update(f.truncate(50,'...'));
    $('TabPlayerRamowka').update();
    Display.what = D_TEXT;
    Display.text = f;
    Display.refresh = true;
    //XLog('UpdateRamowkaDisplay [fakty]:'+f);
    result = true;
  } else if ( Radio.fakty!=1 && (f=GetCurrentAudycja())!='') {
    if (Radio.extratext) f = f+Radio.extratext;  
    $('TabPlayerRamowka').update(f);
    //XLog('UpdateRamowkaDisplay [audycja]:'+f);
    result = false;
  } else {
    XLog('UpdateRamowkaDisplay [empty]');
    result = false;
  }
  return result;
}

function SendVote(idsong,pkt) {
  XLog('Sending vote '+pkt+' for song id '+idsong);
  $('StripVote').update('Proszę czekać...');
  $('StripResult').update('');
  new Ajax.Request('glosuj.php', {
    method: 'post',
    parameters: {'id_type':idsong,'punktow':pkt,'id_radio':Radio.id,'type':'utwor'},
    onSuccess: function (transport) {
      XLog('SendVote: Voting result receive OK');
      var res = eval('('+transport.responseText+')');
      XLog('SendVote: Voting result parse OK');
      DoUpdateStars(res);
    },
    onFailure: function (transport) {
      XLog('<B>SendVote: Voting result receive failure</B>');
    }
  });
  LogEvent(EV_VOTE,pkt);
}


function VoteShow(i,ocena) {
  XLog('VoteShow('+i+') started');
  if (i==-1) {
    for (j=1; j<=5; j++) {
      if (ocena<=j-0.75) {
        ChangeImg('star'+j,'img/p/star0.gif');
      } else if (ocena>=j-0.75 && ocena<j-0.25) {
        ChangeImg('star'+j,'img/p/star5.gif');
      } else {
        ChangeImg('star'+j,'img/p/star1.gif');
      }
    }
  } else {
    for (j=1; j<=i; j++) ChangeImg('star'+j,'img/p/star2.gif');
    for (j=i+1; j<=5; j++) ChangeImg('star'+j,'img/p/star0.gif');
  }
  //for (j=0; j<=i; j++) ChangeImg('star'+j,'img/p/star1.gif');
  //for (j=i+1; j<=5; j++) ChangeImg('star'+j,'img/p/star0.gif');
}

function GwiazdkaImg(i,typimg,avgint,avg,allowvoting) {
  var gw = '<IMG NAME="star'+i+'" ID="star'+i+'" STYLE="padding-right:3px;" SRC="img/p/star'+typimg+'.gif" ALT="'+(allowvoting ? i : avg)+'" ALIGN=absmiddle>';
  if (allowvoting) {
    return '<A TITLE="'+i+'" HREF="#" onMouseOver="VoteShow('+i+','+avg+')" onMouseOut="VoteShow(-1,'+avg+')" onClick="SendVote('+Display.song.idu+','+i+')">'+gw+'</A>';
  } else {
    return gw;
  }
}

function DoUpdateStars(res) {
  var avgint = avg = avgavg = 0;
  var gwiazdki = oclicz = '';
  
  if (res.glosow>0) {
    avg = res.punktow/res.glosow;
    avgint = Math.round(avg);
    avgavg = Math.round(100*avg)/100;
    oclicz = avgavg.toFixed(1);
  }

  for (var i=1; i<=5; i++) {
    if (avgavg<=i-0.75) {
      gwiazdki += GwiazdkaImg(i,0,avgint,avgavg,(res.status=='allow'));
    } else if (avgavg>i-0.75 && avgavg<=i-0.25) {
      gwiazdki += GwiazdkaImg(i,5,avgint,avgavg,(res.status=='allow'));
    } else {
      gwiazdki += GwiazdkaImg(i,1,avgint,avgavg,(res.status=='allow'));
    }
  }

  if (res.status=='allow') {
    $('StripVote').update('Oceń utwór<SPAN TITLE="'+res.glosow+'">:</SPAN> '+gwiazdki+' '+oclicz);
  } else {
    $('StripVote').update('Średnia ocena<SPAN TITLE="'+res.glosow+'">:</SPAN> '+gwiazdki+' '+oclicz);
  }
}

function UpdateSongVoting() {
  XLog('UpdateSongVoting() started');
  $('StripVote').update('');
  $('StripResult').update('');

  var iduOK = false;
  try {
    iduOK = !(Display.song.idu==undefined || Display.song.idu=='' || parseInt(Display.song.idu)==0);  // utwór nieskojarzony, olej gwiazdki
  } catch(e) {
    XLog('Display.song.idu check error: '+e.description);
  }
  if (!iduOK) return;

  new Ajax.Request('/stacje/glosuj/'+Radio.id+'/'+Display.song.idu+'.txt', {
    method: 'get',
    //parameters: {'id_type':Display.song.idu,'id_radio':Radio.id,'type':'utwor'},
    //parameters: { 'xaos':Math.random() },
    onSuccess: function (transport) {
      XLog('Voting result received OK');
      var res = eval('('+transport.responseText+')');
      DoUpdateStars(res);
      XLog(transport.responseText);
      LockVote = false;
    },
    onFailure: function (transport) {
      XLog('<B>Voting result receive failure</B>');
      LockVote = false;
    }
  });

}

function UpdateSongInfo() {
  XLog('UpdateSongInfo() started');

  /*
  if (Radio.id==19) {
    var votelink = 'http://www.rmf.fm/f/?a=przebojroku2007&amp;from=mm&amp;id='+Display.song.idu;
    $('TabPlayerRamowka').update('<A onClick="window.open(\''+votelink+'\',\'_blank\',\'toolbar=yes, location=yes, directories=yes, resizable=yes, scrollbars=yes\'); return false;" HREF="'+votelink+'">Kliknij tu, by zagłosować na tę piosenkę!</A>');
    //$('TabPlayerRamowka').update('<A TARGET="_blank" HREF="'+votelink+'">Kliknij tu, by zagłosować na tę piosenkę!</A>');
  }
  */
  $('TabPlayerWykonawca').update(Display.song.link_wyk);
  $('TabPlayerTytul').update(Display.song.tyt);
  if (Display.song.ply=='') {
    $('TabPlayerPlyta').update('');
  } else {
    $('TabPlayerPlyta').update(Display.song.link_ply+' <SPAN ID=RecYear>'+Display.song.rok+'</SPAN>');
  }
  if (Display.song.idp=='') {
    if (Radio.id==57) { //muzzo = pokaz inne obrazki zamiast plyt!
      if (Display.song.idu=='') {
        ChangeImg('RecordCover','img/p/zaslepka-muzzo.jpg');
      } else {
        var subdir = Math.floor(eval(Display.song.idu)/1000);
        XLog('Muzzo cover loaded: '+Display.song.idu);
        ChangeImg('RecordCover','http://doc.rmf.pl/media/img_muzyka/utwor/'+subdir+'/'+Display.song.idu+'.jpg');
      }
    } else {
      XLog('No cover ID: '+Display.song.idp);
      ChangeImg('RecordCover','img/p/zaslepka.jpg');
    }
  } else {
    var subdir = Math.floor(eval(Display.song.idp)/1000);
    XLog('Cover loaded: '+Display.song.idp);
    ChangeImg('RecordCover','http://doc.rmf.pl/media/img_muzyka/plyta/'+subdir+'/'+Display.song.idp+'.jpg');
  }
  UpdateLyrics();

  window.clearTimeout(TimeoutVote);

  if (LockVote == false) {
    LockVote = true;
	var tOut = Math.round(5*Math.random());
	XLog('Setting UpdateSongVoting to run in '+tOut+' seconds');
    TimeoutVote = window.setTimeout(UpdateSongVoting, tOut);
  } else {
    XLog('LockVote is true, not calling UpdateSongVoting');
  }
  
  UpdateMobila();
  UpdatePlaylistCurrentSong(Display.song.tst);
  XLog('UpdateSongInfo() finished');

}

function UpdateLyrics() {
  if (Display.song.txt!=1) {
    //$('TabTekstText').hide();
    $('TabTekst').update('Do tego utworu nie ma jeszcze tekstu!');
    ChooseTab('TabPlaylista');
  } else {
    $('TabTekst').update('trwa ładowanie tekstu...');
    //var lurl = '/ajax/lyrics.php';
    var lurl = '/stacje/lyrics/'+Math.floor(Display.song.idu/1000)+'/'+Display.song.idu+'.txt';
    new Ajax.Request(lurl, {
    method: 'get',
    //parameters: {'id':Display.song.idu},
    onSuccess: function (transport) {
      $('TabTekst').update(transport.responseText);
      //$('TabTekstText').show();
      if (tabsTouched<=1 && Radio.id!=1) ChooseTab('TabTekst');
    }
  });
  }
}

function UpdatePlaylistCurrentSong(tstamp) {
  XLog('UpdatePlaylistCurrentSong('+tstamp+')');
  var sss = $('TabPlaylista').immediateDescendants();
  sss.invoke('removeClassName','currentSong');
  var tss = $('List'+tstamp);
  if (!(tss==null)) tss.addClassName('currentSong');
  

}

function UpdateDisplay() {
  //XLog('UpdateDisplay() called');
        
  DoUpdateDisplay(false);
}

function ShowSongInfo(doshow) {
  // switch div visibility
  if (doshow) {
    XLog('ShowSongInfo(true)');
    $('TabPozycja').hide();
    $('TabPlayerSongInfo').show();
    $('Strip').show();
  } else {
    XLog('ShowSongInfo(false)');
    $('TabPlayerSongInfo').hide();
    $('TabPozycja').show();
    $('Strip').hide();
  }
}

function UpdateMobila() {
  //'m_id_mono': '0','m_id_poli': '48602','m_id_mp3': '48605'
  if (Display.song.m_id_poli>0 || Display.song.m_id_mp3>0) {
    $('MobilaText').update('<A HREF="#" onClick="OpenMobilaPopup();return false;"><IMG SRC="/img/p2/pobierzdzwonek.gif" ALT="Pobierz dzwonek"></A>').show();
  } else {
    $('MobilaText').update('').hide();
  }
}

function OpenMobilaPopup() {
  //alert('Mobila: '+Display.song.m_id_poli+'/'+Display.song.m_id_mp3);
  Mobi('mobi','MM','dplayer',Display.song.m_id_mono,Display.song.m_id_poli,Display.song.m_id_mp3);
}

function OpenMobilaPopupNr(id_mono,id_poli,id_mp3) {
  Mobi('mobi','MM','dplayer',id_mono,id_poli,id_mp3);
}

function Mobi(eid,prefix,flashid,idmono,idpoli,idmp3) {
  XLog('Mobi('+eid+','+prefix+','+flashid+','+idmono+','+idpoli+','+idmp3+')');
  $('mobi').hide();
  var url = 'http://www.mobila.pl/odsluchaj.php?redirect=1&src=';
  var txt = '<DIV STYLE="float:right; margin:0px;"><A HREF="#" onClick="$(\'mobi\').hide();mp3Stop(\''+flashid+'\',\'mobiplay1\',\''+url+'\');mp3Stop(\''+flashid+'\',\'mobiplay2\',\''+url+'\');return false;">X</A></DIV>';
  if (idpoli>0) {
    txt += '<DIV CLASS=mobiblock>'+getPlayer('dplayer','mobiplay1',url+idpoli)+' Jeśli chcesz pobrać dzwonek <B>POLI</B>, wyślij SMS<br>o treści <B>AA'+prefix+'.0'+idpoli+'</B> na numer <B>7365</B><br>(koszt 3 zł netto / 3,66 zł brutto)</DIV>';
  }
  if (idmp3>0) {
    txt += '<DIV CLASS=mobiblock>'+getPlayer('dplayer','mobiplay2',url+idmp3)+' Jeśli chcesz pobrać dzwonek <B>MP3</B>, wyślij SMS<br>o treści <B>AA'+prefix+'.0'+idmp3+'</B> na numer <B>7570</B><br>(koszt 5 zł netto / 6,10 zł brutto)</DIV>';
  }
  txt += '<DIV CLASS=mobiblock>Usługa dostępna w sieciach:<br>Orange, Plus, Era, Play, Heyah, Sami swoi</DIV><DIV CLASS=mobiblock><A HREF="http://www.regulaminy.pl/regulamin/regulamin-uslugi-pobieranie-obiektow-dla-telefonow-komorkowych/r,5/" TARGET="_blank">regulamin <IMG SRC="/img/yellow-arrow.gif"></A> | <A HREF="mailto:sms@mobila.pl">reklamacje <IMG SRC="/img/yellow-arrow.gif"></A></DIV>';
  $('mobi').update(txt).show();
}

function FillDisplayInfo() {
  //XLog('FillDisplayInfo()');
  tserver = GetServerTime();

  var showsongs = true;
  if (Radio.ramowka!='') showsongs = !UpdateRamowkaDisplay();

  if (showsongs) {
    var uselater;
    if (Songs==undefined || Songs.pozniej==undefined) {
      uselater = false;
    } else {
      uselater = (tserver>=Songs.pozniej.tst);
      if (Debug) $('TabPlayerOther').update(Songs.pozniej.tst-tserver);
    }
    //XLog('Use Songs.pozniej? '+uselater);
    var CSong = uselater ? Songs.pozniej : Songs.teraz;
    //XLog(CSong.wyk);

    if (U2Special.active) {
      Display.what = D_TEXT;
      U2Special.UpdateList();
      if (Display.text!=U2Special.zaslepka) {
        Display.text = U2Special.zaslepka;
        Display.refresh = true;
      }
    } else if (CSong===undefined || (CSong.wyk=='' && CSong.tyt=='') ) {  // jak chcemy na stale zaslepke, to tu :) Radio.id==35
      Display.what = D_TEXT;
      Display.text = Radio.zaslepka;
      Display.refresh = true;
    } else if (CSong.tyt.match('Specjalne wydanie Fakt')) { // warunek dla zalobnych
      Display.what = D_TEXT;
      Display.text = Radio.zaslepka;
      Display.refresh = true;
    } else if (CSong.tyt=='Nie ma opisu') {
      Display.what = D_TEXT;
      Display.text = Radio.zaslepka+'<br>'+CSong.wyk;
      Display.refresh = true;
    } else {
      dorefresh = (Display.what!=D_SONG || Display.song.tst != CSong.tst);
      if (dorefresh) XLog('dorefresh true!');
      if (tserver<CSong.tst) {
        XLog('Song from the future ignored, tserver='+tserver+', CSong.tst='+CSong.tst);
        if (Display.what != D_SONG) {  // jesli grala piosenka i spadla, to ja trzymamy dalej
          Display.what = D_TEXT;
          Display.text = Radio.zaslepka;
        } else {
          dorefresh = false;
        };
      } else {
        Display.what = D_SONG;
        Display.song.wyk = CSong.wyk;
        Display.song.tyt = CSong.tyt;
        Display.song.ply = CSong.ply.truncate(110,'...');
        Display.song.idp = CSong.idp;
        Display.song.idu = CSong.idu;
        Display.song.rok = CSong.rok;
        Display.song.tst = CSong.tst;
        Display.song.txt = CSong.txt;
        Display.song.m_id_mono = CSong.m_id_mono;
        Display.song.m_id_poli = CSong.m_id_poli;
        Display.song.m_id_mp3 = CSong.m_id_mp3;
        Display.song.id_wyk_ply = CSong.id_wyk_ply;
        Display.song.wyk_ply = CSong.wyk_ply;
        Display.song.id_wyk = CSong.id_wyk;
        Display.song.d_b = CSong.d_b;
        if (Display.song.d_b=='1' && Display.song.id_wyk!='')  {
          Display.song.link_wyk = '<A HREF="#" onClick="OpenMM(\'/bio,'+Display.song.id_wyk+'\'); return false;">'+Display.song.wyk+'</A>';
        } else {
          Display.song.link_wyk = Display.song.wyk;
        }
        if (Display.song.d_b=='1' && Display.song.id_wyk_ply!='')  {
          Display.song.link_ply = '<A HREF="#" onClick="OpenMM(\'/bio,'+Display.song.id_wyk_ply+',ply,'+Display.song.idp+'#'+Display.song.idp+'\'); return false;">'+Display.song.ply+'</A>';
        } else {
          Display.song.link_ply = Display.song.ply;
        }
      }
      Display.refresh = dorefresh;
       
    }

  }
  
}

function GotDiscographyLink() {
  return Display.song.d_b=='1' && Display.song.id_wyk_ply!='';
}

function CoverClick() {
  if (GotDiscographyLink()) {
    OpenMM('/bio,'+Display.song.id_wyk_ply+',ply,'+Display.song.idp+'#'+Display.song.idp);
  }
  return false;
}

function DoUpdateDisplay(forcerefresh) {
  //XLog('DoUpdateDisplay('+forcerefresh+') called');
  if (forcerefresh || Display.refresh) {
    switch(Display.what) {
      case D_NOTHING:
        XLog('DoUpdateDisplay(D_NOTHING)');
      break;
      case D_SONG:
        //XLog('DoUpdateDisplay(D_SONG)');
        UpdateSongInfo();
        ShowSongInfo(true);
        document.title = Radio.name+' - '+Display.song.wyk+': '+Display.song.tyt;
      break;
      case D_TEXT:
        //XLog('DoUpdateDisplay(D_TEXT)');
        $('TabPozycja').update(Display.text);
        ShowSongInfo(false);
        document.title = Radio.name;
      break;
    }
    Display.refresh = false;
  }

}

function GetPlaying() {
  XLog('GetPlaying()');
  new Ajax.Request('/stacje/stacje_gramy_'+Radio.id+'.txt', {
    method: 'get',
    //parameters: { 'xaos':Math.random(999999) },
    onSuccess: function (transport) {
      XLog('GetPlaying() successful response');
      var res = eval('('+transport.responseText+')');
      Songs = res;
      var currentDate = new Date();
      var ts = Math.round(currentDate.getTime()/1000);
      Songs.tdiff = ts-res.tczas+eval(Radio.delay);
      XLog('Songs.tdiff set to: '+Songs.tdiff + ' (server:'+res.tczas+', local:'+ts+')');
      FillDisplayInfo();
    }
  });
}

function GetFavorites() {
  if (Config.MM_Favorites=='') {
    XLog('GetFavorites() - Config.MM_Favorites empty');
  } else {
    XLog('GetFavorites(\''+Config.MM_Favorites+'\')');
    new Ajax.Request('/ajax.html?what=favnextplay&ids='+Config.MM_Favorites+'&chaos='+Math.random(), {
      method: 'get',
      onSuccess: function (transport) {
        XLog('GetFavorites() successful response');
        FavSongs = $A(transport.responseJSON);
        $('TabFav').update(FavSongs.collect(function(s) { return s.start_time.substr(0,5)+' <!--'+s.timestamp+' -->'+s.wyk+': '+s.tytul; }).join('<br>'));
      }
    });
  }
}

function CheckFavorites() {
  XLog('CheckFavorites(), Config.AlertType='+Config.AlertType);
  if (Config.AlertType>1) {
    var tser = GetServerTime();
    if (tser=='') {
      XLog('No server time');
      Alert('',false);
      Konkurs();
      return false;
    }
    if (FavSongs==null) {
      Alert('',false);
      Konkurs();
      XLog('FavSongs empty');
    } else {
      XLog('FavSongs not null');
      XLog('tserver time: '+tser);
      //CDir(FavSongs);
      var nears = FavSongs.find(function(s) { return tser>=s.timestamp-Config.AlertPre && tser<=s.timestamp-Config.AlertPost && Radio.id!=s.id_radio; });
      XLog('nears: '+Object.toJSON(nears));
      var playsound = Config.AlertType==3;
      if (nears==undefined) {
        XLog('fav not found');
        Alert('',false);
        Konkurs();
      } else {
        Alert('<A TITLE="Przełącz się na tę stację" HREF="/play,'+nears.id_radio+'">'+RadioNames[nears.id_radio]+'</A> '+nears.start_time.substr(0,5)+' '+nears.wyk+': '+nears.tytul,playsound);
      }
    }
  } else {
    Konkurs();
  }
}

function Alert(s,playsound) {
  if (s=='') {
    $('TabPlayerAlert').update('');
  } else {
    $('TabPlayerAlert').update('<IMG SRC="/img/p/alert-ani.gif" STYLE="margin-right:8px;" ALIGN=absmiddle>'+s);
    if (playsound) {
      var xfbeep = getFlashObject('fbeep');
      XLog('xfbeep:'+xfbeep);
      //xfbeep.beep(Math.floor(1+Math.random()*6));
      if (xfbeep.beep) xfbeep.beep(1);
    }
  }
}

var WasPlaying = false;

function ShowCurrentStatus() {

  var IsPlaying = mpIsPlaying();

  if (WasPlaying != IsPlaying) {
    XLog('Playing status changed in ShowCurrentStatus()');
    var tid = $('TabPlayer').immediateDescendants();
    if (IsPlaying) {
      ChangeImg('buttons','img/p2/btn_stop.jpg');
      tid.invoke('removeClassName','inactive');
    } else {
      ChangeImg('buttons','img/p2/btn_play.jpg');
      tid.invoke('addClassName','inactive');
    }
    WasPlaying = IsPlaying;
  }

  var bufProg = Math.floor(mpGetBufferingProgress());
  var bufProgTxt = bufProg==100 || bufProg==0 ? '' : bufProg+'%';

  if (buffering) sendText = 'buforowanie';
  var sendText = mpGetPlayStateString();

  var time = mpGetTime();
  if (time!='') time = ' ('+time+')';

  $('status').update(' '+sendText+' '+bufProgTxt+time );

}

function findMPlayer() {
  mPLAYER = $('mp');
}

function mpGetPlayState() {
  var pst = UseFlash ? mPLAYER.playState() : mPLAYER.playState;
  if (BufTime==-1 && pst==3) {
    var cdt = new Date();
    BufTime = cdt.getTime()-BufStart;
    XLog('Stream start time: '+BufTime);
  }
  return pst;
}

function mpGetPlayStateString() {

/*

http://msdn2.microsoft.com/en-us/library/aa392430.aspx

Value State Description
0 Undefined Windows Media Player is in an undefined state.
1 Stopped Playback of the current media item is stopped.
2 Paused Playback of the current media item is paused. When a media item is paused, resuming playback begins from the same location.
3 Playing The current media item is playing.
4 ScanForward The current media item is fast forwarding.
5 ScanReverse The current media item is fast rewinding.
6 Buffering The current media item is getting additional data from the server.
7 Waiting Connection is established, but the server is not sending data. Waiting for session to begin.
8 MediaEnded Media item has completed playback.
9 Transitioning Preparing new media item.
10 Ready Ready to begin playing.
11 Reconnecting Reconnecting to stream.

*/

  var sendText = "";
  switch(mpGetPlayState()) {
    case 0: sendText  = "****"; break;
    case 1: sendText  = "stop"; break;
    case 2: sendText  = "pauza"; break;
    case 3: sendText  = "odtwarzanie"; break;
    case 6: sendText  = "buforowanie"; break;
    case 7: sendText  = "oczekiwanie"; break;
    case 8: sendText  = "zamknięcie"; break;
    case 9: sendText  = "przygotowanie"; break;
    case 10: sendText = "gotowe"; break;
    case 11: sendText = "łączenie"; break;
  }

  return sendText;
}

function mpGetBufferingProgress() {
  return UseFlash ? 0 : (mPLAYER.Network.bufferingProgress ? mPLAYER.Network.bufferingProgress : 0);
}

function mpIsPlaying() {
  var pst = mpGetPlayState();
  //XLog('mpIsPlaying, state='+pst);
  return !(pst==0 || pst==1 || pst==10);
}

function mpTogglePlay() {
  XLog('mpTogglePlay()');
  if (WasPlaying=mpIsPlaying()) {
    ChangeImg('buttons','img/p2/btn_play.jpg');
    $('status').update('STOP');
    LogEvent(EV_STOP);
    mpStop();
  } else {
    ChangeImg('buttons','img/p2/btn_stop.jpg');
    $('status').update('PLAY');
    LogEvent(EV_PLAY);
    mpPlay();
  }
}

function mpStop() {
  if (UseFlash) {
    mPLAYER.soundStop();
  } else { 
    mPLAYER.controls.stop();
  }
}

function mpPlay() {
  if (UseFlash) {
    mPLAYER.soundPlay();
  } else { 
    mPLAYER.controls.play();
  }
}

function mpGetTime() {
  return UseFlash ? '' : mPLAYER.controls.currentPositionString;  //not implemented in Flash player yet
}

function mpToggleMute() {
  if (UseFlash) {
    var isMuted = mPLAYER.getSoundMute();
    mPLAYER.setSoundMute(!isMuted);
  } else {
    mPLAYER.settings.mute = !mPLAYER.settings.mute;
  }
  $('ControlMute').toggleClassName('pressed');
}

function mpVolume(amount) {
  //var newvol = mPLAYER.settings.volume + amount;
  //if (newvol<0) newvol=0;
  //if (newvol>100) newvol=100;
  XLog('Volume changed to '+amount);
  $('status').update('VOL: '+amount);
  var volImg = URLPREFIX+'img/p/volume'+amount+'.gif';
  //XLog('Changing image to '+volImg);
  ChangeImg('volume',volImg);
  xamount = amount*12.5;
  if (UseFlash) {
    mPLAYER.setSoundVolume(xamount);
  } else {
    mPLAYER.settings.volume = xamount;
  }
  eraseCookie('defvol');
  createCookie('defvol',amount,24);
  return false;
}

function mpVersionInfo(full) {
  if (UseFlash) return full ? 'FlashPlayer' : '';
  var mmp = mPLAYER.versionInfo;
  if (mmp==undefined) return '';
  return full ? mmp : mmp.substr(0,mmp.indexOf('.'));
}

function isIE() {
  var agt = navigator.userAgent.toLowerCase();
  return !(agt.indexOf("msie") == -1 || agt.indexOf("opera") != -1);
}

function SendComment() {
  if ($F('comm')!='') {
    $('kontaktformmsg').update('Proszę czekać...');
    new Ajax.Request('contact.html', {
      method: 'post',
      parameters: { text: $F('comm'), sig: $F('sig'), 'id_radio': Radio.id, 'user_id': UserID },
      onComplete: function (transport) {
        $('commform').reset();
        $('kontaktformmsg').update('');
        ChooseTab('TabPlayer');
      }
     });
   }
   LogEvent(EV_COMMENT);
}

function LogEvent(evt) {
  XLog('LogEvent() called');
  return; // wylaczone!
  var evt = arguments[0];
  var extra = arguments.length>1 ? arguments[1] : '';
  if (LastEventLogged==EV_CHANGE && evt==EV_UNLOAD) {
    // nie zapisuje EV_UNLOAD, jesli wynika z change'a
    LastEventLogged = EV_UNLOAD;
    return;
  }
  LastEventLogged = evt;
  var evtinfo = { 'zdarzenie': evt, 'id_radio': Radio.id, 'id_display': Display.what, 'id_utwor': Display.song.idu, 'user_id': UserID, 'extra': extra };
  //XLog('Event info: '+evtinfo.toJSON());
  new Ajax.Request('stacja_stat.html', {
    method: 'post',
    parameters: evtinfo,
    onComplete: function (transport) {
      XLog('LogEvent() onComplete');
    }
  });
}

function LogActivity(eventcode,infoint) {
  //return; //wylaczone
  new Ajax.Request('useraction.html', {
    method: 'get',
    parameters: { 'a':'log', 'key':eventcode, 'val':infoint },
    onComplete: function (transport) {
    }
  });
}

function OpenWin(url,win) {
  window.open(url,win,'toolbar=yes,location=yes,directories=yes,resizable=yes,scrollbars=yes');
}

function OpenMM(url) {
  OpenWin(url,'mmpage');
}

function Konkurs() {
  if (Festival.idr.include(Radio.id)) {
    if (Display.what==D_SONG && Festival.idw.include(Display.song.id_wyk)) {
      $('TabPlayerAlert').update('<SPAN ID="KonkursAlert">&nbsp;&nbsp;'+Festival.txt+'</SPAN>');
    } else {
      $('TabPlayerAlert').update();
    }
  }
  return;
  XLog('Konkurs()');
  var cook = readCookie('KonkursSzalik');
  if (cook!==null) {
    return; 
  } else {
    Alert('<SPAN ID="KonkursAlert"><A HREF="#" onClick="DoKonkurs();return false;">Kibicuj naszym piłkarzom i wygraj szalik! Kliknij!</A></SPAN>',true);
  }
}

function DoKonkurs() {
  XLog('DoKonkurs()');
  $('KonkursAlert').update('Sprawdź prywatną wiadomość na FORUM! 10 pierwszych osób wygrywa!');
  createCookie('KonkursSzalik','1',3);
  new Ajax.Request('useraction.html', {
    method: 'get',
    parameters: {'a':'setconfig','key':'KonkursSzalik','val':Config.UserID},
    onComplete: function (transport) {
    }
  });
}

var Shoutbox = Class.create({
  initialize: function (radioid,displayid,userid,usernick) {
    XLog('Shoutbox.initialize('+radioid+','+displayid+')');
    this.RadioID = radioid;
    this.DisplayID = displayid;
    this.LastID = 0;
    this.UserID = userid;
    this.UserNick = usernick;
    this.Messages = [];
    XLog('this.RadioID='+this.RadioID);
    XLog('Shoutbox.initialize() end');
  },
  FetchData: function() {
    var rid = this.RadioID;
    var lid = this.LastID;
    var did = this.DisplayID;
    var z = this;
    //XLog('Shoutbox.FetchData()');
    //XLog('this.RadioID='+this.RadioID);
    new Ajax.Request('/shoutbox.html', {
      method: 'get',
      parameters: {'id_radio':rid,'last_id':lid,'limit':10,'x':Math.random()},
      onSuccess: function(transport) {
        //XLog('FetchData onSuccess');
        var resp = transport.responseJSON;
        if (resp[0]!=null) z.LastID = resp[0].id;
        //XLog('this.DisplayID='+did);
        z.Messages = $A(resp).concat(z.Messages).uniq().slice(0,10);
        z.DisplayMessages(did);
        //$(did).update(resp);
        //XLog('FetchData onSuccess after display');
      }
    });
  },
  FormatMessages: function() {
    //XLog('FormatMessages');
    return this.Messages.collect( function(s) {return '<div class=msg><div class=msgdata>'+s.data+'</div><div class=msgnick><A href="#" onClick="OpenMM(\'/?p=profil&uid='+s.userid+'\');return false;">'+s.nick+'</A></div><div class=msgtresc>'+s.tresc+'</div></div>'; } ).join('');
  },
  DisplayMessages: function(displayid) {
    //XLog('DisplayMessages');
    $(displayid).update(this.FormatMessages());
  },
  SendMessage: function (s) {
    var rid = this.RadioID;
    var uid = this.UserID;
    var nick = this.UserNick;
    new Ajax.Request('/shoutbox.html', {
      method: 'post',
      parameters: {'id_radio':rid,'userid':uid,'nick':nick,'tresc':s,'save':'1'}
    });
  }
});

function SubmitShoutbox() {
  if ($F('sbtext')!='') {
    ShoutboxInstance.SendMessage($F('sbtext'));
    $('sbtext').clear();
    LogActivity(ACT_SHOUTBOX,Radio.id);
  }
  return false;
}

function ToggleShoutbox() {
  if (ShoutboxActive) {
    ShoutboxActive = false;
    $('TabShoutboxTextArr').update('&rarr;');
    ChangeWindowWidth(-207);
  } else {
    ShoutboxActive = true;
    $('TabShoutboxTextArr').update('&larr;');
    ChangeWindowWidth(207);
  }
}

function ChangeWindowWidth(z) {
  window.resizeBy(z,0);
}
 