<!-- 
// (c) 1999-2009 Live365, Inc.  All rights reserved.

var gServer = "www.live365.com";
var gStoreSearchServer = "directory.live365.com";
var gTesting = 0;

//gServer = "devweb01.nanocosm.com";
//gStoreSearchServer = gServer;
//gTesting = 1;

if (typeof(GetCookieEx) != "function")
	document.write('<scr'+'ipt language="JavaScript" src="http://' + gServer + '/scripts/cookiemonster.js"></scr' + 'ipt>');	

var gTimeoutID = -1; // for testing
var gEarlyAlert = 0; // set to 2 or 3 minutes for release, causes the challenge to popup early before NC stops things
var gWMP10 = -1;
var gSink = new Image;

var gWarningLength			= 5*60;
var gWarningDingInterval	= 60;
var gParkingTimer			= null;
var gParkingMeterBucket 	= 'na';

var gMaxSessionLength		= 8*3600;	// 'na', 'c8', VIP
var gMaxRegularSession		= 2*3600;	// logged-in, non-VIP
var gMicroNag				= 30*60;	// shortest nag
var gTinyNag				= 45*60;	// short nag
var gShortNag				= 60*60;	// normal nag
var gLongNag				= 75*60;	// slow nag
var gLongestNag				= 120*60;	// slowest nag
var gMaxVC					= 25;		// max VC allowed

if (gTesting) {	// TESTING VALUES
	gMaxSessionLength		= 8*15;	// 'na', 'c8', VIP
	gMaxRegularSession		= 4*15;	// logged-in, non-VIP
	gMicroNag				= 15;	// shortest nag
	gTinyNag				= 20;	// short nag
	gShortNag				= 30;	// quick nag
	gLongNag				= 40;	// slow nag
	gLongestNag				= 50;	// slowest nag
	gWarningLength			= 10;
	gWarningDingInterval	= 10;
}


function IsWMP()
{
	if (gWMP10 == -1) { // cookies are undependable in WMP11
		try {
			gWMP10 = (GetCookie("POC") == 12 || (typeof(top.site) != 'undefined' && top.site && top.site == 'wmp'));
		}
		catch(e) {		// other sites throw an error on top.site
			gWMP10 = 0;
		}
	}
	
	return gWMP10;
}


function HasEmbeddedPlayer(p)
{
	if (HasEmbeddedPlayer.arguments.length < 1)
		p = GetPlayer();
		
	return (p == "FLASH" || p == "WMP" || p == "G2" || p == "365" || p == "365_VIP");
}


function ActivateWarning(fOn, player, playerframe) 
{
	if (!playerframe && parent.frames)
		playerframe = parent.frames.Live365PlayerVolume;

	if (playerframe && playerframe.PlayerActivateWarning)
		playerframe.PlayerActivateWarning(fOn, player);
}


function KillWindow() 
{
	if (gDemoWindow != null) {
		if (gDemoWindow.closed == false) {
			gDemoWindow.close();
			gDemoWindow = null;
		}
	}
}


//
// LaunchStream() -  streamUrl - can be passed in directly or retrieved from streamInfo
//
function LaunchStream(streamUrl, arbitron, player, ncSessionKey, playerframe, bWarning, stationID, playlist)
{
	if (LaunchStream.arguments.length < 4)
		ncSessionKey = "";

	if (LaunchStream.arguments.length < 6)
		bWarning = true;

	if (LaunchStream.arguments.length < 7)
		stationID = '';

	if (LaunchStream.arguments.length < 8)
		playlist = '';

	var stream = "";

	if (frames && streamUrl && streamUrl != ":") {
		stream = GetStreamURL(streamUrl, player, ncSessionKey, stationID, playlist);

		if (stream != "") {
			if (player == 'WMP_APP' || player == 'G2_APP') {
				var vHost = top.GetHostApp();
				if (vHost.bPreplay)
					return;

				vHost.LaunchStreamByID(parent.streamID, parent.site);
			}
			else {
				if (!playerframe)
					playerframe = (player == "MP3") ? parent.frames.Live365PlayerStreamState : parent.frames.Live365PlayerVolume;
				
				if (player == "MP3") 
					playerframe.location.replace(stream);
				else
					playerframe.Play(stream);

				if (bWarning)
					ActivateWarning(true, player);

				SetStreamTimeout();
			}
		}
	}
}


function SetStreamTimeout()
{
	var timeout = parent.gStreamTimeout;

    if (gTimeoutID >= 0)
        window.clearTimeout(gTimeoutID);

    if (timeout > 0)
        gTimeoutID = window.setTimeout('OpenTimeoutWindow();', timeout-gEarlyAlert);
}


function OpenTimeoutWindow()
{
    var url = 'http://' + gServer + '/mini/timeout_challenge.html';
    window.open(url,'','width=300,height=300');
}


function LaunchAltStream(addr, args, player, plrLevel, altPlaylist, stationName, site, bPlay) 
{
	if (top.streamType == 'ODA')
		top.frames.Live365PlayerPlaylist.CloseSession();
	
	if (player == 'WMP_APP' || player == 'G2_APP') {
		if (parent.frames.Live365PlayerVolume)
			ActivateWarning(false, player);
			
		var vHost = top.GetHostApp();
		vHost.LaunchStreamByName(stationName, site);
	}
	else if (parent.frames.Live365PlayerStreamState)
		parent.frames.Live365PlayerStreamState.location.replace('/cgi-bin/mini.cgi?templateid=altstream&site=' + site + '&membername=' + stationName+'&playlist='+altPlaylist);
}


function LaunchAltStreamByID(player, plrLevel, altPlaylist, streamid, site) 
{
	if (top.streamType == 'ODA')
		top.frames.Live365PlayerPlaylist.CloseSession();	

	if (streamid && streamid != "" ) {
		if (parent.frames.Live365PlayerStreamState)
			parent.frames.Live365PlayerStreamState.location.replace('/cgi-bin/mini.cgi?templateid=altstream&site=' + site + '&stream=' + streamid+'&playlist='+altPlaylist);
		else
			// Live365PlayerStreamState can be NULL if we are trying to launch a stream into a 
			// mini window that is done displaying an error message, in which case, there is no
			// Live365PlayerStreamState subframe (generated in index_tmpl.html)
			top.location.replace('/cgi-bin/mini.cgi?stream=' + streamid);
	}
}


function GetCookieVal(offset) 
{
	var endstr = document.cookie.indexOf(";", offset);

	if (endstr == -1)
		endstr = document.cookie.length;

	return decodeURIComponent(document.cookie.substring(offset, endstr));
}


function GetAdFramePath(site)
{
	var skin = (site == 'WMP') ? '/scp/' + site : '';
	return "http://" + gServer + skin + "/mini/";
}


function RotateAd(displayType)
{
	if (parent.frames.Live365PlayerAdOrMessage1 && (displayType == "SCP" || displayType == "LIVE365"))
		parent.frames.Live365PlayerAdOrMessage1.location.href = GetAdFramePath() + "adormessage1.html?x=" + Math.random();

	return true;
}


function RotateSponsor(displayType)
{
	if (parent.frames.Live365PlayerSponsorOrLogo && (displayType == "SCP" || displayType == "LIVE365"))
		parent.frames.Live365PlayerSponsorOrLogo.location.href = GetAdFramePath() + "sponsor.html?x=" + Math.random();

	return true;
}


var gJumpWindow = null;
var gJumpWindowName = '';

function OpenURL(url, w, h, noresize)
{
	var name = 'Live365_LinkWindow' + w + 'x' + h;
	var opts = 'width=' + w + ',height=' + h;
	var win = null;
	
	if (w < 400)
		opts += ',toolbar=no,scrollbars=no,location=no,status=no,menubar=no';
	else
		opts += ',toolbar=yes,scrollbars=yes,location=yes,status=yes,menubar=yes';
		
	if (noresize)
		opts += ',resizable=no';
	else
		opts += ',resizable=yes';

    var reuseWindow = 0;
    
    try {
		reuseWindow = (gJumpWindow != null && !gJumpWindow.closed && name == gJumpWindowName);
    }
    catch(e) {
        reuseWindow = 0;
    }

	if (reuseWindow) {
		try {
			gJumpWindow.location.replace(url);
			win = gJumpWindow;
		}
		catch(e) {
			reuseWindow = false;
		}
	} 
	
	if (!reuseWindow) {
		try {
			win = window.open(url, name, opts);

			if (win == null) {  // check for pop-up blockers
				alert('In order to view this page, please disable any pop-up blocking software you may be using.');
				throw(1);
			}
			
			gJumpWindow = win;
			gJumpWindowName = name;
		}
		catch(e) {
			gJumpWindow = null;
			gJumpWindowName = '';
		}
	}
		
	try {
		if (gJumpWindow && gJumpWindow.focus)
			gJumpWindow.focus();
	}
	catch(e) {
	}
	
	return false;
}


function CommonArgs(player, arg_string)
{
	var args = new Array();
	var connector = (arg_string) ? '&' : '';
	var v;

	try {
		if (player != "AIS") {
			if (top.token)	
				args["token"] = top.token;
			
			if (top.AuthType)	
				args["AuthType"] = top.AuthType;
		}
			
		v = GetCookie("LID");
		if (v != null)
			args["lid"] = v;

		v = GetCookie("SaneID");
		if (v != null)
			args["SaneID"] = v;

		v = GetCookie("sessionid");
		if (v != null)
			args["sessionid"] = decodeURIComponent(v);

		for (var v in args) {
			if (arg_string.indexOf(v) == -1) {
				arg_string += connector + v + "=" + encodeURIComponent(args[v]);
				connector = "&";
			}
		}

	}
	catch(e) {
	}

	return arg_string;
}


function GetListenerName()
{
	var name = '';

	if (GetCookie("sessionid") != null) {
		var sid = GetCookie("sessionid");
		sid = decodeURIComponent(sid);
		var sidInfo = sid.split(":");
		if (sidInfo.length >= 2)
			name = sidInfo[0];
	}

	return name;
}
				
				
function GetStreamURL(addr, player, ncSessionKey, stationID, playlist)
{
	var connector = "?";
	var currentDate = new Date();
	var now = currentDate.getTime() % 100;
	var escaddr = encodeURIComponent(addr);
	var url = '';

	if (GetStreamURL.arguments.length < 3 || GetStreamURL.arguments[2] == "")
		ncSessionKey = '';
		
	if (GetStreamURL.arguments.length < 4 || GetStreamURL.arguments[3] == "")
		stationID = '';

	if (GetStreamURL.arguments.length < 5 || GetStreamURL.arguments[4] == "")
		playlist = '';

    if (stationID)
		RememberItEx('box_mc', 'sta', stationID);

	var nc_args   = '';
	var play_args = '';
	
	try {
		nc_args   = "now=" + now + "&" + top.nanocaster_params;
		nc_args = CommonArgs(player, nc_args);

		play_args = "now=" + now + "&" + top.play_params;
		play_args = CommonArgs(player, play_args);
	}
	catch(e) {
		nc_args   = '';
		play_args = '';
	}

	if (player == "MP3") {
		if (playlist != "") {
			play_args = nc_args;	// ODA must use low-level NC addr
			
			if (play_args.indexOf('addr=') == -1 && addr)
				play_args += "&addr=" + escaddr;

			if (play_args.indexOf('playlist=') == -1 && playlist)
				play_args += "&playlist=" + encodeURIComponent(playlist);
		}
		url = "http://" + gServer + "/cgi-bin/play.pls?stationid=" + stationID + "&" + play_args + "&filename.pls";;
	}
	else {	
		if (nc_args.indexOf('session=') == -1 && ncSessionKey)
			nc_args += "&session=" + encodeURIComponent(ncSessionKey);

		if (player == "365" || player == "365_VIP" || player == 'FLASH') {
			var P365Img = new Image();
			P365Img.src = "http://" + gServer + "/trkr/play.cgi?player=" + player + "&addr=" + escaddr + "&" + nc_args;
			url = "http://" + addr + "/play?" + nc_args;
		}
		else {
			if (client.isVista && player == 'WMP')
				nc_args += "&pf=N";
				
			url = "http://" + gServer + "/cgi-bin/play.m3u?addr=" + escaddr + "&" + nc_args + "&file=filename.m3u";
		}
	}
	
	return url;
}


function EMailBroadcast(stationID, gSite, bFromBC)
{
	var browserName=navigator.appName; 
	var appVersion = navigator.appVersion;
	var browserVer=parseInt(navigator.appVersion);
	var platform = navigator.platform;
	var userAgent = navigator.userAgent;

	if (EMailBroadcast.arguments.length < 3)
		bFromBC = false;
	
	if (top.RotateAd)
		top.RotateAd(top.displayType);

	var to = "";
	var mailURL;
	var subject = encodeURIComponent("I think you'll like this Live365 station");		
	var body = '';
	var homeURL	= "http://" + gServer + "/stations/";

	if (stationID == "" || stationID == null) {
		alert("ERROR: missing station name");
		return;
	}
	else {
		homeURL += stationID + "?play";

		if (gSite != "..") 
			homeURL += "&site=" + gSite;			

		if (bFromBC)
			subject = encodeURIComponent("Check out my Live365 station");			
	
		body += encodeURIComponent(homeURL+"  \n\n...Click the link above (or copy it into your browser) to listen!");	

		/*
			IE 5.0 and NS/Mozilla (but not Firefox) require us to double-escape the body string to preserve the 
			"?site=" querystring embedded in the play url...
		*/

		if (platform.indexOf("Win32") != -1 && browserName=="Microsoft Internet Explorer") {
			var IEVersion=0
			if (appVersion.indexOf("MSIE")!=-1){
				var temp=appVersion.split("MSIE");
				IEVersion=parseFloat(temp[1]);
			}

			if (IEVersion <=5.0)
				body = encodeURIComponent(body);
		}
		else if (platform.indexOf("Mac")== -1 && userAgent.indexOf('Firefox') == -1) {
			body = encodeURIComponent(body);
		}

		// to, subject, and body are required fields
		mailURL = 'mailto:' + to + '?subject=' + subject + '&body=' + body;

		window.location.href = mailURL;
	}	
}


function InitializeParkingMeter()
{
	var buckets = new Array(
		'na', 
		'c8', 'v1', 'v2', 'r1', 'r2',						// 1-5 Round 1
		'c480', 'v60d0', 'v45d0', 'v75d0', 'v30d0', 'v90d0',// 6-11 Rounds 2a, 2b
		'v45d00', 'v45d25', 'v45d50',						// 12-14 Round 3 discounts
		'v75d50'											// 15 Round 4 discount
	);
	
	var bkt = GetCookieEx('box_mc', 'bkt');

	if (bkt != 6) {
		bkt = 15;
		RememberItEx('box_mc', 'bkt', bkt, 0);
	}
	
	gParkingMeterBucket = buckets[bkt];

	if (bkt > 6 && !displayPreferredAds()) {
		gMaxSessionLength = gLongestNag;
		var vc = GetCookie("VisitCount");
		if (GetListenerName())
			gMaxSessionLength = Math.max(gMaxSessionLength, gMaxRegularSession - Math.floor((vc * (gMaxRegularSession - gMaxSessionLength))/gMaxVC));
	}
	
	ResetParkingMeter();
	
	if (gTesting)
		alert("Initializing parking meter for bucket [" + bkt + "=" + gParkingMeterBucket + "] to " + gMaxSessionLength + " seconds");
		
	return gParkingMeterBucket;
}


function GetParkingTimerBucket()
{
	return gParkingMeterBucket;
}


function SetParkingTimer(callback, seconds)
{
	if (displayType.indexOf("PLR") == -1 && streamType != 'ODA' && gFrom != "realone_tmpl.smil") {
		ClearParkingTimer();
		gParkingTimer = window.setTimeout(callback, seconds*1000);
	}
}


function ClearParkingTimer()
{
	if (gParkingTimer) {
		window.clearTimeout(gParkingTimer);
		gParkingTimer = null;
	}
}


function ResetParkingMeter()
{
	SetParkingTimer('ParkingControl("show_warning")', gMaxSessionLength - gWarningLength);
}


function ParkingWarningLength()
{
	return gWarningLength;
}


function ParkingSessionLength()
{
	return gMaxSessionLength;
}


function ParkingIntervalLength()
{
	return gWarningDingInterval;
}


function ParkingControl(action)
{
	var savedType = displayType;

	try {
		var content_frame = GetDocumentObject('content_frame');
		var btn_frame = GetDocumentObject('control_buttons_frame');
		
		if (action == 'show_warning') {
			if (!displayPreferredAds())
				this.frames.Live365PlayerAdOrMessage1.location.replace('/mini/parking_ad.html');
				
			this.frames.Live365ExtraContent.location.replace("/mini/parking_warning.live");
			content_frame.rows = '262,0,0,0,*';
			SetParkingTimer('ParkingControl("stop_stream")', gWarningLength);
		}
		else if (action == 'hide_warning' || action == "resume_playing") {
			this.frames.Live365ExtraContent.location.replace("/mini/blank.html");
			
			if (top.RotateAd && typeof(top.displayType) != 'undefined')
				top.RotateAd(top.displayType)

			content_frame.rows = '0,52,94,116,*';

			displayType = 'NO_ADS';
			if (action == "resume_playing") {
				PlayAudio();
				try {
					this.frames.Live365PlayerControls.PlayStream(0);
				}
				catch(e) {
				}
			}
			else
				ResetParkingMeter();

		}
		else if (action == 'stop_stream') {
			displayType = 'NO_ADS';
			StopAudio(0);
			try {
				this.frames.Live365PlayerControls.StopStream(0);
			}
			catch(e) {
			}
		}
	}
	catch(e) {
		ClearParkingTimer();
	}
	
	displayType = savedType;
	
	return false;
}


function PlayAudio()
{
	LaunchAltStream(streamUrl, "", player, "", "", memberName, site, false);
	ResetParkingMeter();
	return false;
}


function GetPlayer()
{
	return this.player;
}


function StopAudio(force)
{
	ClearParkingTimer();

	var ding = "/cgi-bin/silent.pls";
	var p = GetPlayer();
	var doDing = (p == "MP3");

	try {
		if (doDing)
			doDing = this.frames.Live365PlayerControls.IsStillPlaying();
	}
	catch(e) {
		if (gTesting)
			alert("Caught error trying to see if player still going");
		doDing = 0;
	}

	var w = 0;
	
	if (force && client.isIE && doDing)
		w = window.open(ding, "Live365_MP3", 'width=1,height=1,toolbar=no,scrollbars=no,location=no,resizable=no,status=no,menubar=no');
	
	if (!w) {
		var v = this.frames.Live365PlayerVolume;

		if (v) {
			if (HasEmbeddedPlayer(p)) {
				if (v.bLoaded) {
					if (force == 2)
						v.Reset();
					else
						v.Stop();
				}
			}
			else if (p == "MP3") {
				if (doDing)
					this.frames.Live365PlayerStreamState.location.replace(ding);
			}
		}
	}		

	return false;
}


function FullWindow(url)
{
	var currentDate = new Date();
	var now = currentDate.getTime();
	
	url += (url.indexOf('?') == -1) ? '?' : '&';
	url += "tmx=" + now;
	var new_win = 0;
	var w;
		
	try {
		var ownDomain = (self.location.host.indexOf(parseHost(gServer)) != -1);
		new_win = 1;
		
		if (ownDomain) {
			var p = window.parent;
			if (p) {
				w = p.opener;
				new_win = (!w || w.closed || w.name == 'sidenav');
			}
		}
	}
	catch(e) {
		new_win = 0;
	}
		
	if (new_win)
		OpenURL(url, 720, 500, 0);
	else {
		try {
			w.location.href = url;
			
			try {
				if (w && w.open && w.focus)
					w.focus();
			}
			catch(e) {
			}
		}
		catch(e) { // different domain?
			OpenURL(url, 720, 500, 0);
		}
	}
		
	if (top.RotateAd && typeof(top.displayType) != 'undefined')
		top.RotateAd(top.displayType);  
		
	return false;
}


var gOnLoadTimer = null;

function IndexOnLoad() 
{
	top.frames.Live365PlayerDescription.location.href = "/mini/description.html";

	gOnLoadTimer = window.setTimeout("DoOnLoadActions()", 1000);	// workaround Firefox DOM issues and volume.html loading race conditions
}

function DoOnLoadActions() 
{
	window.clearTimeout(gOnLoadTimer);

	if (!client.isIPhone && !client.isWebOS)
		LaunchStream(streamUrl, true, player, ncSessionKey, null, true, stationID, playlist);

	var vHost = GetHostApp();
	if (vHost)
		vHost.OnLoad();
	
	gAdData.RunAllAds();
	return true;
}


function HandlePLSEvent(action, site, trackType, artist, title, album, file, url, seconds)
{
	if (action == 'update') {
		var s = 'Live365 Internet Radio Player Window ';
	    var hasTitle	= (title  != "" && title  != "NONE");
	    var hasArtist	= (artist != "" && artist != "NONE" && artist != "ID/PSA");
		
		if (hasArtist || hasTitle || file) {
			var sep = '';
			
			if (trackType != 'user') {
			    if (title) {
				    s += "[" + trackType + "] " + title;
				    sep = ' - ';
                }
			}
			else {
				if (!hasArtist && !hasTitle)
					artist = file;
					
				if (hasArtist) {
					s = artist;
					sep = ': ';
				}
				
				if (hasTitle) {
					s += sep + '"' + title + '"';
					sep = ' - ';
				}
				else if (hasArtist) {
					s += sep + 'Unknown';
					sep = ' - ';
				}
			
				if (seconds > 0) {
					s += ' [' + FormatTrackTime(seconds) + ']';
					sep = ' - ';
				}
			}
									
			s += sep + ((site == '..' || site == 'live365') ? 'Live365' : 'Radio') + ' Player Window';
		}
			
		try {
			top.document.title = s;
		}
		catch(e) {
		}
	}
}

// -->