Skip to content
Snippets Groups Projects
signup.js 7.4 KiB
Newer Older
  • Learn to ignore specific revisions
  • var validation = {"studentid":false, "username":false, "realname":false, "address":false, "contact":false, "email":false, "phone":false};
    function validate(){
    	var valid = true;
    	for (field in req){
    		if (!validation[req[field]]){
    			valid=false;
    			break;
    		}
    	}
    
    	if(valid || ($('input#override:checked').size()==1)){
    
    		$('input#submit').removeAttr("disabled");
    	}
    	else{
    		$('input#submit').attr("disabled","disabled");
    	}
    	
    
    }
    function processPostcode(){
    		// lookup postcode
                    $.getJSON("signup/ajax",{key: "postcode",value: $('input#postcode').val().replace(/ /g,'')}, function(j){
    			//populate dropdown	
                            var options = '';
                            if (j.length > 1) {
    				// make dropdown visible
                                    $('div#addseldiv').removeAttr("style");
                                    for (var i = 0; i < j.length; i++) {
                                            options += '<option>' + j[i] + '</option>';
                                    }
                                    $("select#addsel").html(options);
                                    $('select#addsel option:first').attr('selected', 'selected');
                            }
                            if (j.length == 1) {
                                    $('div#addseldiv').attr("style","display:none");
                                    $("textarea#address").val(j[0].replace(/, /g,'\n'))
    				$('div#addressmessage').attr("style","color:green");
    				$('div#addressmessage').html("OK");
    				validation["address"]=true;
    				validate();
                            }
                    })
    }
    
    function lookupSID(setname){
            $.get("signup/ajax",{key:"sid" ,value: $('input#studentid').val()},function(j){
                    arr=j.split(":");
                    key=arr.shift();
                    val=arr.join(":");
                    if(key=="OK"){
    			if(setname=true)
    				$("input#realname").val(val);
                            $('div#studentidmessage').attr("style","color:green");
    			$('div#studentidmessage').html(key);
    			validation['studentid']=true;
    			processName("realname","realname");
    
                    }
                    else{
                            $('div#studentidmessage').attr("style","color:red");
    			$('div#studentidmessage').html(val);
    			validation['email']=false;
    			validate();
                    }
            },'text')
    }
    function processSID(){
    	lookupSID(true);
    }
    
    function processUsername(){
            $.get("signup/ajax",{key: "username", value: $('input#username').val()},function(j){
                    if (j!="OK") {
                            $('div#usernamemessage').attr("style","color:red");
    			validation['username']=false;
                    }
                    else{   
                            $('div#usernamemessage').attr("style","color:green");
    			validation['username']=true;
                    }
    		$('div#usernamemessage').html(j);
    		validate();
            },'text')
    }
    
    function processName(type, input){
            $.get("signup/ajax",{key: type, value: $('input#'+input).val()},function(j){
                    if (j!="OK") {
                            $('div#'+input+'message').attr("style","color:red");
    			validation[input]=false;
                    }
                    else{   
                            $('div#'+input+'message').attr("style","color:green");
    			validation[input]=true;
                    }
    		$('div#'+input+'message').html(j);
    		validate();
            },'text')
    }
    function processContact(){
    	processName('realname','contact');
    }
    
    function processAddress(){
            $.get("signup/ajax",{key: "address", value: $('textarea#address').val()},function(j){
                    if (j!="OK") {
                            $('div#addressmessage').attr("style","color:red");
                            validation['address']=false;
                    }   
                    else{   
                            $('div#addressmessage').attr("style","color:green");
                            validation['address']=true;
                    }
    		$('div#addressmessage').html(j);
    		validate();
            },'text')
    }
    
    function processEmail(){
            $.get("signup/ajax",{key: "email", value: $('input#email').val()},function(j){
                    if (j!="OK") {
                            $('div#emailmessage').attr("style","color:red");
    			validation['email']=false;
                    }
                    else{   
                            $('div#emailmessage').attr("style","color:green");
    			validation['email']=true;
                    }
    		$('div#emailmessage').html(j);
    		validate();
            },'text')
    }
    
    function processPhone(){
            $.get("signup/ajax",{key: "phone", value: $('input#phone').val()},function(j){
                    if (j!="OK") {
                            $('div#phonemessage').attr("style","color:red");
    			validation['phone']=false;
                    }
                    else{   
                            $('div#phonemessage').attr("style","color:green");
    			validation['phone']=true;
                    }
    		$('div#phonemessage').html(j);
    		validate();
            },'text')
    }
    
    $(function(){
    	if($('input#studentid').size()==1){
    		usertype=1;
    	}
    	else if($('input#contact').size()==1){
    		usertype=2;
    	}
    	else{
    		usertype=5;
    	}
            req=new Array("username","realname","email","phone");
            switch(usertype){
                    case "1":
                            req.push("studentid","address");
                            break;
                    case "2":
                            req.push("contact");
                            break;
                    case "5":
                            req.push("address");
            }
    	//usertype=$('input#usertype').val();
    	$("document").ready(function(){
    		// makes script sutff appear
    		$('div#postcodediv').removeAttr("style");
    		$('input#submit').attr("disabled","disabled");
    		// if the fields are not empty validate them
    		if($('input#username').val()!="") processUsername();
    		if($('input#email').val()!="") processEmail();
    		if($('input#phone').val()!="") processPhone();
    		if(usertype!=2){
    			if($('input#postcode').val()!="") processPostcode();
    			if($('textarea#address').val()!="") processAddress();
    			if($('input#realname').val()!="") processName("realname","realname");
    		}
    		else{
    			if($('input#contact').val()!="") processContact();
    			if($('input#realname').val()!="") processName("socname","realname");
    		}
    		if((usertype==1) && ($('input#studentid').val()!="")){
    			if($('input#realname').val()=="") lookupSID(true);
    			else lookupSID(false);
    		}
    
    		validate();
    	})
    	// dont do address stuff for societies
    	if(usertype!=2){
    	// process postcode when the box changes
    	$("input#postcode").change(processPostcode);
    	
    	//populate the address box when an address is selected
    	$("select#addsel").change(function(){
    		$("textarea#address").val($('select#addsel').val().replace(/, /g,'\n'));
    		$('div#addressmessage').attr("style","color:green");
    		$('div#addressmessage').html("OK");
    		validation['address']=true;
    	})
    	}
    	//else deal with the contact field
    	else{
            $("input#contact").change(processContact)
    
    	}
    	//if is a student
    	if(usertype==1){
    	//lookup the real name from the studentid
    	$("input#studentid").change(processSID)
    	}
    	//validate username
    	$("input#username").change(processUsername)
    	//validate personal and society names differntly
    	if(usertype!=2){
    		persoc='realname';
    	}
    	else{
    		persoc='socname';
    	}
    	//validate real name
    	$("input#realname").change(function(){
    		processName(persoc, 'realname');
    	})
    	
            //validate email address
            $("input#email").change(processEmail);
            //validate phone number
            $("input#phone").change(processPhone);
    	$("textarea#address").change(processAddress);
    
    	$("input#override").change(validate);