var aCart = new Array();
var aCol = new Array();
var aSearch = new Array();
var aT2 = new Array();
var aBrands = new Array();
var aPrice = new Array();
var df = "";
var navelem = "";
var hmenu = -1;
var hcounter = 0;
var keysearch = false;
var navpage = -1;

function loadsearch() {
    // load data for search dropdowns
    // hard-coded for now, but header needs to pass in a data string of defined collections,
    // which will be used to modify aSearch and aPrice hi/low values
    // collection data strings will determine, eg, whether we call glink(-1,11...) or glink(-1,12...)

    // menu text / xtype / lower control code
    //  lower control code:
    //      -1=dropdown, disabled and cleared
    //      0=dropdown, disabled - run search immediately
    //      1=dropdown, enabled
    //      0=textbox/Go for keywords
    aSearch[0] = new snode("Key Words",3,2,-1,1);
    aSearch[1] = new snode("Brand",1,1,-1,1);
    aSearch[2] = new snode("Price Range",2,1,-1,1);
    aSearch[3] = new snode("Sale Items",4,0,-1,0);
    aSearch[4] = new snode("New Items",5,0,-1,0);
    aSearch[5] = new snode("Spotlight Items",6,0,-1,0);
    aSearch[6] = new snode("Special Collections",8,1,-1,1);

    aPrice[0] = new pricenode("Under $25",1);       // code 1 is effectively rem'd out for now
    aPrice[1] = new pricenode("Under $50",1);
    aPrice[2] = new pricenode("Under $75",1);
    aPrice[3] = new pricenode("Under $100",1);
    aPrice[4] = new pricenode("Under $150",1);
    aPrice[5] = new pricenode("Under $200",1);
    aPrice[6] = new pricenode("Under $250",1);
    aPrice[7] = new pricenode("Under $300",1);
    aPrice[8] = new pricenode("Under $350",1);
    aPrice[9] = new pricenode("$0 - $25",2);
    aPrice[10] = new pricenode("$25 - $50",2);
    aPrice[11] = new pricenode("$50 - $75",2);
    aPrice[12] = new pricenode("$75 - $100",2);
    aPrice[13] = new pricenode("$100 - $150",2);
    aPrice[14] = new pricenode("$150 - $200",2);
    aPrice[15] = new pricenode("$200 - $250",2);
    aPrice[16] = new pricenode("$250 - $300",2);
    aPrice[17] = new pricenode("$300 - $350",2);
    aPrice[18] = new pricenode("$350 +",2);
}

function pricenode(a1,a2) {
    this.text = a1;
    this.pricetype = a2;
}

function snode(a1,a2,a3,a4,a5) {
    this.text = a1;
    this.syscode = a2;
    this.smode = a3;
    this.cid = a4;      //collection id,  passed in for client-defined searches, type 9
    this.sublist = a5;      // needs search2 ctrl enabled
    this.selected = false;
}

function chkmsg() {
    // check for signin error conditions
    var h = afx[0].tableh;
    if (h) {
        var h = parseInt(h);
        afx[0].tableh=0;
        if (h>0) {
            switch (h) {
                case 1:
                    // signin not recognized
                    gosignin(h);
                    break;
                case 4:
                    // duplicate email in emails list
                    email(h);
                    break;
                case 5:
                    // successful join of email, thanks
                    email(h);
                    break;
            }
        }
    }
}

function t2node(position,linkid,linktype,onimage,offimage) {
    // called from categoryoverview.asp
    this.position = position;
    this.linkid = linkid;
    this.linktype = linktype;
    this.onimage= onimage;
    this.offimage = offimage;
}

function catnode(catid, level, category, imageid, description, imagecaption) {
    // called from categoryoverview.asp
    this.catid = catid;
    this.level = level;
    this.category = category;
    this.imageid = imageid;
    this.description = description;
    this.imagecaption = imagecaption;
    this.clickable = -1;
}

function rpgo(i) {
    afx[0].xid = "";
    saveexp(2,afx[0].catid,i,0);
}

function catgo(i) {
    saveexp(0,i,0,0);
}

function divshow(catid) {
    if (timeron==1) {
        clearTimeout(dtimer);
    }
    if (divisup==0) {
        timeron = 1;
        dtimer = setTimeout("divshowx("+catid+")",100);
    } else {
        divshowx(catid);
    }
}

function pagepop(pgidx) {
    var xmp = new getObj("pbullet" + pgidx);
    if (xmp.obj) {
        xmp.obj.src = navbulletover;
    }
    xmp = new getObj("pg" + pgidx);
    if (xmp.style && colorpagelinkrollover) {
        xmp.style.color = colorpagelinkrollover;
    }
    if (timeron==1) {
        clearTimeout(dtimer);
    }
    if (divisup==0) {
        timeron = 1;
        dtimer = setTimeout("pagepopx("+pgidx+")",100);
    } else {
        pagepopx(pgidx);
    }
}

function pageout(pgidx) {
    var isnavpage = (navpage==aP[pgidx].pageid);
    var xmp = new getObj("pbullet" + pgidx);
    if (xmp.obj) {
        xmp.obj.src = (isnavpage)?navbulletover:navbulletimg;
    }
    xmp = new getObj("pg" + pgidx);
    if (xmp.style && colorpagelink) {
        xmp.style.color = (isnavpage)?colorpagelinkrollover:colorpagelink;
    }
}

function regpop() {
    var xmp = new getObj("rtitle");
    if (xmp.obj) {
        xmp.style.cursor = (is.pointer)?"pointer":"hand";
    }
    xmp = new getObj("rtitletxt");
    if (xmp.obj) {
        xmp.style.color = colornavrollover;
    }

    if (timeron==1) {
        clearTimeout(dtimer);
    }
    if (divisup==0) {
        timeron = 1;
        dtimer = setTimeout("collpopx(1)",100);
    } else {
        collpopx(1);
    }
}

function regout() {
    var xmp = new getObj("rtitletxt");
    if (xmp.obj) {
        xmp.style.color = colortextlight;
    }
}

function affpop() {
    var xmp = new getObj("atitle");
    if (xmp.obj) {
        xmp.style.cursor = (is.pointer)?"pointer":"hand";
    }
    xmp = new getObj("atitletxt");
    if (xmp.obj) {
        xmp.style.color = colornavrollover;
    }

    if (timeron==1) {
        clearTimeout(dtimer);
    }
    if (divisup==0) {
        timeron = 1;
        dtimer = setTimeout("collpopx(0)",100);
    } else {
        collpopx(0);
    }
}

function affout() {
    var xmp = new getObj("atitletxt");
    if (xmp.obj) {
        xmp.style.color = colortextlight;
    }
}

function divshowx(catid) {
    var df = document.form1;
    if (catid) {
        var bgColor = '#FFFFFF';
        var pclass = 'navdivprod'
        var border = 0;
        var padding = 2;
        var xOffset = 0;
        var yOffset = 0;
        var Font = 'face="Verdana, Arial, Helvetica, sans-serif" size=2';

        var xmp = new getObj("popup");
        if (!xmp.obj) {
            return;
        }
        var opop = xmp.obj;

        var span1 = "", span2 = "", titlespan1 = "", titlespan2 = "", borderstyle = "";
        var textcolor = (pagetheme1.length > 0)?pagetheme1:colorflyouttext;
        var rollcolor = (pagetheme6.length > 0)?pagetheme6:sitetheme6;
        var titlecolor = (pagetheme1.length > 0)?pagetheme1:sitetheme1;
        if (textcolor != colordark) {
            span1 = "<span style='color:" + textcolor + ";'>";
            span2 = "</span>";
            titlespan1 = "<span style='color:" + colornavtitletext + ";'>";
            titlespan2 = "</span>";
            borderstyle = "1px solid " + textcolor;
        }

        var npmsg = noproductmsg;
        var table = "", catname = "", tblcontent = "";
        var catidx=-1;
        for (var i=0;i<aC.length;i++) {
            if (aC[i].catid == catid) {
                catidx = i;
                catname = aC[i].catname;
                isclickable = (aC[i].subcatcount>0 || aC[i].prodcount>0);
                hasproducts = (aC[i].prodcount>0);
                hassubs = (aC[i].subcatcount>0);
                npmsg += "<b>\"" + TextDecode(aC[i].catname) + "\"</b>";
                break;
            }
        }

        var haveid = 0;
        var dname="";
        for (var i=0;i<aI.length;i++) {
            if (aI[i].catid != catid) {
                if (haveid > 0) {
                    break;
                } else {
                    continue;
                }
            }
            haveid += 1;
            dname = (aI[i].dispname.length>0)?aI[i].dispname:aI[i].prodname;
            tblcontent += "<tr><td width='84%' bgcolor='#FFFFFF' id='p"+i+"' class='"+ pclass +"' onMouseOver='pshow("+i+",0,\"" + rollcolor +"\")' onMouseOut='phide("+i+",0)' onclick='pgo("+i+",0)'>" + span1 + TextDecode(dname) + span2 + "</td><td width='"+vnavbuywidth+"' align='center' bgcolor='#FFFFFF' id='b"+i+"' class='navdivbuy' onMouseOver='pshow("+i+",1,\"" + rollcolor +"\")' onMouseOut='phide("+i+",1)' onclick='pgo("+i+",1)'></td></tr>";
        }
        tblcontent += "</table>";

        var shownpmsg = false;
        if (!hasproducts) {
            if (!isclickable && !hassubs) {
                // no products, no products below, no subcategories, show msg
                shownpmsg = true;
                table += "<table bgcolor='#C0C0C0' border='"+ border +"' cellpadding='"+ padding +"' cellspacing='1' width='100%'><tr><td bgcolor='#FFFFFF' class='noprodmsgtext'>" + span1 + npmsg + span2 + " </td></tr></table><a href='#' id='popbtm' </a>";
            } else {
                divhide();
                return;
            }
        }
        if (!shownpmsg) {
            table += "<table bgcolor='#C0C0C0' border= "+ border +" cellpadding="+ padding +" cellspacing=1 width='100%'><tr><td bgcolor='"+titlecolor +"' align='center' class='navdivtitle'><span class='dblcolon'>::</span>&nbsp;&nbsp;" + titlespan1 + TextDecode(catname) + titlespan2 + "&nbsp;&nbsp;<span class='dblcolon'>::</span></td><td bgcolor='"+titlecolor +"' align='center' class='navdivtitle'>"+titlespan1+buyword+titlespan2+"</td></tr>";
            table += tblcontent;
        }

        xc = "xc" + catidx;
        var xxc = new getObj(xc);
        if (xxc.obj) {
            xctop = 0;
            xcobj = xxc.obj;
            while (xcobj.offsetParent) {
                xctop += xcobj.offsetTop;
                xcobj = xcobj.offsetParent;
            }
        } else {
            xc = "xct" + catidx;
            var xxc = new getObj(xc);
            if (xxc.obj) {
                xctop = 0;
                xcobj = xxc.obj;
                while (xcobj.offsetParent) {
                    xctop += xcobj.offsetTop;
                    xcobj = xcobj.offsetParent;
                }
            }
        }
        ey = xctop;
        if (haveid == 0) {
            opop.className = "navdiv2";
        } else {
        opop.className = "navdiv1";
            ey = ey - 26;       // position slightly higher to align first row with mouse position
        }
        opop.innerHTML = table;
         if (borderstyle.length > 0) {
            xmp.style.border = borderstyle;
         }
	leftshift = 0;
        t1t = new getObj("t1tab"); 
        if (t1t.obj) 
          leftshift = t1t.obj.offsetLeft;
        xmp.style.left = vnavdivleft + leftshift;       // defined in config.js
         afx[0].poptop = ey;

         popupposition(opop);
        xmp.style.top  = afx[0].poptop;
        xmp.style.visibility = "visible";
     }
    divisup = 1;
    timeron = 0;
}

function pagepopx(pgidx) {
    // vertical page flyouts
    if (pgidx || pgidx==0) {

        bgColor = '#FFFFFF';
        pclass = 'navdivprod'
        border = 0;
        padding = 2;
        xOffset = 0;
        yOffset = 0;
        Font = 'face="Verdana, Arial, Helvetica, sans-serif" size=2';

        var xmp = new getObj("popup");
        if (!xmp.obj) {
            return;
        }
        var opop = xmp.obj;
        var span1 = "", span2 = "", titlespan1 = "", titlespan2 = "", borderstyle = "";
        var titlestr = aP[pgidx].pagename;
        var textcolor = (pagetheme1.length > 0)?pagetheme1:colorflyouttext;
        var rollcolor = (pagetheme6.length > 0)?pagetheme6:sitetheme6;
        var titlecolor = (pagetheme1.length > 0)?pagetheme1:sitetheme1;
        if (textcolor != colordark) {
            span1 = "<span style='color:" + textcolor + "'>";
            span2 = "</span>";
            titlespan1 = "<span style='color:" + colornavtitletext + "'>";
            titlespan2 = "</span>";
            borderstyle = "1px solid " + textcolor;
        }
//      alert(textcolor + "\n" + rollcolor + "\n" + titlecolor + "\n" + titlespan1 + "\n" + borderstyle);
        var table = "", bigTable = "", tblcontent = "", pglist = "";
        var pgcount = 0;
        var pgid = aP[pgidx].pageid;
        pglist = aP[pgidx].pagelistv;
        if (pglist.length > 0) {
            apg = pglist.split(",");
            for (var i=0;i<apg.length;i++) {
                xpg = apg[i];
                pgname = "";
                for (var j=0;j<aP.length;j++) {
                    if (aP[j].pageid == xpg) {
                        pgname = aP[j].pagename;
                        pgcount += 1;
                        break;
                    }
                }
                if (pgname.length > 0) {
                    tblcontent += "<tr><td bgcolor='#FFFFFF' id='p"+i+"' class='"+ pclass +"' onMouseOver='pshow("+i+",0,\"" + rollcolor +"\")' onMouseOut='phide("+i+",0)' onclick='showpage("+xpg+"," + pgid +")'>" + span1 + TextDecode(pgname) + span2 + "</td></tr>";
                }
            }
            tblcontent += "</table><a href='#' id='popbtm' </a>";
        }
        table += "<table bgcolor='#C0C0C0' border= "+ border +" cellpadding="+ padding +" cellspacing=1 width='100%'><tr><td bgcolor='"+titlecolor+"' align='center' class='navdivtitle'><span class='dblcolon'>::</span>&nbsp;&nbsp;" + titlespan1 + TextDecode(titlestr) + titlespan2 + "&nbsp;&nbsp;<span class='dblcolon'>::</span></td></tr>";
        table += tblcontent;

        pg = "pg" + pgidx;
        pgtop = 0;
        var xpgobj = new getObj(pg);
        if (xpgobj.obj) {
            pgobj = xpgobj.obj;
            while (pgobj.offsetParent) {
                pgtop += pgobj.offsetTop;
                pgobj = pgobj.offsetParent;
            }
            ey = pgtop-30;
        }
        if (pgcount > 0) {
            opop.className = "navdiv1";
            opop.innerHTML = table;
             if (borderstyle.length > 0) {
                opop.style.border = borderstyle;
             }
 	     leftshift = 0;
             t1t = new getObj("t1tab"); 
             if (t1t.obj) 
             leftshift = t1t.obj.offsetLeft;
            xmp.style.left = vnavdivleft + leftshift;       // defined in config.js
            afx[0].poptop = ey;
            popupposition(opop);
            xmp.style.top  = afx[0].poptop;
            xmp.style.visibility = "visible";
        } else {
            divhide();
        }
    }
    if (pgcount > 0) {
        divisup = 1;
        timeron = 0;
    }
}

function collpopx(xtype) {
    // vertical collection page flyouts
    // xtype: 0=affiliate, 1=registry

    xtype = (xtype==0)?5:4;
    bgColor = '#FFFFFF';
    pclass = 'navdivprod'
    border = 0;
    padding = 2;
    xOffset = 0;
    yOffset = 0;
    Font = 'face="Verdana, Arial, Helvetica, sans-serif" size=2';

    var xmp = new getObj("popup");
    if (!xmp.obj) {
        return;
    }
    var opop = xmp.obj;

    var span1 = "", span2 = "", titlespan1 = "", titlespan2 = "", borderstyle = "";
    var titlestr = (xtype==5)?"Affiliates":"Registries";
    var textcolor = (pagetheme1.length > 0)?pagetheme1:colorflyouttext;
    var rollcolor = (pagetheme6.length > 0)?pagetheme6:sitetheme6;
    var titlecolor = (pagetheme1.length > 0)?pagetheme1:sitetheme1;
    if (textcolor != colordark) {
        span1 = "<span style='color:" + textcolor + "'>";
        span2 = "</span>";
        titlespan1 = "<span style='color:" + colortextdark + "'>";
        titlespan2 = "</span>";
        borderstyle = "1px solid " + textcolor;
    }
    var table = "", bigTable = "", tblcontent = "", pglist = "";
    var pgcount = 0;
    var onc = (xtype==5)?"showaff":"showreg";
    for (var i=0;i<aX.length;i++) {
        xpg = aX[i].xid;
        pgname = "";
        if (aX[i].xtype == xtype) {
            pgname = aX[i].xname;
            pgcount += 1;
            tblcontent += "<tr><td bgcolor='#FFFFFF' id='p"+i+"' class='"+ pclass +"' onMouseOver='pshow("+i+",0,\"" + rollcolor +"\")' onMouseOut='phide("+i+",0)' onclick='"+onc+"("+xpg+")'>" + span1 + TextDecode(aX[i].xname) + span2 + "</td></tr>";
        }
    }
    tblcontent += "</table><a href='#' id='popbtm' </a>";

    table += "<table bgcolor='#C0C0C0' border= "+ border +" cellpadding="+ padding +" cellspacing=1 width='100%'><tr><td bgcolor='"+titlecolor+"' align='center' class='navdivtitle'><span class='dblcolon'>::</span>&nbsp;&nbsp;" + titlespan1 + TextDecode(titlestr) + titlespan2 + "&nbsp;&nbsp;<span class='dblcolon'>::</span></td></tr>";
    table += tblcontent;

    pg = (xtype==5)?"varow":"vrrow";
    pgtop = 0;
    var xpgobj = new getObj(pg);
    if (xpgobj.obj) {
        pgobj = xpgobj.obj;
        while (pgobj.offsetParent) {
            pgtop += pgobj.offsetTop;
            pgobj = pgobj.offsetParent;
        }
        ey = pgtop-22;
    }

    if (pgcount > 0) {
        opop.className = "navdiv1";
        opop.innerHTML = table;
         if (borderstyle.length > 0) {
            opop.style.border = borderstyle;
         }
	leftshift = 0;
        t1t = new getObj("t1tab"); 
        if (t1t.obj) 
          leftshift = t1t.obj.offsetLeft;
        xmp.style.left = vnavdivleft + leftshift;       // defined in config.js
        afx[0].poptop = ey;
        popupposition(opop);
        xmp.style.top  = afx[0].poptop;
        xmp.style.visibility = "visible";
    } else {
        divhide();
    }
    if (pgcount > 0) {
        divisup = 1;
        timeron = 0;
    }
}

function popupposition(popo) {
    var popt = parseInt(afx[0].poptop);
    var popp = popo.scrollHeight;
    var bottomedge = popt + popp;
    var ph = findLivePageHeight();
    if (document.body.scrollTop < (bottomedge - ph)) {
        var diff = (bottomedge - ph) - document.body.scrollTop;
        diff = Math.max(diff,0);
        afx[0].poptop = popt - diff;
    }
}

function findLivePageHeight() {
    if (window.innerHeight != null) {
        return window.innerHeight;
    }
    if (document.body.clientHeight != null) {
        return document.body.clientHeight;
    }
    return screen.height;
}

function findLivePageWidth() {
    if (window.innerWidth != null) {
        return window.innerWidth;
    }
    if (document.body.clientWidth != null) {
        return document.body.clientWidth;
    }
    return (null);
}

function divhide() {
    var xmp = new getObj("popup");
    if (!xmp.obj) {
        return;
    }
    xmp.style.visibility = "hidden";
    xmp.style.top=10;                           // move somewhere safe

    divisup = 0;
    if (timeron==1) {
        clearTimeout(dtimer);
        timeron = 0;
    }
}

function hdivhide() {
    var xmp = new getObj("hpopup");
    if (!xmp.obj) {
        return;
    }
    xmp.style.visibility = "hidden";
    xmp.style.left = 10;        // move somewhere safe to prevent hitting  it on window resize,
                                                // and triggering scrollbars

    if (hmenu >= 0) {
        var oimg = new getObj(aHN[hmenu].imgname);
        if (oimg.obj) {
            var opageid = aHN[hmenu].pageid;
            if (afx[0].hpage>-1) {
                if (hmenu == afx[0].hpage) {
                    oimg.obj.src = aHN[hmenu].oversrc;
                } else {
                    oimg.obj.src = aHN[hmenu].src;
                }
            } else {
                oimg.obj.src = aHN[hmenu].src;
            }
        }
    }
    hdivisup = 0;
    var oname="", src="";
    for (var k=0;k<aHN.length;k++) {
        if (aHN[k].divup==1) {
            aHN[k].divup = 0;
            oname = "hn" + k;           //aHN[k].imgname;
            src = aHN[k].src;
            if (afx[0].hpage>-1) {
                if (k == afx[0].hpage) {
                    src = aHN[k].oversrc;
                }
            }
            changeImages(oname,src);
        }
    }
}

function hmreport() {
    // called from header, debug
}

function hm_over(xidx) {
    var oname = "hn" + xidx;
    var txtlink = aHN[xidx].istext;
    var oversrc = aHN[xidx].oversrc;
    var hpmvalue = (IsNumeric(aHN[xidx].pageid))?aHN[xidx].pageid:"'" + aHN[xidx].pageid + "'";
    if (hdivisup==1) {
        hdivhide();
    }
    if (txtlink) {
        var o = new getObj(oname);
        if (o.style) {
            o.style.color = colornavrollover;
        }
    } else {
        changeImages(oname,oversrc);
    }
    hpmenu(hpmvalue,xidx);
}

function hm_out(zidx) {
    if (hdivisup==0) {
        var oname = "hn" + zidx;
        var txtlink = aHN[zidx].istext;
        var src = aHN[zidx].src;
        var oversrc = aHN[zidx].oversrc;
        var newsrc = src;
        if (afx[0].hpage == zidx) {
            newsrc = oversrc;
        }
        if (txtlink) {
            var o = new getObj(oname);
            if (o.style) {
                o.style.color = colortextlight;
            }
        } else {
            changeImages(oname,newsrc);
        }
    }
}

function phide(idx,pmode) {
    if (pmode==0) {
        var pid = "p" + idx;
        var bid = "b" + idx;
        var hpid = "hp" + idx;
        var xpid = new getObj(pid);
        var xbid = new getObj(bid);
        var xhpid = new getObj(hpid);
        if (idx >= 0) {
            if (xpid.obj) {
                xpid.style.backgroundColor = "FFFFFF";
                if (xbid.obj) {
                    xbid.obj.innerHTML = "";
                }
            }
            if (xhpid.obj) {
                xhpid.style.backgroundColor = "FFFFFF";
            }
        }
    }
    if (pmode==1) {
        pid = "b" + idx;
        var xpid = new getObj(pid);
        if (idx >= 0 && xpid.obj) {
            xpid.style.backgroundColor = "FFFFFF";
            xpid.obj.innerHTML = "";
        }
    }
}

function pshow(idx,pmode,rollcolor) {
// pmode = 0 is rollover of the product name in the popup nav
// pmode = 1 is rollover of the buy word

    if (!rollcolor) {
        var rollcolor = colorlight;
    }
    var bid = "b" + idx;
    var xbid = new getObj(bid);
    if (pmode==0) {
        var pid = "p" + idx;
        var hpid = "hp" + idx;
        var xpid = new getObj(pid);
        var xhpid = new getObj(hpid);
        if (xpid.obj) {
            xpid.style.backgroundColor = rollcolor;
            xpid.style.cursor = (is.pointer)?"pointer":"hand";
            if (xbid.obj) {
//              xbid.obj.innerHTML = buyword;
            }
        }
        if (xhpid.style) {
            xhpid.style.backgroundColor = rollcolor;
            xhpid.style.cursor = (is.pointer)?"pointer":"hand";
        }
    }
    if (pmode==1) {
        if (xbid.obj) {
            xbid.obj.innerHTML = buyword;
        }
        if (xbid.style) {
            xbid.style.backgroundColor = rollcolor;
            xbid.style.cursor = (is.pointer)?"pointer":"hand";
        }
    }
}

function pgo(idx,gomode) {
    catid = aI[idx].catid;
    prodid = aI[idx].prodid;
    if (gomode==1) {
        // to order page for this product
        saveexp(2,catid,prodid,0);
    } else {
        // to main page with this product
        saveexp(1,catid,prodid,0);
    }
}

function gl(a1,a2,a3,a4,a5,a6,a7,a8,a9) {
    var argv = gl.arguments;    // array of arguments
    var args = argv.length;     // number of arguments
    if (window.name=="previewwin") {
        afx[0].preview = 1;
    }
    switch (a1) {
        case 0:
            showcollection(a1,a2,a3,a4,a5);
            break;
        case 1:
            showcollection(a1,a2,a3,a4);
            break;
        case 2:
            showitem(a1,a2,a3);
            break;
        case 3:
            var ispop = false;
            if (a3 && a4) {
                if (a3 > 0 && a4 > 0) {
                    ispop = true;
                    showpopup(a1,a2,a3,a4);
                }
            }
            if (ispop==false) {
                if (a3) {
                    showpage(a2,a3);
                } else {
                    showpg(a2);
                }
            }
            break;
        case 4:
            showpopup(a1,a2,a3,a4);
            break;
        case 5:
            showpopup(a1,a2,a3,a4);
            break;
        case 6:
            break;
        case 7:
            break;
        case 8:
            break;
        case 9:
            afx[0].tableh = -1;
            submitform();
            break;
        case 10:
            showpg(a2,a3,a4);
            break;
        case 11:
            showcol(a2);        // pass collection id
            break;
        case 12:
            submitform();
            break;
    }
}

function showcol(a1) {
    // will call specific defined collection - a1=collection id
    // find it in aX cache to get characteristics to pass into showcollection()
    for (var i=0;i<aX.length;i++) {
        if (aX[i].xid==a1) {
            var xstyle = aX[i].xstyle;
            var xmethod = aX[i].xmethod;
            var xtype = aX[i].xtype;
            var xcall=1;
            if (xtype==4) {
                xcall=11;
            }
            if (xmethod=="list") {
                xmethod += a1;                      // produces "listxxx" where "xxx"=reg id
                showcollection(xstyle,"0."+xcall + "," + xmethod + "!");
            } else {
                showcollection(xstyle,xmethod);
            }
            break;
        }
    }
}

function showcollection(a1,a2,a3,a4,a5) {
    // some kind of collection - always calls collections page
    // see docs under gl() for arguments
    if (!a3) {
        a3="";
    }
    if (!a4) {
        a4=0;
    }
    if (!a5) {
        a5=0;
    }
    var a2type = typeof(a2);
    var a3type = typeof(a3);
    var a4type = typeof(a4);
    var a5type = typeof(a5);
    afx[0].xstyle = a1;
    afx[0].xid = "";
    afx[0].catid = -1;
    switch (a1) {
        case 0:
            // items
            if (a2type=="number") {
                // catid
                afx[0].gc = a2;
                if (a3type=="number") {
                    // prodid
                    afx[0].gp = a3;
                    if (a4type=="string") {
                        // directive
                        afx[0].xid = a4;
                        afx[0].cxcxt = a5;
                    } else {
                        afx[0].cxcxt = a4;
                    }
                } else {
                    afx[0].gp = -1;
                    afx[0].xid = a3;
                    afx[0].cxcxt = a4;
                }
            } else {
                // collection directive, no catid specified, show all matching items
                afx[0].gc = -1;
                afx[0].gp = -1;
                afx[0].catid = -1;
                afx[0].xid = a2;
            }
            break;
        case 1:
            // show category icons
            afx[0].gc = -1;
            afx[0].gp = -1;
            afx[0].xid = a2;        // directive needs to be in a2
            break;
    }
    afx[0].act = "../catalog/if.asp";
    submitform();
}

function showitem(a1,a2,a3) {
    if (!a3) {
        a3=0;
    }
    afx[0].act = "../catalog/id.asp";
    afx[0].gp = a2;
    var foundit = false;
    for (var i=0;i<aI.length;i++) {
        if (aI[i].prodid == a2) {
            afx[0].gc = aI[i].catid;
            afx[0].cxcxt = a3;
            foundit = true;
            break;
        }
    }
    if (foundit==true) {
        submitform();
    }
}

function glink(a1,a2,a3,a4) {
    switch (a2) {
        case 0:
            // unfiltered collection link
            gl(0,a1);
//          saveexp(1,a1,-1,0);
            break;
        case 1:
            // unfiltered collection link, show category featuring this item
            // look up product to find catid
            var ub = aI.length;
            for (var i=ub-1;i>-1;i--) {
                if (aI[i].prodid==a1) {
                    var catid = aI[i].catid;
//                  saveexp(1,catid,a1,0);
                    break;
                }
            }
            gl(0,catid,a1);
            break;
        case 2:
            // item link, show detail page for this one
            gl(2,a1);
//          var ub = aI.length;
//          for (var i=ub-1;i>-1;i--) {
//              if (aI[i].prodid==a1) {
//                  var catid = aI[i].catid;
//                  saveexp(2,catid,a1,0);
//                  break;
//              }
//          }
            break;
        case 3:
            // page link
            gl(3,a1,a3,a4);

if (false) {
            if (a4) {
                showpopup(a1,1,a3,a4);
            } else {
                if (a3) {
                    showhpage(a1,"-1."+a3);
                } else {
                    var testx = "," + a1 + ",";
                    var listv = "", listh = "", listb = "", listpt = "";
                    for (var i=0;i<aP.length;i++) {
                        if (aP[i].level==0) {
                            listv = "," + aP[i].pagelistv;
                            listh = "," + aP[i].pagelisth;
                            listb = "," + aP[i].pagelistb;
                            listpt = "," + aP[i].pagelistpt;
                            break;
                        }
                    }
                    var foundpage = 0;
                    if (listh.indexOf(testx) >= 0) {
                        foundpage = 1;
                        showhpage(a1);
                    } else {
                        if (listv.indexOf(testx) >= 0) {
                            foundpage = 1;
                            showpage(a1);
                        }
                    }
                    if (foundpage==0) {
                        var parentid = -1;
                        for (var i=0;i<aP.length;i++) {
                            listv = "," + aP[i].pagelistv;
                            listh = "," + aP[i].pagelisth;
                            listb = "," + aP[i].pagelistb;
                            listpt = "," + aP[i].pagelistpt;
                            parentid = aP[i].pageid;
                            if (listh.indexOf(testx) >= 0) {
                                showhpage(a1,parentid);
                                break;
                            } else {
                                if (listv.indexOf(testx) >= 0) {
                                    showpage(a1,parentid);
                                    break;
                                }
                            }
                        }
                    }
                }
            }
}
            break;
        case 4:
            // document
        gl(4,a1,a3,a4);
//      showpopup(a1,2,a3,a4);
            break;
        case 5:
            // gallery link - need code here
        gl(5,a1,a3,a4);
//          showpopup(a1,3,a3,a4);
            break;
        case 6:
            // external link
            break;
        case 7:
            // mailto
            break;
        case 8:
            // home
            showhpage();
            break;
        case 9:
            // history call - need code here - obsolete now?
            break;
        case 10:
            // affiliate page
        gl(10,a1);
            showpg(a1);
            break;
        case 12:
            // filtered category, featuring specific product
            var ub = aI.length;
            for (var i=ub-1;i>-1;i--) {
                if (aI[i].prodid==a1) {
                    var catid = aI[i].catid;
//                  saveexp(1,catid,a1,0);
                    break;
                }
            }
            gl(0,catid,a1,a3);
            break;
    }
}

function showpopup(typ,xid,h,w) {
    // note - a regular <a> tag with a "target=_blank" does not allow us (or our admin) to control
    // width and height of the new window. But a document, depending on its type, may get
    // hosted by the browser or may invoke a separate app, such as Excel. In that case does the
    // new window still get created, and must be removed? Test and see...
    if (!w) {
        var h = 400;        // apply defaults if not specified
        var w = 300;
    }
    switch (typ) {
        case 3:
            // page popup - host it in popup.asp
            var pfile = "../popup/popup.asp?xid=" + xid + "&cid=" + afx[0].clientid + "&w=" + w + "&h=" + h + "&b=" + bizname;
            var popwin = window.open(pfile,"popupwin","width="+w+",height=" + h + ",left=0,top=0,toolbar=no,scrollbars=yes,status=no,resizable");
            break;
        case 4:
            // xid holds document name
            var folder = "",docname="";
            for (var i=0;i<aD.length;i++) {
                if (aD[i].docid==xid) {
                    docname = aD[i].docname;
                    break;
                }
            }
            if (docname.length>0) {
                xid = docname.toLowerCase();
                if (xid.indexOf(".txt")>0) {
                    folder="txt/";
                }
                if (xid.indexOf(".doc")>0) {
                    folder="doc/";
                }
                if (xid.indexOf(".pdf")>0) {
                    folder="pdf/";
                }
                if (xid.indexOf(".xls")>0) {
                    folder="xls/";
                }
                var pfile = "../Client_Docs/" + folder + xid + "?w=" + w + "&h=" + h;
                var popwin = window.open(pfile,"popupwin","width="+w+",height=" + h + ",left=0,top=0,toolbar=no,scrollbars=yes");
            }
            break;
        case 5:
            // gallery - host it by itself in new window
            // xid holds name of gallery, eg "projects.asp"
            var folder = "",galname="";
            for (var i=0;i<aG.length;i++) {
                if (aG[i].galid==xid) {
                    galname = aG[i].galname;
                    break;
                }
            }
            if (galname.length>0) {
                xid = galname.toLowerCase();
                var wstr = "", hstr = "";
                if (w) {
                    wstr = "width="+w + ",";
                }
                if (h) {
                    hstr = "height="+h + ",";
                }
                var argstr = wstr + hstr + "left=0,top=0,toolbar=no,scrollbars=yes"
                var popwin = window.open("../gallery/" + xid + "?w=" + w + "&h=" + h,"popupwin",argstr);
            }
            break;
    }
}

function overlink(o,xmode) {
    var ostyle = (o.style)?o.style:o;
    ostyle.cursor = (is.pointer)?"pointer":"hand";
    ostyle.color = (xmode==1)?colorantrollover:colorantrollout;
}

function chghand(o) {
    var ostyle = (o.style)?o.style:o;
    ostyle.cursor = (is.pointer)?"pointer":"hand";
}

function nolink(o,xmode) {
    var ostyle = (o.style)?o.style:o;
    if (ostyle.cursor) {
        ostyle.cursor = "default";
    }
}

function DisplayClick(i) {
//function cnode(catname, catid, parentrow, catlevel, expflag, showflag, subcatcount, publish, imageid, prodcount, priority)
    var istr = i;
    if (i==-1) {
        // changing all
        for (var x=0; x < aC.length; x++) {
            aC[x].expflag = state;
            aC[x].showflag = state;
            if (aC[x].catlevel == 0) {
                aC[x].showflag = 1;
            }
        }
    } else {
        // expanding or collapsing one item
        var status = aC[i].expflag;
        var ilevel = aC[i].catlevel;
        var parent1row = aC[i].parentrow, parent2row = -1, parent1level = -1, parent2level = -1;
        if (parent1row >= 0) {
            parent2row = aC[parent1row].parentrow;
            parent1level = aC[parent1row].catlevel;
            if (parent2row >= 0) {
                parent2level =  aC[parent2row].catlevel;
            }
        }

        if (status==1) {
            // collapsing a single item
            for (var x=i; x < aC.length; x++) {
                if (x==i) {
                    aC[x].expflag = 0;
                    aC[x].showflag = 1;
                } else {
                    if (aC[x].catlevel > ilevel) {
                        aC[x].expflag = 0;
                        aC[x].showflag = 0;
                    } else {
                        break;
                    }
                }
            }
        } else {
            // expanding a single item
            var inchildren = 0, inchain = 0, xstr = -1;
            for (var x=0; x < aC.length; x++) {
                // cover the whole array, to collapse other sections while expanding this one
                xstr = x;
                var xlevel = aC[x].catlevel;
                switch (true) {
                    case (x==i):
                        // the item being expanded
                        inchildren = 1;
                        inchain = 1;
                        aC[x].expflag = 1;
                        aC[x].showflag = 1;
                        break;
                    case (x==parent1row || x==parent2row):
                        // one of its parents
                        inchain = 1;
                        inchildren = 0;
                        aC[x].expflag = 1;
                        aC[x].showflag = 1;
                        break;
                    case (inchain==0):
                        // non-related sections of the outline
                        if (xlevel == 0) {
                            aC[x].expflag = 0;
                            aC[x].showflag = 1;
                        } else {
                            aC[x].expflag = 0;
                            aC[x].showflag = 0;
                        }
                        inchildren = 0;
                        break;
                    case (xlevel==ilevel):
                        // on same level, in chain, so this is a sibling or cousin
                        if (xlevel == 0) {
                            aC[x].expflag = 0;
                            aC[x].showflag = 1;
                            inchain = 0;
                        } else {
                            thisparent = aC[x].parentrow;
                            expparent = (aC[thisparent].expflag==1)?true:false;
                            if (expparent) {
                                // a sibling - show collapsed
                                aC[x].expflag = 0;
                                aC[x].showflag = 1;
                            } else {
                                // a cousin, don't show
                                aC[x].expflag = 0;
                                aC[x].showflag = 0;
                            }
                        }
                        inchildren = 0;
                        break;
                    case (xlevel<ilevel):
                        // uncle - in chain, higher level, not parent - show collapsed
                        if (xlevel == 0) {
                            //detect end of chain
                            inchain = 0;
                        }
                        aC[x].expflag = 0;
                        aC[x].showflag = 1;
                        inchildren = 0;
                        break;
                    case (xlevel>ilevel):
                        thisparent = aC[x].parentrow;
                        if (aC[thisparent].expflag==1) {
                            // parent is expanded- show
                            aC[x].showflag = 1;
                            if (aC[x].prodcount>0) {
                                // has products, show collapsed
                                aC[x].expflag = 0;
                            } else {
                                if (aC[x].clickable) {
                                    // expand if clickable
                                    aC[x].expflag = 1;
                                } else {
                                    aC[x].expflag = 0;
                                }
                            }
                        } else {
                            aC[x].expflag = 0;
                            aC[x].showflag = 0;
                        }
                        break;
                }
            }
        }
    }
    Display();

    var scrollit = 0;
    if (i>=0) {
        if (status==0) {
            // expanding a large submenu?
            var scrolltarget = 0;
            var xid="xtbl"+aC[i].catid;
            var xobj = new getObj(xid);
            if (xobj.obj) {
                scrollit = 0;
                var xht = xobj.obj.offsetHeight;        // height of clicked table row
                var xt = getTop(xobj.obj);              // its position
                var xmenuht = (aC[i].subcatcount+1) * xht;  // ht of submenu (+1 row)
                var ch = document.body.clientHeight;
                if (xmenuht >= ch) {
                    // too big -scroll menu to top
                    scrollit = 1;
                    scrolltarget = xt;
                } else {
                    // is menu bottom out of sight?
                    var xbtm = xt + xmenuht;
                    if (xbtm > (document.body.scrollTop + ch)) {
                        var diff = xbtm - (document.body.scrollTop + ch);
                        // scroll enough to show
                        scrollit = 1;
                        scrolltarget = (document.body.scrollTop + diff);
                    } else {
                        scrollit = 0;
                    }
                }
                if (scrollit==1) {
                    document.body.scrollTop = scrolltarget;
                }
            }
        }
    }
}

function Display(force) {
    if (!force) {
        var force=0;
    }
    if (window.name.length==0) {
        window.name = "main";
    }
    var xc = new getObj("xcell");
    if (aC.length==0) {
        makenav();
    }
    var df = document.form1, xlev = 0, iwidth = 0, x = 0, bgstr = "", bgstr2 = "", cvn = "", catid = -1;
    var xstr = "<table id='vnavtbl' name='vnavtbl' width='100%' cellpadding='0' cellspacing='0' border='0'>";
    var havebulletimg = (navbulletimg.length > 0);
    catid = parseInt(afx[0].catid);

    if (force==1) {
        var catrow = -1, prow=-1, prow2=-1, xcatid=-1;
        for (var i=0; i<aC.length; i++) {
            if (aC[i].catid == catid) {
                catrow = i;
                prow = aC[i].parentrow;
                prow2 = aC[prow].parentrow;
                break;
            }
        }

        for (var i=0; i<aC.length; i++) {
            xcatid = aC[i].catid;
            if (xcatid == catrow || xcatid==prow || xcatid==prow2) {
                if (xcatid == catrow ) {
                    aC[i].showflag = 1;
                    aC[i].expflag = 1;
                }
            } else {
                if (aC[i].catlevel == 0) {
                    aC[i].showflag = 1;
                    aC[i].expflag = 0;
                } else {
                    aC[i].expflag = 0;
                    if (aC[i].parentrow==prow || aC[i].parentrow==prow2) {
                        aC[i].showflag = 1;
                    } else {
                        aC[i].showflag = 0;
                    }
                }
            }
        }
    }

    usetheme = (afx[0].cvnav.length>0);
    pagetheme1 = "";
    pagetheme2 = "";
    pagetheme3 = "";
    pagetheme4 = "";
    pagetheme5 = "";
    pagetheme6 = "";
    // color themes have 6 colors specified, called cvn1-6, 1 is darkest.
    // vertical nav uses colors 2,3 & 4. These can override the default values,
    // specified in config.js, of colorvnav1, colorvnav2, & colorvnav3.
    if (usetheme) {
        // if document has a cvnav hidden var, it is the color theme settings.
        var acv = afx[0].cvnav.split(",");
        pagetheme1 = acv[0];
        pagetheme2 = acv[1];
        pagetheme3 = acv[2];
        pagetheme4 = acv[3];
        pagetheme5 = acv[4];
        pagetheme6 = acv[5];
    }
    var symbol = "";
    var oncat = 0;
    if (showcatalognav) {
        for (var i=0; i<aC.length; i++) {
            if (aC[i].showflag==1) {
                oncat = (aC[i].catid==catid)?1:0;
                xlev = aC[i].catlevel;
                iwidth = (xlev==0)?1:((xlev==1)?7:16);
                bgstr = (xlev==0)?colorvnav1:(xlev==1)?((usetheme)?pagetheme3:colorvnav2): ((usetheme)?pagetheme4:colorvnav3);
                if (usenavsymbols) {
                    symbol = (aC[i].subcatcount>0)?((aC[i].expflag==1)?symExp:symColl): ((aC[i].prodcount==0)?symNoth:((xlev<2)?symNoS:symSubArrow));
                }
                arrowstr = (oncat)?imgarrow:"";
                bgstr2 = bgstr;
                bgstr = (oncat)?colornavrollbar:bgstr;
// show hilighted as in rollover? done this way in ChefTools, rem out elsewhere til we discuss

                var navbulletimgstr = "";
                if (applynavbullet && havebulletimg) {
                    navbulletimgstr = "<img id='vnbullet" + i + "' src='" + navbulletimg + "' border='0'>";
                }

                isclickable = (aC[i].prodcount>0 || aC[i].subcatcount>0)?1:0;
                ptrsuffix = (isclickable==1)?"ptr":"arr";
                ptrsuffix = (aC[i].catid==catid)?"on":ptrsuffix;
                eventstring = "";
                mscode = (aC[i].prodcount>0 || aC[i].subcatcount>0)?1:2;
                msover = "onmouseover='chg("+i+","+mscode+","+xlev +","+isclickable+");divshow("+aC[i].catid + ");'";
                if (usenavsymbols) {
                    symbol += " id='xc"+i+"'";
                    if (symbol==symColl || symbol==symExp) {
                        var ptrstr = (is.pointer)?"pointer":"hand";
                        symbol += " style='cursor:" + ptrstr + ";'";
                    }
                    symbol += " onclick='DisplayClick(" + i + ")'>";
                }

                msout = "onmouseout='chg("+i+",0,"+xlev +",\"" + bgstr + "\","+oncat+");'";
                msclick = "";

                if (isclickable==1) {
                    if (aC[i].prodcount>0) {
                        msclick = "onclick='saveexp(0,"+aC[i].catid +",0,0,1)'";
                    } else {
                        if (aC[i].subcatcount>0) {
                            msclick = "onclick='DisplayClick(" + i + ")'";
                        }
                    }
                }

                eventstring = msclick + " " + msover + " " + msout;

                xstr += "<tr id='xtr" + i + "' name='xtr" + i + "' bgcolor='"+bgstr+"' " + eventstring + ">";
                xstr += "<td class='navcategory" + aC[i].catlevel + ptrsuffix + "' id='xct"+i+"'>" + imghead + iwidth + "' border='0'>" + symbol + TextDecode(aC[i].catname) +"</td>";

                // arrow cell
                xstr += "<td id='xarr"+i+"' width='12'>"+arrowstr+"</td></tr>";
                if (!usenavsymbols) {
                    xstr += "<tr bgcolor='"+bgstr2+"'><td colspan='2'><img src='../i/s.gif' width='1' height='3' border='0'></td></tr>";
                } else {
                    xstr += "<tr bgcolor='"+bgstr2+"'><td colspan='3'><img src='../i/s.gif' width='1' height='3' border='0'></td></tr>";
                }
            }
        }
        xstr += "</table>";
        if (xc.obj) {
            xc.obj.innerHTML = xstr;
        }
        if (is.nav4up) {
            DisplayNN(0);
        }
    }
}

function chg(idx,xmode,lvl,arg4,oncat) {
    if (!oncat) {
        var oncat = 0;
    }
    if (!coloroncategory) {
        coloroncategory = colornavrollover;
    }
    var xrow = new getObj("xtr" + idx);
    var xc = new getObj("xc" + idx);
    var xct = new getObj("xct" + idx);
    if (xrow.obj) {
        if (navbulletimg.length > 0) {
            var x = new getObj("vnbullet" + idx);
            if (x.obj) {
                x.obj.src = (xmode==1)?navbulletover:navbulletimg;
            }
        }
        if (xc.style) {
            if (lvl >= 0) {
                var basecolor = (lvl == 0)?colortextlight:colortextdark;
                if (xc.style.cursor) {
                    xc.style.cursor = (xmode>0)?((is.pointer)?"pointer":"hand"):"default";
                }
                xc.style.color = (xmode>0 && (arg4>0 || arg4.length>0))?colornavrollover:basecolor;
                xc.style.color = (oncat==1)?coloroncategory:xc.style.color;
            }
        }
        if (xct.style) {
            if (lvl >= 0) {
                var basecolor = (lvl == 0)?colortextlight:colortextdark;
                if (xct.style.cursor) {
                    xct.style.cursor = (xmode>0)?((is.pointer)?"pointer":"hand"):"default";
                }
                xct.style.color = (xmode>0 && (arg4>0 || arg4.length>0))?colornavrollover:basecolor;
                xct.style.color = (oncat==1)?coloroncategory:xct.style.color;
//              alert(xct.style.color);
            }
        }
        if (xrow.style) {
            if (xrow.style.cursor) {
                xrow.style.cursor = (xmode>0)?((is.pointer)?"pointer":"hand"):"default";
            }
            xrow.style.backgroundColor = (xmode>0)?colornavrollbar:arg4;
        }
    }
}

function DisplayHNav(userid) {

    var xpage = "", x = "",clickstr="",tclickstr="",clickstr2="",clickalt="";
    var txtlink = false, onhpage = false, df = document.form1;
    var onhpage = (afx[0].hpage>=0);
    if (aHN.length > 0 && aHN[0].src) {
        for (var i=0;i<aHN.length;i++) {
            mainsrc = aHN[i].src;
            txtlink = (aHN[i].istext && mainsrc.indexOf(".gif")==-1);
            if (onhpage) {
                if (afx[0].hpage == i) {
                    mainsrc = aHN[i].oversrc;
                }
                if (df.keypg) {
                    if (afx[0].keypg == aHN[i].pageid) {
                        mainsrc = aHN[i].oversrc;
                    }
                }
            }
            tclickstr = "";
            clickstr = "";
            clickstr2 = "";
            clickalt = "";
            if (aHN[i].publish==1) {
                tclickstr = "<a href=\"#\" name=\"hn"+i+"\" id=\"hn"+i+"\" class=\"hnavtxt\" onclick=\"showhpage('" + aHN[i].pageid + "')\" onmouseover='hm_over(" + i + ")' onmouseout='hm_out("+i+")'>";
                clickstr = "<a href=\"#\" onclick=\"showhpage('" + aHN[i].pageid + "')\" onmouseover='hm_over(" + i + ")' onmouseout='hm_out("+i+")'>";
                clickstr2 = "</a>";
            } else {
                clickalt = " alt='Pending'";
            }
            if (txtlink) {
                x = tclickstr + mainsrc + clickstr2 + "</td>";
            } else {
                if (mainsrc.length>0) {
                    x = clickstr+ "<img id=\"hn"+i+"\" name=\"hn"+i+"\" src=\""+mainsrc+"\" border=0 "+clickalt+">"+clickstr2+"</td>";
                } else {
                    x="";
                }
            }
            var xhn = new getObj("hnav" + i);
            if (xhn.obj) {
                xhn.obj.innerHTML = x;
            }
            if (hnswidth > 0 && i < (aHN.length-1)) {
                var xhs = new getObj("hns" + i);
                if (xhs.obj) {
                    if (hnsadjust==1 && i==(aHN.length-2)) {
                        xhstr = "<img src='../i/s.gif' height='1' width='" + (hnswidth-1) + "' border='0'>";
                    } else {
                        xhstr = "<img src='../i/s.gif' height='1' width='" + hnswidth + "' border='0'>";
                    }
                    xhs.obj.innerHTML = xhstr;
                }
            }
        }
    }
}

function DisplayPT() {
    var ptlist = "";
    for (var i=0;i<aP.length;i++) {
        if (aP[i].level==0) {
            ptlist = aP[i].pagelistpt;
            break;
        }
    }
    if (ptlist.length>0) {
        var ptstr = "", targ = "";
        apt = ptlist.split(",");
        for (var i=0;i<apt.length;i++) {
            xapt = apt[i];
            if (xapt.length>0) {
                for (var j=0;j<aP.length;j++) {
                    if (aP[j].pageid==xapt) {
                        if (ptstr.length>0) {
                            ptstr += "<span class=\"termsep\"> | </span>";
                        }
                        clickstr = "showhpage(" + xapt + ")";
                        if (aP[j].newwin.length > 0) {
                            clickstr = "pagewin(\"" + aP[j].newwin + "\")";
                        }
                        ptstr += "<a href=\"#\" onclick='"+clickstr+"' onmouseover='window.status=\"View "+aP[j].pagename+"\";return true;' onmouseout='window.status=\"\";return true;'" + targ + "><span class=\"terms\">" + aP[j].pagename + "</span></a>";
                    }
                }
            }
        }
        var xob = new getObj("ptlinks");
        if (xob.obj) {
            xob.obj.innerHTML = ptstr;
        }
    }
}

function DisplayPageMenu(navpg) {
    // vertical page navigation display (vh = 0)
    if (aP.length==0) {
        usetheme = (document.form1.cvnav && document.form1.cvnav.value.length>0);
        makep();
        maked();
        makeg();
    }
    if (!navpg) {
        var navpg=-1;
    }
    var x = "<table id='vptbl' name='vptbl' cellspacing='0' cellpadding='0' border='0' width='100%'>";
    var pagenum = 0, pagecount = 0, plist = "", plist2 = "", bgtblcolorstr = "";
    var navbullet="",pagelinkclass="";
    var isnavpage=false;

    var bgtablecolor = (usetheme)?pagetheme2:colortopicnav;
    var bgpagecolor = (usetheme)?pagetheme3:colorpagenav;
    if (bgtablecolor.length>0) {
        var bgtblcolorstr = (bgtablecolor.length>0)?"bgcolor='" + bgtablecolor + "'":"";
    }
    for (var i=0; i<aP.length; i++) {
        if (aP[i].level == 0) {
            plist = aP[i].pagelistv;
            break;
        }
    }
    if (plist.length>0) {
        apg = plist.split(",");
        for (var i=0;i<apg.length;i++) {
            xpg = apg[i];
            var pgidx = -1;
            for (var j=0; j<aP.length; j++) {
                if (aP[j].pageid==xpg) {
                    pgidx = j;
                    break;
                }
            }
            if (pgidx > -1) {
                // a topic
                if (pagenum > 0) {
                    // close out previous cell and row
                    x += "</td></tr>";
                    x +=    "<tr><td bgcolor='" + bgpagecolor + "' colspan='2'><img src='../i/s.gif' width='1' height='" + pagespacerht + "' border='0'></td></tr>";
                }
                pagenum = 0;
                pagecount += 1;
                if (suppresstopics==false) {
                    x += "<tr><td id='vt"+i+"' name='vt"+i+"' align='center' "+bgtblcolorstr+" colspan='2'><table cellspacing='0' cellpadding='2' border='0' width='100%'><tr><td align='center'><img src='../i/s.gif' width='1' height='"+topictitleheight+"' border='0'></td><td onmouseover='divhide(-1)' align='center'><span id='pgt" + i + "' class='navtopic' onmouseover='chgcursor(this,2)'>" + TextDecode(aP[pgidx].pagename) + "</span></td><td align='center'><img src='../i/s.gif' width='1' height='"+topictitleheight+"' border='0'></td></tr></table></td></tr>";
                } else {
//                  x += "<tr><td id='vt"+i+"' name='vt"+i+"' align='center' "+bgtblcolorstr+" colspan='2'><table cellspacing='0' cellpadding='2' border='0' width='100%'><tr><td align='center'><img src='../i/s.gif' width='1' height='1' border='0'></td><td onmouseover='divhide(-1)' align='center'><span id='pgt" + i + "' class='navtopic' onmouseover='chgcursor(this,2)'></span></td><td align='center'><img src='../i/s.gif' width='1' height='1' border='0'></td></tr></table></td></tr>";
                    x += "<tr><td id='vt"+i+"' name='vt"+i+"' align='center' "+bgtblcolorstr+" colspan='2' onmouseover='divhide(-1)'></td></tr>";
                }

                plist2 = aP[pgidx].pagelistv;
                apg2 = plist2.split(",");
                for (var j=0;j<apg2.length;j++) {
                    xpg2 = apg2[j];
                    var pgidx2 = -1;
                    for (var k=0; k<aP.length; k++) {
                        if (aP[k].pageid==xpg2) {
                            pgidx2 = k;
                            break;
                        }
                    }
                    if (pgidx2 > -1) {
                        pagenum += 1;
                        pagecount += 1;
                        if (pagenum == 1) {
                            // first main page under the topic, start row and cell
                            x +=    "<tr><td background='" + bglsidelnav + "' rowspan='2'><img width='" + lsidelnavs + "' src='../i/s.gif' height='1' border='0'></td><td id='vp"+k+"' name='vp"+k+"' background='" + bgmainnav + "'><img width='" + toplnavs + "' src='../i/s.gif' height='1' border='0'><br>";
                        }
                        // navbulletchar and navbulletimg are defined for the site in config.js
                        navbulletimgstr = "";
                        isnavpage = (navpg==aP[k].pageid);
//                      alert(TextDecode(aP[k].pagename) + "\nnavpage=" + navpage + "\naP[k].pageid=" + aP[k].pageid + "\nisnavpage=" + isnavpage);
                        if (navbulletimg.length > 0) {
                            navbullet = (isnavpage)?navbulletover:navbulletimg;
                            navbulletimgstr = "<img id='pbullet" + k + "' src='" + navbullet + "' border='0'>";
                        }
                        navbulletspacer = "<img src='../i/s.gif' width='" + navbulletspcw + " ' height='" + navbulletspch + "' border='0'>";
                        pagelinkclass = (isnavpage)?"pagenavover":"pagenavlink";

                        x += navbulletspacer + "<span class='navbullet'>" + navbulletcharpg + "</span><span class='" + pagelinkclass + "' id='pg" + k + "' onmouseover='pagepop(" + k + ")' onmouseout='pageout(" + k + ")' onclick='showpage(" + aP[k].pageid + ")'>" + navbulletimgstr + " " + TextDecode(aP[k].pagename) +"</span><br>";
                    }
                }
            }
        }
    }
    var spacercolor = "", spacercolorstr = "";
    if (pagecount > 0) {
        x +=    "</td><td background='" + bgrsidelnav + "' rowspan='2'><img width='" + rsidelnavs + "' src='../i/s.gif' height='1' border='0'></td></tr>";
        spacercolor = bgpagecolor;
    } else {
        spacercolor = bgtablecolor;
    }
    if (spacercolor.length>0) {
        spacercolorstr = "bgcolor='" + spacercolor + "'";
    }
    x +=    "<tr><td background='" + bgmainnav + "'><img src='../i/s.gif' width='1' height='" + mainnavht + "' border='0'></td></tr>";
    x +=    "<tr><td " + spacercolorstr + " colspan='3' background='" + bglpagenavbot + "'><img src='../i/s.gif' width='1' height='" + pagespacerht + "' border='0'></td></tr>";
    x += "</table>";

    if (x.length > 0) {
        var xpg = new getObj("pgcell");
        if (xpg.obj) {
            xpg.obj.innerHTML = x;
        }
    }

    // affiliates display
    var haveaff = 0;
    for (var i=0;i<aX.length;i++) {
        if (aX[i].xtype==5) {
            haveaff=1;
            break;
        }
    }
    if (haveaff==1) {
        x = "<table id='vptbl' name='vptbl' cellspacing='0' cellpadding='0' border='0' width='100%'>";
        pagenum = 0, pagecount = 0, plist = "", plist2 = "";
        bgtablecolor = (usetheme)?pagetheme2:colortopicnav;
        bgpagecolor = (usetheme)?pagetheme3:colorpagenav;
        if (bgtablecolor.length>0) {
            bgtblcolorstr = (bgtablecolor.length>0)?"bgcolor='" + bgtablecolor + "'":"";
        }
        var havex=0,xidx=0,xnum=0,xcount=-1;
            x += "<tr><td id='varow' name='varow' align='center' "+bgtblcolorstr+" colspan='2'><table cellspacing='0' cellpadding='2' border='0' width='100%'><tr id='atitle'  onmouseover='affpop()' onmouseout='affout();'><td align='center'><img src='../i/s.gif' width='1' height='"+afftitleheight+"' border='0'></td><td><span  id='atitletxt' class='collectiontitle'>" + affiliatetitle + "</span></td><td align='center'><img src='../i/s.gif' width='1' height='"+afftitleheight+"' border='0'></td></tr></table></td></tr></table>";

        if (x.length > 0) {
            xpg = new getObj("affcell");
            if (xpg.obj) {
                xpg.obj.innerHTML = x;
            }
        }
    }
    if (enableregistries) {
        regdisplay();
    }
    if (enablesearch) {
        searchdisplay();
    }
    if (enableemail) {
        emaildisplay();
    }
    if (is.nav4up) {
        DisplayNN(1);
    }
}

function regdisplay() {
    var havereg = 0;
    for (var i=0;i<aX.length;i++) {
        if (aX[i].xtype==4) {
            havereg=1;
            break;
        }
    }
    if (havereg==0) {
        return;
    }
    var x = "<table id='vrtbl' name='vrtbl' cellspacing='0' cellpadding='0' border='0' width='100%'>";
    var rnum = 0, rcount = 0;
    bgtablecolor = (usetheme)?pagetheme2:colortopicnav;
    bgpagecolor = (usetheme)?pagetheme3:colorpagenav;
    var bgtblcolorstr= "";
    if (bgtablecolor.length>0) {
        bgtblcolorstr = (bgtablecolor.length>0)?"bgcolor='" + bgtablecolor + "'":"";
    }
    x += "<tr><td id='vrrow' name='vrrow' align='center' "+bgtblcolorstr+" colspan='2'><table cellspacing='0' cellpadding='2' border='0' width='100%'><tr id='rtitle' onmouseover='regpop()' onmouseout='regout()'><td align='center'><img src='../i/s.gif' width='1' height='"+regtitleheight+"' border='0'></td><td><span id='rtitletxt' class='collectiontitle'>" + registrytitle + "</span></td><td align='center'><img src='../i/s.gif' width='1' height='"+regtitleheight+"' border='0'></td></tr></table></td></tr></table>";

    if (x.length > 0) {
        xpg = new getObj("regcell");
        if (xpg.obj) {
            xpg.obj.innerHTML = x;
        }
    }
}

function popitup(url,h,w,x,y)
{
    //newwindow=window.open(url,'RemoveEmail','height=150,width=300,screenX =200,screenY =400,left=200,top=400');
    //feat = 'height=' + h +',width=' + w + ',screenX=' + x + ',screenY=' + y + ',left=' + x + ',top=' + y + ',modal=yes,alwaysRaised=yes';
    feat = 'height=' + h +',width=' + w + ',screenX=' + x + ',screenY=' + y + ',left=' + x + ',top=' + y + ',dependent';
    newwindow=window.open(url,'RemoveEmail',feat);
    if (window.focus)
      newwindow.focus()
    return false;
}


function emaildisplay() {
    if (customemail && c_email) {
        var x = c_email();
        if (x.length > 0) {
            xpg = new getObj("c_emailcell");
            if (xpg.obj) {
                xpg.obj.innerHTML = x;
            }
        }
    } else {
        var profid=-1; // helen debug remove later?
        if (afx[0].profid) profid=afx[0].profid; // helen debug remove later?

        var x = "<table cellspacing='0' cellpadding='0' border='0' width='" + (t4width-(2*navctrloffset)) + "'>"
        x = x +"<tr><td colspan='3' align='center' onmouseover='divhide()'><span class='emailcapture'>"
        x = x +"ENTER EMAIL ADDRESS</span></td></tr><tr><td colspan='3'>"
        x = x +"<img src='../i/s.gif' width='"+navctrloffset+"' height='2' border='0'></td></tr>"
        x = x +"<tr><td align='right' onmouseover='divhide()' valign='top' width='"
        x = x + (t4width-gobuttonwidth-(2*navctrloffset)-2) + "'>"
        x = x +"<input type='text' name='email' id='email' class='pbox2' style='width:" + (t4width-gobuttonwidth-(2*navctrloffset)-2)
        x = x +"px;' onkeyup='emailkey()'></td><td><img src='../i/s.gif' width='2' height='1' border='0'></td>" 
        x = x +"<td valign='top' align='left' onmouseover='divhide()'>"
        x = x +"<img src='../i/go_mail.gif' border='0' id='emailimg' name='emailimg' onclick='email()' onmouseover='chgcursor(this,1)'>"
        x = x +"</td></tr><tr><td colspan='3' align='center'><span class='emailcapture'>We will contact you soon.</span></td></tr>"
        x = x +"<tr><td colspan='3' align='center'><span class='emailcapture'><a href='#' onClick='return popitup(\"/incs/removemail.asp?cid=" + afx[0].clientid +"&uid=" + afx[0].uid +"\",200,310,200,400,200,400)'><!--- remove  my e-mail address ---></a></span></td></tr></table>";
 //       alert("afx[0].clientid=" + afx[0].clientid + ",afx[0].uid=" + afx[0].uid +",profid="+profid);// helen debug remove later
 //helen end new
        if (x.length > 0) {
            xpg = new getObj("stdemailcell");
            if (xpg.obj) {
                xpg.obj.innerHTML = x;
            }
        }
    }
}

function searchdisplay() {

    if (aSearch.length == 0) {
        loadsearch();
    }
    if (aSearch.length == 0) {
        return;
    }

    var havesc=0;
    for (var i=0;i<aX.length;i++) {
        if (aX[i].xtype==1) {
            havesc=1;
            break;
        }
    }

    // search display
    xs = new getObj("searchtitle");
    if (xs.obj) {
        xs.obj.innerHTML = "&nbsp;Search By";
    }
    x = "<table id='vstbl' name='vstbl' cellspacing='0' cellpadding='0' border='0' width='100%'>";
    bgtablecolor = (usetheme)?pagetheme2:colortopicnav;
    bgpagecolor = (usetheme)?pagetheme3:colorpagenav;

    var bgtblcolorstr= "";
    if (bgtablecolor.length>0) {
        bgtblcolorstr = (bgtablecolor.length>0)?"bgcolor='" + bgtablecolor + "'":"";
    }

    x += "<tr><td align='center' "+bgtblcolorstr+"><select name='search1' id='search1' onchange='gosearch(1,this);setfoc();' style='font-family:Helvetica;font-size:8pt;height:18px;width:"+(t4width-(2*navctrloffset)) + "px;'>";
    var selword = "";
    var srch = ""+afx[0].xid; //helen fix js dwnld error
    var srch1=3,srch2="";
    var spot = srch.indexOf(",");
    var systest = ",1,2,3,4,5,6,";      // default to all enabled
    if (syscols) {
        systest = "," + syscols + ",";      // enabled system collections test string from config.js
    }
    if (spot>0) {
        srch1=srch.substring(0,spot);
        srch2=srch.substring(spot+1,999);
        if (srch1.indexOf("0.")==0) {
            srch1 = srch1.substring(2,99);
        }
        srch1=parseInt(srch1);
        srch2=srch2.replace("!","");
        afx[0].xtype = srch1;
        afx[0].xvalue = srch2;
    } else {
        spot = srch.indexOf(".");
        if (spot>0) {
            srch1=parseInt(srch.substring(spot+1,99));
        }
    }
    var targeti = srch1;
    var targetsub = 0;
    
    if (showsearchoptions) {                  // helen new - searchby setting
    	lenSearch = aSearch.length;           // helen new 
    }                                         // helen new 
    else {                                    // helen new 
    	lenSearch = 1;                        // helen new 
    }                                         // helen new 

    //for (var i=0; i<aSearch.length; i++) {  // helen old - coomented out
    for (var i=0; i<lenSearch; i++) {         // helen new 
        if (aSearch[i].text.length > 0) {
            selword = (aSearch[i].syscode==targeti)?" selected ":"";
            if (systest.indexOf(","+aSearch[i].syscode + ",") > -1) {
                // this system search is enabled
                if (aSearch[i].syscode!=8 || havesc) {
                    x += "<option value=" + i + selword + " >" + aSearch[i].text + "</option>";
                }
                targetsub = (aSearch[i].syscode==targeti)?aSearch[i].sublist:targetsub;
            }
        }
    }
    x += "</select></td></tr>";

    if (targeti==11) {
        targetsub=1;
    }

    spacercolor = "", spacercolorstr = "";
    spacercolor = bgtablecolor;
    spacercolorstr = "bgcolor='" + spacercolor + "'";
    x +=    "<tr><td "+spacercolorstr+"><img src='../i/s.gif' width='1' height='" + pagespacerht + "' border='0'></td></tr>";
    x += "</table>";

    xs = new getObj("searchcell1");
    if (xs.obj) {
        xs.obj.innerHTML = x;
    }
    var srchtest = x;

//  x = "<table id='vstbl2' name='vstbl2' cellspacing='0' cellpadding='0' border='1' width='100%'>";
    bgtablecolor = (usetheme)?pagetheme2:colortopicnav;
    bgpagecolor = (usetheme)?pagetheme3:colorpagenav;

    if (bgtablecolor.length>0) {
        bgtblcolorstr = (bgtablecolor.length>0)?"bgcolor='" + bgtablecolor + "'":"";
    }
    x = "<select name='search2' id='search2' onchange='gosearch(2,this)' style='font-family:Helvetica;font-size:8pt;height:18px;width:"+(t4width-(2*navctrloffset)) + "px;' disabled></select><br><img src='../i/s.gif' width='1' height='12' border='0'>";

    xs = new getObj("searchcell2");
    if (xs.obj) {
        xs.obj.innerHTML = x;
    }

    var s1 = new getObj("search1");
    if (s1.obj) {
        if (targeti >= 0 && targetsub==1) {
            gosearch(1,s1.obj);     // populate lower list, to be re-entrant
            if (afx[0].xvalue.length > 0) {
                afx[0].xtype = parseInt(afx[0].xtype);
                if (afx[0].xtype != 3) {
                    var s2 = new getObj("search2");
                    if (s2.obj) {
                        switch (afx[0].xtype) {
                            case 1:
                                for (var i=0;i<aBrands.length;i++) {
                                    if (aBrands[i]==afx[0].xvalue) {
                                        s2.obj.selectedIndex=i+1;
                                        // allow for "choose one" option
                                        break;
                                    }
                                }
                                break;
                            case 2:
                                var pcount = 0;
                                for (var i=0;i<aPrice.length;i++) {
                                    if (aPrice[i].pricetype == afx[0].xtype) {
                                        pcount += 1;
                                        if (aPrice[i].text==afx[0].xvalue) {
                                            s2.obj.selectedIndex=pcount;
                                            break;
                                        }
                                    }
                                }
                                break;
                            case 8:
                                var pcount = 0;
                                for (var i=0;i<aX.length;i++) {
                                    pcount += 1;
                                    if (aX[i].xid==afx[0].xvalue) {
                                        s2.obj.selectedIndex=pcount;
                                        break;
                                    }
                                }
                                break;
                        }
                    }
                }
                if (afx[0].xtype == 3) {
                    var s2c = new getObj("searchword");
                    if (s2c.obj) {
                        s2c.obj.value = TextDecode(afx[0].xvalue);
                    }
                }
            }
        }
    }
}

function hpmenu(pgid,pgi) {
    if (IsNumeric(pgid)==false) {
        // temp - how to handle a page url, not a page id??
        return;
    }
    hpmenux(pgid,pgi);
}

function hpmenux(pgid,pgi) {
    // horizontal page menu flyouts
    // pgid = page id, pgi = hnav number (hnav1, hnav2 etc)

    var xdf = document.form1, hmenu = pgi, hname = aHN[pgi].imgname;
    var xhn = new getObj("hn" + pgi), xpgo = xhn.obj, hnavht = -1;
    if (xpgo) {
        hnavht = xpgo.height;
    }
    if (pgid) {
        var pgidx = -1, xhpop = new getObj("hpopup");

        var bgColor = "#FFFFFF", pclass = "navdivprod", border = 0;
        var padding = 2, xOffset = 0, yOffset = 0, Font = 'face="Verdana, Arial, Helvetica, sans-serif" size=2';

        var opop = xhpop.obj;
        for (var i=0;i<aP.length;i++) {
            if (aP[i].pageid == pgid) {
                pgidx = i;
                break;
            }
        }
        if (pgidx == -1) {
            return;
        }

        var span1 = "", span2 = "", borderstyle = "", ww = -1;
        var titlestr = TextDecode(aP[pgidx].pagename);
        var textcolor = (aP[pgidx].cvn1.length > 0)?aP[pgidx].cvn1:colorflyouttext;
        var rollcolor = (aP[pgidx].cvn6.length > 0)?aP[pgidx].cvn6:sitetheme6;
        var table = "", tblcontent = "", pgcount = 0, pglist = aP[pgidx].pagelisth;
        if (pglist.length > 0) {
            apg = pglist.split(",");
            for (var i=0;i<apg.length;i++) {
                xpg = apg[i];
                pgname = "";
                for (var j=0;j<aP.length;j++) {
                    if (aP[j].pageid == xpg) {
                        pgname = TextDecode(aP[j].pagename);
                        pgcount += 1;
                        break;
                    }
                }
                if (textcolor != colordark) {
                    span1 = "<span style='color:" + textcolor + ";'>";
                    span2 = "</span>";
                    borderstyle = "1px solid " + textcolor;
                }
                if (pgname.length > 0) {
                    tblcontent += "<tr><td bgcolor='#FFFFFF' id='hp"+i+"' class='"+ pclass +"' onMouseOver='pshow("+i+",0,\"" + rollcolor +"\")' onMouseOut='phide("+i+",0)' onclick='showhpage("+xpg+"," + pgid +")'>" + span1 + pgname + span2 + "</td></tr>";
                }
            }
        }
        tblcontent += "</table><a href='#' id='popbtm' </a>";
        table += "<table bgcolor='#C0C0C0' border= "+ border +" cellpadding="+ padding +" cellspacing=1 width='100%' style='cursor:hand;'>";
        table += tblcontent;
        if (pgcount==0) {
            return;
        }

        aHN[pgi].divup=1;
        pg = "hnav" + pgi;
        pgtop = 0;
        pgleft = 0;
        var xpg = new getObj(pg);
        pgobj = xpg.obj;
        while (pgobj.offsetParent) {
            pgtop += pgobj.offsetTop;
            pgleft += pgobj.offsetLeft;
            pgobj = pgobj.offsetParent;
        }

        pgtop = pgtop + hnavht + hn_vadjustment;
        pgleft = pgleft + hn_hadjustment;
        if (document.body.clientWidth) {
            ww = document.body.clientWidth;
        } else {
            if (window.innerWidth) {
                ww = window.innerWidth
            }
        }

        if (pgcount > 0) {
            opop.className = "navdiv3";
            opop.innerHTML = table;
             if (borderstyle.length > 0) {
                xhpop.style.border = borderstyle;
             }
            if ((pgleft + opop.offsetWidth) > ww) {
                pgleft = ww - opop.offsetWidth;
            }
            xhpop.style.left = pgleft;
            afx[0].poptop = pgtop;
            popupposition(opop);
            xhpop.style.top  = afx[0].poptop;
            xhpop.style.visibility = "visible";
            hdivisup = 1;
        }
    }
}

function showpage(id,parentid) {
    var wstr = id;
    if (parentid) {
        wstr += "," + parentid;
    }
    wstr = "\"" + wstr + "\"";
    afx[0].act = "../Catalog/pagedisplay.asp";
    afx[0].gs = wstr;
    submitform();
}

function showpg(id) {
    var wstr = id;
//  wstr = "\"" + wstr + "\"";
    afx[0].act = "../Catalog/page.asp";
    afx[0].gs = wstr;
    submitform();
}

function showreg(id) {
    showcol(id);
//  gl(1,"0.11,"+id+"!");
}

function showaff(id) {
    var pgid=-1;
    for (var i=0;i<aX.length;i++) {
        if (aX[i].xid==id) {
            pgid=aX[i].xaffpg;
            break;
        }
    }
    gl(3,pgid);
}

function showhpsec(id) {
    // secure version of showhpage
    afx[0].sec = 0;
    showhpage(id);
}

function showhpage(id,parentid) {
    var df = document.form1;
    if (id) {
        var wstr = id;
        var keypg = "";
        if (parentid) {
            var parentstr = toString(parentid);
            var spot =parentstr.indexOf(".");
            if (spot > -1) {
                keypg = parentstr.substring(spot+1,999);
                parentid = parentstr.substring(0,spot);
            }
            wstr += "," + parentid;
        }
        if (keypg.length>0) {
            wstr += "." + keypg;
        }
//      wstr = "\"" + wstr + "\"";
        var teststr = parseInt(id);
        afx[0].act = (teststr > 0)?"../Catalog/hpagedisplay.asp":id;
        if (teststr > 0) {
            afx[0].gs = wstr;
        }
    } else {
        afx[0].act = "../Catalog/hpagedisplay.asp";
        afx[0].gs = -1;
    }
    submitform();
}

function BtnEvent(btn) {
    var df = document.form1;
    var context = (btn==1)?"ask":"tell";
    if (window.name.length==0) {
        window.name = "main";
    }
    var hfile = (btn==1)?"../popup/askaquestion.asp":"../popup/tellafriend.asp";
    var pid = afx[0].prodid;
    var catid=-1;
    var imageid=-1;
    var pname = "";
    var url = urlname;
    for (var i=0;i<aI.length;i++) {
        if (aI[i].prodid==pid) {
            pname = aI[i].prodname;
            catid = aI[i].catid;
            imageid=aI[i].imageid;
        }
    }
    hfile += "?cid=" + afx[0].clientid + "&pid=" + pid +"&context=" + context + "&catid=" + catid + "&pname=" + pname + "&biz=" + bizname + "&img=" + imageid + "&url=" + url;
    tellwin = window.open(hfile,"mywin","width=1,height=1,left=0,top=0,toolbar=no");
}

function saveexp(xo, xid, pid, pflag,stripfilter) {
    if (!stripfilter) {
        stripfilter = 0;
    }
    var df = document.form1;
    if (!pflag) {
        var pflag = 0;
    }
    var parentrow = -1, irow = -1, topparent = -1;
    if (xid>0) {
        for (i=0;i<aC.length;i++) {
            if (aC[i].catid==xid) {
                irow = i;
                parentrow = aC[i].parentrow;
                if (parentrow >= 0) {
                    topparent = aC[parentrow].parentrow;
                }
                break;
            }
        }
    }

    // supports re-entrant nav expansion
    var e = ".", prow = -1;
    for (i=0;i<aC.length;i++) {
        prow = aC[i].parentrow;
        switch(prow) {
            case -1:
                if (i==topparent) {
                    e += aC[i].catid + ",1.";
                } else {
                    e += aC[i].catid + ",0.";
                }
                break;
            case topparent:
                if (i==irow) {
                    e += aC[i].catid + "," + aC[i].expflag + ".";
                } else {
                    e += aC[i].catid + ",0.";
                }
                break;
            case parentrow:
                if (i==irow) {
                    e += aC[i].catid + "," + aC[i].expflag + ".";
                } else {
                    e += aC[i].catid + ",0.";
                }
                break;
            case irow:
                e += aC[i].catid + ",0.";
                break;
            default:
                break;
        }
    }

    afx[0].e = e;
    ifname = "../catalog/if.asp";
    idname = "../catalog/id.asp";
    stripfilter = (xo==2)?1:stripfilter;
    var a1=-1, a2=-1, a3="";
    switch (xo) {
        case 0:
            afx[0].act = ifname;
            afx[0].gc = xid;
            afx[0].gp = -1;
            afx[0].by1 = 0;
            a1=0;
            a2=xid;
            break;
        case 1:
            afx[0].act = ifname;
            afx[0].gc = xid;
            afx[0].gp = pid;
            afx[0].by1 = 0;
//          afx[0].xstyle = 0;
            a1=0;
            a2=xid;
            a3=pid;
            break;
        case 2:
            afx[0].act = idname;
            afx[0].gc = xid;
            afx[0].gp = pid;
            afx[0].by1 = 0;
            afx[0].afreset = 1;
            a1=2;
            a2=pid;
            break;
        case 3:
            var x = "../" + defaultpage + "?catid=" + xid;
            afx[0].act = "../" +defaultpage;
            afx[0].gc = xid;
            afx[0].by1 = 0;
            break;
        case 4:
            // click on "shop by brand" button
            afx[0].by1 = 1;
            break;
        case 5:
            var x = "../catalog/categoryoverview.asp";
            afx[0].act = x;
            afx[0].by1 = 0;
            a1=12;
            break;
    }
    if (stripfilter == 1) {
        afx[0].xstyle = 0;
        afx[0].xtype = 0;
        afx[0].xvalue = "";
    }
    afx[0].tableh = 0;
    gl(a1,a2,a3);
//  submitform();
}

function gocheckout() {
    var sslurl = (sslenabled)?urlname.replace("http:","https:"):urlname;
    var newloc = sslurl + "cart/checkout.asp?uid=" + afx[0].uid;
    window.location = newloc;
}

function goshopping() {
    afx[0].tableh = 2;
//  document.form1.submit();
    submitform();
}

function gosignin(errcode) {
    var df = document.form1;
    var uid = afx[0].uid;
    var hfile = "../cart/signin.asp?uid=" + uid;
    var errmsg = "";
    if (errcode) {
        if (errcode>0) {
            switch (errcode) {
                case 1:
                    // signin not recognized
                    errmsg = "I don't recognize that username/password combination. Please try again.";
                    break;
            }
        } else {
            if (errcode==-1) {
                // signout - dbconn will pick this up and decouple the profile association
                afx[0].profid = -1;
                afx[0].sec = 0;     // don't trigger change of ssl status
                afx[0].act = "../cart/signinupdate.asp";
                submitform();
                return;
            }
        }
    }

    var h = screen.height //height of screen, not just the parent window
    var w = screen.width //width of the screen

    if (document.body.offsetWidth) {
        w = document.body.clientWidth;
        h =  document.body.clientHeight;
    } else {
        if (window.innerWidth) {
            w = window.innerWidth;
            h = window.innerHeight;
        }
    }

    var popw = 480;
    var poph = 250;
    var l = parseInt((w-popw)/2);
    var t = parseInt((h-poph)/2);

    // for the time being, force location
    l = 160;
    t = 20;

    var table = "<table border='0' cellspacing='0' cellpadding='1'>"
    table += "<tr><td bgcolor='#000000'><table width='415' border='1' cellspacing='0' cellpadding='1' bordercolor='#C0C0C0' bgcolor='#FFFFFF'>"
    table += "<tr> <td> <table width='100%' border='0' cellspacing='0' cellpadding='0' bgcolor='#C0C0C0'>"
    table += "<tr> <td><font face='arial' color='#333333' style='font-size: 10px;'>&nbsp;Welcome to "+bizname+"</font></td>"
    table += "<td align='right'><img src='../i/btn_miniclose.gif' width='10' height='10' border='0' alt='Close window' align='right' onmouseover='chgcursor(this,2,-1)' onclick='sendsignin(0)'></a></td>"
    table += "</tr> </table></td> </tr>"
    table += "<tr> <td align='center'><font class='msgtext'><p><strong>Please enter your account user name and password.<br>Your user name should be your active e-mail address. </strong></font></p></td> </tr>"
    table += "<tr> <td> <form name='loginform' method='post' action='../cart/signinupdate.asp'> <table width='100%' border='0' cellspacing='1' cellpadding='1' bgcolor='#F7F7F7'>"
    table += "<tr> <td> <table align='center' border='0' cellspacing='1' cellpadding='1'>"
    table += "<tr> <td colspan='2'>&nbsp;</td> </tr>"
    table += "<tr> <td align='right'><font class='detailpricetext'><b>User Name:</b></font></td>"
    table += "<td> <input type='text' name='uname' id='uname' size='25' class='pbox'></td>"
    table += "</tr> <tr> <td align='right'><font class='detailpricetext'><b>Password:</b></font></td>"
    table += "<td> <input type='password' name='pword' id='pword' size='25' class='pbox' onkeypress='chkenter()'></td>"
    table += "</tr> <tr> <td colspan='2'><img src='../i/s.gif' height='15' width='1' border='0'><span class='signinerror'>"+errmsg+"</span></td>"
    table += "</tr> <tr> <td colspan='2' align='center'><font face='arial' color='#333333' style='font-size: 10px;'>No account yet? <a href='#' onclick='goprofile(1)'>Click here!</a></font></td>"
    table += "</tr> </table></td> </tr>"
    table += "<tr> <td align='center' valign='middle' bgcolor='#C0C0C0'><br> <img src='../i/img_send.gif' border='0' alt='Sign in' onmouseover='chgcursor(this,1,-1)' onclick='sendsignin(1)'>&nbsp;&nbsp;&nbsp; <img src='../i/img_close.gif' border='0' alt='Close window' onmouseover='chgcursor(this,1,-1)' onclick='sendsignin(0)'></a>&nbsp;</td>"
    table += "</tr> </table></form> </td> </tr>"
    table += "<tr> <td align='left' bgcolor='#EEEEEE'><font face='arial' size='-2' color='#808080'>Powered by <a href='http://www.1degree.com' target='_blank' style='color:#6A6A6A;'>One Degree</a></font></td>"
    table += "</tr> </table></td></tr></table>";

    var xmp = new getObj("msgpanel");
    xmp.obj.className="signindiv";
    xmp.obj.innerHTML = table;
    xmp.style.top  = t;
    xmp.style.left = l;
    xmp.style.visibility = "visible";
    ADD_DHTML("msgpanel");

    var xem = new getObj("uname");
    if (xem.obj) {
        xem.obj.focus();
    }
}

function chkenter() {
    var e=window.event || arguments.callee.caller.arguments[0];
    var kc = e.keyCode?e.keyCode:e.charCode?e.charCode:e.which?e.which:void 0;
    if (kc==13) {
        sendsignin(1);
    }
}

function sendsignin(x) {
    var df = document.form1;
    if (afx[0].profid) {
        if (afx[0].profid==-1) {
            afx[0].profid = 0;
        }
    }
    var xmp = new getObj("msgpanel");
    if (x==0) {
        xmp.obj.innerHTML = "";
        xmp.style.visibility = "hidden";
        return;
    }
    var uname = "", pword = "";
    var xun = new getObj("uname");
    var xpw = new getObj("pword");
    if (xun.obj) {
        uname = xun.obj.value;
    }
    if (xpw.obj) {
        pword = xpw.obj.value;
    }
    var ecode=0;
    if (uname.length==0) {
        ecode += 1;
    }
    if (pword.length==0) {
        ecode += 2;
    }
    switch (ecode) {
        case 1:
            alert("Please supply a user name.");
            break;
        case 2:
            alert("Please supply a password.");
            break;
        case 3:
            alert("Please supply a user name and password.");
            break;
        case 0:
            afx[0].sd = uname + "," + pword;
            afx[0].sec = 0;
            afx[0].act= "../cart/signinupdate.asp";
            submitform();
            break;
    }
}

function catchsignin(uname,pword) {
    var df = document.form1;
    afx[0].sd = uname + "," + pword;
    afx[0].sec = 2;
    afx[0].act= "../cart/signinupdate.asp";
    submitform();
}

function goprofile(emode) {
    // emode - 0=edit, 1=create
    if (!emode) {
        var emode = 1;
        if (parseInt(afx[0].profid)>0) {
            emode = 0;
        }
    }
    if (sslenabled) {
        var sslurl = urlname.replace("http:","https:");
    } else {
        var sslurl = urlname;
    }
    var newloc = sslurl + "cart/profile.asp?m=" + emode + "&uid=" + afx[0].uid;
    window.location = newloc;
}

function buildqlist(idx) {
    var incart = false;
    if (idx || idx==0) {
        incart = true;
    }
    var ql;			//helen - new bug fix Firefox

    var qstr = "", qex = "", exmsg = "", gooddiscounts = 0, opcount = 0;
    var xsel = -1, opcount = 0, numopts = aOptions.length, df = document.form1;
    if (incart==true) {
        var qid = afx[0].work_qid;
        var prodid = aCart[idx].prodid;
        var pn = aCart[idx].prodname;
        var olist = "/" + aCart[idx].olist;
        numopts = olist.occurs("/")-1;
        var qops = "/" + aCart[idx].qoptions;
        var noopts = (numopts==0)?1:0;
    } else {
        var noopts = (aOptions[0].optid==0)?1:0;
        var qid = afx[0].qid;
        var pn = afx[0].prodname;
        var olist = "/" + afx[0].olist;
        var qops = "/" + afx[0].qops;
    }

    if (aQO[0].qid > 0) {
        // clear current options in list
        var xql = new getObj("qlist");
        if (xql.obj) {
            ql = xql.obj;
            ql.options.length = 0;
            ql.options[ql.options.length] = new Option("Choose one...",-1);
        }

        if (!incart) {
            // build ao, a list of current option choices
            var ao = ",";
            for (var i=0;i<aOptions.length;i++) {
                if (aOptions[i].valchoice > 0) {
                    ao += aOptions[i].optid + ":" + aOptions[i].valchoice + ",";
                    opcount += 1;
                }
            }
        } else {
            var ao = "," + afx[0].work_ochoices;
            opcount = ao.occurs(",") - 1;
        }

        for (var i=0;i<aQO.length;i++) {
            xqid = aQO[i].qid;
            if (incart) {
                testprodid = aQO[i].prodid;
                testqid = "/" + xqid + ":";
                if (testprodid != prodid) {
                    // this qoption applies to a different product in the cart, ignore it
                    // handles case of 2 "Case" discounts, different, for different products
                    continue;
                }
                if (qops.indexOf(testqid) == -1) {
                    // this qoption does not apply to this product, ignore it
                    continue;
                }
            }
            userchoice = (xqid==qid)?1:0;
            foundex = 0;

            qexstr = "";
            ex = aQO[i].exceptions;
            if (ex.length > 0) {
                for (var k=0;k<aOptions.length;k++) {
                    aOptions[k].work = "";
                }
                aex = ex.split(",");
                for (var j=0;j<aex.length;j++) {
                    xex = aex[j];

                    // is this exception in the list of user choices?
                    natest = "," + xex + ",";
                    rez = ao.indexOf(natest);
                    if (rez >= 0) {
                        // one of their choices matches this exception
                        foundex = 1;
                        optval = -1;
                        xoid = xex.substring(0,xex.indexOf(":"));
                        xoval = xex.substring(xex.indexOf(":")+1,xex.length);
                        xoname = "";
                        xostrvalue = "";
                        for (var k=0; k<aOptions.length;k++) {
                            if (aOptions[k].optid == xoid) {
                                xoname = aOptions[k].optname;
                                break;
                            }
                        }
                        for (var k=0; k<aValues.length;k++) {
                            if (aValues[k].valueid == xoval) {
                                xostrvalue = aValues[k].strvalue;
                                break;
                            }
                        }
                        exmsg = "<ul><li>The bulk discount for " + aQO[i].qname + " is not available for:<br>&nbsp;&nbsp;" + xoname + " -  " + xostrvalue;
                    }
                    colon = xex.indexOf(":");
                    xopt = xex.substring(0,colon);
                    xval = xex.substring(colon+1,xex.length);

                    for (var k=0;k<aOptions.length;k++) {
                        if (aOptions[k].optid == xopt) {
                            xgood = (aOptions[k].work.length>0) ? aOptions[k].work:aOptions[k].optvals + ",";
                            xgood = xgood.replace(xval + ",","");
                            aOptions[k].work = xgood;
                            break;
                        }
                    }
                }

                // now aOptions work field is loaded with acceptable values for options involved
                for (var k=0;k<aOptions.length;k++) {
                    oname = aOptions[k].optname;
                    ovalue = aOptions[k].optid;
                    testop = "/" + ovalue + ":";
                    if (olist.indexOf(testop) < 0) {
                        // this option applies to some other product in the cart, ingore it
                        continue;
                    }
                    qexstr += "&nbsp;&nbsp;" + oname + " -  ";
                    ovals = aOptions[k].work;
                    qxlist = "";
                    if (ovals.length == 0) {
                        qxlist += "All";
                    } else {
                        aovals = ovals.split(",");
                        for (var m=0;m<aovals.length;m++) {
                            for (var n=0;n<aValues.length;n++) {
                                if (aValues[n].valueid == aovals[m]) {
                                    qxlist += aValues[n].strvalue + ", ";
                                    break;
                                }
                            }
                        }
                        if (qxlist.substring(qxlist.length-2,qxlist.length) == ", ") {
                            qxlist = qxlist.substring(0, qxlist.length-2);
                        }
                    }
                    commas = qxlist.occurs(", ");
                    if (commas == 1) {
                        qxlist = qxlist.replace(", "," and ");
                    }
                    qexstr += qxlist + "<br>";
                }
            }

            if (foundex == 0) {
                gooddiscounts += 1;
                if (ql) {
                    ql.options[ql.options.length] = new Option(aQO[i].qname,xqid);
                    if (userchoice==1) {
                        xsel = ql.options.length-1;
                        ql.selectedIndex = xsel;
                    }
                }
            } else {
                if (qid > 0) {
                    msgshow(exmsg,"Bulk Discount Advisory",pn);
                }
            }
            qex += aQO[i].qname + "|" + aQO[i].qty + "|" + aQO[i].qprice + "|" + qexstr + "~";
        }

        if (incart) {
            aCart[idx].qexplain = qex;
        } else {
            afx[0].qex = qex;
        }
        if (gooddiscounts > 0 && (opcount == numopts || noopts==1)) {
            if (ql)	ql.disabled = false;		//helen - new bug fix Firefox
            if (xsel == -1) {
                if (ql)		ql.selectedIndex = 0;	//helen - new bug fix Firefox
                if (incart) {
                    afx[0].work_qid = -1;
                } else {
                    afx[0].qid = -1;
                }
                if (qid > 0) {
                    // warn here that selected discount is not available
                }
            }
        } else {
            if (ql) {
                ql.selectedIndex = 0;
                ql.disabled = true;
            }
            if (incart) {
                afx[0].work_qid = -1;
            } else {
                afx[0].qid = -1;
            }
        }
    }
}

function qoptionchg(o,cartidx) {
    // change in bulk quantities list
    // set qid form var value and call optionsummary

    var qidx = o.selectedIndex;
    var qval = o.options[qidx].value;
    if (qval < 0) {
        o.selectedIndex = 0;
    }
    if (cartidx < 0) {
        afx[0].qid = qval;
        optionsummary();
    }
    if (cartidx >= 0) {
        afx[0].work_qid = qval;
        listoptions2(cartidx,1)
    }
}

function jla() {
    // test function, called by clicking on date
}

function getTop(otop) {
    var xtop = 0;
    while (otop.offsetParent) {
        xtop += otop.offsetTop;
        otop = otop.offsetParent;
    }
    return xtop;
}

function setarrow() {
    // called from makenav to reset expansion state
    var df = document.form1;
//  if (df.catid) {
    if (afx[0].catid) {
//      var xcat = parseInt(df.catid.value);
        var xcat = parseInt(afx[0].catid);
        if (xcat > 0) {
            var idx = -1;
            for (var i=(aC.length-1);i>=0;i--) {
                if (aC[i].catid==xcat) {
                    idx = i;
                    break;
                }
            }
            if (idx>=0) {
                var prow2 = -1, plevel = -1, plevel2 = -1, lvl = -1, p = -1;
                var xlvl = aC[idx].catlevel;
                var xprod = aC[idx].prodcount;
                var prow = aC[idx].parentrow;
                if (prow >= 0) {
                    plevel = aC[prow].catlevel;
                    prow2 = aC[prow].parentrow;
                    if (prow2 >= 0) {
                        plevel2 = aC[prow2].catlevel;
                    }
                }
                for (var i=(aC.length-1);i>=0;i--) {
                    lvl = aC[i].catlevel;
                    p = aC[i].parentrow;
                    if (lvl==0) {
                        // a top-level category
                        aC[i].expflag = 0;
                        aC[i].showflag = 1;
                    }
                    if (i==prow || i==prow2) {
                        // a parent up the chain
                        aC[i].expflag = 1;
                        aC[i].showflag = 1;
                    }
                    if (p==prow || p==prow2) {
                        // exposed siblings
                        if (i!=prow && i!=prow2) {
                            aC[i].expflag = 0;
                            aC[i].showflag = 1;
                        }
                    }
                    if (p==idx && xprod>0) {
                        // children of selected category
                        aC[i].expflag = 0;
                        aC[i].showflag = 1;
                    }
                    if (i==idx) {
                        // this item
                        aC[i].expflag = 1;
                        aC[i].showflag = 1;
                    }
                }
            }
        }
    }
}

function makenav() {
    makefx();
    makec();
    setarrow();
    makei();
    makeh();
    makep();
    maked();
    makeg();
    makex();
    makev();
    makerp();
    if (genrp==true) {
        GenRP();
    }
}

function DisplayBtmLinks() {
    var linkrow = new getObj("btmlinks");   // cell is in copy_terms.asp
    var xouter = "<table width='100%' cellpadding='0' cellspacing='0' border='0'><tr><td align='center'>";
    var xouterclose = "</td></tr></table>";
    var xopen = "<table cellpadding='2' cellspacing='0' border='0'><tr>";
    var xclose = "</tr></table>";
    var xmid = "", xL = "", xtext = "", xaction = "", xtext="", spot = -1;
    if (blnk) {
        // blnk var is set in header, from config table field, parsed for appropriate link set for specific page
        // blnk format: <link text>|<action>^
        // actions are numeric codes, for calls to handler function BtmLink()
        aL = blnk.split("^");
        for (var i=0;i<aL.length;i++) {
            xL = aL[i];
            spot = xL.indexOf("|");
            if (spot >= 0) {
                xtext = xL.substring(0,spot);
                xaction = xL.substring(spot+1,999);
                if (i > 0) {
                    xmid += "<td><span class='termsep'><img src='../i/sub_space.gif' border='0'></span></td>";
                }
                xmid += "<td align='center'><a class='footerlinks' href='#' onclick='BtmLink("+xaction +")'>" + xtext + "</a></td>";
            }
        }
    } else {
        xmid = "<td></td>";
    }
    xtable = xouter + xopen + xmid + xclose + xouterclose;
    if (linkrow.obj) {
        linkrow.obj.innerHTML = xtable;
    }
}

function BtmLink(xlink) {
    // handler function for dynamic bottom row links
    if (xlink || xlink==0) {
        switch (xlink) {
            case 0:
                break;
            case 1:
                break;
            case 2:
                break;
            case 3:
                break;
            case 4:
                break;
        }
    }
}

function DisplayPTLinks() {
//<span class="terms">Privacy Statement</span><span class="termsep"> | </span><span class="terms">Terms of Use </span>
    var linkrow = new getObj("ptlinks");    // cell is in copy_terms.asp
    var xouter = "<table width='100%' cellpadding='0' cellspacing='0' border='0'><tr><td align='center'>";
    var xouterclose = "</td></tr></table>";
    var xopen = "<table cellpadding='2' cellspacing='0' border='0'><tr>";
    var xclose = "</tr></table>";
    var xmid = "", xL = "", xtext = "", xaction = "", xtext="";
    var spot = -1;
    if (blnk) {
        // blnk var is set in header, from config table field, parsed for appropriate link set for specific page
        // blnk format: <link text>|<action>^
        // actions are numeric codes, for calls to handler function BtmLink()
        aL = blnk.split("^");
        for (var i=0;i<aL.length;i++) {
            xL = aL[i];
            spot = xL.indexOf("|");
            if (spot >= 0) {
                xtext = xL.substring(0,spot);
                xaction = xL.substring(spot+1,999);
                if (i > 0) {
                    xmid += "<td><span class='termsep'><img src='../i/sub_space.gif' border='0'></span></td>";
                }
                xmid += "<td align='center'><a class='footerlinks' href='#' onclick='BtmLink("+xaction +")'>" + xtext + "</a></td>";
            }
        }
    } else {
        xmid = "<td></td>";
    }
    xtable = xouter + xopen + xmid + xclose + xouterclose;
    if (linkrow.obj) {
        linkrow.obj.innerHTML = xtable;
    }
}

function DisplayNN(tbl) {
return;
    if (is.nav4up) {
        if (tbl==0) {
            var rname="",xlev="",bgstr="";
            var usecolortheme = false;
            if (afx[0].cvnav.length>0) {
                // if document has a cvnav hidden var, it is the color theme settings.
                var cvn = afx[0].cvnav;
                if (cvn.length > 0) {
                    var acv = cvn.split(",");
                    var pagetheme1 = acv[0];
                    var pagetheme2 = acv[1];
                    var pagetheme3 = acv[2];
                    var pagetheme4 = acv[3];
                    var pagetheme5 = acv[4];
                    var pagetheme6 = acv[5];
                    usecolortheme = true;
                }
            }
            var xt = new getObj("vnavtbl");
            if (xt.obj) {
                var jx=xt.obj.rows;
                for (var i=0;i<jx.length;i++) {
                    rname = jx[i].id;
                    xlev = rname.replace("xtr","");
                    xlev = parseInt(xlev);
                    xlev = aC[xlev].catlevel;

                    switch (xlev) {
                        case 0:
                            bgstr = colorvnav1;
                            break;
                        case 1:
                            bgstr = (usecolortheme)?pagetheme3:colorvnav2;
                            break;
                        case 2:
                            bgstr = (usecolortheme)?pagetheme4:colorvnav3;
                            break;
                    }
                    if (jx[i].style) {
                        jx[i].style.backgroundColor = bgstr;
                    }
                }
            }
        }

        if (tbl==1) {
            var xp = new getObj("vptbl");
            if (xp.obj) {
                var px=xp.obj.rows;
                bgpagecolor = (usecolortheme)?pagetheme3:colorvnav2;

                for (var i=0;i<px.length;i++) {
                    pg = px[i].cells;
                    rname = pg[0].id;
                    if (rname.substring(0,2)=="vt") {
                        continue;
                    } else {
                        if (pg[0].style) {
                            px[i].style.backgroundColor = bgpagecolor;
                        }
                    }
                }
            }
        }
    }
}

function onspecial() {
    alert("This feature will soon be available.");
}

function pagewin(nwin) {
    nwin="../"+nwin;
    var h = screen.height //height of screen, not just the parent window
    var w = screen.width //width of the screen, not just the parent window
    var popw = 647;
    var poph = 450;
    var l = parseInt((w-popw)/2);
    var t = parseInt((h-poph)/2);
    var newwin = window.open(nwin,"mywin2","width="+popw+",height="+poph+ ",left="+l+",top="+t+",toolbar=no,scrollbars=yes");
}

// helen from chk.js - start - include later
function isEmail(str) {  // from chk.js
    // returns 0 if valid email, else 1
    var emres = (/^([a-zA-Z0-9_\-])([a-zA-Z0-9_\-\.]*)@(\[((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}|((([a-zA-Z0-9\-]+)\.)+))([a-zA-Z]{2,}|(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\])$/.test(str));
    emres = (emres)?0:1;
    return emres;
}
// helen from chk.js - end

function email(xcode) {
    var df = document.form1;
    var cxt = afx[0].cxt;
    var emailok = 1;                // helen new - valid email = 1, not valid = 0
    if (window.name.length==0) {
        window.name = "main";
    }
    if (xcode) {
    } else {
        var xcode = 0;
    }
    var em = "";
    var xem = new getObj("email");
    if (xem.obj) {
        em = xem.obj.value;
        xem.obj.value = "";  // helen new to clear email field
    }
// helen new start - to test!!!
    if(em!="") {
    if(isEmail(em)) {
            alert("Please, enter valid email address.");
            emailok = 0;
        }
    }
// helen new end
    if (emailok==1) { // helen new valid email condititon
        var hfile = "../popup/emailentry.asp?uid=" + afx[0].uid +"&cid=" + afx[0].clientid + "&cxt=" + cxt  + "&biz=" + bizname + "&e=" + em + "&err=" + xcode + "&eq=" + emailquotingenabled;
        emailwin = window.open(hfile,"emwin","width=1,height=1,left=0,top=0,toolbar=no");
    }                // helen new
}

function emailkey() {
var browserName=navigator.appName;                 // helen new - browser detection
if (browserName=="Microsoft Internet Explorer")    // helen new 
 {                                                 // helen new 
      if (self.event.keyCode==13) {
        email();
    }
 }                                                 // helen new
}

function bookmark() {
    var cxt = afx[0].cxt;
    var catname = afx[0].catname;
    var df = document.form1;
    var leftc = cxt.substring(0,1);
    var bmark = urlname + "process.asp?c=" + cxt;
    var btitle = document.title;
    switch (leftc) {
        case "h":
            btitle = bizname + " - " + TextDecode(btitle);
            break;
        case "p":
            btitle = bizname + " - " + TextDecode(btitle);
            break;
        case "f":
            btitle = bizname + " - " + TextDecode(catname);
            break;
        case "i":
            btitle = bizname + " - " + TextDecode(catname);
            break;
        case "v":
            btitle = bizname + " - View Order";
            break;
        case "c":
            btitle = bizname + " - Checkout";
            break;
        case "x":
            btitle = bizname + " - Account";
            break;
        case "o":
            btitle = bizname + " - Category Overview";
            break;
    }
    window.external.AddFavorite(bmark, btitle);
}

function testprint() {
    var xbody = new getObj("mainbodycell");
    var cxt = afx[0].cxt;
    var cxtchar = cxt.substring(0,1);

    var win1 = window.open(urlname+"catalog/blank.asp", "printwin", "width=700, height=630, location=no, menubar=no, status=no, toolbar=no, scrollbars=auto, resizable=yes");
    if (xbody.obj) {
        var xhtml = xbody.obj.innerHTML;        // the T5 table on any give page
        var phtml = "";
        var xhtmllead = "";
//      var phtml = "<html><head><title>" + bizname + "</title>";
//      phtml += "\n<script language='javascript1.2' type='text/javascript' src='"+urlname+"js/config.js'></script>";
//      phtml += "\n<script language='javascript1.2' type='text/javascript' src='"+urlname+"js/common.js'></script>";
//      phtml += "\n<script language='javascript1.2' type='text/javascript' src='"+urlname+"js/comfr.js'></script>";
//      phtml += "\n<script language='javascript1.2' type='text/javascript' src='"+urlname+"js/nav.js'></script>";
        phtml += "\n<script>\n<!--\nfoo();\n-->\n</script>";
//      phtml += "\n</head><body>";
        phtml += "<table width='100%' cellpadding='2' cellspacing='0' border='0' bgcolor='#CCCCCC'>";
        phtml += "<tr><td align='center' id='btncell' bgcolor='#FFFFFF'><input type='button' value='Print'   onclick='doprint()'>&nbsp;<input type='button' id='btn2' value='Close Window' onclick='window.close()'></td></tr>";
        phtml += "<tr><td><img src='../i/s.gif' border='0' height='5' width='1'></td></tr>";

        phtml += "<tr><td align='center'><iframe name='pframe' id='pframe' height='560' width='655' topmargin='0' leftmargin='0' marginheight='0' marginwidth='0' frameborder='0'></iframe></td></tr>"
        phtml += "<tr><td><img src='../i/s.gif' border='0' height='5' width='1'></td></tr>";
        phtml += "</table>";
//      phtml += "</body></html>";

        var wbody = win1.document.body;
        var wbody2 = printwin.document.body;
        if (wbody) {
            wbody.innerHTML = phtml;
        }
        win1.focus();
        var logorow = "Logo identification row here";
        var xhtmllead = "<html><head>";
        xhtmllead += "\n<link rel='stylesheet' href='../incs/userstyle.css' type='text/css'>";
        xhtmllead += "\n<script language='javascript1.2' type='text/javascript' src='"+urlname+"js/config.js'></script>";
        xhtmllead += "\n<script language='javascript1.2' type='text/javascript' src='"+urlname+"js/common.js'></script>";
        xhtmllead += "\n<script language='javascript1.2' type='text/javascript' src='"+urlname+"js/comfr.js'></script>";
        xhtmllead += "\n<script language='javascript1.2' type='text/javascript' src='"+urlname+"js/nav.js'></script>";
        if (cxtchar=="i") {
            xhtmllead += "\n<script language='javascript1.2' type='text/javascript' src='"+urlname+"js/det.js'></script>";
        }
        if (cxtchar=="f") {
            xhtmllead += "\n<script language='javascript1.2' type='text/javascript' src='"+urlname+"js/feat.js'></script>";
        }
        xhtmllead += "\n<script>\n<!--\nfoo();\n-->\n</script>";
        xhtmllead += "\n</head><body><table cellpadding='0' cellspacing='0' border='0'>";
        xhtmllead += "<tr><td>"+logorow+"</td></tr><tr><td>";
        xhtml = xhtmllead + xhtml + "</td></tr></table></body></html>";

//      win1.document.open();
//      win1.document.write(phtml);
//      win1.document.close();
        win1.focus();
        win1.frames[0].document.open();
        win1.frames[0].document.write(xhtml);
        win1.frames[0].document.close();
    }
}

function doprint() {
    if (win1.frames[0].print) {
        win1.frames[0].print();
    }
}

function gosearch(xcode,o) {
    if (xcode==1) {
        // top search-by dropdown - populate lower dropdown, or run search
        if (o) {
            var idx = o.selectedIndex;
            if (idx>=0) {
                var idxvalue = o.options[idx].value;
                for (var i=0;i<aSearch.length;i++) {
                    if (i==idxvalue) {
                        idx = i;        // now idx = index into aSearch for selected item
                        break;
                    }
                }
            }
            var syscode = -1;
            for (var i=0;i<aSearch.length;i++) {
                aSearch[i].selected = (i==idx)?true:false;
                if (i==idx) {
                    var syscode=aSearch[i].syscode;
                }
                if (i==idx && aSearch[i].smode==0) {
                    afx[0].xtype = aSearch[i].smode;
                    afx[0].xvalue = "";
                    gl(1,"0."+syscode);
                }
            }
            var s2 = new getObj("search2");
            if (idx != 0) {
                if (!s2.obj) {
                    var s2ctrl="<select name='search2' id='search2' onchange='gosearch(2,this)' style='font-family:Helvetica;font-size:8pt;height:18px;width:"+ (t4width-(2*navctrloffset)) + "px;'></select><br><img src='../i/s.gif' width='1' height='12' border='0'>";
                    var s2c = new getObj("searchcell2");
                    if (s2c.obj) {
                        s2c.obj.innerHTML = s2ctrl;
                    }
                    s2 = new getObj("search2");
                }
            }
            if (idx != 0) {
                keysearch = false;
                // clear lower list
                s2.obj.options.length=0;
                // enable/disable it
                s2.obj.disabled=(idx==0)?true:false;
                switch (syscode) {
                    case 0:
                        break;
                    case 1:
                        // by brand
                        var seen = "."
                        var br = "";
                        s2.obj.options[0]=new Option("Choose one...",0);
                        if (aBrands.length==0) {
                            for (var i=0;i<aI.length;i++) {
                                br = trim(aI[i].brand);
                                if (br.length>0 && seen.indexOf("." + br + ".")==-1) {
                                    aBrands[aBrands.length] = br;
                                    seen += br + ".";
                                }
                            }
                            aBrands.sort(gensort);      // alpha sort, in common.js
                        }
                        for (var i=0;i<aBrands.length;i++) {
                            slen = s2.obj.options.length;
                            s2.obj.options[slen]=new Option(TextDecode(aBrands[i]),i);
                            // decode for display, but keep encoded version in array. Option value=slot.
                        }
                        break;

                    case 2:
                        // by price range
                        s2.obj.options[0]=new Option("Choose one...",0);
                        for (var i=0;i<aPrice.length;i++) {
                            if (aPrice[i].pricetype==idx) {
                                slen = s2.obj.options.length;
                                s2.obj.options[slen]=new Option(aPrice[i].text,i);
                            }
                        }
                        break;

                    case 8:
                        // special collections, from collections cache
                        s2.obj.options[0]=new Option("Choose one...",0);
                        for (var i=0;i<aX.length;i++) {
                            if (aX[i].xtype==1) {
                                slen = s2.obj.options.length;
                                s2.obj.options[slen]=new Option(TextDecode(aX[i].xname),i);
                            }
                        }
                        break;
                }
            } else {
                // idx = 0 - search by word
                keysearch = true;
                var cell1w = (t4width - gobuttonwidth - ((2*navctrloffset)+2));
                var s2ctrl = "<table cellspacing='0' cellpadding='0' border='0' width='100%'><tr><td><img src='../i/s.gif' width='"+(cell1w+navctrloffset) +"' height='1' border='0'></td><td><img src='../i/s.gif' width='2' height='1' border='0'></td><td><img src='../i/s.gif' width='"+(gobuttonwidth+navctrloffset)+"' height='1' border='0'></td></tr><tr><td align='right' onmouseover='divhide()' valign='top'><input type='text' name='searchword' id='searchword' class='pbox2' style='width:"+ cell1w + "px;' onkeyup='searchkey()'></td><td><img src='../i/s.gif' width='1' height='1' border='0'></td><td align='left'><img src='../i/go_mail.gif' border='0' id='goimg' name='goimg' onclick='gosearch(2)' onmouseover='divhide();chgcursor(this,1);'></td></tr><tr><td colspan='3' align='center'><span class='emailcapture2'>enter key search word(s)</span></td></tr></table>";

                var s2c = new getObj("searchcell2");
                if (s2c.obj) {
                    s2c.obj.innerHTML = s2ctrl;
                }
            }
        }
    }
    if (xcode==2) {
        // lower search-by dropdown - launch the search
        var stype = 0;
        var haveword = 1;
        var colltype=1; // 0=items, 1=cat's
        for (var i=0;i<aSearch.length;i++) {
            if (aSearch[i].selected == true) {
                stype = aSearch[i].syscode;
                afx[0].xtype=stype;
                break;
            }
        }
        if (o) {
            var idx = o.selectedIndex;
            if (idx > 0) {
                switch (stype) {
                    case 1:
                        var brandslot = o.options[idx].value;
                        afx[0].xvalue = aBrands[brandslot];
                        break;
                    case 2:
                        afx[0].xvalue = o.options[idx].text;
                        break;
                    case 3:
                        afx[0].xvalue = o.options[idx].text;
                        break;
                    case 8:
                        var xslot = o.options[idx].value;
                        afx[0].xvalue = aX[xslot].xid;
                        colltype = 0;
                        break;
                }
            }
        } else {
            // no object passed in, this is the Go btn for word search
            haveword = 0;
            var s2c = new getObj("searchword");
            afx[0].xvalue = "";
            if (s2c.obj) {
                if (s2c.obj.value.length > 0) {
                    haveword = 1;
                    afx[0].xvalue = TextEncode(s2c.obj.value);
                }
            }
        }
        if (haveword==1) {
            var directive = "0."+afx[0].xtype+","+afx[0].xvalue+"!";
            afx[0].xid = directive;
            gl(colltype,directive);
        }
    }
}

function searchkey() {
    var evt = "";
    if (self.event) {
        evt = self.event;
    } else {
        if (arguments.callee.caller.arguments[0]) {
            evt = arguments.callee.caller.arguments[0];
        }
    }
    if (evt.keyCode==13) {
        gosearch(2);
    }
}

function setfoc() {
    if (keysearch==true) {
        var s2 = new getObj("searchword");
    } else {
        var s2 = new getObj("search2");
    }
    if (s2.obj && s2.obj.enabled==true) {
        s2.obj.focus();
    }
}

function setjumpto() {

}

function preImage(arg) {
    if (document.images) {
        rslt = new Image();
        rslt.src = arg;
        return rslt;
    }
}

function checkurl() {
    if (ipd==1) {
        urlname = urlnamei;
        surlname = (sslenabled)?urlname.replace("http://","https://"):urlname;
    }
}

function fsclose() {
    parent.opener.location.href = "../exit.html";
    parent.window.close();
}

function t2(cell,action,o) {
    var onpage=0;
    if (afx[0].pageid) {
        var dfpg = parseInt(afx[0].pageid);
        var onhome=0;
        for (var i=0;i<aP.length;i++) {
            if (aP[i].homepg==1) {
                if (aP[i].pageid==dfpg) {
                    onhome=1;
                }
                break;
            }
        }
        if (aT2[cell].linkid==dfpg || (onhome==1 && aT2[cell].linkid==-1)) {
            onpage=1;
        }
    }

    var newsrc = "";
    var img = "t2_" + cell;
    var xim = new getObj(img);
    switch (action) {
        case 1:
            // over
            newsrc = aT2[cell].onimage;
            if (xim.obj) {
                xim.obj.src = newsrc;
                if (o) {
                    o.style.cursor = (is.pointer)?"pointer":"hand";
                } else {
                    if (xim.style) {
                        xim.style.cursor = (is.pointer)?"pointer":"hand";
                    }
                }
            }
            break;
        case 2:
            // out
            if (onpage==0) {
                newsrc = aT2[cell].offimage;
            } else {
                newsrc = aT2[cell].onimage;
            }
            if (xim.obj) {
                xim.obj.src = newsrc;
            }
            break;
        case 3:
            // click
            var linkid = -1;
            var linktype=-1;
            for (var i=0;i<aT2.length;i++) {
                if (aT2[i].position==cell) {
                    linkid = aT2[i].linkid;
                    linktype = aT2[i].linktype;
                    break;
                }
            }
            if (linktype>0) {
                glink(linkid,linktype);
            }
            break;
    }
}

function t2refresh() {
    var cell=-1;
    if (afx[0].pageid) {
        var dfpg = parseInt(afx[0].pageid);
        var onhome=0;
        for (var i=0;i<aP.length;i++) {
            if (aP[i].homepg==1) {
                if (aP[i].pageid==dfpg) {
                    onhome=1;
                }
                break;
            }
        }
        for (var i=0;i<aT2.length;i++) {
            if (aT2[i].linkid==dfpg || (onhome==1 && aT2[i].linkid==-1)) {
                cell=i;
                break;
            }
        }
    }
    var img = "",xim="",newsrc="";
    for (var i=0;i<aT2.length;i++) {
        if (i==cell) {
            newsrc = aT2[i].onimage;
        } else {
            newsrc = aT2[i].offimage;
        }
        img = "t2_" + i;
        xim = new getObj(img);
        if (xim.obj) {
            xim.obj.src = newsrc;
        }
    }
}
