Cosigning
Undersize
Uprootedness
Ruminative
Floppiness
Jellification
Uninterestedness
Farrow
Misapprehend
Sequestrator
Overmastered
Solvating
Dossing
Insalivated
Reddishness
Cancellate
Liaises
Dapperness
Surrogated
Deputize
Depreciable
Wearisomeness
Electroforming
Stomachic
Stylizes
Musts
Kiboshed
Refreshening
Hieratical
Dischargeable
Impleadable
Pustulate
Seaworthiness
Semiautomatics
Tawney
Electroformed
Homicidally
Mislike
Upholsterer
Prognosticating
Confucianist
Officiousness
Absquatulated
Illuminable
Aggrieves
Philosophizes
Thieved
Expatiation
Purposively
Revilement
Drubbed
Countersinking
Dissimulates
Personate
Tweaky
Fluidizing
Countervails
Dissimulating
Diagrammatically
Insusceptibility
Unsteadying
Redistributionist
Decrescent
Serrulated
Hygroscopical
Afforested
Broadsiding
Buyable
Superpose
Sudorific
Absorbability
Ensouls
Deodorization
Skives
Accursedly
Terrestrially
Misconceiving
Lymphatics
Outstays
Affirmer
Stomachic
Autotrophic
Malnourishment
Irrelevantly
Grassiness
Damascening
Unstrings
Tastily
Besprinkling
Temperateness
Unsettlement
Miscalled
Signalizes
Superlativeness
Soddened
Disfeatured
Weens
Tersest
Effacer
Erectly
Ferruginous
Joshed
Irreproachable
Adorer
Pliantness
Malinger
Plateresque
Precatory
Halloos
Backhandedly
Swingeing
Transhipment
Fecklessly
Redistributionist
Calando
Upraising
Explicative
Assorting
Inspirited
Victimise
Unguardedness
Upholstering
Actuates
Nighs
Subtends
Snigged
Rewires
Pollinates
Blatted
Impowered
Phrenic
Irrigative
Uranic
Barracker
Lusitanian
Gambols
Vastest
Roughish
Squelchy
Suppurate
Bulkiest
Phonic
Inwreathe
Depilate
Amplest
Pistillate
Heteromorphism
Operably
Tastily
Bodycheck
Girt
Plast
Pends
Supervened
Weighable
Miscasting
Disinfects
Deleveraging
Predecease
Cagiest
Superposes
Catholicizing
Jocularly
Macoes
Ephemerality
Spirting
Endemics
Aquiver
Boffo
Transhipped
Contributories
Undesigning
Stoniest
Bestrewn
Electrolyzing
Rues
Glitzier
Apostrophizing
Weanedness
Disintegrative
Supposer
Enfranchisements
Disclaiming
Sneakiest
Ghostliest
Spousals
Moodiest
Copolymerized
Mixable
Disownment
Sublimates
Pertinaciousness
Oblateness
Verisimilar
Putrescence
Gumps
Ithyphallic
Spirting
Famish
Pastorals
Asphalted
Consequents
Unthinkingness
Sottish
Barracker
Expectorants
Outdistanced
Ruing
Surlier
Tattier
Impolitely
Knottiness
Rebounder
Hirer
Assort
Suspensive
Intelligibleness
Internalizes
Memorizer
Famish
Nickering
Hornswoggle
Dissolutely
Mixings
Ganoid
Stratospherically
Lucently
Supersession
Hispid
Molests
Demographical
Versifying
Northwesterlies
Blamelessness
Alterable
Ferruginous
Genteelly
Villainously
Pearliness
Ultramicroscopic
Laciest
Fossilize
Nobiliary
Inosculating
Calculatingly
Aggrieving
Divinized
Liquifying
Ankylosed
Defragments
Laiks
Lividly
Scintillant
Upsprang
Welsher
Squinching
Rejector
Sledged
Mixings
Osculate
Desegregated
Feloniously
Dishevelment
Apeak
Miscasting
Vivisect
Inscrutably
Foreruns
Propers
Consociated
Shinty
Womanfully
Disentomb
Underachieved
Mechanicalness
Coriaceous
Earthward
Superposable
Astoundment
Wangle
Medicates
Immorally
Methodicalness
Swinge
Classlessness
Ghostliest
Striddle
Embosoming
Dischargeable
Squalidly
Galvanization
Crabwise
Buoyantly
Resplendency
Pends
Hoggish
Blabbers
Dissatisfactory
Suavely
Polychromatic
Stoutened
Underdo
Stridden
Famish
Obscureness
Substantialize
Journalization
Compartmentalizing
Mothball
Inbreed
Varus
Expansionary
Polychromatic
Foreswore
Adrenocortical
Heteromorphism
Desecrates
Defrocks
Harries
Dispraised
Rhapsodize
Tippled
Aggregative
Illinoisan
Futuristically
Leniently
Unsociableness
Misprizing
Extinguishment
Sermonizer
Effeminacy
Electroforming
Misbranded
Parasitoid
Philanthropically
Soignee
Shushes
Temperateness
Dossing
Tippled
Stoppable
Damascenes
Presumptuousness
Whackiest
Affright
Catholicizing
Footslog
Queenliness
Bedewed
Illustriousness
Digitalizing
Compassionating
Sloshy
Sottish
Stolidest
Departmentalized
Ghettoizes
Squired
Ghettoizes
Superinduce
Interruptible
Hirer
Annunciates
Flintiness
Platonically
Blabbers
Secretor
Intrench
Politer
Storable
Sematic
Exiguity
Mollifies
Photoduplication
Reifies
Georgics
Tallness
Disburser
Verminous
Deputes
Synthetized
Consumingly
Damascenes
Disburdened
Vivified
Underachieved
Resplendency
Turnkeys
Intrust
Forehands
Undercharge
Uprootedness
Demographical
Solemnizes
Insufflate
Presumptuousness
Hewer
Strangulating
Ensouls
Castigator
Encompassment
Crosscourt
Poaches
Embalmer
Resat
Desalter
Undesigning
Unsteadying
Inexpertness
Laudably
Scumble
Doddery
Consecrator
Asserter
Swopped
Typesets
Ingrowing
Backhandedly
Ascribable
Austerely
Transitoriness
Composedly
Finlandization
Nickers
Requites
Propers
Mixings
Spontaneousness
Cajolery
Prorogation
Dolefulness
Contused
Upstater
Swanking
Depolarizing
Luxated
Bestrewing
Demounted
Covetously
Glitzier
Depilate
Rogered
Instals
Depraving
Squinter
Tappable
Irrigative
Moderato
Presentee
Surveyable
Smoulders
Reticulate
Vasomotor
Discountenance
Horizontals
Maturest
Instals
Disfeatured
Expendables
Enterable
Detune
Forwardly
Anthologize
Philosophizes
Guzzler
Tininess
Ultrasonically
Intolerableness
Cisatlantic
Instals
Suavely
Elfish
Solvates
Fores
Estimative
Superadds
Weepiest
Sharped
Scandent
Theatricalness
Intrusting
Weens
Countability
Systematizer
Disforested
Transmigrate
Unlash
Chitter
Complainingly
Conventual
Surlier
Renouncer
Neurogenic
Outguessing
Shrieker
Dissimulating
Pertinaciousness
Soliloquizing
Secretor
Chucklingly
Scraggily
Patronymic
Endemics
Desponds
Extensile
Resected
Haggardness
Fluidizing
Unloosed
Stridulous
Apprises
Bubblies
Sulkiness
Superadding
Journalization
Sereneness
Desquamation
Exogenously
Vivisect
Melodiousness
Syngeneic
Illegalized
Humpy
Dopy
Blandishing
Asquint
Parnassian
Skeletally
Rasterizing
Floweriness
Shoos
Preclusive
Flincher
Reinsurer
Spruiking
Barracker
Recurvate
Kriti
Begrimed
Extemporization
Favorableness
Striddle
Credulously
Grislier
Breathier
Defrauds
Tatted
Wheezer
Muddler
Classicality
Duskier
Snottering
Foreshortens
Draggy
Philanthropically
Indomitableness
Lobar
Roundaboutness
Scries
Plosive
Daftest
Striver
Mislays
Macerated
Puerility
Reforesting
Tumultuousness
Ameliorant
Sufficing
Superabound
Cinematize
Chlorinate
Respelling
Anglicization
Soothingness
Yacked
Glaucous
Overweighting
Parnassian
Chucklingly
Precatory
Foreshortens
Resected
Underdo
Semiretired
Semiretired
Semiconsciousness
Inestimably
Inters
Volumed
Harmonizer
Officiousness
Liverish
Quaintest
Fierier
Inscrutably
Stragglier
Lobar
Consolingly
Immensities
Costlessly
Oiliest
Semiprivate
Conformability
Absorbability
Sottish
Misruled
Superinducing
Cartesians
Underbred
Luxating
Scrofulous
Formulized
Inspirited
Seeled
Disburden
Ventricose
Ritardando
Animato
Bestrewn
Prurience
Ghastlier
Semiprivate
Witlessness
Squelchy
Sforzandi
Interspersion
Recommendatory
Interspersion
Inopportuneness
Roughish
Rasterizing
Smirching
Momentousness
Disconsolateness
Unfashionableness
Metalliferous
Ditherer
Rorts
Drinkability
Apoplectically
Reconciler
Accoutred
Colonialized
Opinionatively
Expostulating
Throatily
Vinegary
Spiritualizing
Seagirt
Sudorific
Coexistent
Tepidity
Impetuously
Middled
Upraises
Defaces
Overstrode
Flagitious
Ternate
Representer
Assumable
Inaptitude
Overstrode
Homophonic
Overlander
Spryest
Houghed
Truculently
Importuning
Asserter
Inexactly
Deoxidize
Snivels
Terraqueous
Forwent
Splaying
Wirelessed
Spermatic
Outspreading
Manipulatable
Exasperatingly
Homologizing
Iciness
Bulkiest
Effectives
Departmentally
Fermentable
Officiously
Bankability
Blunderer
Galactically
Quintupling
Aggrandizing
Russianized
Chaines
Contemporizes
Disobliges
Laxly
Pluralized
Overspreading
Discombobulate
Turbocharging
Perspicuous
Scotched
Engager
Killfiles
Chilliest
Chucklingly
Scabbiness
Assorting
Displaceable
Flagellating
Lightsomeness
Yieldingness
Liverish
Northwesterlies
Soddening
Intestacy
Bifacial
Encashment
Swinge
Rayless
Regardfully
Arrestingly
Downscaled
Chlorination
Spiniferous
Unpins
Ensiform
Departmentally
Laiks
Introspected
Transfixion
Concentricity
Suavely
Unseemlier
Putrescible
Swiving
Stannous
Immorally
Destines
Ravishes
Unsling
Electroforming
Assort
Disclaiming
Sourest
Upspringing
Ravishes
Inspanned
Extortionately
Snitcher
Plast
Ensile
Fascinator
Denuclearization
Chastisers
Futuristically
Electively
Appeasable
Deodorized
Scantiest
Semiprivate
Coarsen
Monometallic
Dissimulates
Desolateness
Overbear
Redistributionist
Endemics
Untenableness
Wirelessed
Personate
Muddler
Untowardness
Oblateness
Extenuation
Ulcerating
Calumniates
Rainproof
Augustinians
Punitively
Stannic
Confabulating
Refreshening
Disarrangement
Estreated
Homicidally
Betaken
Purulence
Scumbling
Curule
Rainproof
Showier
Sanguineness
Incuriosity
Unrolls
Bestridden
Genevan
Companionableness
Deserver
Squarest
Flameproof
Excursiveness
Conventual
Actuates
Lifelessness
Coarsen
Unlikeness
Squarest
Transmuter
Swingle
Resigner
Indemnifies
Macoes
Blamelessness
Bedewed
Tabus
Motherliness
Effervescently
Cheekier
Outstare
Forbiddance
Thermostable
Slipperiest
Actuates
Maritally
Quoter
Superinduce
Moodiest
Uncivilizedness
Solferino
Aspirer
Kiboshed
Emulous
Clastic
Limns
Adulterating
Monometallic
Ruing
Enceinte
Wheezer
Nuttily
Expostulating
Stolidness
Jabbered
Soughs
Fishier
Tweezes
Trashiness
Estimative
Bushwhack
Tutted
Rumples
Desegregated
Shinnied
Inconsequentials
Hisser
Drowse
Devoutness
Ligging
Indistinctness
Regretter
Unsaying
Plosive
Sourer
Hellishness
Wanness
Alikeness
Reconciler
Uninsurable
Metastasizing
Soliloquizing
Chouse
Stupendousness
Energization
Contributories
Illuminable
Etcher
Bespangled
Predecease
Overlander
Orneriness
Stridulous
Encashing
Joshed
Outshooting
Overbear
Backhandedly
Semblables
Sleeks
Nickering
Determinably
Cherishers
Swiving
Animato
Rusticating
Underlays
Insufflate
Casehardened
Priors
Begrimed
Ooch
Incisiveness
Convincingness
Buoyantly
Picturesqueness
Opinionatively
Footslogging
Welsher
Recessional
Beheads
Tocher
Opaquely
Winy
Fenestrated
Rifest
Neoclassic
Unclasping
Portably
Osculate
Passivated
Sicklied
Avuncularly
Rebounder
Pustulate
Cherishers
Idlest
Obligati
Pettishness
Transfusing
Bespattering
Descrying
Admirableness
Bogue
Infractor
Sanguinity
Tatted
Berserkly
Syned
Sained
Illuminable
Sweepy
Drubbed
Farinose
Subduction
Lactiferous
Snavel
Schleps
Smirching
Spritzes
Vasomotor
Alee
Unguardedness
Woebegone
Descrying
Walleyed
Unwiser
Incubates
Morganatic
Ternate
Strayer
Defang
Resorbed
Adducts
Grubbiness
Germanized
Statelier
Castigator
Inspirited
Platonically
Fictionalizes
Handsomeness
Disseized
Swopped
Predeceasing
Soddened
Undershooting
Rootled
Tappable
Receptively
Segregative
Squelchy
Yawing
Musingly
Apparentness
Killfiles
Importuning
Synthetical
Redistributionist
Rebuffing
Spermatic
Anglicizing
Costlessly
Substantiable
Reprovingly
Loathsomely
Fictionalizes
Journalizing
Amatory
Inweave
Perturbs
Ligated
Frowziness
Leps
Brominated
Shortchanges
Amorphousness
Grassier
Reinvests
Woebegone
Squinter
Explicative
Mislays
Unsticking
Viler
Ovate
Pathognomonic
Caresser
Disaffect
Pawkiness
Insufflator
Syne
Profuseness
Flamboyants
Literates
Presentative
Marcato
Eternizing
Psychologizing
Nonassessable
Coyer
Tactlessly
Rehydrating
Divvying
Subnormality
Idlest
Counteractive
Subtending
Inters
Operose
Harries
Disinclines
Mistakenness
Overdyed
Defaces
Superheater
Politer
Deconcentration
Indiscreetness
Lanker
Epizootics
Magnetizes
Predeceasing
Pluralized
Suspensive
Synoptical
Starchiest
Decussated
Perspicuous
Suffication
Mislikes
Truculently
Condemnable
Misapprehend
Bespattering
Saxatile
Coarsened
Succulently
Phonic
Discomposing
Fermentable
Snottering
Masticated
Disintegrative
Welshing
Confucians
Dissoluble
Wanness
Dodginess
Suppurates
Vaguer
Exhibitory
Deleveraged
Scoffingly
Spraddling
Traumatizes
Unsays
Inspiratory
Draggy
Marginate
Disinteresting
Assuager
Asseverated
Florentines
Upholder
Seriatim
Muter
Blowziest
Airworthy
Nugatory
Showier
Electively
Disrelishes
Suavely
Superciliousness
Putrescible
Discombobulate
Charbroiled
Besprinkling
Shuddery
Titrated
Kalsomine
Obtrusion
Dodginess
Recurvate
Aromatizes
Predestinates
Robustious
Carpentered
Carpentered
Commensal
Defogging
Pluralized
Equatable
Splashiness
Solferino
Perviousness
Renouncer
Enclasping
Disburser
Officiousness
Malignly
Differentiability
Overpersuaded
Unluckiness
Lusitanian
Lineally
Roughhousing
Cachinnating
Rewires
Malnourishment
Mickle
Rampantly
Scumbled
Hellenization
Pertinaciousness
Presold
Greenlighting
Foreshortens
Chillily
Laded
Superpose
Underachieved
Uprootedness
Garnishee
Russify
Impleadable
Deathliness
Disrelishes
Brainlessness
Chrysalids
Ritardando
Solvating
Scorbutic
Tetravalent
Hoper
Absquatulated
Chucklingly
Brainlessness
Cheerlessness
Berserks
Turgescence
Winglessness
Rifler
Appulses
Shushes
Sexlessness
Enfranchises
Unwholesomely
Syllogistic
Hellenization
Whimsicality
Liquifying
Innervate
Eternizing
Dielectrics
Scintillates
Avowing
Perambulating
Waterskis
Atheistically
Kybosh
Superheating
Wanderingly
Implanter
Inelegance
Strayer
Shrieker
Indisposes
Kiboshed
Recommendatory
Supplely
Demythologized
Skeletally
Remandment
Enfranchises
Outgoes
Paraphraser
Benzyl
Gaup
Generable
Vaingloriousness
Bushiest
Interestedness
Sensitizer
Subtends
Skeletally
Coexistent
Smatterer
Disbarring
Stridulating
Brainlessness
Notarisation
Imperturbability
Jabbered
Predestinates
Incorrigibly
Imperishability
Overdrew
Outsteps
Recoilless
Irrelevantly
Obtrusion
Subclavian
Outranged
Superposable
Scintillate
Disaffect
Tightener
Whishing
Genevan
Remandment
Intelligibleness
Multidimensionality
Involuntariness
Swankiest
Stridden
Magistral
Signalizes
Permute
Facked
Dissatisfactory
Identic
Collusive
Prognosticating
Outboards
Gastrovascular
Synthetical
Dree
Prises
Martialist
Analogizing
Superlativeness
Hemihedral
Assimilator
Mixable
Misapprehend
Rappels
Innovatory
Stoppable
Macoes
Liassic
Pertinaciousness
Actuates
Overprints
Palmier
Chumminess
Arcuate
Unsticking
Momentousness
Suppurates
Tumultuousness
Articulateness
Delimitation
Inconstancies
Exportability
Vasomotor
Transubstantiate
Nodder
Craniofacial
Reductiveness
Syned
Adaptables
Frizzes
Interchanger
Ooch
Adulterating
Overshoots
Interruptible
Catholicizing
Macerated
Parturifacient
Dilapidating
Grumpily
Asphalted
Nonassessable
Rappels
Palpitates
Bandier
Craniofacial
Swiving
Anastomose
Throatily
Opes
Salients
Misguides
Superpose
Wangler
Wronging
Disaffirmance
Pustulate
Engrosser
Unscrupulously
Nullifiers
Furtiveness
Obvolute
Outwardness
Inconstancies
Slicking
Entombment
Individuate
Securable
Suppurates
Securable
Exasperates
Solemnization
Whimsicalness
Grassiness
Theocentric
Ruminative
Hermetical
Supposer
Denotative
Scholarliness
Unquietness
Perturbs
Declivitous
Struggler
Frowsy
Ligging
Plast
Engraves
Phrenic
Limn
Benzyl
Bestialize
Quainter
Mixable
Asphalted
Malinger
Rigidify
Scantiness
Extortionately
Misconceiving
Prises
Descrambles
Liquorish
Disestablishing
Hoper
Widthwise
Piscivorous
Roisters
Psittacine
Consumingly
Overstaffing
Upsprung
Enspheres
Extirpative
Confounder
Outstep
Commensal
Retrousse
Sentimentalizes
Mickle
Permute
Intrust
Keened
Carbocyclic
Recessives
Huffiness
Synoptical
Russianize
Ghettoizes
Accentual
Snottering
Ceremoniousness
Loper
Smoulders
Genteelly
Disarticulate
Hoper
Afferent
Intendedly
Isotropically
Insalivate
Nonunionized
Invasively
Paraphraser
Exceptionalness
Winglessness
Dowses
Jalouse
Snitcher
Appeasable
Scotched
Wronging
Syllogistic
Capsian
Sudorifics
Stotting
Melodiousness
Impoliteness
Laded
Shallowed
Misapprehend
Electrolyzing
Palpitates
Decon
Pasteurizer
Lividity
Mollifies
Dissimulates
Scandalizes
Upholder
Lymphatics
Saintlier
Priors
Whensoever
Phonic
Weening
Unpromisingly
Fledges
Soothingness
Bedazzle
Subnormality
Interfuses
Disorganizes
Radicalness
Goodliest
Sequestrated
Fornicates
Shrived
Fosterer
Nodose
Classlessness
Spiniferous
Inconstantly
Snidely
Blandishing
Demographical
Assuager
Disendowing
Scotched
Sufficing
Enfranchises
Journalize
Scandent
Yodeled
Preclusive
Desolateness
Interspersion
Douser
Emasculates
Inspanned
Beheads
Blasphemously
Lendable
Spectating
Innovatory
Lucently
Forewarns
Bitchily
Estreated
Deuterated
Weatherized
Aggrandizing
Smoothers
Coexistent
Pastness
Profuseness
Opes
Overdrew
Intrusting
Annunciates
Carpentered
Commercializes
Regretter
Lewdest
Subarctic
Saturnine
Rifler
Stanched
Immovables
Prepositive
Beaucoups
Mulcting
Countryfied
Amatory
Monometallic
Spraddled
Snuffler
Reductiveness
Articulateness
Bisexually
Outspreading
Reprovingly
Unlay
Misguides
Volant
Emotiveness
Knottiness
Profanes
Spraddling
Informativeness
Embowered
Spontaneousness
Metricated
Surveyable
Expostulate
Analogically
Mellifluousness
Transcendents
Curtness
Hypertonia
Tuscans
Impressment
Credulously
Decommissions
Determinateness
Confucians
Grassiness
Serrulated
Domesticates
Nuttily
Ohioan
Deprecatingly
Wronging
Inosculating
Lucently
Sained
Sallowing
Unbosom
Fluoridating
Furtiveness
Disorganizes
Honied
Spraddling
Viler
Cumbered
Splashiness
Wellborn
Footslogging
Disfigures
Vaingloriously
Expertize
Semiclassical
Cajolery
Liefest
Murderousness
Moistly
Blesser
Ensphere
Excavates
Longwise
Predestinate
Illogicality
Electroforming
Suffication
Divvying
Classicality
Rewires
Stonier
Subverter
Swingle
Substantiable
Syne
Salients
Shallowed
Saltatorial
Gaup
Goodheartedness
Ditherer
Semiretired
Proselytizer
Inexpertness
Soigne
Rappels
Solemnizes
Impishness
Anatomize
Reticulate
Percussiveness
Typesets
Hellenization
Wangle
Cachinnating
Asquint
Lissomness
Superinducing
Dispraises
Prorogation
Malinger
Exclusionist
Readdressed
Denuclearization
Soignee
Resplendently
Tersest
Lionization
Persecutee
Rayless
Crosschecking
Exasperatingly
Retractible
Internalizes
Overdraws
Commiserator
Amasser
Extenuation
Epistolatory
Solemnization
Thriftier
Sequestrator
Putrescence
Juking
Emasculation
Connate
Rusticating
Roomiest
Chaines
Trashier
Sterically
Fussier
Moodiest
Disremembered
Frozenness
Wavier
Medicates
Whackiest
Metalliferous
Valiantness
Untenableness
Perviousness
Metastasizing
Toothsomeness
Fastigiate
Inclose
Snitcher
Ooch
Misspend
Vaguer
Subtending
Sententiously
Outspokenly
Lusitanian
Arioso
Footslogging
Doddery
Absorbability
Capturer
Regardfully
Stratospherically
Overarm
Adducts
Poaches
Frowsty
Aggregative
Bedazzle
Provencale
Scries
Reverberant
Wearisomeness
Disobliges
Resuscitates
Teetotal
Politer
Scrunches
Rusticating
Solitarily
Nickering
Rogered
Channelising
Pucka
Embalmer
Menstruous
Rootled
Vanquishment
Discountenance
Incarcerates
Reductiveness
Swankiest
Multiport
Gelid
Odoriferousness
Memorizer
Baseborn
Desynchronized
Superadding
Malapertness
Moderato
Interdigitating
Disclaiming
Upraises
Unwieldiness
Divinized
Epoxying
Costars
Guzzler
Journalizing
Trampler
Enspheres
Unproductiveness
Disinfects
Unwished
Misguides
Digestives
Underruns
Dilapidating
Soberest
Raggedness
Capacitate
Refutable
Remonstrative
Eternizing
Assaultive
Sloshy
Moribundity
Desquamation
Determinably
Rehydratable
Sugarcoating
Deputize
Magistral
Superabound
Unsnaps
Stot
Rasterizing
Versified
Racemose
Unscrupulously
Starchiest
Limns
Succulently
Alee
Misbranded
Hyperbolizing
Bedazzle
Engraves
Eruditely
Martially
Exclusionist
Rifler
Gutturalize
Tininess
Hyperbolizing
Persecutee
Versifies
Julienned
Intrench
Squelchy
Suppurates
Embowered
Devilishness
Trudges
Valiants
Dispeller
Fores
Estimative
Swooshes
Noteworthiness
Inosculates
Mothy
Snivelled
Personate
Triflingness
Nestler
Rotatory
Slipperiest
Quintupling
Lewdest
Luxuriousness
Incontinently
Consociated
Disconfirms
Guzzler
Hornswoggle
Outstays
Aswarm
Unlikeness
Excludable
Transpadane
Nodder
Dodginess
Forearmed
Wrester
Namechecked
Capaciousness
Depilate
Extemporization
Ovate
Hallooing
Castigator
Transcaucasia
Fomenter
Convincingness
Tappable
Liefest
Prolonger
Reinvests
Vastest
Resupination
Masticated
Humidifying
Unappealably
Outgoes
Moresque
Analogically
Disseized
Churlishness
Encases
Isomerization
Depressurization
Trashier
Unanswerableness
Upsprung
Coddler
Disremember
Smirching
Terraqueous
Desynchronized
Forwardly
Discomposing
Intendedly
Astoundment
Tridimensional
Fulsomeness
Fluoridating
Recommences
Defaces
Innervate
Chouse
Hoggish
Concentricity
Fluidizing
Trueness
Disremember
Distortive
Alpestrine
Edacious
Besprinkling
Bisexually
Enervation
Laxly
Segregative
Transhipped
Disremembered
Systematizer
Resigner
Protractedly
Stoutened
Immensities
Agreeability
Reverberant
Mustier
Liassic
Shuddery
Officiously
Nattiest
Guzzler
Shinty
Boracic
Rearwards
Rejector
Languishment
Ritualizing
Osculate
Volant
Undrawn
Nugatory
Shallowed
Wrongfulness
Fatherliness
Juking
Nonplused
Inshrined
Machiavellism
Plast
Profligately
Brainlessly
Mulish
Gaminess
Compositely
Alterable
Photoduplication
Rorts
Underdress
Hearties
Temperateness
Darksome
Inosculates
Stooled
Inducts
Weens
Waggle
Farouche
Transubstantiate
Categorizable
Superinducing
Circuitously
Precatory
Superposable
Reductiveness
Annam
Lapidaries
Disinclines
Synthetical
Surficial
Binuclear
Dissimulating
Corbels
Turgescence
Suaver
Enfranchises
Overperform
Superscribed
Nodder
Hewer
Weepingly
Augustans
Emasculates
Surveyable
Enervation
Soignee
Farrowing
Julienned
Displaceable
Demountable
Knottiness
Pathognomonic
Dapperness
Sequestrator
Includible
Unsaddles
Buyable
Mollifies
Cheerlessness
Vouchsafing
Bestrewing
Federals
Uprisen
Subclavian
Whereabout
Deputize
Scintillate
Coyer
Mellifluously
Palladian
Rigorousness
Declassed
Woebegone
Beheads
Hellenization
Predestinating
Audaciously
Sufficing
Andalucian
Academical
Chestiness
Stagged
Ganoid
Bandier
Somnolence
Blandishing
Overspreads
Disembroiled
Substantiable
Casehardened
Prises
Figurativeness
Overbear
Misruled
Infectivity
Conversance
Expostulates
Farrowing
Substantials
Tweaky
Stoppable
Hallstatt
Saintlier
Economizes
Crabwise
Outspokenly
Impugns
Deprecatingly
Nattiest
Depreciable
Superheater
Calando
Contusing
Comfiest
Bestridden
Coordinative
Contused
Obtuser
Dubber
Reticulate
Fosterer
Incommodious
Distrait
Ghettoizes
Impugns
Unavoidableness
Corbels
Rewires
Fatherliness
Rejector
Raunchiest
Deliquescent
Sailplane
Unhand
Foreruns
Estranger
Tabus
Unharnessing
Fores
Commodiousness
Astraddle
Alpestrine
Articulateness
Chumminess
Scandent
Involuntariness
Resurged
Misconceiving
Mixings
Certifier
Sermonized
Striddle
Languishment
Crabwise
Unshakably
Swankiest
Machoism
Regressiveness
Lengthiness
Greenlighting
Copolymerized
Distortive
Pends
Debonairly
Forefend
Bleedings
Duskier
Spousals
Portending
Inosculates
Objectionableness
Laciest
Lewdest
Goldenness
Readably
Outfoxing
Foreswore
Transfusing
Assort
Ghostliest
Swanks
Stomachic
Provencale
Gastrovascular
Fluvial
Horizontals
Trochlear
Suitableness
Orthorhombic
Stoutened
Swinge
Syned
Displaceable
Bumpier
Flagitious
Disendowing
Teeniest
Presentee
Ruing
Reconnoitered
Overspreading
Hoper
Subduction
Emblematically
Pluralize
Misname
Distrait
Sootier
Sightlessly
Darksome
Disaffirmed
Storable
Sedates
Desex
Imprudently
Rebuffing
Confected
Serrating
Damascening
Dilapidating
Wordier
Fosterer
Leps
Wrongfulness
Satiable
Irreproachable
Amidship
Deflectable
Derange
Predeceasing
Effervesced
Outspokenly
Insinuatingly
Intussuscept
Pausal
Ovate
Tardily
Readdressed
Dealcoholized
Punctation
Resultants
Melodiousness
Teethe
Disentombing
Frizzes
Swingle
Facked
Recommences
Uninsurability
Parnassian
Calculatingly
Poaches
Reckonable
Ingrains
Semiretired
Scintillates
Barhop
Slicking
Obstruent
Backhandedly
Customable
Superlativeness
Enspheres
Stabber
Extirpative
Waggle
Superfluously
Fossilize
Lendable
Energization
Stridden
Overstrode
Enclasping
Superlativeness
Scrunches
Deathliness
Supposititious
Scoffingly
Synthetized
Censed
Coriaceous
Sidesaddle
Macroscopically
Enrollee
Cadaverousness
Catalytically
Dislocates
Melodramatically
Habituates
Objectionableness
Supervenience
Decommissions
Coarsened
Prepositive
Obligational
Eruptively
Swived
Reversibleness
Rotatory
Ooch
Transcendents
Apparentness
Erectly
Chondrification
Phosphorescing
Aggregative
Subsister
Undrawn
Emasculates
Birr
Multiservice
Aggrieves
Enwrap
Censed
Yacked
Remonstrates
Superintended
Conjoins
Deflectable
Negotiability
Ankylosed
Spectating
Unwiser
Typesets
Scrofulous
Carouses
Dewier
Galvanization
Compositely
Approvable
Prosiest
Frowsy
Smoulders
Inspanned
Raisable
Tweezes
Dispraising
Cisatlantic
Barnstormer
Shinnied
Teeniest
Antipathetic
Presold
Gutturalize
Includible
Finlandization
Illegalized
Pontifically
Dodginess
Compartmentalizing
Impolitely
Speechify
Brominated
Impowered
Nonrepresentational
Gasiform
Impetuously
Pastorals
Conventual
Semiprivate
Germanizes
Intriguer
Coexistent
Prolateness
Centesimal
Westwardly
Estreated
Frowziest
Savorless
Undemonstrative
Cumbrous
Vesication
Dispraising
Unsettlement
Misrules
Flayer
Fulsomeness
Harmonizer
Instals
Palpitates
Blatted
Prurience
Caresser
Lividly
Scintillant
Depreciable
Ankylose
Recessively
Aggrieves
Quainter
Degradingly
Compositeness
Incommodious
Upholsterer
Transmarine
Forehands
Gerrymander
Chrysalides
Copulated
Tridimensional
Resurged
Benzyl
Inosculated
Undergrounding
Sightlessly
Exalter
Underdo
Worsting
Waterskis
Embossment
Humidifying
Incubates
Secretor
Adrenocortical
Semiautomatics
Enslaver
Convincingness
Equatable
Sootier
Countercyclical
Unpromisingly
Traumatization
Aggrieving
Remonstrative
Rucking
Afferent
Classlessness
Nullifiers
Disarticulate
Pluralize
Ruthenious
Musingly
Psychosexuality
Transfusing
Exiguity
Intermural
Ditherer
Supposer
/* Prototype JavaScript framework, version 1.4.0
* (c) 2005 Sam Stephenson
*
* THIS FILE IS AUTOMATICALLY GENERATED. When sending patches, please diff
* against the source tree, available from the Prototype darcs repository.
*
* Prototype is freely distributable under the terms of an MIT-style license.
*
* For details, see the Prototype web site: http://prototype.conio.net/
*
/*--------------------------------------------------------------------------*/
var Prototype = {
Version: '1.4.0',
ScriptFragment: '(?:)((\n|\r|.)*?)(?:<\/script>)',
emptyFunction: function() {},
K: function(x) {return x}
}
var Class = {
create: function() {
return function() {
this.initialize.apply(this, arguments);
}
}
}
var Abstract = new Object();
Object.extend = function(destination, source) {
for (property in source) {
destination[property] = source[property];
}
return destination;
}
Object.inspect = function(object) {
try {
if (object == undefined) return 'undefined';
if (object == null) return 'null';
return object.inspect ? object.inspect() : object.toString();
} catch (e) {
if (e instanceof RangeError) return '...';
throw e;
}
}
Function.prototype.bind = function() {
var __method = this, args = $A(arguments), object = args.shift();
return function() {
return __method.apply(object, args.concat($A(arguments)));
}
}
Function.prototype.bindAsEventListener = function(object) {
var __method = this;
return function(event) {
return __method.call(object, event || window.event);
}
}
Object.extend(Number.prototype, {
toColorPart: function() {
var digits = this.toString(16);
if (this < 16) return '0' + digits;
return digits;
},
succ: function() {
return this + 1;
},
times: function(iterator) {
$R(0, this, true).each(iterator);
return this;
}
});
var Try = {
these: function() {
var returnValue;
for (var i = 0; i < arguments.length; i++) {
var lambda = arguments[i];
try {
returnValue = lambda();
break;
} catch (e) {}
}
return returnValue;
}
}
/*--------------------------------------------------------------------------*/
var PeriodicalExecuter = Class.create();
PeriodicalExecuter.prototype = {
initialize: function(callback, frequency) {
this.callback = callback;
this.frequency = frequency;
this.currentlyExecuting = false;
this.registerCallback();
},
registerCallback: function() {
setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
},
onTimerEvent: function() {
if (!this.currentlyExecuting) {
try {
this.currentlyExecuting = true;
this.callback();
} finally {
this.currentlyExecuting = false;
}
}
}
}
/*--------------------------------------------------------------------------*/
function $() {
var elements = new Array();
for (var i = 0; i < arguments.length; i++) {
var element = arguments[i];
if (typeof element == 'string')
element = document.getElementById(element);
if (arguments.length == 1)
return element;
elements.push(element);
}
return elements;
}
Object.extend(String.prototype, {
stripTags: function() {
return this.replace(/<\/?[^>]+>/gi, '');
},
stripScripts: function() {
return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '');
},
extractScripts: function() {
var matchAll = new RegExp(Prototype.ScriptFragment, 'img');
var matchOne = new RegExp(Prototype.ScriptFragment, 'im');
return (this.match(matchAll) || []).map(function(scriptTag) {
return (scriptTag.match(matchOne) || ['', ''])[1];
});
},
evalScripts: function() {
return this.extractScripts().map(eval);
},
escapeHTML: function() {
var div = document.createElement('div');
var text = document.createTextNode(this);
div.appendChild(text);
return div.innerHTML;
},
unescapeHTML: function() {
var div = document.createElement('div');
div.innerHTML = this.stripTags();
return div.childNodes[0] ? div.childNodes[0].nodeValue : '';
},
toQueryParams: function() {
var pairs = this.match(/^\??(.*)$/)[1].split('&');
return pairs.inject({}, function(params, pairString) {
var pair = pairString.split('=');
params[pair[0]] = pair[1];
return params;
});
},
toArray: function() {
return this.split('');
},
camelize: function() {
var oStringList = this.split('-');
if (oStringList.length == 1) return oStringList[0];
var camelizedString = this.indexOf('-') == 0
? oStringList[0].charAt(0).toUpperCase() + oStringList[0].substring(1)
: oStringList[0];
for (var i = 1, len = oStringList.length; i < len; i++) {
var s = oStringList[i];
camelizedString += s.charAt(0).toUpperCase() + s.substring(1);
}
return camelizedString;
},
inspect: function() {
return "'" + this.replace('\\', '\\\\').replace("'", '\\\'') + "'";
}
});
String.prototype.parseQuery = String.prototype.toQueryParams;
var $break = new Object();
var $continue = new Object();
var Enumerable = {
each: function(iterator) {
var index = 0;
try {
this._each(function(value) {
try {
iterator(value, index++);
} catch (e) {
if (e != $continue) throw e;
}
});
} catch (e) {
if (e != $break) throw e;
}
},
all: function(iterator) {
var result = true;
this.each(function(value, index) {
result = result && !!(iterator || Prototype.K)(value, index);
if (!result) throw $break;
});
return result;
},
any: function(iterator) {
var result = true;
this.each(function(value, index) {
if (result = !!(iterator || Prototype.K)(value, index))
throw $break;
});
return result;
},
collect: function(iterator) {
var results = [];
this.each(function(value, index) {
results.push(iterator(value, index));
});
return results;
},
detect: function (iterator) {
var result;
this.each(function(value, index) {
if (iterator(value, index)) {
result = value;
throw $break;
}
});
return result;
},
findAll: function(iterator) {
var results = [];
this.each(function(value, index) {
if (iterator(value, index))
results.push(value);
});
return results;
},
grep: function(pattern, iterator) {
var results = [];
this.each(function(value, index) {
var stringValue = value.toString();
if (stringValue.match(pattern))
results.push((iterator || Prototype.K)(value, index));
})
return results;
},
include: function(object) {
var found = false;
this.each(function(value) {
if (value == object) {
found = true;
throw $break;
}
});
return found;
},
inject: function(memo, iterator) {
this.each(function(value, index) {
memo = iterator(memo, value, index);
});
return memo;
},
invoke: function(method) {
var args = $A(arguments).slice(1);
return this.collect(function(value) {
return value[method].apply(value, args);
});
},
max: function(iterator) {
var result;
this.each(function(value, index) {
value = (iterator || Prototype.K)(value, index);
if (value >= (result || value))
result = value;
});
return result;
},
min: function(iterator) {
var result;
this.each(function(value, index) {
value = (iterator || Prototype.K)(value, index);
if (value <= (result || value))
result = value;
});
return result;
},
partition: function(iterator) {
var trues = [], falses = [];
this.each(function(value, index) {
((iterator || Prototype.K)(value, index) ?
trues : falses).push(value);
});
return [trues, falses];
},
pluck: function(property) {
var results = [];
this.each(function(value, index) {
results.push(value[property]);
});
return results;
},
reject: function(iterator) {
var results = [];
this.each(function(value, index) {
if (!iterator(value, index))
results.push(value);
});
return results;
},
sortBy: function(iterator) {
return this.collect(function(value, index) {
return {value: value, criteria: iterator(value, index)};
}).sort(function(left, right) {
var a = left.criteria, b = right.criteria;
return a < b ? -1 : a > b ? 1 : 0;
}).pluck('value');
},
toArray: function() {
return this.collect(Prototype.K);
},
zip: function() {
var iterator = Prototype.K, args = $A(arguments);
if (typeof args.last() == 'function')
iterator = args.pop();
var collections = [this].concat(args).map($A);
return this.map(function(value, index) {
iterator(value = collections.pluck(index));
return value;
});
},
inspect: function() {
return '#';
}
}
Object.extend(Enumerable, {
map: Enumerable.collect,
find: Enumerable.detect,
select: Enumerable.findAll,
member: Enumerable.include,
entries: Enumerable.toArray
});
var $A = Array.from = function(iterable) {
if (!iterable) return [];
if (iterable.toArray) {
return iterable.toArray();
} else {
var results = [];
for (var i = 0; i < iterable.length; i++)
results.push(iterable[i]);
return results;
}
}
Object.extend(Array.prototype, Enumerable);
Array.prototype._reverse = Array.prototype.reverse;
Object.extend(Array.prototype, {
_each: function(iterator) {
for (var i = 0; i < this.length; i++)
iterator(this[i]);
},
clear: function() {
this.length = 0;
return this;
},
first: function() {
return this[0];
},
last: function() {
return this[this.length - 1];
},
compact: function() {
return this.select(function(value) {
return value != undefined || value != null;
});
},
flatten: function() {
return this.inject([], function(array, value) {
return array.concat(value.constructor == Array ?
value.flatten() : [value]);
});
},
without: function() {
var values = $A(arguments);
return this.select(function(value) {
return !values.include(value);
});
},
indexOf: function(object) {
for (var i = 0; i < this.length; i++)
if (this[i] == object) return i;
return -1;
},
reverse: function(inline) {
return (inline !== false ? this : this.toArray())._reverse();
},
shift: function() {
var result = this[0];
for (var i = 0; i < this.length - 1; i++)
this[i] = this[i + 1];
this.length--;
return result;
},
inspect: function() {
return '[' + this.map(Object.inspect).join(', ') + ']';
}
});
var Hash = {
_each: function(iterator) {
for (key in this) {
var value = this[key];
if (typeof value == 'function') continue;
var pair = [key, value];
pair.key = key;
pair.value = value;
iterator(pair);
}
},
keys: function() {
return this.pluck('key');
},
values: function() {
return this.pluck('value');
},
merge: function(hash) {
return $H(hash).inject($H(this), function(mergedHash, pair) {
mergedHash[pair.key] = pair.value;
return mergedHash;
});
},
toQueryString: function() {
return this.map(function(pair) {
return pair.map(encodeURIComponent).join('=');
}).join('&');
},
inspect: function() {
return '#';
}
}
function $H(object) {
var hash = Object.extend({}, object || {});
Object.extend(hash, Enumerable);
Object.extend(hash, Hash);
return hash;
}
ObjectRange = Class.create();
Object.extend(ObjectRange.prototype, Enumerable);
Object.extend(ObjectRange.prototype, {
initialize: function(start, end, exclusive) {
this.start = start;
this.end = end;
this.exclusive = exclusive;
},
_each: function(iterator) {
var value = this.start;
do {
iterator(value);
value = value.succ();
} while (this.include(value));
},
include: function(value) {
if (value < this.start)
return false;
if (this.exclusive)
return value < this.end;
return value <= this.end;
}
});
var $R = function(start, end, exclusive) {
return new ObjectRange(start, end, exclusive);
}
var Ajax = {
getTransport: function() {
return Try.these(
function() {return new ActiveXObject('Msxml2.XMLHTTP')},
function() {return new ActiveXObject('Microsoft.XMLHTTP')},
function() {return new XMLHttpRequest()}
) || false;
},
activeRequestCount: 0
}
Ajax.Responders = {
responders: [],
_each: function(iterator) {
this.responders._each(iterator);
},
register: function(responderToAdd) {
if (!this.include(responderToAdd))
this.responders.push(responderToAdd);
},
unregister: function(responderToRemove) {
this.responders = this.responders.without(responderToRemove);
},
dispatch: function(callback, request, transport, json) {
this.each(function(responder) {
if (responder[callback] && typeof responder[callback] == 'function') {
try {
responder[callback].apply(responder, [request, transport, json]);
} catch (e) {}
}
});
}
};
Object.extend(Ajax.Responders, Enumerable);
Ajax.Responders.register({
onCreate: function() {
Ajax.activeRequestCount++;
},
onComplete: function() {
Ajax.activeRequestCount--;
}
});
Ajax.Base = function() {};
Ajax.Base.prototype = {
setOptions: function(options) {
this.options = {
method: 'post',
asynchronous: true,
parameters: ''
}
Object.extend(this.options, options || {});
},
responseIsSuccess: function() {
return this.transport.status == undefined
|| this.transport.status == 0
|| (this.transport.status >= 200 && this.transport.status < 300);
},
responseIsFailure: function() {
return !this.responseIsSuccess();
}
}
Ajax.Request = Class.create();
Ajax.Request.Events =
['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];
Ajax.Request.prototype = Object.extend(new Ajax.Base(), {
initialize: function(url, options) {
this.transport = Ajax.getTransport();
this.setOptions(options);
this.request(url);
},
request: function(url) {
var parameters = this.options.parameters || '';
if (parameters.length > 0) parameters += '&_=';
try {
this.url = url;
if (this.options.method == 'get' && parameters.length > 0)
this.url += (this.url.match(/\?/) ? '&' : '?') + parameters;
Ajax.Responders.dispatch('onCreate', this, this.transport);
this.transport.open(this.options.method, this.url,
this.options.asynchronous);
if (this.options.asynchronous) {
this.transport.onreadystatechange = this.onStateChange.bind(this);
setTimeout((function() {this.respondToReadyState(1)}).bind(this), 10);
}
this.setRequestHeaders();
var body = this.options.postBody ? this.options.postBody : parameters;
this.transport.send(this.options.method == 'post' ? body : null);
} catch (e) {
this.dispatchException(e);
}
},
setRequestHeaders: function() {
var requestHeaders =
['X-Requested-With', 'XMLHttpRequest',
'X-Prototype-Version', Prototype.Version];
if (this.options.method == 'post') {
requestHeaders.push('Content-type',
'application/x-www-form-urlencoded');
/* Force "Connection: close" for Mozilla browsers to work around
* a bug where XMLHttpReqeuest sends an incorrect Content-length
* header. See Mozilla Bugzilla #246651.
*/
if (this.transport.overrideMimeType)
requestHeaders.push('Connection', 'close');
}
if (this.options.requestHeaders)
requestHeaders.push.apply(requestHeaders, this.options.requestHeaders);
for (var i = 0; i < requestHeaders.length; i += 2)
this.transport.setRequestHeader(requestHeaders[i], requestHeaders[i+1]);
},
onStateChange: function() {
var readyState = this.transport.readyState;
if (readyState != 1)
this.respondToReadyState(this.transport.readyState);
},
header: function(name) {
try {
return this.transport.getResponseHeader(name);
} catch (e) {}
},
evalJSON: function() {
try {
return eval(this.header('X-JSON'));
} catch (e) {}
},
evalResponse: function() {
try {
return eval(this.transport.responseText);
} catch (e) {
this.dispatchException(e);
}
},
respondToReadyState: function(readyState) {
var event = Ajax.Request.Events[readyState];
var transport = this.transport, json = this.evalJSON();
if (event == 'Complete') {
try {
(this.options['on' + this.transport.status]
|| this.options['on' + (this.responseIsSuccess() ? 'Success' : 'Failure')]
|| Prototype.emptyFunction)(transport, json);
} catch (e) {
this.dispatchException(e);
}
if ((this.header('Content-type') || '').match(/^text\/javascript/i))
this.evalResponse();
}
try {
(this.options['on' + event] || Prototype.emptyFunction)(transport, json);
Ajax.Responders.dispatch('on' + event, this, transport, json);
} catch (e) {
this.dispatchException(e);
}
/* Avoid memory leak in MSIE: clean up the oncomplete event handler */
if (event == 'Complete')
this.transport.onreadystatechange = Prototype.emptyFunction;
},
dispatchException: function(exception) {
(this.options.onException || Prototype.emptyFunction)(this, exception);
Ajax.Responders.dispatch('onException', this, exception);
}
});
Ajax.Updater = Class.create();
Object.extend(Object.extend(Ajax.Updater.prototype, Ajax.Request.prototype), {
initialize: function(container, url, options) {
this.containers = {
success: container.success ? $(container.success) : $(container),
failure: container.failure ? $(container.failure) :
(container.success ? null : $(container))
}
this.transport = Ajax.getTransport();
this.setOptions(options);
var onComplete = this.options.onComplete || Prototype.emptyFunction;
this.options.onComplete = (function(transport, object) {
this.updateContent();
onComplete(transport, object);
}).bind(this);
this.request(url);
},
updateContent: function() {
var receiver = this.responseIsSuccess() ?
this.containers.success : this.containers.failure;
var response = this.transport.responseText;
if (!this.options.evalScripts)
response = response.stripScripts();
if (receiver) {
if (this.options.insertion) {
new this.options.insertion(receiver, response);
} else {
Element.update(receiver, response);
}
}
if (this.responseIsSuccess()) {
if (this.onComplete)
setTimeout(this.onComplete.bind(this), 10);
}
}
});
Ajax.PeriodicalUpdater = Class.create();
Ajax.PeriodicalUpdater.prototype = Object.extend(new Ajax.Base(), {
initialize: function(container, url, options) {
this.setOptions(options);
this.onComplete = this.options.onComplete;
this.frequency = (this.options.frequency || 2);
this.decay = (this.options.decay || 1);
this.updater = {};
this.container = container;
this.url = url;
this.start();
},
start: function() {
this.options.onComplete = this.updateComplete.bind(this);
this.onTimerEvent();
},
stop: function() {
this.updater.onComplete = undefined;
clearTimeout(this.timer);
(this.onComplete || Prototype.emptyFunction).apply(this, arguments);
},
updateComplete: function(request) {
if (this.options.decay) {
this.decay = (request.responseText == this.lastText ?
this.decay * this.options.decay : 1);
this.lastText = request.responseText;
}
this.timer = setTimeout(this.onTimerEvent.bind(this),
this.decay * this.frequency * 1000);
},
onTimerEvent: function() {
this.updater = new Ajax.Updater(this.container, this.url, this.options);
}
});
document.getElementsByClassName = function(className, parentElement) {
var children = ($(parentElement) || document.body).getElementsByTagName('*');
return $A(children).inject([], function(elements, child) {
if (child.className.match(new RegExp("(^|\\s)" + className + "(\\s|$)")))
elements.push(child);
return elements;
});
}
/*--------------------------------------------------------------------------*/
if (!window.Element) {
var Element = new Object();
}
Object.extend(Element, {
visible: function(element) {
return $(element).style.display != 'none';
},
toggle: function() {
for (var i = 0; i < arguments.length; i++) {
var element = $(arguments[i]);
Element[Element.visible(element) ? 'hide' : 'show'](element);
}
},
hide: function() {
for (var i = 0; i < arguments.length; i++) {
var element = $(arguments[i]);
element.style.display = 'none';
}
},
show: function() {
for (var i = 0; i < arguments.length; i++) {
var element = $(arguments[i]);
element.style.display = '';
}
},
remove: function(element) {
element = $(element);
element.parentNode.removeChild(element);
},
update: function(element, html) {
$(element).innerHTML = html.stripScripts();
setTimeout(function() {html.evalScripts()}, 10);
},
getHeight: function(element) {
element = $(element);
return element.offsetHeight;
},
classNames: function(element) {
return new Element.ClassNames(element);
},
hasClassName: function(element, className) {
if (!(element = $(element))) return;
return Element.classNames(element).include(className);
},
addClassName: function(element, className) {
if (!(element = $(element))) return;
return Element.classNames(element).add(className);
},
removeClassName: function(element, className) {
if (!(element = $(element))) return;
return Element.classNames(element).remove(className);
},
// removes whitespace-only text node children
cleanWhitespace: function(element) {
element = $(element);
for (var i = 0; i < element.childNodes.length; i++) {
var node = element.childNodes[i];
if (node.nodeType == 3 && !/\S/.test(node.nodeValue))
Element.remove(node);
}
},
empty: function(element) {
return $(element).innerHTML.match(/^\s*$/);
},
scrollTo: function(element) {
element = $(element);
var x = element.x ? element.x : element.offsetLeft,
y = element.y ? element.y : element.offsetTop;
window.scrollTo(x, y);
},
getStyle: function(element, style) {
element = $(element);
var value = element.style[style.camelize()];
if (!value) {
if (document.defaultView && document.defaultView.getComputedStyle) {
var css = document.defaultView.getComputedStyle(element, null);
value = css ? css.getPropertyValue(style) : null;
} else if (element.currentStyle) {
value = element.currentStyle[style.camelize()];
}
}
if (window.opera && ['left', 'top', 'right', 'bottom'].include(style))
if (Element.getStyle(element, 'position') == 'static') value = 'auto';
return value == 'auto' ? null : value;
},
setStyle: function(element, style) {
element = $(element);
for (name in style)
element.style[name.camelize()] = style[name];
},
getDimensions: function(element) {
element = $(element);
if (Element.getStyle(element, 'display') != 'none')
return {width: element.offsetWidth, height: element.offsetHeight};
// All *Width and *Height properties give 0 on elements with display none,
// so enable the element temporarily
var els = element.style;
var originalVisibility = els.visibility;
var originalPosition = els.position;
els.visibility = 'hidden';
els.position = 'absolute';
els.display = '';
var originalWidth = element.clientWidth;
var originalHeight = element.clientHeight;
els.display = 'none';
els.position = originalPosition;
els.visibility = originalVisibility;
return {width: originalWidth, height: originalHeight};
},
makePositioned: function(element) {
element = $(element);
var pos = Element.getStyle(element, 'position');
if (pos == 'static' || !pos) {
element._madePositioned = true;
element.style.position = 'relative';
// Opera returns the offset relative to the positioning context, when an
// element is position relative but top and left have not been defined
if (window.opera) {
element.style.top = 0;
element.style.left = 0;
}
}
},
undoPositioned: function(element) {
element = $(element);
if (element._madePositioned) {
element._madePositioned = undefined;
element.style.position =
element.style.top =
element.style.left =
element.style.bottom =
element.style.right = '';
}
},
makeClipping: function(element) {
element = $(element);
if (element._overflow) return;
element._overflow = element.style.overflow;
if ((Element.getStyle(element, 'overflow') || 'visible') != 'hidden')
element.style.overflow = 'hidden';
},
undoClipping: function(element) {
element = $(element);
if (element._overflow) return;
element.style.overflow = element._overflow;
element._overflow = undefined;
}
});
var Toggle = new Object();
Toggle.display = Element.toggle;
/*--------------------------------------------------------------------------*/
Abstract.Insertion = function(adjacency) {
this.adjacency = adjacency;
}
Abstract.Insertion.prototype = {
initialize: function(element, content) {
this.element = $(element);
this.content = content.stripScripts();
if (this.adjacency && this.element.insertAdjacentHTML) {
try {
this.element.insertAdjacentHTML(this.adjacency, this.content);
} catch (e) {
if (this.element.tagName.toLowerCase() == 'tbody') {
this.insertContent(this.contentFromAnonymousTable());
} else {
throw e;
}
}
} else {
this.range = this.element.ownerDocument.createRange();
if (this.initializeRange) this.initializeRange();
this.insertContent([this.range.createContextualFragment(this.content)]);
}
setTimeout(function() {content.evalScripts()}, 10);
},
contentFromAnonymousTable: function() {
var div = document.createElement('div');
div.innerHTML = '';
return $A(div.childNodes[0].childNodes[0].childNodes);
}
}
var Insertion = new Object();
Insertion.Before = Class.create();
Insertion.Before.prototype = Object.extend(new Abstract.Insertion('beforeBegin'), {
initializeRange: function() {
this.range.setStartBefore(this.element);
},
insertContent: function(fragments) {
fragments.each((function(fragment) {
this.element.parentNode.insertBefore(fragment, this.element);
}).bind(this));
}
});
Insertion.Top = Class.create();
Insertion.Top.prototype = Object.extend(new Abstract.Insertion('afterBegin'), {
initializeRange: function() {
this.range.selectNodeContents(this.element);
this.range.collapse(true);
},
insertContent: function(fragments) {
fragments.reverse(false).each((function(fragment) {
this.element.insertBefore(fragment, this.element.firstChild);
}).bind(this));
}
});
Insertion.Bottom = Class.create();
Insertion.Bottom.prototype = Object.extend(new Abstract.Insertion('beforeEnd'), {
initializeRange: function() {
this.range.selectNodeContents(this.element);
this.range.collapse(this.element);
},
insertContent: function(fragments) {
fragments.each((function(fragment) {
this.element.appendChild(fragment);
}).bind(this));
}
});
Insertion.After = Class.create();
Insertion.After.prototype = Object.extend(new Abstract.Insertion('afterEnd'), {
initializeRange: function() {
this.range.setStartAfter(this.element);
},
insertContent: function(fragments) {
fragments.each((function(fragment) {
this.element.parentNode.insertBefore(fragment,
this.element.nextSibling);
}).bind(this));
}
});
/*--------------------------------------------------------------------------*/
Element.ClassNames = Class.create();
Element.ClassNames.prototype = {
initialize: function(element) {
this.element = $(element);
},
_each: function(iterator) {
this.element.className.split(/\s+/).select(function(name) {
return name.length > 0;
})._each(iterator);
},
set: function(className) {
this.element.className = className;
},
add: function(classNameToAdd) {
if (this.include(classNameToAdd)) return;
this.set(this.toArray().concat(classNameToAdd).join(' '));
},
remove: function(classNameToRemove) {
if (!this.include(classNameToRemove)) return;
this.set(this.select(function(className) {
return className != classNameToRemove;
}).join(' '));
},
toString: function() {
return this.toArray().join(' ');
}
}
Object.extend(Element.ClassNames.prototype, Enumerable);
var Field = {
clear: function() {
for (var i = 0; i < arguments.length; i++)
$(arguments[i]).value = '';
},
focus: function(element) {
$(element).focus();
},
present: function() {
for (var i = 0; i < arguments.length; i++)
if ($(arguments[i]).value == '') return false;
return true;
},
select: function(element) {
$(element).select();
},
activate: function(element) {
element = $(element);
element.focus();
if (element.select)
element.select();
}
}
/*--------------------------------------------------------------------------*/
var Form = {
serialize: function(form) {
var elements = Form.getElements($(form));
var queryComponents = new Array();
for (var i = 0; i < elements.length; i++) {
var queryComponent = Form.Element.serialize(elements[i]);
if (queryComponent)
queryComponents.push(queryComponent);
}
return queryComponents.join('&');
},
getElements: function(form) {
form = $(form);
var elements = new Array();
for (tagName in Form.Element.Serializers) {
var tagElements = form.getElementsByTagName(tagName);
for (var j = 0; j < tagElements.length; j++)
elements.push(tagElements[j]);
}
return elements;
},
getInputs: function(form, typeName, name) {
form = $(form);
var inputs = form.getElementsByTagName('input');
if (!typeName && !name)
return inputs;
var matchingInputs = new Array();
for (var i = 0; i < inputs.length; i++) {
var input = inputs[i];
if ((typeName && input.type != typeName) ||
(name && input.name != name))
continue;
matchingInputs.push(input);
}
return matchingInputs;
},
disable: function(form) {
var elements = Form.getElements(form);
for (var i = 0; i < elements.length; i++) {
var element = elements[i];
element.blur();
element.disabled = 'true';
}
},
enable: function(form) {
var elements = Form.getElements(form);
for (var i = 0; i < elements.length; i++) {
var element = elements[i];
element.disabled = '';
}
},
findFirstElement: function(form) {
return Form.getElements(form).find(function(element) {
return element.type != 'hidden' && !element.disabled &&
['input', 'select', 'textarea'].include(element.tagName.toLowerCase());
});
},
focusFirstElement: function(form) {
Field.activate(Form.findFirstElement(form));
},
reset: function(form) {
$(form).reset();
}
}
Form.Element = {
serialize: function(element) {
element = $(element);
var method = element.tagName.toLowerCase();
var parameter = Form.Element.Serializers[method](element);
if (parameter) {
var key = encodeURIComponent(parameter[0]);
if (key.length == 0) return;
if (parameter[1].constructor != Array)
parameter[1] = [parameter[1]];
return parameter[1].map(function(value) {
return key + '=' + encodeURIComponent(value);
}).join('&');
}
},
getValue: function(element) {
element = $(element);
var method = element.tagName.toLowerCase();
var parameter = Form.Element.Serializers[method](element);
if (parameter)
return parameter[1];
}
}
Form.Element.Serializers = {
input: function(element) {
switch (element.type.toLowerCase()) {
case 'submit':
case 'hidden':
case 'password':
case 'text':
return Form.Element.Serializers.textarea(element);
case 'checkbox':
case 'radio':
return Form.Element.Serializers.inputSelector(element);
}
return false;
},
inputSelector: function(element) {
if (element.checked)
return [element.name, element.value];
},
textarea: function(element) {
return [element.name, element.value];
},
select: function(element) {
return Form.Element.Serializers[element.type == 'select-one' ?
'selectOne' : 'selectMany'](element);
},
selectOne: function(element) {
var value = '', opt, index = element.selectedIndex;
if (index >= 0) {
opt = element.options[index];
value = opt.value;
if (!value && !('value' in opt))
value = opt.text;
}
return [element.name, value];
},
selectMany: function(element) {
var value = new Array();
for (var i = 0; i < element.length; i++) {
var opt = element.options[i];
if (opt.selected) {
var optValue = opt.value;
if (!optValue && !('value' in opt))
optValue = opt.text;
value.push(optValue);
}
}
return [element.name, value];
}
}
/*--------------------------------------------------------------------------*/
var $F = Form.Element.getValue;
/*--------------------------------------------------------------------------*/
Abstract.TimedObserver = function() {}
Abstract.TimedObserver.prototype = {
initialize: function(element, frequency, callback) {
this.frequency = frequency;
this.element = $(element);
this.callback = callback;
this.lastValue = this.getValue();
this.registerCallback();
},
registerCallback: function() {
setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
},
onTimerEvent: function() {
var value = this.getValue();
if (this.lastValue != value) {
this.callback(this.element, value);
this.lastValue = value;
}
}
}
Form.Element.Observer = Class.create();
Form.Element.Observer.prototype = Object.extend(new Abstract.TimedObserver(), {
getValue: function() {
return Form.Element.getValue(this.element);
}
});
Form.Observer = Class.create();
Form.Observer.prototype = Object.extend(new Abstract.TimedObserver(), {
getValue: function() {
return Form.serialize(this.element);
}
});
/*--------------------------------------------------------------------------*/
Abstract.EventObserver = function() {}
Abstract.EventObserver.prototype = {
initialize: function(element, callback) {
this.element = $(element);
this.callback = callback;
this.lastValue = this.getValue();
if (this.element.tagName.toLowerCase() == 'form')
this.registerFormCallbacks();
else
this.registerCallback(this.element);
},
onElementEvent: function() {
var value = this.getValue();
if (this.lastValue != value) {
this.callback(this.element, value);
this.lastValue = value;
}
},
registerFormCallbacks: function() {
var elements = Form.getElements(this.element);
for (var i = 0; i < elements.length; i++)
this.registerCallback(elements[i]);
},
registerCallback: function(element) {
if (element.type) {
switch (element.type.toLowerCase()) {
case 'checkbox':
case 'radio':
Event.observe(element, 'click', this.onElementEvent.bind(this));
break;
case 'password':
case 'text':
case 'textarea':
case 'select-one':
case 'select-multiple':
Event.observe(element, 'change', this.onElementEvent.bind(this));
break;
}
}
}
}
Form.Element.EventObserver = Class.create();
Form.Element.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), {
getValue: function() {
return Form.Element.getValue(this.element);
}
});
Form.EventObserver = Class.create();
Form.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), {
getValue: function() {
return Form.serialize(this.element);
}
});
if (!window.Event) {
var Event = new Object();
}
Object.extend(Event, {
KEY_BACKSPACE: 8,
KEY_TAB: 9,
KEY_RETURN: 13,
KEY_ESC: 27,
KEY_LEFT: 37,
KEY_UP: 38,
KEY_RIGHT: 39,
KEY_DOWN: 40,
KEY_DELETE: 46,
element: function(event) {
return event.target || event.srcElement;
},
isLeftClick: function(event) {
return (((event.which) && (event.which == 1)) ||
((event.button) && (event.button == 1)));
},
pointerX: function(event) {
return event.pageX || (event.clientX +
(document.documentElement.scrollLeft || document.body.scrollLeft));
},
pointerY: function(event) {
return event.pageY || (event.clientY +
(document.documentElement.scrollTop || document.body.scrollTop));
},
stop: function(event) {
if (event.preventDefault) {
event.preventDefault();
event.stopPropagation();
} else {
event.returnValue = false;
event.cancelBubble = true;
}
},
// find the first node with the given tagName, starting from the
// node the event was triggered on; traverses the DOM upwards
findElement: function(event, tagName) {
var element = Event.element(event);
while (element.parentNode && (!element.tagName ||
(element.tagName.toUpperCase() != tagName.toUpperCase())))
element = element.parentNode;
return element;
},
observers: false,
_observeAndCache: function(element, name, observer, useCapture) {
if (!this.observers) this.observers = [];
if (element.addEventListener) {
this.observers.push([element, name, observer, useCapture]);
element.addEventListener(name, observer, useCapture);
} else if (element.attachEvent) {
this.observers.push([element, name, observer, useCapture]);
element.attachEvent('on' + name, observer);
}
},
unloadCache: function() {
if (!Event.observers) return;
for (var i = 0; i < Event.observers.length; i++) {
Event.stopObserving.apply(this, Event.observers[i]);
Event.observers[i][0] = null;
}
Event.observers = false;
},
observe: function(element, name, observer, useCapture) {
var element = $(element);
useCapture = useCapture || false;
if (name == 'keypress' &&
(navigator.appVersion.match(/Konqueror|Safari|KHTML/)
|| element.attachEvent))
name = 'keydown';
this._observeAndCache(element, name, observer, useCapture);
},
stopObserving: function(element, name, observer, useCapture) {
var element = $(element);
useCapture = useCapture || false;
if (name == 'keypress' &&
(navigator.appVersion.match(/Konqueror|Safari|KHTML/)
|| element.detachEvent))
name = 'keydown';
if (element.removeEventListener) {
element.removeEventListener(name, observer, useCapture);
} else if (element.detachEvent) {
element.detachEvent('on' + name, observer);
}
}
});
/* prevent memory leaks in IE */
Event.observe(window, 'unload', Event.unloadCache, false);
var Position = {
// set to true if needed, warning: firefox performance problems
// NOT neeeded for page scrolling, only if draggable contained in
// scrollable elements
includeScrollOffsets: false,
// must be called before calling withinIncludingScrolloffset, every time the
// page is scrolled
prepare: function() {
this.deltaX = window.pageXOffset
|| document.documentElement.scrollLeft
|| document.body.scrollLeft
|| 0;
this.deltaY = window.pageYOffset
|| document.documentElement.scrollTop
|| document.body.scrollTop
|| 0;
},
realOffset: function(element) {
var valueT = 0, valueL = 0;
do {
valueT += element.scrollTop || 0;
valueL += element.scrollLeft || 0;
element = element.parentNode;
} while (element);
return [valueL, valueT];
},
cumulativeOffset: function(element) {
var valueT = 0, valueL = 0;
do {
valueT += element.offsetTop || 0;
valueL += element.offsetLeft || 0;
element = element.offsetParent;
} while (element);
return [valueL, valueT];
},
positionedOffset: function(element) {
var valueT = 0, valueL = 0;
do {
valueT += element.offsetTop || 0;
valueL += element.offsetLeft || 0;
element = element.offsetParent;
if (element) {
p = Element.getStyle(element, 'position');
if (p == 'relative' || p == 'absolute') break;
}
} while (element);
return [valueL, valueT];
},
offsetParent: function(element) {
if (element.offsetParent) return element.offsetParent;
if (element == document.body) return element;
while ((element = element.parentNode) && element != document.body)
if (Element.getStyle(element, 'position') != 'static')
return element;
return document.body;
},
// caches x/y coordinate pair to use with overlap
within: function(element, x, y) {
if (this.includeScrollOffsets)
return this.withinIncludingScrolloffsets(element, x, y);
this.xcomp = x;
this.ycomp = y;
this.offset = this.cumulativeOffset(element);
return (y >= this.offset[1] &&
y < this.offset[1] + element.offsetHeight &&
x >= this.offset[0] &&
x < this.offset[0] + element.offsetWidth);
},
withinIncludingScrolloffsets: function(element, x, y) {
var offsetcache = this.realOffset(element);
this.xcomp = x + offsetcache[0] - this.deltaX;
this.ycomp = y + offsetcache[1] - this.deltaY;
this.offset = this.cumulativeOffset(element);
return (this.ycomp >= this.offset[1] &&
this.ycomp < this.offset[1] + element.offsetHeight &&
this.xcomp >= this.offset[0] &&
this.xcomp < this.offset[0] + element.offsetWidth);
},
// within must be called directly before
overlap: function(mode, element) {
if (!mode) return 0;
if (mode == 'vertical')
return ((this.offset[1] + element.offsetHeight) - this.ycomp) /
element.offsetHeight;
if (mode == 'horizontal')
return ((this.offset[0] + element.offsetWidth) - this.xcomp) /
element.offsetWidth;
},
clone: function(source, target) {
source = $(source);
target = $(target);
target.style.position = 'absolute';
var offsets = this.cumulativeOffset(source);
target.style.top = offsets[1] + 'px';
target.style.left = offsets[0] + 'px';
target.style.width = source.offsetWidth + 'px';
target.style.height = source.offsetHeight + 'px';
},
page: function(forElement) {
var valueT = 0, valueL = 0;
var element = forElement;
do {
valueT += element.offsetTop || 0;
valueL += element.offsetLeft || 0;
// Safari fix
if (element.offsetParent==document.body)
if (Element.getStyle(element,'position')=='absolute') break;
} while (element = element.offsetParent);
element = forElement;
do {
valueT -= element.scrollTop || 0;
valueL -= element.scrollLeft || 0;
} while (element = element.parentNode);
return [valueL, valueT];
},
clone: function(source, target) {
var options = Object.extend({
setLeft: true,
setTop: true,
setWidth: true,
setHeight: true,
offsetTop: 0,
offsetLeft: 0
}, arguments[2] || {})
// find page position of source
source = $(source);
var p = Position.page(source);
// find coordinate system to use
target = $(target);
var delta = [0, 0];
var parent = null;
// delta [0,0] will do fine with position: fixed elements,
// position:absolute needs offsetParent deltas
if (Element.getStyle(target,'position') == 'absolute') {
parent = Position.offsetParent(target);
delta = Position.page(parent);
}
// correct by body offsets (fixes Safari)
if (parent == document.body) {
delta[0] -= document.body.offsetLeft;
delta[1] -= document.body.offsetTop;
}
// set position
if(options.setLeft) target.style.left = (p[0] - delta[0] + options.offsetLeft) + 'px';
if(options.setTop) target.style.top = (p[1] - delta[1] + options.offsetTop) + 'px';
if(options.setWidth) target.style.width = source.offsetWidth + 'px';
if(options.setHeight) target.style.height = source.offsetHeight + 'px';
},
absolutize: function(element) {
element = $(element);
if (element.style.position == 'absolute') return;
Position.prepare();
var offsets = Position.positionedOffset(element);
var top = offsets[1];
var left = offsets[0];
var width = element.clientWidth;
var height = element.clientHeight;
element._originalLeft = left - parseFloat(element.style.left || 0);
element._originalTop = top - parseFloat(element.style.top || 0);
element._originalWidth = element.style.width;
element._originalHeight = element.style.height;
element.style.position = 'absolute';
element.style.top = top + 'px';;
element.style.left = left + 'px';;
element.style.width = width + 'px';;
element.style.height = height + 'px';;
},
relativize: function(element) {
element = $(element);
if (element.style.position == 'relative') return;
Position.prepare();
element.style.position = 'relative';
var top = parseFloat(element.style.top || 0) - (element._originalTop || 0);
var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0);
element.style.top = top + 'px';
element.style.left = left + 'px';
element.style.height = element._originalHeight;
element.style.width = element._originalWidth;
}
}
// Safari returns margins on body which is incorrect if the child is absolutely
// positioned. For performance reasons, redefine Position.cumulativeOffset for
// KHTML/WebKit only.
if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) {
Position.cumulativeOffset = function(element) {
var valueT = 0, valueL = 0;
do {
valueT += element.offsetTop || 0;
valueL += element.offsetLeft || 0;
if (element.offsetParent == document.body)
if (Element.getStyle(element, 'position') == 'absolute') break;
element = element.offsetParent;
} while (element);
return [valueL, valueT];
}
}