function emailOk(emailAddr) {
        var i;
        i = emailAddr.indexOf("@");
        if (i == -1) {
                return false;
        }
        var username = emailAddr.substring(0, i);
        var domain = emailAddr.substring(i + 1, emailAddr.length)
        i = 0;
        while ((username.substring(i, i + 1) == " ") && (i < username.length)) {
                i++;
        }
        if (i > 0) {
                username = username.substring(i, username.length);
        }
        i = domain.length - 1;
        while ((domain.substring(i, i + 1) == " ") && (i >= 0)) {
                i--;
        }
        if (i < (domain.length - 1)) {
                domain = domain.substring(0, i + 1);
        }
        if ((username == "") || (domain == "")) {
                return false;
        }
        var ch;
        for (i = 0; i < username.length; i++) {
                ch = (username.substring(i, i + 1)).toLowerCase();
                if (!(((ch >= "a") && (ch <= "z")) ||
                        ((ch >= "0") && (ch <= "9")) ||
                        (ch == "_") || (ch == "-") || (ch == "."))) {
                                return false;
                }
        }

        for (i = 0; i < domain.length; i++) {
                ch = (domain.substring(i, i + 1)).toLowerCase();
                if (!(((ch >= "a") && (ch <= "z")) ||
                        ((ch >= "0") && (ch <= "9")) ||
                        (ch == "_") || (ch == "-") || (ch == "."))) {
                                return false;
                }
        }
        i = domain.indexOf(".");
        if (i == -1) {
                return false;
        }
        return true;
};

function validate(form){
    good = true;
    err = "Missing or incorrect data:\n";
    if (form.fname.value==''){
        good=false;
        err+="First name,\n";
    };

    if (form.lname.value==''){
        good=false;
        err+="Last name,\n";
    };
    if (form.city.value==''){
        good=false;
        err+="City,\n";
    };
    if (form.zip.value==''){
        good=false;
        err+="ZIP code,\n";
    };
    if (!emailOk(form.email.value)){
        good=false;
        err+="E-mail,\n";
    };

    if (form.username.value.length<6){
        good=false;
        err+="User Name (at least 6 characters),\n";
    };
    if (form.username.value.length>12){
        good=false;
        err+="User Name must be max 12 symbols,\n";
    };
    if (form.password.value==''){
        good=false;
        err+="Password,\n";
    };
    if (form.password.value.length < 6){
        good=false;
        err+="Password must be at least 6 symbols,\n";
    };
    if (form.password.value == form.username.value){
        good=false;
        err+="Password and Username are Too Similar,\n";
    };
    if (form.password.value.length > 12){
        good=false;
        err+="Password must be max 12 symbols,\n";

    };

    us_pass = true;

        for (i = 0; i < form.username.value.length; i++) {

                ch = (form.username.value.substring(i, i + 1)).toLowerCase();

                if (!(((ch >= "a") && (ch <= "z")) ||

                        ((ch >= "0") && (ch <= "9")) ||

                        (ch == "_") || (ch == "-") || (ch == "."))) {

                                us_pass = false;

                                good = false;

                }

        }

        if (! us_pass) err+="Username may contain only symbols from a-z, A-Z, 0-9,\n";

    us_pass = true;

        for (i = 0; i < form.password.value.length; i++) {

                ch = (form.password.value.substring(i, i + 1)).toLowerCase();

                if (!(((ch >= "a") && (ch <= "z")) ||

                        ((ch >= "0") && (ch <= "9")) ||

                        (ch == "_") || (ch == "-") || (ch == "."))) {

                                us_pass = false;

                                good = false;

                }

        }

        if (! us_pass) err+="Password may contain only symbols from a-z, A-Z, 0-9,\n";

    err+="please correct and fill the data and click Join button again.";

    if (!good) {

        alert(err);

    };

    return good;

}


