messageArray = [];

messageArray["address"]   = "Please, enter your address!"
messageArray["age"]       = "Please, specify your year of birth."
messageArray["category"]  = "Please, specify a category for your web site."
messageArray["city"]      = "Please, enter your city!"
messageArray["connection_where"] = "Please, specify the location from which you connect to the Internet."
messageArray["country"]   = "Please, specify a country."
messageArray["cpassword"] = "Please, make password confirmation!"
messageArray["education"] = "Please, specify your education."
messageArray["email"]     = "Please, enter a valid email."
messageArray["income"]    = "Please, specify your income."
messageArray["login"]     = "Please, enter a valid Username.\n\nValid symbols include all small and capital letters, \nall numbers and the symbols '_', '@', '.'"
messageArray["name"]      = "Please, enter your name!"
messageArray["occupation"]= "Please, specify your current occupation."
messageArray["password"]  = "Please, enter a valid password.\n\nValid symbols include all small and capital letters, \nall numbers and the symbols '_', '@', '.'"
messageArray["phone"]     = "Please, enter your phone number!"
messageArray["refid"]     = "Please, enter the id of your referrer or leave it 0!"
messageArray["sex"]       = "Please, specify your gender."
messageArray["speed"]     = "Please, specify the speed of your connection."
messageArray["state"]     = "Please, specify a state."
messageArray["zip"]       = "Please, enter your zip code!"


onload = function(){
   obj_form_to_check = document.forms[0];
   obj_form_to_check.onsubmit = checkTheForm;
   obj_form_to_check.email       && (obj_email = obj_form_to_check.email);
   obj_form_to_check.login       && (obj_login = obj_form_to_check.login);
   obj_form_to_check.password    && (obj_password = obj_form_to_check.password);
   obj_form_to_check.cpassword   && (obj_cpassword = obj_form_to_check.cpassword);
   obj_form_to_check["name"]     && (obj_name = obj_form_to_check["name"]);
   obj_form_to_check.city        && (obj_city = obj_form_to_check.city);
}

function checkTextField(objToCheck){
   spedia_re= /[^A-Za-z0-9_.@\-]/g;
   city_re  = /[^A-Za-z]/g
   
   temp_var1 = true;
   
   var array1 = objToCheck.value.match(spedia_re);
   if (objToCheck.name != "city" && array1 != null || objToCheck.value == "") {
      alert(messageArray[objToCheck.name])
      return false;
   }
   if (objToCheck.name == "city"){
      var array2  = objToCheck.value.match(city_re);
      if( array2 != null){
         for(i=0;i<array2.length;i++){
            if(array2[i] != " ") temp_var1 = false;
         }
         if(temp_var1) return true;
         alert(messageArray["city"]);
         return false;
      }
      return true;
   }
   if (objToCheck.value.length < 5) {
      alert("Please, enter a valid " + objToCheck.name +" at least 5 characters long.")
      return false;
   }
   
   if (objToCheck.name == "email" && ( array1 == null && (objToCheck.value.indexOf("@") == -1 || objToCheck.value.indexOf(".") == -1))){
      alert(messageArray[objToCheck.name])
      return false;
   }
   return true;
}

function checkName(objToCheck){
   var aa_re=/ /g;
   var aa_re2= /[^A-Za-z\s]/g;

   array1 = objToCheck.value.match(aa_re);
   array2 = objToCheck.value.match(aa_re2);
   if (array1 == null || (array2 != null && array2 == " ") || objToCheck.value == "") {
      alert("Please, enter your first and last name.");
      return false;
   }
   return true;
}

function checkPassConfirmation(){
   if(obj_cpassword.value != obj_password.value){
      alert("Password confirmation failed.\n\nPlease, enter the password confirmation again.");
      obj_cpassword.value = "";
      return false;
   }
   return true;
}

function checkForEmptyFields(){
   for(i=0;i<obj_form_to_check.elements.length;i++){
      if((  obj_form_to_check.elements[i].type == "password" || 
            obj_form_to_check.elements[i].type == "text") && 
            obj_form_to_check.elements[i].value == ""){

         if(obj_form_to_check.elements[i].name == "fax") continue;
         if(obj_form_to_check.elements[i].name == "refid") continue;
         alert(messageArray[obj_form_to_check.elements[i].name]);
         return false;
      }
   }
   return true;
}

function checkRadioButtons(whichGroup){
   var isGroupEmpty = true;
   var obj_to_check = obj_form_to_check[whichGroup];
   for(i=0;i<obj_to_check.length;i++){
      if(obj_to_check[i].checked == true) isGroupEmpty = false;
   }
   if(isGroupEmpty) {
      alert(messageArray[whichGroup])
      return false;
   }
   return true;
}

function checkAddress(){
   if(obj_form_to_check.address.value == ""){
      alert(messageArray["address"]);
      return false;
   }
   return true;
}

function checkZip(){
   if(obj_form_to_check.zip.value == ""){
      alert(messageArray["zip"]);
      return false;
   }
   return true;
}

function checkPhone(){
   if(obj_form_to_check.phone.value == ""){
      alert(messageArray["phone"]);
      return false;
   }
   return true;
}

function checkStateCountry(){
   if(obj_form_to_check.country.selectedIndex > 1)
      obj_form_to_check.state.options[1].selected=true;
   
   if(obj_form_to_check.country.selectedIndex == 0) {
      alert(messageArray["country"]);
      return false;
   }
   if(obj_form_to_check.state.selectedIndex == 0 && obj_form_to_check.country.selectedIndex == 1){
      alert(messageArray["state"]);
      return false;
   }
   if(obj_form_to_check.state.selectedIndex == 1 && obj_form_to_check.country.selectedIndex == 1){
      alert(messageArray["state"]);
      obj_form_to_check.state.options[0].selected = true;
      return false;
   }
   if(obj_form_to_check.state.selectedIndex == 0 && obj_form_to_check.country.selectedIndex > 1){
      alert(messageArray["state"]);
      return false;
   }
   if(obj_form_to_check.state.selectedIndex != 0 && obj_form_to_check.country.selectedIndex > 1){
      obj_form_to_check.state.options[1].selected = true;
   }
   return true;
}

function checkDropDownMenus(){
   if(obj_form_to_check.age.selectedIndex == 0){
      alert(messageArray["age"]);
      return false;
   }
   if(obj_form_to_check.sex.selectedIndex == 0){
      alert(messageArray["sex"]);
      return false;
   }
   if(obj_form_to_check.education.selectedIndex == 0){
      alert(messageArray["education"]);
      return false;
   }

   if(obj_form_to_check.income.selectedIndex == 0){
      alert(messageArray["income"]);
      return false;
   }

   if(obj_form_to_check.occupation.selectedIndex == 0){
      alert(messageArray["occupation"]);
      return false;
   }

   if(obj_form_to_check.speed.selectedIndex == 0){
      alert(messageArray["speed"]);
      return false;
   }
   return true;
}

function checkTheForm(){
   if( !checkTextField(obj_login))    return false;
   if( !checkTextField(obj_password)) return false;
   if( !checkPassConfirmation())      return false;
   if( !checkName(obj_name))          return false;
   if( !checkTextField(obj_email))    return false;
   if( !checkAddress())               return false;
   if( !checkTextField(obj_city))     return false;
   if( !checkZip())                   return false;
   if( !checkPhone())                 return false;
   if( !checkStateCountry())          return false;
   if( !checkForEmptyFields())        return false;
   if( !checkDropDownMenus())         return false;
   if( !checkRadioButtons("connection_where")) return false;
   return true;
}