function startMediaPlayer(asxUrl, audio)
{
	/*var playerEmbed = document.getElementById('media_player_embed');

    //var statusBar = document.getElementById('ShowStatusBar');
    
    //statusBar.setAttribute('value', '-1');

	var playerDiv = document.getElementById('media_player');
		
	if(audio){
	    //document.getElementById('MP_Height').setAttribute('value', '70');
		document.getElementById('media_player_embed').setAttribute('height', '70');
	}
	else{
	    //document.getElementById('MP_Height').setAttribute('value', '320');
		document.getElementById('media_player_embed').setAttribute('height', '320');
		playerDiv.style.top = '0px';
	}
	
	document.getElementById('MP_Src').setAttribute('value', asxUrl);
	//playerEmbed.setAttribute('src', asxUrl);
	//playerEmbed.src = asxUrl;
	
	
	playerDiv.innerHTML = playerDiv.innerHTML;*/
	
    var vo;
    
    if (audio)
    {
        vo = new WMPObject(asxUrl, "media_player_embed", "320", "70"); 
    } else {
        vo = new WMPObject(asxUrl, "media_player_embed", "320", "320");
        document.getElementById('media_player').style.top = '0px'; 
    }
    
    vo.addParam("AllowChangeDisplaySize", "-1");
    vo.addParam("StretchToFit", "-1");
    vo.addParam("AutoSize", "0");
    vo.addParam("DisplaySize", "4");
    //vo.addParam("DisplayMode", "4");
    vo.addParam("ShowDisplay", "0");
    
    vo.addParam("WindowlessVideo", "0");
    vo.addParam("Enabled", "-1");
    vo.addParam("AutoStart", "true");
    vo.addParam("AutoPlay", "true");
    vo.addParam("Mute", "0");
    vo.addParam("TransparentAtStart", "-1");
    vo.addParam("EnableFullScreenControls", "-1");
    vo.addParam("EnablePositioncontrols", "-1");
    vo.addParam("AutoPlay", "-1"); 
    vo.addParam("AudioStream", "-1");
    vo.addParam("ShowControls", "-1");
    vo.addParam("ShowStatusBar", "-1");     
    vo.addParam("ShowGotoBar", "0");
    vo.addParam("AllowScan", "-1");
    vo.addParam("PlayCount", "-1");
    vo.addParam("InvokeURLs", "-1");
//    vo.addParam("VideoBorderWidth", "0");
//    vo.addParam("VideoBorder3D", "0");
    vo.write("media_player"); 

/*    vo.addParam("AutoStart", "True");
    vo.addParam("AutoPlay", "True"); 
    vo.addParam("ShowStatusBar", "True"); 
    vo.addParam("AllowChangeDisplaySize", "True");
    vo.addParam("AutoSize", "False");
    vo.addParam("Mute", "False");
    vo.addParam("Balance", "0");
    vo.addParam("TransparentAtStart", "False");
    vo.addParam("DisplaySize", "4");
    
    vo.write("media_player"); 
    
/*
    var e = document.embeds;
    for (var i = 0; i < e.length; ++i) {
        e[i].SetEnabled(true); // Make sure the object is enabled 
        e[i].SetAllowChangeDisplaySize(true); // Make sure we can actually change DisplaySize 
        e[i].SetAutoSize(false); // WMP11 has a new default of true. This is what causes the display bug by forcing the WMP skin to always resize down to the height of the video, which reveals the transparent, non-painted area behind it. AutoSize is now hardcoded to true, so you can't just switch this off. This doesn't have any effect. It's just here for proof.
        e[i].SetDisplaySize(4); // WMP11 has a new default of 4, which makes videos fit-to-width by default. Setting it to 0 shows the video at its original width. 
        e[i].SetShowDisplay(false); // turn off this toolbar 
        e[i].SetShowGotoBar(true); // turn off this toolbar 
        e[i].SetShowCaptioning(false); // turn off this toolbar 
        e[i].SetEnableTracker(false); // turn off this toolbar 
        e[i].SetShowControls(true); // Everyone wants this enabled even if the site says no. It also needs to be on make make everything work with the height calculation below. 
        e[i].SetShowStatusBar(true); // Everyone wants this enabled even if the site says no. It also needs to be on make make everything work with the height calculation below. 
        e[i].SetEnableContextMenu(true); // Everyone wants this enabled even if the site says no. 
        e[i].SetEnablePositionControls(true); // Everyone wants this enabled even if the site says no. 
        e[i].SetEnableFullScreenControls(true); // Everyone wants this enabled even if the site says no. 
        e[i].SetAllowScan(true); // Everyone wants this enabled even if the site says no. 
        e[i].SetAutoStart(true); // Just here as a note. 
    } 
    */
}

function CallScriptCommand(scType, scParam){
	if(scParam.length > 5){
		scParam = scParam.replace(/1/, '|');
		
		var tunes = scParam.split('|TUNE£$');
	    
	    if(tunes.length > 2){
			var last = tunes[1].split('£$');
			
			if (last.length < 2) last[1] = '';
					
			var current = tunes[2].split('£$');

			if (current.length < 2) current[1] = '';
			
			var next = tunes[3].split('£$');

			if (next.length < 2) next[1] = '';
			
			// last[0] = last[0].replace(/Â/,'');
			// current[0] = current[0].replace(/Â/,'');
			// next[0] = next[0].replace(/Â/,'');
			
			setNCL(last[0].replace(/^\s+|\s+$/g, '').replace(/_/g, ' '), last[1].replace(/^\s+|\s+$/g, ''), 
			    current[0].replace(/^\s+|\s+$/g, '').replace(/_/g, ' '), current[1].replace(/^\s+|\s+$/g, ''), 
			    next[0].replace(/^\s+|\s+$/g, '').replace(/_/g, ' '), next[1].replace(/^\s+|\s+$/g, ''));
		}
			
    }
    // NCL format: 1TUNE£$Ashanti£$Foolish|TUNE£$Ash£$You Can't Have It All|TUNE£$Timbuktu£$Karmakontot

}

function initialSettings()
{
/*    
    playerEmbed.setAttribute('AutoStart', '-1'); 
    playerEmbed.setAttribute('ShowStatusBar', '-1');
    playerEmbed.setAttribute('DisplaySize','0');
    playerEmbed.setAttribute('Filename','');
    playerEmbed.setAttribute('Mute','0');
    playerEmbed.setAttribute('Balance','0');
    playerEmbed.setAttribute('SelectionStart','-1');
    playerEmbed.setAttribute('SelectionEnd','-1');
    playerEmbed.setAttribute('ShowControls','-1');
    playerEmbed.setAttribute('ShowAudioControls','-1');
    playerEmbed.setAttribute('ShowDisplay','0');
    playerEmbed.setAttribute('ShowPositionControls','-1');
    playerEmbed.setAttribute('AudioStream','-1');
    playerEmbed.setAttribute('AutoSize','0');
    playerEmbed.setAttribute('AnimationAtStart','-1');
    playerEmbed.setAttribute('AllowChangeDisplaySize','-1');
    playerEmbed.setAttribute('EnablePositionControls','-1'); 
    playerEmbed.setAttribute('ShowTracker','-1');
    playerEmbed.setAttribute('TransparentAtStart','-1');
    */
}

function addImage(adWidth, adHeight, imgSrc, target, targetUrl, targetLayer){
	var imgTemplate = '<a href="' + targetUrl + '" target="'+ target +'"><img src="' + imgSrc + '" width="' + adWidth + '" height="' + adHeight + '" border="0"></a>';
	getObject(targetLayer).innerHTML = imgTemplate;
}

function setStationInfo(title, description, logourl, linkurl){
	document.getElementById('media_top_station_name_span').innerHTML = title;
	document.getElementById('media_top_station_description_span').innerHTML = description;
	document.getElementById('media_top_station_link').href = linkurl;
	document.getElementById('media_top_station_logo_img').src = logourl;
}

function setMediaLanguage(listeningTo, next, current, last, settings, help, tip, tono){
	document.getElementById('media_top_listening_to_span').innerHTML = listeningTo;
	document.getElementById('media_ncl_next_text').innerHTML = next;
	document.getElementById('media_ncl_current_text').innerHTML = current;
	document.getElementById('media_ncl_last_text').innerHTML = last;
	document.getElementById('media_settings_settings_link').innerHTML = settings;
	document.getElementById('media_settings_help_link').innerHTML = help;
	document.getElementById('media_settings_tip_link').innerHTML = tip;
	document.getElementById('media_settings_tono_link').innerHTML = tono;
}


function setNCL(lastArtist, lastTitle, currentArtist, currentTitle, nextArtist, nextTitle){
	var maxlength = 58;
	var maxcurrentlength = 34;
	
	var last = '';
	if ( lastArtist == '' || lastTitle == '')
	{
	    if (lastArtist == '' && lastTitle == '')
	    {
	        last = '';
	    }
	    else if (lastArtist == '')
	    {
	        last = lastTitle;
	    }
	    else
	    {
	        last = lastArtist;
	    }
	}
	else last =	lastArtist + ' - ' + lastTitle;
	
	var current = '';
	if (currentArtist == '' || currentTitle == '')
	{
	    if (currentArtist == '' && currentTitle == '')
	    {
	        current = '';
	    }
	    else if (currentArtist == '')
	    {
	        current = currentTitle;
	    }
	    else
	    {
	        current = currentArtist;
	    }
	}
	else current = currentArtist + ' - ' + currentTitle;
	
	var next = '';
	if (nextArtist == '' || nextTitle == '')
	{
	    if (nextArtist == '' && nextTitle == '')
	    {
	        next = '';
	    }
	    else if (nextArtist == '')
	    {
	        next = nextTitle;
	    }
	    else
	    {
	        next = nextArtist;
	    }
	}
	else next = nextArtist + ' - ' + nextTitle;
	
	if(last.length > maxlength){
	    last = last.substring(0, maxlength-3);
		last = last + "...";
    }
    
    if(current.length > maxcurrentlength){
        current = current.substring(0, maxcurrentlength-3);
		current = current + "...";
    }
    
    if(next.length > maxlength){
		next = next.substring(0, maxlength-3);         
		next = next + "...";
	}
	
	document.getElementById('media_ncl_next_artist_and_title').innerHTML = next;//lastArtist + ' - ' + lastTitle;
	document.getElementById('media_ncl_current_artist_and_title').innerHTML = current;//currentArtist + ' - ' + currentTitle;
	if (lastArtist != currentArtist && lastTitle != currentTitle) 
	    document.getElementById('media_ncl_last_artist_and_title').innerHTML = last;//nextArtist + ' - ' + nextTitle;
	showNCL();
}

function hideNCL(){
	document.getElementById('media_ncl_next').style.display = 'none';
	document.getElementById('media_ncl_current').style.display = 'none';
	document.getElementById('media_ncl_last').style.display = 'none';
}

function showNCL(){
	document.getElementById('media_ncl_next').style.display = 'block';
	document.getElementById('media_ncl_current').style.display = 'block';
	document.getElementById('media_ncl_last').style.display = 'block';
}

function hideFlash(){
	document.getElementById('media_flash').style.display = 'none';
}

function checkFlash(){
	var objects = document.getElementsByTagName("object");
	if(objects.length < 1){
		clearTimeout(startplayer);
		startup();
		hideFlash();
	}
}

function processNCLResponse(){
	var xmlobject;
	if(4 == this.req.readyState){
		if(200 == this.req.status){
			var res = this.req.responseText;
			if(res != '' && res != null){
				
				// code for IE
				if (window.ActiveXObject){
					var doc=new ActiveXObject('Microsoft.XMLDOM');
					doc.async='false';
					doc.loadXML(res);
				}
				// code for Mozilla, Firefox, Opera, etc.
				else{
					var parser=new DOMParser();
					var doc=parser.parseFromString(res,'text/xml');
				}
				
				if(0 == doc.getElementsByTagName('none').length){
				
					var lastArtist = '';
					var lastTitle = '';
					var currentArtist = '';
					var currentTitle = '';
					var nextArtist = '';
					var nextTitle = '';
					
					if(doc.getElementsByTagName('last').length > 0)
					{
					    if (doc.getElementsByTagName('last')[0].getElementsByTagName('artist')[0].childNodes.length > 0)
						    lastArtist = doc.getElementsByTagName('last')[0].getElementsByTagName('artist')[0].childNodes[0].nodeValue.replace(/_/g, ' ');
						if (doc.getElementsByTagName('last')[0].getElementsByTagName('title')[0].childNodes.length > 0)
						    lastTitle = doc.getElementsByTagName('last')[0].getElementsByTagName('title')[0].childNodes[0].nodeValue.replace(/_/g, ' ');
					}
					
					if (doc.getElementsByTagName('current').length > 0)
					{
					    if (doc.getElementsByTagName('current')[0].getElementsByTagName('artist')[0].childNodes.length > 0)
    					    currentArtist = doc.getElementsByTagName('current')[0].getElementsByTagName('artist')[0].childNodes[0].nodeValue.replace(/_/g, ' ');
    					if (doc.getElementsByTagName('current')[0].getElementsByTagName('title')[0].childNodes.length > 0)
	    				    currentTitle = doc.getElementsByTagName('current')[0].getElementsByTagName('title')[0].childNodes[0].nodeValue.replace(/_/g, ' ');
					}
					
					if (doc.getElementsByTagName('next').length > 0)
					{
					    if (doc.getElementsByTagName('next')[0].getElementsByTagName('artist')[0].childNodes.length > 0)
					        nextArtist = doc.getElementsByTagName('next')[0].getElementsByTagName('artist')[0].childNodes[0].nodeValue.replace(/_/g, ' ');
					    if (doc.getElementsByTagName('next')[0].getElementsByTagName('title')[0].childNodes.length > 0)
					        nextTitle = doc.getElementsByTagName('next')[0].getElementsByTagName('title')[0].childNodes[0].nodeValue.replace(/_/g, ' ');
					}
					
					setNCL(lastArtist, lastTitle, currentArtist, currentTitle, nextArtist, nextTitle);


					nextStartTime = doc.getElementsByTagName('next')[0].getElementsByTagName('starttime')[0].childNodes[0].nodeValue;
					serverTime = doc.getElementsByTagName('servertime')[0].childNodes[0].nodeValue;
					
					var startDateParts = nextStartTime.split(' ')[0].split('.');
					var startTimeParts = nextStartTime.split(' ')[1].split(':');
					
					var start = new Date();
					start.setHours(parseInt(startTimeParts[0], 10), parseInt(startTimeParts[1], 10), parseInt(startTimeParts[2], 10), 0);
					start.setDate(parseInt(startDateParts[0], 10));
					start.setMonth(parseInt(startDateParts[1], 10));
					start.setFullYear(parseInt(startDateParts[2], 10));
					
					var serverDateParts = serverTime.split(' ')[0].split('.');
					var serverTimeParts = serverTime.split(' ')[1].split(':');
						
					var server = new Date();
					server.setHours(parseInt(serverTimeParts[0], 10), parseInt(serverTimeParts[1], 10), parseInt(serverTimeParts[2], 10), 0);
					server.setDate(parseInt(serverDateParts[0], 10));
					server.setMonth(parseInt(serverDateParts[1], 10));
					server.setFullYear(parseInt(serverDateParts[2], 10));
					
					var result = start.getTime() - server.getTime() + 20000; // Add 20 second delay.
					
					//if(navigator.userAgent.indexOf("Firefox") != -1)
					//	console.info("Time: " + Date() + " trying NCL in: " + result + " ms.");
					
					if(result < -5000){
						result = 30000;	// Wait 30 seconds if something goes wrong.
					}
					else if(result < 0){
						result = 5000;	// Try again in 5 seconds if we're close.
					}
					
					if(!window.ActiveXObject){	// IE uses in-stream NCL.
						setTimeout('getNCL()', result);
					}
				}
				else{
					setTimeout('getNCL()', 1200000);	// Try again in 20 minutes if there's no NCL.
					hideNCL();
				}
			}
			else{
				if(!window.ActiveXObject){  // IE uses in-stream NCL.
					setTimeout('getNCL()', 1200000);	// Try again in 20 minutes if there's no NCL.
					hideNCL();
				}
			}
		}
	}
}

function getNCL(){
	try{
		this.req = new ActiveXObject('Msxml2.XMLHTTP');
	}
	catch(e){
		try{
			this.req = new ActiveXObject('Microsoft.XMLHTTP');
		}
		catch(oc){
			this.req = null;
		}
	}
	
	if(!this.req && typeof XMLHttpRequest != 'undefined'){
		this.req = new XMLHttpRequest();
	}
	
	if(this.req!=null){
		this.req.onreadystatechange = function() {processNCLResponse()};
		var ord=Math.random()*10000000000000000;
		//var url = 'http://' + window.location.hostname + ':' + window.location.port + window.location.pathname.substring(0, window.location.pathname.lastIndexOf('/')+1) + 'NCLManager.aspx?cmd=get&ord=' + ord + '&stationkey=';
		
		//this.req.open('GET', url + stationkey, true);
		this.req.open('GET', 'http://' + window.location.hostname + ':' + window.location.port + '/NCLManager.aspx?cmd=get&stationkey=' + stationkey + '&ord=' + ord, true);
		this.req.send(null);
	}
}
