function AutoCompleteDB()
{
        // set the initial values.
        this.bEnd = false;
        this.nCount = 0;
        this.aStr = new Object;
}
 
AutoCompleteDB.prototype.add = function(str)
{
        // increment the count value.
        this.nCount++;
 
        // if at the end of the string, flag this node as an end point.
        if ( str == "" )
        {
                this.bEnd = true;
        }
        else
        {
                // otherwise, pull the first letter off the string
                var fletter = str.substring(0,1);
                var rest = str.substring(1,str.length);

                // and either create a child node for it or reuse an old one.
                if ( !this.aStr[fletter] ) this.aStr[fletter] = new AutoCompleteDB();
                this.aStr[fletter].add(rest);
        }
}
 
AutoCompleteDB.prototype.getCount = function(str, bExact)
{
        // if end of search string, return number
        if ( str == "" )
                if ( this.bEnd && bExact && (this.nCount == 1) ) return 0;
                else return this.nCount;

        // otherwise, pull the first letter off the string
        var fletter = str.substring(0,1);
        var rest = str.substring(1,str.length);

        // and look for case-insensitive matches
        var nCount = 0;
        var lLetter = fletter.toLowerCase();
        if ( this.aStr[lLetter] )
                nCount += this.aStr[lLetter].getCount(rest, bExact && (fletter == lLetter));

        var uLetter = fletter.toUpperCase();
        if ( this.aStr[uLetter] )
                nCount += this.aStr[uLetter].getCount(rest, bExact && (fletter == uLetter));

        return nCount;
}
 
AutoCompleteDB.prototype.getStrings = function(str1, str2, outStr)
{
        if ( str1 == "" )
        {
                // add matching strings to the array
                if ( this.bEnd ) 
                        outStr.push(str2);
 
                // get strings for each child node
                for ( var i in this.aStr )
                        this.aStr[i].getStrings(str1, str2 + i, outStr);
        }
        else
        {
                // pull the first letter off the string
                var fletter = str1.substring(0,1);
                var rest = str1.substring(1,str1.length);

                // and get the case-insensitive matches.
                var lLetter = fletter.toLowerCase();
                if ( this.aStr[lLetter] )
                        this.aStr[lLetter].getStrings(rest, str2 + lLetter, outStr);
 
                var uLetter = fletter.toUpperCase();
                if ( this.aStr[uLetter] )
                        this.aStr[uLetter].getStrings(rest, str2 + uLetter, outStr);
        }
}
 
 
function AutoComplete(aStr, oText, oDiv, nMaxSize)
{
        // initialize member variables
        this.oText = oText;
        this.oDiv = oDiv;
        this.nMaxSize = nMaxSize;

        // preprocess the texts for fast access
        this.db = new AutoCompleteDB();
        var i, n = aStr.length;
        for ( i = 0; i < n; i++ )
        {
                this.db.add(aStr[i]);
        }

        // attach handlers to the text-box
        oText.AutoComplete = this;
        oText.onkeyup = AutoComplete.prototype.onTextChange;
        oText.onblur = AutoComplete.prototype.onTextBlur;
}
 
AutoComplete.prototype.onTextBlur = function()
{
        this.AutoComplete.onblur();
}
 
AutoComplete.prototype.onblur = function()
{
        this.oDiv.style.visibility = "hidden";
}
 
AutoComplete.prototype.onTextChange = function()
{
        this.AutoComplete.onchange();
}
 
AutoComplete.prototype.onDivMouseDown = function()
{
        this.AutoComplete.oText.value = this.firstChild.nextSibling.nextSibling.nextSibling.innerHTML;
}
 
AutoComplete.prototype.onDivMouseOver = function()
{
        this.className = "AutoCompleteHighlight";
}
 
AutoComplete.prototype.onDivMouseOut = function()
{
        this.className = "AutoCompleteBackground";
}
 
AutoComplete.prototype.onchange = function()
{
        var txt = this.oText.value;

        // count the number of strings that match the text-box value
        var nCount = this.db.getCount(txt, true);

        // if a suitable number then show the popup-div
        if ( (this.nMaxSize == -1 ) || ((nCount < this.nMaxSize) && (nCount > 0)) )
        {
                // clear the popup-div.
                while ( this.oDiv.hasChildNodes() )
                        this.oDiv.removeChild(this.oDiv.firstChild);

                // get all the matching strings from the AutoCompleteDB
                var aStr = new Array();
                this.db.getStrings(txt, "", aStr);

                // add each string to the popup-div
                var i, n = aStr.length;
                for ( i = 0; i < n; i++ )
                {
                        var pdtarr = aStr[i].split("-");
                        var sku = pdtarr[pdtarr.length - 1].replace(' ', '');
                        var pdtname = aStr[i].replace(' - '+sku, '');
                        var oDiv = document.createElement('div');
                        this.oDiv.appendChild(oDiv);
                        oDiv.innerHTML = '<img src="/pdt_imgs/small_images/'+sku+'-1.jpg" width="40" height="52" align="absmiddle" /><span class="pdtname">'+pdtname+'</span>(<span class="sku">'+sku+'</span>)';
                        oDiv.onmousedown = AutoComplete.prototype.onDivMouseDown;
                        oDiv.onmouseover = AutoComplete.prototype.onDivMouseOver;
                        oDiv.onmouseout = AutoComplete.prototype.onDivMouseOut;
                        oDiv.AutoComplete = this;
                }
                this.oDiv.style.visibility = "visible";
                this.oDiv.style.display = "block";
        }
        else // hide the popup-div
        {
                this.oDiv.innerHTML = "";
                this.oDiv.style.visibility = "hidden";
                this.oDiv.style.display = "none";
        }
}

var aNames =
[
"ClubCouture Gift Voucher - GV0901","Grey stretch camisole - 190903AT","Solid racerback camisole - 190903AV","\'LOVE\' tee - 191101AE","alex one shoulder dress - 491101BM","alex silk chiffon dress in grey - 451104AF","alex silk chiffon dress in yellow - 451104AG","amber monochrome dress - 491105AY","angela beige top - 171009ZB","anna pleated dress - 491105AX","anne contrast dress - 471105AH","aries floral dress - 491102BB","asymmetrical bodycon dress - 471105AA","backorder: adeline black top - 691001AG","backorder: angie colourblock dress - 471102AK","backorder: annalea monochrome dress - 471013AM","backorder: ariadne satchel in brown - 791112AK","backorder: basic black flare dress - 471101AD","backorder: black cutout crop tee - 171004BA","backorder: black cutout striped dress - 271009ZA","backorder: black dress with cutout shoulders - 471004AL","backorder: black mesh cutout sheath - 471011AI","backorder: black ruched cutout dress - 471009ZG","backorder: black shawl dress - 471011AK","backorder: black structured halter dress - 471004CAB","backorder: braided one shoulder swing dress - 691001AF","backorder: brown pleated mini - 691007AC","backorder: caged neckline dress - 471002AN","backorder: carrie colourblock dress - 491107AI","backorder: classic black sheath - 471004AJ","backorder: convertible ruffled dress/skirt in black - 271105AA","backorder: cream pleated chiffon maxi - 471004AG","backorder: cropped white contrast top - 151012AA","backorder: cut out shoulder dress - 471002AJ","backorder: cutout neckline dress in black - 471102AA","backorder: cutout neckline dress in white - 471102AB","backorder: cutout shoulder sheath  - 691007AD","backorder: dallas black bodycon dress  - 471004BH","backorder: daphne pleated dress - 691007AG","backorder: darcy strapless dress - 491101XI","backorder: dora peach top - 691001AA","backorder: draped navy work dress - 471012AH","backorder: earth angel chiffon maxi dress - 691007AJ","backorder: flared chiffon top in green - 191104AD","backorder: flared chiffon top in pink - 191104AE","backorder: heidi off-shoulder dress - 471004AR","backorder: hilarie red flare dress - 691007AA","backorder: houndstooth playsuit - 291107AE","backorder: jen foldover dress in black - 471102AO","backorder: jen foldover dress in pink - 471102AP","backorder: kaitlyn party dress - 471002AF","backorder: kaley buckle trilby - 791101AO","backorder: kate skater dress in black - 471013AJ","backorder: kate skater dress in red - 471013AK","backorder: kathy chiffon dress - 451012AB","backorder: lace and mesh party dress - 471011AN","backorder: lace edge cut out back dress - 471002AH","backorder: lace panel black dress - 471013AI","backorder: lace strapless dress - 471001AN","backorder: lacie dress in white - 471101AF","backorder: lanie black dress - 471013AFN","backorder: lyna party dress - 471002AB","backorder: mesh detail dress - 471001AM","backorder: mesh paneled legging - 251012AA","backorder: monochrome chiffon dress - 471002AA","backorder: monochrome dress with cut out back - 471001AG","backorder: monochrome shirt dress - 471011AC","backorder: monochrome toga dress - 471001AJ","backorder: one shoulder asymmetrical dress - 451012AC","backorder: one shoulder black top - 171004BB","backorder: one shoulder short sleeved dress - 471013AH","backorder: one-shoulder cut out dress - 471002AI","backorder: open back black party dress - 471102AL","backorder: oversized black lace top - 691001AC","backorder: oversized contrast top - 151012AB","backorder: oversized lace top - 691001AB","backorder: pansy lace dress - 471104AR","backorder: pansy layered navy dress - 691007AB","backorder: pastel lace panel dress - 691001AJ","backorder: pastel pink maxi dress - 471004CY","backorder: pastel shift dress - 471002AP","backorder: peach full skirt - 691001AD","backorder: pink chiffon dress with tie - 491009CB","backorder: pleated lace dress - 471004AM","backorder: ruched halter bodycon dress - 471011AR","backorder: sandra dress in white - 471004BK","backorder: sera black dress - 471004FH","backorder: steffy bodycon dress - 471101AA","backorder: strapless chiffon layered dress - 471009ZA","backorder: tara prom dress - 691007AL","backorder: tessa colorblock dress - 471004BD","backorder: tiered ruffled dress in cream - 451104AH","backorder: victoria black dress - 471009ZC","backorder: vienna chiffon minidress - 490801CP","backorder: waisted navy dress - 471011AB","backorder: wrap around nude top - 691007AF","basic black bandeau - 191009AP","basic cotton cardigan in black - 191107AD","basic cotton cardigan in green - 191107AC","basic sleeveless top in black - 171012AE","basic sleeveless top in navy - 171012AD","basic tank in black - 190903YY","basic tank in gray - 191107AL","basic tank in pink - 191107AK","basic tee in black - 191107AF","beadwork drape necklace - 791002AB","beige knit cardigan - 191105AU","belted chiffon ruffled skirt - 291009AB","belted mini shorts - 291102AK","belted pleated shorts - 291101AI","black Over the Knee Rib Socks - 791104QQ","black and gold bangles set - 791107AJ","black and white striped cardigan - 191105AH","black belted jacket - 191105AY","black bow hairband - 791107AG","black cardigan with hearts - 191110AB","black corporate skirt - 291101AO","black draped dress - 691001AL","black exposed zip bodycon dress - 451012AA","black geometric high socks - 791104YA","black half sleeve dress - 471012ZA","black racerback cut out dress - 471002AE","black satin lace up shorts - 291008AM","black strapped top handle bag - 791101AB","blaire bodycon dress - 471011AH","blaise rayon halter dress - 471009ZE","blue hair tie - 791109XY","blue knit scarf - 791102AB","bodycon cutout dress - 471012AV","bodycon sequined ruched dress - 491102BI","bodycon skirt in red - 291202AD","boxy crop cardigan - 191102AX","boxy crop cardigan in khaki - 191102AY","boyfriend shirt in light  - 191105AC","brie graphic tee - 191102BT","brittany cardigan in red - 191102AG","burnt rose necklace - 791111AH","buttoned bodycon dress - 691007AE","buttoned casual shirt in black - 191101AO","cammie mustard mini - 291105AI","casual tank in brown - 191107AA","casual tank in stripes - 191107AB","casual tee in brown - 191107AI","casual tee in red - 191107AJ","chiffon and lace mix sweater - 191105AS","chiffon paneled tee in black - 151111AE","chiffon paneled tee in purple - 151111AA","chiffon peter pan blouse - 171104AI","cin flared skirt in monochrome - 291104AA","cin flared skirt in pale floral - 291104AB","clubcouture signature tank in black - 191111XX","clubcouture signature tank in white - 191111YY","colourblock mini in grey - 251111AC","colourblock mini in purple - 251111AB","colourblock sleeveless dress - 491102BRN","colourblock swing dress - 451111AD","colourblock trapeze dress - 471013AL","contrast beads and chain necklace - 791003AB","contrast bodycon dress - 471105AL","contrast lace fitted dress - 451107AC","contrast paneled bodycon dress - 491201AB","contrast peter pan blouse - 151111AD","contrast strapless dress - 471104AC","convertible ruffled dress/skirt in pink - 271105AB","coral pink sweater - 191102BJ","cream chiffon pleated dress - 491101AB","crop cherry hoodie - 191102BO","cross peplum dress - 491102BJ","curve: oversized layered top - 191101AG","curve: oversized top in black - 191101AC","curved silver cuff - 791112AA","cutout back bodycon dress - 471002AKN","cutout black bodycon dress - 491107AE","cutout bow top - 191104AI","cutout halter chiffon dress - 451107AB","cutout rayon top - 171009ZC","cutout tee in white - 191009AC","daisy pearl necklace - 791111AI","danni grey cardigan - 191102BK","dipped hem tee in deep red - 171109AB","distressed black short - 291102AG","distressed denim mini - 291102AF","doutzen bodycon dress in black - 491010BQ","draped grey fitted dress - 471012AW","draped one-shoulder dress - 491107AA","eyelet panel dress - 471013AA","faux wrap purple dress - 471102AD","feathered long necklace in brown - 791112AE","feathered long necklace in gray - 791112AF","fitted floral dress - 491102BW","fitted ponti dress in cream - 471102AF","fitted ponti dress in red - 471102AE","flared chiffon top in black - 191104AC","floral and eyelet maxi skirt - 291105AJ","floral cutout necklace - 791111AB","floral flutter dress - 491202AF","floral pleated skirt - 251012AB","flutter pendant necklace - 791112AD","gabrielle sleeveless dress - 491102BO","gathered chiffon skirt - 251107AB","gathered white blouse - 171105AA","gemma floral chain necklace - 791111AC","geometric structured dress  - 491008AP","giselle wool mini - 291010CAN","gold and diamonds cluster ring - 791107AD","gold edged black cuff bracelet - 791112AB","gold edged white cuff bracelet - 791112AC","green rose ring necklace - 791107AF","grey satin halter dress - 471004CH","grey shirt dress - 491009BB","halter lace up bodycon dress - 491107AF","halter tee in dark green - 191107AE","hannah long sweater - 191102BF","heart knitted cardigan - 191105AR","heather contrast floral dress - 471002AT","high-waisted floral mini - 271104AB","high-waisted maxi in cream - 251111AE","high-waisted maxi in dark - 251111AD","hooded top in brown - 191011AF","jacq contrast dress - 491201AC","jaslyn floral dress - 491101AK","jeanie pleated skirt - 291102AD","jen bodycon dress - 471107AB","jes shoulder bag in brown - 791112AM","jillian halter dress - 691007AH","joa floral dress - 471002AS","julianne khaki parka - 191102AJ","julianne pleated dress in white - 491010BI","kari black dress - 471013AC","kate graphic tee - 191102BS","katie jumper in dark - 291101AF","katie jumper in light - 291101AG","kea pleated chiffon dress - 451107AA","kensie boyfriend cardigan in pink - 191010AG","keyhole fit and flare dress - 451107AE","khaki loose vest - 171111AA","knit pullover hoodie - 191010AQ","lace back dress - 471013AD","lace back oversized sweater - 191105AQ","lace one-shoulder dress - 471104AL","lace swing dress in black - 471106AB","lacie long necklace - 791107AA","lanie maroon dress - 471013AF","layered sleeveless dress - 451111AG","leopard printed chiffon scarf - 791005AA","leopard printed scarf in pink - 791104AI","leopard strapless dress - 491201AH","light grey swing t-shirt dress - 491010AJ","lis contrast dress - 451111AF","little basic black dress - 471109AB","liz cutout back dress - 491107AD","loose dark pants - 291102AA","loose racerback vest in purple - 191107AG","loose racerback vest in white - 191107AH","lounge crew neck tee in pink - 191010BB","love eternal necklace - 791111AD","marie grey dress - 471011AE","marled grey swing dress with tie - 491010AI","marled grey t-shirt dress - 491009BZ","marled zip jacket - 191004AB","mesh back dress - 471013AE","mesh racerback dress - 471107AA","michaela black dress - 471012AS","mocha hair tie - 791110PP","monochrome cutout party dress - 451012AD","monochrome ruched bodycon dress - 491010BS","monochrome striped dress - 491201AM","moto-inspired romper - 291105AA","multi coloured bangle - 791010AO","multi-chain silver necklace - 791112AJ","nadya summer dress - 491105AA","natalie shirtdress - 491101BS","nautical dress in navy - 471104AT","nautical dress in red - 471104AF","nel floral chiffon dress - 471104XX","nicole print dress in brown - 491101AG","nude hooded top - 191105AB","one shoulder black panel dress - 491201AN","one shoulder mustard bodycon dress - 491202AE","one shoulder satin dress in black - 471104AJ","one shoulder satin dress in purple - 471104AK","open back dress - 471102AI","open back halter dress - 471011ZA","oversized asymmetrical dress - 471012AT","oversized black shirt - 191104AG","oversized circle sweater - 191105AO","oversized knit pullover - 191105AE","oversized knit top - 191110AA","parker white lace dress - 471002AL","pastel pink jumpsuit - 291101AB","peaches and cream colourblock dress - 491201AD","pearl and beads necklace - 791007AB","pearl and flowers necklace - 791111AA","pearl charm bracelet - 791101AH","pearl cluster necklace - 791107AN","pearl cluster ring - 791107AC","pearls and flowers necklace - 791107AM","petite: black peplum dress - 491107AH","petite: cissa grey dress - 471104AG","petite: eyelet & lace maxi - 491105AN","petite: floral silk dress - 491105AT","petite: jayne coral dress - 491105AK","petite: katy one shoulder dress - 491201AG","petite: ruffled bodycon dress - 491105AB","petite: shay tunic in pink - 191105AK","petite: teal bodycon dress - 491201AF","petite: waterfall bodycon dress - 471011AQ","pink and gold floral necklace - 791107AP","pink hair tie - 791110YY","pink rose ring necklace - 791107AE","pleated black skirt - 291107AC","pleated bodycon skirt with zip - 291008AL","pleated colourblock skirt - 251111AA","pleated cream shorts - 291202AE","pleated grey shorts - 291101AN","pleated halter maxi dress - 451104AA","pleated halter mini dress - 451104AB","pleated satin halter dress - 471011AG","pleated shoulder dress in mustard - 491201AI","pleated skirt in black - 251012AC","pleated strapless maxi dress - 451104AC","pleated strapless mini dress - 451104AD","premium: anne colourblock dress - 491105BH","premium: banded bodycon dress - 491102BY","premium: black corporate dress - 491105BG","premium: black work shift dress - 491110AD","premium: contrast wrap dress - 491102CA","premium: coral banded skirt - 291110AA","premium: draped black blazer - 191105AZ","premium: draped lace bodycon dress - 491110AK","premium: draped satin dress - 491102BZ","premium: embroidered prom dress - 491105BD","premium: embroidered silk tunic - 191105AX","premium: faux leather aviator jacket - 191110AC","premium: grey peplum sheath - 491110AF","premium: houndstooth career dress - 491102BX","premium: lace applique evening dress - 491105BE","premium: lace applique satin dress - 491110AL","premium: layered dress in black - 491105BC","premium: layered dress in cream  - 491105BB","premium: monochrome banded bodycon dress - 491110AC","premium: one shoulder banded bodycon dress - 491110AE","premium: one shoulder pleated maxi dress - 491110AA","premium: paneled fitted dress - 491110AJ","premium: sequined black bodycon skirt - 291110AB","premium: silk watercolour print dress - 491110AM","premium: sleeveless red colourblock dress - 491110AB","premium: sleeveless shift in cream - 491110AI","premium: strapless banded bodycon dress - 491110ZA","premium: sweetheart bow dress - 491110AG","premium: zipped cardigan in khaki - 191110AE","pride racerback vest in black - 191010BD","pride racerback vest in white - 191010BE","printed chiffon dress in monochrome - 491011AT","printed heart tee - 191102BH","printed pleated strapless dress - 491105AD","pussybow blouse in cream - 151111AC","pussybow blouse in navy - 151111AB","pussybow satin dress - 451012AE","racerback swing dress in black - 471102AN","racerback swing dress in purple - 471102AM","rae chiffon dress - 491101AC","rae crochet blouse - 191102AZ","rae cut out dress - 471001AQ","raw grey sweater - 191102BP","red strapless layered dress - 471102AQ","regina crochet blouse - 191102BA","renae cutout dress - 471102AH","ripped leggings - 291102AI","rose beaded necklace - 791002AC","rose tote bag - 791107AR","rosette long necklace - 791101AM","ruched floral chiffon dress - 471104AE","ruched shoulders dress in black - 471105AG","ruffled black dress - 471011AD","ruffled bodycon dress - 491107AC","ruffled floral dress - 691007AI","ruffled strap bodycon dress in black - 491105AF","sancia crochet dress - 491010AO","satin and floral dress - 471104AM","satin and lace prom dress - 471111AB","satin bodycon dress - 471105AM","satin peplum dress in gold - 491105AV","save the earth graphic tee - 191105AA","scalloped lace black tank - 191202AE","scarlet one shoulder dress - 471101AB","scoopneck tank in black - 151107AD","sequined cream blouse - 191202AD","serra day dress - 491101AI","sheer chiffon blouse  - 151107AB","sheer chiffon wrap tunic - 151107AC","sheer crocheted cardigan - 191105AL","sheer lace cardigan - 151107AA","sheer midi chiffon skirt - 251107AA","sheer navy chiffon blouse  - 191202AC","silver beaded necklace - 791104AD","silver butterfly print tank - 191101AM","silver multi-chain necklace - 791008AF","skull printed silk-blend scarf - 791110AA","sleeveless black tank - 171109AA","sleeveless lace dress in white - 471106AC","sleeveless mesh panel dress - 491107AB","sleeveless pleated dress - 471111AA","sleeveless structured dress in orange - 451111AA","smocked eyelet & lace maxi - 491105AM","smocked eyelet dress - 491102AN","snow white locket necklace - 791112AG","soft knit shrug in hot pink - 191110AD","sophie summer dress - 491105AP","spring bangles set - 791107AI","spring fling necklace - 791111AE","strapless black party dress - 491101AH","strapless black slip - 491009AS","strapless pink and lace dress - 451111AC","strapless satin and chiffon dress - 471011AL","stretch knee length skirt in navy - 271110AA","striped little romper - 291008AF","striped stretch vest - 191010AK","structured large tote in black - 791112AO","structured large tote in khaki - 791112AP","structured paneled dress - 491201AL","studded flared shorts - 291011AA","sunny ribbed racerback - 191009AG","super low distressed denim mini - 291102AH","test product 2 - TEST2","tiered chiffon maxi - 491102BF","tiered crochet maxi - 491105AS","tri-chain necklace - 791101AL","twist back mini dress - 471012AR","twist back tunic - 171012AC","twisted ring necklace - 791111AF","vera pastel dress - 451111AE","vintage camera necklace - 791111AG","white and gold floral necklace - 791107AO","white denim shorts - 291101AE","white lace swing dress - 451111AB","white open knit cardigan - 191105AV","wise gold hare necklace - 791104AB","woven clutch in small - 791112AL","zebra printed silk-blend scarf - 791005AB","zipped bodycon dress - 491010AS"
];
