Chomp.init.developer = function() {
	$('form#developer_register, form#developer_login').submit(function(e) {
		e.preventDefault();
		$('input.default, textarea.default', this).val('');
		this.submit();
	});
};

Chomp.init.developer_dashboard = function() {
	$('#dev_tabs a').click(function(e){
		e.preventDefault();
		if ($(this).hasClass('apps')) {
			$('#apps').removeClass('hidden');
			$('#account').addClass('hidden');
		} else if ($(this).hasClass('account')) {
			$('#apps').addClass('hidden');
			$('#account').removeClass('hidden');
		}
		$(this).closest('ul').find('a.selected').removeClass('selected');
		$(this).addClass('selected');
	});
	$('#account form button.set, #account dd.pw a.set').click(function(e){
		e.preventDefault();
		var $form = $(this).closest('form');
		$('.set', $form).addClass('hidden');
		$('.edit', $form).removeClass('hidden');
	});
	var outstanding_account_update = false;
	$('#account form').submit(function(e){
		e.preventDefault();
		if (outstanding_account_update) {
			return;
		}
		var $form = $(this).closest('form');
		
		var formData = {
			'name': $('input[name="name"]', $form).val(),
			'email': $('input[name="email"]', $form).val(),
			'new_password': $('input[name="new_password"]', $form).val(),
			'new_password_confirm': $('input[name="new_password_confirm"]', $form).val()
		};
		
		// validation
		if (!formData.name) {
			$('.error', $form).text('Please enter a name before saving').removeClass('hidden').hide().slideDown('slow');
			return;
		} else if (!formData.email) {
			$('.error', $form).text('Please enter a valid email address').removeClass('hidden').hide().slideDown('slow');
			return;
		} else if (formData.new_password != formData.new_password_confirm) {
			$('.error', $form).text('Your password did not match. For verification purposes, please type your password in both password fields.').removeClass('hidden').hide().slideDown('slow');
			return;
		}
		
		$form.fadeTo('slow', 0.5);
		var $submit = $('input[type="submit"]', $form);
		var original_submit_val = $('input[type="submit"]', $form).val();
		$submit.val('Saving...');
		outstanding_account_update = true;
		
		$.ajax({
			url: $form.attr('action'),
			type: $form.attr('method'),
			data: formData,
			dataType: 'json',
			complete: function() {
				$form.stop().fadeTo('fast', 1);
				$submit.val(original_submit_val);
				outstanding_account_update = false;
			},
			success: function(returnJSON) {
				if (!returnJSON || returnJSON.status == 1 || returnJSON.status == '1' || returnJSON.error_message) {
					if (!returnJSON.error_message) {
						returnJSON.error_message = 'An unknown error occurred when trying to save your developer details.';
					}
					$('.error', $form).text(returnJSON.error_message).removeClass('hidden').hide().slideDown('slow');
					return;
				}
				$('.editable', $form).each(function(idx, el) {
					$('.set', this).text($('input', this).val());
				});
				$('input[type="password"]', $form).val('');
				$('#welcome_name').text($('input[name="name"]', $form).val());
				$('.edit', $form).addClass('hidden');
				$('.set', $form).removeClass('hidden');
			},
			error: function() {
				$('.error', $form).text('There was a problem talking to the Chomp servers. Please try again later.').removeClass('hidden').hide().slideDown('slow');
			}
		});
	});
	$('#account form :reset').click(function(e){
		e.preventDefault();
		var $form = $(this).closest('form');
		$('.editable', $form).each(function(idx, el) {
			$('input', this).val($('.set', this).text());
		});
		$('input[type="password"]', $form).val('');
		$('.edit', $form).addClass('hidden');
		$('.set', $form).removeClass('hidden');
	});
	$('#apps .toggle a').click(function(e){
		e.preventDefault();
		if ($(this).text() == 'more') {
			$(this).text('less').closest('tr').next('.details').removeClass('hidden');
		} else if ($(this).text() == 'less') {
			$(this).text('more').closest('tr').next('.details').addClass('hidden');
		}
	});
	$('#apps .details .referrals a.what').click(function(e){
		$('.explanation', $(this).parent()).jqm({closeClass: 'close', overlay: 0}).jqmShow();
	});
	$('#apps .secret a.show').click(function(e){
		$('.secret-popup', $(this).closest('div')).jqm({closeClass: 'close'}).jqmShow();
	});
	$('#new_application').jqm({trigger: '#apps .add button', closeClass: 'close'});
	$('.app_modal input[name="no_id"]').change(function(e){
		var $app_modal = $(this).closest('.app_modal');
		if (this.checked) {
			$('input[name="app_id"]', $app_modal).stop().fadeTo('slow', 0.25, function(){
				$(this).attr('disabled', 'disabled');
			});
		} else {
			$('input[name="app_id"]', $app_modal).stop().fadeTo('slow', 1, function(){
				$(this).removeAttr('disabled');
			});
		}
	});
	$('#edit_app').jqm({trigger: '#apps .details a.edit_app', closeClass: 'close', onShow: function(jqmCallback) {
		var $info_row = $(jqmCallback.t).closest('tr.details').prev('tr');
		$('#edit_app input[name="original_id"]').val($('td.bundle_id', $info_row).text());
		$('#edit_app input[name="bundle_id"]').val($('td.bundle_id', $info_row).text());
		var app_id = $('td.app_id', $info_row).text();
		if ($('td.app_id', $info_row).hasClass('pending')) {
			// no app ID
			$('#edit_app input[name="app_id"]').val('').stop().fadeTo(0, 0.25).attr('disabled', 'disabled');
			$('#edit_app input[name="no_id"]').get(0).checked = true;
		} else {
			$('#edit_app input[name="app_id"]').val(app_id).stop().fadeTo(0, 1).removeAttr('disabled');
			$('#edit_app input[name="no_id"]').get(0).checked = false;
		}
		$(jqmCallback.w).show();
	}});
	$('#apps .details .edit_status .submit').click(function(e) {
		$(this).closest('form').get(0).submit();
	});
};

function old_developer_onload() {
	$('form#developer_email').submit(function(e) {
		e.preventDefault();
		
		var $form = $(this);
		var $email = $('#email');
		var formData = {email:$email.val()};
		if ($email.hasClass('default')) {
			formData.email = '';
		}
		
		$form.find('p.success, p.error').addClass('hidden');
		
		$.ajax({
			url: $form.attr('action'),
			type: $form.attr('method'),
			dataType: 'json',
			data: formData,
			success: function(data) {
				if (data.status == undefined || data.status != 0) {
					// error
					var message = 'There was a problem with that email address.';
					if (data.error_message) {
						message = data.error_message;
					}
					$form.find('p.error').text(message).removeClass('hidden').hide().slideDown('slow');
				} else {
					// success
					$form.find('p.success').text('Okay! We will notify you as soon as Chomp Connect is ready for developers.').removeClass('hidden').hide().slideDown('slow');
				}
			},
			error: function() {
				$form.find('p.error').text('Uh oh! There was a problem connecting to Chomp. Please try again later.').removeClass('hidden').hide().slideDown('slow');
			}
		});
	});
	$('#developer_email p.success, #developer_email p.error').click(function() {
		$(this).slideUp('slow', function() {
			$(this).text('').addClass('hidden');
		});
	});
}
