/* Popular phrases - AUDIOADVISOR - 13:53:35, Fri Mar 19, 2010 */
var asPhrases=new Array ('dac','psb','speaker stands','pangea','nad','phono preamp','parasound','cd players','vincent','thiel','psb image','speaker cable','power cable','bryston','ps audio','hrt','martin logan','salamander','subwoofer','oppo','headphone amp','musical fidelity','speakers','hdmi','audioquest','energy','sanus','cambridge','tuner','headphones','ipod','turntable','cambridge audio','music streamer','kimber','antenna','amplifier','integrated amplifiers','ipod dock','grado','vibrapod','usb dac','vpi','preamp','dacmagic','athena','music hall','velodyne','receivers','stands','preamplifier','power cord','nad receivers','benchmark','power','nitty gritty','hdmi cable','usb','marantz','integrated amp','nht','power conditioner','banana plugs','martin logan speakers','headphone amplifier','fm tuner','toslink','xlr','v-dac','dac magic','cardas','bookshelf speakers','phono','amp stand','interconnect','audioquest hdmi','jumpers','cables','cartridge','nrg','sacd','salamander synergy 221','rega','cd storage','clearaudio','kimber kable','creek','manley','phono stage','fm antenna','usb cable','hrt music streamer','tube amp','rca caps','amps','record cleaning machine','spade','speaker wire','streamer','target','solid tech','tv stands','blu ray players','digital to analog converter','pangea audio','martin logan subwoofer','archetype','furman','sacd players','vdac','martinlogan','ipod cable','center speaker','540p','dynamo','sennheiser','magnum dynalab','subwoofer cable','am fm tuner','manley labs','nad m5','caps','halo','acoustic panels','8tc','home theater receiver','audioquest speaker cable','vincent audio','hdmi switcher','tube','veritas','headphone cable','energy speakers','in wall speakers','salamander synergy','king cobra','grado headphones','power strip','turntable shelf','tonearm cable','psb speakers','spade connectors','antique sound lab','isolation','cardas crosslink','zamp','media storage','kimber hero','klipsch','psb synchrony','in wall','xlr interconnect','m902','antique sound','psb imagine','banana','digital cable','feet','pc speakers','psb g-design','caig','audioengine','vista','audio racks','acoustic','vincent preamp','goldring','spikes','nad m3','xlr cables','copperhead','v dac','fan','kimber usb','av receivers','epos','psb bookshelf','rack','cambridge azur','p7','isolation disc','cd changer','supercharger','encore','musical fidelity amplifier','sonata','750k','jumper cable','parasound 2100','tube preamp','stillpoints','nad t755','parasound halo','phono amp','synchrony','energy rc','hero','record cleaning','iphone','isolation feet','energy veritas','slate','macromount','phono cartridge','p1','ps audio power cable','shanling','light','v-can','balanced xlr cables','psb alpha','xlr to rca','optical','nitty','universal player','rega phono','pp2','mamba','ac-14','preface','sanus rack','audioquest type 4','340a','interconnect cable','stereo receiver','xm radio','psb alpha b1','audioquest slate','340t','crossover','parasound preamp','powered speakers','record doctor','target speaker stands','cones','dock','rega p1','840c','cd','twin 30','zerostat','m5','sleeves','record cleaner','tube headphone amp','rocket 44','center channel speakers','nad master','rca','music hall turntable','alpha b1','pangea ac-9','marantz 5003','ceiling speakers','tube amplifiers','oppo bdp-83 blu-ray player','tonearm','y connector','nad preamp','650bd','synergy','kimber 8tc','littlite','2100','vpi classic','record sleeves','mini toslink','cooling','rc-10','speaker selector','nad m2','type 4','record brush','clearaudio concept','cardas speaker cable','mini to rca','m3','black mamba','dvd','storage','l54','marantz cd','amplifier stands','grado cushion','martin logan preface','acoustic treatment','saef','sabf','analysis plus','godar','integrated','in-wall','quadlink','psb subwoofer','12tc','spdif','musical','nf204','billy bags','cardas caps','rca cable','marantz pm5003','myrtle','blue racer','connectors','640p','cooling fans','sub','725bee','audio pro','nad m55','marantz sr6004','crosslink','650c','shelf','grace design','klipsch x5','antique','record clamp','carda russian','digital coaxial audio cable','nad amplifier','p3','c7','rega turntable','source','flx','thorens','dac converter','cleaning solution','firewire','synchrony two','nad integrated','bulk cable','energy rc lcr','contact','audioquest flx','salamander shelf','ipod tube','toslink cable','contact cleaner','a23','image t6','speaker connectors','ac-3','ipod speakers','nad blu-ray','gt1','grigr','martinlogan center','blu-tack','sanus euro','nad pp3','nht subwoofer','nad 747','toslink adapter','mini rca','universal disc player','woofer','jc-1','stylus brush','sanus afa','last','315bee','bi-wired cables','conditioner','nal54','grace m902','home theater','oppo bdp-83','speaker switch box','binding post','speaker wall mounts','s30','dvd player','juice bar','cambridge dac','sidewinder','mp3 headphones','monarchy','cd rack','ac 14','fm','phono pre-amp','psb synchrony one','audioquest caps','hdmi 3','duet','pbj','fosgate','oval 12','universal','kimber kable 4tc','ground loop','dynalab','demo power cables','i-pod cable','hd800','juicebar','balanced cables','parasound a21','napp2','audio cable','bi-wire','helos','mp3','speaker switch','audioquest banana','vincent audio sv-236 mkii','740c','ticket','hdmi switch','m6i','a51','ca540p','cable management','salamander lock','bryston preamplifier','snapper','4vs','martinlogan speakers','monarchy audio','audioquest nrg','creek destiny','a21','music hall mmf','blu ray','rega p2','kimber 12tc','akg','napp3','component cable','cardas golden reference','pm8003','hdmi forest','niagara','parasound zamp v3','theil','mmf','hero cable','ps audio dac','stingray','7002','weight','av8003','parasound p7','marantz receiver','wall mount speaker brackets','scs4','vantage','rc10','hrtms','rc 10','marantz cc4003','psb t6','jm lab','ps audio premier','kimber pbj','hd radio','bi wire cable','nht classic 3','c260','diamondback','psb gt1','t65','mini cable','b25','2250','cartridge alignment','nad c375bee','sub woofer','music hall dac','4tc','silver hdmi','power amplifier','synchrony one','am antenna','dust cover','velodyne impact-12','noise harvester','martin logan encore','klipsch image x5','sub3','audioquest diamondback','phono cable','sonex acoustic panels','650r','t755','ambient','bdi','martinlogan source','video cables','y cable','wall receptacle','image t65','static','t55','pangea ac-14 power cable','c315bee','twin 20','cardas cables','bellari','hum','blue ray players','image b6','740a','nad t587','rocket 88','4600','kimber power','mega spikes','audioquest snake','audio power','cardas 8x crosslink','bda-1','surround speakers','bubble level','i pod','bdp-83se','component fan','premier','iec','vibration','audioquest type 8','silver streak','av5000','b5','rc-70','parasound phono','cv4','parasound amp','berlin','energy rc50','audioquest cables','tonik','jc-2','zhd','ps audio gcph','is301','optilink','psharv','logan','inwall speakers','image','digital link iii','white speakers','stereo preamplifiers','classic 3','martin logan helos 20','jc','real wood media storage','hide cable','archetype 5.0','caigs gold','vw1 wall mount turntable shelf','cambridge audio 640p','grgr8','rega fono mm','grps1000','anti-static','synergy triple 30','cmb','impactmini','dac1','cambridge 650bd','rack of silence','wall mount','nad 315bee','martin logan source','hdcd','switcher','electronic crossover','audioquest hdmi cables','sa8003','bulk','benchmark dac','mfm6i','remote control','processor','room','headshell leads','salamander 20','cd recorder','mdst2','540r','nad cd','phono preamp usb','sonex','audioquest sidewinder','fono','sub-3','dvd audio','macd5003','psb sub series','ls 300','imagine','hrt music streamer+','b6','cardas usb','bd7004','ar30','epos speakers','ac outlet','impact','rs 170','pspp','monoblock','cd5003','nht zero','twinlink','analysis plus solo crystal oval','concept','nad phono','ear buds','nad t-755','itube','aqt4nf','a1008','sennheiser replacement cable','image b15','kwik 12','cambridge 340t','binding post wrench','ps1000','steelhead','cadacmagi','cardas hs data cable','sr6004','azur 340r','ca640r','center channel speaker stand','v','pp375 phono module','audioquest jumpers','1 8','salamander riser','opti','nht crossover','digital analog','digital video essentials','nr1501','kwik16','kwik12','flx-x rca splitter','postmaster 33','hrtmsii','usb sound','usb phono stage','hrtmsiipl','bi-polar','boston','vcan','component','lp cleaning','oppo bdp-83se','t5','b100','nam55','cambridge 340a','pangea hdmi','audioquest king cobra','kanto','kimber 4tc','power port','hdmi-x','perfectwave','m6','v-lps','phonomena','speaker mounts','tributaries','ps audio prelude power cable','ps audio jewel','coffee table','blue ray','s50','musical fidelity v-can','kkusbb','hampton','audioquest y','340c','sanf204','kimber cable','afv48b','encore tf','nad l54','receptacle','music hall ph25.2','sa 31','zbreeze','martinlogan dynamo','cambridge one','saucers','mlencore','repeater','cambridge compact','vdr','550c','akg k701','center channel shelf','ebtech','nat557','changer','275','parasound z','psb t5','infrared','cambridge audio 650r','st 7001','dynavector','record doctor iii','545bee','remote','aqbrii','sr80','mit z','grado extension','cobra','audioquest chocolate','usb audio','silver solder','kimber kable pk-10','nad c275bee','evo','sr 80','cardas blocks','nht ic3','audioquest sub-1','nat557p','transparent','bsiso','oppo bdp 83','zamp v3','v2.2','450','visp331','kimber kable 12tc','roku','hdmi-1','audio amplifier','equalizer','xlr caps','rega fono','salamander twin 20','musical fidelity v-dac','thiel scs4','bnc','nad t 747','monitor audio','grado black','tgvw1pro','test record','rega ear','golden reference','nad universal','ps audio power punch','vacuum','bags','digital analog converter','kcag','d-60','hubrush','pin connectors','saturn','parasound halo p7','aqslanf','spdif cable','protractor','obh 11','kimber cable usb','5.1 receivers','cd power cable','540r v3','s-video','ps audio link','iphone dock','speaker banana plug','salamander amp','nad m56','synergy single','ipod ear phones','psb demo','martin dynamo','nad 577','kimber kable tonik','st','audio control','audioquest s-video','benchmark dac1 pre','hd600','wireless','aqki','dvi to hdmi','audioengine a5','ps audio digital link iii','pre amp','vpi scout','switch','in ceiling','leopard','panels','thx','cardas rca caps','audioquest speaker','black mamba ii','moving coil cartridges','smsac','blu tack','music streamer+','martinlogan encore','grado earpads','cc4003','rega belt','cambridge audio dac','audioquest yiq','mit','digital oval','p mount','dip','helos 10','klipsch image s4','passive','brass','absolute zero','parasound a23','c375bee','trio','outdoor','audioquest subwoofer','milty','igi','nad usb','audioengine 5','cambridge 340t am fm tuner','musical fidelity dac','energy in wall','tube ipod dock','isolation platforms','640r','pangea ac14','8248','headphone adapter','grado 80i','nad ipd-2 ipod dock','grado gr8','y adaptor','kimber illuminations','aiulki','a v switcher','alpha lr1','digital amp','athena as','cable connectors','furniture mate','8003','aes ebu','audioquest g snake','rocket 33','bluray','226','2125','cardas headphone cable','326bee','digital converter','psb image t5','salamander triple','timbre','cardas ipod','kimber kable silver','salamander 30','sky','outdoor speakers','clearaudio performance','a52','wbt','speaker cable connector','salamander hampton','cleaning','cambridge sonata','mlvis','t955','energy stand','rep2','nht two','noise stopper caps','99','audioquest type','nat737','turntable stand','grext','nad c 545bee','pssolo','kimber toslink','mm8003','smsdir','atmac','micro system','sr5004','bryston speaker switch box','vbcone4','vodka','700','seie8','roku hd','cambridge audio 340c','nad t765','speaker bracket','sanus speaker stands','type 2','sr100','t737','energy rc-10','2.2','kimber headphone','dustcover','soloist','nad c515bee','pre amplifier','floor','hdmi-a','cas30','rubber feet','thiel cs3.7','557','torus','cv-4','opt1','ayre','psb center','interconnect rca','salamander twin','mdsr100','surge protector','rc-lcr','parasound speakers','splitter','oppo 83se','hdmi-g','saefvsiii','parasound halo a23','blue racer ii','nad m25','a25.2','sennheiser rs 180','hunt','cv 8','audioquest nrg-1','dvd-89','isolation components','iw6','martin logan center channel','salamander geneva','salamander wheels','nht ceiling','cambridge phono stage','psb center channel','rca adapter','evidence mkii','sennheiser hd800','stage','ca550c','ca640p','component video cable','nac315bee','alpha c1','chameleon','klipsch s4','dvi-d','analysis','littlelite','ipod docks speakers','surge protection','twin','cambridge integrated amplifier','audioquest power','ir','sennheiser headphones','nad c315bee','parasound 5250','kimber xlr','bookshelf','bulk speaker cable','halo a23','cardas power cord','ginko','flx 14 4','floorstanding speakers','sanus euro rack','nad c565bee','gibraltar','creek evolution','biwire','nad c','sonic saucers','sanus stands','hdmi 1','grado replacement earpad','illuminations','175','nad t557','nad c352','enkv22','cardas headphone','tascs4','bda1','wolfson','kkhd19','bryston speaker','marantz sa8003','1psprepc','tonearm wire','pspwdac','z duplex','pbst-gt1','mnmsj','rega glass platter','nitty gritty record doctor','sppoints','aqpre-jum','nac545bee','aqhdmicin','audioquest hdmi x cable','aqrcarca','akk701','elixir','bedac1pre','integrated tube amp','c60','ac9','dvi','marantz nr-1501','audioquest tonearm','cambridge ipod dock','helos 20','hd650','nad viso five','pac2125','m55','wrench','stylus tracking force gauge','nad 737','furniture','zpre','musical fidelity vdac','mini optical','c355bee','monocle','vbpod','ac power cable','nad integrated amplifier','nad c165bee','kimber silver','isonode','stereo amp','martin logan sub','bnc digital cable','turntable mat','azur 640r','marantz 8003','marantz sr5004','7 channel','psb c5','pre-amp','speaker post wrench','smksl30','nad 275bee','goldring headphones','kwik-16','sanus av rack','kwik-12','nad-m3','benchmark dac1 usb','m2','link','audioquest sub','nad m15 hd','roku hd digital video player','pm5003','8x','av processor','nad 515bee','marantz nr1501','satellite tuner','nht x2','ps audio duet','ca340a','p2','br2','component video','black thunder','sennheiser 800','marantz sacd players','psb image c40','3.5mm','mm-600','nad t 765','surround','vac sweep','psb g','crclic','pajc1','sennheiser hd','dbpro','t975','cartridge mount','archetype 3.0','crhp','dynamo 500','ca840c','felt mat','juice bar ii','vincent sp-331','compact system','musical fidelity v-lps','kimber kable kwik-16','cambridge 640p','20 amp','type 8','pghd24l','5 channel amplifier','marantz sa 8003','cardas female rca to male xlr adapter','rockefeller','grado sr60i','840e','sanus ultimate foundations','bubble','kimber kable pk10','banana connectors','cambridge s30','dynamo 1000','dvd storage','salamander s40','in wall speaker cable','powered monitor','dv24','nat765','tt-15s1','sr-60','inner record sleeves','audioquest black mamba ii premium audio interconnect','bryston bda1','salamander 5.0','sv-236','sa-t8','mini-plug','se280pro','record cleaning kit','quad','furman pst 8d','plate amp','lp shelves','analysis plus interconnect','salamander media drawer','kwik','turntable wall mount','vesms1','id50','cm-1c','cambridge integrated','ztuner','audioquest usb','cardas digital','music hall 25.2','vacuum tubes','psb image b25','221','audioquest bfa','av3000','nrg5','sports','satellite','kimber kable hero','sm329','corner','nad blu ray','parasound new classic','hrtmsplus','kimber kable hdmi','audio cd','audioquest niagara','cardas video','cs3.7','audioquest t4','grscush','headphone adaptor','golden presence','marantz 1501','oppo bdp83','cambridge audio one','kkd60','power plant','martin logan vantage','parasound c260','perfectwave dac','inwall','psb imagine t','cambridge 650r','atls300','gc1','cambridge phono','parasound p3','psb tower','vpi hw','parasound jc2','nad ipod','kwik 16','90 degree','ps audio soloist','grado ps1000','audioquest rockefeller','sanus efav mkii','noise canceling','duplex','st7001','kimber kable 8tc','ac14','nad psb','marantz sr 5004','nad t737','cloud','ps premier','pm-5003','sr 5004','contact enhancer','sennheiser hd 600','mini3','hdmi1','aurum','maav8003','vincent pho-8','rega wall mount','opbdp83se','cardas golden','vpi scout cover','creek headphone','matinee','nht classic four','signal sleuth','5.1','one+','kimber kable silver streak','cambridge audio dacmagic','ps audio av3000','av 5000','skipjack','energy rc70','vincent integrated','crgrbd','pangea hd-24pc','demo speakers','nad m15hd','stylast','pk 10','cambridge audio azur 340a','rca switcher','noise stopper','v60','parasound amplifier','sbs','m15','gingko cloud','c7 power cable','da','synergy shelf','m56','sauf 26blk','music hall cd-25.2','c 565bee','nad t747','nat747','cd shelf','nht speakers','phono pre','salamander archetype','psb 6i','550a','psb t65','g cush','nad pp2','real wood','cambridge dvd','c275bee','cardas power','audioquest component','ie8','cardas quadlink','psb gt-1 towers','indoor fm antennas','grado accessories','ca650bd','martin-logan','t535','tracking force','fiber optic','kimber pk10','ground loop hum','pbimt45','sanus add a shelf','musical fidelity phono','br-2','test lp','klipsch s4i','hb1','record care','oval 9','madrid','veritas v2.3','5250','psb synchrony two','ps audio soloist se','smksu30','smsvdo','nat587','smamp','docking station','audioquest rca caps','kimber cable hero','audioquest black thunder','lp clamp','audioquest flexable y 1 male rca to 2 female rca\'s','nrg-1','parasound 2250 250-watt two channel amplifier','cardas adapter','tube pre-amp','cambridge 340a integrated amplifier','f-type','grado sr80','smsalb','furman pst','stereo preamp','powered sub','cambridge 740a','azur 840c','cw260','dac 25.2','center channel stand','nad l 54','vincent v-60','bi wire speaker cable','obh','bcd-1','audioquest mini','klipsch image x10','manley stingray','grado sr125i','cardas xlr adapter','c326bee','dvda','audioquest y splitter','cartridge headshell','obh21','650t','spike feet','nht3','mini-3','ps audio noise','swt-1','955','ac power','blue ray disc players','355bee','benchmark dac1','center stand','cardas phono','hero hb','athena micra 6','mc cartridge','power plug','moving coil','grado ps-1000','record weight','c7 power','auric illuminator','shure m97xe','marantz pm8003','s4','audioengine a2','nad l','7001','audioquest rocket 88','target shelf','sa31','salamander saturn','sp-331mk','sr-5004','cdkk','mmf 5','azur 740a','aqmini','acoustical rooms','music streamer ii','t765','no frills','preamp jumpers','cleaning brush','rc-r','cambridge 540p','cr6xclsp','speaker jumpers','psb alpha c1','3 channel','pangea 14','sr 225i','power filters','balanced audio cables','mini rca cable','mm-1200','db systems','marantz cd 8003','magnum dynalab sr-100','audioquest mini-1','turntable cable','salamander synergy twin','ac-10','audio pro supreme','cambridge audio 840c','audioquest sub-a','music hall dac 25.2','psb b6','motor','sonoma','pre-amplifiers','blueray','thiel powerpoint 1.2','saafv48','cardas clear','analog tuners','audioquest splitter','sonata ar30','kimber mini','adhesive','cambridge azur 340r','cambridge 340c cd','audioquest hdmi 1','t747','svdo','multi channel amplifier','benz micro','tube integrated amplifiers','right angle hdmi','psb image b6','mmf 2.2','silver','azur 640p','pm33','cambridge audio azur 840c','compact stereo amplifier','aqf2f','descent','tacs24se','twin 40','cambridge dvd-99','alpha t1','cambridge 840w','cross','aqflx14 4 125','iphone speakers','1394','audioquest vdm','anhdmi','system','psb c1','headphone dac','nakps','cambridge 340c','pangea audio ac-14','clearaudio ambient','musical fidelity v-lps mm mc phono stage','audioquest gibraltar','cambridge s20','nad av receivers','palladian','parasound fan','tv mounting bracket','cambridge integrated amps','salamander sonoma 221','cd playe','psb subseries 5i','psb t tower','565bee','sms','creek amplifier','nad t-765','silver audio','thiel cs1.6','classic four','16.5','power port premier','martin logan purity','ca540rv3','aqdi','cr300b','cambridge ar30','aqniag','bryston b100','3 outlet','salamander svdo','cambridge amp','psb image s5','225i','bda 1','media drawer','audioquest g-snake','parasound classic','cambridge audio sonata ar 30','ph25.2','audioquest cv4','pspwac5','monitor speakers','cs2.4se','psb b-25','bdp-83','sp331','scrcs','2.1','shandling','toslink optical','sanus efas','nht verve v woofer','cardas 8x crosslink speaker cable','aqnrg5nf','bryston bp26','cardas sennheiser cable','matrix','rc50','cambridge 550a','ac 9','t-737','3.5','ca340r','2.2le','thiel cs2.4','ar-30','shanling mc','sanus efab mkii amp floor stand','cardas lightning','7.1','class a amplifiers','t-747','md 209','iw3','crfrcmxl','nad 545bee','audioquest black mamba ii','sr325','c4','nad c565bee cd player','nad t 785 hd','cardas 300b','nad pp 3','musical fidelity 550k','9b','clear oval','madrid 7022','performance','blu ray sacd','nad pp 2','center speaker mount','nad c355bee','psb alpha clr1','sp 331','clprebub','michael fremer','psb image b15','cambridge sonata ar 30','nad c-326bee','ac-12','network player','star quad','salamander archetype 5.0','nad dvd','72v dbs','analog','rb300','salamander triple 30','tube integrated','pangea ac9','bryston 2b','musical fidelity v','cd shelve','stillpoints ess','550t','nad c 725bee','martin logan stage','bryston power amp','classic twelve','a-25.2 music hall','psb loudspeaker','cambridge 840c cd player','paha23','nad t 737','nr 1501','sirocco','power connectors','speaker package','mfvlps','synergy media drawer','velodyne sms 1','nad t 577','vta','record cleaner machines','headphone dac amplifier','synergy wheel','nht classic 2','sirius tuner','6 channel','audioquest yiq-1','subwoofer amplifier','sintron cable tester','platform','phono preamp with usb','shanling mc3000','cdplayer','sanus frame','sanus ultimate foundations speaker stands','noise filter','audioquest yiq-x','cambridge 650t','cardas double banana','halo a 23','cardas component','c725bee','audio-technica','veritas 2.1','p3-24','synergy twin','visa31mk','super sub','martin logan sub woofer','visio','sanus sf26','turntable isolation','mc-30','hrt+','kimber 8','cs2.4','synergy 30','psb c-40','side panel','pangea audio hd-24l','audioquest nrg 1.5','sl pm b','cambridge audio 540p','mcs1','cltracrec','audiophile','nitty gritty replacement','psb image c60','benz ace','ps power port','musical fidelity\'s a1008','strobe','image c4','model 2125','pangea audio ac-9 power cable','cambridge audio s 30','martinlogan encore tf','audioquest dvi','coupler','music hall cd player','streamer+','nad t 587 blu-ray player','bookshelf stand','nad-pp-3','monoblock amp','salamander cherry','cv-8','mini-5','psb image towers','corner tv','type-4','cmv-44','sennheiser wireless','cv8','mmf 2.1','ca840e','aqrca90','nad c 275','nad t 587','analysis plus hdmi','subseries','nht s-20','psb g design','cambridge audio dvd89','smsnc20','a-23','pxc 450','magnum dynalab tuner','nad pp-2 phono stage','rega rb300','bellari vp-130','sr 125i','musical fidelity a1008','pangea audio ac-9','sennheiser 595 hd','target wall','passage','hra2','music hall mmf-2.1','cardas se15','audioquest hdmi g','mini 5','580','pangea ac 14','ss2','power wall','cd sacd','smartsub','aqhdmix','parasound wall speaker','powerpoint','side','ac power conditioners','salamander 3.0','cf-bfa','rega p2 upgrade','pangea hdmi cable','parasound c-260','dac25.2','cambridge azur 340c','audioquest 14 4','p200','audioquest power cord','energy veritas v2.3wm','salamander synergy rack','compact amplifier','cambridge audio 550a','psb synchrony two b','sban','audio preamp','mmf 5.1','nrg1.5','sennheiser rs180','music hall dac25.2','sanus coffee','music hall mmf-2.2 turntable','marantz sr7002','magazine','mmf-2.2','cherry','t1','creek classic','saefabii','v.3','bookends','clever clamp','parasound p 7','corner cabinet','marantz integrated amplifiers','test dvd','pure 2','sma5 blk','athena wall speakers','am-fm tuners','bell\'o','snake','type','cd25.2','cambridge audio am fm tuner','creek cd','silver cable','marantz sr 7002','sanus euro audio rack','audioquest nrg-1.5','subseries 8','anhdmirb','target turntable shelf','powercord','sr','nad c-565bee','1000','music hall dac25.2 digital-to-analog converter','cambridge audio dac magic','nad c 565bee','nylon brush','iw2','nfav230','bryston 7b sst2','stereo switch','marantz ipod dock','subseries 1','p 7','sanus nfav230','subseries 1 subwoofer','ss20 p','audio hall','cambridge audio receiver','psb imagine system','nad t577','c 355bee','nhtic3','mmf5.1','pbimb6','athena audition','pm 8003','salamander plasma','cardas quadlink 5c','cdayibe','instrument cables','rca y cable','classic 2125','t 800','salamander video','solo crystal','nht ic4','5','magnum-dynalab st-2','classic 12','nad-pp3','composite video','marina','powe cables','salamander archetype 3.0','smkstv302','supreme','clearaudio nano','smtv65','7.1 receiver','sanus wall mount','tributaries t1 surge','synergy extension','audioquest mamba','sas1','sennheiser cord','i-pod speakers','rca cleaner','cardas rca xlr','0144','halo jc2','nad pp2 phono preamp','audioquest hdmi-a','tt50','vincent sa t8','accurate','rega bias 2','smslpm','t-45','pm-8003','audioquest type 4 speaker','psb alpha 1','bd-7004','synergy base','music hall 2.2','aqro88','acrylic platter','turntable clamp','t 175','cambridge audio azur 640c v2','powered loudspeakers','diamondback xlr','irrational but efficacious','6 rca cable','hw16.5','vincent amplifier','azur 550a','azur 550t','super cleaner','arm lift','psb sub 5i','archetype tv','take fps','i pod speakers','perfectwave ac-5','synergy tv','parasound sbs','plasma stand','am fm receiver','2.0','sv226','sr-80i','in wall subwoofer','psb image series','nht iws','as-f1','pm 25','athena f1','cambridge 30','benz ebony','ckm mse','iec plug','md309','tributaries silver','stroboscope','mm phono board','cardas se','ps audio premier power conditioner','rs2i','benz cartridge','nad m-3','a 9','ps audio xstream','am fm and cd player','ps audio cable','ic cable','digital switcher','toslink digital','tube pre amp','series 9','rega cartridge','cambridge id-50','series 5','c.50','vincent audio cd','nad stereo','break in','diamonback','nad c-315bee','612','cambridge audio dvd99','bryston integrated','parasound rmk','sub supreme','cardas hd600','summit','audioquest t2','c-326bee','iec 90 degree','sanus pillars','md209','record fluid','mdmd102','veritas center','psb center speaker','audioquest firewire','salamander feet','salamander claw feet','in-wall speaker cable','ps 1000','b-100','st 2','masr6004','synergy lock','mini-toslink','power oval','c 1','ac conditioners','cambridge dvd players','cl-3','nht two center','mg head','bdi vista','aesthetix','stand fill','0.5m','crli','anti-static gun','cambridge remote','salamander tv stands','creek remote','small speakers','sanfav230','sanfcft','bp-16','sr-125i','3 shelf flat panel tv stand','smdrawer','8sspsp','ps power punch','nht model 3','tube fatman','bryston 3b-sst2','passive subwoofer','marantz 7001','pbkim1su','mmf-2.1','planar 3','afab','nad power amp','nht pro','music hall cd25.2','se9','psb stratus','cd s1.1','s-30','compact amps','azur phono','coupling discs','stepup','salamander 40','salamander amp stand','salamander tv40','class a amp','c-425','archetype drawer','audioquest black','a-52','bright star feet','parasound open box','cardas golden presence','turntable wall','aqrca2bnc','amp cables','synergy feet','ps power conditioner','env2.0ri','nad pp-3 digital phono preamplifier','env2.0ri pblk','synchro','clean screen','cambridge audio azur 840a','sub-woofers','ps audio sc','cd mp3','sa-93','pahra3','parasound halo a52','sms1','sanus coffee table','sy fm1','parasound a-51','ca640t','bcd 1','salamander archetype 5.0 five-shelf audio rack','salamander package','energy 12.3','sanus foundations','analysis plus silver oval','psb alpha speakers','sennheiser pxc 450','speaker post','st-2 fm antenna','p mount phono cartridge','pxc300','coupling','connect ipod','ps audio ac-5','taout2.4','nad-pp-2','marantz is301','synchro mate','parasound pre','md 90','nat535','slim tower','ac filter','martinlogan summit','music hall mmf-5.1','marantz av','pbimg','s pdif cable','aqyiq-x','aqbri-3','audioquest ipod','chameleon berlin','ci-9060','smmadrid','nht2','carbon 2','audioquest outlet','archetype 5.0 five-shelf audio rack','acs100','craesebu','audio magic','components cabinet','smksn20','marantz blue ray','crnric','salamander plasma mount','nac425','tacs3.7','t 515','parasound silver','cambridge 340r 5.1 hdmi av receiver','trdevc','azur 340r 5.1 hdmi av receiver','paintable in-wall','c515','sa-cd player');
/* $Revision: 3828 $
 *
 */

if(typeof(_sli_init )!='object'){var _sli_init=new Array();}
if(typeof(sli_init )!='function'){function sli_init(){ for(var x=0;x<_sli_init.length;x++) _sli_init[x]();}}
if(typeof(asPhrases)!='object'){ var asPhrases = new Array(); }
if(typeof(__SLI_customisations)!='object'){var __SLI_customisations = new Object();}
if(typeof(__SLI_ClientDefaults)!='object'){ var __SLI_ClientDefaults=[]; }
if(typeof(__SLI_validSearchBoxes)!='object'){ var __SLI_validSearchBoxes = new Array(); }
if(typeof(__SLI_asug_used_flag)!='object'){ var __SLI_asug_used_flag = false; }
if(typeof(__SLI_width)!='object'){ var __SLI_width = 0; }
if(typeof(sli_targeturl)!='object'){ var sli_targeturl = ""; }


    __AutoComplete = new Object(); //namespace...
    __AutoComplete_mouseMoved=false;

    // Basic UA detection
    isIE = document.all ? true : false;
    isGecko = navigator.userAgent.toLowerCase().indexOf('gecko') != -1;
    isOpera = navigator.userAgent.toLowerCase().indexOf('opera') != -1;

    /* defaults and options */

    var __SLI_ApplicationName = 'AutoSuggest';
        __SLI_customisations[ 'AutoSuggest' ] =
                {
                    'ShowBrandingFooter' : true
                    ,
                    'TextBoxIDPrefix' : 'sli_search_'
                    ,
                    'BrandingFooterImagePath' : 'http://assets.resultspage.com/autosuggest/sli_systems-powered_150_15.gif'
                    ,
                    'BrandingFooterTitleTooltip' : 'AutoSuggest Powered by SLI Systems'
                    ,
                    'DropListMinWidth' : 150
                    ,
                    'MaxListItems' : 10
                    ,
                    'Alignment' : true
                    ,
                    'TextBoxIDCustom' : []
                    ,
                    'ValidSearchBoxes' : false 
                    ,
                    'IE6SelectBox' : false 
                    ,
                    'IE6SelectBoxPadding' : 0
                    ,
                    'TargetURL' : ''
                    ,
                    'IframeAlignment' : false
                    ,
                    'AlignmentBorderBug' : false
                    ,
                    'IE6OnFocus' : false
                };
    /* 0 = keyname, 1 = value */
    for( defaultValuePair in __SLI_ClientDefaults )
    {
        __SLI_customisations[__SLI_ApplicationName][__SLI_ClientDefaults[defaultValuePair][0]]=__SLI_ClientDefaults[defaultValuePair][1];
    }

    /* pre-fetch branding footer image if being used...
     */
    if( __SLI_customisations[ __SLI_ApplicationName ][ 'ShowBrandingFooter' ] )
    {
        
        if(location.protocol == "https:")
        {
            __SLI_customisations[ __SLI_ApplicationName ][ 'BrandingFooterImagePath' ] = __SLI_customisations[ __SLI_ApplicationName ][ 'BrandingFooterImagePath' ].replace(/http:/i, 'https:');
        }
    
        var __AutoCompleteBranding = new Image();
        __AutoCompleteBranding.src=__SLI_customisations[ __SLI_ApplicationName ][ 'BrandingFooterImagePath' ];
    }


    function AutoComplete_init()
    {
        if(!isOpera)
        {
            var oldonresize=function(){};
            if(typeof(window.onresize)=='function')
                oldonresize = window.onresize;//play nicely with other people's toys
            window.onresize= function(){ oldonresize(); AutoComplete_HideAll(); AutoComplete_Create( asPhrases ); }

            AutoComplete_Create( asPhrases );
            
            var els = document.getElementsByTagName('input');
            if(els)
            {
               for ( i = 0; i < els.length; i++ )
               {
                  if(els[i].name == "asug")
                  {
                     els[i].disabled = true;
                  }
               }
            }
        }
    }




    /**
    * Attachs the autocomplete object to a form element. Sets
    * onkeypress event on the form element.
    *
    * @param string formElement Name of form element to attach to
    * @param array  data        Array of strings of which to use as the autocomplete data
    */
    //function AutoComplete_Create (id, data)
    /*
     * iterate over 'sli_search_*' assumes one or more search boxes numbered from 1...
    */
    function AutoComplete_Create( data )
    {
        var idx=1, e, id, searchBoxPrefix=__SLI_customisations[ __SLI_ApplicationName ][ 'TextBoxIDPrefix' ];
        while( e = document.getElementById(searchBoxPrefix+idx) )
        {
            AutoComplete_AttachHandlers(e, data);
            if( __SLI_customisations[ __SLI_ApplicationName ][ 'ValidSearchBoxes' ] )
            {
                __SLI_validSearchBoxes.push(searchBoxPrefix+idx);
            }
            idx++;
        }
        
        
        //this array comes from the customised list
        var otherTextBoxIdList = __SLI_customisations[ __SLI_ApplicationName ][ 'TextBoxIDCustom' ];
        if( otherTextBoxIdList)
        {
            for(idx=0;idx<otherTextBoxIdList.length;idx++)
            {
                e = document.getElementById(otherTextBoxIdList[idx]);
                if(e)
				{
					if( __SLI_customisations[ __SLI_ApplicationName ][ 'ValidSearchBoxes' ] )
                	{
	                    __SLI_validSearchBoxes.push( otherTextBoxIdList[idx] );
                	}
					AutoComplete_AttachHandlers(e, data);
				}
            }
        }
        
    } 

    function AutoComplete_AttachHandlers(e, data){
        var iframe,id;
        id=e.id;


        __AutoComplete[id] = {'data':data,
                              'isVisible':false,
                              'element':document.getElementById(id),
                              'dropdown':null,
                              'highlighted':null};

        __AutoComplete[id]['element'].setAttribute('autocomplete', 'off');
        __AutoComplete[id]['element'].onkeydown = function(e) {if (!e) e = window.event; return AutoComplete_KeyDown(this.getAttribute('id'), e);}
        __AutoComplete[id]['element'].onkeyup = function(e) {if (!e) e = window.event; return AutoComplete_KeyUp(this.getAttribute('id'), e);}
        // The function call on the next line was changed by Andrew Grieve April 2008
        __AutoComplete[id]['element'].onkeypress = function(e) {if (!e) e = window.event; return AutoComplete_KeyPress(this.getAttribute('id'), e);}
        __AutoComplete[id]['element'].onclick = function(e)
        {
            if( __SLI_customisations[ __SLI_ApplicationName ][ 'IE6OnFocus' ] )
            {
                __AutoComplete[id]['element'].focus();
            }
            if (!e) e = window.event; e.cancelBubble = true; e.returnValue = false;
        }



        // Hides the dropdowns when document clicked
        var docClick = function()
        {
            if( __SLI_customisations[ __SLI_ApplicationName ][ 'ValidSearchBoxes' ] )
            {
               for(var i=0; i < __SLI_validSearchBoxes.length; i++)
               {
                   if(document.getElementById(__SLI_validSearchBoxes[i]))
                   {
                       AutoComplete_HideDropdown(__SLI_validSearchBoxes[i]);
                   }
               }
            }
            else
            {
                for (id in __AutoComplete)
                {
                   AutoComplete_HideDropdown(id);
                }
            }
        }

        if (document.addEventListener) {
            document.addEventListener('click', docClick, false);
        } else if (document.attachEvent) {
            document.attachEvent('onclick', docClick, false);
        }


        // Max number of items shown at once
        if (arguments[2] != null) {
            __AutoComplete[id]['maxitems'] = arguments[2];
            __AutoComplete[id]['firstItemShowing'] = 0;
            __AutoComplete[id]['lastItemShowing'] = arguments[2] - 1;
        }

        AutoComplete_CreateDropdown(id);

        // Prevent select dropdowns showing thru
        if (isIE) {
            iframe = document.createElement('iframe');
            __AutoComplete[id]['iframe'] = iframe;
                iframe.id = id +'_iframe';
                iframe.style.position = 'absolute';
                iframe.style.top = '0';
                iframe.style.left = '0';
                iframe.style.width = '0px';
                iframe.style.height = '0px';
                iframe.style.zIndex = '98';
                iframe.style.visibility = 'hidden';
                
                if(location.protocol == "https:")
                {
                   iframe.src = 'https://assets.resultspage.com/autosuggest/blank.html';
                }
                
                if( __SLI_customisations[ __SLI_ApplicationName ][ 'IE6SelectBox' ] )
                {
                  iframe.style.width = __SLI_width  + __SLI_customisations[ __SLI_ApplicationName ][ 'IE6SelectBoxPadding'];
                }

            if( __SLI_customisations[ __SLI_ApplicationName ][ 'IframeAlignment' ] )
            {
                document.body.insertBefore( iframe );
            }
            else
            {
                __AutoComplete[id]['element'].parentNode.insertBefore( iframe, __AutoComplete[id]['element'] );
            }
        }
    }

    /**
    * Creates the dropdown layer
    *
    * @param string id The form elements id. Used to identify the correct dropdown.
    */
    function AutoComplete_CreateDropdown(id)
    {
        var theSearchbox = __AutoComplete[id]['element'];
        var theDropDown;
        var left_top = AutoComplete_getPos( theSearchbox );
        var left  = left_top[0];
        var top   = left_top[1] + theSearchbox.offsetHeight;
        var width = theSearchbox.offsetWidth;

        if ( width < __SLI_customisations[ __SLI_ApplicationName ][ 'DropListMinWidth' ] )
        {
            width = __SLI_customisations[ __SLI_ApplicationName ][ 'DropListMinWidth' ];
        }

        theDropDown = document.createElement('div');
        theDropDown.className = 'autocomplete'; // Don't use setAttribute()


        if(__SLI_customisations[ __SLI_ApplicationName ][ 'Alignment' ] == true && document.body)
        {
            theDropDown.style.position = 'absolute';
            document.body.insertBefore(theDropDown, document.body.nextSibling);
            
            // Position it
            theDropDown.style.visibility = 'hidden';
            theDropDown.style.left       = left + 'px';
            theDropDown.style.top        = top + 'px';
            theDropDown.style.width      = width + 'px';
            theDropDown.style.zIndex     = '99999';
        }
        else if(__SLI_customisations[ __SLI_ApplicationName ][ 'Alignment' ] == "offsetrelative" && document.body)
        {
          theSearchbox.parentNode.insertBefore(theDropDown, theSearchbox);
          // Position it
          if(sli_getStyle(theSearchbox.offsetParent, 'position') != "absolute")
          {
            theSearchbox.offsetParent.style.position = 'relative';
          }
          theDropDown.style.position = 'absolute';
          theDropDown.style.left = (theSearchbox.offsetLeft) + 'px';
          theDropDown.style.top = (theSearchbox.offsetTop + theSearchbox.offsetHeight) + 'px';
          theDropDown.style.width = (theSearchbox.clientWidth) + 'px';
          theDropDown.style.visibility = 'hidden';
          theDropDown.style.zIndex     = '99999999';
        }
        else
        {
            theSearchbox.parentNode.insertBefore(theDropDown, theSearchbox);
            // Position it
            theDropDown.style.visibility = 'hidden';
            theDropDown.style.left       = left + 'px';
            theDropDown.style.top        = top + 'px';
            theDropDown.style.width      = width + 'px';
            theDropDown.style.zIndex     = '99999';
        }
        

        __AutoComplete[id]['dropdown'] = theDropDown;
        __SLI_width = width;
    }

    function /* array [ left, top ] */ AutoComplete_getPos( obj )
    {
        var curleft = curtop = 0;
        var sli_flag = 0;

        if (obj.offsetParent)
        {
           do
           {
              if ( __SLI_customisations[ __SLI_ApplicationName ][ 'AlignmentBorderBug' ] )
              {         
                
                if(sli_flag == 1)
                {
                    var clientTop = (obj.offsetHeight - obj.clientHeight) / 2;
                    curtop += clientTop;

                    var clientLeft = (obj.offsetWidth - obj.clientWidth) / 2;
                    curleft += clientLeft;
                }
                sli_flag = 1;
              }
           
              curleft += obj.offsetLeft;
              curtop += obj.offsetTop;
           }
           while (obj = obj.offsetParent);
        }
        return [curleft,curtop];
    }

    /**
    * Shows the dropdown layer
    *
    * @param string id The form elements id. Used to identify the correct dropdown.
    */
    function AutoComplete_ShowDropdown(id)
    {

        AutoComplete_HideAll();



        var value = __AutoComplete[id]['element'].value;
        var toDisplay = new Array();
        var newDiv    = null;
        var text      = null;
        var numItems  = __AutoComplete[id]['dropdown'].childNodes.length;

        __AutoComplete_mouseMoved=false;
        // SLI Code Modification - Start - Andrew Grieve April 08
        // Trim the textbox so that if is starts with a space then the feature will still work
        //value = value.replace(/^\s+|\s+$/g,"");
        value = value.replace(/^\s+/g,"");

        if(value.length == "")
        {
            // If Textbox length is nothing (after the trim) then don't show dropdown.
            return;
        }
        // SLI Code Modification - End

        // Remove all child nodes from dropdown
        while (__AutoComplete[id]['dropdown'].childNodes.length > 0) {
            __AutoComplete[id]['dropdown'].removeChild(__AutoComplete[id]['dropdown'].childNodes[0]);
        }


        var count=0;
        // Go thru data searching for matches
        for (i=0; i<__AutoComplete[id]['data'].length; ++i)
        {
            // SLI Code Modification - Start - Andrew Grieve April 08 - Added lower casing
            if (__AutoComplete[id]['data'][i].substr(0, value.length).toLowerCase() == value.toLowerCase())
            {
                // SLI Code Modification - End
                toDisplay[toDisplay.length] = __AutoComplete[id]['data'][i];
                count++;
                /* how many to display? */
                if(count == __SLI_customisations['AutoSuggest']['MaxListItems'] ) /* Code inserted to keep list to a maximum of 10 values (was 20 or 30) */
                {
                    break;
                }
            }
        }

        // No matches?
        if (toDisplay.length == 0) {
            AutoComplete_HideDropdown(id);
            return;
        }



        // Add data to the dropdown layer
        for (i=0; i<toDisplay.length; ++i) {
            newDiv = document.createElement('div');
            newDiv.className = 'autocomplete_item'; // Don't use setAttribute()
            newDiv.setAttribute('id', 'autocomplete_item_' + i);
            newDiv.setAttribute('index', i);
            newDiv.style.zIndex = '99999';

             // Scrollbars are on display ?
            if (toDisplay.length > __AutoComplete[id]['maxitems'] && navigator.userAgent.indexOf('MSIE') == -1) {
                newDiv.style.width = __AutoComplete[id]['element'].offsetWidth - 22 + 'px';
            }

            newDiv.onmouseover =
        function()
        {
            if( __AutoComplete_mouseMoved )
                AutoComplete_HighlightItem(__AutoComplete[id]['element'].getAttribute('id'), this.getAttribute('index'));
        };

            newDiv.onclick     =    function()
                                    {
                                    	  __SLI_asug_used_flag = true;
                                                                           
                                        AutoComplete_SetValue(__AutoComplete[id]['element'].getAttribute('id'));
                                        AutoComplete_HideDropdown(__AutoComplete[id]['element'].getAttribute('id'));
                                        AutoComplete_submitForm(id);
                                    }



            text   = document.createTextNode(toDisplay[i]);
            newDiv.appendChild(text);
            newDiv.title='Search for ' + toDisplay[i];

            /* ellipsis for IE only */
            if( isIE )
            {
                newDiv.style.textOverflow = 'ellipsis';
                newDiv.style.width = '100%';
                newDiv.style.whiteSpace = 'nowrap';
                newDiv.style.overflow = 'hidden';

            }
            __AutoComplete[id]['dropdown'].appendChild(newDiv);
        }
        /*
         * append DIV containing footer branding...
         */
        if(__SLI_customisations['AutoSuggest']['ShowBrandingFooter'])
        {
            i = toDisplay.length;
            newDiv = document.createElement('div');
            newDiv.className = 'autocomplete_footer'; // Don't use setAttribute()
            newDiv.setAttribute('id', 'autocomplete_item_' + i);
            newDiv.setAttribute('index', i);
            newDiv.style.zIndex = '99999';
            newDiv.innerHTML = '<a href="http://www.sli-systems.com/powered-by.php" title="' +
                                __SLI_customisations[ __SLI_ApplicationName ][ 'BrandingFooterTitleTooltip' ] +
                                '"><img class="autocomplete_footer_branding" src="'+__AutoCompleteBranding.src+'" /></a>';

            __AutoComplete[id]['dropdown'].appendChild(newDiv);
        }


        // Too many items?
        if (toDisplay.length > __AutoComplete[id]['maxitems']) {
            __AutoComplete[id]['dropdown'].style.height = (__AutoComplete[id]['maxitems'] * 15) + 2 + 'px';

        } else {
            __AutoComplete[id]['dropdown'].style.height = '';
        }


        /**
        * Set left/top in case of document movement/scroll/window resize etc
        */
        if(__SLI_customisations[ __SLI_ApplicationName ][ 'Alignment' ] == "true" || __SLI_customisations[ __SLI_ApplicationName ][ 'Alignment' ] == "false")
        {
            var left_top = AutoComplete_getPos( __AutoComplete[id]['element'] );
            __AutoComplete[id]['dropdown'].style.left = left_top[0];
            __AutoComplete[id]['dropdown'].style.top  = left_top[1] + __AutoComplete[id]['element'].offsetHeight;
        }


        // Show the iframe for IE
        if (isIE) {
            
            if(!__SLI_customisations[ __SLI_ApplicationName ][ 'Alignment' ] == true)
            {
               __AutoComplete[id]['iframe'].style.width  = __AutoComplete[id]['dropdown'].offsetWidth;
            }
            
            
            __AutoComplete[id]['iframe'].style.top    = __AutoComplete[id]['dropdown'].style.top;
            __AutoComplete[id]['iframe'].style.left   = __AutoComplete[id]['dropdown'].style.left;
            __AutoComplete[id]['iframe'].style.height = __AutoComplete[id]['dropdown'].offsetHeight;

            __AutoComplete[id]['iframe'].style.visibility = 'visible';
        }

    e =  __AutoComplete[id]['dropdown'];

    e.onmousemove =
        function()
        {
            if(!__AutoComplete_mouseMoved){__AutoComplete_mouseMoved=true;}
            this.onmousemove = null;
        }

        // Show dropdown
        if (!__AutoComplete[id]['isVisible']) {
            __AutoComplete[id]['dropdown'].style.visibility = 'visible';
            __AutoComplete[id]['isVisible'] = true;
        }


        // If now showing less items than before, reset the highlighted value
        if (__AutoComplete[id]['dropdown'].childNodes.length != numItems) {
            __AutoComplete[id]['highlighted'] = null;
        }
    }



    /**
    * Hides the dropdown layer
    *
    * @param string id The form elements id. Used to identify the correct dropdown.
    */
    function AutoComplete_HideDropdown(id)
    {
        if (__AutoComplete[id]['iframe'])
        {
            __AutoComplete[id]['iframe'].style.visibility = 'hidden';
        }
        
        if (__AutoComplete[id]['dropdown'])
        {
            __AutoComplete[id]['dropdown'].style.visibility = 'hidden';
        }

        __AutoComplete[id]['highlighted'] = null;
        __AutoComplete[id]['isVisible']   = false;
    }


    /**
    * Hides all dropdowns
    */
    function AutoComplete_HideAll()
    {
         if( __SLI_customisations[ __SLI_ApplicationName ][ 'ValidSearchBoxes' ] )
         {
               for(var i=0; i < __SLI_validSearchBoxes.length; i++)
               {
                   if(document.getElementById(__SLI_validSearchBoxes[i]))
                   {
                       AutoComplete_HideDropdown(__SLI_validSearchBoxes[i]);
                   }
               }
         }
         else
         {
                for (id in __AutoComplete)
                {
                   AutoComplete_HideDropdown(id);
                }
         }
    }


    /**
    * Highlights a specific item
    *
    * @param string id    The form elements id. Used to identify the correct dropdown.
    * @param int    index The index of the element in the dropdown to highlight
    */
    function AutoComplete_HighlightItem(id, index) // mouseover, index is the list element index, zero-based
    {
        if (__AutoComplete[id]['dropdown'].childNodes[index]) {
            for (var i=0; i<__AutoComplete[id]['dropdown'].childNodes.length; ++i) {
                if (__AutoComplete[id]['dropdown'].childNodes[i].className == 'autocomplete_item_highlighted') {
                    __AutoComplete[id]['dropdown'].childNodes[i].className = 'autocomplete_item';
                }
            }

            __AutoComplete[id]['dropdown'].childNodes[index].className = 'autocomplete_item_highlighted';
            __AutoComplete[id]['highlighted'] = index;

            //also see below...
            //__AutoComplete[id]['element'].value = __AutoComplete[id]['dropdown'].childNodes[index].innerHTML;
            //AutoComplete_SetValue(id);
        }
    }


    /**
    * Highlights the menu item with the given index
    *
    * @param string id    The form elements id. Used to identify the correct dropdown.
    * @param int    index The index of the element in the dropdown to highlight
    */
    function AutoComplete_Highlight(id, index) // keyboard up/down - index is the direction of travel, 1==down,-1=up
    {
        var childNodes = __AutoComplete[id]['dropdown'].childNodes;
        if(childNodes.length)
        {
	        var lastItem = ( ( childNodes[ childNodes.length - 1 ].className != 'autocomplete_footer' ) ? childNodes.length - 1 : childNodes.length - 2 );

            // Out of bounds checking
            //if (index == 1 && __AutoComplete[id]['highlighted'] == __AutoComplete[id]['dropdown'].childNodes.length - 1) {
            if (index == 1 && __AutoComplete[id]['highlighted'] == lastItem ) {
                childNodes[__AutoComplete[id]['highlighted']].className = 'autocomplete_item';
                __AutoComplete[id]['highlighted'] = null;

            } else if (index == -1 && __AutoComplete[id]['highlighted'] == 0) {
                childNodes[0].className = 'autocomplete_item';
                __AutoComplete[id]['highlighted'] = lastItem;
                index = 0;//hack!
            }

            // Nothing highlighted at the moment
            if (__AutoComplete[id]['highlighted'] == null) {

                childNodes[0].className = 'autocomplete_item_highlighted';
                __AutoComplete[id]['highlighted'] = 0;
                newIndex = 0;
                
            } else {

                if (childNodes[__AutoComplete[id]['highlighted']]) {
                
                    childNodes[__AutoComplete[id]['highlighted']].className = 'autocomplete_item';
                }

                var newIndex = parseInt( __AutoComplete[id]['highlighted'] ) + parseInt(index);

                if (childNodes[newIndex]) {

                    childNodes[newIndex].className = 'autocomplete_item_highlighted';

                    __AutoComplete[id]['highlighted'] = newIndex;
                }
            }

            //populate textbox with currently highlighted term...
            //__AutoComplete[id]['element'].value = __AutoComplete[id]['dropdown'].childNodes[newIndex].innerHTML;
            AutoComplete_SetValue(id);
        }
    }


    /**
    * Sets the input to a given value
    *
    * @param string id    The form elements id. Used to identify the correct dropdown.
    */
    function AutoComplete_SetValue(id)
    {
        __AutoComplete[id]['element'].value = __AutoComplete[id]['dropdown'].childNodes[__AutoComplete[id]['highlighted']].innerHTML.replace(/&amp;/, "&");
    }


    /**
    * Checks if the dropdown needs scrolling
    *
    * @param string id    The form elements id. Used to identify the correct dropdown.
    */
    function AutoComplete_ScrollCheck(id)
    {
        // Scroll down, or wrapping around from scroll up
        if (__AutoComplete[id]['highlighted'] > __AutoComplete[id]['lastItemShowing']) {
            __AutoComplete[id]['firstItemShowing'] = __AutoComplete[id]['highlighted'] - (__AutoComplete[id]['maxitems'] - 1);
            __AutoComplete[id]['lastItemShowing']  = __AutoComplete[id]['highlighted'];
        }

        // Scroll up, or wrapping around from scroll down
        if (__AutoComplete[id]['highlighted'] < __AutoComplete[id]['firstItemShowing']) {
            __AutoComplete[id]['firstItemShowing'] = __AutoComplete[id]['highlighted'];
            __AutoComplete[id]['lastItemShowing']  = __AutoComplete[id]['highlighted'] + (__AutoComplete[id]['maxitems'] - 1);
        }

        __AutoComplete[id]['dropdown'].scrollTop = __AutoComplete[id]['firstItemShowing'] * 15;
    }


    /**
    * Function which handles the keypress event
    *
    * @param string id    The form elements id. Used to identify the correct dropdown.
    */
    function AutoComplete_KeyDown(id, e)
    {
        var result = true;

       var event;
       event = e;
       if(!event) event = window.event;

        var keyCode = event.keyCode;

        switch (keyCode) {

            // Return/Enter
            case 13:
                if (__AutoComplete[id]['highlighted'] != null) {
                    AutoComplete_SetValue(id);
                    AutoComplete_HideDropdown(id);
					
                    __SLI_asug_used_flag = true;
					
                    if( e = __AutoComplete[id]['element'].form['asug'] )
                    {
                        
                        e.disabled=false;
                        e.value = __AutoComplete[id]['asug'];
                    }

                }

                result = AutoComplete_submitForm(id);

                break;

            // Escape
            case 27:
                AutoComplete_HideDropdown(id);
                event.returnValue = false;
                event.cancelBubble = true;
                break;

            // Up arrow
            case 38:
                if (!__AutoComplete[id]['isVisible']) {
                    AutoComplete_ShowDropdown(id);
                }

                AutoComplete_Highlight(id, -1);
                AutoComplete_ScrollCheck(id, -1);
                
                if( e = __AutoComplete[id]['element'].form['asug'] )
                {
                   e.disabled=false;
                   e.value = __AutoComplete[id]['asug'];
                }

                                
                result = false;
                break;

            // Tab
            case 9:
                if (__AutoComplete[id]['isVisible']) {
                    AutoComplete_HideDropdown(id);
                }
                return;

            // Down arrow
            case 40:

                if (!__AutoComplete[id]['isVisible']) {
                    AutoComplete_ShowDropdown(id);
                }

                AutoComplete_Highlight(id, 1);
                //AutoComplete_ScrollCheck(id, 1);

                if( e = __AutoComplete[id]['element'].form['asug'] )
                {
                   e.disabled=false;
                   e.value = __AutoComplete[id]['asug'];
                }

                result = false;
                break;
        }
        return result;
    }


    /**
    * Function which handles the keyup event
    *
    * @param string id    The form elements id. Used to identify the correct dropdown.
    */
    function AutoComplete_KeyUp(id, e)
    {
       var event;
       event = e;
       if(!event) event = window.event;

        var keyCode = event.keyCode;

        switch (keyCode) {
            case 13:
                event.returnValue = false;
                event.cancelBubble = true;
                
                break;

            case 27:
                AutoComplete_HideDropdown(id);
                event.returnValue = false;
                event.cancelBubble = true;
                break;

            case 38:
            case 40:
                return false;
                break;

            default:
                AutoComplete_ShowDropdown(id);
                
                __AutoComplete[id]['asug']=__AutoComplete[id]['element'].value;

                if( e = __AutoComplete[id]['element'].form['asug'] )
                {
                   e.disabled=true;
                   e.value = "";
                }  
                
                break;
        }
    }

    /**
    * Function which handles the keypress event
    * This function added April 2008 by Andrew Grieve
    *
    * @param string id    The form elements id. Used to identify the correct dropdown.
    */

    // SLI Code Modification - Start - Andrew Grieve April 08
    function AutoComplete_KeyPress(id, e)
    {
        var event = e;
        if(!event) event = window.event;
        var keyCode = event.keyCode;

        if (keyCode == 13 && isGecko || isOpera)
        {
            return false;
        }
        
        if( __SLI_customisations[ __SLI_ApplicationName ][ 'TargetURL' ] )
        {
            if (keyCode == 13 && isIE)
            {
                return false;
            }
        }
        
    }
    // SLI Code Modification - End

    /**
    * Returns whether the dropdown is visible
    *
    * @param string id    The form elements id. Used to identify the correct dropdown.
    */
    function AutoComplete_isVisible(id)
    {
        return __AutoComplete[id]['dropdown'].style.visibility == 'visible';
    }

    function AutoComplete_submitForm(id)
    {
        var e, f, result=true;
        if( f = __AutoComplete[id]['element'].form )
        {
            if( __AutoComplete[id]['element'].value != '' )
            {
            	if(__SLI_asug_used_flag == true)
            	{
                   if( e = f['asug'])
                   {
                      e.value = __AutoComplete[id]['asug'];
                      e.disabled=false;
                   }
                }
                
                if( __SLI_customisations[ __SLI_ApplicationName ][ 'TargetURL' ] )
                {
                	asugvar = "";
                	if(__SLI_asug_used_flag == true)
                	{
                	  asugvar = '&asug=' + __AutoComplete[id]['asug'];
                  	}
                    
                    sliRegex = /resultsdemo\.com/;
                    if(sliRegExArray = sliRegex.exec(document.domain))
                    {
                    	sliRegex = /^http:\/\/(.*)\//;
                    	sliTargetDomain = sliRegex.exec(__SLI_customisations[__SLI_ApplicationName ][ 'TargetURL' ]);
                    	__SLI_customisations[__SLI_ApplicationName ][ 'TargetURL' ] = __SLI_customisations[__SLI_ApplicationName ][ 'TargetURL' ].replace(sliTargetDomain[1], document.domain);
                    }
                    
                	document.location.href = __SLI_customisations[__SLI_ApplicationName ][ 'TargetURL' ] + __AutoComplete[id]['element'].value + asugvar;
                }
                else
                {
                	f.submit();
                }
                
                AutoComplete_HideAll();
            }
            else
                result = false;
        }
        return result;
    }
    
    // get the style that will be applied by the browser, including stylesheets
    function sli_getStyle(el,styleProp)
    {
      if (el.currentStyle)
        var y = el.currentStyle[styleProp];
      else if (window.getComputedStyle)
        var y = document.defaultView.getComputedStyle(el,null).getPropertyValue(styleProp);
      return y;
    }

    // register with onLoad(er...
    _sli_init.push( AutoComplete_init );
    
    function sli_addEvent(obj, evType, fn) {
    	if (obj.addEventListener) {
    		obj.addEventListener(evType, fn, false);
    		return true;
    	} else if (obj.attachEvent) {
    		var r = obj.attachEvent("on" + evType, fn);
    		return r;
    	} else {
    		return false;
    	}
    }
    
    function sli_load()
    {
    	sli_addEvent(window, 'load', sli_init);
    }