Witam,
jest już trochę późno i już mi się powoli obraz zamazuje :) więc tak tylko na szybko co mi się rzuciło w oczy:
- deklarując zmienne nie musisz (a nawet nie zaleca się) powtarzać "var". Wystarczy jedno var i deklarujesz od razu komplet zmiennych, po każdej dając przecinek zamiast średnika (po za oczywiście ostatnią, gdzie ma być średnik).
- zanim prześlesz dane na serwer rozważ ich wstępną weryfikację po stronie klienta i w razie czego eleganckie obsłużenie błędu. Na przykład rozważ określenie konkretnych reguł dla hasła (min i max długość, dozwolone i obowiązkowe znaki itp.) i kontroluj wprowadzone hasło zgodnie z tymi regułami. Można to łatwo zweryfikować jednym wyrażeniem regularnym. Podobnie kwestia nicku. Oczywiście pamiętaj, że walidacja w JS u klienta to tylko dodatek, właściwa kontrola musi odbyć się na serwerze zanim zapiszesz dane do bazy.
- poczytaj w wolnej chwili o metodzie preventDefault zastępującej return false. Na razie masz krótkie kody funkcji, ale gdy nabiorą one większych gabarytów to zaletą preventDefault jest to, że możesz ją wywołać w dowolnym miejscu, nawet na początku funkcji w przeciwieństwie do return false (możesz więc np. założyć sobie zasadę, że umieszczasz tę metodę na początku funkcji, które mają wstrzymywać akcje domyślne).
- polecam rozpoczęcie stosowania trybu 'use strict'. Nie będę tutaj omawiał tego zagadnienia gdyż jest ono dość szerokie, a bez problemu znajdziesz wiele informacji w necie (w razie pytań daj znać co ewentualnie wyjaśnić itp.).
- Używając zapisów typu: "if(blad_formularza[0] == true)" uważaj na zasady niejawnej konwersji typów w JS. Nie twierdzę, żebyś zawsze stosował zapis "===" zamiast "==" gdyż oba rozwiązania mają swoje wady i zalety, ale uwazaj, gdyż pusty ciąg znakowy "" zostanie przekonwertowany do false, natomiast każdy ciąg zawierający jakieś znaki, np. "xx" będzie konwertowany na true. Czasami może to rodzić problemy, na przykład każda tablica w JS niejawnie jest konwertowana na true, gdyż tak na prawdę jest to obiekt "[object Array]", a w JS każdy obiekt jest true (nawet pusty, czyli również pusta tablica).
Powiem szczerze, że nie analizowałem czy kod w ogóle będzie poprawnie działać (godzina i umysł już nie do końca zdolny do analizy... :) więc tylko tak na szybko parę moich sugestii rzuciłem.
Pozdrawiam,
Tomek