try{SC.addVersion('0036', '2.5.000', 'Snap Shop');}catch(err){};
function SCsnapShop() {
        SC.getCookieSupport();
        
        var NULL = null,
        FALSE = false,
        TRUE = true,
        THIS = this,
        WIN = window,
        DOC = document,
        MATH = Math,
        preLoadIcon = NULL,
        preLoadDragTip = NULL,
        iconHolster = NULL,
        iconHolStyle = NULL,
        iconObjStyle = NULL,
        scIsOldIe = (SC.Browser.name == 'ie') && (SC.Browser.version == 6),
        accessIsOpen = FALSE,
        priceUpdaters = {},
        dragObj = NULL,
        dragPos = [],
        objPos = [],
        knowDragCookName = 'scSSknowDrag',
        shipCalcCookName = 'scSMpresets-0148',
        knowDrag = !!SC.getCookie(knowDragCookName),
        dragTipTimer = NULL,
        tipHasShown = FALSE,
        globals = {},
        TEXTtxt = 'text',
        ZEROtxt = '0',
        SPACEtxt = ' ',
        AUTOtxt = 'auto',
        PXtxt = 'px',
        CLASSNAMEtxt = 'className',
        DIVtxt = 'div',
        SPANtxt = 'span',
        LABELtxt = 'label',
        Atxt = 'a',
        LItxt = 'li',
        TABLEtxt = 'table',
        TBODYtxt = 'tbody',
        TRtxt = 'tr',
        THtxt = 'th',
        TDtxt = 'td',
        INPUTtxt = 'input',
        SELECTtxt = 'select',
        FORMtxt = 'form',
        IMGtxt = 'img',
        HIDDENtxt = 'hidden',
        CLICKtxt = 'click',
        KEYUPtxt = 'keyup',
        MOUSEOVERtxt = 'mouseover',
        MOUSEOUTtxt = 'mouseout',
        MOUSEMOVEtxt = 'mousemove',
        MOUSEDOWNtxt = 'mousedown',
        MOUSEUPtxt = 'mouseup',
        SUBMITtxt = 'submit',
        ISTXTtxt = 'isTxt',
        SHOWtxt = 'show',
        _HTMLtxt = '.html',
        MONOGRAMtxt = 'monogram',
        INSCRIPTIONtxt = 'inscription',
        ADDTOCARTtxt = 'Add to Cart',
        UPDATEtxt = 'Update',
        CANCELtxt = 'Cancel',
        IMAGEtxt = 'image',
        WRAPchar = '&#8203;',
        suffixCode = '-0036',
        popClass = 'pop' + suffixCode,
        popId = popClass + '-',
        iconHolId = 'iconHolster' + suffixCode,
        iconObjId = 'iconObj' + suffixCode,
        hoverClass = 'hover' + suffixCode,
        activePopClass = 'activePop' + suffixCode,
        onlyPopClass = 'onlyPop' + suffixCode,
        knowDragClass = 'knowDrag' + suffixCode,
        draggingClass = 'dragging' + suffixCode,
        popTopClass = 'popTop' + suffixCode,
        closeXclass = 'closeX' + suffixCode,
        popAccessClass = 'popAccess' + suffixCode,
        accessOpenClass = 'accessOpen' + suffixCode,
        currTabClass = 'currTab' + suffixCode,
        textClass = TEXTtxt + suffixCode,
        clearerClass = 'clearer' + suffixCode,
        currInsetClass = 'currInset' + suffixCode,
        imgLoadingClass = 'imgLoading' + suffixCode,
        priceUpdatedClass = 'priceUpdated' + suffixCode,
        popInnerClass = 'popInner' + suffixCode,
        popBodyInnerClass = 'popBodyInner' + suffixCode,
        orderLinkClass = 'orderLink' + suffixCode,
        bttnHolClass = 'bttnHol' + suffixCode,
        tabContsMainClass = 'tabContsMain' + suffixCode,
        shipCalcBoxClass = 'shipCalcBox' + suffixCode,
        shipCalcRowClass = 'shipCalcRow' + suffixCode,
        shipTablePadClass = 'shipTablePad' + suffixCode,
        shipLoadingClass = 'shipLoading' + suffixCode,
        shipDoneClass = 'shipDone' + suffixCode,
        accessBoxOuterClass = 'accessBoxOuter' + suffixCode,
        pngAlphaFilterStart = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='",
        pngAlphaFilterEnd = "',sizingMethod='" + IMAGEtxt + "')",
        pngRegex = /\.png$/i,
        callbacks = SC.genCallbacks([
                'init',
                'done',
                'refresh',
                'addToCart',
                'close',
                'changeTab',
                'atcConfirm'
        ]);
        this.callbacks = callbacks;
        
        function setGlobals( valObj ) {
                for (var i in valObj) {
                        globals[i] = valObj[i];
                }
        }
        this.setGlobals = setGlobals;
        
        function item( ev ) {
                var obj = this.parentNode;
                itemID = obj.href.match(/([^\/]+)\.html$/);
                if (itemID) {
                        doPop(itemID[1]);
                        SC.killDefault(ev);
                }
        }
        
        function showIcon( ev ) {
                var obj = this,
                tempImg = SC.getByTag(IMGtxt, obj),
                parNode = iconHolster.parentNode,
                targ = SC.getTarget(ev);
                if ((targ.id == iconHolId) || (targ.id == iconObjId)) {
                        SC.addClass(iconHolster, hoverClass);
                } else {
                        SC.removeClass(iconHolster, hoverClass);
                        if (iconHolster && tempImg && (!parNode || (parNode != obj))) {
                                tempImg = tempImg[0];
                                var tiW = SC.forceInt(tempImg.width),
                                tiH = SC.forceInt(tempImg.height),
                                icW = SC.forceInt(preLoadIcon.width),
                                icHorig = SC.forceInt(preLoadIcon.height),
                                icH = MATH.ceil(icHorig / 2),
                                leftVal = MATH.floor((tiW - icW) / 2) + PXtxt,
                                topVal = ((globals.iconPos === 'top')? 0 : (globals.iconPos === 'bottom')? MATH.floor(tiH - icH) : MATH.floor((tiH - icH) / 2)) + PXtxt;
                                iconObjStyle.width = iconHolStyle.width = icW + PXtxt;
                                iconHolStyle.height = icH + PXtxt;
                                iconObjStyle.height = icHorig + PXtxt;
                                iconHolStyle.left = leftVal; // leftVal;
                                iconHolStyle.top = topVal; // topVal;
                                SC.appElem(iconHolster, obj);
                        }
                }
                SC.killPropagation(ev);
        }
        
        function hideIcon( ev ) {
                SC.killPropagation(ev);
                var obj = this,
                iconParNode = iconHolster.parentNode;
                if (iconHolster && iconParNode && ((iconHolster != obj) && (iconParNode != obj))) {
                        SC.remElem(iconHolster);
                }
        }
        
        function convertImgLink( imgObj ) {
                var imgPar = imgObj.parentNode;
                if  (imgPar && (imgPar.tagName.toLowerCase() == Atxt)) {
                        var imgParStyle = imgPar.style,
                        imgStyle = imgObj.style;
                        imgParStyle.position = 'relative';
                        imgParStyle.zIndex = ZEROtxt;
                        imgParStyle.padding = ZEROtxt;
                        imgParStyle.margin = ZEROtxt + SPACEtxt + AUTOtxt;
                        imgParStyle.display = 'block';
                        imgParStyle.height = imgObj.height + PXtxt;
                        imgParStyle.width = imgObj.width + PXtxt;
                        imgStyle.padding = ZEROtxt;
                        imgStyle.margin = ZEROtxt;
                        SC.addEvt(imgPar, MOUSEOVERtxt, showIcon);
                        SC.addEvt(DOC, MOUSEOVERtxt, hideIcon);
                }
        }
        
        function convertImgLinkOnLoad( ev ) {
                convertImgLink(this);
        }
        
        function convertImgLinks() {
                if(SC.scStCk){
                        var imgsToCheck = SC.getByTag(IMGtxt);
                        for (var i = 0, j = imgsToCheck.length; i < j; i++) {
                                //try {
                                        if (SC.hasClass(imgsToCheck[i], 'popImg' + suffixCode)) {
                                                convertImgLink(imgsToCheck[i]);
                                                SC.addEvt(imgsToCheck[i], 'load', convertImgLinkOnLoad);
                                        }
                                /*} catch (err) {
                                        caresAdapter('1002'); // Contents images not properly classed
                                }*/
                        }
                        callbacks.refresh.run();
                }
        }
        this.convertImgLinks = convertImgLinks;
        
        function findPop( pop ) {
                if (!SC.hasClass(pop, popClass)) {
                        pop = SC.getParent(pop, popClass, CLASSNAMEtxt);
                }
                return pop;
        }

        function PopWinsObj() {
                var popWins = [];
                
                function getPops() {
                        return popWins;
                }
                this.getPops = getPops;
                
                function bringToFront( obj ) {
                        if (obj != popWins[popWins.length - 1].win) {
                                addPop(removePop(obj, TRUE));
                        }
                }
                this.bringToFront = bringToFront;
                
                function addPop( obj, id, name, panel ) {
                        //try {
                                SC.ie6selectFix('hide');
                                var pop = NULL,
                                popLen = popWins.length;
                                if ((SC.typeOf(obj) === 'object') && obj.win) {
                                        pop = obj;
                                } else {
                                        id = id || obj.id;
                                        pop = {win: obj, id: id.replace(popId, '')};
                                        if (name) {
                                                pop.name = name;
                                        }
                                        if (panel) {
                                                pop.panel = panel;
                                        }
                                }
                                if (popLen) {
                                        SC.removeClass(popWins[popLen - 1].win, activePopClass);
                                        if (popLen < 2) {
                                                SC.removeClass(popWins[popLen - 1].win, onlyPopClass);
                                        }
                                } else {
                                        SC.addClass(pop.win, onlyPopClass);
                                }
                                SC.addClass(pop.win, activePopClass);
                                pop.win.style.zIndex = (1000 + popLen);
                                popWins.push(pop);
                                SC.ie6selectFix(SHOWtxt, pop.win);
                                refreshAccessPanels();
                                return pop;
                        /*} catch (err) {
                                caresAdapter('1003'); // Could not add Pop to list
                        }*/
                }
                this.addPop = addPop;
                
                function setPopName( id, name ) {
                        for (var i = 0, j = popWins.length; i < j; i++) {
                                if (popWins[i].id === id) {
                                        popWins[i].name = name;
                                        break;
                                }
                        }
                }
                this.setPopName = setPopName;
                
                function setPopPanel( id, panel ) {
                        for (var i = 0, j = popWins.length; i < j; i++) {
                                if (popWins[i].id === id) {
                                        popWins[i].panel = panel;
                                        break;
                                }
                        }
                }
                this.setPopPanel = setPopPanel;
                
                function removePop( obj, noRefresh ) {
                        //try {
                                var tempWins = [],
                                pop = NULL,
                                popLen = 0;
                                for (var i = 0; i < popWins.length; i++) {
                                        if (popWins[i].win != obj) {
                                                popWins[i].win.style.zIndex = (1000 + i);
                                        } else {
                                                pop = popWins[i];
                                                popWins.splice(i--, 1);
                                        }
                                }
                                popLen = popWins.length;
                                if (popLen > 0) {
                                        if (popLen < 2) {
                                                SC.addClass(popWins[popLen - 1].win, onlyPopClass);
                                        }
                                        SC.addClass(popWins[popLen - 1].win, activePopClass);
                                }
                                if (!noRefresh) {
                                        if (popLen > 0) {
                                                SC.ie6selectFix(SHOWtxt, popWins[popLen - 1].win);
                                        } else {
                                                SC.ie6selectFix();
                                        }
                                        refreshAccessPanels();
                                }
                                return pop;
                        /*} catch (err) {
                                caresAdapter('1004'); // Could not remove pop from list
                        }*/
                }
                this.removePop = removePop;
        }
        
        //try {
                var popWins = new PopWinsObj();
        /*} catch (err) {
                caresAdapter('1005'); // Could not create pop wins class
        }*/
        
        function startDrag( ev ) {
                //try {
                        var pop = findPop(SC.getTarget(ev));
                        if (SC.hasClass(pop, popClass)) {
                                dragObj = pop;
                                dragPos.x = ev.clientX;
                                dragPos.y = ev.clientY;
                                objPos.y = dragObj.offsetTop;
                                objPos.x = dragObj.offsetLeft;
                                SC.addEvt(DOC, MOUSEUPtxt, stopDrag);
                                SC.addEvt(DOC, MOUSEMOVEtxt, doDrag);
                                SC.killDefault(ev);
                        }
                /*} catch (err) {
                        caresAdapter('1006'); // Drag failed
                }*/
        }
        
        function doDrag( ev ) {
                //try {
                        if (dragObj) {
                                if (!knowDrag) {
                                        knowDrag = TRUE;
                                        SC.setCookie(knowDragCookName, 1);
                                        SC.removeEvt(DOC, MOUSEOVERtxt, hideDragTip);
                                        toggDragTip(findPop(SC.getTarget(ev)));
                                }
                                dragObj.style.top = (ev.clientY - dragPos.y + objPos.y) + PXtxt;
                                dragObj.style.left = (ev.clientX - dragPos.x + objPos.x) + PXtxt;
                                SC.addClass(dragObj, draggingClass);
                        }
                        SC.killDefault(ev);
                /*} catch (err) {
                        caresAdapter('1006'); // Drag failed
                }*/
        }
        
        function stopDrag() {
                SC.removeEvt(DOC, MOUSEMOVEtxt, doDrag);
                SC.removeEvt(DOC, MOUSEUPtxt, stopDrag);
                SC.removeClass(dragObj, draggingClass);
                dragObj = NULL;
        }
        
        function noDrag( ev ) {
                var pop = findPop(SC.getTarget(ev));
                SC.killPropagation(ev);
        }
        
        function toFront( ev ) {
                var pop = findPop(SC.getTarget(ev));
                popWins.bringToFront(pop);
        }
        
        function positionBox( obj ) {
                var pops = popWins.getPops(),
                lastPop = pops.length - 2;
                if (lastPop > -1) {
                        obj.style.top = (SC.forceInt(pops[lastPop].win.style.top) + 30) + PXtxt;
                        obj.style.left = (SC.forceInt(pops[lastPop].win.style.left) + 30) + PXtxt;
                } else {
                        SC.centerObj(obj);
                }
        }
        
        function closePop( whichPop, noAnim ) {
                //try {
                        if (!noAnim) {
                                var tmpPop = findPop(whichPop),
                                closeFunc = function() {
                                        popWins.removePop(tmpPop);
                                        SC.remElem(tmpPop);
                                        callbacks.close.run({a: [tmpPop.id]});
                                },
                                popCont = tmpPop.firstChild;
                                while (popCont && !SC.hasClass(popCont, popInnerClass)) {
                                        popCont = popCont.firstChild;
                                        if (popCont.nextSibling) {
                                                popCont = popCont.nextSibling;
                                        }
                                }
                                if (popCont) {
                                        popCont.style.overflow = 'hidden';
                                        (new SC.Anim(popCont, {
                                                cb: closeFunc,
                                                dur: .5,
                                                styles: {
                                                        height: {start: SC.forceInt(popCont.offsetHeight), end: 0}
                                                }
                                        })).run();
                                } else {
                                        closeFunc();
                                }
                        } else {
                                var tmpPop = findPop(whichPop);
                                popWins.removePop(tmpPop);
                                SC.remElem(tmpPop);
                                callbacks.close.run({a: [tmpPop.id]});
                        }
                /*} catch (err) {
                        caresAdapter('1009'); // Pop failed to close cleanly
                }*/
        }
        
        function closeThisPop( ev ) {
                SC.killDefault(ev);
                closePop(SC.getTarget(ev), TRUE);
        }
        
        function closeAllPops( ev ) {
                SC.killDefault(ev);
                var pops = popWins.getPops();
                for (var i = pops.length - 1, j = 0; i >= j; i--) {
                        closePop(pops[i].win, TRUE);
                }
        }
        
        function confirmAtcPop(val){
                if(SC.getCookie("hideConfirmAtcPop") != 1 && val >= 0 && !(window.scMiniCart)){
                        var atcDoneMsgs = "Product was successfully added to cart";
                        var atcWrap = SC.genElem(DIVtxt, {id: "confirmAtcPop"}),
                        atcMsgBox = SC.genElem(DIVtxt, {id: "confirmAtcPopMsg"}),
                        isIE = (SC.Browser.name === 'ie');
                        
                        SC.addElem(DIVtxt,atcMsgBox,{className:"confirmAtcPopTitle", innerTxt: atcDoneMsgs})
                        SC.addEvt(SC.addElem(INPUTtxt,atcMsgBox,{type: "checkbox", id: "confirmAtcPopShow", name: "confirmAtcPopShow"}),"change",function(){
                                if(this.checked)
                                        SC.setCookie('hideConfirmAtcPop', 1, '/', SC.getDomain(), 30);
                                else 
                                        SC.setCookie('hideConfirmAtcPop', 0, '/', SC.getDomain());
                        });
                        SC.addElem(LABELtxt, atcMsgBox, {htmlFor:"confirmAtcPopShow", innerTxt: "Do not display this confirmation message again"})
                        
                        var contShopTag = SC.genElem(Atxt,{className:"confirmAtcPopClose", href: "javascript:void(0)", innerHTML:"<span>Continue Shopping</span>"}),
                        cartConfirmAtcTag = SC.genElem(Atxt,{className:"confirmAtcPopCart", href: SC.getCartURL(), innerHTML:"<span>Checkout</span>"});
                        
                        SC.appElem([
                                contShopTag,
                                SC.genElem(" --OR-- ", ISTXTtxt),
                                cartConfirmAtcTag
                        ], SC.addElem(DIVtxt,atcMsgBox,{className:"confirmAtcPopActions"}))
                        
                        SC.addEvt(contShopTag,"click",closeConfirmAtcPop)
                        SC.addEvt(atcWrap,"click",closeConfirmAtcPop)
                        
                        if (!isIE) {
                                atcMsgBox.style.position = 'fixed';
                        }
                        SC.ie6selectFix('hide');
                        SC.insElem(atcWrap);
                        SC.stretchObj(atcWrap);
                        SC.insElem(atcMsgBox);
                        SC.centerObj(atcMsgBox, 0, !isIE);
                        callbacks.atcConfirm.run({a:[val]});
                }
                
                function closeConfirmAtcPop(ev){
                        SC.killDefault(ev);
                        SC.remElem(atcWrap);
                        SC.remElem(atcMsgBox);
                        SC.ie6selectFix();
                }
        }
        
        function toggDragTip( pop, turnOn ) {
                var pops = popWins.getPops();
                for (var i = 0, j = pops.length; i < j; i++) {
                        if (turnOn && (pop.id === pops[i].win.id)) {
                                SC.removeClass(pops[i].win, knowDragClass);
                        } else {
                                SC.addClass(pops[i].win, knowDragClass);
                        }
                }
        }
        
        function showDragTip( ev ) {
                var targ = SC.getTarget(ev);
                if (!knowDrag) {
                        if (SC.hasClass(targ, closeXclass) || SC.getParent(targ, closeXclass, CLASSNAMEtxt)) {
                                SC.killPropagation(ev);
                                hideDragTip(ev);
                        } else {
                                toggDragTip(findPop(targ), TRUE);
                                SC.addEvt(DOC, MOUSEOVERtxt, hideDragTip);
                        }
                } else {
                        toggDragTip(findPop(targ));
                        SC.removeEvt(SC.getByClass(popTopClass, findPop(targ))[0], MOUSEOVERtxt, hideDragTip);
                }
        }
        
        function hideDragTip( ev ) {
                var targ = SC.getTarget(ev);
                if (!knowDrag) {
                        var notApop = !(SC.hasClass(targ, popTopClass) || SC.getParent(targ, popTopClass, CLASSNAMEtxt)) || SC.hasClass(targ, closeXclass) || SC.getParent(targ, closeXclass, CLASSNAMEtxt),
                        popObj = (notApop)? NULL : findPop(targ);
                        if (notApop) {
                                SC.removeEvt(DOC, MOUSEOVERtxt, hideDragTip);
                        }
                        toggDragTip(popObj, !notApop);
                } else {
                        toggDragTip(findPop(targ));
                        SC.removeEvt(DOC, MOUSEOVERtxt, hideDragTip);
                }
        }
        
        function drawBox( parentObj, boxID ) {
                //try {
                        var pop  = NULL;
                        if (parentObj && parentObj.firstChild) {
                                pop = SC.genElem(DIVtxt, {className: popClass, id: boxID});
                                toggleStatus(pop, TRUE);
                                SC.insElem(pop, parentObj);
                                popWins.addPop(pop, boxID);
                                var popTopElems = [],
                                closeLink = SC.genElem(Atxt, {className: closeXclass, href: '#', title: 'Close'});
                                popTopElems.push(closeLink);
                                if (globals.xImg) {
                                        SC.addElem(IMGtxt, closeLink, {src: globals.xImg, alt: 'X'});
                                } else {
                                        SC.addElem('X', closeLink, ISTXTtxt);
                                }
                                var popTop = SC.genElem(DIVtxt, {className: popTopClass});
                                if (globals.dragTip) {
                                        var tipObj = SC.genElem(DIVtxt, {className: 'dragTip' + suffixCode, src: preLoadDragTip.src}),
                                        tipStyle = tipObj.style;
                                        tipStyle.height = SC.forceInt(preLoadDragTip.height) + PXtxt;
                                        tipStyle.width = SC.forceInt(preLoadDragTip.width) + PXtxt;
                                        if (scIsOldIe && pngRegex.test(globals.dragTip)) {
                                                tipStyle.filter = pngAlphaFilterStart + globals.dragTip + pngAlphaFilterEnd;
                                        } else {
                                                tipStyle.background = "url('" + preLoadDragTip.src + "') no-repeat 0 0";
                                        }
                                        popTopElems.unshift(tipObj);
                                        if (knowDrag) {
                                                toggDragTip(pop);
                                        } else {
                                                toggDragTip(pop, !tipHasShown);
                                                if (!tipHasShown) {
                                                        tipHasShown = TRUE;
                                                        clearTimeout(dragTipTimer);
                                                        dragTipTimer = setTimeout(function(){
                                                                toggDragTip(pop);
                                                        }, 5000);
                                                }
                                                SC.addEvt(popTop, MOUSEOVERtxt, showDragTip);
                                        }
                                }
                                SC.appElem(popTopElems, SC.addElem(DIVtxt, popTop, {className: 'popTopInner' + suffixCode}));
                                var popInner = SC.genElem(DIVtxt, {className: popInnerClass});
                                SC.appElem([popTop, popInner], SC.addElem(DIVtxt, pop, {className: 'popMid' + suffixCode}));
                                var popBody = SC.addElem(DIVtxt, popInner, {className: 'popBody' + suffixCode});
                                SC.addElem(DIVtxt, SC.addElem(DIVtxt, popBody, {className: 'popBodyPad' + suffixCode}), {className: popBodyInnerClass});
                                SC.addEvt(pop, MOUSEDOWNtxt, toFront);
                                SC.addEvt(closeLink, CLICKtxt, closeThisPop);
                                SC.addEvt(popTop, MOUSEDOWNtxt, startDrag);
                                SC.addEvt(closeLink, MOUSEDOWNtxt, noDrag);
                                positionBox(pop);
                        }
                        return pop;
                /*} catch (err) {
                        caresAdapter('1008'); // Could not create Pop
                }*/
        }
        
        function toggleStatus( ssObj, on ) {
                if (ssObj) {
                        var classTxt = 'loading' + suffixCode;
                        if (on) {
                                SC.addClass(ssObj, classTxt);
                        } else {
                                SC.removeClass(ssObj, classTxt);
                        }
                        classTxt = NULL;
                }
        }
        
        function captionClean( caption ) {
                //try {
                        var tmpCap = '';
                        if (SC.typeOf(caption) === 'string') {
                                tmpCap = (globals.doClean)? caption.replace(/\<(?!br|\/?ul|\/?ol|\/?li|\/?dl|\/?dd|\/?dt|\/?p|\/?b|\/?i|\/?em|\/?strong)(?:\s.*?)?\>/ig, SPACEtxt) : caption;
                        }
                        return tmpCap;
                /*} catch (err) {
                        caresAdapter('1011'); // Strip html from caption failed
                }*/
        }
        
        function toggleTab( ev ) {
                //try {
                        var obj = SC.getTarget(ev),
                        objPar, liList, tabNum, tabConts;
                        while (obj && obj.tagName && (obj.tagName.toLowerCase() !== LItxt)) {
                                obj = obj.parentNode;
                        }
                        if (obj) {
                                hideShipCalc(ev);
                                objPar = obj.parentNode;
                                liList = SC.getByTag(LItxt, objPar);
                                liList.pop();
                                tabConts = SC.forceArray(objPar.nextSibling.firstChild.childNodes);
                                tabConts.shift();
                                for (var i = 0, j = liList.length; i < j; i++) {
                                        SC.removeClass(liList[i], currTabClass);
                                        if (liList[i] === obj) {
                                                tabNum = i;
                                        }
                                }
                                SC.addClass(obj, currTabClass);
                                for (var i = 0, j = tabConts.length; i < j; i++) {
                                        if (i == tabNum) {
                                                SC.addClass(tabConts[i], currTabClass);
                                        } else {
                                                SC.removeClass(tabConts[i], currTabClass);
                                        }
                                }
                        }
                        SC.killDefault(ev);
                        callbacks.changeTab.run();
                /*} catch (err) {
                        caresAdapter('1012'); // Failed to switch tabs
                }*/
        }
        
        function getAccessObj( obj ) {
                var accessObj = (SC.hasClass(obj, popAccessClass))? obj : SC.getParent(obj, popAccessClass, CLASSNAMEtxt),
                pops = NULL,
                popVal = NULL;
                if (!accessObj) {
                        popVal = findPop(obj).id.replace(popId, '');
                        pops = popWins.getPops();
                        for (var i = 0, j = pops.length; i < j; i++) {
                                if (popVal === pops[i].id) {
                                        popVal = pops[i];
                                        break;
                                }
                        }
                        accessObj = SC.getParent(popVal.panel, popAccessClass, CLASSNAMEtxt);
                }
                return accessObj;
        }
        
        function toggleAccessFor( obj, turnOn ) {
                if (turnOn) {
                        accessIsOpen = TRUE;
                } else {
                        accessIsOpen = FALSE;
                }
                var accessObj = getAccessObj(obj);
                if (accessObj) {
                        if (turnOn) {
                                SC.addClass(accessObj, accessOpenClass);
                        } else {
                                SC.removeClass(accessObj, accessOpenClass);
                        }
                }
        }
        
        function openAccess( ev ) {
                SC.killDefault(ev);
                var targ = SC.getTarget(ev),
                popObj = findPop(targ);
                if (SC.hasClass(popObj, activePopClass) && !SC.hasClass(popObj, onlyPopClass) && !SC.hasClass(targ, accessOpenClass) && !SC.getParent(targ, accessOpenClass, CLASSNAMEtxt)) {
                        toggleAccessFor(targ, TRUE);
                        SC.addEvt(DOC, MOUSEOVERtxt, closeAccess);
                }
        }
        
        function closeAccess( ev ) {
                SC.killDefault(ev);
                SC.killPropagation(ev);
                var targ = SC.getTarget(ev);
                if (!SC.getParent(targ, activePopClass, CLASSNAMEtxt) || (!SC.hasClass(targ, popAccessClass) && !SC.getParent(targ, popAccessClass, CLASSNAMEtxt))) {
                        var pops = popWins.getPops(),
                        popLen = pops.length;
                        if (popLen) {
                                toggleAccessFor(pops[popLen - 1].panel);
                        }
                        SC.removeEvt(DOC, MOUSEOVERtxt, closeAccess);
                }
        }
        
        function addAccessPanel( innerBody, info ) {
                var popAccess = SC.addElem(DIVtxt, innerBody, {className: popAccessClass});
                SC.addEvt(popAccess, MOUSEOVERtxt, openAccess);
                SC.addElem(IMGtxt, SC.addElem(DIVtxt, popAccess, {className: 'popAccessFoot' + suffixCode}), {src: globals.listImg, alt: '[windows]'});
                var accessBox = SC.addElem(DIVtxt, SC.addElem(DIVtxt, popAccess, {className: accessBoxOuterClass}), {className: 'accessBox' + suffixCode}),
                accessBoxInner = SC.addElem(DIVtxt, SC.addElem(DIVtxt, accessBox, {className: 'accessBoxPad' + suffixCode}), {className: 'accessBoxInner' + suffixCode});
                popWins.setPopPanel(info.id, SC.addElem('ul', accessBoxInner, {className: 'accessBoxList' + suffixCode}));
                var accessBoxFoot = SC.addElem(DIVtxt, accessBoxInner, {className: 'accessBoxFoot' + suffixCode});
                SC.addElem(IMGtxt, accessBoxFoot, {src: globals.listImg, alt: '[windows]'});
                var closeAllA = SC.addElem(Atxt, accessBoxFoot, {innerTxt: 'Close All'});
                if (globals.xAllImg) {
                        SC.addElem(IMGtxt, closeAllA, {src: globals.xAllImg, alt: ' [x]'});
                }
                SC.addEvt(closeAllA, CLICKtxt, closeAllPops);
                refreshAccessPanels();
        }
        
        function writeAccessMsg( obj, len ) {
                var accessObj = getAccessObj(obj),
                msgVal = len + ' window' + ((len > 1)? 's' : '') + ' open';
                if (accessObj) {
                        obj = accessObj.firstChild;
                        if (obj.childNodes.length > 1) {
                                obj.replaceChild(SC.genElem(msgVal, ISTXTtxt), obj.childNodes[1]);
                        } else {
                                SC.addElem(msgVal, obj, ISTXTtxt);
                        }
                }
        }
        
        function popToTop( ev ) {
                SC.killPropagation(ev);
                popWins.bringToFront(SC.getTarget(ev).popObj);
        }
        
        function refreshAccessPanels() {
                var pops = popWins.getPops(),
                popsLen = pops.length,
                panelParStyle = NULL;
                for (var i = 0, j = popsLen; i < j; i++) {
                        var accessList = pops[i].panel;
                        if (accessList) {
                                toggleAccessFor(accessList);
                                writeAccessMsg(accessList, popsLen);
                                SC.orphan(accessList);
                                if (i === j - 1) {
                                        for (var g = popsLen - 1, h = 0; g >= h; g--) {
                                                var liAttr = (g == i)? {className: 'currentPop' + suffixCode} : NULL,
                                                aAttr = {innerHTML: SC.stripHTML(pops[g].name)},
                                                aTag = SC.addElem(Atxt, SC.addElem(LItxt, accessList, liAttr), aAttr);
                                                if (g != i) {
                                                        aTag.popObj = pops[g].win;
                                                        SC.addEvt(aTag, CLICKtxt, popToTop);
                                                }
                                        }
                                        panelParStyle = SC.getParent(accessList, accessBoxOuterClass, CLASSNAMEtxt).style;
                                        panelParStyle.visibility = HIDDENtxt;
                                        panelParStyle.display = 'block';
                                        accessList.style.height = (accessList.scrollHeight > 150)? '150px' : '';
                                        panelParStyle.display = '';
                                        panelParStyle.visibility = '';
                                }
                        }
                }
        }
        
        function calcYouSave( priceVal, saleVal ) {
                priceVal = SC.forceFloat(priceVal);
                saleVal = SC.forceFloat(saleVal);
                return SC.genElem(SPANtxt, {className: 'youSave' + suffixCode, innerTxt: ' - you save: ' + MATH.round(100 * (priceVal - saleVal) / priceVal) + '%'});
        }
        
        function removePriceUpdate( obj ) {
                var updatedObjs = SC.getByClass(priceUpdatedClass, obj);
                for (var i = 0, j = updatedObjs.length; i < j; i++) {
                        SC.removeClass(updatedObjs[i], priceUpdatedClass);
                }
        }
        
        function priceUpdateTimer( obj ) {
                var popObj = findPop(obj);
                clearTimeout(priceUpdaters[popObj.id]);
                priceUpdaters[popObj.id] = setTimeout(function() {
                        clearTimeout(priceUpdaters[popObj.id]);
                        removePriceUpdate(popObj);
                }, 3000);
        }
        
        function syncTabHs( tabArr ) {
                var tabBreak = 2,
                tabH = 0,
                shipCalcTab = SC.getByClass(shipCalcBoxClass, tabArr[1])[0];
                if (shipCalcTab) {
                        tabArr.push(shipCalcTab);
                }
                for (var i = 0, j = tabBreak; i < j; i++) {
                        var tmpTabH = tabArr[i].offsetHeight;
                        if (tmpTabH > tabH) {
                                tabH = tmpTabH;
                        }
                }
                for (var i = tabBreak, j = tabArr.length; i < j; i++) {
                        var tabStyle = tabArr[i].style;
                        tabStyle.height = tabH + PXtxt;
                        tabStyle.overflow = AUTOtxt;
                }
        }
        
        function showShipCalc( ev ) {
                SC.killDefault(ev);
                var mainTab = SC.getByClass(tabContsMainClass, SC.getParent(SC.getTarget(ev), popClass, CLASSNAMEtxt))[0],
                shipBox = SC.getByClass(shipCalcBoxClass, mainTab)[0];
                SC.addClass(mainTab, 'showShip' + suffixCode);
                if (SC.getCookie(shipCalcCookName)) {
                        //if (SC.getByClass(shipTablePadClass, shipBox)[0].hasChildNodes()) {
                                //SC.addClass(shipBox, shipDoneClass);
                        //} else {
                                SC.removeClass(shipBox, shipDoneClass);
                                SC.dispatchEvt(SC.getByTag(FORMtxt, shipBox)[0], SUBMITtxt);
                        //}
                }
        }
        
        function hideShipCalc( ev ) {
                SC.killDefault(ev);
                SC.removeClass(SC.getByClass(tabContsMainClass, SC.getParent(SC.getTarget(ev), popClass, CLASSNAMEtxt))[0], 'showShip' + suffixCode);
        }
        
        function editShipCalc( ev ) {
                SC.killDefault(ev);
                var shipBox = SC.getParent(this, shipCalcBoxClass, CLASSNAMEtxt);
                SC.removeClass(shipBox, shipLoadingClass);
                SC.removeClass(shipBox, shipDoneClass);
        }
        
        function cancelShipCalc( ev ) {
                if (SC.getCookie(shipCalcCookName)) {
                        showShipCalc(ev);
                } else {
                        hideShipCalc(ev);
                }
        }
        
        function calcShipping( ev ) {
                SC.killDefault(ev);
                var formObj = this,
                formElems = SC.getByTag(INPUTtxt, formObj).concat(SC.getByTag(SELECTtxt, formObj)),
                queryObj = {},
                cookieObj = {},
                popIdVal = findPop(formObj).id,
                shipScriptIdVal = 'shipCalcScript-' + popIdVal.replace(popId, '') + suffixCode;
                SC.remElem(SC.$(shipScriptIdVal));
                SC.addClass(formObj.parentNode, shipLoadingClass);
                for (var i = 0, j = formElems.length; i < j; i++) {
                        var tmpVal = (formElems[i].name === 'country')? SC.getValue(formElems[i]) + SPACEtxt + formElems[i].options[formElems[i].selectedIndex].text : SC.getValue(formElems[i]);
                        if(formElems[i].name == "qty")
                                tmpVal = SC.getByClass("qtyIn"+ suffixCode, 'pitHolster' + suffixCode)[0].value;
                        if (tmpVal && formElems[i].name) {
                                queryObj[formElems[i].name] = tmpVal;
                                cookieObj[formElems[i].name] = tmpVal;
                        }
                }
                queryObj.callbackFunc = 'scSnapShop.updateShipCalc';
                queryObj.callbackArg = '"' + popIdVal + '"';
                SC.injElem('script', NULL, {id: shipScriptIdVal, src: SC.genQueryStr(queryObj, 'https://clients.solidcactus.com/shipmanager/getItemRates.php'), type: 'text/javascript'});
                SC.setCookie(shipCalcCookName, SC.toJSON(cookieObj), '/', SC.getDomain());
        }
        
        function updateShipCalc( shipVals, popIdVal ) {
                if (shipVals && popIdVal) {
                        var shipTable = SC.getByClass(shipTablePadClass, SC.$(popIdVal))[0];
                        SC.orphan(shipTable, TRUE);
                        for (var i = 0, j = shipVals.length; i < j; i++) {
                                if (shipVals[i].name && (shipVals[i].price !== 'Restrictions')) {
                                        SC.appElem([
                                                SC.genElem(LABELtxt, {innerHTML: shipVals[i].name + ':'}),
                                                SC.genElem(SPANtxt, {innerHTML: (SC.forceFloat(shipVals[i].price) ? SC.toPrice(shipVals[i].price) : 'Free Shipping')}),
                                                SC.genElem(DIVtxt, {className: clearerClass})
                                        ], SC.addElem(DIVtxt, shipTable, {className: 'shipTableRow' + suffixCode}));
                                }
                        }
                        if (!shipTable.hasChildNodes()) {
                                SC.addElem(DIVtxt, shipTable, {className: 'emptyRates' + suffixCode, innerTxt: 'No applicable shipping methods were found'});
                        }
                        SC.injElem(DIVtxt, shipTable, {className: 'shipTableHd' + suffixCode, innerTxt: 'Shipping Rates' + (globals.scMsg ? '*' : '') + ':'});
                        SC.swapClass(SC.getParent(shipTable, shipCalcBoxClass, CLASSNAMEtxt), shipLoadingClass, shipDoneClass);
                }
        }
        this.updateShipCalc = updateShipCalc;
        
        function injectWrapChars( str ) {
                var tmp = '';
                for (var i = 0, j = str.length; i < j; i++) {
                        tmp += str.charAt(i) + ((SC.Browser.name == 'ie') ? '<wbr>' : WRAPchar);
                }
                return tmp;
        }
        
        function addInfo( ssObj, info ) {
                //try {
                        var infoHol, mainTab, capTab, pitHol, pit, youSave, selsToChk, insToChk, tmpAttr, imgHol, tabArr, mainImg, firstImgLoad, currImg, insetTab, calcLink, shipBox, shipTable, shipForm, shipFormPad, shipCalcPresets, countrySel, countryOpts, countryOpts, cancelLink;
                        
                        if (ssObj && ssObj.appendChild && info) {
                                toggleStatus(findPop(ssObj));
                                
                                popWins.setPopName(info.id, info.name);
                                SC.injElem(Atxt, SC.addElem('h2', ssObj, {innerHTML: info.name}), {href: info.id + _HTMLtxt, innerHTML: ((globals.vmText)? globals.vmText : 'View Full Item Page <b>&raquo;</b>')});
                                
                                infoHol = SC.addElem(DIVtxt, ssObj, {className: 'infoHolster' + suffixCode});
                                
                                SC.injElem('ul', infoHol, {className: 'tabsHd' + suffixCode});
                                SC.addEvt(SC.addElem(SPANtxt, SC.addElem(Atxt, SC.addElem(LItxt, infoHol.firstChild, {className: currTabClass}), {className: 'tabMain' + suffixCode}), {innerTxt: ((globals.otText)? globals.otText : 'Order')}), CLICKtxt, toggleTab);
                                
                                mainTab = SC.genElem(DIVtxt, {className: tabContsMainClass + SPACEtxt + currTabClass});
                                pitHol = SC.addElem(FORMtxt, mainTab, {className: 'pitHolster' + suffixCode});
                                if (info.orderable) {
                                        SC.setAttr(pitHol, {action: SC.getCartURL(), method: 'post'});
                                        if(globals.fSeOpt && false){
                                                SC.addEvt(pitHol, SUBMITtxt, function(tmpTargPop) {
                                                        for(var opts = SC.getByTag("select", this), optslen = opts.length, inc=0; inc<optslen; inc++){
                                                                if(opts[inc].selectedIndex < 1) {
                                                                        SC.killPropagation(tmpTargPop);
                                                                        SC.killDefault(tmpTargPop);
																		var OptName = "";
                    													OptName = opts[inc].name.replace(/vwattr\d*[_]/, "");
																		alert("Please Select a " + OptName);
																		//alert("Please Select an Option");
                                                                        if (window.event) {
                                                                            event.cancelBubble=true;
                                                                            event.returnValue=false;
                                                                        }
                                                                }
                                                        }}
                                                        
                                                        );
                                        }
                                        if (SC.getCookieSupport() > 1) {
                                                function targetForm( ev ) {
                                                        var tmpTargPop = findPop(ssObj);
                                                        if(!globals.snapShopWinStayOpen){
                                                                SC.callbacks.atcDone.add(function(){
                                                                        closePop(tmpTargPop);
                                                                });
                                                        }
                                                        SC.callbacks.atcDone.add(confirmAtcPop);
                                                        callbacks.addToCart.run({a: [ev, tmpTargPop]});
                                                        SC.targetForm(pitHol);
                                                }
                                                
                                                SC.addEvt(pitHol, SUBMITtxt, targetForm);
                                                SC.targetForm(pitHol);
                                        }
                                }
                                pit = SC.addElem(TABLEtxt, pitHol, {className: 'prodInfoTable' + suffixCode});
                                SC.addElem(TBODYtxt, pit);
                                
                                function buildRow( classVal, thVal, tdVal ) {
                                        var tdIsStr = SC.typeOf(tdVal) === 'string',
                                        tdAttrs = tdIsStr ? {innerHTML: tdVal} : NULL,
                                        tmpTD = SC.genElem(TDtxt, tdAttrs),
                                        tBod = pit.firstChild;
                                        SC.addElem(SPANtxt, SC.addElem(LABELtxt, SC.appElem([SC.genElem(THtxt), tmpTD], SC.addElem(TRtxt, tBod, {className: classVal + SPACEtxt + ((tBod.childNodes.length % 2)? 'odd' : 'even') + suffixCode}))[0]), {innerTxt: thVal});
                                        if (!tdIsStr) {
                                                SC.appElem(tdVal, tmpTD);
                                        }
                                        tmpTD = NULL;
                                }
                                
                                if (info.code) {
                                        buildRow('infoCode' + suffixCode, ((globals.cdText)? globals.cdText : 'Item #:'), injectWrapChars(info.code));
                                }
                                
                                if (info.price) {
                                        buildRow('infoPrice' + suffixCode, ((globals.prText)? globals.prText : 'Price:'), SC.toPrice(info.price[0]));
                                }
                                
                                if (info.saleprice) {
                                        youSave = NULL;
                                        if (info.price) {
                                                youSave = calcYouSave(info.price[0], info.saleprice[0]);
                                        }
                                        buildRow('infoSale' + suffixCode, ((globals.spText)? globals.spText : 'Sale Price:'), [SC.genElem(SC.toPrice(info.saleprice[0]), ISTXTtxt), youSave]);
                                }
                                
                                if (info.orderable && info.options) {
                                        //try {
                                                selsToChk = [];
                                                insToChk = [];
                                                function updatePrices( ev ) {
                                                        var priceBase = (info.price ? SC.forceFloat(info.price[0]) : 0.0),
                                                        saleBase = (info.saleprice ? SC.forceFloat(info.saleprice[0]) : 0.0),
                                                        priceBox = SC.getByClass('infoPrice' + suffixCode, SC.getParent(SC.getTarget(ev), TABLEtxt))[0],
                                                        saleBox = SC.getByClass('infoSale' + suffixCode, SC.getParent(SC.getTarget(ev), TABLEtxt))[0];
                                                        if (priceBox) {
                                                                priceBox = SC.getByTag(TDtxt, priceBox)[0];
                                                        }
                                                        if (saleBox) {
                                                                saleBox = SC.getByTag(TDtxt, saleBox)[0];
                                                        }
                                                        for (var i = 0, j = selsToChk.length; i < j; i++) {
                                                                var optCost = SC.getValue(selsToChk[i]).match(/\((.+?)\)/);
                                                                if (optCost) {
                                                                                                                                        var optSplit = optCost[1].split("$");
                                                                                                                                        if (optSplit[0] == "-") {
                                                                                                                                                priceBase -= SC.forceFloat(optCost[1]);
                                                                        saleBase -= SC.forceFloat(optCost[1]);
                                                                                                                                        } else {
                                                                        priceBase += SC.forceFloat(optCost[1]);
                                                                        saleBase += SC.forceFloat(optCost[1]);
                                                                                                                                        }
                                                                }
                                                        }
                                                        for (var i = 0, j = insToChk.length; i < j; i++) {
                                                                if (SC.getValue(insToChk[i])) {
                                                                        priceBase += SC.getPersCharge();
                                                                        saleBase += SC.getPersCharge();
                                                                        break;
                                                                }
                                                        }
                                                        if (priceBox) {
                                                                if (SC.forceFloat(priceBox.innerHTML) !== priceBase) {
                                                                        priceBox.innerHTML = SC.toPrice(priceBase);
                                                                        SC.addClass(SC.getParent(priceBox, TRtxt), priceUpdatedClass);
                                                                        priceUpdateTimer(priceBox);
                                                                }
                                                        }
                                                        if (saleBox) {
                                                                var youSave = NULL;
                                                                if (SC.forceFloat(saleBox.innerHTML) !== saleBase) {
                                                                        if (info.price) {
                                                                                youSave = calcYouSave(priceBase, saleBase);
                                                                        }
                                                                        SC.orphan(saleBox);
                                                                        SC.appElem([SC.genElem(SC.toPrice(saleBase), ISTXTtxt), youSave], saleBox);
                                                                        SC.addClass(SC.getParent(saleBox, TRtxt), priceUpdatedClass);
                                                                        priceUpdateTimer(saleBox);
                                                                }
                                                        }
                                                }
                                                
                                                for (var i in info.options) {
                                                        var tdVal = '';
                                                        if (i.toLowerCase() == MONOGRAMtxt) {
                                                                tdVal = [];
                                                                for (var g = 1, h = 3; g <= h; g++) {
                                                                        var tmpMon = SC.genElem(INPUTtxt, {className: MONOGRAMtxt + suffixCode + SPACEtxt + textClass, type: TEXTtxt, name: 'vw-initial' + g, size: 1, maxLength: 1});
                                                                        tdVal.push(tmpMon);
                                                                        insToChk.push(tmpMon);
                                                                        SC.addEvt(tmpMon, KEYUPtxt, updatePrices);
                                                                }
                                                        } else if ((info.options[i][0].toLowerCase() == INSCRIPTIONtxt) && (info.options[i].length > 1)) {
                                                                tdVal = SC.genElem(INPUTtxt, {className: INSCRIPTIONtxt + suffixCode + SPACEtxt + textClass, type: TEXTtxt, name: ('vw-inscription-' + SC.hexEncode(i)), size: info.options[i][1], maxLength: info.options[i][1]});
                                                                insToChk.push(tdVal);
                                                                SC.addEvt(tdVal, KEYUPtxt, updatePrices);
                                                        } else {
                                                                var optNodes = [];
                                                                for (var j = 0, k = info.options[i].length; j < k; j++) {
                                                                        optNodes.push(SC.genElem('option', {value: info.options[i][j], innerTxt: info.options[i][j]}));
                                                                }
                                                                tdVal = SC.genElem(SELECTtxt, {name: i});
                                                                SC.appElem(optNodes, tdVal);
                                                                selsToChk.push(tdVal);
                                                                SC.addEvt(tdVal, 'change', updatePrices);
                                                                optNodes = NULL;
                                                        }
                                                        buildRow('infoOpts' + suffixCode, (SC.stripHTML(i) + ':'), tdVal);
                                                        tdVal = NULL;
                                                }
                                        /*} catch (err) {
                                                caresAdapter('1014'); // Could not parse or add options to pop
                                        }*/
                                }
                                
                                if (info.availability) {
                                        buildRow('infoAvail' + suffixCode, ((globals.avText)? globals.avText : 'Availability:'), info.availability);
                                }
                                
                                if (info.orderable) {
                                        buildRow('infoQty' + suffixCode, ((globals.qtText)? globals.qtText : 'Quantity:'), SC.genElem(INPUTtxt, {name: 'vwquantity', className: 'qtyIn' + suffixCode + SPACEtxt + textClass, type: TEXTtxt, value: (info.minQty ? info.minQty : (globals.minQty ? globals.minQty : 1))}));
                                }
                                
                                function addQtyTable() {
                                        var iMinimumQty = info.minQty ? info.minQty : (globals.minQty ? globals.minQty : 1);
                                        var qtyPrice = (info.saleprice)? (info.saleprice.length > 1)? info.saleprice.slice() : NULL : (info.price && info.price.length > 1)? info.price.slice() : NULL;
                                        if (qtyPrice) {
                                                //qtyPrice.unshift(info.minQty ? info.minQty : (globals.minQty ? globals.minQty : 1));
                                                qtyPrice.unshift(1);
                                                var qtyTbl = SC.addElem(TBODYtxt, SC.addElem(TABLEtxt, pitHol, {className: 'qtyTable' + suffixCode, cellPadding: 0, cellSpacing: 0})),
                                                qtyLen = qtyPrice.length,
                                                qtyCols = 4, // should be 2x the actual amount of Column sets (qty - price)
                                                qtyRows = Math.ceil(qtyLen / qtyCols);
                                                SC.addElem(THtxt, SC.addElem(TRtxt, qtyTbl), {colSpan: qtyCols.toString(), innerTxt: 'Quantity Pricing'})
                                                for (var i = 0, j = qtyRows; i < j; i++) {
                                                        var tmpRow = SC.addElem(TRtxt, qtyTbl, {className: (i % 2)? 'odd' + suffixCode : 'even' + suffixCode});
                                                        /*if (i === 0) {
                                                                SC.addElem(THtxt, tmpRow, {rowSpan: qtyRows.toString(), innerTxt: 'Qty Prices'});
                                                        }*/
                                                        for (var g = i * qtyCols, h = g + qtyCols; g < h; g++) {
                                                                var tdAttr = {};
                                                                if (g % 2) {
                                                                        if (g < qtyLen) {
                                                                                tdAttr.innerTxt = SC.toPrice(SC.forceFloat(qtyPrice[g]) / SC.forceInt(qtyPrice[g - 1])) + " ea.";
                                                                        }
                                                                        tdAttr.className = 'priceCell' + suffixCode;
                                                                } else {
                                                                        if (g < qtyLen) {
                                                                                var currQty = SC.forceInt((i==0 && g == 0 && iMinimumQty > 0) ? iMinimumQty : qtyPrice[g]);
                                                                                tdAttr.innerHTML = currQty.toString();
                                                                                if ((g + 2) < qtyPrice.length) {
                                                                                        var nextQty = SC.forceInt(qtyPrice[g + 2]) - 1;
                                                                                        if (nextQty > currQty) {
                                                                                                tdAttr.innerHTML += ((SC.Browser.name == 'ie') ? '-' : (WRAPchar + '-' + WRAPchar)) + nextQty.toString();
                                                                                        }
                                                                                } else {
                                                                                        tdAttr.innerHTML += '+';
                                                                                }
                                                                        }
                                                                        tdAttr.className = 'qtyCell' + suffixCode;
                                                                }
                                                                SC.addElem(TDtxt, tmpRow, tdAttr);
                                                        }
                                                }
                                        }
                                }
                                addQtyTable();
                                
                                if (info.orderable) {
                                        if (globals.atcImg) {
                                                tmpAttr = {
                                                        type: IMAGEtxt,
                                                        src: globals.atcImg,
                                                        alt: ADDTOCARTtxt
                                                };
                                        } else {
                                                tmpAttr = {
                                                        type: SUBMITtxt,
                                                        value: ADDTOCARTtxt
                                                };
                                        }
                                        tmpAttr.className = 'atcBttn' + suffixCode;
                                        
                                        var addToCartBtn=SC.genElem(INPUTtxt, tmpAttr);
                                        
                                        if(globals.fSeOpt){
                                                
                                                addToCartBtn.onclick=function() {
                                                        for(var opts = SC.getByTag("select", this.form), optslen = opts.length, inc=0; inc<optslen; inc++){
                                                                if(opts[inc].selectedIndex < 1) {
                                                                        //SC.killPropagation();
                                                                        //SC.killDefault();
																		var OptName = "";
                    													OptName = opts[inc].name.replace(/vwattr\d*[_]/, "");
																		alert("Please Select a " + OptName);
                                                                        //alert("Please Select an Option");
                                                                        if (window.event) {
                                                                            event.cancelBubble=true;
                                                                            event.returnValue=false;
                                                                        }
                                                                        return false;
                                                                }
                                                        }
                                                        return true;
                                                        }
                                        
                                                //SC.addEvt(addToCartBtn, CLICKtxt, 
                                                        
                                                  //      );
                                        }
                                        
                                        SC.appElem([
                                                addToCartBtn,
                                                SC.genElem(INPUTtxt, {name: 'vwcatalog', type: HIDDENtxt, value: SC.getStoreId()}),
                                                SC.genElem(INPUTtxt, {name: 'vwitem', type: HIDDENtxt, value: info.id})
                                        ], SC.addElem(DIVtxt, pitHol, {className: bttnHolClass}));


                                        
                                        
                                        tmpAttr = NULL;
                                } else {
                                        SC.addElem(DIVtxt, pitHol, {className: 'outOfStockMsg' + suffixCode, innerHTML: (info.osText || globals.osText || 'Sorry, we are temporarily out of stock')});
                                }
                                
                                imgHol = SC.genElem(DIVtxt, {className: 'imgHolster' + suffixCode});
                                
                                tabArr = [imgHol, mainTab];
                                if (info.caption) {
                                        capTab = SC.genElem(DIVtxt, {className: 'tabContsCaption' + suffixCode, innerHTML: info.caption});
                                        tabArr.push(capTab);
                                        SC.addEvt(SC.addElem(SPANtxt, SC.addElem(Atxt, SC.addElem(LItxt, infoHol.firstChild, {className: 'tabCaption' + suffixCode})), {innerTxt: ((globals.dtText)? globals.dtText : 'Description')}), CLICKtxt, toggleTab);
                                }
                                
                                if (info.images) {
                                        mainImg = SC.addElem(IMGtxt, imgHol, {src: info.images[0].ssM, alt: info.name});
                                        firstImgLoad = TRUE;
                                        SC.addClass(mainImg.parentNode, imgLoadingClass);
                                        function loadDone( ev ) {
                                                SC.removeClass(mainImg.parentNode, imgLoadingClass);
                                                if (firstImgLoad) {
                                                        firstImgLoad = FALSE;
                                                        syncTabHs(tabArr);
                                                }
                                        }
                                        SC.addEvt(mainImg, 'load', loadDone);
                                        if (info.images.length > 1) {
                                                function swapInset( ev ) {
                                                        currImg = SC.getTarget(ev);
                                                }
                                                
                                                function showInset( ev ) {
                                                        var currInset = SC.getTarget(ev),
                                                        allInsets = currInset.parentNode.parentNode.childNodes;
                                                        mainImg.src = currInset.mainSrc;
                                                        SC.addClass(mainImg.parentNode, imgLoadingClass);
                                                        for (var i = 0, j = allInsets.length; i < j; i++) {
                                                                SC.removeClass(allInsets[i], currInsetClass);
                                                        }
                                                        SC.addClass(currInset.parentNode, currInsetClass);
                                                }
                                                
                                                function defaultInset( ev ) {
                                                        SC.dispatchEvt(currImg, MOUSEOVERtxt, 'MouseEvents');
                                                }
                                                
                                                SC.addEvt(SC.addElem(SPANtxt, SC.addElem(Atxt, SC.addElem(LItxt, infoHol.firstChild, {className: 'tabInsets' + suffixCode})), {innerTxt: ((globals.itText)? globals.itText : 'More Images')}), CLICKtxt, toggleTab);
                                                insetTab = SC.genElem(DIVtxt, {className: 'tabContsInsets' + suffixCode});
                                                tabArr.push(insetTab);
                                                for (var i = 0, j = info.images.length; i < j; i++) {
                                                        var tmpImg = SC.addElem(IMGtxt, SC.addElem(Atxt, insetTab, ((i === 0)? {className: currInsetClass} : null)), {src: info.images[i].ssI, mainSrc: info.images[i].ssM, alt: info.name});
                                                        if (i === 0) {
                                                                currImg = tmpImg;
                                                        }
                                                        SC.addEvt(tmpImg, CLICKtxt, swapInset);
                                                        SC.addEvt(tmpImg, MOUSEOVERtxt, showInset);
                                                        SC.addEvt(tmpImg, MOUSEOUTtxt, defaultInset);
                                                }
                                        }
                                }
                                
                                if (globals.shipCalc && info.hasShipCalc && (info.price || info.saleprice) && info.orderable) {
                                        calcLink = SC.injElem(Atxt, SC.getByClass(bttnHolClass, pitHol)[0], {className: 'shipLink' + suffixCode, innerTxt: 'Calculate Shipping'})
                                        if (globals.csImg) {
                                                SC.orphan(calcLink);
                                                SC.injElem(IMGtxt, calcLink, {src: globals.csImg, alt: 'Calculate Shipping'});
                                        }
                                        SC.addEvt(calcLink, CLICKtxt, showShipCalc);
                                        shipBox = SC.addElem(DIVtxt, mainTab, {className: shipCalcBoxClass});
                                        shipTable = SC.genElem(DIVtxt, {className: 'shipTable' + suffixCode});
                                        shipForm = SC.appElem([
                                                SC.genElem(FORMtxt),
                                                shipTable
                                        ], shipBox)[0];
                                        shipFormPad = SC.addElem(DIVtxt, shipForm, {className: 'shipFormPad' + suffixCode});
                                        shipCalcPresets = SC.fromJSON(SC.getCookie(shipCalcCookName)) || {};
                                        SC.addEvt(shipForm, SUBMITtxt, calcShipping);
                                        SC.addElem(DIVtxt, shipTable, {className: shipTablePadClass});
                                        SC.addElem(INPUTtxt, SC.appElem([
                                                SC.genElem(LABELtxt, {innerTxt: 'Zip Code:'}),
                                                SC.genElem(SPANtxt),
                                                SC.genElem(DIVtxt, {className: clearerClass})
                                        ], SC.addElem(DIVtxt, shipFormPad, {className: shipCalcRowClass}))[1], {className: textClass + ' zip' + suffixCode, type: TEXTtxt, name: 'zip', value: shipCalcPresets.zip || ''});
                                        SC.addElem(INPUTtxt, SC.appElem([
                                                SC.genElem(LABELtxt, {innerTxt: 'State:'}),
                                                SC.genElem(SPANtxt),
                                                SC.genElem(DIVtxt, {className: clearerClass})
                                        ], SC.addElem(DIVtxt, shipFormPad, {className: shipCalcRowClass}))[1], {className: textClass + ' state' + suffixCode, type: TEXTtxt, name: 'province', value: shipCalcPresets.province || ''});
                                        if (info.countrySel) {
                                                countrySel = SC.getByTag(SELECTtxt, SC.appElem([
                                                        SC.genElem(LABELtxt, {innerTxt: 'Country:'}),
                                                        SC.genElem(SPANtxt, {innerHTML: info.countrySel}),
                                                        SC.genElem(DIVtxt, {className: clearerClass})
                                                ], SC.addElem(DIVtxt, shipFormPad, {className: shipCalcRowClass}))[1])[0];
                                                if (countrySel) {
                                                        countryOpts = countrySel.options;
                                                        for (var i = 0, j = countryOpts.length; i < j; i++) {
                                                                if ((countryOpts[i].value + SPACEtxt + countryOpts[i].text) === shipCalcPresets.country) {
                                                                        countrySel.selectedIndex = i;
                                                                }
                                                        }
                                                }
                                        }
                                        SC.appElem([
                                                SC.genElem(INPUTtxt, {type: HIDDENtxt, name: 'unitPrice', value: SC.forceFloat((info.saleprice || info.price)[0])}),
                                                SC.genElem(INPUTtxt, {type: HIDDENtxt, name: 'itemid', value: info.id}),
                                                SC.genElem(INPUTtxt, {type: HIDDENtxt, name: 'storeid', value: SC.getStoreId()}),
                                                SC.genElem(INPUTtxt, {type: HIDDENtxt, name: 'qty', value: 1})
                                        ], shipForm);
                                        SC.addEvt(SC.injElem(Atxt, shipForm, {className: orderLinkClass, innerTxt: 'Back to Order'}), CLICKtxt, hideShipCalc);
                                        cancelLink = SC.addElem(Atxt, shipForm, {className: 'cancelLink' + suffixCode});
                                        if (globals.cscImg){
                                                SC.addElem(IMGtxt, cancelLink, {alt: CANCELtxt, src: globals.cscImg});
                                        } else {
                                                SC.addElem(CANCELtxt, cancelLink, ISTXTtxt);
                                        }
                                        SC.addEvt(cancelLink, CLICKtxt, cancelShipCalc);
                                        if (globals.uscImg) {
                                                tmpAttr = {
                                                        type: IMAGEtxt,
                                                        src: globals.uscImg,
                                                        alt: UPDATEtxt
                                                };
                                        } else {
                                                tmpAttr = {
                                                        type: SUBMITtxt,
                                                        value: UPDATEtxt
                                                };
                                        }
                                        tmpAttr.className = 'updateBttn' + suffixCode;
                                        SC.addElem(INPUTtxt, shipForm, tmpAttr);
                                        SC.addEvt(SC.injElem(Atxt, shipTable, {className: 'editLink' + suffixCode, innerTxt: 'Edit Shipping Info'}), CLICKtxt, editShipCalc);
                                        SC.addEvt(SC.injElem(Atxt, shipTable, {className: orderLinkClass, innerTxt: 'Back to Order'}), CLICKtxt, hideShipCalc);
                                        if (info.scMsg || globals.scMsg) {
                                                SC.addElem(DIVtxt, shipTable, {className: 'shipCalcDisclaimer' + suffixCode, innerHTML: '*' + (info.scMsg || globals.scMsg)});
                                        }
                                }
                                
                                SC.appElem(tabArr, SC.addElem(DIVtxt, SC.addElem(DIVtxt, infoHol, {className: 'tabContsPad' + suffixCode}), {className: 'tabConts' + suffixCode}));
                                syncTabHs(tabArr);
                                
                                SC.addElem(SPANtxt, SC.addElem(Atxt, SC.addElem(LItxt, infoHol.firstChild, {className: 'viewCartTab' + suffixCode}), {href: SC.getCartURL()}), {innerTxt: ((globals.vmText)? globals.vmText : 'View Cart')});
                                
                                addAccessPanel(ssObj, info);
                                
                                positionBox(findPop(ssObj));
                                
                                for (var i = 0, j = (info.images)? info.images.length : 0; i < j; i++) {
                                        SC.preLoadImg(info.images[i].ssM);
                                        SC.preLoadImg(info.images[i].ssI);
                                }
                        }
                /*} catch (err) {
                        caresAdapter('1013'); // Could not add info to pop
                }*/
        }
        
        function parseAjax( responseVal ) {
                //try {
                        if (!responseVal) {
                                return NULL;
                        }
                        var infoMatch = responseVal.match(/\<\!\-\-sc\-tag\-start ((?:.|\n|\r)*?) sc\-tag\-end\-\-\>/),
                        captionMatch = NULL,
                        countryMatch = NULL,
                        info = NULL;
                        if (infoMatch) {
                                info = SC.fromJSON(infoMatch[1]);
                                info.name = captionClean(info.name);
                                captionMatch = responseVal.match(/\<\!\-\-sc\-caption\-start\-\-\>((?:.|\n|\r)*?)\<\!\-\-sc\-caption\-end\-\-\>/);
                                if (captionMatch) {
                                        //try {
                                                info.caption = captionClean(captionMatch[1]);
                                        /*} catch (err) {
                                                caresAdapter('1018'); // Failed on caption parsing
                                        }*/
                                }
                                if (/shippingMgrForm\-0148/.test(responseVal)) {
                                        info.hasShipCalc = TRUE;
                                        countryMatch = responseVal.match(/\<select[^\>]+shippingMgrCountry\-0148.*?\<\/select\>/);
                                        if (countryMatch) {
                                                info.countrySel = countryMatch[0].replace(/\<select[^\>]+/, '<select name="country" class="country' + suffixCode + '"');
                                        } else {
                                                                                        info.countrySel = '<select name="country" class="country-0061"><option value="US">United States</option></select>';
                                                                                }
                                }
                        }
                        return info;
                /*} catch (err) {
                        caresAdapter('1017'); // Failed to parse ajax return
                }*/
        }
        
        function doPop( id ) {
                if (id) {
                        var pObj = SC.getByTag('body')[0],
                        boxID = popId + id;
                        if (!SC.$(boxID)) {
                                var ssBox = drawBox(pObj, boxID);
                                        function getInfo( responseVal ){
                                                var sizes = SC.getViewSize(),
                                                offsets = SC.getPageOffset(),
                                                yVal,
                                                popCont = SC.getByClass(popInnerClass, ssBox)[0],
                                                popContStyle = popCont.style,
                                                popContPar = popCont.parentNode,
                                                popContParStyle = popContPar.style;
                                                popContStyle.visibility = 'hidden';
                                                popContStyle.display = 'none';
                                                popContParStyle.overflow = 'visible';
                                                popContParStyle.height = SC.forceInt(popContPar.offsetHeight) + 'px';
                                                popContStyle.display = '';
                                                addInfo(SC.getByClass(popBodyInnerClass, ssBox)[0], parseAjax(responseVal));
                                                yVal = MATH.round((sizes.h / 2) - (popCont.offsetHeight / 2) + offsets.h);
                                                setTimeout(function() {
                                                        popContStyle.overflow = 'hidden';
                                                        popContStyle.visibility = '';
                                                        popContParStyle.height = '';
                                                        popContParStyle.overflow = '';
                                                }, 5);
                                                (new SC.Anim(popCont, {
                                                        cb: function() {
                                                                popContStyle.overflow = '';
                                                        },
                                                        dur: .5,
                                                        styles: {
                                                                height: {end: SC.forceInt(popCont.offsetHeight)}
                                                        }
                                                })).run();
                                                if (popWins.getPops().length < 2) {
                                                        (new SC.Anim(ssBox, {
                                                                cb: function() {
                                                                        ssBox.style.top = yVal + 'px';
                                                                },
                                                                dur: .5,
                                                                styles: {
                                                                        top: {start: SC.forceInt(ssBox.style.top), end: yVal}
                                                                }
                                                        })).run();
                                                }
                                                callbacks.done.run({a: [boxID]});
                                        }
                                        SC.ajax({url: id + _HTMLtxt, cb: getInfo, cached: TRUE});
                        } else {
                                popWins.bringToFront(SC.$(boxID));
                        }
                }
        }
        this.doPop = doPop;
        
        this.init = function() {
                SC.scSetFuncs(THIS);
                callbacks.init.run();
                if (WIN.scDp2DrawCallback) {
                        scDp2DrawCallback.add(convertImgLinks);
                }
                if (globals.iconImg && globals.iconImg) {
                        //try {
                                preLoadIcon = new Image();
                                preLoadIcon.src = globals.iconImg = SC.preLoadImg(globals.iconImg);
                                preLoadDragTip = new Image();
                                preLoadDragTip.src = globals.dragTip = SC.preLoadImg(globals.dragTip);
                                globals.listImg = SC.preLoadImg(globals.listImg);
                                globals.xImg = SC.preLoadImg(globals.xImg);
                                globals.xAllImg = SC.preLoadImg(globals.xAllImg);
                                SC.preLoadImg('scSStopLoading.gif');
                                SC.preLoadImg('scSSloading.gif');
                                iconHolster = SC.genElem(DIVtxt, {id: iconHolId});
                                iconHolStyle = iconHolster.style;
                                iconObjStyle = SC.injElem(DIVtxt, iconHolster, {id: iconObjId}).style;
                                if (scIsOldIe && pngRegex.test(globals.iconImg)) {
                                        iconObjStyle.filter = pngAlphaFilterStart + globals.iconImg + pngAlphaFilterEnd;
                                } else {
                                        iconObjStyle.backgroundImage = 'url("' + globals.iconImg + '")';
                                }
                                SC.addEvt(iconHolster, CLICKtxt, item);
                        /*} catch (err) {
                                caresAdapter('1001'); // Failed to create Snap Shop Icon
                        }*/
                }
                convertImgLinks();
        };
}

var scSnapShop = new SCsnapShop();

