<!-- 
// (c) 2005-9 Live365, Inc.  All rights reserved.

var gServer = "www.live365.com";
var gStoreSearchServer = "directory.live365.com";
//gServer = "devweb01.nanocosm.com";
//gStoreSearchServer = gServer;

//
// -------------- Read configuration parameters from cmd line --------------------
//
var gMySite			= '..';
var gImageDir		= 'http://' + gServer + "/mini/images/";
var gNoBranding		= 0;
var gCheckAds		= 0;
var gShowWishButton	= 'Y';
var gPLSEvent		= 0;
var gECommURL		= '';
var gUserCSS		= '';
var gDisplayType	= 'LIVE365';
var gStationName	= '';
var gVip			= 0;
var gSecondsLeft	= 200;
var gSecondsDelay	= 0;
var gMode			= -1;		// -1: use other params; 0: text; 1: hybrid; n: graphics; 99: text-only (hide others)
var gRows			= -3;
var gImageRows		= 0;		// number of rows to display with images (0 - all text)
var gCallback		= 0;		// call back to HandlePLSEvent() on update
var gOrigRows		= -3;
var gOrigImageRows	= 0;
var gTimeFmt		= 'mm:ss';
var gSep0			= '';		// prefix before Artist
var gSep1			= ' - ';	// Artist/Title separator
var gSep2			= '&nbsp;';	// Title/Time separator
var gSep3			= ' - ';	// Time/Album separator
var gNowSep0		= '';		// prefix before Artist for Now Playing entry
var gNowSep1		= ' - ';	// Artist/Title separator for Now Playing entry
var gNowSep2		= '&nbsp;&nbsp;';	// Title/Time separator for Now Playing entry
var gNowSep3		= ' - ';	// Time/Album separator for Now Playing entry
var gSink			= new Image;
var gWMP10			= (GetCookie("platform") == 'wmp10'); // beware: cookies are flaky on WMP11

function ReadParams()
{
	gMySite			= ParseParam("site", gMySite);
	gWMP10			= (gMySite == 'wmp');
	var now_sep		= (gWMP10) ? '<br>' : ' - ';
	var ecomm		= gECommURL;
	
	try {
		if (parent && parent.ecommUrl && parent.ecommUrl != "")
			ecomm = parent.ecommUrl;	
	}
	catch(e) {
		ecomm = '';
	}	
	
	gStationName	= ParseParam("station", gStationName);
	gUserCSS		= ParseParam("css", gUserCSS);
	var iDir		= ParseParam("idir", "mini/images"); // or "images" for station pages
	gDisplayType	= ParseParam("display_type", gDisplayType);
	gVip			= (gStationName.indexOf("afl:") != -1 || ParseParam("vip", GetCookie("afl")));
	gCheckAds		= parseInt(ParseParam("ads", gCheckAds));
	gMode			= parseInt(ParseParam("mode", gMode));
	gRows			= parseInt(ParseParam("rows", gRows)); // positive or negative indicates direction
	gImageRows		= parseInt(ParseParam("irows", gImageRows)); // count of image rows
	gCallback		= ParseParam("cb", 0);
	gTimeFmt		= ParseParam("time", gTimeFmt);		// 'mm:ss' or '-mm:ss' for countdown of current
	gSep0			= ParseParam("sep0", gSep0);
	gSep1			= ParseParam("sep1", gSep1);
	gSep2			= ParseParam("sep2", gSep2);
	gSep3			= ParseParam("sep3", gSep3);
	gNowSep0		= ParseParam("now_sep0", gSep0);
	gNowSep1		= ParseParam("now_sep1", now_sep);
	gNowSep2		= ParseParam("now_sep2", gSep2);
	gNowSep3		= ParseParam("now_sep3", now_sep);
	var hide		= ParseParam("hide", '');
	gShowBuyButton	= (hide.indexOf("B") == -1) ? "Y" : "N";
	gShowWishButton	= (hide.indexOf("W") == -1) ? "Y" : "N";
	gNoBranding		= (gCheckAds || hide.indexOf("T") != -1);
	gECommURL		= ParseParam("ecomm", ecomm);
	
	if (gDisplayType.indexOf("PLR") != -1)
		gShowWishButton = 'N';
	
	if (gImageRows == 99) {
		gImageRows = 0;
		gMode = 99;
	}
	
	if (gRows < -10)
		gRows = -10;
	else if (gRows > 10)
		gRows = 10;
	else if (gRows == 0)
		gRows = -3;
		
	gOrigRows = gRows;
	gOrigImageRows = gImageRows;
	gImageDir = 'http://' + gServer + "/scp/" + gMySite + "/" + iDir + "/";
	
	if (gMode > -1)
		SetMode(gMode);
}
		

//
// -------------- XML HTTP functions --------------------
//
var gLabels = new Array("one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten");

var playlist = {
	one:	{title: "", artist: "", album: "", time:"", url: "", visualURL: "", filename: "", trackType: "user"},
	two:	{title: "", artist: "", album: "", time:"", url: "", visualURL: "", filename: "", trackType: "user"},
	three:	{title: "", artist: "", album: "", time:"", url: "", visualURL: "", filename: "", trackType: "user"},
	four:	{title: "", artist: "", album: "", time:"", url: "", visualURL: "", filename: "", trackType: "user"},
	five:	{title: "", artist: "", album: "", time:"", url: "", visualURL: "", filename: "", trackType: "user"},
	six:	{title: "", artist: "", album: "", time:"", url: "", visualURL: "", filename: "", trackType: "user"},
	seven:	{title: "", artist: "", album: "", time:"", url: "", visualURL: "", filename: "", trackType: "user"},
	eight:	{title: "", artist: "", album: "", time:"", url: "", visualURL: "", filename: "", trackType: "user"},
	nine:	{title: "", artist: "", album: "", time:"", url: "", visualURL: "", filename: "", trackType: "user"},
	ten:	{title: "", artist: "", album: "", time:"", url: "", visualURL: "", filename: "", trackType: "user"}
};


var gIsWorking = false;
var gXMLSourceUrl = '';
var gHTTP = PLSGetHTTPObject();
var gTimer = null;
var gTrackTimer = null;
var gTrackSecondsLeft = -1;

function UpdatePlaylistData(fFirst, station, vip) 
{
	if (fFirst)
		SetSourceURL(station, vip);

	if (!gHTTP)
		window.location.href = GetSourceURL();
	else if (!gIsWorking) {
		gHTTP.open("GET", GetSourceURL(), true);
		gHTTP.onreadystatechange = PLSHandleHttpResponse;
		gIsWorking = true;
		gHTTP.send(null);
	}
}


function GetSourceURL() 
{
	var currentDate = new Date();
	var now = currentDate.getTime();
	
	return gXMLSourceUrl + "&tm=" + now;
}


function SetSourceURL(station, vip) 
{
	var fmt = 'xml'
	var extra = '';
	
	if (!gHTTP) {
		fmt = 'html';
		
		if (gMySite && gMySite != '..')
			extra += "&site=" + encodeURIComponent(gMySite);
		
		if (gNoBranding)
			extra += '&noBranding=1';
		
		if (gShowBuyButton == 'N')
			extra += '&noBuyButtons=1';
			
		if (gUserCSS)
			extra += "&css=" + encodeURIComponent(gUserCSS);

		if (gDisplayType)
			extra += "&displayType=" + encodeURIComponent(gDisplayType);
	}
	
	var bucket = station;
	
	if (vip == 1 && station.indexOf("afl:") == -1)
		bucket = "afl:" + station;
		
	gXMLSourceUrl = "http://" + gServer + "/pls/front?handler=playlist&cmd=view&viewType=" + fmt + "&handle=" + encodeURIComponent(bucket);
	gXMLSourceUrl += "&maxEntries=" + Math.abs(gOrigRows) + extra;
	
	return gXMLSourceUrl;
}


function GetElementText(element, tag) 
{
	var result = element.getElementsByTagName(tag)[0];

	try {    
		if (!result || !result.childNodes || result.childNodes.length == 0)
			return '';
			
		if (result.childNodes.length > 1)
			return result.childNodes[1].nodeValue;

		return result.firstChild.nodeValue;    		
	}
	catch(e) {
		return '';
	}
}


function FormatTrackTime(seconds)
{
	var s = '';
	if (isNaN(seconds))
		seconds = 0;
		
	if (!gTimeFmt || gTimeFmt.indexOf('mm:ss') != -1) {
		s = '0';
		if (seconds >= 60)
			s = parseInt(seconds/60);

		seconds = seconds % 60;
		s += (seconds > 9) ? ":" : ":0";
	}

	s += seconds;
	return s;
}


function UpdateTrackTime()
{
	var d = (document.all) ? document.all['current_track_time'] : document.getElementById('current_track_time'); 

	if (d && gTrackSecondsLeft >= 0)
		d.innerHTML = '[' + FormatTrackTime(gTrackSecondsLeft) + ']';
	
	gTrackSecondsLeft--;
		
	gTrackTimer = window.setTimeout("UpdateTrackTime()", 1000);                
}


function PLSHandleHttpResponse() 
{
	if (gHTTP.readyState == 4) {
		if (gHTTP.status == 200) {
			var xmlDocument = gHTTP.responseXML; 
			
			gSecondsLeft = parseInt(GetElementText(xmlDocument, 'Refresh'));
			gTrackSecondsLeft = -1;
			
			var entries = xmlDocument.getElementsByTagName('PlaylistEntry');
			var i;

			for (i = 0; i < entries.length; i++) {
				var entry = entries[i];
				var target = eval("playlist." + gLabels[i]);
				
				target.visualURL = GetElementText(entry, 'visualURL');
					
				var tt = GetElementText(entry, 'trackType')

				if (!tt || tt == "user") {
					tt = "user";
					target.title	= GetElementText(entry, 'Title');
					target.artist	= GetElementText(entry, 'Artist');
					target.album	= GetElementText(entry, 'Album');
					target.url		= GetElementText(entry, 'ECommerceURL');

					var file = GetElementText(entry, 'FileName');
					if (file) {
						file = file.replace(/\.mp3/, '');
						file = file.replace(/_u([0-9a-e]{2,4})/ig, "&#x$1;")
						file = file.replace(/[_]/g, ' ');
					}
						
					target.filename	= file;
					
					if (i == 0)	{ // first user file sets countdown clock
						if (gSecondsLeft == 10 && target.artist != 'ID/PSA') {
							if (gSecondsDelay < 10)
								gSecondsDelay++;
							gTrackSecondsLeft = 0;
						}
						else
							gTrackSecondsLeft = gSecondsLeft;
					}
				}
				else {
					target.title	= GetElementText(entry, 'desc');
					target.artist	= '';
					target.album	= '';
					target.url		= GetElementText(entry, 'clickThruURL');
					target.filename	= '';
				}
									
				target.trackType = tt;
		
				var seconds = parseInt(GetElementText(entry, 'Seconds'));
				target.time = FormatTrackTime(seconds);
				
				if (i == 0 && gCallback) {
					try {
						if (typeof HandlePLSEvent == 'function')
							HandlePLSEvent('update', gMySite, target.trackType, target.artist, target.title, target.album, target.filename, target.url, seconds);
					}
					catch(e) {
					}
				}
			}
			
			SwitchPlaylist();
			CheckAds();
		}
		else {
			gSecondsLeft = 20;
			gTrackSecondsLeft = -1;
		}

		gIsWorking = false;
		ResetTimer();
	}
}


function PLSGetHTTPObject()
{
  var xmlhttp;
  
  /*@cc_on
  
	@if (@_jscript_version >= 5)
		try {
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (e) {
			try {
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			} 
			catch (E) {
				xmlhttp = false;
			}
		}
	@else
		xmlhttp = false;
		
  @end @*/
  
	if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
		try {
			xmlhttp = new XMLHttpRequest();
			xmlhttp.overrideMimeType("text/xml"); 
		} 
		catch (e) {
			xmlhttp = false;
		}
	}
	return xmlhttp;
}


//
// -------------- Regular PLS helper functions --------------------
//
function ParseParam(param, val)
{
	var value = val;
	var start = 0;
	
	while (1) {	
		var i = window.location.href.indexOf(param + '=', start);
		start = i + param.length + 1;

		if (i != -1) {
			if (i > 0) {
				var c = window.location.href.substring(i - 1, i);
				if (c != '?' && c != '&')
					continue;
			}

			value = window.location.href.substring(start);
			i = value.indexOf('&');

			if (i == -1)
				i = value.indexOf('#');

			if (i != -1)
				value = value.substring(0, i);
			
			value = decodeURIComponent(value);
		}
		break;
	}
	
	return value;
}


function CheckAds() 
{
	var newAd;

    if (gCheckAds) {
		try {
			if (top.DoPreRoll == false) {
				if (playlist.one.visualURL != "") {
					newAd = new top.LiveAd(playlist.one.visualURL, top.streamGenre);

					if (!top.gAdData.IsRunning() || !top.gAdData.IsSameAd(newAd))
						RunAd(newAd);
				}
				else if (playlist.two.visualURL != "") {
					newAd = new top.LiveAd(playlist.two.visualURL, top.streamGenre);

					if (!top.gAdData.IsRunning() || !top.gAdData.IsSameAd(newAd))
						RunAd(newAd);
					else
						top.gAdData.DoneRunning();
				}
				else if (top.gAdData.IsRunning())
					top.gAdData.DoneRunning();
			}
		}
		catch(e) {
		}
		
        top.DoPreRoll = false;
    }

    return true;
}


function RunAd(ad)
{		
	if (gCheckAds && top.DoPreRoll == false) {
		top.gAdData = ad;
		top.gAdData.RunAllAds();
	}
}


function StartAjaxFeed() 
{
	UpdatePlaylistData(1, gStationName, gVip);

	if (gTimeFmt && gTimeFmt.indexOf('-') != -1)
		UpdateTrackTime();
		
	return true;
}


function HandleOnLoad() 
{
	if (gStationName) // work around Firefox bug
		gTimer = window.setTimeout("StartAjaxFeed()", 0);                
		
	return true;
}


function HandleOnUnload() 
{
	if (gTimer)
		window.clearTimeout(gTimer);

	if (gTrackTimer)
		window.clearTimeout(gTrackTimer);
	
	return true;
}	


function ResetTimer()
{
	gTimer = window.setTimeout("UpdatePlaylistData(0, '', '')", 1000*(gSecondsLeft + gSecondsDelay));                
}


function DrawPLSHeader()
{
	if (gNoBranding)
		return;
	
	var station = gStationName;
	if (station.indexOf("afl:") != -1)
		station = station.substring(4);
	
	var link = "http://" + gServer + "/stations/" + station + "?play";
			
	var s = '';
	s += "<div id='branding_area' style='position:relative;top:0px;left=0px'>";
	s += '<table width="100%" border="0" cellspacing="0" cellpadding="0" class="playlist">';
	s += '<tr><td align="left" valign="middle" class="playlisthdr">';
	s += '<a href="' + link + '" target=_blank><img src="' + gImageDir + 'playlist-branding.gif" width=422 height=30 border=0></a></td></tr>';
	s += '</table></div>';
	
	document.write(s);
}


function SetUpPlaylist()
{
	if (gCheckAds && top.DoPreRoll && top.gAdData.PlaylistAd) {
		if (top.gAdData.PlaylistAdLength) {
			gSecondsLeft = top.gAdData.PlaylistAdLength;
			gTrackSecondsLeft = -1;
			top.gAdData.PlaylistAdLength = 0;
		}
		
		top.gAdData.PlaylistAd = 0;
		
		return '';
	}
	else {
		var s = '<table width="100%" border="0" cellspacing="0" cellpadding="2" class="playlist">';
		s += DrawPlaylist(playlist, gRows, gShowBuyButton, gShowWishButton, gImageDir, 1, gImageRows);
		s += '</table>';
	
		return s;
	}
}


function DrawPLSAd()
{
	if (gCheckAds && top.DoPreRoll && top.gAdData.PlaylistAd) {
		document.write('<table width="100%" border="0" cellspacing="0" cellpadding="2" class="playlist"><tr><td class="playlist">');

		DrawPrerollAd(top.gAdData.PlaylistAd)

		document.write("</td></tr></table>");
	}
}


function GetPlaylistMode()
{
	if (gMode == 99)
		return 99;
		
	if (gImageRows <= 0)
		return 0;
	else if (gImageRows < Math.abs(gOrigRows))
		return 1;
	else
		return 2;
}


function SetMode(newMode)
{
	if (newMode == 99)
		newMode = 0;
		
	var r = Math.abs(gOrigRows);
	
	if (newMode == 1 || (newMode == -1 && gImageRows == 0)) {
		var sign = gOrigRows/r;
		gImageRows = 1; //Math.max(1, gOrigImageRows);
		gRows = sign * Math.max(1, r - 2*gImageRows);
	}
	else if (newMode >= 2 || (newMode == -1 && 0 < gImageRows && gImageRows < r)) {
		gImageRows = r;
		gRows = gOrigRows;
	}
	else {
		gImageRows = 0;
		gRows = gOrigRows;
	}
}


function SetPlaylistMode(newMode)
{
	SetMode(newMode);
	SwitchPlaylist();
}


function SwitchPlaylist() 
{ 
	var d = (document.all) ? document.all['pls_data'] : document.getElementById('pls_data'); 

	if (d) {
		var s = SetUpPlaylist();
		
		if (s) {
			d.innerHTML = s;

			if (gRows < 0)
				d.scrollTop = 100000;	// scroll to bottom
		}
	}
}


function GetCoverArt(visualURL, trackType, album)
{
	var coverArt = 'http://' + gServer + '/images/dot.gif';

	var tt = (trackType != 'user') ? trackType : 'user';

	if (tt == 'user') {
		if (album == 'NONE' || album == 'ID/PSA')
			tt = 'none';
		else if (album == 'single')
			tt = 'single';
	}
	
	if (tt == 'single' || tt == 'user' || tt == 'ad')
		coverArt = 'http://' + gServer + '/images/noimage-' + tt + '_65x65.png';
	
	if (visualURL != "") {
		var args = visualURL.split('|');

		if (args.length > 0) {
			for (var i = 0; i < args.length; i++) {
				var pair = args[i].split('=');

				if (pair[0] == 'img') {
					if (pair[1]) {
						var candidate = pair[1];
						var hasImage = (candidate.indexOf('noimage') < 0);

						if (hasImage)						
							coverArt =  decodeURIComponent(candidate);
						else if (tt == 'user')
							coverArt = 'http://' + gServer + '/images/missingimage-' + tt + '_65x65.png';
					}
					break;
				}
			}
		}
	}
	
	return coverArt;
}


function PLSTrim(s, html)
{
	s = s.replace(/^[\s]+|[\s]+$/, "");
	
	if (html > 0) {
		s = s.replace(/</g, '&lt;');

		if (s.indexOf('&lt;') != -1) {
			if (s.indexOf('&lt;a href') != -1) {
				s = s.replace(/&lt;a href/g, '<a href'); 
				s = s.replace(/&lt;\/a>/g, '</a>');
			}
			
			if (s.search(/&lt;[\/]?[biu]>/) != -1)
				s = s.replace(/&lt;([\/]?[biu][\/]?)>/g, '<$1>'); 
			
			s = s.replace(/&lt;javascript:\/\/>/g, '');
			
			if (s.indexOf('&lt;font') != -1) {
				s = s.replace(/&lt;font/g, '<font'); 
				s = s.replace(/&lt;\/font>/g, '</font>');
			}
			
			if (s.indexOf('&lt;span class') != -1) {
				s = s.replace(/&lt;span class/g, '<span class'); 
				s = s.replace(/&lt;\/span>/g, '</span>');
			}
		}
	}
	
	return s;
}


function TrimPlaylistItem(item)
{
	item.artist = PLSTrim(item.artist, 1);
	item.title  = PLSTrim(item.title, 1);
	item.album  = PLSTrim(item.album, 1);
	item.time   = PLSTrim(item.time, 0);
	item.url    = PLSTrim(item.url, 0);
}


function GetPlaylistItem(playlistItem, cls, na_msg, which, showBuyButton, imageMode)
{
	TrimPlaylistItem(playlistItem);

	var hasTime		= (playlistItem.time   != "" && playlistItem.time != "0" && playlistItem.time != "0:0" && playlistItem.time != "0:00" && playlistItem.filename != "admin cgi");
	var hasURL		= (playlistItem.url    != "" && playlistItem.url    != "NONE");
	var hasTitle	= (playlistItem.title  != "" && playlistItem.title  != "NONE");
	var hasArtist	= (playlistItem.artist != "" && playlistItem.artist != "NONE");
	var hasAlbum	= (playlistItem.album  != "" && playlistItem.album  != "NONE");

	var rc			= 0;
	var coverArt	= GetCoverArt(playlistItem.visualURL, playlistItem.trackType, playlistItem.album);
	var url			= playlistItem.url;
	var trackname 	= "";
	var link		= "";
	
	var sep0 = (imageMode ? gNowSep0 : (which == 1) ? gNowSep0 : gSep0);
	var sep1 = (imageMode ? '<br/>'  : (which == 1) ? gNowSep1 : gSep1);
	var sep2 = (imageMode ? gNowSep2 : (which == 1) ? gNowSep2 : gSep2);
	var sep3 = (imageMode ? '<br/>'  : (which == 1) ? gNowSep3 : gSep3);
	
	if (playlistItem.artist == "ID/PSA" && playlistItem.album == "ID/PSA") {
		hasArtist = 0;
		hasAlbum = 0;

		if (playlistItem.title.indexOf('** Next Show **') != -1)
			hasTime = 0;
	}

	if (playlistItem.trackType != "user") {
		trackname += "<span class='" + playlistItem.trackType  + "'>";
		trackname += "[" + playlistItem.trackType + "] ";

		if (hasURL) {
			url += ((url.indexOf('?') == -1) ? '?' : '&') + CommonArgs('AIS', '');
			link = '<a class="embeddedlink" href="javascript://" onclick="return FullWindow(\'' + url + '\')">';
			trackname += link;
		}

		if (hasTitle)
			trackname += "<span class='title'>" + playlistItem.title + "</span>";

		if (hasURL)
			trackname += '</a>';
			
		trackname += '</span>';
	} 
	else {
		if (playlistItem.filename != "" || hasTitle || hasArtist || hasAlbum) {
			if (hasTitle || hasArtist || hasAlbum) {
				if (hasArtist)
					trackname += "<span class='artist'>" + sep0 + playlistItem.artist + "</span>";

				if (hasTitle) {
					if (hasArtist)
						trackname += sep1;
		
					var title = playlistItem.title.replace(/\<a /ig, "<a class='embeddedlink' ");

					trackname += "<span class='title'>" + title + "</span>";
				} 
				else if (hasArtist || hasAlbum) {
					if (hasArtist)
						trackname += sep1;

					trackname += "<span class='artist'> Unknown </span>";
				}
			}
			else
				trackname += "<span class='title'>" + playlistItem.filename + "</span>";
			
			trackname += sep2 + "<span class='time'" + ((which == 1) ? " id='current_track_time'" : "") + ">";
					
			if (hasTime)
				trackname += "[" + playlistItem.time + "]";

			trackname += "</span>";

			if (hasAlbum)
				trackname += sep3 + "<span class='album'>" + playlistItem.album + "</span>";

			if (showBuyButton) {
				link = '<a href="javascript://" onclick="return BuyIt(\'buy\', ' + which + ')" class="' + cls + '">';
				trackname = link + trackname + '</a>';
			}
		} 
		else {
			rc		  = -1;
			link	  = '';
			coverArt  = 'http://' + gServer + '/images/dot.gif';
			trackname = na_msg;
		}
	}

	return new Array(rc, trackname, coverArt, link);
}


function DrawPlaylistItem(which, playlistItem, showButtons, imageDir, fQuiet, imageMode)
{
	var showBuyButton  = showButtons;
	var showWishButton = showButtons;

	if (showButtons.indexOf('Z') != -1) { // backwards compatible
		showBuyButton  = (showButtons.indexOf('B') != -1);
		showWishButton = (showButtons.indexOf('W') != -1);
	}
	
	if ((playlistItem.artist == "ID/PSA" && playlistItem.album == "ID/PSA") ||
		playlistItem.title.indexOf('External source') == 0) { // Studio365-Live v2.3 workaround
		showBuyButton  = false;
		showWishButton = false;
	}

	var fAnchor		= false;
	var cls			= "doneplaying";
	var na_msg		= "";
	var buy_img		= "buybutton-dim.gif";
	var up_img		= "thumbsup-mini-dim.gif";
	var down_img	= "thumbsdown-mini-dim.gif";
	var wish_img	= "wishlist-add-mini-dim.gif";

	if (which == 1) {
		cls			= "nowplaying";
		na_msg		= "Playlist not available";
		buy_img		= "buybutton.gif";
		up_img		= "thumbsup-mini.gif";
		down_img	= "thumbsdown-mini.gif";
		wish_img	= "wishlist-add-mini.gif";
	}

	var args = GetPlaylistItem(playlistItem, cls, na_msg, which, showBuyButton, imageMode);
	var rc			= args[0];
	var trackname	= args[1];
	var cover		= args[2];
	var link		= args[3];
	var endlink		= (link) ? '</a>' : '';

	if (rc < 0) {
		if (which > 1)
			return '';
			
		link			= '';
		showBuyButton	= false;
		showWishButton	= false;
	}
	
	if (playlistItem.trackType == "user")
		fAnchor = (trackname != na_msg);
	
	cls += ' ' + (imageMode ? "imageMode " : "textMode");
	cls += ' ' + ((which % 2) ? 'odd' : 'even');

	var s = '<tr id="trackRow_' + which + '" class="' + cls + '">';
	var buyWidth = imageMode ? 80 : (fAnchor && showBuyButton) ? 33 : 1;
	
	s += '<td class="' + cls + '" valign="middle" width="' + buyWidth + '">';
	s += '<div id="buy_' + which + '" class="' + cls + '">';
	
	var buyWhat = '&quot;' + playlistItem.album + '&quot;';
	var altText = (fAnchor && showBuyButton) ? 'alt="Click to buy ' + buyWhat + '" title="Click to buy ' + buyWhat + '"' : '';

	if (imageMode)
		s += link + '<img src="' + cover + '" width=65 height=65 hspace=2 vspace=5 border=0 ' + altText + '>' + endlink;
	else if (buyWidth == 33)
		s += link + '<img ' + altText + ' border="0" width="28" height="13" src="' + imageDir + buy_img + '">' + endlink;
	else
		s += '<img src="http://' + gServer + '/images/dot.gif" height="13" width="1">';

	s += "</div></td>";
	s += '<td valign="middle" class="' + cls + '">';	

	if (which == 1)
		s += "<div id='nowplaying_track' class='nowplaying'>";
	else		
		s += "<div id='track_" + which + "' class='" + cls + "'>";

	if (trackname.length > 0)
		s += trackname;
	else
		s += '<img src="http://' + gServer + '/images/dot.gif" height="1" width="1">';

	s += '</div>'
	s += '</td>';

	var btnWidth = (fAnchor && showWishButton) ? 45 : 1;
	
	if (imageMode && fAnchor && showBuyButton)
		btnWidth += 32
	
	s += '<td class="' + cls + '" align="right" nowrap width="' + btnWidth + '">';
	s += "<div id='buttons_" + which + "' class='" + cls + "'>";
	
	if (imageMode && fAnchor && showBuyButton) {
		s += link + '<img alt="Click to buy ' + buyWhat + '" title="Click to buy ' + buyWhat + '" border="0" width="28" height="13" src="' + imageDir + buy_img + '">' + endlink;
		s += '<img src="http://' + gServer + '/images/dot.gif" height="1" width="4">';
	}
	
	if (btnWidth >= 45) {
		s += '<a href="javascript://" onclick="return WishlistIt(' + which + ')"><img alt="Add track to Wishlist" title="Add track to Wishlist" border="0" width="14" height="14" src="' + imageDir + wish_img + '"></a>';
		s += '<a href="javascript://" onclick="return RateIt(1, ' + which + ')"><img alt="I like it, thumbs up!" title="I like it, thumbs up!" border="0" hspace="3" width="12" height="15" src="' + imageDir + up_img + '"></a>';
		s += '<a href="javascript://" onclick="return RateIt(0, ' + which + ')"><img alt="I dislike it, thumbs down!" title="I dislike it, thumbs down!" border="0" width="12" height="15" src="' + imageDir + down_img + '"></a>';
	}
	else
		s += '<img src="http://' + gServer + '/images/dot.gif" height="15" width="1">';

	s += '</div></td>';
	s += '</tr>';

	if (!fQuiet)
		document.write(s);
	
	return s;
}


function WishlistIt(which)
{
	if (parent && !parent.loggedIn) {
		alert("You must be logged in to use the Wishlist feature!");

		if (top.RotateAd)
			top.RotateAd(top.displayType);
	}
	else {
		BuyIt("wishlist", which);
		alert("Thank you for wishlisting this track!");
	}
	
	return false;
}


function RateIt(up, which)
{
	if (parent && !parent.loggedIn) {
		alert("You must be logged in to rate tracks!");
		
		if (top.RotateAd)
			top.RotateAd(top.displayType);
	}
	else {
		BuyIt(up ? "thumbs_up" : "thumbs_down", which);
		alert("Thank you for rating this track.  " + (up ? "Glad you like it!" : "Sorry it's not to your taste."));
	}
	
	return false;
}


function DrawPlaylist(playlist, rows, showBuy, showWish, imageDirectory, fQuiet, iRows)
{
	var showButtons	= 'Z'; 
	
	if (showBuy != "N") {
		showButtons += "B";
		if ((gMySite == '..' || gMySite == 'live365') && !gVip)
			showButtons += "S";
	}
	
	if (showWish != "N")
		showButtons += "W";
	
	var imageDir = (imageDirectory) ? imageDirectory  : gImageDir;
	
	var i;
	var s = '';

	if (rows > 0) {
		for (i = 0; i < rows; i++)
			s += DrawPlaylistItem(i+1, eval("playlist." + gLabels[i]), showButtons, imageDir, fQuiet, i < iRows);
	}
	else {
		for (i = -rows; i > 0; i--)
			s += DrawPlaylistItem(i, eval("playlist." + gLabels[i-1]), showButtons, imageDir, fQuiet, i <= iRows);
	}
		
	return s;
}


function BuyIt(action, which)
{
	var searchTerm;
	var playlistItem;
	var url = "http://" + gServer + "/cgi-bin/";
	var dest = "sink";
	
	if (action == "buy") {
		url = "http://" + gStoreSearchServer + "/cgi-bin/storesearch.cgi?action=get_meta&format=html&";
		dest = "jump";
	}
	else if (action == "wishlist")
		url += "wishlist_add.cgi?";
	else
		url += "applause.cgi?";

	url += "station_id=";
	
	var hasLocalParent = 0;
	
	try {
		if (parent && parent.css)
			hasLocalParent = 1;
	}
	catch(e) {
		hasLocalParent = 0;
	}
	
	if (hasLocalParent) {
		url += (parent.stationID) ? parent.stationID : '0';

		if (parent.streamGenre)
			url += "&genre=" + encodeURIComponent(parent.streamGenre);

		if (parent.memberName)
			url += "&station=" + encodeURIComponent(parent.memberName);

		if (parent.site)
			url += "&site=" + parent.site;
	}
	else {
		if (typeof(stationID) != "undefined" && typeof(memberName) != "undefined")
			url += stationID + "&station=" + encodeURIComponent(memberName);
		else
			url += "0&station=0";
	}

	var currentDate = new Date();
    url += "&tm=" + currentDate.getTime();
    
	if (action == "thumbs_up")
		url += "&event_type=UP";
	else if (action == "thumbs_down")
		url += "&event_type=DOWN";

	var name = GetListenerName();

	if (name != '')
		url += "&member=" + name;

	if (which == 100)
		playlistItem = playlist.afl;
	else
		playlistItem = eval("playlist." + gLabels[which-1]);
		
	TrimPlaylistItem(playlistItem);

	if (playlistItem.artist != "")
		url += "&artist=" + encodeURIComponent(playlistItem.artist);
	
	if (playlistItem.album != "")
		url += "&album=" + encodeURIComponent(playlistItem.album);
	
	if (playlistItem.title != "")
		url += "&track=" + encodeURIComponent(playlistItem.title);

	if (playlistItem.filename != "")
		url += "&file=" + encodeURIComponent(playlistItem.filename);

	if (playlistItem.visualURL != "") {
		var args = playlistItem.visualURL.split('|');
		if (args.length > 0) {
			var escimg = '';
			var foundID = 0;
			for (var i = 0; i < args.length; i++) {
				var pair = args[i].split('=');
				if (pair[0] == 'id') {
					if (parseInt(pair[1]) > 0) {
						url += "&user_track_id=" + pair[1];
						foundID = 1
						break;
					}
				}
				else if (pair[0] == 'img' && pair[1])
					escimg = pair[1];
			}
			
			if (!foundID && escimg)
				url += "&cover=" + escimg;
		}
	}
	
	if (playlistItem.time != "") {
		var arr = playlistItem.time.split(":");
		var secs = 0;
		for (var i = 0; i < arr.length; i++) {
			secs *= 60;
			secs += parseInt(arr[i], 10);
		}
		url += "&time=" + secs;
	}

	if (playlistItem.url != "") {
		url += "&ecomm_url=" + encodeURIComponent(playlistItem.url);
		
		if (dest == 'jump' && playlistItem.url.indexOf('amazon.') == -1 && playlistItem.url.indexOf(gServer) == -1)
			dest = 'full';
	}
	else if (gECommURL) {
		url += "&url=" + encodeURIComponent(gECommURL);

		if (action == "buy") {
			url = url.replace("action=get_meta&format=html", "action=buy_cd&format=web");
			dest = "full";
		}
	}

	if (dest == "sink") {
		if (gHTTP) {
			gHTTP.open("GET", url, true);
			gHTTP.send(null);
		}
		else
			gSink.src = url;
	}
	else if (gWMP10)
		top.location.href = url;
	else if (dest == "tiny")
		OpenURL(url, 1, 1, 0);
	else if (dest == "jump")
		OpenURL(url, 300, 320, 0);
	else
		OpenURL(url, 720, 500, 0);

	if (gCheckAds && top.RotateAd)
		top.RotateAd(gDisplayType);
	
	return false;
}

// -->
