
function reload_top_songs() {
	
	var dt = new Date();
	while ((new Date()) - dt <= 500) { /* Do nothing */ }
	
	
	load_top_songs(1000);

}

// This function grabs the X top-rated songs from the database and shoves them in a table
// (could do a replay of the log every hour/day to get positions? for graphing?)

function load_top_songs(number) {
	
	
	$.get("/top/" + number, function(data){ 

       songs = JSON.parse(data);

	   $('#songs-body').children().remove();

       for (i in songs) {
         position = parseInt(i) +1;
         $('#songs-body').append("<tr>"
                               + "<td class='position'>" + position   + "</td>"               
                               + "<td>" + songs[i]['song_name']  + "</td>" 
                               + "<td>" + songs[i].artist + "</td>"
                               + "<td>" + songs[i].total_votes + "</td>"
                               + "<td>" + "<img src='arrow_up.png' class='up_vote' id='up_" + songs[i].song_id+"'>"+ "</td>"
							   + "<td>" + "<img src='arrow_down.png' class='down_vote' id='down_" + songs[i].song_id+"'>"+ "</td>"							
                               +"</tr>");
       }
     })
}

function setup() {
	
	// Set up the handler to load more/fewer songs depending on the setting
	
	//$('#top_x_songs').bind('change', function(e){
	//	load_top_songs(15);
	//});
	
	// Bind to the up/down classes for up or down voting a song
	
	$('.up_vote').live('click', function(e){

      song_id = this.id.substr(3);
	  add_message("VOTING UP!")
	
      $.get("/vote/"+ song_id +"/up", function(data){
			message = JSON.parse(data);
			if (!message.message.match(/Voting.*/)) {
				add_message(message.message);
			}
		reload_top_songs();
       });
      });

      $('.down_vote').live('click', function(e){

        song_id = this.id.substr(5);
		add_message("VOTING DOWN!")
        $.get("/vote/"+ song_id +"/down", function(data){ 
         	message = JSON.parse(data);
			if (!message.message.match(/Voting/)) {
				add_message(message.message);
			}
		  reload_top_songs();
        });
      });  


	// load the song list!

	reload_top_songs();
	
}

function init_artists_songs() {
	window.songs_list = "";
	window.artists_list = "";
	window.artist_selection = "";
	window.song_selection = "";
	window.artist_autocomplete = false;
	window.artist_list = "";
	

	
}

// Update the artists and song arrays

function update_artists_songs() {
	
	 $.get("/artists_hash", function(data) { artist_list = JSON.parse(data);});

	 $.get("/songs", function(data){ songs_list = JSON.parse(data);});
	
	 $.get("/artists", function(data) {
     	artists_lists = JSON.parse(data);
     $("#artists").autocomplete(artists_lists, {
     
     formatItem: function(row,i,max) {
       return row.name;
     },
     
     formatResult: function(row) {
     			return row.name;
     }
     
     
     }).result(function(event, item){
       	artist_selection = item;
	   	$("#artist_sel").attr('artist_id', item.id);
	   	$("#artist_sel").attr('artist_name', item.name);
	 	artist_autocomplete = true;
     });
});
}

// Add a new artist, returning the name/id so that artist_selection can be set for voting up/down

function add_new_artist(new_artist) {

	$.get("/add_artist", {artist: new_artist}, function(data){
		
		artist_selection = JSON.parse(data);
		
		add_message("NEW ARTIST! 50PTS!")
		
		update_artists_songs();
	});	
}

function add_new_song(new_song, up_or_down) {
	
	$.get("/add_song", {title: new_song, up: up_or_down, artist: $("#artists").val()}, function(data){
			
	song_selection = JSON.parse(data);
	
	if(song_selection['new_song']) {
		add_message("NEW SONG! 1UP!");
	} else {
		
		add_message(song_selection['message']);
		
	}
	
	artist_selection = "";
	song_selection = "";
	
	update_artists_songs();	
	reload_top_songs();
	
	// Reset the box
	
	
	$("#artists").val("");	
	$("#songs").val("");	
	$("#add_song_dialog").toggle();	
		
	
	});
	
	

	artist_autocomplete = false;


	

}

function handlers() {
	
	$("#artists").blur(function() {
		
		$("#songs").val("LOADING");
		$("#songs").attr('disabled', 'disabled');
		if($("#artists").val() == ""){
			return;
		}
		
		$.get("/get_artist_songs", {artist: $("#artists").val()}, function(data){
			 
			response = JSON.parse(data);
			if(response.new_artist) {
				$("#songs").removeAttr("disabled");
				$("#songs").val("");
				add_message("NEW ARTIST! 50PTS!");
				return;
			}

			
			
			$("#songs").autocomplete(response.songs);
			$("#songs").attr('disabled', '');
			$("#songs").val("");
			
			
			
			
		});
});

$.get("/artists", function(data) {
    artists = JSON.parse(data);


    $("#artists").autocomplete(artists, {
    
 //   formatItem: function(row,i,max) {
 //     return row.name;
 //   },
    
 //   formatResult: function(row) {
 //   			return row.name;
 //   }
    
    
    }).result(function(event, item){
   	artist_selection.id = item.id;
		artist_selection.name = item.name;
    });
    
  })
  
  
  $("#vote_up").bind('click', function(data){
	

    add_new_song($("#songs").val(),'up');
	reload_top_songs();
	
  });    

	
  $("#add_button").bind('click', function(data) { $("#add_song_dialog").toggle(); });
}

function add_message(new_text) {
	
		var screen_width = screen.width - (0.3 * screen.width);
		var screen_height = screen.height - (0.5 * screen.height);		
	
		var random_position_x = Math.floor(Math.random()*screen_width);
		var random_position_y = Math.floor(Math.random()*screen_height);


		$('#message-box').css('left', random_position_x+'px');

		$('#message-box').css('top', random_position_y+'px');

	
		$('#message-box').text(new_text);
		
		$('#message-box').fadeIn('slow', function() {
			
			$('#message-box').fadeOut(2000);
			
		});
	
}
