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; float:right; clear:right;"); $('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; float:right; clear:right;"); $('div#studentidmessage').html(key); validation['studentid']=true; processName("realname","realname"); } else{ $('div#studentidmessage').attr("style","color:red; float:right; clear:right;"); $('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; float:right; clear:right;"); validation['username']=false; } else{ $('div#usernamemessage').attr("style","color:green; float:right; clear:right;"); 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; float:right; clear:right;"); validation[input]=false; } else{ $('div#'+input+'message').attr("style","color:green; float:right; clear:right;"); 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; float:right; clear:right;"); validation['address']=false; } else{ $('div#addressmessage').attr("style","color:green; float:right; clear:right;"); 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; float:right; clear:right;"); validation['email']=false; } else{ $('div#emailmessage').attr("style","color:green; float:right; clear:right;"); 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; float:right; clear:right;"); validation['phone']=false; } else{ $('div#phonemessage').attr("style","color:green; float:right; clear:right;"); 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; float:right; clear:right;"); $('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); })