var kNoCanonicalCounterpart = 0;
var kCapitalLetter = 0;
var kSmallLetter = 1;
var kDigit = 2;
var kPunctuation = 3;
var kAlpha =  4;
var kCanonicalizeLettersOnly = true;
var kCananicalizeEverything = false;
var gDebugOutput = null;
var kDebugTraceLevelNone = 0;
var kDebugTraceLevelSuperDetail = 120;
var kDebugTraceLevelRealDetail = 100;
var kDebugTraceLevelAll = 80;
var kDebugTraceLevelMost = 60;
var kDebugTraceLevelFew = 40;
var kDebugTraceLevelRare = 20;
var gDebugTraceLevel = kDebugTraceLevelNone;
function DebugPrint()
{
var string = "";
if (gDebugTraceLevel && gDebugOutput &&
DebugPrint.arguments && (DebugPrint.arguments.length > 1) && (DebugPrint.arguments[0] <= gDebugTraceLevel))
{
for(var index = 1; index < DebugPrint.arguments.length; index++)
{
string += DebugPrint.arguments[index] + " ";
}
string += "<br>\n";
gDebugOutput(string);
}
}
function CSimilarityMap()
{
this.m_elements = "";
this.m_canonicalCounterparts = "";
}
function SimilarityMap_Add(element, canonicalCounterpart)
{
this.m_elements += element;
this.m_canonicalCounterparts += canonicalCounterpart;
}
function SimilarityMap_Lookup(element)
{
var canonicalCounterpart = kNoCanonicalCounterpart;
var index = this.m_elements.indexOf(element);
if (index >= 0)
{
canonicalCounterpart = this.m_canonicalCounterparts.charAt(index);
}
else
{
}
return canonicalCounterpart;
}
function SimilarityMap_GetCount()
{
return this.m_elements.length;
}
CSimilarityMap.prototype.Add = SimilarityMap_Add;
CSimilarityMap.prototype.Lookup = SimilarityMap_Lookup;
CSimilarityMap.prototype.GetCount = SimilarityMap_GetCount;
function CDictionaryEntry(length, wordList)
{
this.m_length = length;
this.m_wordList = wordList;
}
function DictionaryEntry_Lookup(strWord)
{
var fFound = false;
if (strWord.length == this.m_length)
{
var nFirst = 0;
var nLast = this.m_wordList.length - 1;
while( nFirst <= nLast )
{
var nCurrent = Math.floor((nFirst + nLast)/2);
if( strWord == this.m_wordList[nCurrent])
{
fFound = true;
break;
}
else if ( strWord > this.m_wordList[nCurrent])
{
nLast = nCurrent - 1;
}
else
{
nFirst = nCurrent + 1;
}
}
}

return fFound;
}
CDictionaryEntry.prototype.Lookup = DictionaryEntry_Lookup;
function CDictionary()
{
this.m_entries = new Array()
}
function Dictionary_Lookup(strWord)
{
for (var index = 0; index < this.m_entries.length; index++)
{
if (this.m_entries[index].Lookup(strWord))
{
return true;
}
}
}
function Dictionary_Add(length, wordList)
{
var iL=this.m_entries.length;
var cD=new CDictionaryEntry(length, wordList)
this.m_entries[iL]=cD;
}
CDictionary.prototype.Lookup = Dictionary_Lookup;
CDictionary.prototype.Add = Dictionary_Add;
var gSimilarityMap = new CSimilarityMap();
var gDictionary = new CDictionary();
function CharacterSetChecks(type, fResult)
{
this.type = type;
this.fResult = fResult;
}
function isctype(character, type, nDebugLevel)
{
var fResult = false;
switch(type)
{
case kCapitalLetter:
if((character >= 'A') && (character <= 'Z'))
{
fResult = true;
}
break;
case kSmallLetter:
if ((character >= 'a') && (character <= 'z'))
{
fResult = true;
}
break;
case kDigit:
if ((character >= '0') && (character <= '9'))
{
fResult = true;
}
break;
case kPunctuation:
if ("!@#$%^&*()_+-='\";:[{]}\|.>,</?`~".indexOf(character) >= 0)
{
fResult = true;
}
break;
case kAlpha:
if (isctype(character, kCapitalLetter) || isctype(character, kSmallLetter))
{
fResult = true;
}
break;
default:
break;
}

return fResult;
}
function CanonicalizeWord(strWord, similarityMap, fLettersOnly)
{
var canonicalCounterpart = kNoCanonicalCounterpart;
var strCanonicalizedWord = "";
var nStringLength = 0;
if ((strWord != null) && (strWord.length > 0))
{
strCanonicalizedWord = strWord;
strCanonicalizedWord = strCanonicalizedWord.toLowerCase();

if (similarityMap.GetCount() > 0)
{
nStringLength = strCanonicalizedWord.length;

for(var index = 0; index < nStringLength; index++)
{
if (fLettersOnly && !isctype(strCanonicalizedWord.charAt(index), kSmallLetter, kDebugTraceLevelSuperDetail))
{
continue;
}

canonicalCounterpart = similarityMap.Lookup(strCanonicalizedWord.charAt(index));
if (canonicalCounterpart != kNoCanonicalCounterpart)
{
strCanonicalizedWord = strCanonicalizedWord.substring(0, index) + canonicalCounterpart +
strCanonicalizedWord.substring(index + 1, nStringLength);
}
}
}
}
return strCanonicalizedWord;
}
function IsLongEnough(strWord, nAtLeastThisLong)
{
if ((strWord == null) || isNaN(nAtLeastThisLong))
{
return false;
}
else if (strWord.length < nAtLeastThisLong)
{
return false;
}

return true;
}
function SpansEnoughCharacterSets(strWord, nAtLeastThisMany)
{
var nCharSets = 0;
var characterSetChecks = new Array(
new CharacterSetChecks(kCapitalLetter, false),
new CharacterSetChecks(kSmallLetter, false),
new CharacterSetChecks(kDigit, false),
new CharacterSetChecks(kPunctuation, false)
);
if ((strWord == null) || isNaN(nAtLeastThisMany))
{
return false;
}

for(var index = 0; index < strWord.length; index++)
{
for(var nCharSet = 0; nCharSet < characterSetChecks.length;nCharSet++)
{
if (!characterSetChecks[nCharSet].fResult && isctype(strWord.charAt(index), characterSetChecks[nCharSet].type, kDebugTraceLevelAll))
{
characterSetChecks[nCharSet].fResult = true;
break;
}
}
}
for(var nCharSet = 0; nCharSet < characterSetChecks.length;nCharSet++)
{
if (characterSetChecks[nCharSet].fResult)
{
nCharSets++;
}
}

if (nCharSets < nAtLeastThisMany)
{
return false;
}

return true;
}
function FoundInDictionary(strWord, similarityMap, dictionary)
{
var strCanonicalizedWord = "";

if((strWord == null) || (similarityMap == null) || (dictionary == null))
{
return true;
}
strCanonicalizedWord = CanonicalizeWord(strWord, similarityMap, kCanonicalizeLettersOnly);

if (dictionary.Lookup(strCanonicalizedWord))
{
return true;
}

return false;
}
function IsCloseVariationOfAWordInDictionary(strWord, threshold, similarityMap, dictionary)
{
var strCanonicalizedWord = "";
var nMinimumMeaningfulMatchLength = 0;

if((strWord == null) || isNaN(threshold) || (similarityMap == null) || (dictionary == null))
{
return true;
}
strCanonicalizedWord = CanonicalizeWord(strWord, similarityMap, kCananicalizeEverything);
nMinimumMeaningfulMatchLength = Math.floor((threshold) * strCanonicalizedWord.length);
for (var nSubStringLength = strCanonicalizedWord.length; nSubStringLength >= nMinimumMeaningfulMatchLength; nSubStringLength--)
{
for(var nSubStringStart = 0; (nSubStringStart + nMinimumMeaningfulMatchLength) < strCanonicalizedWord.length; nSubStringStart++)
{
var strSubWord = strCanonicalizedWord.substr(nSubStringStart, nSubStringLength);

if (dictionary.Lookup(strSubWord))
{
return true;
}
}
}
return false;
}
function Init()
{
gSimilarityMap.Add('3', 'e');
gSimilarityMap.Add('x', 'k');
gSimilarityMap.Add('5', 's');
gSimilarityMap.Add('$', 's');
gSimilarityMap.Add('6', 'g');
gSimilarityMap.Add('7', 't');
gSimilarityMap.Add('8', 'b');
gSimilarityMap.Add('|', 'l');
gSimilarityMap.Add('9', 'g');
gSimilarityMap.Add('+', 't');
gSimilarityMap.Add('@', 'a');
gSimilarityMap.Add('0', 'o');
gSimilarityMap.Add('1', 'l');
gSimilarityMap.Add('2', 'z');
gSimilarityMap.Add('!', 'i');
gDictionary.Add(3, 
"oat|not|ken|keg|ham|hal|gas|cpu|cit|bop|bah".split("|"));
gDictionary.Add(4, 
"zeus|ymca|yang|yaco|work|word|wool|will|viva|vito|vita|visa|vent|vain|uucp|util|utah|unix|trek|town|torn|tina|time|tier|tied|tidy|tide|thud|test|tess|tech|tara|tape|tapa|taos|tami|tall|tale|spit|sole|sold|soil|soft|sofa|soap|slav|slat|slap|slam|shit|sean|saud|sash|sara|sand|sail|said|sago|sage|saga|safe|ruth|russ|rusk|rush|ruse|runt|rung|rune|rove|rose|root|rick|rich|rice|reap|ream|rata|rare|ramp|prod|pork|pete|penn|penh|pend|pass|pang|pane|pale|orca|open|olin|olga|oldy|olav|olaf|okra|okay|ohio|oath|numb|null|nude|note|nosy|nose|nita|next|news|ness|nasa|mike|mets|mess|math|mash|mary|mars|mark|mara|mail|maid|mack|lyre|lyra|lyon|lynx|lynn|lucy|love|lose|lori|lois|lock|lisp|lisa|leah|lass|lash|lara|lank|lane|lana|kink|keri|kemp|kelp|keep|keen|kate|karl|june|judy|judo|judd|jody|jill|jean|jane|isis|iowa|inna|holm|help|hast|half|hale|hack|gust|gush|guru|gosh|gory|golf|glee|gina|germ|gatt|gash|gary|game|fred|fowl|ford|flea|flax|flaw|finn|fink|film|fill|file|erin|emit|elmo|easy|done|disk|disc|diet|dial|dawn|dave|data|dana|damn|dame|crab|cozy|coke|city|cite|chem|chat|cats|burl|bred|bill|bilk|bile|bike|beth|beta|benz|beau|bath|bass|bart|bank|bake|bait|bail|aria|anne|anna|andy|alex|abcd".split("|"));
gDictionary.Add(5, 
"yacht|xerox|wilma|willy|wendy|wendi|water|warez|vitro|vital|vitae|vista|visor|vicky|venus|venom|value|ultra|u.s.a|tubas|tress|tramp|trait|tracy|traci|toxic|tiger|tidal|thumb|texas|test2|test1|terse|terry|tardy|tappa|tapis|tapir|taper|tanya|tansy|tammy|tamie|taint|sybil|suzie|susie|susan|super|steph|stacy|staci|spark|sonya|sonia|solar|soggy|sofia|smile|slave|slate|slash|slant|slang|simon|shiva|shell|shark|sharc|shack|scrim|screw|scott|scorn|score|scoot|scoop|scold|scoff|saxon|saucy|satan|sasha|sarah|sandy|sable|rural|rupee|runty|runny|runic|runge|rules|ruben|royal|route|rouse|roses|rolex|robyn|robot|robin|ridge|rhode|revel|renee|ranch|rally|radio|quark|quake|quail|power|polly|polis|polio|pluto|plane|pizza|photo|phone|peter|perry|penna|penis|paula|patty|parse|paris|parch|paper|panic|panel|olive|olden|okapi|oasis|oaken|nurse|notre|notch|nancy|nagel|mouse|moose|mogul|modem|merry|megan|mckee|mckay|mcgee|mccoy|marty|marni|mario|maria|marcy|marci|maint|maine|magog|magic|lyric|lyons|lynne|lynch|louis|lorry|loris|lorin|loren|linda|light|lewis|leroy|laura|later|lasso|laser|larry|ladle|kinky|keyes|kerry|kerri|kelly|keith|kazoo|kayla|kathy|karie|karen|julie|julia|joyce|jenny|jenni|japan|janie|janet|james|irene|inane|impel|idaho|horus|horse|honey|honda|holly|hello|heidi|hasty|haste|hamal|halve|haley|hague|hager|hagen|hades|guest|guess|gucci|group|grahm|gouge|gorse|gorky|glean|gleam|glaze|ghoul|ghost|gauss|gauge|gaudy|gator|gases|games|freer|fovea|float|fiona|finny|filly|field|erika|erica|enter|enemy|empty|emily|email|elmer|ellis|ellen|eight|eerie|edwin|edges|eatme|earth|eager|dulce|donor|donna|diane|diana|delay|defoe|david|danny|daisy|cuzco|cubit|cozen|coypu|coyly|cowry|condo|class|cindy|cigar|chess|cathy|carry|carol|carla|caret|caren|candy|candi|burma|burly|burke|brian|breed|borax|booze|booty|bloom|blood|bitch|bilge|bilbo|betty|beryl|becky|beach|bathe|batch|basic|bantu|banks|banjo|baird|baggy|azure|arrow|array|april|anita|angie|amber|amaze|alpha|alisa|alike|align|alice|alias|album|alamo|aires|admin|adept|adele|addle|addis|added|acura|abyss|abcde|1701d|123go|!@#$%".split("|"));
gDictionary.Add(6, 
"yankee|yamaha|yakima|y7u8i9|xyzxyz|wombat|wizard|wilson|willie|weenie|warren|visual|virgin|viking|venous|venice|venial|vasant|vagina|ursula|urchin|uranus|uphill|umpire|u.s.a.|tuttle|trisha|trails|tracie|toyota|tomato|toggle|tidbit|thorny|thomas|terror|tennis|taylor|target|tardis|tappet|taoist|tannin|tanner|tanker|tamara|system|surfer|summer|subway|stacie|stacey|spring|sondra|solemn|soleil|solder|solace|soiree|soften|soffit|sodium|sodden|snoopy|snatch|smooch|smiles|slavic|slater|single|singer|simple|sherri|sharon|sharks|sesame|sensor|secret|second|season|search|scroll|scribe|scotty|scooby|schulz|school|scheme|saturn|sandra|sandal|saliva|saigon|sahara|safety|safari|sadism|saddle|sacral|russel|runyon|runway|runoff|runner|ronald|romano|rodent|ripple|riddle|ridden|reveal|return|remote|recess|recent|realty|really|reagan|raster|rascal|random|radish|radial|racoon|racket|racial|rachel|rabbit|qwerty|qawsed|puppet|puneet|public|prince|presto|praise|poster|polite|polish|policy|police|plover|pierre|phrase|photon|philip|persia|peoria|penmen|penman|pencil|peanut|parrot|parent|pardon|papers|pander|pamela|pallet|palace|oxford|outlaw|osiris|orwell|oregon|oracle|olivia|oliver|olefin|office|notion|notify|notice|notate|notary|noreen|nobody|nicole|newton|nevada|mutant|mozart|morley|monica|moguls|minsky|mickey|merlin|memory|mellon|meagan|mcneil|mcleod|mclean|mckeon|mchugh|mcgraw|mcgill|mccann|mccall|mccabe|mayfly|maxine|master|massif|maseru|marvin|markus|malcom|mailer|maiden|magpie|magnum|magnet|maggot|lorenz|lisbon|limpid|leslie|leland|latest|latera|latent|lascar|larkin|langur|landis|landau|lambda|kristy|kristi|krista|knight|kitten|kinney|kerrie|kernel|kermit|kennan|kelvin|kelsey|kelley|keller|keenan|katina|karina|kansas|juggle|judith|jsbach|joshua|joseph|johnny|joanne|joanna|jixian|jimmie|jimbob|jester|jeanne|jasmin|janice|jaguar|jackie|island|invest|instar|ingrid|ingres|impute|holmes|holman|hockey|hidden|hawaii|hasten|harvey|harold|hamlin|hamlet|halite|halide|haggle|haggis|hadron|hadley|hacker|gustav|gusset|gurkha|gurgle|guntis|guitar|graham|gospel|gorton|gorham|gorges|golfer|glassy|ginger|gibson|ghetto|german|george|gauche|gasify|gambol|gamble|gambit|friend|freest|fourth|format|flower|flaxen|flaunt|flakes|finley|finite|fillip|fillet|filler|filled|fermat|fender|fatten|fatima|fathom|father|evelyn|euclid|estate|enzyme|engine|employ|emboss|elanor|elaine|eileen|eighty|eighth|effect|efface|eeyore|eerily|edwina|easier|durkin|durkee|during|durham|duress|duncan|donner|donkey|donate|donald|domino|disney|dieter|device|denise|deluge|delete|debbie|deaden|ddurer|dapper|daniel|dancer|damask|dakota|daemon|cuvier|cuddly|cuddle|cuckoo|cretin|create|cozier|coyote|cowpox|cooper|cookie|connie|coneck|condom|coffee|citrus|citron|citric|circus|charon|change|censor|cement|celtic|cecily|cayuga|catnip|catkin|cation|castle|carson|carrot|carrie|carole|carmen|caress|cantor|burley|burlap|buried|burial|brenda|bremen|breezy|breeze|breech|brandy|brandi|border|borden|borate|bloody|bishop|bilbao|bikini|bigred|betsie|berman|berlin|bedbug|became|beavis|beaver|beauty|beater|batman|bathos|barony|barber|baobab|bantus|banter|bantam|banish|bangui|bangor|bangle|bandit|banana|bakery|bailey|bahama|bagley|badass|aztecs|azsxdc|athena|asylum|arthur|arrest|arrear|arrack|arlene|anvils|answer|angela|andrea|anchor|analog|amazon|amanda|alison|alight|alicia|albino|albert|albeit|albany|alaska|adrian|adelia|adduce|addict|addend|accrue|access|abcdef|abcabc|abc123|a1b2c3|a12345|@#$%^&|7y8u9i|1qw23e|1q2w3e|1p2o3i|1a2b3c|123abc|10sne1|0p9o8i|!@#$%^".split("|"));
gDictionary.Add(7, 
"yolanda|wyoming|winston|william|whitney|whiting|whatnot|vitriol|vitrify|vitiate|vitamin|visitor|village|vertigo|vermont|venturi|venture|ventral|venison|valerie|utility|upgrade|unknown|unicorn|unhappy|trivial|torrent|tinfoil|tiffany|tidings|thunder|thistle|theresa|test123|terrify|teleost|tarbell|taproot|tapping|tapioca|tantrum|tantric|tanning|takeoff|swearer|suzanne|susanne|support|success|student|squires|sossina|soldier|sojourn|soignee|sodding|smother|slavish|slavery|slander|shuttle|shivers|shirley|sheldon|shannon|service|seattle|scooter|scissor|science|scholar|scamper|satisfy|sarcasm|salerno|sailing|saguaro|saginaw|sagging|saffron|sabrina|russell|rupture|running|runneth|rosebud|receipt|rebecca|realtor|raleigh|rainbow|quarrel|quality|qualify|pumpkin|protect|program|profile|profess|profane|private|prelude|porsche|politic|playboy|phoenix|persona|persian|perseus|perseid|perplex|penguin|pendant|parapet|panoply|panning|panicle|panicky|pangaea|pandora|palette|pacific|olivier|olduvai|oldster|okinawa|oakwood|nyquist|nursery|numeric|number1|nullify|nucleus|nuclear|notused|nothing|newyork|network|neptune|montana|minimum|michele|michael|merriam|mercury|melissa|mcnulty|mcnally|mcmahon|mckenna|mcguire|mcgrath|mcgowan|mcelroy|mcclure|mcclain|mccarty|mcbride|mcadams|mbabane|mayoral|maurice|marimba|manhole|manager|mammoth|malcolm|malaria|mailbox|magnify|magneto|losable|lorinda|loretta|lorelei|lockout|lioness|limpkin|library|lazarus|lathrop|lateran|lateral|kristin|kristie|kristen|kinsman|kingdom|kennedy|kendall|kellogg|keelson|katrina|jupiter|judaism|judaica|jessica|janeiro|inspire|inspect|insofar|ingress|indiana|include|impetus|imperil|holmium|holmdel|herbert|heather|headmen|headman|harmony|handily|hamburg|halifax|halibut|halfway|haggard|hafnium|hadrian|gustave|gunther|gunshot|gryphon|gosling|goshawk|gorilla|gleason|glacier|ghostly|germane|georgia|geology|gaseous|gascony|gardner|gabriel|freeway|fourier|flowers|florida|fishers|finnish|finland|ferrari|felicia|feather|fatigue|fairway|express|expound|emulate|empress|empower|emitted|emerald|embrace|embower|ellwood|ellison|egghead|durward|durrell|drought|donning|donahue|digital|develop|desiree|default|deborah|damming|cynthia|cyanate|cutworm|cutting|cuddles|cubicle|crystal|coxcomb|cowslip|cowpony|cowpoke|console|conquer|connect|comrade|compton|collins|cluster|claudia|classic|citroen|citrate|citizen|citadel|cistern|christy|chester|charles|charity|celtics|celsius|catlike|cathode|carroll|carrion|careful|carbine|carbide|caraway|caravan|camille|burmese|burgess|bridget|breccia|bradley|bopping|blondie|bilayer|beverly|bernard|bermuda|berlitz|berlioz|beowulf|beloved|because|beatnik|beatles|beatify|bassoon|bartman|baroque|barbara|baptism|banshee|banquet|bannock|banning|bananas|bainite|bailiff|bahrein|bagpipe|baghdad|bagging|bacchus|asshole|arrange|arraign|arragon|arizona|ariadne|annette|animals|anatomy|anatole|amatory|amateur|amadeus|allison|alimony|aliases|algebra|albumin|alberto|alberta|albania|alameda|aladdin|alabama|airport|airpark|airfoil|airflow|airfare|airdrop|adenoma|adenine|address|addison|accrual|acclaim|academy|abcdefg|!@#$%^&".split("|"));
gDictionary.Add(8, 
"yosemite|y7u8i9o0|wormwood|woodwind|whistler|whatever|warcraft|vitreous|virginia|veronica|venomous|trombone|transfer|tortoise|tientsin|tideland|ticklish|thailand|testtest|tertiary|terrific|terminal|telegram|tarragon|tapeworm|tapestry|tanzania|tantalus|tantalum|sysadmin|symmetry|sunshine|strangle|startrek|springer|sparrows|somebody|solecism|soldiery|softwood|software|softball|socrates|slatting|slapping|slapdash|slamming|simpsons|serenity|security|schwartz|sanctity|sanctify|samantha|salesman|sailfish|sailboat|sagittal|sagacity|sabotage|rushmore|rosemary|rochelle|robotics|reverend|regional|raindrop|rachelle|qwertyui|qwerasdf|qawsedrf|q1w2e3r4|protozoa|prodding|princess|precious|politics|politico|plymouth|pershing|penitent|penelope|pendulum|patricia|password|passport|paranoia|panorama|panicked|pandemic|pandanus|pakistan|painless|operator|olivetti|oleander|oklahoma|notocord|notebook|notarize|nebraska|napoleon|missouri|michigan|michelle|mesmeric|mercedes|mcmullen|mcmillan|mcknight|mckinney|mckinley|mckesson|mckenzie|mcintyre|mcintosh|mcgregor|mcgovern|mcginnis|mcfadden|mcdowell|mcdonald|mcdaniel|mcconnel|mccauley|mccarthy|mccallum|mayapple|masonite|maryland|marjoram|marinate|marietta|maneuver|mandamus|maledict|maladapt|magnuson|magnolia|magnetic|lyrebird|lymphoma|lorraine|lionking|linoleum|limitate|limerick|laterite|landmass|landmark|landlord|landlady|landhold|landfill|kristine|kirkland|kingston|kimberly|khartoum|keystone|kentucky|keeshond|kathrine|kathleen|jubilant|joystick|jennifer|jacobsen|irishman|interpol|internet|insulate|instinct|instable|insomnia|insolent|insolate|inactive|imperial|iloveyou|illinois|hydrogen|hutchins|homework|hologram|holocene|hibernia|hiawatha|heinlein|hebrides|headlong|headline|headland|hastings|hamilton|halftone|halfback|hagstrom|gunsling|gunpoint|gumption|gorgeous|glaucous|glaucoma|glassine|ginnegan|ghoulish|gertrude|geometry|geometer|garfield|gamesman|gamecock|fungible|function|frighten|freetown|foxglove|fourteen|foursome|forsythe|football|flaxseed|flautist|flatworm|flatware|fidelity|exposure|eternity|enthrone|enthrall|enthalpy|entendre|entangle|engineer|emulsion|emulsify|emporium|employer|employee|employed|emmanuel|elliptic|elephant|einstein|eighteen|duration|donnelly|dominion|dlmhurst|delegate|delaware|december|deadwood|deadlock|deadline|deadhead|danielle|cyanamid|cucumber|cristina|criminal|creosote|creation|cowpunch|couscous|conquest|comrades|computer|comprise|compress|colorado|clusters|citation|charming|cerulean|cenozoic|cemetery|cellular|catskill|cationic|catholic|cathodic|catheter|cascades|carriage|caroline|carolina|carefree|cardinal|burgundy|burglary|bumbling|broadway|breeches|bordello|bordeaux|bilinear|bilabial|bernardo|berliner|berkeley|bedazzle|beaumont|beatrice|beatific|bathrobe|baronial|baritone|bankrupt|banister|bakelite|azsxdcfv|asdfqwer|arkansas|appraise|apposite|anything|angerine|ancestry|ancestor|anatomic|anathema|ambiance|alphabet|albright|albrecht|alberich|albacore|alastair|alacrity|airspace|airplane|airfield|airedale|aircraft|airbrush|airborne|aerobics|adrianna|adelaide|additive|addition|addendum|accouter|academic|academia|abcdefgh|abcd1234|a1b2c3d4|7y8u9i0o|7890yuio|1234qwer|0p9o8i7u|0987poiu|!@#$%^&*".split("|"));
gDictionary.Add(9, 
"zimmerman|worldwide|wisconsin|wholesale|vitriolic|ventricle|ventilate|valentine|tidewater|testament|territory|tennessee|telephone|telepathy|teleology|telemetry|telemeter|telegraph|tarantula|tarantara|tangerine|supported|superuser|stuttgart|stratford|stephanie|solemnity|softcover|slaughter|slapstick|signature|sheffield|sarcastic|sanctuary|sagebrush|sagacious|runnymede|rochester|receptive|reception|racketeer|professor|princeton|pondering|politburo|policemen|policeman|persimmon|persevere|persecute|percolate|peninsula|penetrate|pendulous|paralytic|panoramic|panicking|panhandle|oligopoly|oligocene|oligarchy|olfactory|oldenburg|nutrition|nurturant|notorious|notoriety|minnesota|microsoft|mcpherson|mcfarland|mcdougall|mcdonnell|mcdermott|mccracken|mccormick|mcconnell|mccluskey|mcclellan|marijuana|malicious|magnitude|magnetron|magnetite|macintosh|lynchburg|louisiana|lissajous|limousine|limnology|landscape|landowner|kinshasha|kingsbury|kibbutzim|kennecott|jamestown|ironstone|invisible|invention|intuitive|intervene|intersect|inspector|insomniac|insolvent|insoluble|impetuous|imperious|imperfect|holocaust|hollywood|hollyhock|headphone|headlight|headdress|headcount|headboard|happening|hamburger|halverson|gustafson|gunpowder|glasswort|glassware|ghostlike|geometric|gaucherie|freewheel|freethink|freestone|foresight|foolproof|extension|expositor|establish|entertain|employing|emittance|ellsworth|elizabeth|eightieth|eightfold|eiderdown|dusenbury|dusenberg|donaldson|dominique|discovery|desperate|delegable|delectate|decompose|decompile|damnation|cutthroat|crabapple|cornelius|conqueror|connubial|commrades|citizenry|christine|christina|chemistry|cellulose|celluloid|catherine|carryover|burlesque|bloodshot|bloodshed|bloodroot|bloodline|bloodbath|bilingual|bilateral|bijective|bijection|bernadine|berkshire|beethoven|beatitude|bakhtiari|asymptote|asymmetry|apprehend|appraisal|apportion|ancestral|anatomist|alexander|albatross|alabaster|alabamian|adenosine|abcabcabc".split("|"));
gDictionary.Add(10, 
"washington|volkswagen|topography|tessellate|temptation|telephonic|telepathic|telemetric|telegraphy|tantamount|superstage|slanderous|salamander|qwertyuiop|polynomial|politician|phrasemake|photometry|photolytic|photolysis|photogenic|phosphorus|phosphoric|persiflage|persephone|perquisite|peninsular|penicillin|penetrable|panjandrum|oligoclase|oligarchic|oldsmobile|nottingham|noticeable|noteworthy|mcnaughton|mclaughlin|mccullough|mcallister|malconduct|maidenhair|limitation|lascivious|landowning|landlubber|landlocked|lamination|khrushchev|juggernaut|irrational|invariable|insouciant|insolvable|incomplete|impervious|impersonal|headmaster|glaswegian|geopolitic|geophysics|fourteenth|foursquare|expressive|expression|expository|exposition|enterprise|eightyfold|eighteenth|effaceable|donnybrook|delectable|decolonize|cuttlefish|cuttlebone|compromise|compressor|comprehend|cellophane|carruthers|california|burlington|burgundian|borderline|borderland|bloodstone|bloodstain|bloodhound|bijouterie|biharmonic|bernardino|beaujolais|basketball|bankruptcy|bangladesh|atmosphere|asymptotic|asymmetric|appreciate|apposition|ambassador|amateurish|alimentary|additional|accomplish|1q2w3e4r5t".split("|"));
gDictionary.Add(11, 
"yellowstone|venturesome|territorial|telekinesis|sagittarius|safekeeping|politicking|policewoman|photometric|photography|phosphorous|perseverant|persecutory|persecution|penitential|pandemonium|mississippi|marketplace|magnificent|irremovable|interrogate|institution|inspiration|incompetent|impertinent|impersonate|impermeable|headquarter|hamiltonian|halfhearted|hagiography|geophysical|expressible|emptyhanded|eigenvector|deleterious|decollimate|decolletage|connecticut|comptroller|compressive|compression|catholicism|bloodstream|bakersfield|arrangeable|appreciable|anastomotic|albuquerque".split("|"));
gDictionary.Add(12, 
"williamsburg|testamentary|qwerasdfzxcv|q1w2e3r4t5y6|perseverance|pennsylvania|penitentiary|malformation|liquefaction|interstitial|inconclusive|incomputable|incompletion|incompatible|incomparable|imperishable|impenetrable|headquarters|geometrician|ellipsometry|decomposable|decommission|compressible|burglarproof|bloodletting|bilharziasis|asynchronous|asymptomatic|ambidextrous|1q2w3e4r5t6y".split("|"));
gDictionary.Add(13, 
"ventriloquist|ventriloquism|poliomyelitis|phosphorylate|oleomargarine|massachusetts|jitterbugging|interpolatory|inconceivable|imperturbable|impermissible|decomposition|comprehensive|comprehension".split("|"));
gDictionary.Add(14, 
"slaughterhouse|irreproducible|incompressible|comprehensible|bremsstrahlung".split("|"));
gDictionary.Add(15, 
"irreconciliable|instrumentation|incomprehension".split("|"));
gDictionary.Add(16, 
"incomprehensible".split("|"));
}

function ClientSideStrongPassword()
{
return (IsLongEnough(ClientSideStrongPassword.arguments[0], "7") &&
SpansEnoughCharacterSets(ClientSideStrongPassword.arguments[0], "3") &&
(!(IsCloseVariationOfAWordInDictionary(ClientSideStrongPassword.arguments[0], "0.6", 
ClientSideStrongPassword.arguments[1], ClientSideStrongPassword.arguments[2]))));
}

function ClientSideMediumPassword()
{
return (IsLongEnough(ClientSideMediumPassword.arguments[0], "7") &&
SpansEnoughCharacterSets(ClientSideMediumPassword.arguments[0], "2") &&
(!(FoundInDictionary(ClientSideMediumPassword.arguments[0], ClientSideMediumPassword.arguments[1], 
ClientSideMediumPassword.arguments[2]))));
}

function ClientSideWeakPassword()
{
return (IsLongEnough(ClientSideWeakPassword.arguments[0], "6") ||
(!(IsLongEnough(ClientSideWeakPassword.arguments[0], "0"))));
}


function DrDw(F)
{
    var aCL=F.split("~");
    var iC=aCL.length;
    if(aCL[iC-1]==""){iC--}
    var i=0;
    var sS="";
    while(i<iC)
    {
        if(aCL[i]=="SELECTED")
        {
            sS=aCL[i+1];
            i++;
        }
        document.write("<option id=\""+aCL[i]+"\" value=\""+aCL[i]+"\""+((sS==aCL[i])?" selected":"")+">"+aCL[i+1]);
        i=i+2;
    }
}
function DrDw2(F,sS)
{
    var aCL=F.split("~");
    var iC=aCL.length;
    if(aCL[iC-1]==""){iC--;}
    var i=0;
    while(i<iC)
    {
        document.write("<option value=\""+aCL[i]+"\""+((sS==aCL[i])?" selected":"")+">"+aCL[i+1]);
        i=i+2;
    }
}
function SetHP(sHP)
{
    var oD=document.body;
    oD.style.behavior="url(#default#homepage)";
    oD.setHomePage(sHP);
}
function OnSubmit(oF){try{var sPO=parent.opener;
        if(sPO){sPO.TransferUserNameCallback(GEId("iEmail").value+GEId("iEmailDomain").innerHTML);sPO.TransferPasswordCallback(GEId("iPassword").value);}}catch(e){}try{if(oF.sWH.value.length!=0){oF.action+="&wh="+oF.sWH.value;}}catch(e){}}
function IsParent(){if(top.location!=location){top.location.href=document.location.href;}}
function SetFF(sF,sV){var oF=GetEl(sF);if(oF==null||oF.value!=""){return;}oF.value=sV;}
function WebHancer(oF,pid,err)
{if(typeof(oF.sWH)!="undefined"&&pid.length!=0){oF.sWH.value+="["+pid+","+err+"]";}}var h_win;function DoHelp(SM,T,LC,SKU,U,VV){var sQP="",W,H,sWD="toolbar=0,status=0,menubar=0,resizable=1,top=0,width=",sc=screen.width;var ag=navigator.userAgent.toLowerCase();var ap=navigator.appName.toLowerCase();var av=navigator.appVersion;var fMAC=(ag.indexOf('mac')>-1);var fIE=(ag.indexOf("msie")>-1&&parseInt(av.substring(0,1))>=4);var sUB=(U=='')?('/hp.srf?lc='+LC+'&vv='+VV):(U+'?lc='+LC+'&vv='+VV);var oDL=document.location;var fMSN=false,vi=ag.indexOf('msn '),fMACMSN=false;if(vi>-1){fMSN=ag.substring(vi+4);fMSN=parseFloat(fMSN.substring(0,fMSN.indexOf(";")));fMSN=(fMSN!=NaN&&fMSN>=6)}fMACMSN=ag.indexOf('ppc mac os x')>-1&&ag.indexOf('msn explorer')>-1;sQP+=(T=="")?'&SEARCHTERM='+escape(SM):'&TOPIC='+T;sQP+='&v2='+escape(oDL.search)+'&tmt='+escape(window.name);sQP+='&v4='+escape(SKU);if(sc<=800){sQP+="&sp=1";W=180;}else{W=230;}if(fMAC&&fIE){W=224;}H=(ag.indexOf("windows")>0&&ag.indexOf("aol")>0)?screen.availHeight-window.screenTop-22:screen.availHeight;sWD+=W;if(fMSN){window.external.showHelpPane(oDL.protocol+"//"+oDL.hostname+sUB+sQP,W);}else if(ag.indexOf('webtv')>0||ag.indexOf('msn companion')>0||ag.indexOf('stb')>0){oDL=sUB+sQP;}else if(ap.indexOf('netscape')>-1&&av.indexOf('4.')>-1){var fw=12;if(fMAC){sWD+=",height="+(H-38)+",left="+(sc-W-16);fw=30;}else{sWD+=",height="+(H-30)+",left="+(sc-W-12);}top.window.resizeTo(screen.availWidth-W-(window.outerWidth-window.innerWidth)-fw,screen.availHeight-(window.outerHeight-window.innerHeight));top.window.moveTo(0,0);h_win=window.open(sUB+sQP,'_help',sWD);}else if(ag.indexOf("opera")>-1){sWD+=",height="+H+",left="+(sc-W-(fMAC?5:0));window.resizeTo(screen.availWidth-W-(fMAC?20:0),screen.availHeight);window.moveTo(0,0);h_win=window.open(sUB+sQP,'_help',sWD);}else if(ag.indexOf("aol")>-1){sWD+=",height="+(H-115);window.open(sUB+sQP,'_help',sWD);}else if(fIE||ag.indexOf('netscape6')>-1){sWD+=",height="+H+",left="+(sc-W);if(ag.indexOf("msie 4")>0){window.open(sUB+sQP,'_help',sWD);}else{h_win=window.open(sUB+sQP,'_help',sWD);}if(h_win&&!fMAC&&ap.indexOf("netscape")<0){h_win.opener=self;}}else{window.open(sUB+sQP,'_help');}}
var g_hipS;
var g_hipR;
var g_hipI;
var g_hipF;
var g_hipC;
function HIPInit(r,i,f)
{
    g_hipS=i.src;
    g_hipR=r;
    g_hipI=i;
    g_hipF=f;
    g_hipC=0;
}
function HIPSetAudSoln(s)
{
    if(s!="")
    {
        g_hipF.value=s;
        g_hipI.src=g_hipR;
    }else{
        GEId("iHIPHelp").style.display="block";
    }
    g_hipF.focus();
}
function HIPNew()
{
    var h=g_hipI.height;
    var w=g_hipI.width;
    g_hipF.value="";
    g_hipI.src=g_hipS+"&c="+g_hipC;
    g_hipI.height=h;
    g_hipI.width=w;
    g_hipC++;
    g_hipF.focus();
}
function HIPHelp(u)
{
    g_hipI.src=g_hipR;
    g_hipF.value="";
    OpenWindow(u,"PPHIPHelp","width=520,height=505,resizable");
    window.setTimeout("HIPHelpCheck()",1000);
}
function HIPHelpCheck()
{
    if((!WinObj||WinObj.closed)&&(g_hipF.value==""))
    {
       HIPNew();
    }
    else
    {
       window.setTimeout("HIPHelpCheck()",50);
    }
}
function SetFocus(oF,szFN)
{
try
{
    if(typeof(oF)=="object")
    {
        var bF=false;
        var bL=true;
        if(szFN==""){bF=true;}
        for(i=0;i<oF.length;i++)
        {
            try
            {
                var oI=oF.elements[i];
            }
            catch(e)
            {
                continue;
            }
            if(oI.name==szFN)
            {
                bF=true;
            }
            if(oI.type!="hidden"&&
               oI.tagName!="FIELDSET"&&
               oI.disabled!=true&&
               oI.style.visibility!="hidden"&&
               bF)
            {
                oI.focus();
                if(oI.type=="text"||oI.type=="password")
                {
                    oI.select();
                }
                break;
            }
            if(i==oF.length-1&&bL)
            {
                i=-1;
                bF=true;
                bL=false;
            }
        }
    }
}
catch(e){}
}
var WinObj;
function CloseWindow()
{
    if(WinObj&&!WinObj.closed)
    {
        WinObj.close();
    }
    return true;
}
function OpenWindow(szU,Name,Param){if(typeof(CustomOpenWindow)=="function"){CustomOpenWindow(szU,Name,Param);}else{var bO=false;if(!WinObj||WinObj.closed){bO=true;}else{if(szU==WinObj.href){WinObj.focus();}else{CloseWindow();bO=true;}}if(bO){WinObj=window.open(szU,Name,Param);if(!WinObj.opener){WinObj.opener=window;}}}}
function DoCookieTest(sK,sV,sUrl)
{
    if(GetCookieData(sK)!=sV)
    {
        document.location=sUrl;
    }
    return;
}
function GetCookieData(sL)
{
    var sRet="";
    var sC=""+document.cookie;
    if(sC.length>0)
    {
        var aC=sC.split(";",100);
        var iC=aC.length;
        for(var i=0;i<iC;i++)
        {
            if(aC[i].indexOf(sL+"=")!=-1)
            {
                var aRet=aC[i].split("=");
                sRet=unescape(aRet[1]);
                break;
            }
        }
    }
    return sRet;
}
function DisplayDivs(aE,sD)
{
    for(var i=0;i<aE.length;++i)
    {
        var o=GEId(aE[i]);
        if(o)
        {
            o.style.display=sD;
        }
    }
}
function HighLightWrap()
{
    GetRelObj(this,'FIELDSET');
    if(g_OBJRet)
    {
        HighLight(document,g_OBJRet);
    }
}
var g_oFS=null;
function HighLight(oDoc,oFS)
{
    try
    {
        if(oFS!=g_oFS)
        {
            var oFSets=oDoc.getElementsByTagName("fieldset");
            for(var i=0;i<oFSets.length;++i)
            {
                if(oFS==oFSets[i])
                {
                    g_oFS=oFSets[i];
                    oFSets[i].style.border="solid 1px #dde8f3";
                }
                else if(oFSets[i])
                {
                    oFSets[i].style.border="solid 1px #FFF";
                    oFSets[i].style.borderBottom="solid 1px #dde8f3";
                }
                var oTDs=oFSets[i].getElementsByTagName("td");
                for(var j=0;j<oTDs.length;++j)
                {
                    if(oTDs[j]&&oTDs[j].className=="cInfo")
                    {
                        oTDs[j].style.visibility=((oFS==oFSets[i])?"visible":"hidden");
                    }
                }
            }
        }
    }
    catch(e){}
}
function SetFieldEvents(oF)
{
    if(oF!=null&&typeof(oF)=="object")
    {
        for(i=0;i<oF.length;i++)
        {
            try{var oI=oF.elements[i];}
            catch(e){continue;}
            if(oI.type!="hidden"&&
               oI.tagName!="FIELDSET"&&
               oI.disabled!=true&&
               oI.style.visibility!="hidden")
            {
                oI.onfocus=HighLightWrap;
            }
        }
    }
    var oFSets=document.getElementsByTagName("fieldset");
    for(var i=0;i<oFSets.length;++i)
    {
        var oAs=oFSets[i].getElementsByTagName("a");
        for(var j=0;j<oAs.length;++j)
        {
            if(oAs[j])
            {
                oAs[j].onfocus=HighLightWrap;
            }
        }
    }
}
function HId(sId)
{
    try{GEId(sId).style.display="none"}catch(e){};
}
function GEId(sID)
{
    try{return document.getElementById(sID)}catch(e){};
}
function GetEl(szN)
{
    try{return document.getElementsByName(szN)[0]}catch(e){};
}
function GetElCol(szN)
{
    try{return document.getElementsByName(szN)}catch(e){};
}
var g_OBJRet=null;
function GetRelObj(oO,sS)
{
    if(oO.tagName==sS)
    {
        g_OBJRet=oO;
    }
    else
    {
        if(oO.parentNode)
        {
            GetRelObj(oO.parentNode,sS)
        }
    }
    return true;
}
var g_fFocusSet=false;
function Validate(oDoc,oF)
{
    g_fFocusSet=false;
    var fAllValid=true;
    try
    {
        var oPs=document.getElementsByTagName("p");
        for(var i=0;i<oPs.length;++i)
        {
            if(oPs[i]&&oPs[i].className=="cError"&&oPs[i].id!="iEmailAvail")
            {
                oPs[i].style.display="none";
            }
        }
    }
    catch(e){}
    if(oF&&typeof(oF)=="object")
    {
        try{ClearError()}catch(e){}
        for(i=0;i<oF.length;i++)
        {
            try{var oI=oF.elements[i];}
            catch(e){continue;}
            if(!ValidateField(oI,oF,false))
            {
                fAllValid=false;
            }
        }
    }
    return fAllValid;
}
function ValidateField(oI,oF,fS)
{
    var sEI="";
    try{
        if(oI.id=="iEmail")
        {
            sEI='iEmailErr';
            TrimInputSpaces(oI);
            if(IsEmpty(oI.value))
            {
                if(!fS){HId("iEmailAvail")};
                return HdlErr(fS,oI,sEI,g_sEmailEmpty,'e0');
            }
            if(RegErr(g_rEmailHM,oI)||RegErrRV(g_rTwoDots,oI))
            {
                if(!fS){HId("iEmailAvail")};
                return HdlErr(fS,oI,sEI,g_sEMInvalidChar,'e4');
            }
        }
        else if(oI.id=="iPassword")
        {
            sEI='iPasswordErr';
            TrimInputSpaces(oI);
            TrimInputSpaces(oF.iConfPassword);
            if(IsEmpty(oI.value))
            {
                return HdlErr(fS,oI,sEI,g_sPWDEmpty,'p0');
            }
            if(IsEmpty(oF.iConfPassword.value))
            {
                return HdlErr(fS,oF.iConfPassword,sEI,g_sPWDEmpty,'p0');
            }
            if(oI.value!=oF.iConfPassword.value)
            {
                return HdlErr(fS,oI,sEI,g_sPWDMismatch,'p5');
            }
            if(RegErr(g_rPWDL,oI))
            {
                return HdlErr(fS,oI,sEI,g_sPWD2Short,'p1');
            }
            if(InStrErr(oI,oF.iFN))
            {
                return HdlErr(fS,oI,sEI,g_sFNinPWD,'pa');
            }
            if(InStrErr(oI,oF.iLN))
            {
                return HdlErr(fS,oI,sEI,g_sLNinPWD,'pb');
            }
            if(InStrErr(oI,oF.iEmail))
            {
                return HdlErr(fS,oI,sEI,g_sEmailinPWD,'pc');
            }
            if((oF.iSA.value!=""&&oI.value==oF.iSA.value)||InStrErr(oF.iSA,oI))
            {
                return HdlErr(fS,oI,sEI,g_sPWDsimSA,'pd');
            }
            if(InStrErr(oI,oF.iSA))
            {
                return HdlErr(fS,oI,sEI,g_sSAinPWD,'pe');
            }
            if(oF.iSQ.selectedIndex>0&&(InStrErr(oF.iSQ,oI)||InStrErr(oI,oF.iSQ)))
            {
                return HdlErr(fS,oI,sEI,g_sSQinPWD,'pf');
            }
        }
        else if(oI.id=="iSQ")
        {
            sEI='iSQErr';
            if(oI.value=="DGHJLNS")
            {
                return HdlErr(fS,oI,sEI,g_sSQEmpty,'q0');
            }
        }
        else if(oI.id=="iSA")
        {
            sEI='iSAErr';
            TrimInputSpaces(oI);
            if(IsEmpty(oI.value))
            {
                return HdlErr(fS,oI,sEI,g_sSAEmpty,'a0');
            }
            if(oI.value.length<5||oI.value.length>64)
            {
                return HdlErr(fS,oI,sEI,g_sSA2Short,'a1');
            }
            if(CharInStr(g_sSA,oI))
            {
                return HdlErr(fS,oI,sEI,g_sInvalidChar,'a3');
            }
            if(InStrErr(oI,oF.iEmail))
            {
                return HdlErr(fS,oI,sEI,g_sEmailinSA,'ag');
            }
            if(oF.iSQ.selectedIndex>0&&(InStrErr(oI,oF.iSQ)||InStrErr(oF.iSQ,oI)))
            {
                return HdlErr(fS,oI,sEI,g_sSQinSA,'ah');
            }
        }
        else if(oI.id=="iAltEmail"&&!IsEmpty(oI.value))
        {
            sEI='iAltErr';
            TrimInputSpaces(oI);
            if(RegErrRV(g_rBCAltEmail,oI))
            {
                return HdlErr(fS,oI,sEI,g_sEMInvalidChar,'x3');
            }
            if(RegErr(g_rEmail,oI))
            {
                return HdlErr(fS,oI,sEI,g_sAltEMInvalidFormat,'x4');
            }
            if(oI.value.toLowerCase()==(oF.iEmail.value+GEId("iEmailDomain").innerHTML).toLowerCase())
            {
                return HdlErr(fS,oI,sEI,g_sAltEmailSame,'xi');
            }
        }
        else if(oI.id=="iFN")
        {
            sEI='iFNErr';
            TrimInputSpaces(oI);
            if(IsEmpty(oI.value))
            {
                return HdlErr(fS,oI,sEI,g_sInfoReq,'f0');
            }
            if(oI.value.length<1||oI.value.length>64||CharInStr(g_sName,oI))
            {
                return HdlErr(fS,oI,sEI,g_sInvalidChar,'f3');
            }
          }
        else if(oI.id=="iLN")
        {
            sEI='iLNErr';
            TrimInputSpaces(oI);
            if(IsEmpty(oI.value))
            {
                return HdlErr(fS,oI,sEI,g_sInfoReq,'l0');
            }
            if(oI.value.length<1||oI.value.length>64||CharInStr(g_sName,oI))
            {
                return HdlErr(fS,oI,sEI,g_sInvalidChar,'l3');
            }
       }
        else if(oI.id=="iRegion")
        {
            sEI='iRegionErr';
            if(oI.value=="DGHJLNS")
            {
                return HdlErr(fS,oI,sEI,g_sInvalidCountry,'r0');
            }
        }
        else if(oI.id=="iState")
        {
            sEI='iStateErr';
            if(oI.parentNode.style.display!="none"&&oI.value=="DGHJLNS")
            {
                return HdlErr(fS,oI,sEI,g_sInfoReq,'s0');
            }
        }
        else if(oI.id=="iPC")
        {
            sEI='iPCErr';
            if(oI.parentNode.style.display!="none")
            {
                TrimInputSpaces(oI);
                if(IsEmpty(oI.value))
                {
                    return HdlErr(fS,oI,sEI,g_sInfoReq,'z0');
                }
                if(oF.iRegion.value!="DGHJLNS"&&!isValidPC(oF.iRegion.value,oI.value))
                {
                    return HdlErr(fS,oI,sEI,g_sInvalidPC,'z4');
                }
            }
        }
        else if(oI.id=="im"||oI.id=="if")
        {
            sEI='iGenderErr';
            if(GEId("im").checked==false&&GEId("if").checked==false&&typeof(g_OPT[oI.name])=='undefined')
            {
                return HdlErr(fS,oI,sEI,g_sInfoReq,'g0');
            }
        }
        else if(oI.id=="iY"||oI.id=="iMTH"||oI.id=="iDAY")
        {
            sEI='iDate';
            TrimInputSpaces(oF.iY);
            if(IsEmpty(oF.iMTH.value))
            {
                return HdlErr(fS,oF.iMTH,sEI,g_sInfoReq,'d0');
            }
            if(IsEmpty(oF.iDAY.value))
            {
                return HdlErr(fS,oF.iDAY,sEI,g_sInfoReq,'d0');
            }
            if(IsEmpty(oF.iY.value))
            {
                return HdlErr(fS,oF.iY,sEI,g_sInfoReq,'d0');
            }
            if(RegErr(g_rBY,oF.iY))
            {
                return HdlErr(fS,oF.iY,sEI,g_InvalidYear,'d4');
            }
            if((!isValidDate(oF.iY.value,oF.iMTH.value,oF.iDAY.value))||(!isDateGood(oF.iY.value,oF.iMTH.value,oF.iDAY.value)))
            {
                return HdlErr(fS,oI,sEI,g_sBDBad,'d4');
            }
        }
        else if(oI.id=="iHIP")
        {
            if(oI.value=="0"){return true}
            sEI='iHIPErr';
            TrimInputSpaces(oI);
            try{oI.value=oI.value.toUpperCase()}catch(e){}
            if(IsEmpty(oI.value))
            {
                return HdlErr(fS,oI,sEI,g_sInfoReq,'h0');
            }
            if(!IsAudioHIP()&&RegErrRV(g_rHIP,oI))
            {
                return HdlErr(fS,oI,sEI,g_sHIPBC,'h3');
            }
            if(!IsAudioHIP()&&oI.value.length!=g_iHIPL)
            {
                return HdlErr(fS,oI,sEI,LoadStringEx(g_sHIP2Short,''+g_iHIPL),'h4');
            }
            if(IsAudioHIP()&&RegErr(g_rHIPAL,oI))
            {
                return HdlErr(fS,oI,sEI,g_sHIPA2Short,'h4');
            }
        }
        else if(oI.id=="iTOUAEmail")
        {
            sEI='iTOUAEmailErr';
            TrimInputSpaces(oI);
            if(IsEmpty(oI.value))
            {
                return HdlErr(fS,oI,sEI,g_sEmailEmpty,'u0');
            }
            if(oI.value.toLowerCase()!=oF.iEmail.value.toLowerCase()+GEId("iEmailDomain").innerHTML)
            {
                return HdlErr(fS,oI,sEI,g_sSigNotMatch,'u5');
            }
       }
        else if(oI.id=="iTimezone")
        {
            sEI='iTimezoneErr';
            if(oI.value=="DGHJLNS")
            {
                return HdlErr(fS,oI,sEI,g_sInfoReq,'t0');
            }
        }
        else if(oI.id=="iIndustry")
        {
            sEI='iIndustryErr';
            if((oI.value==""||oI.value=="DGHJLNS")&&typeof(g_OPT[oI.id])=='undefined')
            {
                return HdlErr(fS,oI,sEI,g_sInfoReq,'i0');
            }
        }
        else if(oI.id=="iOccupation")
        {
            sEI='iOccupationErr';
            if((oI.value==""||oI.value=="DGHJLNS")&&typeof(g_OPT[oI.id])=='undefined')
            {
                return HdlErr(fS,oI,sEI,g_sInfoReq,'o0');
            }
        }
        else if(oI.id=="iJobTitle")
        {
            sEI='iJobTitleErr';
            if((oI.value==""||oI.value=="DGHJLNS")&&typeof(g_OPT[oI.id])=='undefined')
            {
                return HdlErr(fS,oI,sEI,g_sInfoReq,'j0');
            }
        }
        else if(oI.id=="iMSM"||oI.id=="iMSS")
        {
            sEI='iMaritalStatusErr';
            if(GEId("iMSM").checked==false&&GEId("iMSS").checked==false&&typeof(g_OPT[oI.name])=='undefined')
            {
                return HdlErr(fS,oI,sEI,g_sInfoReq,'m0');
            }
        }
        else if(oI.id=="iHCY"||oI.id=="iHCN")
        {
            sEI='iHasChildernErr';
            if(GEId("iHCY").checked==false&&GEId("iHCN").checked==false&&typeof(g_OPT[oI.name])=='undefined')
            {
                return HdlErr(fS,oI,sEI,g_sInfoReq,'c0');
            }
        }
    }catch(e){return false}
    return true;
}
function IsAudioHIP()
{
    return(g_hipI.src.indexOf(g_hipR)>0)?true:false;
}
function isValidPC(sC,sP)
{
    if(sC.length==0||sP.length==0) return false;
    var sReg="N";
    var aPostalRegion=g_PostalRegion.split(";");
    var iPR=aPostalRegion.length-1;
    for(var g=0;g<iPR;g++)
    {
        if(aPostalRegion[g].substring(0,2)==sC)
        {
            var aCPR=aPostalRegion[g].substr(3).split("~");
            sReg=aCPR[2];
            break;
        }
    }
    if(sReg!="N")
    {
      try{
        var rP=RegExp(sReg);
        if(rP.test(sP)) return true;
      }catch(e)
      {
        return true;
      }
    }
    return true;
}
function isDateGood(iY,iM,iD)
{
    var oD=new Date(iY,iM-1,iD);
    var oDMin=new Date(1879,11,30);
    var oDNow=new Date();
    return(oD>=oDMin&&oD<oDNow);
}
function isValidDate(iY,iM,iD)
{
    var oD=new Date(iY,iM-1,iD);
    return((iM-1==oD.getMonth())&&(iD==oD.getDate())&&(iY==oD.getFullYear()));
}
function SetDT(oDT,oD,oM,oY)
{
    oDT.value="";
    if(oD&&oM&&oY)
    {
        oDT.value=oD.value+":"+oM.value+":"+oY.value;
    }
}
function Go(oDoc,oF)
{
    if(Validate(oDoc,oF))
    {
        OnSubmit(oF);
        try{formState('s',s_pageName,'hotmailform')}catch(e){}
        oF.submit();
    }
    else
    {
        try{formState('e',s_pageName,'hotmailform','Validatefailed')}catch(e){}
    }
}
function GoCGTS(oF,sUSURL)
{
    var sPC="";
    for(i=0;i<oF.length;i++)
    {
        try{var oI=oF.elements[i]}
        catch(e){continue}
        if(oI.type=="checkbox"&&
           oI.disabled!=true&&
           oI.style.visibility!="hidden"&&
           oI.value!="NOINSTALLER"&&
           oI.checked)
        {
            sPC+=(sPC.length>0?",":"&PC=")+oI.value;
        }
    }
    try{g_fSetCGTS=true;formState('s',s_pageName,'hotmailcongratsform')}catch(e){}
    if(sPC.length>0)
    {
        var sAU=oF.action;
        var aQS=ParseQS(sAU);
        for (var i in aQS)
        {
            if('id'==i.toLowerCase())
            {
                aQS[i]='9';
            }
            else if('ru'==i.toLowerCase())
            {
                aQS[i]=escape(sUSURL+sPC);
            }
        }
        var sU=sAU.substr(0,sAU.indexOf('?')+1);
        for(var i in aQS)
        {
            if(sU.charAt(sU.length-1)!="?")
                sU+="&";
            sU+=(i+"="+aQS[i]);
        }
        location.href=sU;
    }
    else
    {
        oF.submit();
    }
    return false;
}
function ParseQS(sU){var sQ=sU.substr(sU.indexOf('?')+1);var oA=new Object();if(sQ){var aF=sQ.split('&');for(var f=0;f<aF.length;f++){var sFD=aF[f].split('=');oA[sFD[0]]=sFD[1];}}return oA;}
var g_TO;
function ChkAvail(oI,oF)
{
    var oCA=GEId('iCheckAval');
    oCA.disabled=true;
    HId('iEmailAvail');
    HId('iEmailErr');
    HId('iEmailErrServer');
    if(!ValidateField(oI,oF,false))
    {
        oI.focus();
        ScrollPage(oI);
        oI.select();
        oCA.disabled=false;
    }
    else
    {
        document.cookie="MSPMemberExists="+oI.value+GEId('iEmailDomain').innerHTML+"; domain="+document.domain+";";
        g_TO = window.setTimeout("ChkAvailResultErr()",15000);
        var oD = new Date();
        var iT = oD.getTime();
        document.images["iChkAvail"].src="memberexists.srf?x="+iT;
    }
}
function ChkAvailResult()
{
    if(g_TO){clearTimeout(g_TO)}
    var oCA=GEId('iCheckAval');
    var sC=""+GetCookieData("MSPMemberExists");
    var oE=GEId('iEmail');
    var fS=true;
    document.cookie="MSPMemberExists=; expires=Fri, 31 Dec 1970 23:59:59 GMT;";
    if(sC=="MemberExists")
    {
        SetErr(false,true,oE,'iEmailErr',LoadStringEx(g_sEmailExists,"<b>"+oE.value+GEId('iEmailDomain').innerHTML+"</b>"));
        g_fShowEMHlp=true;
        SetEMTip();
        SetPD();
    }
    else if(sC=="ForbiddenWord")
    {
        SetErr(false,true,oE,'iEmailErr',g_sEmailForbidden);
    }
    else if(sC=="OtherError")
    {
        SetErr(false,true,oE,'iEmailErr',g_sChkAvilUKErr);
    }
    else
    {
        fS=false;
        var o=GEId('iEmailAvail');
        if(typeof(o)=="object")
        {
            o.style.display="block";
            o.style.wordWrap="break-word";
            o.innerHTML=LoadStringEx(g_sEmailAvail,"<b>"+sC+"</b>");
        }
    }
    oE.focus();
    ScrollPage(oE);
    if(fS){oE.select()}
    oCA.disabled=false;
}
function ChkAvailResultErr()
{
    if(g_TO){clearTimeout(g_TO)}
    var oE=GEId('iEmail');
    var fS=true;
    document.cookie="MSPMemberExists=; expires=Fri, 31 Dec 1970 23:59:59 GMT;";
    SetErr(false,true,oE,'iEmailErr',g_sChkAvilUKErr);
    oE.focus();
    ScrollPage(oE);
    if(fS){oE.select()}
    GEId('iCheckAval').disabled=false;
}
var g_fShowEMHlp=false;
var g_iT=0;
function SetEMTip()
{
    if(g_fShowEMHlp)
    {
        var iRMax=2;
        for(var i=0;i<=iRMax;i++)
        {
            GEId('iEmailTip'+i).style.display=(g_iT==i)?"block":"none";
        }
        if(g_iT==iRMax){g_iT=0}else{g_iT++}
    }
}
function SetPD()
{
    if(g_fShowEMHlp&&typeof(GEId('iRegion'))=="object")
    {
        var oR=GEId('iRegion');
        GEId('iPDLink').style.display=(g_PDCountryList.indexOf(":"+oR[oR.selectedIndex].value+":")!=-1)?"block":"none";
    }
}
function UpdateTOUSig(oI,oF,sTOUSigID,sDom)
{
    if(ValidateField(oI,oF,true))
    {
        GEId(sTOUSigID).innerHTML=oI.value+sDom;
    }
    else
    {
    }
}
function RegErr(rRGX,oFld)
{
  try{
    rRGX.lastIndex=0;
    return (rRGX.test(oFld.value))?false:true;
  }catch(e)
  {
    return false;
  }
}
function RegErrRV(rRGX,oFld)
{
  try{
    rRGX.lastIndex=0;
    return (rRGX.test(oFld.value))?true:false;
  }catch(e)
  {
    return false;
  }
}
function InStrErr(oS,oSub)
{
    if(oS==null||oSub==null){return false}
    if(IsEmpty(oS.value)||IsEmpty(oSub.value)){return false}
    return (oS.value.toLowerCase().indexOf(oSub.value.toLowerCase())<0)?false:true;
}
function CharInStr(sC,oO)
{
    var fR=false;
    if(IsEmpty(sC)||oO==null){return fR}
    if(IsEmpty(oO.value)){return fR}
    for(var i=0;i<sC.length;i++)
    {
        if(oO.value.indexOf(sC.charAt(i))!=-1)
        {
            fR=true;
            break;
        }
    }
    return fR;
}
function IsEmpty(s)
{
    return (s=='')?true:false;
}
function Trim(s)
{
  if(typeof(s)!="string"){return s;}
  s=s.replace(/^\s+/g,"");
  return s.replace(/\s+$/g,"");
}
function TrimInputSpaces(oF)
{
    try{oF.value=Trim(oF.value)}catch(e){}
}
function SetErr(fS,fE,oFld,sErr,sErrString)
{
    if(fS){return}
    if(fE)
    {
        GEId(sErr).style.display="block";
        GEId(sErr).innerHTML=LoadStringEx(sErrString,'');
        if(!g_fFocusSet)
        {
            g_fFocusSet=true;
            oFld.focus();
            ScrollPage(oFld);
            if(oFld.type=="text"||oFld.type=="password")
            {
                oFld.select();
            }
        }
    }
    else
    {
        HId(sErr);
    }
}
function ScrollPage(oF)
{
    try{var iTP=iST=0;var oD=document;if(oD.documentElement&&oD.documentElement.scrollTop){iST=oD.documentElement.scrollTop;}else if(oD.body){iST=oD.body.scrollTop;}var oOP=oF.offsetParent;while(oOP){iTP+=oOP.offsetTop;oOP=oOP.offsetParent;}if(iTP-iST<50){window.scrollBy(0,-100);}}catch(e){}}
function LoadStringEx(sE,sD)
{
    sE=sE.replace(/:JSDQ:/g,"\"");
    var aE=sE.split("#~#");
    var iE=aE.length;
    var sER="";
    if(iE<=1){return sE};
    for(var i=0;i<iE;i++)
    {
        if(i%2)
        {
            if(aE[i]=="PostalCodeLabel_LS")
            {
                var sPCL=GEId('iPCLabel').innerHTML;
                sER+=sPCL.substring(0,sPCL.length-1);
            }
            else if(aE[i]=="EmailAddress_LS"||aE[i]=="NumberHIPImageChars_LS")
            {
                sER+=sD;
            }
            else
            {sER+="";}
        }
        else
        {
            sER+=aE[i];
        }
    }
    return sER;
}
function HdlErr(fS,oF,sEI,sED,sES)
{
    try{
    if(fS){return false}
    try{
        PushError(sES);
    }catch(e){}
    SetErr(false,true,oF,sEI,sED);
    }catch(e){}
    return false;
}
function UpdateDomain(sC)
{
    if(IsEmpty(sC))
    {
        return false;
    }
    var aR=g_Rummy.split("~");
    var iR=aR.length-1;
    for(var g=0;g<iR;g++)
    {
        if(aR[g]==sC||aR[g]=="DEFAULT")
        {
            var oED=GEId('iEmailDomain');
            if(oED.innerHTML!="@"+aR[g+1])
            {
                HId('iEmailAvail');
                HId('iEmailErr');
                HId('iEmailErrServer');
                oED.innerHTML="@"+aR[g+1];
                UpdateTOUSig(GEId("iEmail"),GEId("iEmail").form,'iTOUEmailLabel',GEId('iEmailDomain').innerHTML);
            }
            break;
        }
        g++;
    }
    try{GEId('iEULink').style.display=(g_EU.indexOf(sC)!=-1)?"block":"none"}catch(e){}
    try{
        var sTEV="";
        if(g_TRUSTE.indexOf(sC)!=-1)
        {
            sTEV=g_sTrustE;
        }
        else if(g_TRUSTEU.indexOf(sC)!=-1)
        {
            sTEV=g_sTrustEU;
        }
        GEId('iTrustEDiv').innerHTML=sTEV;
    }catch(e){}
    return true;
}
var g_PR="";
function InitPrevRegion(sC)
{
    g_PR=sC;
}
function UpdateLoc(sC,oS,oTZ)
{
    SetPD();
    UpdateDomain(sC);
    var iSR="N",iSP="N";
    var aPostalRegion=g_PostalRegion.split(";");
    var iPR=aPostalRegion.length-1;
    for(var g=0;g<iPR;g++)
    {
        if(aPostalRegion[g].substring(0,2)==sC)
        {
            var aCPR=aPostalRegion[g].substr(3).split("~");
            iSR=aCPR[0];
            iSP=aCPR[1];
            break;
        }
    }
    if(iSR=="N"){DisplayDivs(['iStateDiv'],'none');oS.selectedIndex=0;}
    if(iSP=="N"){DisplayDivs(['iPCDiv'],'none');GEId("iPC").value="";}
    if(sC==g_PR||g_PR=="")
    {
        return true;
    }else{
        g_PR=sC;
    }
    if(typeof(oS)!="object"||typeof(oTZ)!="object")
    {
        return false;
    }
    HId('iStateErr');
    HId('iPCErr');
    oS.options.length=1;
    oTZ.options.length=1;
    if(iSR!="N"||iSP!="N")
    {
        var aRegions=g_sRegions.split(";");
        var iR=aRegions.length-1;
        for(var j=0;j<iR;j++)
        {
            if(aRegions[j].substring(0,2)==sC)
            {
                var aR= aRegions[j].substr(3).split("~");
                var iRL=aR.length;
                for(var k=0;k<iRL;k+=2)
                {
                    oS.options[(k/2)+1]=new Option(aR[k+1],aR[k]);
                }
                if(iSR!="N")
                {
                    var aRL=g_sRegionLabels.split("~");
                    GEId('iStateLabel').innerHTML=aRL[iSR-1];
                }
                if(iSP!="N")
                {
                    var aPL=g_sPostalLabels.split("~");
                    GEId('iPCLabel').innerHTML=aPL[iSP-1];
                }
                break;
            }
        }
    }
    var aTimezoneMap=g_TZMap.split(";");
    var iTZMl=aTimezoneMap.length-1;
    var aTimezone=g_TZ.split(";");
    var iTZL=aTimezone.length-1;
    for(var l=0;l<iTZMl;l++)
    {
        if(aTimezoneMap[l].substring(0,2)==sC)
        {
            var aTZM=aTimezoneMap[l].substr(3).split("~");
            var iTZMl2=aTZM.length;
            for(var m=0;m<iTZMl2;m++)
            {
                for(var n=0;n<iTZL;n++)
                {
                    var aT=aTimezone[n].split("~");
                    if(aT[0]==aTZM[m])
                    {
                        oTZ.options[m+1]=new Option(aT[1],aT[0]);
                    }
                }
            }
        }
    }
    if(iSR!="N"){DisplayDivs(['iStateDiv'],'block')}
    if(iSP!="N"){DisplayDivs(['iPCDiv'],'block')}
    return true;
}
function EvalPwd(sP)
{
    var aPQ=new Array(6);
    if(ClientSideStrongPassword(sP,gSimilarityMap,gDictionary))
    {
        aPQ=["#0c6","#0c6","#0c6","#0c6","#0c6","#000"];
    }
    else if(ClientSideMediumPassword(sP,gSimilarityMap,gDictionary))
    {
        aPQ=["#ff9","#ff9","#F1F1F1","#ff9","#000","#adadad"];
    }
    else if(ClientSideWeakPassword(sP,gSimilarityMap,gDictionary))
    {
        aPQ=["#f00","#F1F1F1","#F1F1F1","#000","#adadad","#adadad"];
    }
    else
    {
        aPQ=["#F1F1F1","#F1F1F1","#F1F1F1","#adadad","#adadad","#adadad"];
    }
    var oW=GEId("iWeak").style;
    var oM=GEId("iMedium").style;
    var oS=GEId("iStrong").style;
    oW.background=aPQ[0];
    oM.background=aPQ[1];
    oS.background=aPQ[2];
    oW.color=aPQ[3];
    oM.color=aPQ[4];
    oS.color=aPQ[5];
}
var g_d=":";
function PushError(sErr)
{
    var sErrs=g_d+s_prop38+g_d,sE=g_d+sErr+g_d;
    if(!sErr||typeof(s_prop38)=='undefined'||typeof(s_prop48)=='undefined'||(sErrs.indexOf(sE)!=-1))
        return;
    s_prop38+=(s_prop38.length>0)?g_d+sErr:sErr;
    s_prop48=s_prop38;
}
function SendReport()
{
    if(typeof(s_account)!="undefined")
        s_gs(s_account.toLowerCase());
}
function ClearError()
{
    g_fFSent=false;
    if(typeof(s_prop38)!="undefined")
        s_prop38='';
    if(typeof(s_prop48)!="undefined")
        s_prop48='';
}
function AppPN(s)
{
    return (s&&s.length>0)?s+g_d+s_pageName:'';
}

