var xmlHttp;
var requiredMajorVersion = 9;
var requiredMinorVersion = 0;
var requiredRevision = 115;

/**
 * @return
 */
function mediaPlayer() {
	
	var hasReqestedVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
	if (hasReqestedVersion) {
	
		var trackLoaded = $.cookie("trackloaded");
		if(trackLoaded == null) {
			
			xmlHttp = GetXmlHttpObject();
			if (xmlHttp==null) {
				alert ("Browser does not support HTTP Request");
				return;
			} 
			var url = "/player/default";
			xmlHttp.onreadystatechange=loadInitialTrack;
			xmlHttp.open("GET",url,true);
			xmlHttp.send(null);
			
		} else {
			
			var mediaType = $.cookie("mediatype");
			var trackTitle = $.cookie("tracktitle");
			var trackArtist = $.cookie("trackartist");
			var trackCat = $.cookie("trackcat");
			var trackClip = $.cookie("trackclip");
			var trackImage = $.cookie("trackimage");
			var trackProgress = $.cookie("trackprogress");
			var trackState = $.cookie("trackstate");
			
			document.getElementById("trackTitle").innerHTML = trackTitle;
			document.getElementById("trackArtist").innerHTML = trackArtist;
			document.getElementById("trackCat").innerHTML = trackCat;
			
			if("track" == mediaType) {
				var file = '/audio/tracks/' + trackClip;
				var image = '/images/releases/player/' + trackImage;
				createPlayer(trackArtist, file, image, trackTitle, trackProgress);
			} else {
				//loadFile('mpl',{file:'audio/mixes/' + trackClip, image:'images/mixes/player/' + trackImage})
			}
			
		}
		
	} else {
		
		var alternateContent = '<div id="music" class="widgets"><div id="player"></div><div id="items"><div id="trackDisplay">'
		+ '<span class="noFlash">'
		+ 'You need to update or install flash to use the music player. '
		+ 'You can still listen to music clips.<br />'
		+ '<a href="http://www.adobe.com/go/getflash/">Get Flash</a></span></div></div></div>';
		$(alternateContent).insertAfter('#music');
		$('#music').remove();
	}
}

function loadInitialTrack() {
	
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {
		
		var xmlDoc=xmlHttp.responseXML;
		var trackTitle = xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue;
		var trackArtist = xmlDoc.getElementsByTagName("artist")[0].childNodes[0].nodeValue;
		var trackCat = xmlDoc.getElementsByTagName("cat")[0].childNodes[0].nodeValue;
		var trackClip = xmlDoc.getElementsByTagName("clip")[0].childNodes[0].nodeValue;
		var trackImage = xmlDoc.getElementsByTagName("clipimage")[0].childNodes[0].nodeValue;
		
		document.getElementById("trackTitle").innerHTML = trackTitle;
		document.getElementById("trackArtist").innerHTML = trackArtist;
		document.getElementById("trackCat").innerHTML = trackCat;
		
		var file = '/audio/tracks/' + trackClip;
		var image = '/images/releases/player/' + trackImage;
		
		createPlayer(trackArtist, file, image, trackTitle, null);
		setCookies(trackTitle, trackArtist, trackCat, trackClip, trackImage, true);
	}

}

/**
 * @param cat
 * @param side
 * @return
 */
function loadVinylTrack(cat, side) {
	xmlHttp = GetXmlHttpObject();
	if (xmlHttp==null) {
		alert ("Browser does not support HTTP Request");
		return;
	} 
	var url = "/player/vinyl/cat/" + cat + "/side/" + side;
	xmlHttp.onreadystatechange=trackDetails;
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
}

function loadDigitalTrack(cat) {
	xmlHttp = GetXmlHttpObject();
	if (xmlHttp==null) {
		alert ("Browser does not support HTTP Request");
		return;
	} 
	var url = "/player/mp3/cat/" + cat;
	xmlHttp.onreadystatechange=trackDetails;
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
}
 
function trackDetails() { 
	
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {
	
		var xmlDoc=xmlHttp.responseXML;
		var trackTitle = xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue;
		var trackArtist = xmlDoc.getElementsByTagName("artist")[0].childNodes[0].nodeValue;
		var trackCat = xmlDoc.getElementsByTagName("cat")[0].childNodes[0].nodeValue;
		var trackClip = xmlDoc.getElementsByTagName("clip")[0].childNodes[0].nodeValue;
		var trackImage = xmlDoc.getElementsByTagName("clipimage")[0].childNodes[0].nodeValue;
		var path = '/audio/tracks/' + trackClip;
		
		var hasReqestedVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
		if (hasReqestedVersion) {
			
			document.getElementById("trackTitle").innerHTML = trackTitle;
			document.getElementById("trackArtist").innerHTML = trackArtist;
			document.getElementById("trackCat").innerHTML = trackCat;
			
			
			var image = '/images/releases/player/' + trackImage;
			thisMovie('mpl').sendEvent('LOAD', {'file': path, 'image': image});
			thisMovie('mpl').sendEvent('PLAY');
			
			setCookies(trackTitle, trackArtist, trackCat, trackClip, trackImage, false);
			
		} else {
			
			self.location = path;
		}
	}
} 

function thisMovie(swf) {
	if(navigator.appName.indexOf("Microsoft") != -1) {
		return window[swf];
	} else {
	    return document[swf];
	}
};

function GetXmlHttpObject() { 
	var objXMLHttp = null;
	if (window.XMLHttpRequest) {
		objXMLHttp=new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
	return objXMLHttp;
}

function registerPlayer(obj) {
    player = document.getElementById(obj.id);
    player.addModelListener("state","stateTracker");
    player.addModelListener("time","timeTracker");
    
    var trackState = $.cookie("trackstate");
    if("play" == trackState) {
		player.sendEvent('PLAY');
	}
    
};

function stateTracker(obj) {
	var state = obj.newstate;
	if(state == 'PLAYING') {
		$.cookie("trackstate", "play", { path: '/', expires: 1}); 
	} else if(state == 'PAUSED') {
		$.cookie("trackstate", "pause", { path: '/', expires: 1});
	}
};

function timeTracker(obj) {
	var time = obj.position;
	if(time > 0) {
		$.cookie("trackprogress", time, { path: '/', expires: 1});
	}
};  

function createPlayer(trackArtist, file, image, trackTitle, trackProgress) {
	var so = new SWFObject('/flash/player-licensed.swf','mpl','151','115','9');
	so.addParam('allowscriptaccess','always');
	so.addParam('wmode','opaque');
	so.addVariable('author',trackArtist);
	so.addVariable('file',file);
	so.addVariable('image',image);
	so.addVariable('title',trackTitle);
	if(trackProgress != null) {
		so.addVariable('start',trackProgress);
	}
	so.addVariable('skin','/skins/player/player.xml');
	so.addVariable("icons","false");
	so.addVariable('dock','false');
	so.addVariable('playerready','registerPlayer');
	so.write('player');
}

function setCookies(trackTitle, trackArtist, trackCat, trackClip, trackImage, init) {
	$.cookie("mediatype", "track", { path: '/', expires: 1});
	$.cookie("trackloaded", "yes", { path: '/', expires: 1});
	$.cookie("tracktitle", trackTitle, { path: '/', expires: 1});
	$.cookie("trackartist", trackArtist, { path: '/', expires: 1});
	$.cookie("trackcat", trackCat, { path: '/', expires: 1});
	$.cookie("trackclip", trackClip, { path: '/', expires: 1});
	$.cookie("trackimage", trackImage, { path: '/', expires: 1});
	if(init) {
		$.cookie("trackstate", "pause", { path: '/', expires: 1});
		$.cookie("trackprogress", "0");
	} else {
		$.cookie("trackstate", "play", { path: '/', expires: 1});
	}
}

$(document).ready(function(){
	mediaPlayer();
});
