var Upload = {
    lock : false,
    init : function() {

       $(document.body).append('<div id="dd-container"><span id="dd-status">Drop a file here.</span></div>');
       $('#dd-container').hide()
	   .css({position:'fixed',top:0,left:0,backgroundColor:'#666',opacity:0.7});
       $('#dd-status').css({color:'#fff',fontSize:'16pt',fontFamily:'menlo,courier,monospace',position:'fixed',width:'100%',left:0,textAlign:'center'});
       $(window).resize(function(){
			    $('#dd-container').css({width:$(window).width()+'px',height:$(window).height()+'px'});
			    $('#dd-status').css({top:($(window).height()-$('#dd-status').height())/2+'px'});
			}).resize();
       $("html")
	   .bind('dragenter',function(e){
		     $('#dd-container').show();
		     e.preventDefault(); e.stopPropagation();
		     return false;
		 })
	   .bind('dragover', function(e){
		     $('#dd-container').show();
		     e.preventDefault(); e.stopPropagation();
		     return false;
		 });
       $('#dd-container')
	    .bind('dragleave',function(e){
		      if(Upload.lock == false)
			  $('#dd-container').hide();
		      e.preventDefault(); e.stopPropagation();
		      return false;
		 })
	   .bind('drop', function(e){
		     e.preventDefault(); e.stopPropagation();
		     // lock!
		     if(Upload.lock) return false;
		     Upload.lock =true;
		     //
		     var files = e.originalEvent.dataTransfer.files;
		     if(files.length <= 0) {
			 $('#dd-container').hide();
			 Upload.lock = false;
			 return;
		     }
		     var i = 0;
		     var loadnext = function() {
			 var reader = new FileReader();
			 reader.onloadend = onloadend;
			 reader.readAsDataURL(files[i]);
			 $('#dd-status').text('extracting '+(i+1)+'/'+files.length+'files...');
		     };
		     var onloadend = function(e) {
			 $('#dd-status').text('uploading '+(i+1)+'/'+files.length+'files...');
			 $.post('/api/upload',$.param({file:e.target.result},true),
				function(data) {
				    // done
				    i++;
				    if(i == files.length) location.href='/';
				    else loadnext();
				});
		     };
		     loadnext();
		     return false;
		 });
   }
};
$(Upload.init);

