

var admin = {	
	
	build_ui: function() {
		
		//get around binding issues
		self = this;
		
		if($('div.divder').inDOM()){
			$('body').css('background-color', '#eee');						 
		}
		
		$('input[type="checkbox"]').ezMark();

		$("#pl_changer").change(function() {
			window.location = $("#pl_changer option:selected").val();
		})

		$('.cancel_form').live('click', function () {
			window.location = '/admin';
		});
		
		/*
		Drops
		*/
		$('#drop_tabs').tabs({ cookie: { expires: 30 } });
		
		//set up the people tile wrapping
		if($('.drop_manager').inDOM()){

			//on load we set the intial clears
			self.set_drop_clearer();
			
			//on resize we set the reset clears
			$(window).wresize( function() {
				self.set_drop_clearer();
			});
		}
		
		//set the hover events for edit
		$(".drop_wrapper").hover(
			function () {
				$(this).find(".option_menu").fadeIn(100);
			}, 
			function () {
				$(this).find(".option_menu").fadeOut(100);
			}
		);
		
		$('.edit_button').on('click', function () {
			$(this).parents('.drop_wrapper').find('.drag_handle').hide();
			$(this).parents('.option_menu').siblings('.change_photo').fadeIn();												  
			$(this).parents('.option_menu').siblings('.displayed_info').slideUp(function () {
						$(this).siblings('.edit_info').slideDown('slow');											  
			});
			return false;
		});
		
		$('.edit_drop_cancel').on('click', function () {
			$(this).parents('.drop_wrapper').find('.drag_handle').show();
			$(this).parents('.edit_info').slideUp('slow', function () {
						$(this).siblings('.change_photo').fadeOut();	
						$(this).find('.drop_edit_form')[0].reset();
						$(this).siblings('.displayed_info').slideDown();											  
			});
			return false;
		});

		$('.edit_drop_submit').on('click', function(e) {
			
			var $form = $(this).parents('.drop_edit_form');
			var formdata = $form.serialize();
			
			$.ajax({
				url:    '/admin/drop_edit_save',
				data:   formdata,
				type:	'POST',
				dataType: 'json',
				beforeSend: function(){
							$form.find('.edit_drop_submit').html("Saving");					  				  
						},
				success: function(data){
							$form.find('.edit_drop_submit').html("Save");
							$form.parent('.edit_info').siblings('.displayed_info').find('div.artist').html(data.artist);
							$form.parent('.edit_info').siblings('.displayed_info').find('div.song').html(data.song);
							$form.parent('.edit_info').slideUp('slow', function () {
									$(this).siblings('.change_photo').fadeOut();
									$(this).parents('.drop_wrapper').find('.drag_handle').show();
									$(this).siblings('.displayed_info').slideDown(function () {
											self.update_all_playlists(data.drop_id);				
									});											  
							});
						}
			});
			
			return false;
		});
		
		$('.delete_button').on('click', function() {
			alert('Are you sure you want to delete this song?\nIt might be associated with a playlist.');
			
			var delete_drop_id = $(this).attr('rel');
			
			$.ajax({
				url:    '/admin/delete_drop/' + delete_drop_id,
				type:	'POST',

				success: function(){
						$('.drop_id_' + delete_drop_id).fadeOut(function(){										
								$(this).remove();
								self.set_drop_clearer();										
						});
				}
			});
			
			return false;
		});
		
		//sort
		$('.drop_manager').not('.kill_sort').sortable({ 
			placeholder: 'drop_zone',
			forcePlaceholderSize : true,
			revert		: 100,
			handle		: '.drag_handle',
			tolerance	: 'pointer',
			
			change		: function() {
				self.set_drop_clearer();
			},
			
			stop		: function(e, ui) { 
				self.set_drop_clearer();
				
				pl = $(this).sortable("serialize", {key:'playlist[]'});
				
				playlist_id = $(this).attr('rel');
				
				$.ajax({
					url : "/admin/sort_playlist/",
					type : "POST",
					data : pl + '&playlist_id=' + playlist_id,
					success: function() {
						ui.item.effect("highlight");
					}
				});
			}
		});
		
		//image realted stuff
		$('#edit_image_content input:radio').prop("checked", false);
		$('#add_upload_it').prop("checked", true);
		$('#add_default_it').prop("checked", false);
		$('#do_default_it, #do_crop_it').hide();
		
		$('.edit_image_cancel').on('click', function () {
			window.location = '/admin';
			return false;
		});
		
		$('.save_crop').live('click', function(){
			$('#crop_image_form').submit();
		});
		
		$("img.default_image").on('click', function(){
			$("img.default_image").removeClass("active");
			$(this).addClass("active");
			$('#default_image_name').val($(this).attr('rel'));
			$('#edited_image').attr( 'src', '/application/uploads/photos/' + $(this).attr('rel') );
			return false;
		});
		
		$("img.add_default_image").on('click', function(){
			$("img.add_default_image").removeClass("active");
			$(this).addClass("active");
			$('#do_default_it').show();
			$('#default_image_name').val( $(this).attr('rel') );
			$('#new_image').attr( 'src', '/application/uploads/photos/' + $(this).attr('rel') );
			return false;
		});
		
		$('#add_upload_it').on('click', function(){
			$('#do_default_it').hide();
			$('#do_upload_it').show();
			$('#new_image').css('margin-top', '100px');
		});
		
		$('#add_default_it').on('click', function(){
			$('#do_default_it').show();
			$('#do_upload_it').hide();
			$('#new_image').css('margin-top', '140px');
		});
		
		// Edit Image
		$('#edit_image')
			.fileupload({
				url: '/admin/upload_edit_image',
				autoUpload: true
			})
			.bind('fileuploadalways', function (e, data) {								
				if(data.result[0].status == 'exact') {
					window.location = '/admin';
				} else {
					window.location = '/admin/edit_image/' + data.result[0].drop_id;
				}
			});
	
		// Open download dialogs via iframes, to prevent aborting current uploads:
		$('#edit_image .files a:not([target^=_blank])').live('click', function (e) {
			e.preventDefault();
			$('<iframe style="display:none;"></iframe>')
				.prop('src', this.href)
				.appendTo('body');
		});


		// Cancel New Drop
		$('#add_drop_cancel').on('click', function () {
			window.location = '/admin';
		});
		
		

		// Add New Drop
		$('#add_drop_submit').on('click', function () {
			$(this).html('Saving…');
			$('#add_drop').submit();
		});

		// Add New Image
		$('#add_image')
			.fileupload({
				url: '/admin/upload_add_image',
				autoUpload: true
			})
			.bind('fileuploadalways', function (e, data) {								
				$('#new_image').attr( 'src', '/application/uploads/photos/' + data.result[0].name );
				$('#new_image').attr( 'rel', data.result[0].name);
				$('#default_image_name').val( data.result[0].name);
				$('#add_drop_id').val(data.result[0].drop_id);
				$('#add_image_drop_id').val(data.result[0].drop_id);
			});
	
		// Open download dialogs via iframes, to prevent aborting current uploads:
		$('#add_image .files a:not([target^=_blank])').live('click', function (e) {
			e.preventDefault();
			$('<iframe style="display:none;"></iframe>')
				.prop('src', this.href)
				.appendTo('body');
		});

		// Add New MP3
		$('#add_drop')
			.fileupload({
				url: '/admin/upload_add_mp3',
				autoUpload: true
			})
			.bind('fileuploadalways', function (e, data) {								
				$('#mp3_name').html(data.result[0].name);	
				$('#add_drop_id').val(data.result[0].drop_id);
				$('#add_image_drop_id').val(data.result[0].drop_id);
			});
	
		// Open download dialogs via iframes, to prevent aborting current uploads:
		$('#add_drop .files a:not([target^=_blank])').live('click', function (e) {
			e.preventDefault();
			$('<iframe style="display:none;"></iframe>')
				.prop('src', this.href)
				.appendTo('body');
		});

		// Edit MP3
		$('.drop_edit_form')
			.fileupload({
				url: '/admin/upload_edit_mp3',
				autoUpload: true
			})
			.bind('fileuploadalways', function (e, data) {								
				$('.mp3_update_'+data.result[0].drop_id).html(data.result[0].name);
			});
	
		// Open download dialogs via iframes, to prevent aborting current uploads:
		$('.drop_edit_form .files a:not([target^=_blank])').live('click', function (e) {
			e.preventDefault();
			$('<iframe style="display:none;"></iframe>')
				.prop('src', this.href)
				.appendTo('body');
		});
	},

	//set the clearer variable
	set_drop_clearer: function() {  
		sw = $(window).width();
		
		if(sw > 0 && sw <= 560){
			clearer = 0;
		} else if (sw > 560 && sw <= 800) {
			clearer = 1;
		} else if (sw > 800 && sw <= 1030) {
			clearer = 2;
		} else if (sw > 1030 && sw <= 1260) {
			clearer = 3;
		} else if (sw > 1260 && sw <= 1490) {
			clearer = 4;
		} else if (sw > 1490 && sw <= 1720) {
			clearer = 5;
		} else if (sw > 1720 && sw <= 1970) {
			clearer = 6;
		} else {
			clearer = 7;
		}
		
		//removes all the clears
		$('.drop_manager li').removeClass('just_clear');
		
		//add them back in
		$('.drop_manager li:nth-child('+clearer+'n+1)').pause(200).addClass('just_clear');
	},
	
	//update all the playlists after a change in data
	update_all_playlists: function(drop_id) {  
		
		$.get('/admin/get_drop_clone/'+drop_id, function(data) {
  			$drop_clone = $(data);
			
			$.getJSON('/admin/get_playlists/' + drop_id, function(data) {
				$.each(data, function(k,v) {
	
					//if the song isn't in the playlist make sure it's not shown.
					if(v == "inactive"){
						if($('#song_' + k + '_' + drop_id).inDOM()){
							$('#song_' + k + '_' + drop_id).fadeOut(function () {
								$(this).remove();
								self.set_drop_clearer();
							});
						}
					} else { //if it is in the playlist make sure it's there and updated
						if($('#song_' + k + '_' + drop_id).inDOM()){
							//refresh it
							$('#song_' + k + '_' + drop_id).html($drop_clone.html());
						} else {
							//add a new one if it's not there
							$drop_clone.clone().attr('id', 'song_' + k + '_' + drop_id).prependTo('#playlist_'+k);
						}
						
						self.set_drop_clearer();
						
						//reset the mp3 file id
						$('#song_' + k + '_' + drop_id).find('.file_edit_mp3').attr('id','file_edit_mp3_' + k + '_' + drop_id);
						self.setup_mp3_uploadify('#file_edit_mp3_' + k + '_' + drop_id);
						
						//unbind the hover events for edit
						$(".drop_wrapper").unbind('mouseenter mouseleave');
						//reset the hover events for edit
						$(".drop_wrapper").hover(
							function () {
								$(this).find(".option_menu").fadeIn(100);
							}, 
							function () {
								$(this).find(".option_menu").fadeOut(100);
							}
						);
					}
				});
			});			
		});	
	}
};

$(window).load(function(){

	if($('.crop_smaller').inDOM()){
		var jcrop_api = $.Jcrop('.crop_smaller', {
			aspectRatio: 1680 / 1050,
			boxWidth: 800,
			onChange: function(c) { 
				$('#x').val(c.x);
				$('#y').val(c.y);
				$('#w').val(c.w);
				$('#h').val(c.h);
			},
			onSelect: function(c) { 
				$('#x').val(c.x);
				$('#y').val(c.y);
				$('#w').val(c.w);
				$('#h').val(c.h);
			}											
		});
		jcrop_api.release();
		jcrop_api.disable();
		
	} else if ($('.crop_larger').inDOM()) {
		var jcrop_api = $.Jcrop('.crop_larger', {
			aspectRatio: 1680 / 1050,
			minSize: [1680, 1050],
			boxWidth: 800,
			onChange: function(c) { 
				$('#x').val(c.x);
				$('#y').val(c.y);;
				$('#w').val(c.w);
				$('#h').val(c.h);
			},
			onSelect: function(c) { 
				$('#x').val(c.x);
				$('#y').val(c.y);
				$('#w').val(c.w);
				$('#h').val(c.h);
			}											
		});
		jcrop_api.release();
		jcrop_api.disable();
	}

	$('#crop_it').live('click', function(){
		jcrop_api.enable();
		$('#do_crop_it').show();
		$('#do_upload_it').hide();
		$('#do_default_it').hide();
	});
	
	$('#upload_it').live('click', function(){
		if(jcrop_api){
			jcrop_api.release();
			jcrop_api.disable();
		}
		$('#do_crop_it').hide();
		$('#do_upload_it').show();
		$('#do_default_it').hide();
	});
	
	$('#default_it').live('click', function(){
		if(jcrop_api){
			jcrop_api.release();
			jcrop_api.disable();
		}
		$('#do_crop_it').hide();
		$('#do_upload_it').hide();
		$('#do_default_it').show();
	});
	
	$('.cancel_image_action').live('click', function(){
		$('#do_crop_it').hide();
		$('#do_upload_it').hide();
		$('#do_default_it').hide();
		$('#edit_image_content input:radio').prop("checked", false);
		$("img.default_image").removeClass("active");
		$('#edited_image').attr( 'src', '/application/uploads/photos/' + $('#edited_image').attr('rel') );
		if(jcrop_api){
			jcrop_api.release();
			jcrop_api.disable();
		}
		return false;
	});		
});


var drop = {	
	
	build_ui: function() {
	
		var drop_active = false;
		var start_pos = 0;
		drop_id = 0;
		hash_method = '';
		twitter_msg = '';
		current_drop_id = 0;
		_self = this;
		
		// get any hash passed in
		var drop_hash = window.location.hash;
		
		// process the hash
		if(drop_hash){
			// get the method
			var drop_hash_arr = drop_hash.split('/');
			hash_method = drop_hash_arr[0].substr(1);
			
			//get the passed in Drop ID
			drop_id = (isNaN(parseInt(drop_hash_arr[1]))) ? 0 : parseInt(drop_hash_arr[1]);
			
			//rewrite the hash for cleanup
			window.location.hash = "#" + hash_method + '/' + drop_id;
		}
	
		// if we're looking for a drop then search the json object
		if(hash_method == "drop"){	
			// is the passed in drop ID active - if so set the start json pos
			$.each(bands_json, function(i,band_info){
				if(band_info.id == drop_id){
					drop_active = true;
					start_pos = parseInt(i);
					document.title = "The Drop {" + band_info.artist + "}";
				}
			});  
		}
	
		// do the AJAX lookup if the passed in ID is not active
		if(!drop_active && (drop_id != 0)){
			// AJAX lookup
			$.ajax({
				url:    '/get_drop/' + drop_id,
				async: false,
				success: function(responseText){
					
					if(responseText != 'not found'){	
						// add the data to the json object
						response_json = $.parseJSON(responseText);
						bands_json_temp = [{}];
						bands_json_temp[0] = response_json;
						
						$.each(bands_json, function(i,band_info){
							bands_json_temp[i + 1] = band_info;
						});
						
						bands_json = bands_json_temp;
						
						delete bands_json_temp;
						
						document.title = $('#logo a').html() + " {" + bands_json[start_pos].artist + "}";
						
					} else {
						window.location.hash = '#drop/' + bands_json[start_pos].id;
					}
				}
			});
		}
		
		// get the highest json position (0 based object)
		json_top = bands_json.length - 1;
		
		// set up the prev/next UI & data
		$('#prev_button').attr('rel',start_pos - 1);
		$('#next_button').attr('rel',start_pos + 1);
		if(start_pos == 0){
			$('#prev_button').hide();
		} else if(start_pos == json_top){
			$('#next_button').hide();
		}
		
		//set the drop_id on the like button
		$('#like_button').attr('rel',bands_json[start_pos].id);
		
		//determine like
		if(bands_json[start_pos].liked){
			$('#like_button').addClass('liked');
		} else {
			$('#like_button').removeClass('liked');
		}
		
		// set the starting bg image
		$(document).bgStretcher({
			images: ['/application/uploads/photos/'+bands_json[start_pos].image], 
			imageWidth: 1680, 
			imageHeight: 1050
		});
		
		// set up the starting music player
		var jpPlayTime = $("#jplayer_play_time");
		var jpTotalTime = $("#jplayer_total_time");
		
		$("#jquery_jplayer").jPlayer({
			ready: function() {
    			$(this).jPlayer( "setMedia", { mp3: '/application/uploads/mp3/'+bands_json[start_pos].mp3}).jPlayer("play");
			},
			volume: .5,
			swfPath: '/application/stage/flash/',
			cssSelectorAncestor: '.jp-single-player',
			ended: function (event) {
				var next_drop = $('#next_button').attr('rel');
			
				if(next_drop <= json_top){
					_self.update_data(next_drop);
				} else if (next_drop > json_top) {
					_self.update_data(0);
				}
			}
		});
		
		// add in the rest of the starting page data
		$('#artist_data h3').html(bands_json[start_pos].artist + ' - ' + bands_json[start_pos].song_name);
		
		if(bands_json[start_pos].website){
			$('#web_button').attr('href', bands_json[start_pos].website).css("visibility", "visible");
		} else {
			$('#web_button').css("visibility", "hidden");
		}
		
		if(bands_json[start_pos].buy){
			$('#buy_button').attr('href', bands_json[start_pos].buy).css("visibility", "visible");
		} else {
			$('#buy_button').css("visibility", "hidden");
		}
		
		$('#twitter_share').attr('href', 'http://twitter.com/home?status=Listening to "' + bands_json[start_pos].artist + ' - ' + bands_json[start_pos].song_name + '" on ' + $('#logo a').html() + ': ' + bands_json[start_pos].bitly);
		$('#facebook_share').attr('href', 'http://www.facebook.com/sharer.php?u=' + bands_json[start_pos].bitly + '&t="' + bands_json[start_pos].artist + ' - ' + bands_json[start_pos].song_name + '" on ' + $('#logo a').html());
		$.get('/start/'+bands_json[start_pos].id);
		current_drop_id = bands_json[start_pos].id;
		
		// UI Tweaks
		$(".jp-interface").css({'opacity':'0.8'});
		$(".action_button").css({'opacity':'0.5'});
		$('input[type="checkbox"]').ezMark();		
		
		// Set up the event listeners
		$('#next_button').on('click', function () {
			_self.update_data($(this).attr('rel'));
			return false;
		});
		
		$('#prev_button').on('click', function () {
			_self.update_data($(this).attr('rel'));
			return false;
		});
		
		$('.do_like').on('click', function() {
			//cache
			$like = $(this);
			
			//update the remote db
			$.get('/swap_like/'+$like.attr('rel'));
			
			if($like.hasClass('liked')){
				$like.removeClass('liked');
				bands_json[$like.data('pos')].liked = false;
			} else {
				$like.addClass('liked');
				bands_json[$like.data('pos')].liked = true;		
			}
			return false;
		}).data('pos', 0 );
		
		
		$('.show_login').on('click', function() {
			center = $(window).width()/2;
			offset = $('#account_wrapper').width()/2;
			$('#submit_signup').hide();
			$('#submit_reminder').hide();
			$('#login_instead').hide();
			$('#email, #password, #password2').val('');
			if( $(this).attr('id') == 'like_button' ) {
				$('#no_like').show();
			}
			$('#overlay').fadeTo('fast', 0.8);
			$('#account_wrapper').css("left", center - offset).fadeIn('fast');
			return false;
		});
		
		$('.show_signup').on('click', function() {
			$('#password_again').show();
			$('#email, #password, #password2').val('');
			$('#remember').hide();
			$('#account_wrapper h3').html('Sign Up');
			$('#submit_login').hide();
			$('#submit_reminder').hide();
			$('#submit_signup').show();
			$('#signup_instead').hide();
			$('#forgot_password').hide();
			$('#login_instead').show();
			center = $(window).width()/2;
			offset = $('#account_wrapper').width()/2;
			$('#overlay').fadeTo('fast', 0.8);
			$('#account_wrapper').css("left", center - offset).fadeIn('fast');
			return false;
		});
		
		$('.morph_signup').on('click', function() {
			
			$('.warning').slideUp(400, function(){
								
								$('#account_wrapper h3').html('Sign Up');
								$('#email').siblings('label').html('Email');
								$('#password').siblings('label').html('Password');
								$('#password2').siblings('label').html('Password Again');
								$('#password, #password2').val('');
								$('li.error').removeClass('error');
								$('#signup_instead').hide();
								$('#login_instead').show();
								$('#forgot_password').fadeOut();				

								$('#password_again').pause('600').slideDown();
								$('#remember').fadeOut();
								
								$('#submit_login, #submit_reminder').fadeOut(400, function(){
									$('#submit_signup').fadeIn();					 
								});				
							});

			return false;
		});

		$('.morph_forgot').on('click', function() {
			
			$('.warning').slideUp(400, function(){
								
								$('#account_wrapper h3').html('Forgot Password');
								$('#email').siblings('label').html('Email');
								$('#password').siblings('label').html('Password');
								$('#password2').siblings('label').html('Password Again');
								$('#password, #password2').val('');
								$('li.error').removeClass('error');
								$('#signup_instead').hide();
								$('#login_instead').show();
								$('#forgot_password').fadeOut();					

								$('#password_again, #password_wrapper').pause('600').slideUp();
								$('#remember').fadeOut();
								
								$('#submit_login, #submit_signup').fadeOut(400, function(){
									$('#submit_reminder').fadeIn();					 
								});				
							});

			return false;
		});

		$('.morph_login').on('click', function() {
			$('#email').siblings('label').html('Email');
			$('#password').siblings('label').html('Password');
			$('#password2').siblings('label').html('Password Again');
			$('#password, #password2').val('');
			$('li.error').removeClass('error');
			$('#account_wrapper h3').html('Log In');
			$('.warning').slideUp();
			$('#signup_instead').show();
			$('#login_instead').hide();						
			$('#password_again').slideUp();
			$('#remember').fadeIn();
			$('#forgot_password').fadeIn();
			$('#password_wrapper').slideDown();
			$('#submit_signup, #submit_reminder').fadeOut(400, function(){
				$('#submit_login').fadeIn();					 
			});				

			return false;
		});

		$('#cancel_login').on('click', function () {
			_self.reset_login_form();
			return false;
		});

		$('#submit_signup').on('click', function () {
			form_submit = true;
			$('li.error').removeClass('error');
			$('#email').siblings('label').html('Email');
			//check email field
			email = $('#email').val();
			if (email == null||email == "") {
				$('#email_wrapper').addClass('error');
				$('#email').siblings('label').html('Please enter a valid email');
				form_submit = false;
			} else { //make sure we have a valid email
				if(!is_email(email)){
					form_submit = false;
					$('#email_wrapper').addClass('error');
					$('#email').siblings('label').html('Please enter a valid email');
				}
			}
			
			$pass1 = $('#password').val();
			$pass2 = $('#password2').val();
			
			if($pass1 != $pass2){
				form_submit = false;
				$('#password_wrapper, #password_again').addClass('error');
				$('#password, #password2').siblings('label').html('Please make sure the passwords match');
			} 
			
			if(form_submit){
				$('#submit_signup').html('Signing Up...');
				$form =	$(this).parents('#account_form');
				var formdata = $form.serialize();
				$.ajax({
					url:    '/account/do_user_signup',
					data:   formdata,
					dataType: 'json',
					type:	'POST',
					success: function(data){
								if(data.success){
									$('#logged_in_account').show();
									$('#logged_out_account').hide();
									$('#login_instead').hide();
									$('#like_button').removeClass('show_login').addClass('do_like');
									$('#submit_signup').html('Sign Up').hide();
									$('#cancel_login').html('OK');
									
									$('#account_wrapper h3').html('Thank You');
									$('#email_wrapper, #password_wrapper, #password_again').slideUp();
									$('#thank_you').slideDown();

								} else {
									
									
									
									$('#no_like').hide();
									$('#email_used').slideDown();
									$('#password').val('');
									$('#password2').val('');
									$('#submit_signup').html('Sign Up');
								}
							}
				});			
			}
		});
		
		$('#submit_login').on('click', function () {
			form_submit = true;
			$('li.error').removeClass('error');
			$('#email').siblings('label').html('Email');
			//check email field
			email = $('#email').val();
			if (email == null||email == "") {
				$('#email_wrapper').addClass('error');
				$('#email').siblings('label').html('Please enter a valid email');
				form_submit = false;
			} else { //make sure we have a valid email
				if(!is_email(email)){
					form_submit = false;
					$('#email_wrapper').addClass('error');
					$('#email').siblings('label').html('Please enter a valid email');
				}
			}
			
			if(form_submit){
				$('#submit_login').html('Logging In...');
				$form =	$(this).parents('#account_form');
				var formdata = $form.serialize();
				$.ajax({
					url:    '/account/do_user_login',
					data:   formdata,
					dataType: 'json',
					type:	'POST',
					success: function(data){
								if(data.success){
									likes_array = data.likes;
									
									cur_drop = $('#like_button').attr('rel');
									
									//is the current drop liked
									if($.inArray(cur_drop,likes_array) > -1) {
										$('#like_button').addClass('liked');
									}

									//rebuild the likes in the json data
									$.each(bands_json, function(index, value) { 
										if($.inArray(value.id,likes_array) > -1) {
											value.liked = true;
										}
									});
									
									if(data.is_admin){
										$('#logged_in_account a:first').after(' | <a href = "/admin">Admin</a>');
									}
									
									_self.reset_login_form();
									$('#logged_in_account').show();
									$('#logged_out_account').hide();
									$('#like_button').removeClass('show_login').addClass('do_like');
								} else {
									$('#no_like').hide();
									$('#no_access').slideDown();
									$('#password').val('');
									$('#submit_login').html('Log In');
								}
							}
				});
			}
		});
		
		$('#submit_reminder').on('click', function () {
			form_submit = true;
			$('li.error').removeClass('error');
			$('#email').siblings('label').html('Email');
			//check email field
			email = $('#email').val();
			if (email == null||email == "") {
				$('#email_wrapper').addClass('error');
				$('#email').siblings('label').html('Please enter a valid email');
				form_submit = false;
			} else { //make sure we have a valid email
				if(!is_email(email)){
					form_submit = false;
					$('#email_wrapper').addClass('error');
					$('#email').siblings('label').html('Please enter a valid email');
				}
			}

			if(form_submit){
				$('#submit_reminder').html('Sending...');
				$form =	$(this).parents('#account_form');
				var formdata = $form.serialize();
				$.ajax({
					url:    '/account/password_reminder',
					data:   formdata,
					dataType: 'json',
					type:	'POST',
					success: function(data){
								if(data.success){
									$('#logged_in_account').show();
									$('#logged_out_account').hide();
									$('#login_instead').hide();
									$('#like_button').removeClass('show_login').addClass('do_like');
									$('#submit_reminder').html('Send Reminder').hide();
									$('#cancel_login').html('OK');
									
									$('#account_wrapper h3').html('Password Sent');
									$('#email_wrapper, #password_wrapper, #password_again').slideUp();
									$('#thank_you').slideDown();
								} else {
									$('#no_email').slideDown();
									$('#email').val('');
									$('#submit_reminder').html('Send Reminder');
								}
							}
				});			
			}
		});

		$('#jp-shuffle').on('click', function () {
			
			if( $('#jp-shuffle').data('active') ){
				$('.shuffle').hide();
				$('.play_all').hide();
				$('#jp-shuffle').data('active', false).removeClass('jp-shuffle_active');
				$(this).parents('.jp-interface').removeClass('jp-wide');
			} else {
				$('.shuffle').show();
				$('.play_all').hide();
				$('#jp-shuffle').data('active', true).addClass('jp-shuffle_active');
				$('#jp-play_all').data('active', false).removeClass('jp-play_all_active');
				$(this).parents('.jp-interface').addClass('jp-wide');
			}
			
			return false;
		});	
		
		$('#jp-play_all').on('click', function () {

			if( $('#jp-play_all').data('active') ){
				$('.shuffle').hide();
				$('.play_all').hide();
				$('#jp-play_all').data('active', false).removeClass('jp-play_all_active');
				$(this).parents('.jp-interface').removeClass('jp-wide');
			} else {
				$('.shuffle').hide();
				$('.play_all').show();
				$('#jp-play_all').data('active', true).addClass('jp-play_all_active');
				$('#jp-shuffle').data('active', false).removeClass('jp-shuffle_active');
				$(this).parents('.jp-interface').addClass('jp-wide');
			}
			
			return false;
		});		
	},
	
	reset_login_form : function (){
			$('#email, #password, #password2').val('');
			$('#remember_me').prop({checked: false});
			$('.ez-checked').removeClass('ez-checked');
			$('#email').siblings('label').html('Email');
			$('#password').siblings('label').html('Password');
			$('#password2').siblings('label').html('Password Again');
			$('#cancel_login').html('Cancel');
			$('li.error').removeClass('error');
			$('.warning').slideUp();
			$('#submit_login').html('Log In').show();
			$('#submit_signup').html('Sign Up').hide();
			$('#submit_reminder').html('Send Reminder').hide();
			$('#signup_instead, #remember, #forgot_password, #password').show();
			$('#login_instead, #password_again').hide();
			$('#account_wrapper h3').html('Log In');
			$('#account_wrapper').fadeOut('fast');
			$('#overlay').fadeTo('fast', 0).hide();
	},
	
	unload_drop_window : function() {
		$(window).unload( function () { 
			var current_time = $("#jquery_jplayer").data("jPlayer").status.currentTime;
			current_time = current_time / 1000;
			current_time = Math.ceil(current_time);
			
			$.get('played/'+current_drop_id+'/'+current_time);
		});
	},
	
	update_data : function(pos) {
		$("#more_content").slideUp();
		
		// set up a var with the current object pos
		var json_data = bands_json[pos];
		
		//get the time at which we changed songs
		var current_time = $("#jquery_jplayer").data("jPlayer").status.currentTime;
		current_time = Math.ceil(current_time);
		
		//get the current id before we change it
		cache_drop_id = current_drop_id;
		
		// set a new bg image
		$('.bgs-current img').attr('src', '/application/uploads/photos/'+json_data.image);
		
		// change the player song
		$("#jquery_jplayer")
			.jPlayer( "clearMedia" )
			.jPlayer( "setMedia", { mp3: '/application/uploads/mp3/'+json_data.mp3}).jPlayer("play");
		
		// cache
		var prev_button = $('#prev_button');
		var next_button = $('#next_button');
		
		// set the hash for linking
		window.location.hash = "#drop/" + json_data.id;
		
		//reset the next/prev data & UI
			prev_button.show().attr('rel',parseInt(pos) - 1);
			next_button.show().attr('rel',parseInt(pos) + 1);
		if(pos == 0){
			prev_button.hide();
		} else if(pos == json_top){
			next_button.hide();
		}
		
		// change the rest of the page data
		$('#artist_data h3').html(json_data.artist + ' - ' + json_data.song_name);
		
		//set the drop_id on the like button
		$('#like_button').attr('rel',json_data.id).data('pos',pos);
		
		//determine like
		if(json_data.liked){
			$('#like_button').addClass('liked');
		} else {
			$('#like_button').removeClass('liked');
		}
		
		if(json_data.website){
			$('#web_button').attr('href', json_data.website).css("visibility", "visible");
		} else {
			$('#web_button').css("visibility", "hidden");
		}
		
		if(json_data.buy){
			$('#buy_button').attr('href', json_data.buy).css("visibility", "visible");
		} else {
			$('#buy_button').css("visibility", "hidden");
		}
		
		$('#twitter_share').attr('href', 'http://twitter.com/home?status=Listening to "' + json_data.artist + ' - ' + json_data.song_name + '" on ' + $('#logo a').html() + ': ' + json_data.bitly);
		$('#facebook_share').attr('href', 'http://www.facebook.com/sharer.php?u=' + json_data.bitly + '&t="' + json_data.artist + ' - ' + json_data.song_name + '" on ' + $('#logo a').html());
		document.title = $('#logo a').html() + " {" + json_data.artist + "}";
		current_drop_id = json_data.id;
		$.get('/start/'+json_data.id);
		$.get('/played/'+cache_drop_id+'/'+current_time);
	}
};

var account = {	
		
	build_ui: function() {


		$('.morph_forgot').on('click', function() {
			
			$('.warning').slideUp(400, function(){
								
								$('#login_form h3').html('Forgot Password');
								$('#email').siblings('label').html('Email');
								$('#password').siblings('label').html('Password');
								$('#password').val('');
								$('li.error').removeClass('error');
								$('#login_instead').show();
								$('#forgot_password').fadeOut();					

								$('#password_wrapper').pause('600').slideUp();
								$('#remember').fadeOut();
								
								$('#submit_login').fadeOut(400, function(){
									$('#submit_reminder').fadeIn();					 
								});				
							});

			return false;
		});
		
		$('.morph_login').on('click', function() {
			$('#email').siblings('label').html('Email');
			$('#password').siblings('label').html('Password');
			$('#password').val('');
			$('li.error').removeClass('error');
			$('#login_form h3').html('Log In');
			$('.warning').slideUp();
			$('#login_instead').hide();						
			$('#remember').fadeIn();
			$('#forgot_password').fadeIn();
			$('#password_wrapper').slideDown();
			$('#submit_reminder').fadeOut(400, function(){
				$('#submit_login').fadeIn();					 
			});				

			return false;
		});

		$('#submit_login').on('click', function () {
			form_submit = true;
			$('li.error').removeClass('error');
			$('#email').siblings('label').html('Email');
			//check email field
			email = $('#email').val();
			if (email == null||email == "") {
				$('#email_wrapper').addClass('error');
				$('#email').siblings('label').html('Please enter a valid email');
				form_submit = false;
			} else { //make sure we have a valid email
				if(!is_email(email)){
					form_submit = false;
					$('#email_wrapper').addClass('error');
					$('#email').siblings('label').html('Please enter a valid email');
				}
			}
			
			if(form_submit){
				$('#submit_login').html('Logging In...');
				$form =	$(this).parents('#login_form');
				var formdata = $form.serialize();
				$.ajax({
					url:    '/account/do_hard_login',
					data:   formdata,
					dataType: 'json',
					type:	'POST',
					success: function(data){
								if(data.success){
									location.href = data.url;
								} else {
									$('#no_access').slideDown();
									$('#password').val('');
									$('#submit_login').html('Log In');
								}
							}
				});
			}
		});
		
		$('#submit_reminder').on('click',function () {
			form_submit = true;
			$('li.error').removeClass('error');
			$('#email').siblings('label').html('Email');
			$('.warning').slideUp();
			//check email field
			email = $('#email').val();
			if (email == null||email == "") {
				$('#email_wrapper').addClass('error');
				$('#email').siblings('label').html('Please enter a valid email');
				form_submit = false;
			} else { //make sure we have a valid email
				if(!is_email(email)){
					form_submit = false;
					$('#email_wrapper').addClass('error');
					$('#email').siblings('label').html('Please enter a valid email');
				}
			}
			
			if(form_submit){
				$('#submit_reminder').html('Sending...');
				$form =	$(this).parents('#login_form');
				var formdata = $form.serialize();
				$.ajax({
					url:    '/account/password_reminder',
					data:   formdata,
					dataType: 'json',
					type:	'POST',
					success: function(data){
								if(data.success){
									$('#reminder_sent').slideDown();
									$('#email').siblings('label').html('Email');
									$('#password').siblings('label').html('Password');
									$('#password').val('');
									$('li.error').removeClass('error');
									$('#account_wrapper h3').html('Log In');
									$('.warning').slideUp();
									$('#login_instead').hide();						
									$('#remember').fadeIn();
									$('#forgot_password').fadeIn();
									$('#password_wrapper').slideDown();
									$('#submit_reminder').fadeOut(400, function(){
										$('#submit_login').fadeIn();					 
									});										
									
									
								} else {
									$('#no_reminder').slideDown();
									$('#password').val('');
									$('#submit_reminder').html('Send Reminder');
								}
							}
				});
			}
		});
		
	}
}
