var generic = generic || {};
generic.env = generic.env || {};
var bb = bb || {};
bb.productView = bb.productView || {}
// TODO: replace with actual RB
bb.rb = bb.rb || {}
bb.rb.product = new Hash({
});

bb.productView.multiple = {
    smallTable : function(args) {
        var containerID = args.containerID || '';
        var containerNode = args.containerNode || $(args.containerID) || null;
        var tableData = args.tableData || [];
        var maxItems = args.maxItems || args.tableData.length;
        
// this.filename = 'product_mini_thumb';
//        var addToBagLink = args.addToBagLink || false;
        
        var buildPanes = function(productDataArray) {
            productDataArray = productDataArray.sortBy( function(p) {
                return p.DISPLAY_ORDER ? p.DISPLAY_ORDER : 0;
            });
            productDataArray.each(function(product, idx) {
                if (maxItems && idx >= maxItems) {
                    throw $break;
                }
                var lastPane = (idx + 1 == maxItems);
                buildPane({
                    productData: product,
                    wrapperID: 'mini-thumb-wrapper-' + idx,
                    paneContainerNode: containerNode,
                    lastPane: lastPane
                });
                var ruleCssClass = (idx + 1 < self.maxItems ? "hr clear" : "clear");
                var rule = new Element('div', {"class": ruleCssClass});
                containerNode.insert(rule);
            });            
        };

        var buildPane = function (args) {
            var wrapperNode = new Element ('div', {"id": args.wrapperID });
            args.paneContainerNode.insert(wrapperNode);            

            bb.productView.multiple.smallThumb({
                productData: args.productData,
                addToBagLink: args.addToBagLink,
                thumbContainerNode: wrapperNode
                // callback : function() {
                //     if (args.lastPane) {
                //         self.containerNode.fire("productPage.miniThumbTable:loaded", self);
                //     }
                // }
            });

        };
        
        buildPanes(tableData);
        
    }, // end smallTable
    
    smallThumb : function(args) {
        // this.filename = 'product_thumb_small';
        productData = args.productData || {};
        thumbContainerNode = args.thumbContainerNode || null;
        addToBagLink = args.addToBagLink || false;
        productData = Object.extend( productData, {
            // priceString: productPage.formatPriceRange(this.productData),
            url_domain : generic.env.domain
        });        
        generic.templatefactory.get({path: '/templates/products/thumb-small.tmpl'}).evaluateCallback({
            object: productData,
            callback: function(html) {
                var dl = new Element ('dl', {"class": "thumb-75x75"});
                dl.insert(html);
                thumbContainerNode.insert(dl);
                var addLink = thumbContainerNode.select("dd.add a")[0];
                if (addLink) {
                    var skus = productData.skus;
                    if (generic.productData.validateSkusArray(skus)) {
                        var btn = bb.productView.addButton({
                            skuBaseId: skus[0].SKU_BASE_ID,
                            addButtonNode: addLink
                        });
                    }
                }
                var quickshopLink = thumbContainerNode.select("dd.quickshop a")[0];
                if (quickshopLink) {
                    // launch QS window
                }
            }
        });
        
    }
};

