
﻿
function StartRegiaUpdate(_kbps,_channel,_autoResizePopUp)
{if(intervalID!=null)
clearInterval(intervalID);kbps=_kbps;regiaUrl="regia"+_channel+".txt";autoResizePopUp=_autoResizePopUp;AlbumPicturesUrl="Images/AlbumPictures/"+_channel+"/";defaultAlbumPicture="Logo"+_channel+".jpg";if(kbps=="32")
{fillDelay=36;fetchInterval=36;}
else
{fillDelay=10;fetchInterval=10;}
updateImmediatelyFlag=true;regiaUpdate();setTimeout(auxStart,2000);}
var intervalID=null;function auxStart()
{intervalID=setInterval(regiaUpdate,1000);}
var kbps;var regiaUrl;var autoResizePopUp;var AlbumPicturesUrl
var defaultAlbumPicture
var updateImmediatelyFlag;var fillDelay;var fetchInterval;var secs;var toggle;function regiaUpdate()
{var traceNextAction=document.getElementById("pltraceNextAction");var traceRemaining=document.getElementById("pltraceRemaining");if(updateImmediatelyFlag)
{fetch_regia();toggle=0;if(traceNextAction!=null)
traceNextAction.innerHTML="fetching regia in";secs=fetchInterval;}
else
{secs--;if(secs<0)
{if(toggle==0)
{fetch_regia();toggle=1;if(traceNextAction!=null)
traceNextAction.innerHTML="filling playlist in";secs=fillDelay;}
else
{fillPlaylist();toggle=0;if(traceNextAction!=null)
traceNextAction.innerHTML="fetching regia in";secs=fetchInterval;}}}
if(traceRemaining!=null)
traceRemaining.innerHTML=secs;}
var req=false;function fetch_regia()
{req=false;if(window.XMLHttpRequest&&!(window.ActiveXObject)){try{req=new XMLHttpRequest();}catch(e){req=false;}}else if(window.ActiveXObject){try{req=new ActiveXObject("Msxml2.XMLHTTP");}catch(e){try{req=new ActiveXObject("Microsoft.XMLHTTP");}catch(e){req=false;}}}
if(req){req.open("GET",regiaUrl+"?sid="+Math.random(),true);req.onreadystatechange=fetch_callback;req.send("");}}
function fetch_callback()
{if(req.readyState==4)
{var traceStatus=document.getElementById("pltraceStatus");if(req.status==200)
{if(traceStatus!=null)
traceStatus.innerHTML="regia fetched";if(updateImmediatelyFlag)
{updateImmediatelyFlag=false;fillPlaylist();}}
else
{if(traceStatus!=null)
traceStatus.innerHTML="could not fetch regia";}}}
function fillPlaylist()
{var regiaText=req.responseText;try
{var history=null;var queue=null;var splits=regiaText.split("##########");if(splits[0]!="")
history=splits[0].split("a@@@@@@@@z");if(splits[1]!="")
queue=splits[1].split("a@@@@@@@@z");var title;var artist;var picture;var duration=-1;var songSchedule=-1;var pltraceStatusMsg="";var nowPlayingWrapperDiv=document.getElementById("nowPlayingWrapper");if(nowPlayingWrapperDiv==null)
pltraceStatusMsg+="nowPlayingWrapper block not found in aspx; ";else
{if(history==null)
{nowPlayingWrapperDiv.style.display="none";pltraceStatusMsg+="history info not found in regia; ";}
else if(history.length!=5)
{nowPlayingWrapperDiv.style.display="none";pltraceStatusMsg+="unrecognized format of history info in regia; ";}
else
{title=history[0];artist=history[1];duration=history[3];picture=history[4];try
{var played=history[2].substring(history[2].indexOf(" ")+1);songSchedule=str2sec(played)+str2sec(duration);}
catch(e)
{songSchedule=-1;duration=-1;}
document.getElementById("title_current").innerHTML=title;document.getElementById("artist_current").innerHTML=artist;var img=document.getElementById("picture_current");if(img!=null)
{if(picture!="")
{img.src=AlbumPicturesUrl+picture;}
else
img.src=AlbumPicturesUrl+defaultAlbumPicture;}
nowPlayingWrapperDiv.style.display="block";pltraceStatusMsg+="now playing filled in; ";}}
var comingUpWrapperDiv=document.getElementById("comingUpWrapper");if(comingUpWrapperDiv==null)
pltraceStatusMsg+="comingUpWrapper block not found in aspx page; ";else
{if(queue==null)
{comingUpWrapperDiv.style.display="none";pltraceStatusMsg+="queued song elements not found in regia; ";}
else if((queue.length-1)%4!=0)
{comingUpWrapperDiv.style.display="none";pltraceStatusMsg+="unrecognized format of queue info in regia; ";}
else
{var maxQueueLength=document.getElementById("maxQueueLength").value;var i=0;var iok=0;while(i*4<queue.length-1&&iok<maxQueueLength)
{title=queue[i*4];artist=queue[i*4+1];picture=queue[i*4+3];if(songSchedule!=-1)
{try
{duration=str2sec(queue[i*4+2]);}
catch(e)
{songSchedule=-1;duration=-1}}
if((duration>60)||(songSchedule==-1))
{divTitle=document.getElementById("title_"+iok);divArtist=document.getElementById("artist_"+iok);divSchedule=document.getElementById("schedule_"+iok);divTitle.innerHTML=title;divArtist.innerHTML=artist;if(songSchedule!=-1)
{divSchedule.innerHTML=sec2str(songSchedule);songSchedule+=duration;}
else
divSchedule.innerHTML="-:-";divRow=document.getElementById("row_"+iok);divRow.style.display="block";iok++;}
i++;}
if(iok!=0)
pltraceStatusMsg+="queue filled in; ";else
pltraceStatusMsg+="no songs to display in queue found in xml file; ";while(iok<maxQueueLength)
{divRow=document.getElementById("row_"+iok);divRow.style.display="none";iok++;}
comingUpWrapperDiv.style.display="block";}}
traceStatus=document.getElementById("pltraceStatus");if(traceStatus!=null)
traceStatus.innerHTML=pltraceStatusMsg;}
catch(e)
{traceStatus=document.getElementById("pltraceStatus");if(traceStatus!=null)
traceStatus.innerHTML=pltraceStatusMsg+"Exception: "+e;}
if(autoResizePopUp==true)
{PopUpResize();setTimeout(PopUpResize,500);}}
function PopUpResize()
{var ok=getQueryParameter("resizePopUp");if(ok!=null)
{dynamicWidth=document.getElementById("PlaylistWrapper").clientWidth;dynamicHeight=document.getElementById("PlaylistWrapper").clientHeight;var browser=navigator.appName;if(browser=="Microsoft Internet Explorer")
window.resizeTo(dynamicWidth,dynamicHeight+118);else if(browser=="Netscape")
window.resizeTo(dynamicWidth+16,dynamicHeight+95);else
window.resizeTo(dynamicWidth+16,dynamicHeight+95);}}
function sec2str(sec)
{var hh=Math.floor(sec/3600)%24;sec=sec%3600;var mm=Math.floor(sec/60)
sec=sec%60;return hh+":"+(mm<=9?"0"+mm:mm);}
function str2sec(str)
{if(str.indexOf(".")!=-1)
splits=str.split(".");else
splits=str.split(":");if(splits.length==3)
{hh=parseInt(splits[0]);mm=parseInt(splits[1]);ss=parseInt(splits[2]);}
else
{hh=0;mm=parseInt(splits[0]);ss=parseInt(splits[1]);}
return hh*3600+mm*60+ss;}
