var state		= "";

jQuery(function($) {

	validate( 'form-register2', 'form-error2', '_realtor', '' );
	validate( 'form-register', 'form-error', '', '' );
	validate( 'member_form2', 'form-error2', '', 'realtor_edit' );
	validate( 'member_form', 'form-error', '', 'edit' );

	//	State selector field change
	$("div#state_fields select").change( function(event) {
	
		var cat_id	= $(this).attr("value");
		
		var abbr	= $(this).children("option:selected").attr("id");
		
		$("input#state_field").val( abbr );
		
		$("div#metros_fields select").empty();
		
		$("div#metros_fields select").load( "/members/ajax-metro-menu", { parent_id: cat_id } );
	});

	//	Admin state selector field change
	$("div#state_fields_realtor select").change( function(event) {
	
		var cat_id	= $(this).attr("value");
		
		var abbr	= $(this).children("option:selected").attr("id");
		
		$("input#state_field_realtor").val( abbr );
		
		$("div#metros_fields_realtor select").empty();
		
		$("div#metros_fields_realtor select").load( "/members/ajax-metro-menu", { parent_id: cat_id } );
	});
});

function validate ( form, error, realtor, edit )
{
	var fields		= new Array( 'first', 'last' );
	var phones		= new Array();
	
	if ( edit == "" )
	{
		fields.push( 'password' );
		fields.push( 'password_confirm' );
	}

	if ( realtor == "_realtor" || edit == "realtor_edit" )
	{
		fields.push( 'phone_work' );
		fields.push( 'company' );
		fields.push( 'city' );
		fields.push( 'zip' );
		phones.push( 'phone_work' );
		phones.push( 'phone_mobile' );
	}

	//	-------------------------------------
	//	Validate reg form
	//	-------------------------------------
	
	$("form#" + form).submit( function(event)
	{
		//	-------------------------------------
		//	Reset
		//	-------------------------------------
		
		var msg	= "";
		
		$("form#" + form + " input").parent("span").removeClass("error");
		$("form#" + form + " select").parent("span").removeClass("error");
		
		//	-------------------------------------
		//	Validate email
		//	-------------------------------------
		
		var email	= $("form#" + form + " input[@name='email']").val();
		
		if ( /^[^\s,;]+@([^\s.,;]+\.)+[\w-]{2,}$/i.test(email) == false )
		{
			$("form#" + form + " input[@name='email']").parent("span").addClass("error");
			
			msg	+=	"<li>Please provide a valid email address.</li>"; 
		}
		
		//	-------------------------------------
		//	Validate phone
		//	-------------------------------------
		
		var phone			= '';
		
		var invalid_phone	= false;
		
		$.each( phones, function(i,n)
		{
			if ( $("form#" + form + " input[@name='" + n + "']").val() != '' )
			{
				phone	= $("form#" + form + " input[@name='" + n + "']").val();
		
				if ( /^[1-9]\d{2}\-?\d{3}\-\d{4}$/.test(phone) == false )
				{
					$("form#" + form + " input[@name='" + n + "']").parent("span").addClass("error");
					
					invalid_phone	= true;
				}
			}		
		});
		
		if ( invalid_phone )
		{
			msg	+=	"<li>Please format phone numbers as xxx-xxx-xxxx.</li>"; 
		}
		
		//	-------------------------------------
		//	Check password match
		//	-------------------------------------
		
		if ( $("form#" + form + " input[@name='password']").val() != $("form#" + form + " input[@name='password_confirm']").val() )
		{
			$("form#" + form + " input[@name='password']").parent("span").addClass("error");
			
			$("form#" + form + " input[@name='password_confirm']").parent("span").addClass("error");
			
			msg	+= "<li>Please make sure that your password confirmation matches your password.</li>";
		}
		
		//	-------------------------------------
		//	Check empties
		//	-------------------------------------
	
		var empty	= false;
		
		$.each( fields, function(i,n)
		{			
			if ( $("form#" + form + " input[@name='" + n + "']").val() == '' )
			{
				empty	= true;
				
				$("form#" + form + " input[@name='" + n + "']").parent("span").addClass("error");
			}		
		});
		
		if ( empty === true )
		{
			msg	+= "<li>Please complete the required fields.</li>";
		}
		
		//	-------------------------------------
		//	Check url
		//	-------------------------------------
		
		if ( realtor == '_realtor' || edit == "realtor_edit" )
		{	
			var empty	= false;
			
			$.each( ['url'], function(i,n)
			{
				var val = $("form#" + form + " input[@name='" + n + "']").val();
				
				if ( val == 'http://' || val == '' )
				{
					empty	= true;
					
					$("form#" + form + " input[@name='" + n + "']").parent("span").addClass("error");
				}		
			});
			
			if ( empty === true )
			{
				msg	+= "<li>Please complete the Web Site URL field.</li>";
			}
		}
		
		//	-------------------------------------
		//	State
		//	-------------------------------------
		
		if ( $("form#" + form + " div#state_fields" + realtor + " select").attr("value") == "select" )
		{
			$("form#" + form + " div#state_fields" + realtor + " select").parent("span").addClass("error");
			
			msg	+=	"<li>Please select a state.</li>"; 
		}
		
		//	-------------------------------------
		//	Metro
		//	-------------------------------------
		
		if ( $("form#" + form + " div#metros_fields" + realtor + " select").attr("value") == "select" )
		{
			$("form#" + form + " div#metros_fields" + realtor + " select").parent("span").addClass("error");
			
			msg	+=	"<li>Please select a metro area.</li>"; 
		}
		
		//	-------------------------------------
		//	Terms
		//	-------------------------------------
		
		if ( edit == "" && $("form#" + form + " input[@name='accept_terms']")[0].checked == false )
		{
			$("form#" + form + " input[@name='accept_terms']").parent("span").addClass("error");
			
			msg	+=	"<li>Your acceptance of the Terms of Service is required.</li>"; 
		}
		
		//	-------------------------------------
		//	Show message
		//	-------------------------------------
		
		if ( msg != '' )
		{
			$("div#" + error + "").show();
			$("div#" + error + " ul").empty();
			$("div#" + error + " ul").append( msg );
		
			return false;
		}
	});
}
