Scanner={ songsFound:0, songsScanned:0, songsChecked:0, startTime:null, endTime:null, stopScanning:false, currentIndex:-1, songs:[], findSongs:function(ready){ $.getJSON(OC.linkTo('media','ajax/api.php')+'?action=find_music',function(songs){ Scanner.songsFound=songs.length; Scanner.currentIndex=-1 if(ready){ ready(songs) } }); }, scanFile:function(path,ready){ path=encodeURIComponent(path); $.getJSON(OC.linkTo('media','ajax/api.php')+'?action=get_path_info&path='+path,function(song){ Scanner.songsChecked++; if(ready){ ready(song); } if(song){//do this after the ready call so we dont hold up the next ajax call var artistId=song.song_artist; Scanner.songsScanned++; $('#scan span.songCount').text(Scanner.songsScanned); var progress=(Scanner.songsChecked/Scanner.songsFound)*100; $('#scanprogressbar').progressbar('value',progress) Collection.addSong(song); } }); }, scanCollection:function(ready){ $('#scanprogressbar').progressbar({ value:0, }); Scanner.songsChecked=0; Scanner.songsScanned=0; Scanner.startTime=new Date().getTime()/1000; Scanner.findSongs(function(songs){ Scanner.songs=songs; Scanner.start(); }); }, stop:function(){ Scanner.stopScanning=true; }, start:function(ready){ Scanner.stopScanning=false; var scanSong=function(){ Scanner.currentIndex++; if(!Scanner.stopScanning && Scanner.currentIndex