
/**
 * @name checkNumbers
 * @desc enables/disables - hides/shows form elements based on whether
 *	the card number and cvn form fields are complete
 */
function checkNumbers()
{
	var number = $( "CardQueryCreditCardNumber" );
	var cvn = $( "CardQueryCreditCardCvn" );

	if ( $( "balance" ) ) // balance page
	{
		if ( number.value.length == 16 && cvn.value.length == 3 )
		{
			$( "submit-button" ).removeAttribute( "disabled" );
			$( "submit-button" ).removeClassName( "disabled" );
		}
		else
		{
			$( "submit-button" ).setAttribute( "disabled", true );
			$( "submit-button" ).addClassName( "disabled" );
		}
		return;
	}

	if ( number.value.length == 16 && cvn.value.length == 3 )
	{
		$( "submit-card" ).removeAttribute( "disabled" );
		$( "submit-card" ).removeClassName( "disabled" );
	}
	else
	{
		$( "submit-card" ).setAttribute( "disabled", true );
		$( "submit-card" ).addClassName( "disabled" );
		$( "submit-card" ).show();
		$( "card-submission" ).show();
		// hide all messages
		$( "card-already-active-message" ).hide();
		$( "card-not-valid" ).hide();
		$( "card-activation-failed" ).hide();
		// reset the activation field/button
		$( "activation-code-required" ).hide();
		$( "CardQueryActivationCode" ).value = "";
		$( "activate-submit-form" ).hide();
		$( "submit-button" ).setAttribute( "disabled", true );
		$( "submit-button" ).addClassName( "disabled", true );
	}
}

/**
 * @name checkCode
 * @desc enables/disables the submit button if an activation code is required
 */
function checkCode()
{
	var code = $( "CardQueryActivationCode" );
	if ( code.value.length == 4 )
	{
		$( "submit-button" ).removeAttribute( "disabled" );
		$( "submit-button" ).removeClassName( "disabled" );
	}
	else
	{
		$( "submit-button" ).setAttribute( "disabled", true );
		$( "submit-button" ).addClassName( "disabled" );
	}
}

function checkRequiredRegistration()
{
	var number = $( "CardQueryCreditCardNumber" );
	var success = null;
	
	new Ajax.Request( "/cards/ajax_requires_registration",
	{
		method: "post",
		asynchronous: false,
		parameters: { "credit_card_number": number.value},
		onSuccess: function( transport )
		{
			var response = transport.responseText;
			
			if( response.match( /^1/ ) )
			{
				success = true;
			}
			else
			{
				success = false;
			}
		},
		onCreate : function(requester, request)
		{
			$( "spinner" ).show();
		},
		onComplete : function(requester, request)
		{
			$( "spinner" ).hide();
		}
	});
	
	return success;
}

/**
 * @name checkCardStatus
 * @desc checks whether a card:
 *	- exists
 *	- is already activated
 *	- requires an activation code to be activated
 */
function checkCardStatus( number, page )
{
	$( "submit-card" ).hide();
	$( "card-already-active-message" ).hide();
	$( "card-not-valid" ).hide();
	$( "activation-code-required" ).hide();
	$( "activate-submit-form" ).hide();
	$( "card-activation-failed" ).hide();

	var number = $( "CardQueryCreditCardNumber" );
	var cvn = $( "CardQueryCreditCardCvn" );
	var page = $( "register" ) ? "register" : "activate";

	new Ajax.Request( "/cards/ajax_card_active",
	{
		method: "post",
		parameters: { "credit_card_number": number.value, "credit_card_cvn": cvn.value },
		onSuccess: function( transport )
		{
			var response = transport.responseText;
                        
			// response \d|\d, first is activation status, second is activation required
			
			//They need to register before we can activate them
			if ( response.match( /^2/ ) )
			{	
				if(page == "activate")
				{
					show_register_popup($("CardQueryCreditCardNumber").value);
				}
				else if(page == "register")
				{
					window.location = '/cards/register/r:1';
				}
			}
			else if ( response.match( /^1/ ) )
			{
				// card is already activated
				$( "card-already-active-message" ).show();
				if ( page == "register" )
				{
					$( "submit-button" ).setAttribute( "value", "Register Card" );
					$( "submit-button" ).removeAttribute( "disabled" );
					$( "submit-button" ).removeClassName( "disabled" );
					$( "activate-submit-form" ).show();
				}
			}
			else if ( response.match( /^\d\|1/ ) )
			{
				// card is not activated and activation code is required
				if ( page == "register" )
				{
					$( "submit-button" ).setAttribute( "value", "Activate & Register Card" );
				}
				$( "card-submission" ).hide();
				$( "activation-code-required" ).show();
				$( "activate-submit-form" ).show();
				$( "CardQueryActivationCode" ).focus();
			}
			else if ( response.match( /^\d\|0/ ) )
			{
				// activation was attempted but failed
				$( "card-activation-failed" ).show();
				$( "CardQueryCreditCardNumber" ).focus();
			}
			else
			{
				// card not recognized
				$( "card-not-valid" ).show();
				$( "CardQueryCreditCardNumber" ).focus();
			}
		},
		onCreate : function(requester, request)
		{
			$( "spinner" ).show();
		},
		onComplete : function(requester, request)
		{
			$( "spinner" ).hide();
		}
	});
}


