
$(document).ready(function(){
    //global vars
    var form        = $("#signupForm");
    var fname       = $("#fname");
    var fnameInfo   = $("#fnameInfo");
    var lname       = $("#lname");
    var lnameInfo   = $("#lnameInfo");
    var email_a     = $("#email_a");
    var email_aInfo = $("#email_aInfo");
    var email_b     = $("#email_b");
    var email_bInfo = $("#email_bInfo");
    var phone       = $("#phone");
    var phoneInfo   = $("#phoneInfo");
    var mobile      = $("#mobile");
    var mobileInfo  = $("#mobileInfo");
    var referal     = $("#referal");
    var referalInfo = $("#referalInfo");

    //On blur
    fname.blur(validateFName);
    lname.blur(validateLName);
    email_a.blur(validateEmail_a);
    email_b.blur(validateEmail_b);
    phone.blur(validatePhone);
    mobile.blur(validateMobile);
    referal.blur(validateReferal);

    //On key press
    // email_a.keyup(validateEmail_a);
    // fname.keyup(validateFName);
    // lname.keyup(validateLName);

    //On Submitting
    form.submit(function(){
        if(validateFName() && validateLName() && validateEmail_a() && validateEmail_b() && validatePhone() && validateMobile())
            return true
        else
            return false;
    });

    //validation functions
    function validateEmail_a(){
        //testing regular expression
        var a = $("#email_a").val();
        var filter = /^[a-zA-Z0-9]+[a-zA-Z0-9_.-]+[a-zA-Z0-9_-]+@[a-zA-Z0-9]+[a-zA-Z0-9.-]+[a-zA-Z0-9]+.[a-z]{2,4}$/;
        //if it's Not a valid email
        if(!filter.test(a)){
            email_a.addClass("error");
            email_aInfo.text("ERROR: Type a valid e-mail please.");
            email_aInfo.addClass("error");
            return false;
        }

        $.post("/signup/validateEmail", {email_a: $("#email_a").val()}, function(data){
            if(data){
                email_a.addClass("error");
                email_aInfo.text("ERROR: The email address is already in use!");
                email_aInfo.addClass("error");
                //return false;
            }
        });

        //if it's valid
        email_a.removeClass("error");
        email_aInfo.text("Valid E-mail please, you will need it to log in!");
        email_aInfo.removeClass("error");
        return true;

    }

    function validateEmail_b(){
        //are NOT valid
        if( email_b.val().length < 1 ){
            email_b.addClass("error");
            email_bInfo.text("ERROR: Email cannot be empty!");
            email_bInfo.addClass("error");
            return false;
        }
        if( email_b.val() != email_a.val() ){
            email_b.addClass("error");
            email_bInfo.text("ERROR: Emails does not match!");
            email_bInfo.addClass("error");
            return false;
        }
        //are valid
        email_b.removeClass("error");
        email_bInfo.text("Confirm Email");
        email_bInfo.removeClass("error");
        return true;
    }

    function validateFName(){
        //if it's NOT valid
        if(fname.val().length < 1){
            fname.addClass("error");
            fnameInfo.text("ERROR: First Name with more than 3 letters!");
            fnameInfo.addClass("error");
            return false;
        }
        //if it's valid
        fname.removeClass("error");
        fnameInfo.text("Please Enter your First Name.");
        fnameInfo.removeClass("error");
        return true;
    }

    function validateLName(){
        //if it's NOT valid
        if(lname.val().length < 2){
            lname.addClass("error");
            lnameInfo.text("ERROR: Last Name with more than 3 letters!");
            lnameInfo.addClass("error");
            return false;
        }
        //if it's valid
        lname.removeClass("error");
        lnameInfo.text("Please Enter your Last Name.");
        lnameInfo.removeClass("error");
        return true;
    }

    function validateReferal(){
        //if it's NOT valid
        if(referal.val() == ''){
            referal.addClass("error");
            referalInfo.text("ERROR: Please Select a referal!");
            referalInfo.addClass("error");
            return false;
        }
        //if it's valid
        referal.removeClass("error");
        referalInfo.text("");
        referalInfo.removeClass("error");
        return true;
    }

    function validatePhone(){
        //if it's NOT valid
        //testing regular expression
        var a = $("#phone").val();
        var filter = /^((0[23478]{1}[0-9]{8})|(0[23478]{1}\s[0-9]{8})|(0[23478]{1}\s[0-9]{4}\s[0-9]{4})|(0[23478]{1}\)\s[0-9]{4}\s[0-9]{4})|(\(0[23478]{1}\)\s[0-9]{4}\s[0-9]{4})|(0[23478]{1}\)\s[0-9]{8})|(\(0[23478]{1}\)\s[0-9]{8})|(04[0-9]{2}\s[0-9]{3}\s[0-9]{3})|(1800\s[0-9]{3}\s[0-9]{3})|(1300\s[0-9]{3}\s[0-9]{3})|(1800[0-9]{6})|(1300[0-9]{6})|(13[0-9]{4})|(13\s[0-9]{2}\s[0-9]{2}))$/;
        //if it's Not a valid Phone Number
        if(!filter.test(a)){
            phone.addClass("error");
            phoneInfo.text("ERROR: Please Enter a Valid Phone Number!");
            phoneInfo.addClass("error");
            return false;
        } else {
            //if it's valid
            phone.removeClass("error");
            phoneInfo.text("Please Enter your Phone Number.");
            phoneInfo.removeClass("error");
            return true;
        }
    }

    function validateMobile(){
        //if it's NOT valid
        //testing regular expression
        var a = $("#mobile").val();
        var filter = /^((0[23478]{1}[0-9]{8})|(0[23478]{1}\s[0-9]{8})|(0[23478]{1}\s[0-9]{4}\s[0-9]{4})|(0[23478]{1}\)\s[0-9]{4}\s[0-9]{4})|(\(0[23478]{1}\)\s[0-9]{4}\s[0-9]{4})|(0[23478]{1}\)\s[0-9]{8})|(\(0[23478]{1}\)\s[0-9]{8})|(04[0-9]{2}\s[0-9]{3}\s[0-9]{3})|(1800\s[0-9]{3}\s[0-9]{3})|(1300\s[0-9]{3}\s[0-9]{3})|(1800[0-9]{6})|(1300[0-9]{6})|(13[0-9]{4})|(13\s[0-9]{2}\s[0-9]{2}))$/;
        //if it's Not a valid Mobile Number
        if(!filter.test(a)){
            mobile.addClass("error");
            mobileInfo.text("ERROR: Please Enter a Valid Mobile Number!");
            mobileInfo.addClass("error");
            return false;
        }
        //if it's valid
        mobile.removeClass("error");
        mobileInfo.text("Please Enter your Mobile Number.");
        mobileInfo.removeClass("error");
        return true;
    }
});