$(function()
{
   /**
	* Hírlevél feliratkozás jQuery használatával.
	*
	* Revision: $Id: index.hirlevel.html 2010-06-02 14:58:27Z _tom $
	*/

	/**
	 * feliratkozás gomb click eseménye
	 */
	$('#submit_feliratkozas').click(function() {

		/* minden adat rendben (nevet írtak be, az e-mail cím valid) */
		if(formValidation())
		{
			/* ajax hívás indítása */
			$.ajax({
				/* összeállítja az uri-t az ajax számára, feliratkozás típusától (le,- fel) függően */
				url: setAjaxURI('subscribe'),
				/* hírlevél rendszertől kapott válasz elemzése, formátuma: "&error=3&lang=hu" */
				success: function(error) {
					/* regexp-el szétszedjük a választ, csak az 'error' kódra van szükségünk */
					var patt1 = /\d+/;
					/* tájékoztató szöveg beállítása */
					showErrorText(getStatusInfo(error.match(patt1)));
				}
			});
		}
	});

	/**
	 * leiratkozás gomb click eseménye
	 */
	$('#submit_leiratkozas').click(function() {
		/* minden adat rendben (nevet írtak be, az e-mail cím valid) */
		if(formValidation())
		{
			/* ajax hívás indítása */
			$.ajax({
				/* összeállítja az uri-t az ajax számára, feliratkozás típusától (le,- fel) függően */
				url: setAjaxURI('unsubscribe'),
				/* hírlevél rendszertől kapott válasz elemzése, formátuma: "&error=3&lang=hu" */
				success: function(error) {
					/* regexp-el szétszedjük a választ, csak az 'error' kódra van szükségünk */
					var patt1 = /\d+/;
					/* tájékoztató szöveg beállítása */
					showErrorText(getStatusInfo(error.match(patt1)));
				}
			});
		}
	});
});


/**
 * A függvény összeállítja az uri-t az ajax számára (hírlevél rendszerhívás)
 *
 * @param type String a művelet típusa: subscribe, vagy unsubscribe
 * @return uri String az előkészített uri
 */
function setAjaxURI(type)
{
	var uri = '/' + _lang + '/system/' + type + '/' + encodeURIComponent($("#nlName").val()) +'/' + $("#nlEmail").val();
	return uri;
}

/**
 * E-mail cím formátumának ellenőrézse regexp segítségével.
 *
 * @param emailAddress String a vizsgálandó e-mail cím formátuma
 * @return boolean valid-e az vizsgált e-mail cím formátuma
 */

function isValidEmailAddress(emailAddress)
{
	var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);

	return pattern.test(emailAddress);
}

/**
 * A függvény a kapott kód alapján az üzenet szövegét ajda vissza.
 *
 * @param respNum int az üzenet kódja
 * @return String az üzenet szövege
 */
function getStatusInfo(respNum)
{
	var errors = new Array();
	errors[0] = 'Sikertelen próbálozás!';
	errors[1] = 'Feliratkozás folyamatban...';
	errors[2] = 'Leiratkozott folyamatban...';
	errors[3] = 'Hírlevélre sikeresen feliratkozott.';
	errors[4] = 'Hírlevélről sikeresen leiratkozott.';
	errors[5] = 'Ön már fel van iratkozva!';
	errors[6] = 'Ön még nincs feliratkozva!';
	errors[7] = 'Hiányzó adat!';
	errors[8] = 'E-mail címet meg kell adni!';
	errors[9] = 'Hibás e-mail cím!';
	errors[10] = 'Nevet meg kell adni!';

	return errors[respNum];
}

/**
 * A szükséges mezők formátumának ellenőrzését végzi a függvény.
 *
 * @return boolean a bevitt adatok formailag helyesek
 */
function formValidation()
{
	/* nem írtak be nevet és / vagy e-mail címet */
	if ( $('#nlName').val() == '' || $('#nlEmail').val() == '' ) {
		/* tájékoztató szöveg megjelenítése */
		showErrorText('A név és az e-mail cím megadása kötelező!')
		return false;
	}
	/* a beírt e-mail cím formátuma nem megfelelő */
	else if (!isValidEmailAddress($('#nlEmail').val())){
		/* tájékoztató szöveg megjelenítése */
		showErrorText('Valós e-mail címet adjon meg!');
		return false;
	}
	return true;
}

/**
 * A tájékoztató szöveg beállítása, illetve a tartalmazó div megjelenítése.
 *
 * @param _text String a tájékoztató szöveg
 */
function showErrorText(_text)
{
	$('#nlErrorText').text(_text);
	$('#nlError').show();
	$('#nlForm').hide();
}

/**
 * A függvény a tájékoztató szöveg megjelenítése után megjelenő 'vissza a hírlevélhez' gomb onclick eseménykezelője, visszaállítja
 * az eredeti képernyőt, megtartva a begépelt adatokat.
 */
function goForm() {
	$('#nlError').hide();
	$('#nlForm').show();
}



