(function(){
	var signup = window.signup = function(){};
	signup.init = function() {
		signup.initFields();
		$(".ajax-fc-container").captcha();
        $("#recaptcha_response_field").keypress(function (e) {
          if (e.which == 13) {
            $("#bttn_submit").click();
          }
        });
	};
	signup.initFields = function() {
        $('#smscode').numeric({allow:"+"});
        $("#p_activate").focus(function () {
            if ($("#p_activate").val() == $("#p_activate").attr("title")) {
                $("#p_activate").val('');
            }
        });        
	};
	signup.validateform = function() {
		var errors = 0;
		var errormessages = new Array();
        $("div.error_input").hide();
                
		if($("#fname").val() == $("#fname").attr("title") || $("#fname").val().length < 1) { 
            $("#fname").css({ border: "1px solid red" }); 
            errors++; 
            errormessages['fname'] = $("#fname").attr("error"); 
        } else if($("#fname").val().match(/(^\-$|^\-|\-$|\-{2,})/)) { 
            $("#fname").css({ border: "1px solid red" }); 
            errors++;
            errormessages['fname'] = $("#fname").attr("error");
        } else { 
            $("#fname").css({ border: "1px solid #484747" }); 
        }
        
		if($("#lname").val() == $("#lname").attr("title") || $("#lname").val().length < 2) { 
            $("#lname").css({ border: "1px solid red" }); 
            errors++; 
            errormessages['lname'] = $("#lname").attr("error"); 
        } else if($("#lname").val().match(/(^\-$|^\-|\-$|\-{2,})/)) {
            $("#lname").css({ border: "1px solid red" }); 
            errors++;
            errormessages['lname'] = $("#lname").attr("error");
        } else { 
            $("#lname").css({ border: "1px solid #484747" }); 
        }
        
		if(!$("#email").val().match(/^[A-Za-z0-9]([A-Za-z0-9_-]|(\.[A-Za-z0-9]))+@([A-Za-z0-9](([A-Za-z0-9]|(-[A-Za-z0-9]))+)\.){1,2}([A-Za-z]{2,6})(\.([A-Za-z]{2}))?$/)) { 
            $("#email").css({ border: "1px solid red" }); 
            errors++; 
            errormessages['email'] = $("#email").attr("error"); 
        } else { 
            $("#email").css({ border: "1px solid #484747" }); 
        }
		if($("#username").val() == $("#username").attr("title") || $("#username").val().length < 5) { 
            $("#username").css({ border: "1px solid red" }); 
            errors++; 
            errormessages['username'] = $("#username").attr("error"); 
        } else if($("#username").val().match(/(^\-|^\_|^\.|\-$|\_$|\.$|\-{2,}|\_{2,}|\.{2,}|\_\-|\-\_|\.\-|\-\.|\.\_|\_\.)/)) { 
            $("#username").css({ border: "1px solid red" }); 
            errors++; 
            errormessages['username'] = "Please enter a valid username.";  
        } else {
           $("#username").css({ border: "1px solid #484747" }); 
        }
		
		if($("#password").val().length < 5 || $("#password").val() == $("#password").attr("title")) { 
			$("#password").css({ border: "1px solid red" }); 
			errors++; 
			errormessages['password'] = $("#password").attr("error"); 
		} else if($("#username").val() == $("#password").val()) {
            $("#password").css({ border: "1px solid red" }); 
            errors++; 
            errormessages['password'] = "Your username and password cannot be the same."; 
        } else {
			$("#password").css({ border: "1px solid #484747" }); 
		}
		
		//if($("#confirmpassword").val().length < 5 || $("#password").val() != $("#confirmpassword").val()) { 
		//	$("#confirmpassword").css({ border: "1px solid red" }); 
		//	errors++; 
		//	if(errormessage==null) errormessage = $("#confirmpassword").attr("error"); 
		//} else { $("#confirmpassword").css({ border: "1px solid #484747" }); }
		
        if($("#gender").val() == "") { $("#gender").css({ border: "1px solid red" }); errors++; errormessages['gender'] = $("#gender").attr("error"); } else { $("#gender").css({ border: "1px solid #484747" }); }
                
		if($("#day").val().length < 1) { $("#day").css({ border: "1px solid red" }); errors++; errormessages['day'] = $("#day").attr("error"); } else { $("#day").css({ border: "1px solid #484747" }); }
		if($("#month").val().length < 1) { $("#month").css({ border: "1px solid red" }); errors++; errormessages['month'] = $("#month").attr("error"); } else { $("#month").css({ border: "1px solid #484747" }); }
		if($("#year").val().length < 1) { $("#year").css({ border: "1px solid red" }); errors++; errormessages['year'] = $("#year").attr("error"); } else { $("#year").css({ border: "1px solid #484747" }); }
		if(myage < 13) {
			$("#day").css({ border: "1px solid red" });
			$("#month").css({ border: "1px solid red" });
			$("#year").css({ border: "1px solid red" });
			//$("#agecomment").css({ color: "red" });
			errormessages['myage'] = "You must be 13 or older to sign up for a new VoxOx account.";
			errors++;
		}
		//if($("#country").val() == "") { $("#country").css({ border: "1px solid red" }); errors++; if(errormessage==null) errormessage = $("#country").attr("error"); } else { $("#country").css({ border: "1px solid #484747" }); }
		//if($("#country").val() == "US"){ if($("#postalcode").val() == $("#postalcode").attr("title") || $("#postalcode").val().length < 2) { $("#postalcode").css({ border: "1px solid red" }); errors++; if(errormessage==null) errormessage = $("#postalcode").attr("error"); } else { $("#postalcode").css({ border: "1px solid #484747" }); } }
		//if ($('#confirmterms').is(':checked')) { } else { errors++; if(errormessage==null) errormessage = $("#confirmterms").attr("error"); }
        if (errors > 0) {
		    signup.showErrors(errors, errormessages);
        }
		return errors; 
	};
    signup.validatecodeform = function() {
        var errors = 0;
        var errormessages = new Array();
        if($("#smscode").val() == $("#smscode").attr("title") || $("#smscode").val().length != 4) { $("#smscode").css({ border: "1px solid red" }); errors++; errormessages['smscode'] = $("#smscode").attr("error"); } else { $("#smscode").css({ border: "1px solid #484747" }); }        
        if (errors > 0) {
            signup.showErrors(errors, errormessages);
        }
        return errors; 
    };
    signup.validateemailform = function() {
        var errors = 0;
        var errormessages = new Array();
        if(!$("#newemail").val().match(/^[A-Za-z0-9]([A-Za-z0-9_-]|(\.[A-Za-z0-9]))+@([A-Za-z0-9](([A-Za-z0-9]|(-[A-Za-z0-9]))+)\.){1,2}([A-Za-z]{2,6})(\.([A-Za-z]{2}))?$/)) { 
            $("#newemail").css({ border: "1px solid red" }); 
            errors++; 
            errormessages['newemail'] = $("#newemail").attr("error"); 
        } else { 
            $("#newemail").css({ border: "1px solid #484747" }); 
        }        
        if (errors > 0) {
            signup.showErrors(errors, errormessages);
        }
        return errors; 
    };            
	signup.showErrors = function(errors, errormessages) {
        if (errors > 0) {     
		    $("#generalerror span").html('Error(s) occurred, see details below.');
		    $("#generalerror").show();
            
            if (array_key_exists('fname', errormessages)) {
                $("#fnameerror span").html(errormessages['fname']);
                $("#fnameerror").show();                      
            }
            if (array_key_exists('lname', errormessages)) {
                $("#lnameerror span").html(errormessages['lname']);
                $("#lnameerror").show();                  
            }
            if (array_key_exists('email', errormessages)) {
                $("#emailerror span").html(errormessages['email']);
                $("#emailerror").show();                  
            }
            if (array_key_exists('username', errormessages)) {
                $("#usernameerror span").html(errormessages['username']);
                $("#usernameerror").show();                  
            }
            if (array_key_exists('password', errormessages)) {
                $("#passworderror span").html(errormessages['password']);
                $("#passworderror").show();                  
            }
            if (array_key_exists('gender', errormessages)) {
                $("#gendererror span").html(errormessages['gender']);
                $("#gendererror").show();                  
            }        
            if (array_key_exists('day', errormessages)) {
                $("#birthdayerror span").html(errormessages['day']);
                $("#birthdayerror").show();                  
            }                                        
            if (array_key_exists('month', errormessages)) {
                $("#birthdayerror span").html(errormessages['month']);
                $("#birthdayerror").show();                  
            }
            if (array_key_exists('year', errormessages)) {
                $("#birthdayerror span").html(errormessages['year']);
                $("#birthdayerror").show();                  
            }
            if (array_key_exists('myage', errormessages)) {
                $("#myageerror span").html(errormessages['myage']);
                $("#myageerror").show();                  
            }
            if (array_key_exists('smscode', errormessages)) {
                $("#smscodeerror span").html(errormessages['smscode']);
                $("#smscodeerror").show();                  
            }
            if (array_key_exists('newemail', errormessages)) {
                $("#newemailerror span").html(errormessages['newemail']);
                $("#newemailerror").show();                  
            }             
        }                              
	};  

    function array_key_exists(key, search) {
        if (!search || (search.constructor !== Array && search.constructor !== Object)){
            return false;
        }
        return key in search;
     }
    
})();