var formElementNames=new Array();
formElementNames["APARTMENT_ADDRESS2"]="apartment address to move into";
formElementNames["Unit_Number2"]="apartment Unit Number to move into";
formElementNames["proposed_move_in_date2"]="Proposed Move in Date";
formElementNames["applicants_phone_home"]="Applicants Home Phone";
formElementNames["tenant1_firstname2"]="the first name of the first tenant";
formElementNames["tenant1_lastname2"]="the last name of the first tenant";
formElementNames["tenant1_ss_number2"]="the social security number of the first tenant";
formElementNames["tenant1_dob2"]="the date of birth of the first tenant";
formElementNames["current_landlord_name2"]="the name of your current landlord";
formElementNames["current_landlord_phone2"]="the phone number of your current landlord";
formElementNames["current_address2"]="the address of you current landlord";
formElementNames["current_townstate2"]="the town of your current landlord";
formElementNames["current_state"]="the state of your current landlord";
formElementNames["current_location_zip"]="the zipcode of your current landlord";
formElementNames["been_evicted_or_denied_renewal"]="whether you have or have not been evicted";
formElementNames["ever_been_arrested_or_convicted"]="whether you have ever been arrested or convicted of a crime";
formElementNames["authorize_credit_check"]="whether or not you have approved us to conduct a credit check";

function setRequiredFields() {
	required = setRequiredFields.arguments;
}

function defineElementName(elementName, description) {
	formElementNames[elementName]=description;
}

function validate( msg, formName ){
	form = (formName)?formName:document.forms[0];
	msg = (msg)?msg:"Please Enter a Valid [formElement]";

	for(i=0;i<required.length;i++) {
		if(!form.elements[required[i]]) {
			alert("The required element you specified: "+required[i]+"\ndoes not exist in the form");
			return;
		}
	}

	ln = required.length;
	for( i=0; i<ln; i++) {
			if( form.elements[required[i]].value == "" ){
					matcher=new RegExp(/\[formElement.{0,}\]/);
					replaceString=matcher.exec(msg);
					if( replaceString ) {
						replaceString=replaceString[0].replace("[","").replace("]","").split("/");
						if(formElementNames[required[i]]) msg = msg.replace(matcher,formElementNames[required[i]]);
						else if(replaceString[1]) msg = msg.replace(matcher,replaceString[1]);
						else msg = msg.replace(matcher,form.elements[required[i]].name);
					}
					alert( msg );
					return;
			}

      if( required[i].toLowerCase().indexOf("phone") != -1 ){
        if( !isPhoneNumber( form.elements[required[i]] ) ){
            alert("Please enter a valid phone number for "+formElementNames[required[i]]+".\nThank you.");
            return;
        }
      }

      if( required[i].toLowerCase().indexOf("email") != -1 ){
          if( !isEmail( form.elements[required[i]] ) ){
            alert("Please enter a valid landlord email address.\nThank you.");
            return;
        }
      }

      if( required[i].toLowerCase().indexOf("zip") != -1 ){
          if( !isZipcode( form.elements[required[i]] ) ){
            alert("Please enter a valid zipcode.\nThank you.");
            return;
        }
      }

	}
  form.submit();
}

function validatePassword( plength, formName ){
  form = (formName)?document.forms[formName]:document.forms[0];

  if( form.password.value.length < plength ){
      alert("Your password must be at least "+plength+" characters.\nThank you.");
      return false;
  }

  if( form.password.value != form.passwordconfirm.value ){
      alert("Your password must match your confirmation password.\nThank you.");
      return false;
  }
  return true;
}

function isEmail( elm ) {
  var str = elm.value;
  var notValidEmail = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)|(\s)/;
  var validEmail = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,6}|[0-9]{1,3})(\]?)$/;
  if (!notValidEmail.test(str) && validEmail.test(str)) { // if syntax is valid
    return true;
  }
  return false;
}

function isOnePhone( formName ){
  form = (formName)?document.forms[formName]:document.forms[0];

  if( form.dayphone.value == "" && form.eveningphone.value == "" ){
      alert("Please fill in at least one phone number you can be reached at.\nThank You");
      return false;
  }else if( form.dayphone.value != "" ){
      if( !isPhoneNumber( form.dayphone ) ){
          alert("You have entered an invalid day phone number, please enter a valid one.\nThank You.");
          return false;
      }
  }else if( form.eveningphone.value != "" ){
      if( !isPhoneNumber( form.eveningphone ) ){
          alert("You have entered an invalid evening phone number, please enter a valid one.\nThank You.");
          return false;
      }
  }
  return true;
}

function isPhoneNumber( elm ){
  elm.value = elm.value.replace( /\s/g, "-" );
  elm.value = elm.value.replace( /\./g, "-" );

  if( elm.value.length < 7 )
      return false;

  if( elm.value.length == 7 && elm.value.indexOf("-") != -1 )
      return false;

  if( elm.value.length == 7 && elm.value.indexOf("-") == -1 &&
      elm.value.indexOf("x") == -1 ){
      elm.value = elm.value.substring(0,3) +"-"+ elm.value.substring(3);
  }

  if( elm.value.length == 10 && elm.value.indexOf("-") == -1 &&
      elm.value.indexOf("x") == -1 ){
      elm.value = elm.value.substring(0,3) +"-"+ elm.value.substring(3,6) +"-"+
                  elm.value.substring(6);
  }

  if( elm.value.length == 11 && elm.value.indexOf("-") == -1 &&
      elm.value.indexOf("x") == -1 ){
      elm.value = elm.value.substring(0,1) +"-"+ elm.value.substring(1,4) +"-"+
                  elm.value.substring(4,7) +"-"+ elm.value.substring(7);
  }
  return true;
}

function isZipcode( elm ){
  value = elm.value;
  if( value.length < 5 )
      return false;

  segs = value.split("-")
  for( s=0; s<segs.length; s++ ){
     if( !isNumber( segs[s] ) )
         return false;
  }
  return true;
}

// Is it A positive integer?
function isNumber( elmstr ) {
  if (elmstr == "") {
      return false;
  }

  for (var i = 0; i < elmstr.length; i++) {
    if (elmstr.charAt(i) < "0" || elmstr.charAt(i) > "9") {
        return false;
    }
  }
  return true;
}
