/* 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("", "Abertellidae", "Acanthoceratidae", "Acanthocladiidae", "Aclididae", "Acmaeidae", "Acroporidae", "Acrothelidae", "Acrotretidae", "Acteocinidae", "Acteonidae", "Actinocrinitidae", "Actinostromatidae", "Adeonidae", "Agariciidae", "Agassizocrinidae", "Agelacrinitidae", "Agnostidae", "Akeridae", "Alabaminidae", "Allodesmatidae", "Alokistocaridae", "Amaltheidae", "Amathinidae", "Ambocoeliidae", "Ambonychiidae", "Amnicolidae", "Amotapidae", "Amphibolidae", "Amphisteginidae", "Ampullinidae", "Ampullospiridae", "Anachytidae", "Ancylidae", "Andrioporidae", "Annulariidae", "Anomalinidae", "Anomiidae", "Anoplothecidae", "Antedonidae", "Anthemiphyllidae", "Apiocrinitidae", "Aplysiidae", "Aporrhaidae", "Arachnophyllidae", "Arachnopusiidae", "Arbaciidae", "Arcestidae", "Archaeobalanidae", "Archaeocidaridae", "Archaeocrinidae", "Archaeocyathidae", "Architectonicidae", "Arcidae", "Arcticidae", "Arietitidae", "Aristeidae", "Aristocystitidae", "Asaphidae", "Asaphiscidae", "Aspidoceratidae", "Aspidostomatidae", "Assimineidae", "Astacidae", "Astartidae", "Asterigerinidae", "Asteriidae", "Astraeospongiidae", "Astriclypeidae", "Astrocoeniidae", "Astrocrinidae", "Astropectinidae", "Astrorhizidae", "Astylospongiidae", "Ataxophragmiidae", "Athyrididae", "Atlantidae", "Atrypidae", "Aturiidae", "Aulophyllidae", "Auloporidae", "Aviculopectinidae", "Bactritidae", "Baculitidae", "Bairdiidae", "Bairdiocyprididae", "Balanidae", "Barroisiidae", "Barycrinidae", "Bassleroceratidae", "Bathyuridae", "Batocrinidae", "Batostomellidae", "Bellerophontidae", "Bellinuridae", "Belosaepiidae", "Belosperidae", "Beyrichiidae", "Beyrichitidae", "Billingsellidae", "Blothrocrinidae", "Bolivinitidae", "Bourgueticrinidae", "Brachiospongiidae", "Brachycytheridae", "Brancoceratidae", "Brissidae", "Buccinidae", "Buchiidae", "Buliminidae", "Bulimulidae", "Bullidae", "Bunodidae", "Bursidae", "Buxtoniidae", "Bythocytheridae", "Caecidae", "Calanticidae", "Calappidae", "Callianassidae", "Callocystitidae", "Calloporidae", "Calymenidae", "Calyptraeidae", "Camaenidae", "Camarotoechiidae", "Campanilidae", "Campylocytheridae", "Cancellariidae", "Cancellothyrididae", "Cancridae", "Caprinidae", "Capulidae", "Carcineretidae", "Cardiidae", "Cardiniidae", "Carditidae", "Carpiliidae", "Caryocrinitidae", "Caryophylliidae", "Cassidae", "Cassidulidae", "Cassidulinidae", "Caucasinidae", "Cavoliniidae", "Cavusgnathidae", "Celleporidae", "Celyphiidae", "Centronellidae", "Ceramoporidae", "Ceratitidae", "Ceresidae", "Cerionidae", "Cerithiidae", "Cerithiopsidae", "Chaetetidae", "Chaetopleuridae", "Chamidae", "Charopidae", "Cheiloporinidae", "Cheiragonidae", "Cheiruridae", "Chitonidae", "Chondrodontidae", "Chondropomidae", "Chonetidae", "Chthamalidae", "Cibicididae", "Cidaridae", "Cirolanidae", "Clavagellidae", "Cleidochasmatidae", "Clionidae", "Clypeasteridae", "Cocculinidae", "Codasteridae", "Codiacrinidae", "Coleodontidae", "Colloniidae", "Columbariidae", "Columbellidae", "Comasteridae", "Condylocardiidae", "Conidae", "Conocardiidae", "Conoclypidae", "Conocoryphidae", "Constellariidae", "Conulariidae", "Conulidae", "Coralliophilidae", "Corbiculidae", "Corbiculiidae", "Corbulidae", "Cornulitidae", "Coronulidae", "Coscinocyathidae", "Coscinopleuridae", "Costellariidae", "Costispiriferidae", "Craniidae", "Craspedophyllidae", "Crassatellidae", "Crepidulidae", "Cribrilinidae", "Ctenochelidae", "Ctenodontidae", "Cucullaeidae", "Cultellidae", "Cupuladriidae", "Cuspidariidae", "Cyathaxoniidae", "Cyathopsidae", "Cyclicoporidae", "Cyclocyprididae", "Cyclolitidae", "Cyclonematidae", "Cyclophoridae", "Cyclostrematidae", "Cylichnidae", "Cylindrophymatidae", "Cypraeidae", "Cyprididae", "Cyrenoididae", "Cyrtiidae", "Cyrtinidae", "Cyrtodontidae", "Cyrtolitidae", "Cyrtospiriferidae", "Cystiphyllidae", "Cytherellidae", "Cytherettidae", "Cytheridae", "Cytherideidae", "Cytheruridae", "Cyzicidae", "Dactylioceratidae", "Dairidae", "Dakoticancridae", "Dallinidae", "Dalmanellidae", "Dalmanitidae", "Darwinulidae", "Dawsonoceratidae", "Delthyrididae", "Dendrasteridae", "Dendrocrinidae", "Dendrophyllidae", "Dendrophylliidae", "Dentaliidae", "Diadematidae", "Dialidae", "Diaperoeciidae", "Diastomatidae", "Diastoporidae", "Dichocrinidae", "Dichograptidae", "Dicoelosiidae", "Dicranograptidae", "Dictyoclostidae", "Dictyospongiidae", "Dielasmatidae", "Dieneroceratidae", "Dikelocephalidae", "Diogenidae", "Dionididae", "Diplograptidae", "Discinidae", "Discocyclinidae", "Discorbidae", "Distacodontidae", "Dolerorthidae", "Dolichometopidae", "Donacidae", "Dorypygidae", "Dreissenidae", "Dromiidae", "Dynomenidae", "Dysnoetoporidae", "Eatoniidae", "Echinarachniidae", "Echinasteridae", "Echinidae", "Echinocarididae", "Echinoconchidae", "Echinocyamidae", "Echinolampadidae", "Echinometridae", "Echinoneidae", "Echioceratidae", "Edmondiidae", "Edrioasteridae", "Elachisinidae", "Electridae", "Eligmidae", "Ellesmeroceratidae (?)", "Ellipsocephalidae", "Ellobiidae", "Elphidiidae", "Elythidae", "Encrinidae", "Endoceratidae", "Endothyridae", "Engonoceratidae", "Entalophoridae", "Enteletidae", "Entoliidae", "Eoderoceratidae", "Eotomariidae", "Eouvigerinidae", "Epitoniidae", "Eponididae", "Eratoidae", "Erisocrinidae", "Erodonidae", "Erycinidae", "Eucalyptocrinidae", "Eucalyptocrinitidae", "Eucandonidae", "Euconulidae", "Eucrinuridae", "Eudesiidae", "Eugonatonotidae", "Eulimidae", "Euomphalidae", "Euphyllidae", "Euproopidae", "Eurypteridae", "Exechonellidae", "Exochellidae", "Farciminariidae", "Fasciolariidae", "Faujasiidae", "Faviidae", "Favositidae", "Fenestellidae", "Ferussaciidae", "Fibulariidae", "Ficidae", "Fimbriidae", "Fischerinidae", "Fissurellidae", "Fistuliporidae", "Flabellidae", "Formicidae", "Fossaridae", "Frondiporidae", "Fungiidae", "Furcasteridae", "Fusidae", "Fusulinidae", "Gadilidae", "Gadilinidae", "Galatheidae", "Galeritidae", "Gastrochaenidae", "Gastrodontidae", "Geryonidae", "Glandulinidae", "Globigerinidae", "Globorotaliidae", "Glossidae", "Glycymerididae", "Glyphocrangonidae", "Glyphocyphidae", "Glyphoneustidae", "Glyptocrinidae", "Goneplacidae", "Goniasteridae", "Goniatitidae", "Goniophyllidae", "Goniopygidae", "Gorgoniidae", "Gryllidae", "Gryphaeidae", "Guyniidae", "Halliidae", "Halloporidae", "Halysitidae", "Hamineidae", "Hamitidae", "Hapalocrinidae", "Hapsiphyllidae", "Harpidae", "Heliasteridae", "Helicinidae", "Helicodiscidae", "Heliolitidae", "Helioporidae", "Helminthoglyptidae", "Hemiasteridae", "Hemicidaridae", "Hemicystitidae", "Hemicytheridae", "Hepatidae", "Hercoglossidae", "Heteralepadidae", "Heterocrinidae", "Heterohelicidae", "Heteroporidae", "Heterotrypidae", "Hexacrinitidae", "Hiantoporidae", "Hiatellidae", "Hildoceratidae", "Himerometridae", "Hincksinidae", "Hippidae", "Hippolytidae", "Hipponicidae", "Hippoporinidae", "Hippothoidae", "Hippuritidae", "Holasteridae", "Holectypidae", "Holopeidea", "Homalonotidae", "Homocrinidae", "Homolidae", "Hoplitidae", "Horneridae", "Huenellidae", "Hydractiniidae", "Hydreionocrinidae", "Hydrobiidae", "Hydrophilidae", "Hymenocarididae", "Hyriidae", "Icriodontidae", "Idiognathodontidae", "Illaenidae", "Indocrinidae", "Inoceramidae", "Iocrinidae", "Iravadiidae", "Ischnochitonidae", "Isochilinidae", "Isognomonidae", "Juliidae", "Kelliellidae", "Kelliidae", "Kingstoniidae", "Laevidentaliidae", "Laganidae", "Lagenidae", "Lamellariidae", "Lampterocrinidae", "Lapraliellidae", "Laqueidae", "Lasaeidae", "Laternulidae", "Leguminocythereididae", "Lepadidae", "Leperditiidae", "Lepidocyclinidae", "Leptaenidae", "Leptocytheridae", "Leptonidae", "Leucosiidae", "Lichenoporidae", "Limacinidae", "Limidae", "Limnocytheridae", "Limopsidae", "Limulidae", "Lingulidae", "Linoproductidae", "Liosphaeridae", "Liparoceratidae", "Lithostrotionidae", "Litiopidae", "Littorinidae", "Lituolidae", "Lophophyllidiidae", "Lophospiridae", "Loveniidae", "Loxoconchidae", "Loxonematidae", "Lucinidae", "Luidiidae", "Lunulitidae", "Lymnaeidae", "Lyonsiidae", "Lyttoniidae", "Macluritidae", "Macrocyprididae", "Mactridae", "Mactromyidae", "Magilidae", "Majidae", "Majumiidae", "Malleidae", "Malletiidae", "Mamilloporidae", "Margaritariidae", "Marginellidae", "Marginiferidae", "Marjumiidae", "Marrellidae", "Mathildidae", "Meandrinidae", "Mecynoeciidae", "Meekellidae", "Meekoceratidae", "Meekospiridae", "Megalodontidae", "Megalomastomidae", "Megathyrididae", "Megomphicidae", "Melanopsidae", "Mellitidae", "Melongenidae", "Membraniporidae", "Menippidae", "Meristellidae", "Merulinidae", "Mesodesmatidae", "Mesopalaeasteridae", "Mespilocrinidae", "Metrarabdotosidae", "Metriophyllidae", "Micrabaciidae", "Micrasteridae", "Microceramidae", "Micromelaniidae", "Microporellidae", "Miliolidae", "Milleporidae", "Millericrinidae", "Mithracidae", "Mitridae", "Mocroporidae", "Modiomorphidae", "Modulidae", "Monograptidae", "Monophorasteridae", "Monopleuridae", "Monotidae", "Montacutidae", "Monticuliporidae", "Montlivaltiidae", "Mucrospiriferidae", "Murchisoniidae", "Muricidae", "Mussidae", "Mycetophilidae", "Myidae", "Myochamidae", "Mysidiellidae", "Mytilidae", "Nassariidae", "Naticidae", "Nautilidae", "Neocytherideidae", "Neoicoceratidae", "Neolaganidae", "Nephropidae", "Neptuneidae", "Nerineidae", "Neritidae", "Neritopsidae", "Nodosariidae", "Noetiidae", "Nonionidae", "Nostoceratidae", "Notarchidae", "Notosariidae", "Nucinellidae", "Nucleocrinidae", "Nucleolitidae", "Nuculanidae", "Nuculidae", "Nummulitidae", "Nymphalidae", "Obolellidae", "Obolidae", "Obtortionidae", "Oculinidae", "Ocypodidae", "Odontasteridae", "Odostomiidae", "Ogygopsidae", "Oleacinidae", "Olenellidae", "Olenidae", "Oligopygidae", "Oligorhynchiidae", "Olividae", "Omalaxidae", "Oncoceratidae", "Onychocellidae", "Onychochellidae", "Ophiletidae", "Ophiletoidea", "Ophiothricidae", "Ophiuridae", "Oppeliidae", "Orbitoididae", "Orbituliporidae", "Oreasteridae", "Ormoceratidae", "Orthalicidae", "Orthidae", "Orthoceratidae", "Orthopsidae", "Orthotetidae", "Ostreidae", "Ottoiidae", "Ovulidae", "Oxynaspididae", "Pachyteuthidae", "Paguridae", "Palaeacmaeidae", "Palaeophonidae", "Palasterinidae", "Paleopneustidae", "Palicidae", "Palinuridae", "Pandalidae", "Pandoridae", "Panopeidae", "Paracyprididae", "Paradoxididae", "Paradoxostomatidae", "Parallelodontidae", "Paranannitidae", "Parastrophinidae", "Parthenopidae", "Patellidae", "Paterinidae", "Pectinidae", "Pectiniidae", "Pedinidae", "Penaeidae", "Pentacrinitidae", "Pentameridae", "Pentremitidae", "Periechocrinidae", "Periplomatidae", "Petraliellidae", "Petricolidae", "Phacopidae", "Phaenoschismatidae", "Phasianellidae", "Phidoloporidae", "Philinidae", "Phillipsastraeidae", "Phillipsiidae", "Pholadidae", "Pholadomyidae", "Phoridae", "Phragmoceratidae", "Phylactellidae", "Phylloceratidae", "Phymosomatidae", "Physidae", "Pieridae", "Pilidae", "Pilumnidae", "Pinnidae", "Pinnotheridae", "Pisidae", "Pisocrinidae", "Placenticeridae", "Plaesiomyidae", "Plagioeciidae", "Planaxidae", "Planorbidae", "Platidiidae", "Platyceratidae", "Platycrinitidae", "Plectorthidae", "Pleuroceridae", "Pleurodesmatidae", "Pleurostomellidae", "Pleurotomariidae", "Plicatulidae", "Pliocardiidae", "Pliolampadidae", "Pliomeridae", "Plumatellidae", "Pocilloporidae", "Poecilasmatidae", "Polychelidae", "Polygnathidae", "Polygyridae", "Polymorphinidae", "Porcellanidae", "Poritidae", "Poromyidae", "Portunidae", "Potamididae", "Poteriidae", "Prioniodinidae", "Prioniodontidae", "Productellidae", "Productidae", "Proetidae", "Propeamussiidae", "Proptychitidae", "Proserpinidae", "Protoscutellidae", "Psammobiidae", "Pseudoarctolepidae", "Pseudodiadematidae", "Pseudomelaniidae", "Pseudophasmatidae", "Pseudorthoceratidae", "Pteriidae", "Pterineidae", "Pterocephaliidae", "Ptilodictyidae", "Pugnacidae", "Punctidae", "Pupillidae", "Pupullidae", "Purpuridae", "Pychomyidae", "Pycnoidocyathidae", "Pygasteridae", "Pyramidellidae", "Pyrgomatidae", "Radiolitidae", "Ranellidae", "Raninidae", "Raphistomatidae", "Raymondinidae", "Receptaculidae", "Reptariidae", "Reteporidae", "Retroplumidae", "Retusidae", "Retziidae", "Rhabdomesidae", "Rhinidictyidae", "Rhinocarididae", "Rhinoporidae", "Rhipidomellidae", "Rhizangiidae", "Rhynchonellidae", "Rhynchospirinidae", "Rhynchotrematidae", "Ribeiriidae", "Richthofeniidae", "Ringiculidae", "Rissoidae", "Rotaliidae", "Rzehakinidae", "Sabellariidae", "Sagdidae", "Saleniidae", "Satyridae", "Saukiidae", "Scalpellidae", "Scaphandridae", "Scaphitidae", "Schizasteridae", "Schizoblastidae", "Schizoporellidae", "Schuchertellidae", "Scutellidae", "Scyllaridae", "Seguenziidae", "Semelidae", "Seraphsidae", "Serpulidae", "Sertellidae", "Setosellidae", "Sicyoniidae", "Siderastreidae", "Siliquariidae", "Sinuitidae", "Siphoninidae", "Siphonodentaliidae", "Skeneidae", "Smittinidae", "Solecurtidae", "Solemyidae", "Solenidae", "Solidobalanidae", "Soritidae", "Sowerbyellidae", "Spatangidae", "Sphaeriidae", "Spheniopsidae", "Sphenodiscidae", "Spinagnostidae", "Spinocyrtiidae", "Spiraxidae", "Spiriferidae", "Spondylidae", "Sportellidae", "Squillidae", "Stauriidae", "Steginoporellidae", "Stellispongiidae", "Stenoporidae", "Stephanocrinidae", "Stichopodidae", "Stiliferidae", "Stomechinidae", "Stramentidae", "Strapobidae", "Streptelasmatidae", "Strobilopsidae", "Stromatoporidae", "Strombidae", "Strongylocentrotidae", "Strophalosiidae", "Stropheodontidae", "Strophomenidae", "Struthiolariidae", "Stylinidae", "Styliolinidae", "Stylonuridae", "Subulinidae", "Subulitidae", "Succineidae", "Sycocrinitidae", "Symbathocrinidae", "Synastreidae", "Synerocrinidae", "Syringophyllidae", "Tainoceratidae", "Tellinidae", "Temnopleuridae", "Tentaculitidae", "Terebratellidae", "Terebratulidae", "Terebridae", "Teredinidae", "Tetraclitidae", "Textulariidae", "Thaididae", "Thalamoporellidae", "Thamnasteriidae", "Thecideidae", "Thiaridae", "Thraciidae", "Thyasiridae", "Timorechinidae", "Tindariidae", "Tonnidae", "Tornidae", "Tornoceratidae", "Torynommidae", "Toxasteridae", "Toxopneustidae", "Trachyleberididae", "Trachyphylliidae", "Trapeziidae", "Trematidae", "Trematoporidae", "Tretocycloeciidae", "Trichotropidae", "Tricoliidae", "Tridacnidae", "Triforidae", "Trigoniidae", "Trigonirhynchiidae", "Trimerellidae", "Trinucleidae", "Triphoridae", "Triplesiidae", "Triviidae", "Trochidae", "Trocholitidae", "Trochonematidae", "Tropidoleptidae", "Truncatellidae", "Trypetesidae", "Tubiporidae", "Tubucellariidae", "Tubuliporidae", "Turbinellidae", "Turbinidae", "Turbiniidae", "Turridae", "Turrilinidae", "Turrilitidae", "Turritellidae", "Tychidae", "Tylodinidae", "Uncinulidae", "Ungulinidae", "Unionidae", "Urocoptidae", "Uvigerinidae", "Vasidae", "Veneridae", "Vermetidae", "Verrucidae", "Verticordiidae", "Vertiginidae", "Vesicomyidae", "Vesiculariidae", "Virgianidae", "Vitrinellidae", "Viviparidae", "Volutidae", "Volutomitridae", "Wellerellidae", "Xancidae", "Xanthidae", "Xenoceltitidae", "Xenocrinidae", "Xenophoridae", "Xestoleberididae", "Yoldiidae", "Zacanthoididae", "Zaphrentidae", "Zeilleriidae", "Zonitidae");
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);
  }
}
