 
site.checkout.init = function() {     
    //console.log("site.checkout.init "+page_data.panel_nav["default"].id);
    
    //global 
    site.checkout.cartHandler = new generic.checkout.cart( {ifSetCookie: true} );    
    
    generic.events.observe("cartCount:reset", function(totalItems) {  
          site.checkout.cartHandler.updateCartTotals( {"totalItems": totalItems} ); //sets the Cookie in case of signout 
    });
     
    //non-Checkout pages
    if (page_data.panel_nav["default"].id != "checkout") {  
         site.checkout.cartStatus.init();  
         site.checkout.cartHandler.getCartTotals();  
         return;
    }
    
    //Checkout - all pages
    site.checkout.makeExitBtn();

    // GMO outage Feb 22
    var cc_radio_btn = $('form--checkout_shipping--field--PAYMENT_TYPE--index--pp');
    if(cc_radio_btn && page_data.checkout.gmo_outage) {
        cc_radio_btn.writeAttribute('disabled', 'disabled');
    }

    // signin: forgot password link
    var forgotPassLinkNode = $("forgot-password");
    if (forgotPassLinkNode) {
            var signinFormContainer = $("returning-user-container");
            brand.account.forgotPassLink.init({
                linkNode: forgotPassLinkNode,
                formContainer: signinFormContainer,
                emailFieldName: "EMAIL_ADDRESS",
                modeFieldName: "LOSTPWMODE",
                isCheckout: true
            });
            return;
     }  
    
    //Checkout - all pages except Signin
    site.checkout.makeAdditionalInfoBtns(); 
    site.checkout.hasErrors = Boolean(page_data.hasErrors); 
    var canContinueCheckout = !site.checkout.hasErrors; 
    
    //View Cart and Order Review
    if (page_data.cart && page_data.cart.contents) {
        site.checkout.isCartView = true;   
        
        var totalItems = 0;
        for (var i=0;i<page_data.cart.contents.length;i++) {
            totalItems += parseInt(page_data.cart.contents[i].qty);
        }
        site.checkout.cartHandler.updateCartTotals( {"totalItems": totalItems} ); //sets the Cookie in case the # has changed
        
        if (totalItems==0) {
            canContinueCheckout = false;
        } else {
            site.checkout.cartItemsHandler.init(page_data.cart.contents); //handles behaviors & refreshes of cart items
        } 
    }      
     
    //Shipping  
     if (page_data.checkout && page_data.checkout.userAddresses) {  
        site.checkout.addressForm.userAddresses = page_data.checkout.userAddresses;  
        try { 
          site.checkout.addressForm.errorData = page_data.error.data.messages;
        } catch(e) {  
        } 
        site.checkout.addressForm.init();    
         
        //MK: back-end pre-population of address form fields sometimes fails
        if (site.checkout.addressForm.userAddresses.length==0) { 
            site.checkout.addressForm.addAddress();
        } else {    
            var selectedAddrId = site.checkout.addressForm.addressMenu.getSelectedAddressId();  
            var userAddressesArray = site.checkout.addressForm.getUserAddresses();
            var selectedAddressData = userAddressesArray.find(function(addr){
                return addr.ADDRESS_ID == selectedAddrId;
            });   
            site.checkout.addressForm.populateForm(selectedAddressData); 
        } 
        
        site.checkout.giftWrapOptions.init({
             checkboxNode:$("form--checkout_shipping--field--GIFTWRAP"),
             optionsContainerNode: $$(".gift-options-container")[0],
             formNode: $("checkout_shipping"),
             giftMessageHiddenNode: $("gift_message_full") 
        });      
        
        canContinueCheckout = true; //has to be able to submit form again
    }  
    
    //Review 
    if (page_data.panel_nav["default"].item && page_data.panel_nav["default"].item.id=="review") { 
    	$("checkout_cart").action = "/checkout/review.tmpl"; //override default
    }
    
    //Confirmation 
    if (page_data.panel_nav["default"].item && page_data.panel_nav["default"].item.id=="confirm") { 
         site.checkout.cartHandler.updateCartTotals( {"totalItems": 0} ); //resets cart cookie
    
         if ($$(".btn-print-receipt")[0]) {
              var popup_returns = new generic.popup({ 
              activator: "btn-print-receipt",
              url: "/checkout/receipt" /**,  
              resizable: popargs.resizable,
              scrollbars: popargs.scrollbars,
              width: popargs.w,
              height: 500  **/
            });      
          } 
    }
     
    this.canContinueCheckout(canContinueCheckout); 
}  
   
