function trimAll( strValue ) {
var objRegExp = /^(\s*)$/;
//check for all spaces
  if(objRegExp.test(strValue)) {
    strValue = strValue.replace(objRegExp, '');
    if(strValue.length == 0)
      return strValue;
    }
//check for leading & trailing spaces
  objRegExp = /^(\s*)([\W\w]*)(\b\s*$)/;
  if(objRegExp.test(strValue)) {
//remove leading and trailing whitespace characters
    strValue = strValue.replace(objRegExp, '$2');
  }
  return strValue;
}

function killAll( strValue ) {
var objRegExp = /\.|\,|<|>|\[|\]|\^|\*|\{|\}|\'|\&quot;|\&lt;|\&gt;/g; 
//REPLACES  . , < > [ ] ^ * { } ' &quot; &lt; &gt; 
  if(objRegExp.test(strValue)) {
    strValue = strValue.replace(objRegExp, '');
    if(strValue.length == 0)
      return strValue;
    }
//document.write(strValue)
 return strValue;
}

MYREGEX = new Array(null)
MYREGEX[0] = new Array(/FIRST/,"1ST")
MYREGEX[1] = new Array(/SECOND/,"2ND")
MYREGEX[2] = new Array(/THIRD/,"3RD")
MYREGEX[3] = new Array(/FOURTH/,"4TH")
MYREGEX[4] = new Array(/FIFTH/,"5TH")
MYREGEX[5] = new Array(/SIXTH/,"6TH")
MYREGEX[6] = new Array(/SEVENTH/,"7TH")
MYREGEX[7] = new Array(/EIGHTH/,"8TH")
MYREGEX[8] = new Array(/NINTH/,"9TH")

function subFullSTR(strValue){
strValue = strValue.toUpperCase()
for (var i = 0; i<MYREGEX.length;i++){
   strValue = strValue.replace(MYREGEX[i][0], MYREGEX[i][1]);
}
// document.write(strValue)
 return strValue;
}

//var myRegxp = /[0-9]/
var myRegxp = /(^-?\d\d*$)/;
var PRESUF_RegExp = /^[NS]$|^[NS][EW]$|^[EW]$/;
var preFIX = ""; var streetNAME = ""; var streetMOD = ""; var sufFIX = ""; var strNAM = "";
//var testnum = "ar1a2a3s4f5"
//alert(myRegxp.test(testnum))
function formatAddress(raw_ADD){
var preFIX = ""; var streetNAME = ""; var streetMOD = ""; var sufFIX = ""; var strNAM = "";

  myString = raw_ADD.toUpperCase()
  myString = trimAll(raw_ADD)
  myString = killAll(raw_ADD)
  myString = subFullSTR(raw_ADD)
//  document.write ("<br><br><b style='color:red'>"+myString+"</b>")
  splitString = myString.split(" ")
  var a = splitString.length-1
//  document.write("<BR><b>NUMBER OF PIECES IN STRING: "+splitString.length+"</b><br>")
  for (var i = 0; i < splitString.length;i++){
//  document.write("<BR>" + splitString[i])
  }
  if(myRegxp.test(splitString[0])){
    houseNum = splitString[0]
    if(PRESUF_RegExp.test(splitString[1])){
      preFIX = splitString[1]
    } else {
      preFIX = ""
    }
    if(PRESUF_RegExp.test(splitString[a])){
      sufFIX = splitString[a]
    } else {
      sufFIX = ""
    }
  }else{
//  alert("Please enter a House Number")
  houseNum = ""
  document.all.house_num.value = houseNum
  return false
  }

if(preFIX != "" && sufFIX !=""){
streetMOD = splitString.length-2
strMOD = splitString[streetMOD]
  for (var i = 2; i < splitString.length-2;i++){
  strNAM = strNAM + " " + splitString[i]
  }
}
if(preFIX != "" && sufFIX == ""){
streetMOD = splitString.length-1
strMOD = splitString[streetMOD]
  for (var i = 2; i < splitString.length-1;i++){
  strNAM = strNAM + " " + splitString[i]
  }
}
if(preFIX == "" && sufFIX != ""){
streetMOD = splitString.length-2
strMOD = splitString[streetMOD]
  for (var i = 1; i < splitString.length-2;i++){
  strNAM = strNAM + " " + splitString[i]
  }
}
if(preFIX == "" && sufFIX == ""){
streetMOD = splitString.length-1
strMOD = splitString[streetMOD]
  for (var i = 1; i < splitString.length-1;i++){
  strNAM = strNAM + " " + splitString[i]
  }
}

if(strNAM == 11||strNAM==111||strNAM==12||strNAM==112||strNAM==13||strNAM==113){
strNAM=strNAM + "TH"
}else{
    if(strNAM > 0 && strNAM < 206){
      endNUM = strNAM.charAt(strNAM.length-1)
      if(endNUM==1){
      strNAM = strNAM+"ST"
      }else if(endNUM==2){
      strNAM = strNAM+"ND"
      }else if(endNUM==3){
      strNAM = strNAM+"RD"
      }else{
      strNAM = strNAM+"TH"
      }
    }else{
    }
}

//  ST, PL, AVE, CT, LN, WAY, DR, RD, MALL, HWY, ET, CIR, BLVD, ALY
if(strMOD == "STREET" || strMOD == "STR" ){strMOD = "ST"}
if(strMOD == "PLACE" || strMOD == "PLA" ){strMOD = "PL"}
if(strMOD == "AV" || strMOD == "AVENUE" ){strMOD = "AVE"}
if(strMOD == "COURT" || strMOD == "CRT" ){strMOD = "CT"}
if(strMOD == "LANE"){strMOD = "LN"}
if(strMOD == "WY"){strMOD = "WAY"}
if(strMOD == "DRI" || strMOD == "DRIVE"){strMOD = "DR"}
if(strMOD == "ROAD"){strMOD = "RD"}
if(strMOD == "MA" || strMOD == "ML"){strMOD = "MALL"}
if(strMOD == "HIGHWAY" || strMOD == "HWAY"){strMOD = "HWY"}
//if(strMOD == "ET"){strMOD = "HWY"}
if(strMOD == "C" || strMOD == "CIRC" || strMOD == "CIRCLE"){strMOD = "CIR"}
if(strMOD == "BOULEVARD" || strMOD == "BLV" || strMOD == "BLVRD"){strMOD = "BLVD"}
if(strMOD == "AL" || strMOD == "ALL" || strMOD == "ALLEY"){strMOD = "ALY"}
if(strMOD == "PLAZA"){strMOD="PLZ"}
if(strMOD == "TERRACE"){strMOD="TER"}
if(strMOD == "VISTA"){strMOD="VIS"}
if(strMOD=="ST"||strMOD=="PL"||strMOD=="PLZ"||strMOD=="VIS"||strMOD=="TER"||strMOD=="AVE"||strMOD=="CT"||strMOD=="LN"||strMOD=="WAY"||strMOD=="DR"||strMOD=="RD"||strMOD=="MALL"||strMOD=="HWY"||strMOD=="CIR"||strMOD=="BLVD"||strMOD=="ALY"){
//alert("THIS IS A STREET MOD")
}else{
//alert("THIS IS NOT A STREET MOD")
strNAM = strNAM + " " + strMOD 
strMOD = ""
}
if(trimAll(strNAM)=="MLKJR" || trimAll(strNAM)=="MLK JR"){
strNAM = "MARTIN LUTHER KING JR"
strMOD = "WAY"
}

document.all.house_num.value = houseNum
document.all.prefix.value = preFIX
document.all.street_name.value = trimAll(strNAM)
document.all.street_mod.value = strMOD
document.all.suffix.value = sufFIX

if(myRegxp.test(houseNum) && splitString.length>1){
//alert("This is a valid address")
//alert("SUBMITTED: \nHOUSE NUMBER: "+houseNum+"\nPREFIX: "+preFIX+"\nStreet Name: "+strNAM+"\nStreet Mod: "+strMOD+"\nSuffix: "+sufFIX);
//document.all.tester.submit();
return true
}else{
//alert("FALSE")
return false
}
houseNum="";preFIX="";strNAM="";strMOD="";sufFIX="";
}

function testSubmit(){
//document.location="http://www.seattle.gov/myneighborhood/error.htm"

document.tester.house_num.value = ""
var list = document.tester.SelNeighborhood
var listValue = list.options[list.selectedIndex].value  

if(document.tester.Address.value=="" && listValue=="0"){         //NO ADDRESS & NO NEIGHBORHOOD
  alert("PLEASE ENTER AN ADDRESS OR SELECT A NEIGHBORHOOD")
  return false
}
if(listValue!="0"){ //NEIGHBORHOOD SELECTED

  return true
//  return false
}
if(formatAddress(document.all.Address.value) && listValue=="0"){  
//VALID ADDRESS


  return true
//  return false
}else{
  return false
}
}
