//##============================================================================
//## INITIALIZATION
//##============================================================================
var stations = Array();
var defaultID = 19;  //Station to play if no station specified

// Subscribe to onConfigure so that we can do configuration as soon as DOM is ready
doitall.onConfigure.subscribe(doWidgetConfigure, null, true);

// We call init to set up doitall and prepare the onConfigure event
doitall.init();

var id = defaultID;

function doWidgetConfigure()
{
	var isASX = false;

	var params = ParseQueryStr();
	if(typeof(params["id"])!="undefined") id = params["id"];
	if(typeof(params["asx"])!="undefined") isASX = true;

	var station = stations[id];
	if(typeof(station)=="undefined")
		SafeWrite('idStationName',"Error: No valid settings ID specified");
	else
	{
		/* DEBUG */
		if(id == 100 || id == 111)
		{
			AdSense.testingPhase = true;
			Lint.debugMode = true;
			doitall.ignoreVistaBug = true;
			//TargetSpot.enabled = true;
			//TargetSpot.registerObjectArea('idTargetSpot');
		}
		/* */

		doitall.stationID = station['sid']; //AudioRealm station ID
		doitall.publisherID = station['pid']; //StreamAds publisher ID [Only required for 1-to-1 targeting]

		doitall.loadStationInfo = false; //Load station information from AudioRealm
		doitall.preloadHistory = true; //Load song history from AudioRealm
		doitall.useDataPoller = true; //Check for track changes using "polling" method (Data provided by AudioRealm)
		doitall.useLocalMedia = true; //Allow client-side targeted content
		doitall.RegisterVideoArea('idVideo'); //If you wish to display targeted video content you must register video area

		doitall.RegisterSyncIDs('idAd300x250', null, "idTextAd"); //Register TextAd area (As DOM element)
		//doitall.RegisterSyncFrames(null, null, null); //Register cover/banner ads (AS IFRAME areas)

		//Subscribe to events
		doitall.onMedia.subscribe(cbDisplayMedia);
		doitall.onAds.subscribe(cbDisplayAds);
		doitall.onHistoryLoaded.subscribe(cbHistoryLoaded); //Song history data from AudioRealm loaded
		doitall.onStationData.subscribe(cbStationData); //Station information from AudioRealm loaded
		doitall.player.onLoaded.subscribe(cbPlayerLoaded); //Player is loaded & ready to be controlled
		doitall.onRestore.subscribe(cbRestore); //Advertisement time-out triggered
		doitall.onVideoBegin.subscribe(cbVideoBegin);
		doitall.onVideoEnd.subscribe(cbVideoEnd);

		//Create player
		if(!isASX)
		{
			doitall.player.mediaurl = station['url'];
			doitall.player.showcontrols = true;
			doitall.player.width=360;
			doitall.player.height=50;
			doitall.RegisterPlayerSpace('idPlayerSpace');
		}
		else
		{
			var wmplayer = new TWMPlayer();
			wmplayer.attachPlayer('syncPlayer');
			doitall.player.attachPlayer(wmplayer);
		}

		//Update station name
		SafeWrite('idStationName', station["name"]);
	}

	// Get rid of STUPID FUCKING PROTOTYPE CRAP
	for (var crap in Array.prototype) delete Array.prototype[crap];
}


//##============================================================================
//## EVENT HANDLERS
//##============================================================================
function SafeWrite(id, val)
{
	if(val==null) val = '';
	if (document.getElementById && document.getElementById(id))
		document.getElementById(id).innerHTML = val;
}

function cbVideoBegin(type, args, me)
{
	if (navigator.userAgent.indexOf('MSIE') == -1) setVisibility("idVideoDummy",true);
}

function cbVideoEnd(type, args, me)
{
	if (navigator.userAgent.indexOf('MSIE') == -1) setVisibility("idVideoDummy",false);
}

function cbDisplayMedia(type, args, me)
{
	var media = args[0];
	DisplayHistory();
}

function cbDisplayAds(type, args, me)
{
	var ad = args[0];

	//Hide main player page banner (Only for listen.php)
	setVisibility("frameBanner300x250", !(ad['coverID']>0));
	setVisibility("idAd300x250", (ad['coverID']>0));

	//Make the advertisement areas visible
	setVisibility("frmAd300x250", (ad['coverID']>0));
	setVisibility("idTextAd", (ad['textID']>0));

	//Provide click URL for ads
	if(ad['clickurl']!=null)
	{
		ad['buycd'] = ad['clickurl'];
		ad['website'] = ad['clickurl'];

		var adClick = document.getElementById('adClick');
		adClick.innerHTML = "<a href='"+ad['clickurl']+"' target='_blank'><b>Click here to visit sponsor</b></a>";
		setVisibility("adClick", true);
	}
	else setVisibility("adClick", false);

	Lint.log("Ad:");
	Lint.dir(ad);

	DisplayItem(ad);
}

function cbHistoryLoaded(type, args, me)
{
	DisplayHistory();
}

function cbStationData(type, args, me)
{
	var stationdata = args[0];
	SafeWrite('idStationName',stationdata['name']);
}

function cbPlayerLoaded(type, args, me)
{
	/*
	if(!doitall.player.isControllable())
	{
		setVisibility("idSilverLight",true);
	}
	*/
}

function cbRestore(type, args, me)
{
	setVisibility("idAd300x250", false);
	setVisibility("frmAd300x250", false);
	setVisibility("idTextAd", false);
	setVisibility("adClick", false);

	//Display main player page banner again (Only for listen.php)
	setVisibility("frameBanner300x250", true);
}

//##============================================================================
//## WORKER FUNCTIONS
//##============================================================================
function AddStation(id, name, pid, sid, url)
{
	//Build station array
	var station = Array();
	station["name"] = name;
	station["pid"] = pid;
	station["sid"] = sid;
	station["url"] = url;

	//Add it to the right index
	stations[id] = station;
}

function DisplayItem(item)
{
	Lint.log("Item: " + item['combined']);
	SafeWrite('musicStatus', item['combined']);
	
	var hrefBuy = document.getElementById('hrefBuy');
	hrefBuy.href = item['buycd'];

	var hrefInfo = document.getElementById('hrefInfo');
	hrefInfo.href = item['website'];

	if(item["artist"]!=null && item["artist"]!="")
	{
		var urlCover = "http://www.star104.net/listen_files/images/na.gif";
		var imgCoverPic = document.getElementById('imgCoverPic');
		imgCoverPic.setAttribute('src', urlCover);
	}
	else UpdateCover(false);
	
}

function DisplayHistory()
{
	var idHistory = document.getElementById('idHistory');
	var list = doitall.mediadata.getMediaHistory(5, "S,A"); //Return one item with songtype of A or S (Advertisement or Normal song)
	var title = "";
	var artist = "";

	for(var i=0; i<list.length; i++) //Iterate through all the items returned (Should only be 1)
	{
		if(i==0)
		 {
			DisplayItem(list[i]);
			DOMClear(idHistory);
			var objDiv = document.createElement('div');
			objDiv.innerHTML = "<b>Recently Played Songs</b>";
			idHistory.appendChild(objDiv);
		 }
		else
			AddHistoryItem(idHistory, list[i]);
	}
}

function DOMClear(objDOM)
{
	var child = objDOM.firstChild;
	while(child != null)
	{
		objDOM.removeChild(child);
		child = objDOM.firstChild;
	}
}

function AddHistoryItem(idHistory, item)
{
	var objDiv = document.createElement('div');
	var objText = document.createTextNode(item['combined']+" ("+item['mmss']+")");
	objDiv.appendChild(objText);
	idHistory.appendChild(objDiv);
}

function UpdateCover(success)
{
	var imgCoverPic = document.getElementById('imgCoverPic');
	if(!success) imgCoverPic.src = "http://www.star104.net/listen_files/images/na.gif";
}

function toggleHistory()
{
	var idHistory = document.getElementById('idHistory');
	visible = (idHistory.style.display != "none");
	visible = !visible;

	setVisibility("idHistory", visible);
	/*
	if(visible)
		DynWrite("btnHistory","Hide history");
	else
		DynWrite("btnHistory","Show history");
	*/
}