$(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 groups = [];
    for (var i=1; i<5; i++) {
        if ( $('#nl-group-'+i)[0].checked )
            groups[ groups.length ] = parseInt($('#nl-group-'+i).val())+1;
    }
    groups = groups.join('_');

    var uri = '/'+_lang+'/system/' + type + '/' + encodeURIComponent($("#nlName").val()) +'/' + $("#nlEmail").val()+'/'+groups+'/';
    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] = 'Ön most sikeresen feliratkozott hírlevelünkre, köszönjük érdeklődését!';
    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() == 'Név' || $('#nlEmail').val() == 'E-mail cím' ) {
        /* 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)
{
    $('#nl-group-1').attr('checked', false);
    $('#nl-group-2').attr('checked', false);
    $('#nl-group-3').attr('checked', false);
    $('#nl-group-4').attr('checked', false);
    $('#nlName').val('Az Ön neve');
    $('#nlEmail').val('Az Ön E-mail címe');
    $('#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();
}

