var cl = cl || {};

// WDR 9/23/11: Made a standalone cart overlay object.
// This is so the cart can be shown/hidden independent of the generic.overlay.launch object,
// which is a singleton.

cl.cartOverlay = {

    getMessage: function(cartMethod) {
        if (!cartMethod) {
            return null;
        }
        var rbLanguageHash = generic.rb('language');
        var msgs = {
            "add": rbLanguageHash.get("the_following_added_to_cart_txt")
        };
        if (msgs[cartMethod]) {
            return msgs[cartMethod];
        } else {
            return null;
        }
    },
    
    hide: function() {
		var cartNode = $('cart-overlay-wrapper');
		cartNode.hide();
		document.fire('dropcart:finished');
    },
    
    launch: function(cartResponseObj) {
        if (typeof cartResponseObj.getItem !== "function") {
            return;
        }
        
        /* WDR 6/9/11: Tweaked for CL */
        /* WDR 9/12/11: Fixed (again) for multiple skus added */
        
        var cartMethod = cartResponseObj.getMethod();
        var totalCartItems = generic.checkout.cart.getTotalShoppedItems();
        var cartItem = cartResponseObj.getItem();
        var cartItems = cartResponseObj.getItems();
        
        var cartMessage = ( cartItems.length > 1 ? 
        					generic.rb('language').get('items_added_to_cart') : 
        					generic.rb('language').get('item_added_to_cart') );
        					
        var totalCartItemsMessage = ( totalCartItems > 1 ?
        					generic.rb('language').get('items_in_cart') : 
        					totalCartItems == 1 ?
        					generic.rb('language').get('one_item_in_cart') : 
        					generic.rb('language').get('no_items_in_cart') );
       
       	totalCartItemsMessage = totalCartItemsMessage.replace(/::items::/g,totalCartItems);

        var cartInfo = {
        	totalCartItems: totalCartItems,
        	cartMessage: cartMessage,
        	totalCartItemsMessage: totalCartItemsMessage
        };
        
        var cartRows = '';

		// Load these first.  We'll reference them below.
		// Doing both this way lets us leverage some multi-threads on the ajax end.
        var cartRowTmpl = generic.templatefactory.get({path:"/templates/cart-overlay-row.tmpl"});
        var params = page_data['today_param'] ? '?today='+page_data['today_param'] : '';
        var cartOverlayTmpl = generic.templatefactory.get({path:"/templates/cart-overlay.tmpl"+params, forceReload: true});

        cartRowTmpl.evaluateCallback({
        	callback: function(cartRowHtml) {
        		// When we're here, we know we have the cart row template.
        		// Loop thru our cart items and make the output rows.
        		$A(cartItems).each(function(item){
        			// If we have a collection id and no item type,
        			// this is probably just the repl item.  Skip it.
        			if ( item.COLLECTION_ID && !item.itemType ) {
        			}
        			else {
        				cartRows += cartRowTmpl.evaluate(item);
        			}
        		});
        		
        		// Add the rows to our main info object.
        		// Then we can get the main cart overlay and launch the thingy.
        		cartInfo.cartRowData = cartRows;
        		
                //NEED TO ADD THE GWP-OFFER OVERLAY HERE !
                
		        cartOverlayTmpl.evaluateCallback({
		        	object: cartInfo,
		        	callback: function(cartInfoHtml) {
		        		
						var self = this;
		        		var cartNode = $('cart-overlay-wrapper');
		        		cartNode.update(cartInfoHtml);
		        		
						// Look for and attach close links
						var closeLinks = cartNode.select(".close-link");
						closeLinks.each( function(link) {
							link.observe("click", function(clickEvt) {
								cl.cartOverlay.hide();
							});
						});
		        		
		        		cartNode.show();
		        		cartNode.scrollIntoView();
		        		setTimeout("cl.cartOverlay.hide()",10000);
		        	}
		        });
        	}
        });

    }
};


