function addEvent(elm,evType,fn,useCapture) {
 if(elm.addEventListener) {
 elm.addEventListener(evType,fn,useCapture);
 return true;
 }else if (elm.attachEvent) {
	var r=elm.attachEvent('on'+evType, fn);
	return r;
 }else {
	elm['on'+evType]=fn;
 }
}

function findTarget(e) {
  var target; 

  if (window.event && window.event.srcElement) 
    target = window.event.srcElement;
  else if (e && e.target)
    target = e.target;
  if (!target)
    return null;

  while (target != document.body &&
      target.nodeName.toLowerCase() != 'a')
    target = target.parentNode;

  if (target.nodeName.toLowerCase() != 'a')
    return null;

  return target;
}

function cancelClick() {
 return false;
}

function addPara(parentElm,textNode,elmId) {
if(typeof elmId=="undefined") elmId="noId";
 para=document.createElement("p");
 if(elmId!="noId"){
  para.setAttribute("id",elmId);
 }
 paraTextNode=document.createTextNode(textNode);
 para.appendChild(paraTextNode);
 parentElm.appendChild(para);
}

function loadTrackInPlayer(trackData) {
 
 
 
 soundManager.createSound(trackData['id'],trackData['filename']);
 
 titlePara.innerHTML=trackData['title'];
 artistPara.innerHTML=trackData['artist'];
 timePara.innerHTML=trackData['duration'];
 
 playButton.setAttribute("href","javascript:soundManager.play('"+trackData['id']+"')");
 pauseButton.setAttribute("href","javascript:soundManager.pause('"+trackData['id']+"')");
 stopButton.setAttribute("href","javascript:soundManager.stop('"+trackData['id']+"')");
 soundManager.play(trackData['id']);
}

function setUpPlayer(){

 if(!document.getElementById) return;
 
 playerDiv=document.createElement("div");
 playerDiv.setAttribute("id","player");
 playerHeader=document.createElement("h3");
 playerHeaderText=document.createTextNode("Audio Player");
 playerHeader.appendChild(playerHeaderText);
 playerDiv.appendChild(playerHeader);
 playerInfoWindow=document.createElement("div");
 playerInfoWindow.setAttribute("id","infowindow");
 addPara(playerInfoWindow,"Now playing:");
 
 titlePara=document.createElement("p");
 titleText=document.createTextNode("");
 titlePara.appendChild(titleText);
 playerInfoWindow.appendChild(titlePara);
 
 artistPara=document.createElement("p");
 artistText=document.createTextNode("");
 artistPara.appendChild(artistText);
 playerInfoWindow.appendChild(artistPara);
 
 timePara=document.createElement("p");
 timeText=document.createTextNode("");
 timePara.appendChild(timeText);
 playerInfoWindow.appendChild(timePara);
 
 playerDiv.appendChild(playerInfoWindow);
 
 controlDiv=document.createElement("div");
 controlDiv.setAttribute("id","controls");
 
 playButton=document.createElement("a");
 playButton.setAttribute("title","Play");
 playButton.setAttribute("id","play");
 controlDiv.appendChild(playButton);
 
 pauseButton=document.createElement("a");
 pauseButton.setAttribute("title","Pause");
 pauseButton.setAttribute("id","pause");
 controlDiv.appendChild(pauseButton);
 
 stopButton=document.createElement("a");
 stopButton.setAttribute("title","Stop");
 stopButton.setAttribute("id","stop");
 controlDiv.appendChild(stopButton);
 
 playerDiv.appendChild(controlDiv);
 
 
 //attach player element to document (#main)
 mainArea=document.getElementById("main");
 mainArea.appendChild(playerDiv);
 
 //loadTrackInPlayer(currentSound);
 
}

function changeTrack(e) {
 
 var el;
 if(window.event && window.event.srcElement) el=window.event.srcElement;
 if(e && e.target) el=e.target;
 if(!el) return;
 while(el.nodeName.toLowerCase() != 'a' && el.nodeName.toLowerCase() !='body') el=el.parentNode;
 if (el.nodeName.toLowerCase=='body') return;

 newSound(el.getAttribute("id"));
 loadTrackInPlayer(currentSound);
 
 //stop bubble & default behaviour
 if(window.event) {
  window.event.cancelBubble=true;
	window.event.returnValue=false;
 }
 if (e && e.stopPropagation && e.preventDefault) {
  e.stopPropagation();
	e.preventDefault();
 }
 
}

soundManager.onload=function() {
 setUpPlayer();
 newSound("file2");
 trackList=document.getElementById("tracklist");
 links=trackList.getElementsByTagName("a");
 for(j=0;j<links.length;j++) {
  addEvent(links[j],'click',changeTrack,false);
	links[j].onclick=cancelClick; //for Safari
 }
}

function newSound(fileID){
 var xmlhttp=null;
 if(window.ActiveXObject){
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
 } else if(window.XMLHttpRequest){
  xmlhttp=new XMLHttpRequest;
 }else{
  return false;
 }
 xmlhttp.open('GET','audio.xml',true);
 xmlhttp.onreadystatechange=function(){
  if(xmlhttp.readyState==4) {
	 if(typeof currentSound['id']!="undefined"){
	  soundManager.stop(currentSound['id']);
	 }
	 filedata=xmlhttp.responseXML.getElementsByTagName('file');
	 for(i=0;i<filedata.length;i++) {
		if(filedata[i].getAttribute("id")==fileID) {
		 currentSound['id']=filedata[i].getAttribute("id");
		 currentSound['filename']=filedata[i].getElementsByTagName('filename')[0].firstChild.data;
		 currentSound['title']=filedata[i].getElementsByTagName('title')[0].firstChild.data;
		 currentSound['artist']=filedata[i].getElementsByTagName('artist')[0].firstChild.data;
		 currentSound['size']=filedata[i].getElementsByTagName('size')[0].firstChild.data;
		 currentSound['duration']=filedata[i].getElementsByTagName('duration')[0].firstChild.data;
		}
	 }
	 loadTrackInPlayer(currentSound);
	}
 }
 xmlhttp.send(null);
}

var currentSound=new Array;
