jQuery(document).ready(function () { new MobileForm(jQuery("#mobile_form")[0]); });
function MobileForm(mobile_form)
{
	var REMOTE_PAGE        = "/php/obamamobile-proxy.php";
	var _error_message     = jQuery(mobile_form).find(".error_message");
	var _error_message_p   = _error_message.find("p");
	var _error_message_img = _error_message.find("img");

	jQuery(mobile_form).bind("submit", _check_form); 

	function _check_form()
	{
		var errors = _get_errors();
		if (errors)
			_error_message_p.html(errors);
		else
		{
			_error_message_p.css("display", "none");
			_error_message_img.css("display", "block");

			var number = _clean_number($(mobile_form).find("input[name=phone]")[0].value);
			$.get(REMOTE_PAGE, { keyword: "go1", phone: number }, _handle_response);
		}

		return false;
	}

	function _handle_response(data)
	{
		var errors = _get_ajax_errors(data);
		if (errors)
		{
			_error_message_img.css("display", "none");
			_error_message_p.html(errors).css("display", "block");
		}
		else
			$(mobile_form)[0].submit();		
	}

	function _clean_number(number)
	{
		return number.replace(/[() _.-]/g, "");
	}

	function _get_errors()
	{
		var errors = [];
		if ($(mobile_form).find("input[name=phone]")[0].value == "")
		 	errors.push("Please enter a phone number");
		
		if ($(mobile_form).find("input[name=zip]")[0].value == "")
			errors.push("Please enter a zip code");
		 
		return errors.length > 0 ? _build_error_list(errors) : null;
	}
	
	function _build_error_list(errors)
	{
		var list = document.createElement("ul");
		$(errors).each(function (index, error) {
			var li = document.createElement("li");
			li.innerHTML = error;
			list.appendChild(li);
		});
		
		return list;
	}

	function _get_ajax_errors(data)
	{
		if (data.match("Success."))
			return null;

		if (data.match("The MIN must be a 10 digit number."))
			return "Mobile phone number must be 10 digits.";

		return "Sorry, service unavailable; please try again later.";
	}
}

