function dge(id) {
  var obj=document.getElementById(id);
  if (!obj) return "";
  return obj.value;
}
function cge(id) {
  var obj=document.getElementById(id);
  if (obj&&obj.checked) return "yes";
  return "no";
}
function signupuser() {
  var button=document.getElementById("signupbutton");
  var email=dge("email");
  var domain=dge("domain");
  var password=dge("password");
  var verify=dge("verify");
  var name=dge("name");
  var altemail=dge("altemail");
  var zip=dge("zip");
  var birthdate=dge("birthdate");
  var question=dge("question");
  var answer=dge("answer");
  var offers=cge("offers");
  var agree=cge("agree");
  var proemail=cge("proemail");
  var proad=cge("proad");
  if (agree=="no") {
    alert("You must agree with the Terms and Conditions!");
    return;
  }
  var ua=/[\\\(\)\[\]"&;:\+]/;
  if (email.match(ua)||email.indexOf("@")>0) {
    alert("Your E-Mail contains unallowed characters!");
    return;
  }
  if (email.length<4) {
    alert("Your E-Mail address must be at least 4 characters!");
    return;
  }
  if (password.length<6||password!=verify) {
    alert("Your passsword must be at least 6 characters\nand the verification must match!");
    return;
  }
  if (password.match(ua)) {
    alert("Your password contains unallowed characters!");
    return;
  }
  if (name.length<2) {
    alert("You must enter your first and last name!");
    return;
  }
  if (name.match(ua)) {
    alert("Your name contains unallowed characters!");
    return;
  }
  var em=/^.+@.+\..+$/;
  if (!altemail.match(em)) {
    alert("You must enter a valid alternative E-Mail address!");
    return;
  }
  if (zip.length<2) {
    alert("You must enter a valid zip / postal code!");
    return;
  }
  if (zip.match(ua)) {
    alert("Your zip / postal code contains unallowed characters!");
    return;
  }
  var bd=/^(\d+)\/(\d+)\/(\d\d\d\d)/;
  var ma=birthdate.match(bd);
  if (!ma) {
    alert("You must enter a valid birthdate!");
    return;
  }
  var mm=ma[1]; var dd=ma[2]; var yyyy=ma[3];
  var d=new Date();
  d.setFullYear(parseInt(yyyy),parseInt(mm)-1,parseInt(dd));
  var delta=new Date().getTime()-d.getTime();
  delta=parseInt(((((delta/1000)/60)/60)/24)/365);
  if (delta<18) {
    alert("You must be 18 years or older to sign up for an account!");
    return;
  }
  if (question.match(ua)||answer.match(ua)) {
    alert("Your secret question or answer contains unallowed characters!");
    return;
  }

  if (firefox) xmlhttp[1]=new XMLHttpRequest();
  else xmlhttp[1]=new ActiveXObject("Microsoft.XMLHTTP");
  xmlhttp[1].onreadystatechange=function() {
    if (xmlhttp[1].readyState==4) {
      var xml;
      if (firefox) xml=xmlhttp[1].responseXML.documentElement;
      else xml=xmlhttp[1].responseXML;
      if (xml.getElementsByTagName("error").length>0) {
        var button=document.getElementById("signupbutton");
        button.disabled=false;
        var item=xml.getElementsByTagName("error").item(0);
        var error;
        if (firefox) error=item.textContent; else error=item.text;
        var obj=document.getElementById("errormsg");
        obj.innerHTML="<div><b>There was a problem with your input:</b><br>\n"+error+"</div>";
        obj.style.display="block";
        obj.style.visibility="visible";
        return;
      } else {
        var item=xml.getElementsByTagName("email").item(0);
        var email;
        if (firefox) email=item.textContent; else email=item.text;
        window.location.href="/thankyou.html?email="+email;
        return;
      }
    }
  }
  var args="e="+email+"&d="+domain+"&p="+password+"&v="+verify+"&n="+name+"&a="+altemail+"&z="+zip+"&b="+birthdate+"&q="+question+"&w="+answer+"&o="+offers+"&pm="+proemail+"&pa="+proad;
  button.disabled=true;
  xmlhttp[1].open("GET","/signup?"+args,true);
  xmlhttp[1].send(null);
}
