var loadsteps=0;

function checkload() {
 loadsteps++;
 if (loadsteps==2) {
  GetReleases();

document.getElementById('playbar').onmousedown = setposition;
document.getElementById('volumebar').onmousedown = setvolume;

  var CurrentAlbum = Releases[0].cover;
  
  var StartAlbum = Releases.length;
  var StartTrack = 1;
  
  if (StartAlbum>Releases.length)
    StartAlbum = Releases.Length;
	
  try {
    var t = document.URL.split("#")[1].split("x");
	if (t[0]!='undefined') {
      StartAlbum = t[0];
	  if (t[1]!='undefined')
	    StartTrack = t[1];
	}
	
  selectalbum(StartAlbum-1);

  } catch(e) { 
    var StartAlbum = Releases.length;
    var StartTrack = 1;
    selectalbum(StartAlbum-1);
  }

  IsPlaying = true;
  
  if (StartTrack>Releases[StartAlbum-1].tracks.length)
    StartTrack = 1;
	
  playtrack(StartTrack-1);
 }
}

soundManager.flashVersion = 9;
 soundManager.debugMode = false;
soundManager.useHTML5Audio = true;

soundManager.onload = function() {
  checkload();
}

var mySound;
var butt1;
var butt2;
function fixno(input) {
  if (input<10) {
    return '0'+input;
  } else {
    return input;
  }
}

function track(name, url) {
  this.name = name;
  this.url = url;
}

var R;

var Releases = new Array();
var Selected = -1;
var CurrentTrack = -1;
var CurrentAlbum = -1;
var IsPlaying = false;
var HasLoaded = false;
var Volume = 100;


function album(artist, name, cover, id) {

  this.artist = artist;
  this.name = name;
  this.index = Releases.length;
  this.id = id;
  
  if (this.index%2==0) {
  this.cover = R.image(cover, -173, -168+Releases.length*20, 384, 384);
  } else {
  this.cover = R.image(cover, 173, -168+Releases.length*20, 384, 384);
  }
  this.cover.attr({opacity:0, scale:0.2, rotation:10}); 

  this.tracks = new Array();
}


function selectalbum(index, a) {
 if (Selected != -1) {
  if (a==0) {
   Releases[Selected].cover.animate({opacity: 0.00, scale: 0.2, rotation: -45, x:0, y:Selected*20 }, 500, "<>");
   } else
   {
   Releases[Selected].cover.animate({opacity: 0.0, scale: 2, rotation: 45, x:384, y:Selected*20 }, 500, "<>");
   }
 }

 Selected = index;

 document.getElementById('title').innerHTML = Releases[Selected].name;
 document.getElementById('subtitle').innerHTML = Releases[Selected].artist;

 var s='<h2>track list</h2> <ul id="albumtracks" style="font-family: Arial; font-size:14px;">';
 for (var i=0;i<Releases[Selected].tracks.length;i++) {
  if((CurrentAlbum == Selected)&&(CurrentTrack == i)) {
  s+= '<li><a id="track'+i+'" href="#" onclick="playtrack('+i+'); return false;" style="background:#FFFFFF">'+(i+1)+'. '+Releases[Selected].tracks[i].name+'</a></li>\n';
  } else
  s+= '<li><a id="track'+i+'" href="#" onclick="playtrack('+i+'); return false;">'+(i+1)+'. '+Releases[Selected].tracks[i].name+'</a></li>\n';
 }
 s+='</ul>'; 
 document.getElementById('albuminfo').innerHTML = s;

 if (a==0) {
   Releases[Selected].cover.attr({opacity: 0.0, scale: 02, rotation: 45, x:384, y:Selected*20 });
 } else
 {
   Releases[Selected].cover.attr({opacity: 0.0, scale: 0.2, rotation: -45, x:0, y:Selected*20 });
 }

 Releases[Selected].cover.animate({opacity: 1.0, scale:1.0, rotation:0, x:90, y:0}, 500, "<>");
 Releases[Selected].cover.toFront();
 
}

function internalplay() {
  if(!HasLoaded) {
  mySound = soundManager.createSound({
    id: 'track'+CurrentTrack+'_'+CurrentAlbum,
    url: Releases[Selected].tracks[CurrentTrack].url,
    // onload: [ event handler function object ],
    // other options here..
    onfinish: function() { next(); }, 
    whileplaying: function() {
    document.getElementById('playpos').style.width = Math.round((this.position / this.duration)*100)+'%';
    var f = Math.round((this.position) / 1000);
    document.getElementById('playtime').innerHTML = (Math.round((f-30) / 60))+':'+fixno(f%60);
    }
  });
  HasLoaded = true;
}
 mySound.play();
 mySound.setVolume(Volume);
 mySound.setPosition(1);
}

function playtrack(tracknr) {
 if(CurrentAlbum == Selected) {
   document.getElementById('track'+CurrentTrack).style.background ='';
 }
 document.getElementById('playtitle').innerHTML = '<marquee> ('+(tracknr+1)+') '+Releases[Selected].artist+" - "+Releases[Selected].tracks[tracknr].name+'</marquee>';
 CurrentTrack = tracknr;
 CurrentAlbum = Selected;
 document.getElementById('viral').innerHTML = '[ <a href="/'+Releases[Selected].tracks[CurrentTrack].url+'">Download</a> ]';// [ <a href="#'+(Selected+1)+'x'+(tracknr+1)+'">Link</a> ]';
 location.href = '#'+(Selected+1)+'x'+(tracknr+1);
 document.getElementById('track'+tracknr).style.background ='#FFFFFF';
 
try {
 if (mySound)
 mySound.unload();
} catch(e) {};

 HasLoaded = false;
 mySound = 'nil';

 if (IsPlaying == true)
 internalplay();
}

function prev() {
  if (CurrentAlbum!=Selected) {
    playtrack(Releases[Selected].tracks.length-1);
  } else
  if (CurrentTrack==0) {
    selectalbum((Selected+Releases.length-1)%Releases.length,1);
    butt2.toFront();
    butt1.toFront();
    playtrack(Releases[Selected].tracks.length-1);
  } else
  playtrack(CurrentTrack-1);
}

function play() {
  IsPlaying = true;
  internalplay();
}

function pause() {
  if (IsPlaying == true) 
  mySound.togglePause();
}

function stop() {
  IsPlaying = false;
  if (HasLoaded)
  mySound.stop();
}

function next() {
  if (CurrentAlbum!=Selected) {
    playtrack(0);
  } else
  if (CurrentTrack+1==Releases[Selected].tracks.length) {
    selectalbum((Selected+1)%Releases.length, 0);
    butt2.toFront();
    butt1.toFront();
    playtrack(0);
  } else
  playtrack(CurrentTrack+1);
}

window.onload = function () {
  R = Raphael(document.getElementById("albumview"), 570, 384);

                    butt1 = R.set(),
                    butt2 = R.set();
                butt1.push(R.circle(24.833, 26.917, 26.667).attr({stroke: "#ccc", fill: "#fff", "fill-opacity": .4, "stroke-width": 2}),
                           R.path("M 12 25 L 27 14 L 27 36 z").attr({stroke: "none", fill: "#000"}),
                           R.circle(24.833, 26.917, 26.667).attr({fill: "#fff", opacity: 0}));
                butt2.push(R.circle(24.833, 26.917, 26.667).attr({stroke: "#ccc", fill: "#fff", "fill-opacity": .4, "stroke-width": 2}),
                           R.path("M 36 25 L 19 14 L 19 36 z").attr({stroke: "none", fill: "#000"}),
                           R.circle(24.833, 26.917, 26.667).attr({fill: "#fff", opacity: 0}));
                butt1.translate(10, 325);
                butt2.translate(510, 325);

                butt1[2].click(function () {
                    selectalbum((Selected+Releases.length-1)%Releases.length, 1);
                    butt2.toFront();
                    butt1.toFront();
                }).mouseover(function () {
                    butt1[1].animate({fill: "#0c0"}, 300);
                }).mouseout(function () {
                    butt1[1].stop().attr({fill: "#000"});
                });
                butt2[2].click(function () {
                    selectalbum((Selected+1)%Releases.length, 0);
                    butt2.toFront();
                    butt1.toFront();
                }).mouseover(function () {
                    butt2[1].animate({fill: "#0c0"}, 300);
                }).mouseout(function () {
                    butt2[1].stop().attr({fill: "#000"});
                });

  setTimeout(function () {R.safari();});
  checkload();
}

function setposition(event){
  if (!event)
    event = window.event;
  if (!event)
    alert(":(");
  obj = document.getElementById("playbar");
  xPos = event.clientX+11;
  while(obj) {
    if(obj.offsetLeft)
      xPos -= obj.offsetLeft;
    obj = obj.parentNode;
  }
  if ((xPos>0)&&(xPos<310)) {
    var f=mySound.duration*((xPos-1)/308);
    mySound.setPosition(f);
  }

} 

function setvolume(event){
  if (!event)
    event = window.event;
  if (!event)
    alert(":(");
  obj = document.getElementById("volumebar");
 xPos = event.clientX+15;
  while(obj) {
    if(obj.offsetLeft)
      xPos -= obj.offsetLeft;
    obj = obj.parentNode;
  }
  if ((xPos>0)&&(xPos<104)){
    var f=100*((xPos-1)/101.5);
   document.getElementById('volume').style.width = Math.round(f)+'%';
   
   mySound.setVolume(f);
   Volume = f;
  }
}
