/* This script and many more are available free online at
The JavaScript Source!! http://javascript.internet.com
Created by: Ilanio | http://www.webdeveloper.com/forum/showthread.php?t=119753 */
var aMail = new Array("Abell", "Aberdeen", "Abingdon", "Accident", "Accokeek", "Adamstown", "Adelphi", "Allen", "Annapolis",
"Annapolis Junction", "Arbutus", "Arcadia", "Arnold", "Avenue", "Baltimore", "Baltimore City", "Baltimore County", 
"Barnesville", "Barstow", "Barton", "Beallsville", "Beaver Creek", "Bel Air", "Bel Alton", "Belcamp",
"Beltsville", "Benedict", "Berlin", "Berwyn Heights", "Bethesda", "Betterton", "Big Pool", "Birdsville", 
"Bishopville", "Bladensburg", "Boonsboro", "Bowie", "Boyds", "Bozman", "Braddock Heights", "Bradshaw", 
"Brandywine", "Bridgetown", "Brookeville", "Brooklandville", "Brooklyn Park", "Broomes Island", "Brunswick", 
"Bryans Road", "Bryantown", "Buckeystown", "Budds Creek", "Burkittsville", "Burtonsville", "Bushwood", "BWI Airport", 
"Cabin John", "California", "Calloway", "Calverton", "Cambridge", "Camp Springs", "Capital Heights", "Carney", "Cascade", 
"Catonsville", "Centreville", "Chance", "Chapel Point", "Chaptico", "Charlestown",
"Charlotte Hall", "Chase", "Cheltenham", "Chesapeake Beach", "Chesapeake City", "Chester", "Chestertown", "Cheverly", 
"Chevy Chase", "Chillum", "Church Creek", "Church Hill", "Churchville", "Clarksburg", "Clarksville", "Clarysville", 
"Clear Spring", "Cliff's City", "Clinton", "Cobb Island", "Cockeysville", "Colesville", "College Park", "Colora", 
"Colton's Point", "Columbia", "Compton", "Comus", "Conowingo", "Cordova", "Cresaptown", "Crisfield", "Crofton", "Croom", 
"Crownsville", "Crumpton", "Cumberland", "Damascus", "Dameron", "Darlington", "Darnestown", "Davidsonville", "Dayton", 
"Deal Island", "Deale", "Deep Creek Lake", "Deer Park", "Delmar", "Denton", "Dentsville", "Derwood", "Dickerson", 
"District Heights", "Dorsey", "Dowell", "Drayden", "Dublin", "Dundalk", "Dunkirk", "Earleville", "East New Market", "Easton", 
"Edgemere", "Edgewater", "Edgewood", "Eldersburg", "Elkridge", "Elkton", "Ellicott City", "Emmitsburg", "Essex", "Ewell", "Fair Hill", 
"Fairplay", "Fallston", "Faulkner", "Federalsburg", "Ferndale", "Finksburg", "Finzel", "Fishing Creek", "Flintstone", 
"Forest Hill", "Forestville", "Fort G Meade","Fort Meade", "Fort Howard", "Fort Washington", "Frederick", "Freeland", "Friendship", 
"Friendsville", "Frostburg", "Fruitland", "Fulton", "Funkstown", "Gaithersburg", "Galena", "Galesville", "Gamber", "Gambrills", 
"Gapland", "Georgetown", "Germantown", "Gibson Island", "Girdletree", "Glen Arm", "Glen Burnie", "Glen Echo", "Glenarden", 
"Glenelg", "Glenn Dale", "Glenwood", "Glyndon", "Golden Ring", "Goldsboro", "Golts", "Grantsville", "Grasonville", 
"Great Mills", "Greenbelt", "Greensboro", "Hagerstown", "Halethorpe", "Hampstead", "Hancock", "Hanover", "Harwood", 
"Havre de Grace", "Hebron", "Henderson", "Hereford", "Highland", "Highland Beach", "Hillsboro", "Hollywood", "Hughesville", 
"Hunt Valley", "Huntington", "Huntingtown", "Hurlock", "Hyattstown", "Hyattsville", "Hydes", "Ijamsville", "Indian Head", 
"Ironside", "Issue", "Jackson", "Jarrettsville", "Jefferson", "Jessup", "Johnsville", "Joppa", "Joppatowne", "Keedysville", 
"Kennedyville", "Kensington", "Kent Island", "Kent Narrows", "Kettering", "Keysers Ridge", "Kingston", "Kingsville", 
"Kitzmiller", "Knoxville", "La Plata", "Landover", "Landover Hills", "Langley Park", "Lanham", "Largo", "Laurel", 
"LaVale", "Laytonsville", "Leonardtown", "Lexington Park", "Lietersburg", "Lily Pons", "Lineboro", "Linkwood", "Linthicum", 
"Linthicum Heights", "Linwood", "Lisbon", "Little Orleans", "Lloyds", "Loch Raven", "Lonaconing", "Long Green", "Lothian", 
"Loveville", "Lower Marlboro", "Lusby", "Lutherville", "Madison", "Manchester", "Marbury", "Mardela Springs", "Marion Station", 
"Marriottsville", "Marydel", "Massey", "Maugansville", "Mayo", "McDaniel", "McHenry", "Mechanicsville", "Middle River", 
"Middleburg", "Middletown", "Millers Island", "Millersville", "Millington", "Mitchellville", "Monkton", "Monrovia", "Mount Airy", 
"Mount Rainier", "Mount Savage", "Mountain Lake Park", "Mt. Airy", "Mt. Vernon", "Mt. Washington", "Myersville", "Nanjemony", 
"Nanticoke", "Neavitt", "New Carrollton", "New Market", "New Windsor", "Newburg", "North Beach", "North Bethesda", "North Brentwood", 
"North East", "North Linthicum", "Oakland", "Ocean City", "Ocean Pines", "Odenton", "Oella", "Oldtown", "Olney", "Oriole", 
"Owings", "Owings Mills", "Oxford", "Oxon Hill", "Park Hall", "Parkton", "Parkville", "Parsonburg", "Pasadena", "Patuxent River",
"Perry Hall", "Perryville", "Phoenix", "Pikesville", "Piney Point", "Pinto", "Pleasant Valley", "Pocomoke City", "Point Lookout", 
"Poolesville", "Port Deposit", "Port Republic ", "Port Tobacco", "Potomac", "Powellville", "Prince Frederick", "Princess Anne", 
"Pylesville", "Quantico", "Queen Anne", "Queenstown", "Randallstown", "Rawlings", "Red House", "Reisterstown", "Reliance", 
"Rhodes Point", "Ridge", "Ridgely", "Rising Sun", "Riva", "Riverdale", "Rock Hall", "Rockville", "Rose Haven", "Rosedale", 
"Royal Oak", "Salisbury", "Sandy Spring", "Savage", "Scaggsville", "Scotland", "Seat Pleasant", "Severn", "Severna Park", 
"Shady Side", "Sharpsburg", "Sharptown", "Sherwood", "Sidling Hills", "Silver Spring", "Smith Island", "Smithsburg", 
"Snow Hill ", "Solomons", "Sparks", "St. Inigoes", "St. Leonard", "St. Mary's City", "St. Michaels", "Stevenson", "Stevensville", 
"Still Pond", "Street", "Sudlersville", "Suitland", "Sunderland", "Swanton", "Sykesville", "Takoma Park", "Tall Timbers", "Taneytown", 
"Taylors Island", "Temple Hills", "Thurmont", "Tilghman", "Timonium", "Tolchester", "Towson", "Tracy's Landing", "Trappe", "Tyaskin", 
"Tylerton", "U.S. Naval Academy", "Union Bridge", "Union Mills", "Uniontown", "Upper Fairmount", "Upper Falls", "Upper Marlboro", 
"Upperco", "Urbana", "Valley Lee", "Vienna", "Waldorf", "Walkersville", "Warwick", "Welcome", "Wenona", "West Friendship", "West River", 
"Westernport", "Westminster", "Westover", "Whaleyville", "Wheaton", "White Hall", "White Haven", "White Marsh", "White Oak", 
"White Plains", "WhiteFord", "Whorton", "Williamsport", "Winfield", "Wingate", "Wittman", "Woodbine", "Woodlawn", "Woodsboro", 
"Woodstock", "WOOLFORD", "Worthington Valley", "Worton", "Wye Landing", "Wye Mills");
aMail.sort();

function Complete(obj, evt) {
	 if ((!obj) || (!evt) || (aMail.length == 0)) {
 	 	return;
  }

  if (obj.value.length == 0) {
  		return;
  }

  var elm = (obj.setSelectionRange) ? evt.which : evt.keyCode;

  if ((elm < 32) || (elm >= 33 && elm <= 46) || (elm >= 112 && elm <= 123)) {
  		return;
  }

  var txt = obj.value.replace(/;/gi, ",");
  elm = txt.split(",");
  txt = elm.pop();
  txt = txt.replace(/^\s*/, "");

  if (txt.length == 0) {
  		return;
  }

  if (obj.createTextRange) {
   	var rng = document.selection.createRange();
  		if (rng.parentElement() == obj) {
   			elm = rng.text;
  	 		var ini = obj.value.lastIndexOf(elm);
  		}
  } else if (obj.setSelectionRange) {
  		var ini = obj.selectionStart;
  }

  for (var i = 0; i < aMail.length; i++) {
   	elm = aMail[i].toString();
  		if (elm.toLowerCase().indexOf(txt.toLowerCase()) == 0) {
   			obj.value += elm.substring(txt.length, elm.length);
  	 		break;
  		}
  }

  if (obj.createTextRange) {
  		rng = obj.createTextRange();
  		rng.moveStart("character", ini);
  		rng.moveEnd("character", obj.value.length);
  		rng.select();
  } else if (obj.setSelectionRange) {
  		obj.setSelectionRange(ini, obj.value.length);
  }
}
