function DisplayFieldErrors(msg, id_map)
{
	if(msg.field_errors != null)
	{
			errors = '<ul class="error-message">';
		for(var elementName in msg.field_errors)
		{

			for(var errorName in msg.field_errors[elementName])
			{
    			errors = errors + '<li>' + msg.field_errors[elementName][errorName] + '</li>';
			}
			
		}
                errors = errors + '</ul>';
		$('#form-errors .top').append(errors);
	}
}

function fbHandler(msg)
{
	if(msg.user_nav)
	{
		$('#user-nav').html(msg.user_nav);
	}
	else if(msg.next_form)
	{
		$("body").append(msg.next_form);
                $("#" + msg.form_id).jqm();
		$("#" + msg.form_id).jqmShow();
	}
}

$.fn.fixBroken = function(){
return this.each(function(){
var tag = $(this);
var alt_img = '/images/bucket/avatar.gif';
tag.error(function() { // this adds the onerror event to images
tag.attr("src",alt_img); // change the src attribute of the image
return true;
} );
});
};

$(document).ready(function() {

    //Close the error message box on click
    $('#form-errors').live('click', function(){
       $("#form-errors").remove();
    });

    // Handle clicking Login link.
    $("#authenticate").jqm();
	$("#user-nav .sign-in a").live('click', function()
	{
        $("#authenticate").jqmShow();
        $("#authenticate input[type=text], #authenticate input[type=password]").val('');
    	$("#login_email").focus();
    	return false;
	});
	
    // Handle clicking Facebook login/register link.
	$("#fb-message a").live('click', function()
	{
		$("#authenticate").jqmHide();

    	// Open Facebook login window.
    	fbwindow = window.open('https://graph.facebook.com/oauth/authorize?client_id=' + fbAppId + '&redirect_uri=http%3A//' + location.host + '/getnav&type=web_server&display=popup&scope=email',
            					'facebookwin', 'height=300,width=500');

    	return false;
	});
	
    // Handle clicking Facebook finish registration button.
	$("#facebook_step2_submit").live('click', function()
	{
    	reg_url = "/getnav";

		$.ajax(
		{
			type: "GET",
			url: reg_url,
			data: {
						user_email: $('#facebook_user_email').val(),
						username: $('#facebook_username').val(),
						postal: $('#facebook_postal').val(),
						uid: $('#facebook_uid').val(),
						fbaction: "confirm"
				  },
			dataType: 'json',
			success: function(msg)
			{
    			if(msg.result == 'success')
    			{
	    			$('#user-nav').html(msg.user_nav);
    	        	$("#facebook-registration").jqmHide();
    			}
    			else
    			{
        			$('#facebook_step2_form').prepend('<div id="form-errors"><div class="top">'+msg.message+'</div></div>');

        			/* This is the part that gets the list of errors for each form field
        			 * and displays it on the page.  Probably should be its own function.
        			 */
        			var id_map = {"user_email":"facebook_user_email",
          				  		  "username":"facebook_username",
                				  "postal":"facebook_postal"
                    			 };

        			DisplayFieldErrors(msg, id_map);
    			}
			}
		});

		return false;
	});
	
    // Handle clicking Register link.  Is there a way to use jQuery to combine
    // this with the Login link code above?
	$("#user-nav .register a").live('click', function()
	{
    	$("#authenticate").jqmShow();
    	$("#register_user_email").focus();
    	return false;
	});
	
    // Handle clicking Close button in the authentication popup.
	$("#authenticate h4 a").live('click', function()
	{
    	$("#authenticate").jqmHide();
    	return false;
	});
	
    // Handle clicking Submit to login.
	$("#login_submit").click(function()
	{
            if ($("#form-errors").length > 0){
                $("#form-errors").remove();
            }
		$.ajax(
		{
			type: "GET",
			url: ssl_server + "login",
			data: {
    				login: $('#login_email').val(),
    				password: $('#login_password').val()
				  },
			dataType: 'jsonp',
			success: function(msg)
			{
    			if(msg.result == 'success')
    			{
	    			$('#user-nav').html(msg.user_nav);
	            	$("#authenticate").jqmHide();
    			}
    			else
    			{
        			$('#loginform').prepend('<div id="form-errors"><div class="top">'+msg.message+'</div></div>');

        			/* This is the part that gets the list of errors for each form field
        			 * and displays it on the page.  Probably should be its own function.
        			 */
        			var id_map = {"login":"login_email", "password":"login_password"};

        			DisplayFieldErrors(msg, id_map);
    			}
			}
		});

		return false;
	});

    // Handle clicking Logout link.
	$("#user-nav .sign-out a").live('click', function()
	{
		$.ajax(
		{
			type: "GET",
			url: "/logout",	// Logout URL is per-vertical.
			dataType: 'json',
			success: function(msg)
			{
                                $("#message_success").live('click', function(){
                                    $("#message_success").jqmHide();
                                    location.reload();
                                });
                                
                                $('#user-nav').html(msg.user_nav);
			}
		});

		return false;
	});

    // Handle clicking Register button.
	$("#register_submit").click(function()
	{
        if ($("#form-errors").length > 0){
           $("#form-errors").remove();
        }
        reg_type = 'user';
    	reg_url = ssl_server + "register/" + reg_type;

		$.ajax(
		{
			type: "GET",
			url: reg_url,
			data: {
					user_email: $('#register_user_email').val(),
					username: $('#register_username').val(),
					password: $('#register_password').val(),
					retype: $('#register_retype').val(),
					address: $('#register_address').val(),
					city: $('#register_city').val(),
					state: $('#register_state').val(),
					postal: $('#register_postal').val(),
					host: location.hostname
				  },
			dataType: 'jsonp',
			success: function(msg)
			{
    			if(msg.result == 'success')
    			{
    	        	$("#authenticate").jqmHide();

    	        	if(msg.next_form)
    	        	{
        	        	$("body").append(msg.next_form);
                                $("#" + msg.form_id).jqm();
        	        	$("#" + msg.form_id).jqmShow();
    	        	}
    	        	else
    	        	{
                                $("body").append('<div id="message_success" class="jqmWindow"><h4><span>Please Confirm Your Email Address</span><a class="close jqmClose"><span>close this window</span></a></h4></div>');
                                $("#message_success").jqm();
                                $("#message_success").append(msg.message);
                                $("#message_success").jqmShow();
    	        	}
    			}
    			else
    			{
        			$('#registerform').prepend('<div id="form-errors"><div class="top">'+msg.message+'</div></div>');

        			/* This is the part that gets the list of errors for each form field
        			 * and displays it on the page.  Probably should be its own function.
        			 */
        			var id_map = {"user_email":"register_user_email",
          				  		  "username":"register_username",
                				  "password":"register_password",
                    			  "retype":"register_retype",
                    			  "postal":"register_postal"
                    			 };

        			DisplayFieldErrors(msg, id_map);
    			}
			}
		});

		return false;
	});

    // Handle clicking Register button.
	$("#register_step2_submit").live('click', function()
	{
    	reg_url = ssl_server + "register/business/step2";

		$.ajax(
		{
			type: "GET",
			url: reg_url,
			data: {
					business_name: $('#register_step2_business_name').val(),
					phone: $('#register_step2_phone').val(),
					address: $('#register_step2_address').val(),
					address2: $('#register_step2_address2').val(),
					city: $('#register_step2_city').val(),
					state: $('#register_step2_state').val(),
					postal: $('#register_step2_postal').val(),
					website: $('#register_step2_website').val(),
					terms: $('input:checkbox[id=register_step2_terms]:checked').val()
				  },
			dataType: 'jsonp',
			success: function(msg)
			{
    			if(msg.result == 'success')
    			{
    	        	$("#confirm-registration").jqmHide();
    	        	alert(msg.message);
    			}
    			else
    			{
        			$('#registerform').prepend(msg.message);

        			/* This is the part that gets the list of errors for each form field
        			 * and displays it on the page.  Probably should be its own function.
        			 */
        			var id_map = {"business_name":"register_step2_business_name",
          				  		  "phone":"register_step2_phone",
                				  "address":"register_step2_address",
                				  "address2":"register_step2_address2",
                				  "city":"register_step2_city",
                				  "state":"register_step2_state",
                    			  "postal":"register_postal",
                    			  "website":"register_step2_website",
                    			  "terms":"register_step2_terms"
                    			 };

        			DisplayFieldErrors(msg, id_map);
    			}
			}
		});

		return false;
	});

$('.avatar img').fixBroken();
$('#recommended-companies img').fixBroken();
});


