// site namespace
BCNTRY.site = {
    name: 'Department of Goods',
    catalog: 'departmentofgoods',

    connection: {},
    event: {},
    page: {},   // per-page namespaces
    util: {}
};



// old stuff

var catalog='departmentofgoods';
var ajax_load_msg = '<span class="ajax_load">Loading...</span>';
var ajax_reload_msg = '<span class="ajax_load">Reloading...</span>';
var last_cart_code;
var promo_rotation_time = 5000;
var maskHideTimer;

YAHOO.util.Event.onDOMReady(function() {
	showBCOPanel();
    loadRotatingPromos();
});

YAHOO.util.Event.onContentReady("homepage_scrolling", function () {
    var myAnim = new YAHOO.util.Motion("homepage_scrolling", {points:  { by: [0, 984] }  }, 80); 
     
    myAnim.onComplete.subscribe(function() {
        myAnim.getEl().style.top = "-984px";
        myAnim.animate();
    });
    myAnim.animate();
     
});

YAHOO.util.Event.onContentReady("mymenubar", function () {
    var oMenu = new YAHOO.widget.MenuBar("mymenubar", { 
        //shadow: false,
        //position: "dynamic",
        autosubmenudisplay: true
    });

    var submenus = oMenu.getSubmenus();
    
    for (var i = 0; i < submenus.length; ++i) {
        var submenu = submenus[i];
        submenu.beforeShowEvent.subscribe(onBeforeShow, submenu);
        submenu.beforeHideEvent.subscribe(onBeforeHide, submenu);
        submenu.mouseOverEvent.subscribe(cancelHideTimer, submenu);
    }
    oMenu.render();
    oMenu.show();
    
    YAHOO.util.Event.addListener('mask', 'mouseover', delayedHideMenu, oMenu, false);
});

function delayedHideMenu(evt, oMenu) {
    maskHideTimer = YAHOO.lang.later(250,oMenu, function() {
        oMenu.clearActiveItem(false);
    });
}

function cancelHideTimer(args, type, submenu) {
    maskHideTimer.cancel();
}

function showMask() {
    $('mask').style.display = 'block';
    $('mask').style.height = YAHOO.util.Dom.getDocumentHeight() +'px';
}
function removeMask() {
    $('mask').style.display = 'none';
}

//show the bco_panel if applicable
function showBCOPanel() {

	//prevent showing on home page
	url = document.location.href;
	url = url.replace(/#.+$/, '');
	url = url.replace(/\?.+$/, '');
	if (!url.match(/https?:\/\/[^\/]+\/$/i)) {
		return;
	}
	
	//show popup if query string or hash requests it
	if (document.location.search.match(/[\?&]bco_popup=1($|&)/) || document.location.hash == '#bco_popup') {
		show_hint('bco_panel');
	}
}

YAHOO.util.Event.onContentReady("yuicart", function() {
    
    var oCart = new YAHOO.widget.Overlay("yuicart", {});
    
    YAHOO.util.Dom.setStyle("yuicart","display","block");

    YAHOO.util.Event.addListener(document.body, "mouseover", hideCart, oCart, false);    
    YAHOO.util.Event.addListener("shopping_cart_nav", "mouseover", showCart, oCart, false);
    YAHOO.util.Event.addListener("shopping_cart_nav", "click", toggleCart, oCart, false);
    YAHOO.util.Event.addListener("yuicart", "mouseover", ignoreEvent);
    YAHOO.util.Event.addListener("yuicart_arrow", "click", hideCart, oCart, false);
    oCart.beforeShowEvent.subscribe(cartOnBeforeShow, oCart);

    oCart.render();
    oCart.hide();
});

function ignoreEvent(evt) {
    YAHOO.util.Event.stopPropagation(evt);
}

function cartOnBeforeShow(type, args, oCart) {
    var cfg = oCart.cfg;
    
    cfg.setProperty("context", ["shopping_cart_nav", "tr", "br"]);
    oCart.align();
    
    var x = cfg.getProperty("x");
    oCart.cfg.setProperty("x", x + 16);
}

function toggleCart(evt, oCart) {
    if(oCart.cfg.getProperty('visible'))
        hideCart(evt, oCart);
    else
        showCart(evt, oCart);
}

function hideCart(evt, oCart) {
    oCart.hide();
}

function showCart(evt, oCart) {
    YAHOO.util.Event.stopPropagation(evt);
    
    if(!oCart.cfg.getProperty("visible")) {
        loadNavCart();
        oCart.show();
    }
}

function onBeforeShow(type, args, submenu) {
    var cfg = submenu.cfg;
    
    cfg.setProperty("context", ["firstitem", "tl", "bl"]);
    submenu.align();
    
    // TODO: workaround using CSS
    var x = cfg.getProperty("x");
    submenu.cfg.setProperty("x", x + 1);
    
    showMask();
}

function onBeforeHide(type, args, submenu) {
    removeMask();
}

function displayCart(r) {

 
    var countCodeHtml = r.responseText.split(">>>");
			    
    if(last_cart_code != countCodeHtml[1]) {
        if(countCodeHtml[0] > 0) {
            $("nav_nitems").innerHTML = "(" + countCodeHtml[0] + ")";
            $("yuicart_header_items").innerHTML = countCodeHtml[0] + " items";
        }
        else {
            $("nav_nitems").innerHTML = "";
            $("yuicart_header_items").innerHTML = "0 items";
        }
        
        last_cart_code = countCodeHtml[1];
        $("yuicart_items").innerHTML = countCodeHtml[2];
    }
}

function loadNavCart() {
	yc.delayedAsyncRequest(
		'GET',
		'/' + catalog + '/cart/ajax/nav_cart.html',
		{
			success: displayCart,
			
			failure: function(r) {
			},
			timeout: ajax_timeout
		}
	);
	return;
}

// remove an item from the cart
function navCartRemove(evt,item_id, subitem_id,item_sku) {
    YAHOO.util.Event.stopPropagation(evt);
    
    $("yuicart_items").innerHTML = ajax_reload_msg;
    
	var args = 'item_id='+item_id+'&subitem_id='+subitem_id;
	
	yc.delayedAsyncRequest(
		'POST',
		'/' + catalog + '/cart/ajax/nav_cart_remove.html',
		{
			success: displayCart,
			
			failure: function(r) {
			},
			timeout: ajax_timeout
		},
		args
	);
	return;
}

//Price compare template for the current site
var price_compare_template = 
'<div id="" class="price_comparison"> '
+ '	<h2>Other Places to Get it:</h2> '
+ '	<ul> '
+ '{for p in products}'
+ '		<li> '
+ '			<span class="retailer_name"><a href="${p.url}" target=\'blank\' onClick="BCNTRY.price_compare.price_compare_click(\'${sku}\',\'${p.vendorName}\', this );">${p.vendorName}</a></span><span class="price">Priced from <strong>\$${p.price}</strong></span> '
+ '		</li> '
+ '{/for}'
+ '	</ul> '
+ '	<div id="bottom_links"> '
+ '		<span id="whats_this"><a href="#" onclick="show_hint(\'price_compare_whats_this\',\'price_compare_whats_this_link\'); template_links_tl(\'tr_template\', \'header: pricecompare\'); return false;">What\'s this?</a></span> '
+ '		<span id="powered_by"><div>Powered by <a target=\'blank\' href="http://www.geardigger.com">Geardigger.com</a></div></span> '
+ '	</div> '
+ '	<div class="clearb" /> '
+ '</div> '
+ ' <div class="hint" id="price_compare_whats_this" style="display:none">'
+ '            <div class="hint_title" id="price_compare_whats_this_title">'
+ '                <a rel="nofollow" id="price_compare_whats_this_link_close_x" href="#" onclick="hide_hint(\'price_compare_whats_this\'); template_links_tl(\'tr_template\', \'header: pricecompare_close\'); return false;" class="hint_close">close</a>'
+ '                </div><div class="hint_content" id="price_compare_content">'
+ '                <p>Departmentofgoods.com believes that the era of paying full price for your gear is over, which is why were committed to finding the best deals on every last board, boot, binding, or bike. Hell, we even put together a hit-list of our competitor\'s prices if you want to check out deals elsewhere. If we aren\'t giving you the dealiest deals, we\'ll make sure you get \'em. No, we can\'t be sure that all this info is spot-on. Things change faster on the inter-webs.</p>'
+ '                <a id="price_compare_whats_this_link_close" href="#" onclick="hide_hint(\'price_compare_whats_this\'); template_links_tl(\'tr_template\', \'header: pricecompare_x\'); return false;" class="hint_close">close</a>'
+ '            </div>'
+ ' </div>';

function loadRotatingPromos() {
    var promoControl = new Object();
    promoControl.promos = new Array();
    
    var rotating_promos = YAHOO.util.Dom.getElementsByClassName("rotating_promo");
    var activePromoCount = 0;
    for(var i = 0; i < rotating_promos.length; i++) {
        var rotating_promo = rotating_promos[i];
        var promo_ads = YAHOO.util.Dom.getChildrenBy(rotating_promo, filterPromoAdNodes);

        if(promo_ads.length > 1) {
            activePromoCount++;
            
            promoControl.promos[i] = new Object();
            promoControl.promos[i].currentAd = 0;
            promoControl.promos[i].ads = new Array();
            promoControl.promos[i].buttons = new Array();
        
            for(var j = 0; j < promo_ads.length; j++) {
                var promo_ad = promo_ads[j];
            
                var button = getButtonFromPromoId(promo_ad.id);
            
                promoControl.promos[i].ads[j] = promo_ad;
                promoControl.promos[i].buttons[j] = YAHOO.util.Dom.get(button);
                promoControl.promos[i].buttons[j].index = j;
            
                YAHOO.util.Event.addListener(button,"click",gotoPromo,promoControl.promos[i],false);
            }
        }
    }
    
    if(activePromoCount > 0) {
        YAHOO.lang.later(promo_rotation_time, promoControl, function () { 
            for(var i = 0; i < promoControl.promos.length; i++) {
                var promo = promoControl.promos[i];
            
                if(promo.skipNextSwitch == true) {
                    promo.skipNextSwitch = false;
                }
                else {
                    var currentAd = promo.currentAd;
                    var nextAd = (currentAd + 1) % promo.ads.length;
            
                    YAHOO.util.Dom.setStyle(promo.ads[currentAd],"display","none");
                    YAHOO.util.Dom.setAttribute(promo.buttons[currentAd],"className","promo_button");
            
                    YAHOO.util.Dom.setStyle(promo.ads[nextAd],"display","block");
                    YAHOO.util.Dom.setAttribute(promo.buttons[nextAd],"className","promo_button selected");
            
                    promo.currentAd = nextAd;
                }
            }
        }, null, true);
    }
}

function filterPromoAdNodes(node) {
    return node.className.match("^promo_ad") == "promo_ad";
}

function getButtonFromPromoId(promo_id) {
    var start = promo_id.indexOf("_");
    return "button" + promo_id.substring(start);
}

function gotoPromo(evt, promo) {
    var currentAd = promo.currentAd;
    var nextAd = YAHOO.util.Event.getTarget(evt).index;
            
    YAHOO.util.Dom.setStyle(promo.ads[currentAd],"display","none");
    YAHOO.util.Dom.setAttribute(promo.buttons[currentAd],"className","promo_button");
    
    YAHOO.util.Dom.setStyle(promo.ads[nextAd],"display","block");
    YAHOO.util.Dom.setAttribute(promo.buttons[nextAd],"className","promo_button selected");
            
    promo.currentAd = nextAd;
    promo.skipNextSwitch = true;
}
