All pastes #914614 Raw Edit

Anonymous

public text v1 · immutable
#914614 ·published 2008-02-23 01:02 UTC
rendered paste body
<!-- 
// (c) 2005-8 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 gShowBuyButton	= 'Y';
var gShowWishButton	= 'Y';
var gECommURL		= '';
var gUserCSS		= '';
var gDisplayType	= 'LIVE365';
var gStationName	= '';
var gVip			= 0;
var gSecondsLeft	= 200;
var gSecondsDelay	= 0;
var gRows			= -3;
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;';	// 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));
	gRows			= parseInt(ParseParam("rows", gRows)); // positive or negative indicates direction
	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 (gRows < -10)
		gRows = -10;
	else if (gRows > 10)
		gRows = 10;
	else if (gRows == 0)
		gRows = -3;
	
	gImageDir = 'http://' + gServer + "/scp/" + gMySite + "/" + iDir + "/";
}
		

//
// -------------- 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 = GetHTTPObject();
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 = HandleHttpResponse;
		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(gRows) + 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 HandleHttpResponse() 
{
	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(/[_]/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;
		
				target.time = FormatTrackTime(parseInt(GetElementText(entry, 'Seconds')))
			}
			
			SwitchPlaylist();
			CheckAds();
		}
		else {
			gSecondsLeft = 20;
			gTrackSecondsLeft = -1;
		}

		gIsWorking = false;
		ResetTimer();
	}
}


function GetHTTPObject()
{
  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) {
        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();
        }

        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);
		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 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)
				ScrollToBottom(d);
		}
	}
}


function ScrollToBottom(obj)
{
	window.scroll(0, 10000);
	
	var curTop = (document.all) ? document.body.scrollTop : window.pageYOffset;

	var img = (document.all) ? document.all['branding_area'] : document.getElementById('branding_area'); 
	if (img)
		img.style.top = curTop;
}


function GetPlaylistItem(playlistItem, cls, na_msg, which, showBuyButton)
{
	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 url			= playlistItem.url;
	var trackname 	= "";

	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', '');
			trackname += '<a class="embeddedlink" href="javascript://" onclick="return FullWindow(\'' + url + '\')">';
		}

		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'>" + ((which == 1) ? gNowSep0 : gSep0) + playlistItem.artist + "</span>";

				if (hasTitle) {
					if (hasArtist)
						trackname += ((which == 1) ? gNowSep1 : gSep1);
		
					var title = playlistItem.title.replace(/\<a /ig, "<a class='embeddedlink' ");

					trackname += "<span class='title'>" + title + "</span>";
				} 
				else if (hasArtist || hasAlbum) {
					if (hasArtist)
						trackname += ((which == 1) ? gNowSep1 : gSep1);

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

			trackname += "</span>";

			if (hasAlbum)
				trackname += ((which == 1) ? gNowSep3 : gSep3) + "<span class='album'>" + playlistItem.album + "</span>";

			if (showBuyButton && !hasURL)
				trackname = '<a href="javascript://" onclick="return BuyIt(\'buy\', ' + which + ')" class="' + cls + '">' + trackname + '</a>';
		} 
		else
			trackname = na_msg;
	}

	return trackname;
}


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

	if (showButtons.indexOf('Z') != -1) { // backwards compatible
		showBuyButton  = (showButtons.indexOf('B') != -1);
		showWishButton = (showButtons.indexOf('W') != -1);
		showSponsorBuyButton  = (showButtons.indexOf('S') != -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;
		showSponsorBuyButton = false;
	}
	showSponsorBuyButton = false;

	var fAnchor		= false;
	var cls			= "doneplaying";
	var na_msg		= "";
	var buy_img		= (showSponsorBuyButton) ? "buybutton-dim-promo.gif" : "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		= (showSponsorBuyButton) ? "buybutton-promo.gif" : "buybutton.gif";
		up_img		= "thumbsup-mini.gif";
		down_img	= "thumbsdown-mini.gif";
		wish_img	= "wishlist-add-mini.gif";
	}

	var trackname = GetPlaylistItem(playlistItem, cls, na_msg, which, showBuyButton);

	if (playlistItem.trackType == "user")
		fAnchor = (trackname != na_msg);

	var s = '<TR class="' + ((which % 2) ? 'even' : 'odd') + '">';
	var w = (fAnchor && showBuyButton) ? 33 : 1;
	
	s += '<td class="' + cls + '" valign="middle" width="' + w + '">';
	s += '<div id="buy_' + which + '" class="' + cls + '">';

	if (w == 33) {
		var buy_what = '&quot;' + playlistItem.album + '&quot;';
		
		if (showSponsorBuyButton) {
			var search_term = playlistItem.artist;
			if (playlistItem.title)
				buy_what = '&quot;' + playlistItem.title + '&quot; ';
			else if (!search_term) {
				search_term = playlistItem.filename;
				buy_what = 'this track ';
			}
			
			buy_what += 'from MSN Music';
			
			var sbb = "http://www.live365.com/cgi-bin/clicks.cgi?z=player_window&ac=all&b=msn_buy_button&c=msn&url=";
			sbb += encodeURIComponent('http://oascentral.artistdirect.com/RealMedia/ads/click_lx.ads/www.live365.com/1112745096/x96/Artist/MSN_Live_Player_BuyButton/MSN_1x1.gif/1?ss=' + encodeURIComponent(search_term));
			s += '<a href="javascript://" onclick="return FullWindow(\'' + sbb + '\')">';
		}
		else
			s += '<a href="javascript://" onclick="return BuyIt(\'buy\', ' + which + ')">';

		s += '<img alt="Click to buy ' + buy_what + '" title="Click to buy ' + buy_what + '" border="0" width="28" height="13" src="' + imageDir + buy_img + '"></a>';
	}
	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></td>';

	w = (fAnchor && showWishButton) ? 45 : 1;
	s += '<td class="' + cls + '" align="right" nowrap width="' + w + '">';
	s += "<div id='buttons_" + which + "' class='" + cls + "'>";
	
	if (w == 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 DrawPlaylist(playlist, rows, showBuy, showWish, imageDirectory, fQuiet)
{
	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);
	}
	else {
		for (i = -rows; i > 0; i--)
			s += DrawPlaylistItem(i, eval("playlist." + gLabels[i-1]), showButtons, imageDir, fQuiet);
	}
	
	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.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 += "&url=" + encodeURIComponent(playlistItem.url);
	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);
	else if (dest == "jump")
		OpenURL(url, 300, 320, 1);
	else
		OpenURL(url, 720, 500);

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

// -->