$(document).ready(function()
{
	// This "frmPayPal" form is located in the "add_founds.php" file.
	if ($('#frmPayPal').length)
	{
		$('#btnPayPal').click(function()
			{
				var oObjects = $('#imgLoader, #btnPayPal');
				var sURL	= 'ajax_generatePaypalTransaction.php';
				var sParam	= 'userid=' + $('#UserID').val() + '&s=' + $('#SessionID').val();
				var oAmount = $('#amount');
				var oMessage = $('#Messages');

				if ( oAmount.length == 0 ||
					(oAmount.length && isNaN(parseInt(oAmount.val()))) ||
					(oAmount.length && parseInt(oAmount.val()) <= 0) )
				{
					alert($('#AJAX_PAYPAL_AMOUNT_ERROR').val());
					return false;
				}

				showMessage(oMessage, $('#AJAX_PAYPAL_WAIT').val(), false, true);
				oObjects.toggle();

				$.ajax({
						  type:		"POST",
						  url:		sURL,
						  dataType: "html",
						  data:		sParam,
						  success:	addFoundsSettings,
						  error:	addFoundsSettingsError
						})

				return false;
			});
	}

	// This "frmPayPalSubscription" form is located in the "include/suscribe_banner.php" file.
	if ($('#frmPayPalSubscription').length)
	{
		$('#btnPayPalSubscription').click(function()
			{
				var oObjects = $('#imgLoaderSubscription, #btnPayPalSubscription');
				var sURL	= 'ajax_generatePaypalTransaction.php';
				var sParam	= 'userid=' + $('#UserID').val() + '&s=' + $('#SessionID').val();
				var oAmount = $('#amountSubscription');
				var oMessage = $('#MessagesSubscription');

				if ( oAmount.length == 0 ||
					(oAmount.length && isNaN(parseInt(oAmount.val()))) ||
					(oAmount.length && parseInt(oAmount.val()) <= 0) )
				{
					alert($('#AJAX_PAYPAL_AMOUNT_ERROR').val());
					return false;
				}

				showMessage(oMessage, $('#AJAX_PAYPAL_WAIT').val(), false, true);
				oObjects.toggle();

				$.ajax({
						  type:		"POST",
						  url:		sURL,
						  dataType: "html",
						  data:		sParam,
						  success:	addSubscriptionResult,
						  error:	addSubscriptionResultError
						})

				return false;
			});
	}
});

/*********************************************************************
Function: addFoundsSettings
	Handles the server response
Parameters:
	responseText -> Text returned by the server.
	statusText	 -> Status menssage.
Returns:
**********************************************************************/
function addFoundsSettings(responseText, statusText)
{
    try
    {
		var oMessage = $('#Messages');
		var oObjects = $('#imgLoader, #Messages, #MessagesSubscription, #btnPayPal, #btnPayPalSubscription');

		oObjects.toggle();
		oMessage.text('');

		if (responseText.substring(0,1) == '[' || responseText.substring(0,1) == '{' )
		{
			// Genero el resultado objeto
	    	var oResult = eval('(' + responseText + ')');

	    	if (oResult.Ok)
	    	{
	    		oObjects.hide();
	    		showMessage(oMessage, oResult.Message, false, true);
	    		$('#paypalCustom').val(oResult.Data.Custom);
	    		$('#paypalBusiness').val(oResult.Data.Business);
	    		$('#frmPayPal').submit();
	    	}
	    	else
	    	{
	    		showMessage(oMessage, oResult.Message, true, (oResult.HTML != true), (oResult.HTML != true));
	    		if (oResult.Message != '')
	    			alert(oResult.Message);
	    	}
		}
		else
		{
			alert($('#AJAX_ERROR_OCCURRED').val());
			alert('responseText:\n' + responseText);
	    	showMessage(oMessage, responseText, true, false);
		}
    }
	catch(e)
	{
    	showMessage(oMessage, e.message + '\n' + responseText, true, false);
		alert('Error(addFoundsSettings): ' + e.message);
	}
}

/*********************************************************************
Function: addFoundsSettingsError
	Handles the server response, when errors occurr.
Parameters:
	oHTML		-> XMLHttpRequest Object.
	statusText	-> Error menssage.
	oError		-> Error object.
Returns:
**********************************************************************/
function addFoundsSettingsError(oHTML, statusText, oError)
{
	try
	{
		var oMessage = $('#Messages');
		var sError = '';
		var oObjects = $('#imgLoader, #Messages, #btnPayPal');

		oObjects.toggle();
		oMessage.text('');

		if (oHTML.status == 0)
		{
	    	showMessage(oMessage, $('#AJAX_ERROR_CANCELED').val(), true, false);
	    	return;
		}

		if (oHTML.status == 401)
		{
			location = 'logout.php';
			return false;
		}

		if (oHTML.responseText.substring(0,1) == '[' || oHTML.responseText.substring(0,1) == '{' )
		{

			var oRegistro = eval('(' + oHTML.responseText + ')');
			if (oRegistro.Ok)
			{
				alert($('#AJAX_ERROR_NOTICE_WITH_OK').val() + ':\n\n' + oRegistro.Message);
				showMessage(oMessage, oRegistro.Message, true, false);
			}
			else
			{
				alert($('#AJAX_ERROR_NOTICE').val() + ':\n\n' + oRegistro.Message);
				showMessage(oMessage, oRegistro.Message, true, false);
			}
		}
		else
		{
			if (oError)
				sError = '\n' + oError.message + '\n';

			sError += oHTML.responseText;

			alert($('#AJAX_ERROR_OCCURRED').val() + ': ' + sError);
			showMessage(oMessage, sError, true, false);
		}

	}
	catch(oError)
	{
		alert('Error(addFoundsSettingsError):' + oError.message);
		showMessage(oMessage, oError.message + ':<br><br>' + oHTML.responseText, true, false);
	}
}

/*********************************************************************
Function: addSubscriptionResult
	Handles the server response
Parameters:
	responseText -> Text returned by the server.
	statusText	 -> Status menssage.
Returns:
**********************************************************************/
function addSubscriptionResult(responseText, statusText)
{
    try
    {
		var oMessage = $('#MessagesSubscription');
		var oObjects = $('#imgLoaderSubscription, #MessagesSubscription, #btnPayPalSubscription');

		oObjects.toggle();
		oMessage.text('');

		if (responseText.substring(0,1) == '[' || responseText.substring(0,1) == '{' )
		{
			// Genero el resultado objeto
	    	var oResult = eval('(' + responseText + ')');

	    	if (oResult.Ok)
	    	{
	    		oObjects.hide();
	    		showMessage(oMessage, oResult.Message, false, true);
	    		$('#paypalCustomSubscription').val(oResult.Data.Custom);
	    		$('#paypalBusinessSubscription').val(oResult.Data.Business);
	    		$('#frmPayPalSubscription').submit();
	    	}
	    	else
	    	{
	    		showMessage(oMessage, oResult.Message, true, (oResult.HTML != true), (oResult.HTML != true));
	    		if (oResult.Message != '')
	    			alert(oResult.Message);
	    	}
		}
		else
		{
			alert($('#AJAX_ERROR_OCCURRED').val());
			alert('responseText:\n' + responseText);
	    	showMessage(oMessage, responseText, true, false);
		}
    }
	catch(e)
	{
    	showMessage(oMessage, e.message + '\n' + responseText, true, false);
		alert('Error(addSubscriptionResult): ' + e.message);
	}
}

/*********************************************************************
Function: addSubscriptionResultError
	Handles the server response, when errors occurr.
Parameters:
	oHTML		-> XMLHttpRequest Object.
	statusText	-> Error menssage.
	oError		-> Error object.
Returns:
**********************************************************************/
function addSubscriptionResultError(oHTML, statusText, oError)
{
	try
	{
		var oMessage = $('#MessagesSubscription');
		var sError = '';
		var oObjects = $('#imgLoaderSubscription, #MessagesSubscription, #btnPayPalSubscription');

		oObjects.toggle();
		oMessage.text('');

		if (oHTML.status == 0)
		{
	    	showMessage(oMessage, $('#AJAX_ERROR_CANCELED').val(), true, false);
	    	return;
		}

		if (oHTML.status == 401)
		{
			location = 'logout.php';
			return false;
		}

		if (oHTML.responseText.substring(0,1) == '[' || oHTML.responseText.substring(0,1) == '{' )
		{

			var oRegistro = eval('(' + oHTML.responseText + ')');
			if (oRegistro.Ok)
			{
				alert($('#AJAX_ERROR_NOTICE_WITH_OK').val() + ':\n\n' + oRegistro.Message);
				showMessage(oMessage, oRegistro.Message, true, false);
			}
			else
			{
				alert($('#AJAX_ERROR_NOTICE').val() + ':\n\n' + oRegistro.Message);
				showMessage(oMessage, oRegistro.Message, true, false);
			}
		}
		else
		{
			if (oError)
				sError = '\n' + oError.message + '\n';

			sError += oHTML.responseText;

			alert($('#AJAX_ERROR_OCCURRED').val() + ': ' + sError);
			showMessage(oMessage, sError, true, false);
		}

	}
	catch(oError)
	{
		alert('Error(addSubscriptionResultError):' + oError.message);
		showMessage(oMessage, oError.message + ':<br><br>' + oHTML.responseText, true, false);
	}
}
