/**
 * Funkcja sluzy do walidacji pol formularza
 */
function partner_validate_input(input){
    var input_name=input.attr("name");
    var input_value=$.trim(input.val());
    var input_value_length=input_value.length;
    var input_required=input.attr('data-required');

    if (input_required=='1' && input_value_length==0)
    {
        $('#error_'+input_name).html(input.attr("data_error_required")).removeClass('partner_register_input_ok').addClass('partner_register_input_error');
        return 0;
    }
    else if (input_value_length>0 && ((input_name=='input_email' && !checkEmail(input_value)) || (input_name=='input_tax_ref' && !checkNIP(input_value)) || (input_name=='input_www' && !checkURL(input_value)) || (input_name=='input_pesel' && !checkPESEL(input_value)) || (input_name=='input_payments_account_no' && !checkEmail(input_value)) ))
    {
        $('#error_'+input_name).html(input.attr("data_error_check1")).removeClass('partner_register_input_ok').addClass('partner_register_input_error');
        return 0;
    }
    else
    {
        $('#error_'+input_name).removeClass('partner_register_input_error').addClass('partner_register_input_ok').html('');
        return 1;
    }
};



function validate_input(input) {
    var validate_function=input.attr('data-validator');
    switch (validate_function)
    {
        case 'nip':
            return checkNIP(input.val());
            break;
        case 'email':
            return checkEmail(input.val());
            break;
        case 'emails':
            return checkEmails(input.val());
            break;
        case 'url':
            return checkURL(input.val());
            break;
        case 'pesel':
            return checkPESEL(input.val());
            break;
        case 'streetHomeNumber':
            return containsNumber(input.val()) && containsCharacter(input.val());     
            break;
        default:
            return true;
    }

}


function checkNIP(nip)
{
    nip=nip.replace(/-/ig, '');
    nip=nip.replace(/ /ig, '');

    if (nip.length != 10) return false;
    //zabezpieczeniem przed 10 razy wystepujaca taka sama cyfra
    if ((/(0){10}|(1){10}|(2){10}|(3){10}|(4){10}|(5){10}|(6){10}|(7){10}|(8){10}|(9){10}/).test(nip)) return false;
    
    nipm = new Array(6,5,7,2,3,4,5,6,7);
    suma = 0;
    for (i=0; i<9; i++ )
        suma = suma + nip.charAt(i)*nipm[i];

    return (suma%11 == nip.charAt(9));
}


function checkEmail(email)
{
    email=email.replace(/-/ig, '');
    var local  = new String();
    var domain = new String();
    var at;
    while ((at = email.indexOf(' ')) == 0) email = email.slice(at+1);
    if (email.length < 6) return false;
    while ((at = email.lastIndexOf(' ')) == (email.length - 1)) email = email.slice(0,at);
    if ((at = email.lastIndexOf('@')) < 0) return false;

    local = email.slice(0,at);
    if (local.length < 1) return false;
    domain = email.slice(at+1);
    if (domain.length < 3) return false;
    if (domain.indexOf('/') >= 0 || domain.indexOf('~') >= 0 || domain.indexOf(',') >= 0 || domain.indexOf('\\\\') >= 0 || domain.indexOf(' ') >= 0 || domain.indexOf('.') < 0 || domain.indexOf('..') >= 0 || (domain.lastIndexOf('.') >= (domain.length - 2))) return false;
    if ((local.lastIndexOf('\"') != (local.length - 1)) && (local.indexOf('\"') != 0))
    {
        if (local.indexOf('/') >= 0 || local.indexOf('@') >= 0 || local.indexOf('~') >= 0 || local.indexOf(',') >= 0 || local.indexOf('\\\\') >= 0 || local.indexOf(' ') >= 0) return false;
    }
    return true;
}


function checkEmails(emails)
{
    var aemails = emails.split(';');
    for (var i = 0; i < aemails.length; i++)
    {
        var email=(aemails[i]).replace(/-/ig, '');
        if (checkEmail(email) == false)
        {
            return false;
        }
    }
    return true;
}



function checkURL(url) {
    var regexp =  /http:\/\/[A-Za-z0-9\.-]{3,}\.[A-Za-z]{2}/
    return regexp.test(url);
}


function checkPESEL(pesel)
{
    if (pesel.length != 11) return false;

    var p = pesel.split("");
    var suma = parseInt(p[0]*1+p[1]*3+p[2]*7+p[3]*9+p[4]*1+p[5]*3+p[6]*7+p[7]*9+p[8]*1+p[9]*3);
    var control = 10 - suma%10;
    var controlNr = (control == 10)? 0 : control;

    return (controlNr == p[10]);
}



function containsNumber(string) {
    var regexp =  /\d/
    return regexp.test(string);
}


function containsCharacter(string) {
    var regexp =  /[A-Za-z]/
    return regexp.test(string);
}
