﻿var stop = 'nie';

/*------------------------------------------------------------------------------
 * P O B I E R A N I E   I D   D A N E G O   E L E M E N T U
 * ---------------------------------------------------------------------------*/ 
function $(id) {
    return document.getElementById(id);
}

/*------------------------------------------------------------------------------
 * U S U W A N I E   B I A Ł Y C H   Z N A K Ó W
 * ---------------------------------------------------------------------------*/
function delWhiteSign(tekst) {
    tekst = tekst.replace(/\r/g, " ");
    tekst = tekst.replace(/[^ A-Za-zˇ±ĄąĘęŚśŹźŃń¬ĽŁłÓóĆć¦¶Żż0-9`~!@#\$%\^&\*\(\)-_=\+\\\|\]\[\}\{'";:\?\/\.>,<]/g, "");
    tekst = tekst.replace(/'/g, "");
    tekst = tekst.replace(/ +/g, " ");  
    tekst = tekst.replace(/^\s/g, "");
    tekst = tekst.replace(/\s$/g, "");
    
    return tekst;
}

/*------------------------------------------------------------------------------
 * M I E R N I K   S I Ł Y   H A S Ł A
 * ---------------------------------------------------------------------------*/
function passwordStrength(password) {
    var desc = new Array();
    desc[0] = "Bardzo słabe";
    desc[1] = "Słabe";
    desc[2] = "W miarę";
    desc[3] = "Średnie";
    desc[4] = "Mocne";
    desc[5] = "Bardzo mocne";
    desc[6] = "Nie podano hasła";
    
    var score = 0;
    
    //jesli haslo jest wieksze niz 6 ==> 1 punkt
    if (password.length > 6) score++;

    //jesli haslo ma i male i duze litery ==> 1 punkt	
    if ( ( password.match(/[a-z]/) ) && ( password.match(/[A-Z]/) ) ) score++;
    
    //jesli haslo zawiera cyferki ==> 1 punkt
    if (password.match(/\d+/)) score++;
    
    //jesli haslo ma jakis znak specjalny ==> 1 punkt
    if ( password.match(/.[!,@,#,$,%,^,&,*,?,_,~,-,(,)]/) )	score++;
    
    //jesli haslo jest dluzsze niz 12 znakow ==> 1 punkt
    if (password.length > 12) score++;
    
    //jesli haslo jest puste
    if (password.length == 0) score=6;
    
    $("passwordDescription").innerHTML = desc[score];
    $("passwordStrength").className = "strength" + score;
}

/*------------------------------------------------------------------------------
 * W A L I D A C J A   P Ó L   F O R M U L A R Z A
 * ---------------------------------------------------------------------------*/
function checkIsNotEmpty(obj) {
    var err = 0;
    var err_text = '';
    var polska = "97";
    
    if ( obj.name == 'login' ) {
        if ( obj.value.length < 4 || obj.value.length > 50 ) {
            err++;
            err_text = 'Login powinien mieć od 4 do 50 znaków.';
        }
        else {
            if ( obj.value.match(/^[0-9a-zA-Z\-\_\.]+$/) ) {
                checkLogin(obj.value);
            }
            else {
                err++;
                err_text = 'Login zawiera niedozwolone znaki.';
            }
        }
    }
    else if ( obj.name == 'haslo' ) {
        if ( obj.value.length < 6 || obj.value.length > 50 ) {
            err++;
            err_text = 'Hasło powinno mieć od 6 do 50 znaków.';
        }
    }
    else if ( obj.name == 'powtorzonehaslo' ) {
        if ( obj.value.length < 6 || obj.value.length > 50 ) {
            err++;
            err_text = 'Hasło powinno mieć od 6 do 50 znaków.';
        }
        else if ( obj.value != $("haslo").value ) {
            err++;
            err_text = 'Hasła nie są identyczne.';
        }
    }
    else if ( obj.name == 'mail' ) {
        if ( obj.value.match(/^[0-9a-z_.-]+@([0-9a-z-]+.)+[a-z]{2,4}$/) ) {
            checkMail(obj.value);
        }
        else {
            err++;
            err_text = 'Nieprawidłowy adres e-mail.';
        }
    }
    else if ( obj.name == 'powtorzonymail' ) {
        if ( obj.value != $("mail").value ) {
            err++;
            err_text = 'Adresy e-mail nie są identyczne.';
        }
    }
    else if ( obj.name == 'imie' ) {
        if ( !obj.value.length ) {
            err++;
            err_text = 'Imię nie zostało podane.';
        }
        else {
            if ( obj.value.length < 3 ) {
                err++;
                err_text = 'Imię jest zbyt krótkie.';
            }
            else {
                var dobreImie = /^[a-z(±)(ę)(ń)(ź)(ś)(ą)(ć)(Ľ)(ż)(ł)(ó)\s]+$/i;
                if ( dobreImie.test(obj.value) ) {
                    obj.value = delWhiteSign(obj.value);
                }
                else {
                    err++;
                    err_text = 'Imię zawiera niedozwolone znaki.';
                }
            }
        }
    }
    else if ( obj.name == 'nazwisko' ) {
        if ( !obj.value.length ) {
            err++;
            err_text = 'Nazwisko nie zostało podane.';
        }
        else {
            if ( obj.value.length < 3 ) {
                err++;
                err_text = 'Nazwisko jest zbyt krótkie.';
            }
            else {
                var dobreNazwisko = /^[a-z(±)(ą)(ę)(ń)(ź)(ś)(¶)(ć)(Ľ)(ż)(ł)(ó)\s]+[\-]?[a-z(±)(ą)(ę)(ń)(ź)(ś)(¶)(ć)(Ľ)(ż)(ł)(ó)\s]+$/i;
                if ( dobreNazwisko.test(obj.value) ) {
                    obj.value = delWhiteSign(obj.value);
                }
                else {
                    err++;
                    err_text = 'Nazwisko zawiera niedozwolone znaki.';
                }
            }
        }
    }
    else if ( obj.name == 'ulica' ) {
        if ( !obj.value.length ) {
            err++;
            err_text = 'Ulica nie została podane.';
        }
        else {
            var dobraUlica = /^[a-z0-9(±)(ą)(ę)(ń)(ź)(ś)(¶)(ć)(Ľ)(ż)(ł)(ó)\s\.\-]+$/i;
            if ( dobraUlica.test(obj.value) ) {
                obj.value = delWhiteSign(obj.value);
            }
            else {
                err++;
                err_text = 'Ulica zawiera niedozwolone znaki.';
            }
        }
    }
    else if ( obj.name == 'nr_domu' ) {
        if ( !obj.value.length ) {
            err++;
            err_text = 'Numer domu nie został podany.';
        }
        else {
            var dobryNrDomu = /^[0-9]+[a-zA-Z]?(([\/]+[0-9]+[a-zA-Z]?)?)$/i;
            if ( dobryNrDomu.test(obj.value) ) {
                obj.value = delWhiteSign(obj.value);
            }
            else {
                err++;
                err_text = 'Numer domu zawiera niedozwolone znaki.';
            }
        }
    }
    else if ( obj.name == 'kod' ) {
        if ( !obj.value.length ) {
            err++;
            err_text = 'Kod pocztowy nie został podany.';
        }
        else if ( $('kraj').options[$('kraj').selectedIndex].value == 'POL' ) {
            var dobryKodPol = /^[0-9]+[0-9]+\-+([0-9][0-9][0-9])$/i;
            if ( dobryKodPol.test(obj.value) ) {
                obj.value = delWhiteSign(obj.value);
                
                checkOk('kraj',polska,'','ok');
                checkIsNotEmpty($('wojewodztwo'));
            }
            else {
                err++;
                err_text = 'Nieprawidłowy kod pocztowy.';
            }
        }
        else {
            var dobryKodJap = /^(\?[0-9]{3}\-[0-9]{4})$/i;
            var dobryKodUSA = /^([0-9]{5})(-{1}[0-9]{4})?$/i;
            var j;
            
            if ( dobryKodJap.test(obj.value) ) {
                obj.value = delWhiteSign(obj.value);
            }
            else if ( dobryKodUSA.test(obj.value) ) {
                obj.value = delWhiteSign(obj.value);
            }
        }
    }
    else if ( obj.name == 'miejscowosc' ) {
        if ( !obj.value.length ) {
            err++;
            err_text = 'Miejscowo¶ć nie została podana.';
        }
        else {
            var dobraMiejscowosc = /^[a-z(±)(ą)(ę)(ń)(ź)(ś)(¶)(ć)(Ľ)(ż)(ł)(ó)\s\.]+[\-]?[a-z(±)(ą)(ę)(ń)(ź)(ś)(¶)(ć)(Ľ)(ż)(ł)(ó)\s\.]+$/i;
            if ( dobraMiejscowosc.test(obj.value) ) {
                obj.value = delWhiteSign(obj.value);
            }
            else {
                err++;
                err_text = 'Miejscowo¶ć zawiera niedozwolone znaki.';
            }
        }
    }
    else if ( obj.name == 'kraj' ) {
        if ( !obj.selectedIndex ) {
            err++;
            err_text = 'Kraj nie został wybrany.';
        }
        else if ( obj.options[obj.selectedIndex].value == 'POL' ) {
            checkIsNotEmpty($('kod'));
            if ( !$('wojewodztwo').selectedIndex ) {
                $($('wojewodztwo').id).className = "bad";
                $(($('wojewodztwo').id)+"_err").className = "form_error";
                $(($('wojewodztwo').id)+"_err").innerHTML = 'Województwo nie zostało wybrane.';
                
                $(obj.id).className = "good";
                $((obj.id)+"_err").className = "form_error_ok";
                $((obj.id)+"_err").innerHTML = "Poprawnie";
                return false;
            }
            else {
                $($('wojewodztwo').id).className = "good";
                $(($('wojewodztwo').id)+"_err").className = "form_error_ok";
                $(($('wojewodztwo').id)+"_err").innerHTML = 'Poprawnie';
            }
        }
        else {
            checkIsNotEmpty($('kod'));
            checkOk('wojewodztwo','0','','ok');
        }
    }
    else if ( obj.name == 'wojewodztwo' ) {
        if ( $('kraj').options[$('kraj').selectedIndex].value == 'POL' ) {
            if ( !obj.selectedIndex ) {
                err++;
                err_text = 'Województwo nie zostało wybrane.';
            }
        }
        else {
            if ( obj.selectedIndex ) {
                checkOk('kraj',polska,'','ok');
            }
        }
    }
    else if ( obj.name == 'telefon' ) {
        if ( !obj.value.length ) {
            err++;
            err_text = 'Nr tel. nie został podany.';
        }
        else {
            var dobryTelefon = /^[0-9\-\(\)]+$/i;
            if ( dobryTelefon.test(obj.value) ) {
                if ( obj.value.length < 9 ) {
                    err++;
                    err_text = 'Nr tel. jest zbyt krótki.';
                }
                else {
                    obj.value = delWhiteSign(obj.value);
                }
            }
            else {
                err++;
                err_text = 'Nr tel. zawiera niedozwolone znaki.';
            }
        }
    }
    else if ( obj.name == 'gadu' ) {
        obj.value = delWhiteSign(obj.value);
        if ( isNaN(obj.value) ) {
            err++;
            err_text = 'GG zawiera niedozwolone znaki.';
        }
    }
    
    if ( stop == 'tak' ) {
        stop = 'nie';
        return false;
    }
    else {
        if ( err != 0 ) {
            $(obj.id).className = "bad";
            $((obj.id)+"_err").className = "form_error";
            $((obj.id)+"_err").innerHTML = err_text;
            return false;
        }
        else {
            $(obj.id).className = "good";
            $((obj.id)+"_err").className = "form_error_ok";
            $((obj.id)+"_err").innerHTML = "Poprawnie";
            return true;
        }
    }
}

/*------------------------------------------------------------------------------
 * P O D M I A N A   W Y ¦ W I E T L A N I A   P O L A   S E L E C T
 * ---------------------------------------------------------------------------*/
function checkOk(pole,wartosc,komunikat,ok) {
    $(pole).selectedIndex = wartosc;
    
    if ( ok=='ok' ) {
        $($(pole).id).className = "good";
        $(($(pole).id)+"_err").className = "form_error_ok";
        $(($(pole).id)+"_err").innerHTML = 'Poprawnie';
    }
    else {
        $($(pole).id).className = "bad";
        $(($(pole).id)+"_err").className = "form_error";
        $(($(pole).id)+"_err").innerHTML = komunikat;
    }
}


/*------------------------------------------------------------------------------
 * W A L I D A C J A   C A Ł E G O   F O R M U L A R Z A
 * ---------------------------------------------------------------------------*/
function checkForm () {
    var i;
    var error = 0;
    
    for ( i=0; i<document.rejestracja_2.length; i++ ) {
        try {
            if (checkIsNotEmpty(document.rejestracja_2.elements[i])) {}
            else {
                error++;
            }
        } catch(e) {}
    }
    
    
    if ( $('ulica').value && $('nr_domu').value && $('miejscowosc').value && $('kod').value ) {
        checkAdres($('ulica').value + ' ' + $('nr_domu').value, $('miejscowosc').value, $('kod').value);
    }
    if ( stop == 'tak' ) {
        stop = 'nie';
        error++;
    }
    
    if ( error != 0 ) return false;
    else return true;
}

/*------------------------------------------------------------------------------
 * W Y N I K   D Z I A Ł A N I A   A J A X A
 * ---------------------------------------------------------------------------*/
function doExist(co) {
    if ( co ) {
        if ( co == 'login' ) {
            var loginy = new Array();
            var i, q, j;
            i=1; q=1; j=0;
            
            while ( q < 3 ) {
                loginy[j] = $('login').value + i;
                q++; i++; j++;
            }
            
            i = 2007;
            while ( q < 5 ) {
                loginy[j] = $('login').value + i;
                q++; i++; j++;
            }
            
            i = 1;
            while ( q < 7 ) {
                loginy[j] = $('login').value + i;
                q++; i++; j++;
            }
            
            i = 2007;
            while ( q < 9 ) {
                loginy[j] = $('login').value + i;
                q++; i++; j++;
            }
            
            generujLoginy(loginy);
            $('istnieje_w_bazie').style.display = 'block';
            $($(co).id).className = "bad";
            $(($(co).id)+"_err").className = "form_error";
            $(($(co).id)+"_err").innerHTML = 'Podany login istnieje już w bazie.';
            stop = 'tak';
        }
        else if ( co == 'mail' ) {
            $($(co).id).className = "bad";
            $(($(co).id)+"_err").className = "form_error";
            $(($(co).id)+"_err").innerHTML = 'Podany e-mail istnieje już w bazie.';
            stop = 'tak';
        }
        else if ( co == 'haslo' ) {
            $($(co).id).className = "bad";
            $(($(co).id)+"_err").className = "form_error";
            $(($(co).id)+"_err").innerHTML = 'Podane hasło już istnieje w bazie.';
        }
        else if ( co == 'adres' ) {
            stop = 'tak';
            $('istnieje_w_bazie_adres').style.display = 'block';
        }
    }
    else {
        $('istnieje_w_bazie').style.display = 'none';
        $('istnieje_w_bazie_adres').style.display = 'none';
    }
}

/*------------------------------------------------------------------------------
 * T W O R Z E N I E   O B I E K T U   X M L H T T P
 * ---------------------------------------------------------------------------*/
function getLogin(login) {
    $('login').value = login;
}

/*------------------------------------------------------------------------------
 * T W O R Z E N I E   O B I E K T U   X M L H T T P
 * ---------------------------------------------------------------------------*/
function getXMLHttpRequest()
{
      var request = false;
    
      try {
          request = new XMLHttpRequest();
      } 
      catch(err1) {
          try {
              request = new ActiveXObject('Msxml2.XMLHTTP');
          } 
          catch(err2) {
              try {
                  request = new ActiveXObject('Microsoft.XMLHTTP');
              } 
              catch(err3) {
                try {
                  request = new ActiveXObject('MSXML2.XMLHttp.5.0');
                }
                catch(err4) {
                  try {
                    request = new ActiveXObject('MSXML2.XMLHttp.4.0');
                  }
                  catch(err5) {
                    try {
                      request = new ActiveXObject('MSXML2.XMLHttp.3.0');
                    }
                    catch(err6) {
                      request = false;
                    }
                  }
                }
              }
          }
      }
      return request;
}
  
var r_login; 
r_login = getXMLHttpRequest();

var r_login_gen; 
r_login_gen = getXMLHttpRequest();

var r_mail;
r_mail = getXMLHttpRequest();

var r_adres;
r_adres = getXMLHttpRequest();



/*------------------------------------------------------------------------------
 * C Z Y   W P I S A N Y   L O G I N   J E S T   J U Ż   W   B D
 * ---------------------------------------------------------------------------*/
function checkLogin(wartosc) {
    r_login.open('GET', './pa/xml/rejestracja_xml.php?dostep=tak&login='+wartosc, true);
    r_login.onreadystatechange = processResponseLogin;
    r_login.send(null);
}

function processResponseLogin() {
    if (r_login.readyState == 4) {
        if (r_login.status == 200) {
            try {
                var x = r_login.responseXML.getElementsByTagName('records')[0].childNodes;
                if (x[0].childNodes[0]) doExist('login');
                else doExist();
            }
            catch(e) {}
        };
    }
}

/*------------------------------------------------------------------------------
 * C Z Y   W P I S A N Y   M A I L   J E S T   J U Ż   W   B D
 * ---------------------------------------------------------------------------*/
function checkMail(wartosc) {
    r_mail.open('GET', './pa/xml/rejestracja_xml.php?dostep=tak&mail='+wartosc, true);
    r_mail.onreadystatechange = processResponseMail;
    r_mail.send(null);
}

function processResponseMail() {
    if (r_mail.readyState == 4) {
        if (r_mail.status == 200) {
            try {
                var x = r_mail.responseXML.getElementsByTagName('records')[0].childNodes;
                if (x[0].childNodes[0]) { doExist('mail'); }
                else doExist();
            }
            catch(e) {}
        };
    }
}

/*------------------------------------------------------------------------------
 * C Z Y   W P I S A N Y   A D R E S   J E S T   J U Z   W   B D
 * ---------------------------------------------------------------------------*/ 
function checkAdres(adres,miasto,kod) {
    r_adres.open('GET', './pa/xml/rejestracja_xml.php?dostep=tak&adres='+adres+'&miasto='+miasto+'&kod='+kod, true);
    r_adres.onreadystatechange = processResponseAdres;
    r_adres.send(null);
}

function processResponseAdres() {
    if (r_adres.readyState == 4) {
        if (r_adres.status == 200) {
            try {
                var x = r_adres.responseXML.getElementsByTagName('records')[0].childNodes;
                if (x[0].childNodes[0]) 
                /*{
                    $('istnieje_w_bazie_adres').style.display = 'block';
                    stop = 'tak';
                }*/ doExist('adres');
                else doExist();
            }
            catch(e) {}
        };
    }
}

/*------------------------------------------------------------------------------
 * G E N E R O W A N I E   L O G I N Ó W 
 * ---------------------------------------------------------------------------*/
function generujLoginy(login) {
    var lo;
    var zapytanie = '';
    for (lo=0; lo<login.length; lo++) {
        zapytanie += '&login'+lo+'='+login[lo];
    }
    
    r_login_gen.open('GET', './pa/xml/rejestracja_xml.php?dostep=tak'+zapytanie, true);
    r_login_gen.onreadystatechange = processResponseLoginGen;
    r_login_gen.send(null);
}

function processResponseLoginGen() {
    if (r_login_gen.readyState == 4) {
        if (r_login_gen.status == 200) {
            try {
                var x_records = r_login_gen.responseXML.getElementsByTagName('records')[0].childNodes;
                for ( j=0; j<x_records.length; j++ ) {
                    $(x_records[j].getAttribute('nazwa')).innerHTML = '<a href="javascript: getLogin(\''+x_records[j].childNodes[0].nodeValue+'\');">' + x_records[j].childNodes[0].nodeValue + '</a>'; 
                }
            }
            catch(e) {}
        };
    }
}

/*----------------------------------- E N D ----------------------------------*/

