/* Popular phrases - NRSWEB - 17:15:51, Sat Feb 4, 2012 */
__SLI_ClientDefaults =
[
    ['Alignment', true ]
];var asPhrases=new Array ('drysuit','knife','nrs fishing raft frame','dry bags','gloves','water shoes','paco pad','wetsuit','dry top','farmer john wetsuit','dry suit','used rafts','river knife','neoprene socks','deck bag','pogies','contour camera','pfd','neoprene booties','dry pants','kayak boots','drytop','paddling gloves','neoprene gloves','paddle jacket','hydroskin','tie down straps','waterproof camera bags','cooler','boots','fly fishing rafts','neoprene boots','kayak','kokatat','water boots','cataraft','straps','inflatable kayak','cataraft fishing','pike','womens pfd','hat','deck rigging','oar locks','waterproof backpack','sleeping pads','paddle float','dry box','canoe float bags','kayak spray skirts','sup','wet shoes','first aid kit','waterproof socks','socks','hydrosilk','splash jacket','neoprene pants','used oars','throw bag','bills bag','fishing raft','used inflatable kayaks','paco','float bags','kayak life jackets','raft pump','knives','farmer john','kayak deck bag','pack raft','shoes','yakima fit list','oars','groover','fire pan','whitewater helmets','rescue pfd','boater bucks','big earl','life jackets','dry sock','wetsuit jacket','fleece union suit','union suit','waterproof gloves','air bags','dry top jacket','roof rack pads','womens drysuit','rope','pfd knife','seat','pump','sand stake','mesh gear bag','packraft','2 piece oar','women wetsuit','booties','pelican case','helmets','patch kit','hydroskin women','astral','boat bag','contour hd 1080p camcorder','neoprene shorts','kayak gloves','hydrosilk shirt','paddle board','throw rope','waterproof bag','closed cell foam','used','wet suits','drybag','big baron','chaco','semi dry top','kayak cockpit covers','aquaseal','ear plugs','watershed','d rings','wavelite','gigbob','ammo can','kayak float bags','kokatat dry suit','pin kit','paddling pants','cable lock','neck gasket','flotation bags','aire','lash tab','latex socks','kayak cart','portable toilet','paddle bag','rescue knife','303','camera','glue','extreme drysuit','gig bob','cargo net','k-pump','rocket box','otb boots','pilot knife','rain jacket','pilot','kayak helmet','foam','kayak shoes','soft cooler','minicell foam','hydro skin','water socks','loop straps','cataract oars','kayak straps','drift boat oars','womens rash guard','life jackets type v','oar frames','life vest','neoprene jacket','high back life vest','cam straps','splash pants','river tube','womens neoprene pants','carlisle oar','cart','foam blocks','kayak lock','fins','low profile pfd','kayak seat','map case','io bio','river shoes','stove','cataraft tubes','stow float','foot braces','i o bio','pvc repair','gasket','splash top','backpack','halkey roberts','tributary raft','carabiner','waterproof camera case','paddling shorts','14 otter','mens wet suit','pelican box','sprayskirt','ninja','kayak backpack','used catarafts','bilge pump','sandals','4 piece paddle','inversion','cord','motor mount','hydroskin shirt','vista','high float life jacket','wet suits women','aluminum dry box','hypalon','nose plugs','ducky','hydroskin jacket','stabond','aire tributary','tow tether','nrsb2b','used kayak paddle','riken rafts','mesh bag','high float pfd','fishing frame','kayak storage','paddle leash','whistle','oar mounts','tomcat','pontoon boats','cataraft floor','raft frame','side rails','dry bag duffel','padded straps','oarlock','skidguard','aire ducky','contour','hydroskin socks','cockpit cover','drink holder','canoe flotation','blake longworth','rash guard','hypalon paint','toilet','hypalon fabric','tow line','keen','gear swap','endurance pants','inflatable stand up paddle board','kayak skirt','taj m\'haul','fishing raft frame','neoprene shirts','mittens','katadyn','halkey roberts valve adapter','used kayaks','level 6','z-drag','summit valve','pulleys','kayak foot pads','elbow pads','mesh back pfd','belt','canyon box','jacket','1236','pelican','ethafoam','creek gloves','merino men\'s','box waterproof','farmer jane wetsuit','youth pfd','raft','hydration','air pressure gauge','boston valve','oar sleeve','anchor system','boater\'s bucks','stampede','otb','cot','waterproof duffel','womens dry tops','pipe','air pump','thigh straps','polartec','rashguard','gloves for kayaking','rod holder','otter','valves','fishing pfd','head','yakima footbraces','titanium gloves','vynabond','tape','women\'s wetsuit','tarp','reactor gloves','sealskinz','tackle bag','shorts','radio dry bag','hypalon adhesive','extreme','womens water shoes','dry shoes','merino wool','roof racks','rogue','catalina','women\'s dry pants','seal skinz','oar rights','tributary','dry suit repair','grizzly','h2 glue','aire cataraft','powerhouse','cooler straps','skull cap','rodeo pants','scotty','mens drysuit','compass','rope bag','nrs extreme relief drysuit','yakima car rack fit list','stake','anchor mount','mens wetsuit','hypalon material','mambas','canoe seat','cargo platform','rowing gloves','fuzzy rubber','kokatat dry top','raft floor','aire tomcat','frames','waterproof case iphone','cam buckle','throw','0.5 mm','spray jacket','solar','havoc','neoprene top','clothing size chart','revolution drytop','lights','cup holder','tie down','paddle biner','video camera','nrs desperado shoe','nrs strap','desperado shoe','female funnel','flux','binoculars','attack','ornament','grand canyon guide book','rescue boots','rain gutter','sun hat','kayak paddle','halkey-roberts valve','stern seat mount','razor blade','child pfd','carlson pump','kayak foot pegs','womens paddle jacket','headlamp waterproof','foot pump','seat back','headlamp','chinook','fly fishing','cross 4','leash','guide shirts','anchor pulley','camp table','raft anchor system','mystery','sail','endurance','werner','toilet system','pads','revolution','buckle','drypants','shirts','titanium','dry pack','hip pads','hydration pack','solar panel','minicell','nose','neoprene hoods','oar stands','net','mitts','terraprene','ace water','ubolt','expedition driduffel','ultra jane','gerber knives','hydroskin men','e160','gps','hydro silk','guide paddle','alum','rodeo shorts','padz','nrs hydroskin vest','floating rope','seat pads','kayak compass','casting platform','backband','womens life jackets','zipper care','elbow','repair kit','rodeo','hydroskin gloves','tuff sack','gift card','work boot','whiskey river','swim fins','york box','chums','kitchen box','boxes','earplugs','u bolt','aquapac','wrist gaskets','e 150','hydrosilk short sleeve','nrs wavelite union suit','gasket replacement','guide gloves','k pump','d-ring','helmet sizing','boat light','wet boots','carolina pants','drag bag','oar stops','paragon','womens funnel','river toilets','revolution cool cat','roll a table','ultra john','bandit','drylander','kayak hanger','webbing','lopro frame fittings','paddle case','boat cart','oar grips','oar handle','boat dry bags','paddle sails','werner paddle','ammo','board shorts women\'s','wet socks','sup leash','hammock','riverwing','long john wetsuit','pvc patch','2095','pants','canoe','sleeping bags','women dry suit','kayak repair','hydroskin shorts','leafield valve','tent dry bag','carlisle paddles','fire','z-drag kit','pontoon','oar keeper','table','kayak outfitting','carlisle','roll a cot','strobe light','york','mamba pogies','oar weights','wonder pump','shaft extender','float bags kayak sea','firepan','first aid','cyprus','kayak cover','cargo floor','atomic oar lock','locking straps','nrs storm boot','toluene','inflatable paddle board','ice chest','dry jackets','baron','yakima control tower','reel','tropos','wing shelter','dura soft','mp3','purest duffel','farmer jane','tula','drop bag','high five','inflator','seal skin socks','visor','durasoft cooler','raft bag','momentum raft','rowers seat','frame pipe','barrel pump','uv shirts','event','flip lines','side rack','mystery shirt','compact outfitter','otter 130','inflatable pumps','military valve','lash kit','kayak pants','cfd','shuna','spreader bar','paddle tether','riken','cataraft frame','inflatable sup','stampede jacket','gmer','aire traveler canoe','mystery titanium','nik wax','sea hood','raft storage bag','pump adapter','big water','thwart bag','crkt','reel sup','14 cataraft','engle','paddle carabiner','grizzly hydroskin jacket','mystery helmet liner','sup board','deck rigging kit','dream result','duffle','bucket','fishing','helmet visor','paddle holder','bio tights','foot bar','lanyard','rio top','women\'s drytop','nrs river tube','foot cups','otter 140','seat bar','bowline','cheyenne','nrs hoodie','polypropylene rope','venus','super puma','kayak paddle christmas ornament','dog','nrs rescue bag','lite propane tank 10lb','epoxy','g flex','fabric','waterproof waist pack','waterproof shoes','level six jacket','bushing','dutch oven','pressure gauge','d ring patch','breakdown paddle','drift boat','e-161','dry box holder','latex','keen shoes','ibex','watershed backpack','aire ik','d-rings','driduffel','snap dragon','river straps','pins and clips','hypalon d ring','sun block','ik storage bag','e 130','psi gauge','gage','the colorado river in grand canyon','system 5 bag','gflex','quick dry shirt','nrs wetsuit','roam','stern bag','navigation light','boundary waters boots','return policy','navy','kayak and canoe boat cart','nrs booties','swift','can-panion','ipad','leafield','kidskin','float tubes','contour 1080p','waterproof phone case','sta bond','waterproof jacket','revivex','sealskinz submerge waterproof socks','lopro','wing','wheels','fishing rod holder','core concepts','meridian','gerber','2143yc','map','shorty dry top','pins','drysocks','standard rescue throw bag','outfitter bag','women\'s rashguard','bail bucket','nrs mission drysuit','paddle sizing','high 5','summit 2 valve','latex booties','treksta women\'s kisatchie sandal','catamaran','solvent','werner touring','2 straps','guide discount','tab','adc summit','close out','cataract blade tip','leafield gauge','personal locator beacon','go bag','nez perce','z1','vigilante','ear','first aid kit waterproof','co pilot','copilot','dry backpack','dry box mount','cable','pink pfd','slickrock','hydrolock dry bag','chair','waterproof pants','dry suit liner','guide stick','helmet cam','big water 5','camp chair','neoprene skull cap','k100','sherpa','neck','inflatable pontoon boat','sand mat','brunton','canopy','payette jacket','revolution raft','cool cat','ricksack','snapdragon sprayskirt','i o','kokatat bibs','rescue pulleys','deck lines','flask','feel free camel kayak trolley','nrs classic rescue gloves','desperado','little dipper','endurance jacket','paddle grips','skid guard frame','wave light','magnum','porta potty','fleece','breakdown side rails','river shorty','material','canoe lacing','universal drop rails','nrs rescue board','aire repair','pro roller','cell charger','hydroskin mens top','women dry jackets','wild cat','cheetah seat','10 osprey','creek','roofracks','canoe outfitting','watershed dry bag','rogue glove','canoe paddles','expedition raft','thwart seat','big water v','watershed bags','freefall','sea kayak jacket','pelican case 1550','current','pelican 1500','mystery skin','river maps','lock','fire blanket','drip rings','handles','raft guide paddle','whitewater spray skirt','wonder pump 6','gasket repair','four piece','catalog request','ipod','desperado sock','level 6 shorts','kokatat union suit','break down side rails','otter 142','aeropress','whip','metro','navy seal boots','womens','gasket sizing','12 volt','water','greenjacket','spray top','wading pant','pet','c7','sar','werner powerhouse','nrs hat','duffel','igloo','coffee','pelican cases 1500','smith','oar shaft','beverage','classic rescue','vhf dry bag','deluxe foot bar','bilge sponge','futa','hdpe','nrs wavelite','earl','2 piece paddle','parawing','buckle pad','juice lite','short john','pelican case 1510','abyss boot','bow line bag','oarlock socket','latex care','carlisle blade','pelican case 1600','tackle box','latex foot','nrs black rock dry pants','iphone','camano','mek','big basin','camera dry bag','flux drytop','nrs bandit','cat frame','microlite','mattress','thermal underwear','nrs engel cooler 65 quart','cam','stern','werner stikine','inflatable seat','sawyer oars','chaco sandals','fish cat','level 6 pacific splash jacket','pelican micro','vhf','ecosafe','bighorn 2','solar charger','eno','uv protection','nikwax','scotty mount','type 5 life jackets','one piece fleece','oven','stand up','ultra light wing','native watercraft','inversion drysuit','poncho','pig tail','neoprene care','nrs mystery','return label','inner tube','smc cr pulley','engel cooler parts','rails','werner sup paddle','semi dry jacket','nrs custom aire traveler canoe frame','pr valve cap','goal zero rock out','exterior seam tape','med kit','atb','womens wavelite','mesh floor','kicker remix','io bio women','carolina','hydrocuff','chillba','urethane glue','deck','zip tech','crossover','rack','water filter','whiz','longsleeve water shirt','rashguard long sleeve','insole','wag bag','gift certificate','waterproof earbuds','nrs toaster mitts','fox','athena dry pants','wingman','happy hands','wetsuit sizing','rascal','maverick gloves','drysuit liner','smart wool','freefall triton dry pants','sawyer','grizzly wetsuit','windbreaker','rescue jackets','fly rod holder','balaclava','fiberglass repair','canoe repair','meridian dry suit','vinabond','headlight','carlisle gigbob','caribeaner','mustang ice commander','hyside','pvc to pvc adhesive','sawtooth','radio','c tug','headphones','extreme relief','flashlight','nrs knife','nrs ninja','oar pin','smc pulley','pelican 1400','access duffel','rescue vest','sport cat frame','outfitter','quick release belt','glove liners','taj','3.8 bills','paddle board leash','green pfd','cap','nrs camp sack','primus','boulder box','cheetah','kids','nrs inflator pump','capri','water sandals','rapid gloves','triton drysuit','boat oars','1.5','static rope','skid guard','navisafe navi light 360','solar shower','retro','flush drowning video','split bow bag','west','oversized u-bolt','astral camino','ammo box','extreme relief drysuit','paddle grip tape','seat mount','upf','mapcessory','hand','wetsuit shampoo','soft sided cooler','cleaning hydroskin','collapsible bucket','comprehensive','freefall pant','wetsuit pants','taj m\'haul deck bag','storm cag','nrs cockpit covers','dry','werner laguna','female urinal','sea kayaking pfd','nrs groove pfd','flares','freefall dry pant','whirlpool','eos','acr','lynch pin','filter','nrs jacket','nrs stampede shorty','io','awning','latch','dry bag repair','reliance','smokers','gibbs','dunny','revolution thwart','used dry suit','mini-cell','nrs guru','white water pfd','water rescue rope','inflatable kayak storage bag','nrs farmer jane','aire boats','linch pin','hydroskin base layer','wash basin','kavu chillba','a6','rain gear','303 fabric','kokatat drysuit','mukluk','ultra farmer john','kayak wetsuit','big sur','bravo','clifton urethane adhesive','bear claw','tomcat tandem','type v life','comm3','sea kayak','cell phone dry bag','tights','pro guardian','kicker wetshoe','aire pontoon','oar teather','knots taut line','mighty mounts','top cat','groover tamer','boats','slr case','136','nrs paddlers gloves','footbraces','nrs kickers','atb wetshoe','raft handles','glideskin','lion','yellow','unpin','helmet bill','kokatat helix','split kayak','plunge','monterey sprayskirt','navisafe telescopic pole','inflatable kayak boat bag','zipdry','meshback','wetsuit shorts','b7 leafield valve adapter','youth hooded rio','tear-aid','kayak rod holder','sink the stink','rescue equipment','wading shoes','cotol','camp box','nrs paddle','knife for pfd','aire puma','kids sprayskirt','returns','super duper puma','neoprene cockpit cover','thigh hook','paddle storage bags','jane','color coded straps','women gore-tex jacket','womens hydroskin pants','rouge','pelican case 1400','aire super puma','kayak stacker','carlisle outfitter paddle','havoc livery','contour surf mount','kayak back','tandem inflatable kayak','nrs rescue rope','gsi dutch oven','yakima rollers','sandle sock','camel','small raft','dish washing','side rials','nrs purest duffel','wfb','bail','tall tales','teather','bat','fly fishing frame','nrs gloves','contour hd','motor','trevor fulton','tomcat 2','oar counter balance','comm 3','hd camera','mens shorts','scotty rod holder','expedition socks','nrs socks','overhaul','quick change duffel','phone case','bruneau','hydrolock bag','grip tape','womans dry suit','mini cell','four piece paddle','neoprene tights','tie-down straps','slr','camano fiberglass','ikelos paddle','bilge pump clip','used drysuit','helmet mount','690 bv','aquavest','led light','double d','aquapac slr camera case','aerospace','dry cag','womens rogue','used frames','taboo','youth farmer bill','nrs hydration pack','natural','1.5 strap','anchor mount system','universal cat frame','flash light','boundary','swap','aire foot brace','youth wetsuit','corryvrecken','nrs canyon box','short sleeve paddle jacket','foot pads','vhf radio','rescue tow','lifeguard','goal zero guide 10 adventure kit','stormstrip','storm','kicker wet shoes','dry suit insulation','hydrolock','eagle nest hammock','pfd type v','speakers','groove','rescue throw','omega','chart case','liner socks','shovel','yakima pads','nrs havoc livery helmet','classic rescue glove','primus stove','little jane wetsuit','z drag kit','pontoon fishing boats','wetsuit shoes','waterproof belt pack','low pro fittings','women\'s guide shirt','wetpants','free fall','mp3 case','sale on rafts','nrs seat bar','oar rig','stripping basket','nrs pungo','pelican case 1200','5 barrel pump','inflatable kayak paddle','dry duffel','dry duffle','revolution dry top','edge','womens sandals','paddle diameter','firepan ground cloth','youth kidskin','raft accessories','nrs hydroskin farmer john wetsuit','nrs powerhouse jacket','rodeo stern bag','oar extension','standard raft seat','2519 w','ice cooler','head size','nrs guardian kayak rescue bag','sand free multimat','mission drysuit','inflatable kayak foot braces','nrs endurance jacket','mighty mite','igloo hinges','bill parks','k 100','women hydroskin long sleeve shirt','whitewater philosophy','advantage','sierra board','womens splash pants','lower salmon hat','locking kayak straps','inflatable board','kayak accessories','tough stake','tributary tomcat','cleaning','nrs ultra','mens rash guard','30 can cooler','kokatat meridian','shoes boat','tent stakes','deluxe footbar','pelican 1150','nose cone','sealskin','beach stake','helter shelter','water proof gloves','wet','infant pfd','marine radio','rescue suit','sgg oar','rear seat','rigging plate','gore rogue','nrs stampede paddle jacket','sprayskirt fit guide','hand size chart','watershed dry duffel','boulder','counter balance','loon','crazy creek','cone','nrs pilot','nrs flux','gravity water filter','split rings','sprite','boat seat','aire inflatable seat','2mm jacket','infinity float bags','nrs drylander shock cord sprayskirt','nrs heavy duty straps','bandit footpegs','pump nozzle','kicker remix wetshoe','outer core','tapered','carlisle take-apart kayak paddle','paddle leash sup','slalom','kayak stow float','payette','boat straps','thermalplush','on sale','nrs sandal sock','tuff','werner cyprus','cascade','doublenest','tropos whirlpool','nrs paddle wetshoe','womens hydroskin gloves','werner skagit','willis','pavilion','big horn i','jackson','bravo 2','glove sizing','portage','women\'s kayak shoe','3 mm cord','single nest hammock','waterproof headlight','medium dry bag','nrs desperado socks','toaster','dri stow','unpin kit','whitewater rescue manual book','rio splash pants','nrs hydrolock dry bags','level 6 sprayskirt','exped','skagit cf','dry suit hood','laura benson','paddle wax','women\'s kayak life jacket','e-150','cotton mouth','big earl sup','strap slide instructions','nova','aire repair kit','dry suit care','nrs hydroskin jacket','undergarment','counter weights','cooler sling','pole','farmer wetsuit','maverick paddling gloves','waterproof map','neoprene cockpit','i o bio t','tempest','vortex','sweatshirt','woodland','chaco mens','womens relief','slack line','expedition dry bag','foam rack','kids whitewater paddle','futa bag','spoon','women sizing','yakima holdup','yakima racks','serial number','boatlocker','hydro lock','grizzly jacket','bar','frame sizing','bravo 2 pump','womens waterproof pants','salad days','winter','repellant','level six mack','sandstake','workboot wetshoe','kokatat tropos','single nest','big blower','grizzly little john wetsuit','voyageur','ptc','wet and dry backpack','deluxe','sleeping bag liner','108','sled','expedition wet socks','water can','clearwater meshback','ptk kayak paddle','cobra oar locks','watershed ocoee','ankle pad','clean waste','white water paddles','kayakers ear','camp site counter','nrs hydrolock','contact tight','windproof','men\'s jacket','hydrolock grommeted','nrs shirt','skirt fit guide','gfe','boater\'s gloves','dodger','betsea','revolution 120','cribbage','kokatat dry pants','kokatat women','nrs river knife','paddle straps','hd tie down strap','razor','wetsuit repair','mens hydroskin gloves','wildcat','primus firehole 300 stove','travel paddle','polo','wash station','return form','jenni bag','hydro silk shirt','guide program','coolcat','latex boating gloves','k pump mini','water shirt','1490','prijon drain plug','expedition duffel','kayak jacket','revolution 140','inflatable kayak bag','pro purchase','rubber','nrs dry jacket','ezo','track jacket','little','aire traveler','type 3 pfd','static line','kokatat supernova','self bailer','drysuit patch','toughtex','catalina deck','drysuit bib','kokatat gore-tex','ray zvirbulis','werner corryvrecken','hd40 floor armor','werner cyprus paddle','kokatat tempest','womens base layer','tech wash','face protection','session','double diamond','nrs hooded rio top paddle jacket','c','nrs t shirts','watershed aleutian deck bag','tank','skagit paddle','tributary 12.0 sb','werner kaliste','kayak foot','passport','tall','nrs atb','rescue sled','nrs inflatable','boat anchor','cribbage board','kayak essential strokes','firepan blanket','nrs rescue vest','helmet pads','drysuit seal replacement','cargo frame','nrs paddling gloves','soft sided cooler liner','wet shirt','hypalon coating','kokatat msfit','women\'s kicker','kayaks for kids','fishing gear','paddle edging','wetboots','wetsuit boots','wagg bags','woman life jacket','womens kayak life jackets','woman coats','party','store drysuit','christmas lights','dealer locator','wavelite shirt polartec','kneeling pad','werner sherpa paddle','sd card','dry bag instructions','pfd 3','kayak shoes women','hd','big haul mesh','water tube','bandit fabric','wavelite mens','primus lantern','paddling cap','camp mug','drytop repair','washington whitewater','wholesale rep','white water vest','drytop care','charlie walbridge','women\'s hydrosilk long sleeve shirt','nrs 2.2 bill\'s bag dry bag','women\'s endurance pants','canoe light','rev 130','calculate oar length','warmest gloves','kayak floor','rail light','notebook','satellite','nrs black rock drypant','sol shade','kokatat men\'s tropos helix drytop','dots','water booties','sgg counterbalance','nrs women\'s kicker remix wetshoe','wetsuit hats','kokatat gfe','split float stern','hydroskin for men','womens wetsuit vest','push button','water jacket','h','women powerhouse jacket','paddle cord','blu-ray','canoe movie','nrs women\'s rafters gloves','coupon','wet suit bottoms','womans shorts','nrs hydrosilk shirt','kids paddling jacket','shipping cost','nrs chinook kayak vest','shipping','touring paddles','pet pfd','carbon paddle','whitewater chile','brunton profile','nrs wavelite womens shirt','semi drytop','tegs','woman','tp lights','seal socks','women hydro','contour usb battery charger','hydro skin shirt','bow flotation','werner carbon','men\'s dry top','kayak roof pads','male','wang','chaco\'s','fishing tackle','mini','river bed cot','super joe','folding shovel','kayak thigh pads','waste bags','runner','shipping info','stamp t','wading belt','waterproof spray','rucksack','sprocket rocket','riken military valve','nrs soft cooler','panel','whitewater paddle youth','hulley rollers','roof box','powerhouse bent shaft','table cloth','customer service','devon barker','stickup','kokatat drypant','nrs fish cat frame','press','sample raft','nrs j-hooktie-down kit','neo socks','ripcord','touring kayak ornament','water gallon','river signals','fork lift','canoe santa','kayak sack','nrs kicker shoe','silk skin','nrs women','whisper shoes','carlisle raft paddle','nrs cataraft','hydroskin suit','protec old school','bauer','nrs lifejacket','sac','boat material','sport bag','raft specifications','nrs boundary','raft dimensions','werner kayak','neoprene wetsuit jacket','canoe car rack kit','denier','nrs kayak pumps','raf','frame 101','kayak car rack','kodiak tubes','carlisle taboo','kokatat deluxe','work shoe','women water shoes kayak','strake','sea paddle','women splash','side bars','climbing rope','closeout gloves','nrs system 5 dry bag','waterspike','deck skirt','wool pants','pan','carlisle shaft and blade','bamboo hat','stern casting platform','center seat','bravo nozzles','nigel','sand screw','drifter','strike tandem','stretch','nrs paddle leash','kayak thwart seat','knee padz','casual wear','walkie','warmth','women kayaking mississippi','kokatat tropos pants','wing poles','kavu tank','nrs powerhouse splash jacket','halkey valve adapter','tight straps','kayak strap tie downs','storm jacket','roll top table','dealer application','sea kayaking dry suit','dishwater strainer','pda','toilet lights','chaco women z2','nrs men\'s vortex jacket closeout','fishing frame weight','whitewater self defense dvd','wicking socks','summit valve wrench','nrs sar','protec b2','canoe skirt','touring specific splash jacket','figure 8','carbon fiber kayak paddle','nrs men wetsuit','royalex repair','neoprene neck gasket','floating waterproof camera bags','cooler fit list','pig','body','nrs men\'s wetsuit jacket','clifton 4844','have a hearing problem','farmer john dry suit','werner double diamond','raft rescue rope','waterproof womens jackets','floor platform','drytop sizing','canoe gloves','womens hoodies','#w29','carlisle hd','salmon guide','bench table','snap around','nrs bucks','rafting book','nrs oarlocks','scrim shot','toe rope','kayak blade','whitewater fatalities','frame drink holders','carlisle extender','canoe rigging','fishing pontoon','womens sport shorts','remote bracket','rafting lifejacket','car rack foam','sur','nrs guide','water proof camera bag','take apart','choosing a kayak','nrs hydration','dry bag ipad','kwik','nrs drylander shock cord kayak sprayskirt','bellows','nrs neoprene','helmut','pontoon boat accessories','nrs big','tube cover','dry suit storage','rowing seat mount','women\'s neoprene capri','kavu mens shirts','tire','kavu women\'s helen of soy skirt','sparetime','deluxe sprayskirt','fleece pockets pfd','stamped shorty','camping dry box','rachel','flyfishing','bandit foot','women\'s shorty','batten installation','kids rio jacket','nrs men\'s hydroskin pants','nrs throw bag','kokatat t3','pelican case 1090','rescue swim fins','standard floatation','raft ring','policy','river shorty knife','fill valve','wet shorts','swim pants','salmon book','squirt','werner stand up paddle','werner paddle carbon high angle','nrs sar drysuit','w92 220','shinook','nrs sturgeon','brim hat','comparison','smith trace','canoe deck','pelican replacement foam','nrs youth farmer bill','whitewater accidents','womens z1','twart','camp blanket','crew paddle','canoe video','skin shorts','branch tee','blongo','blongo ball','rafting video','smc rigging plate','pro foam core','softshell','waterproof binoculars','nrs side rail racks','type iii v','cat package','blackberry','spare tank','how to patch','woman jacket','camp saw','hydroskin care','wallet dry bag','river float','demo','double dry','waterproof storage','rib','coupler','b 7 valve','play and freeze','dust cap','watertight','side cut helmet','neoprene adhesive','frontier play','waterproof grease','web floor','kick rocker','chili long','raft guide','tyler bradt','chair frame','nrs rescue throw bag','side box','raft boat bag','nrs capri','new short valve','screw valve','nrs bowline','case pack straps','spout','nrs women\'s gloves','werner whitewater kayak paddle','nrs edition canyon bag','water knot','floating blade','nrs sea hood','high angle paddles','womens pro z2 chaco','kaituna','watershorts','roll up camp table','name tag','raft coating','kayak paddle blade','nrs sea tour','kokatat mens','water guide','screw gate biner','nrs guide type 3 big water pfd','cooler plug','nrs pfd hydration pack','books alaska','nrs eco safe toilet system','nrs men\'s hydrosilk rash guard pants','women\'s river shoes','navy seal water shoes','standard lowback raft seat','hydroskin l s shirts','rescue throwbag','carbon kayak paddles-bent','two man float tubes','front of raft','square net','nrs clothing','raw hide','women\'s water shorts','mens paddle shorts','drysuit glue','women\'s front zipper neoprene jacket','raft e132d','blackberry phone','front y bar','waterproof kindle','nrs motion soft shell','nrs bandit i','shaft rafting','waterproof smart phone case','rock dry','smart phoned','#7503','#7490','dry sack back','wake board','waterproof case for iphone','wet suit straps','forklift rack','nrs wing ties','double skirted top','power house bent','pelican nemo','deluxe canoe car kit','sparejoe 2','treatment','canoe life jackets','small camera case','b-7 valve cap','women\'s long sleeve shirts','women\'s wetshoe','nrs men\'s hydrosilk','kokatat women\'s tropos 3 swift entry drysuit closeout','pelican led','propane lantern','wetshoe insole','nrs cataraft yoke','blades wood','right control paddle','nrs kickers neoprene','k1 paddles','nrs drylander shock skirt','small dry storage bag','k 1','roof foam pads','nrs anchor','werner w77','womens water proof pant','womens river boots','waterproof belt case','nrs hooded rio splash top','water maker','c valve','women kayak','wick away','woman water short','sprint','waterproof pouch for mp3','nrs womens life vest','blem bighorn','drybuds','nrs womens dry top','carlisle oar rings','warm water shoes','dry chatooga','women\'s water pants','kokatat dropseat','nrs raft valve','complete rafting','neoprene hydroskin socks','to tether','plus size wetsuits','ranch lattice hat','revolution 100','firstaid','fabric patch kits','short sleeve drytop','canoe fit','boat identification link','cr pulley','kayak pro compact rescue throw bag','plaid','ninga','wave board','kokatat swift entry','hydroskin wet suit','neoprene dry top','reo','with socks','roll-a-table cover','nrs men\'s inversion kayak drysuit','kokatat tropos full blast jacket','nrs propulsion','men\'s wavelite pants','soy','rapid 1.5','nrs top cat','aquapac wet and dry backpack','cat rail','rescue gear','kayak glue','nrs thwart otter 142','alaska whitewater','nrs 16 cataraft fishing package','kokatat splash top','paddle wear','head trip klink helmet','werner side kick paddle','kayak paddle sizing','footpump','blem nrs 13 cool cat cataraft','carnage','kids hat','neoprene wetsocks','women\'s paddling shorts','string','cataract extender','neoprene neck','wet dry bag','kokatat women\'s tropos swift entry drysuit','sea cap','rowers gloves','hydroskin mystery','nrs bumper','stainless o ring','nrs urethane kayak foot braces','nrs carolina');
/* $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);
    }
