function Playlist(pl, audio) { this.pl = pl; this.audio = audio; this.current = null; this.get = function(path) { var li = this.pl.getElementsByTagName('li')[0]; while(li) { var a = li.getElementsByTagName('a')[0]; if(a.ml.path == path) return li; li = li.nextElementSibling; } return null; } this.add = function(ml) { var a = document.createElement('a'); a.setAttribute('href', '#'); a.appendChild(document.createTextNode(ml.path)); a.ml = ml; var li = document.createElement('li'); var pl = this; a.onclick = function() { while(li.previousElementSibling) li.previousElementSibling.parentElement.removeChild(li.previousElementSibling); a.setAttribute('class', 'playing'); pl.current = li; ml.play(); var nextsong = li.nextElementSibling; log('nextsong: ' + nextsong); if(nextsong) { var nexta = nextsong.getElementsByTagName('a')[0]; log('nexta: ' + nexta); log('next ml: ' + nexta.ml); nexta.ml.recode(); } return false; } log(a.click); li.appendChild(a); this.pl.appendChild(li); if(this.pl.firstChild == li || (this.current && this.current.nextElementSibling == li)) ml.recode(); } this.next = function() { log('next'); log('this: ' + this); log('current: ' + this.current); if(this.current) { var old = this.current; log('old: ' + old); this.current = this.current.nextElementSibling; old.parentElement.removeChild(old); } if(this.current) { var a = this.current.getElementsByTagName('a')[0]; a.onclick(); } } }