/****************************************************************************************
    Event Flow for the shopping cart page
-----------------------------------------------------------------------------------------

    1.	Page Load                                                   //__pageLoad()
        a.	Create Horizontal Widget Bar                                //Bar.Create(horizontal)
        b.	Display Horizontal Widget Bar with Loading Screen           //Bar.Display(properties); -- displays loading message
        c.	Start Loading Widgets (each image onload fires              //Bar.LoadWidgets() -- calls each Widget.Load() which fires async event imageLoad()
            event to see if all widgets are done loading)
            
    2.	When last horizontal image loads                            //__imageHorizontalLoad() 
        a.  if all images are done loading                              //Bar.IsLoadingComplete();
        b.	Hide the Loading Screen                                     //Bar.HideLoading();
        c.	Display the Widgets                                         //Bar.DisplayWidgets() -- calls each Widget.Display()
        
    3.	Select the first Widget                                     //__selectWidget() 
        a.	Create Vertical Widget Bar                                  //Bar.Create(vertical);
        b.	Display Vertical Widget Bar with Loading Screen             //Bar.Display(properties); -- displays loading message
        c.  Start loading Widgets (each image onload fires              //Bar.LoadWidgets() -- calls each Widget.Load() which fires async event imageLoad()
            event to see if all widgets are done loading)   
            
    4.	When last vertical image loads                              //__imageVerticalLoad()
        a.  If all images are done loading                              //Bar.IsLoadingComplete();
        b.	Hide the vertical Loading Screen                            //Bar.HideLoading();
        c.	Render shopping area (first time it                         //Shopping.Display();
            displays simple "Select a category above to begin"
        
=========================================================================================*/

/****************************************************************************************
    Event Handlers
-----------------------------------------------------------------------------------------*/
function SetCartImage()
{
    var ck = GlobalVars.GlobalScreen.CustomerKey;
        
    if ((ck == 3) || (ck == 4))
    {
        _src_cart = "Images/cart_rounded_thick.gif";
        _src_cart_full = "Images/cart_full_thick.gif";
    }
}

function __pageLoad(source)
{
    //if (skipRefresh == null)
        //skipRefresh = false;
    //alert(Prototype.Browser.IE);
    //alert("Event: __pageLoad");
    
    SetCartImage();
    
    if ($('iframe_itemDetail'))
        $('iframe_itemDetail').src = "ProductDetail.aspx"       
    
    //don't show prior orders if they don't have a personId
    var personId = GetSecurityCookieKeyValue(_cookie_PersonId);
    var lnk = Get(_lnk_PriorOrders);
    var lock = $("imgLock");
    var login = $("lblLogin");
    var logout = $("lblLogout");
    var lblWelcome = $("lblWelcomeLabel");
    var lnk_login = $("lnkLogin");
    var lnk_logout = $("lnkLogout");
    var lnk_admin = $("lnkAdministration");
    var divCustomerTier = $("divCustomerTier");
    var divCustomerTierHeader = $("divCustomerTierHeader");
    var lblTierLevel = $("lblTierLevel");
    var divCustomerTierDetail = $("divCustomerTierDetail");
    var lblTierLevelDetail = $("lblTierLevelDetail");
    var lblTierLevelAmount = $("lblTierLevelAmount");
    var container = $("divLoginContainer");
    
    if (personId > 0)
    {
        if(lnk_admin)
        {
            if((source == _login_admin_source) || (source == _detail_admin_source))
            {
                lnk_admin.className = "shoppingcartpriororderslink";
                if (source == _login_admin_source)
                    source = _login_source;
            }
        }
        
        if (lnk)
            lnk.className = "shoppingcartpriororderslink";
        if (lock)
            lock.src = "Images/lock_closed.gif";
        if (login)
            login.className = "hide";
        if (logout)
            logout.className = "hrefLogin";
        if (lblWelcome)
            lblWelcome.className = "lblWelcomeLabel";
        if ((lblTierLevelAmount.innerHTML == "") || (lblTierLevelAmount.innerHTML == "$0.00"))
        {
            if (divCustomerTier)
                divCustomerTier.className = "hide";
            if (divCustomerTierHeader)
                divCustomerTierHeader.className = "hide";
            if (lblTierLevel)
                lblTierLevel.className = "hide";
            if (divCustomerTierDetail)
                divCustomerTierDetail.className = "hide";
            if (lblTierLevelDetail)
                lblTierLevelDetail.className = "hide";
            if (lblTierLevelAmount)
                lblTierLevelAmount.className = "hide";
        }
        else
        {
            if (divCustomerTier)
                divCustomerTier.className = "cross_sell_tier";
            if (divCustomerTierHeader)
                divCustomerTierHeader.className = "cross_sell_tier_header";
            if (lblTierLevel)
            {
                lblTierLevel.className = "lblTierLevel";
                lblTierLevel.innerText = GlobalVars.GlobalScreen.TierLevel;
            }
            if (divCustomerTierDetail)
                divCustomerTierDetail.className = "cross_sell_tier_detail";
            if (lblTierLevelDetail)
            {
                lblTierLevelDetail.className = "lblTierLevelDetail";
                lblTierLevelDetail.innerText = GlobalVars.GlobalScreen.TierLabel;
            }
            if (lblTierLevelAmount)
                lblTierLevelAmount.className = "lblTierLevelAmount";
        }
        if (container)
            container.className = "divLoginContainerLoggedIn";
        
        if (lnk_login)
            __doPostBack(lnk_login.id,'');
    }
    else
    {
        if (lnk)
            lnk.className = "hide";
        if (lock)
            lock.src = "Images/lock_open.gif";
        if (login)
            login.className = "hrefLogin";
        if (logout)
            logout.className = "hide";
        if (lblWelcome)
            lblWelcome.className = "hide";
        if (divCustomerTier)
            divCustomerTier.className = "hide";
        if (divCustomerTierHeader)
            divCustomerTierHeader.className = "hide";
        if (lblTierLevel)
            lblTierLevel.className = "hide";
        if (divCustomerTierDetail)
            divCustomerTierDetail.className = "hide";
        if (lblTierLevelDetail)
            lblTierLevelDetail.className = "hide";
        if (lblTierLevelAmount)
            lblTierLevelAmount.className = "hide";
        if (container)
            container.className = "divLoginContainerLoggedOut";
        
        if (lnk_logout)
            __doPostBack(lnk_logout.id,'');
    }
    
    if ((source == 3) || (source == 8))
    {
        __repaintCart();
        var el = $("hdnProductId");
        if (el)
        {
            var productId = SafeInt(el.value);
            var elementId = "txtQTY_" + productId;
            __setQuantityValue(elementId, productId);
        }
        //GML note:  this is a temporary solution.  I need to write a very simple web service call to return the
        //quantity of a particular item so that I can put it in the entry textbox.  Since it's not there currently, I have to reload the page.
        return;
    }
    
    //alert(Sys.WebForms.PageRequestManager);
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
    
    //paint the cart
    //__repaintCart();
    
    //only create the widgets if this is the original load
    if (source == _shopping_source)
    {
        /*
        //Bar[Horizontal].Create(horizontal)
        var hBar = new WidgetBar();
        var vBar = new WidgetBar();
        
        hBar.parentID         = 'divCategories';
        hBar.widgetBarID      = 'newBar1';
        hBar.widgetID         = hBar.widgetBarID+"_Widget_";   
        hBar.divLeftID        = hBar.widgetBarID+"_Left";
        hBar.divRightID       = hBar.widgetBarID+"_Right";
        hBar.divTopID         = hBar.widgetBarID+"_Top";
        hBar.divBottomID      = hBar.widgetBarID+"_Bottom";
        hBar.divWidgetBarID   = hBar.widgetBarID+"_Window";
        hBar.divHighlightID   = hBar.widgetBarID+"_HLT";
        hBar.widgetBarTemplate = WidgetBarTemplate.horizontal; 
        hBar.styleProperties.width = 725;
        hBar.styleProperties.left  = 0;
        hBar.styleProperties.height = 100;
        hBar.styleProperties.top = 0;

        hBar.widgetProperties.widgetTemplate = WidgetBarTemplate.horizontal;
        hBar.widgetProperties.backgroundImage = GlobalVars.GlobalScreen.Repository + 'CK' + GlobalVars.GlobalScreen.CustomerKey + '/Images/widget_top.png';
        hBar.widgetProperties.backgroundImageRollover = GlobalVars.GlobalScreen.Repository + 'CK' + GlobalVars.GlobalScreen.CustomerKey + '/Images/widget_top_rollover.png';
        hBar.widgetProperties.backgroundImageSelect = GlobalVars.GlobalScreen.Repository + 'CK' + GlobalVars.GlobalScreen.CustomerKey + '/Images/widget_top_select.png';
    
        //add to the global array
        WidgetBars[WidgetBarTemplate.horizontal] = hBar;
        WidgetBars[WidgetBarTemplate.vertical] = vBar;
    
        WidgetBars[WidgetBarTemplate.horizontal].loadWidgets(WidgetBarTemplate.horizontal);
        */
    }
    //otherwise...just select leftmost widget
    else
    {
        var id = WidgetBars[WidgetBarTemplate.horizontal].widgets[0].ID;
        __selectHorizontalWidget(id);        
    }
    
    /*if(GlobalVars.GlobalScreen.ShowProductFilter == "true")
    {
        $('divProductFilterArea').innerHTML = '<span>Loading filters...</span>';
        __loadProductFilter(WidgetBars[WidgetBarTemplate.vertical].selectedCategoryID);
    } */       
    
    //this function should end here because an async call went out to load the widgets

    //DEBUG
    //$("CODE").value = Bar.element.innerHTML;
    
    //don't need to get top sellers...it's done before load
    //__loadTopSellers(_customerKey);
}
    
    /*
        called after the objects are returned from the database    
    */
    function __onLoadComplete(jsonObj, type, direction,displayFirst)
    {   

        if(jsonObj.CategoryReadCollection && jsonObj.CategoryReadCollection.length && jsonObj.CategoryReadCollection.length > 0) 
        {
            //WidgetBars[type].totalWidgets = jsonObj.totalRows;
            WidgetBars[type].totalWidgets = jsonObj.CategoryReadCollection.length;
            var j =0;
            //for(var i=0; i<jsonObj.widgets.length;i++)
            for(var i=0; i<jsonObj.CategoryReadCollection.length;i++)
            {
                j=i;
                // get the template to use for the widgets
                var widgetsTemplate = WidgetBars[type].widgetProperties.widgetTemplate;
                
                //create the widget id uniquely
                var WidgetID = WidgetBars[type].widgetID + WidgetBars[type].widgets.length;
                
                //determine alt for image.
                var alt = jsonObj.CategoryReadCollection[i].CategoryRead.CategoryName;
                
                if (jsonObj.CategoryReadCollection[i].CategoryRead.ParentCategoryName && jsonObj.CategoryReadCollection[i].CategoryRead.ParentCategoryName.length && jsonObj.CategoryReadCollection[i].CategoryRead.ParentCategoryName.length > 0)
                    alt = jsonObj.CategoryReadCollection[i].CategoryRead.ParentCategoryName + " - " + jsonObj.CategoryReadCollection[i].CategoryRead.CategoryName;

                var widget = new Widget().init(
                    WidgetID
                    ,WidgetBars[type].widgets.length
                    ,jsonObj.CategoryReadCollection[i].CategoryRead.CategoryName
                    ,jsonObj.CategoryReadCollection[i].CategoryRead.ImageSource
                    ,alt
                    ,jsonObj.CategoryReadCollection[i].CategoryRead.CategoryId
                    ,jsonObj.CategoryReadCollection[i].CategoryRead.Height
                    ,jsonObj.CategoryReadCollection[i].CategoryRead.Width
                    ,jsonObj.CategoryReadCollection[i].CategoryRead.ImageBackgroundColor
                    ,widgetsTemplate
                    ,WidgetBars[type].widgetProperties
                    ,jsonObj.CategoryReadCollection[i].CategoryRead.ParentCategoryId
                    ,jsonObj.CategoryReadCollection[i].CategoryRead.ParentCategoryName
                );
                

                //add to widgets collection;
                //alert('WidgetBars[' + type + '].widgets.length = ' + WidgetBars[type].widgets.length);
                WidgetBars[type].widgets.push(widget);
            }
            //alert("created "+j+" widgets");         
        }
        
        if (!(WidgetBars[type].displayWidgets))
        {
            AppendDisplayWidgets(WidgetBars[type]);
        }
        
        //display the widgets
        WidgetBars[type].displayWidgets(direction,displayFirst);
        
    }
        
    /*
        fired from each individual image per widget in horizontal bar
    */
    function __imageHorizontalLoad(src)     
    {        
        //alert("Event: __imageHorizontalLoad");
        
        //add image src property to images array to indicate that it has successfully loaded;      
        WidgetBars[WidgetBarTemplate.horizontal].images.push(src);

        //Bar[Horizontal].IsLoadingComplete()
        if(WidgetBars[WidgetBarTemplate.horizontal].isLoadingComplete())
        {
            //Bar[Horizontal].HideLoading();
            WidgetBars[WidgetBarTemplate.horizontal].setLoading(false);
        }
    }

    /*
        ...
    */
    function __selectHorizontalWidget(widgetId)
    {
        //alert("Event: __selectHorizontalWidget");
       
        if (!(WidgetBars[WidgetBarTemplate.horizontal].selectWidget))
        {
            //set the selected Index
            AppendSelectWidget(WidgetBars[WidgetBarTemplate.horizontal]);
        }
       
        WidgetBars[WidgetBarTemplate.horizontal].selectWidget(widgetId);
        
        if (!(WidgetBars[WidgetBarTemplate.horizontal].highlight))
        {
           //put a highlight effect on the selected widget.  Set all others to normal
           AppendHighlight(WidgetBars[WidgetBarTemplate.horizontal])        
        }
        
        WidgetBars[WidgetBarTemplate.horizontal].highlight(true);   
        
        //if (GlobalVars && GlobalVars.GlobalScreen.SkipLoad == false)
        //{
            //*** update the product section to display loading
            $('divShoppingArea').innerHTML = GetLoadingProductsHTML();
            //we want to show the splash page.
            ShowCategoryDetail(WidgetBars[WidgetBarTemplate.horizontal].selectedCategoryID,0);
        //}  
        
        if(GlobalVars)
        {
            if(GlobalVars.GlobalScreen.ShowProductFilter == "true")
            {
                $('divProductFilterArea').innerHTML = '<span>Loading filters...</span>';
            }
        }

        //** temp code to clear the vertical bar from the DOM
        //** the wrapping window has an id=undefined
        if($('newBar2_Window'))
        {
            element = $('newBar2_Window').parentNode;
            element.parentNode.removeChild(element);
        }
        
        //Bar[Vertical].Create(vertical);
        var Bar = new WidgetBar();
        
        Bar.init('divSubCats', "newBar2", WidgetBarTemplate.vertical,
            {   //bar properties and styles
                viewable: 5,
                buffer:10,
                widgetPadding: 10,
                initIndex: 0,
                backgroundImage: 'url(' + GlobalVars.GlobalScreen.Repository + 'CK' + GlobalVars.GlobalScreen.CustomerKey + '/Images/vbar_border.gif)',
                styleProperties: 
                {
                    position: 'absolute',
                    left: 0,
                    top: 0,
                    width: 120,
                    height: 429,
                    display: 'block',
                    visibility: 'visible',
                    backgroundColor: 'Transparent'
                }
            },
            {   //widget properties and styles
                widgetTemplate: 1,
                innermargin: 10,
                backgroundImage: GlobalVars.GlobalScreen.Repository + 'CK' + GlobalVars.GlobalScreen.CustomerKey + '/Images/widget_side.png',
                backgroundImageRollover: GlobalVars.GlobalScreen.Repository + 'CK' + GlobalVars.GlobalScreen.CustomerKey + '/Images/widget_side_rollover.png',
                backgroundImageSelect: GlobalVars.GlobalScreen.Repository + 'CK' + GlobalVars.GlobalScreen.CustomerKey + '/Images/widget_side_select.png',
                styleProperties: 
                {
                    width: 110,
                    height: 60,
                    border: '1px solid #CCCCCC',
                    display: 'block',
                    visibility: 'visible'
                }
            }
        );

        //Bar[Vertical].Display(properties); -- displays loading message
        Bar.displayVerticalBar();
        
        //Bar[Vertical].LoadWidgets() -- calls each Widget.Load() which fires async event imageLoad()
        Bar.loadWidgets(WidgetBarTemplate.vertical, false);
        
        //add to the global array   
        WidgetBars[WidgetBarTemplate.vertical] = Bar;
    }
    
    /*
        fired from each individual image per widget in vertical bar
    */
    function __imageVerticalLoad(src)
    {
        //alert("Event: __imageVerticalLoad");
        
        //add image src property to images array to indicate that it has successfully loaded;      
        WidgetBars[WidgetBarTemplate.vertical].images.push(src);

        //Bar[vertical].IsLoadingComplete()
        if(WidgetBars[WidgetBarTemplate.vertical].isLoadingComplete())
        {
            //Bar[vertical].HideLoading();
            WidgetBars[WidgetBarTemplate.vertical].setLoading(false);
            
            //__selectHorizontalWidget(Bar[vertical].Widgets[0].ID);  -- loads the first widget's subcategories
            //__selectVerticalWidget(WidgetBars[WidgetBarTemplate.vertical].widgets[0].ID);
        }
    }
    
    function __selectVerticalWidget(widgetId)
    {
        //alert("Event: __selectVerticalWidget");
        
        if (!(WidgetBars[WidgetBarTemplate.vertical].selectWidget))
        {
            AppendSelectWidget(WidgetBars[WidgetBarTemplate.vertical]);
        }
        
        var widget = WidgetBars[WidgetBarTemplate.vertical].selectWidget(widgetId);
        
        if (!(WidgetBars[WidgetBarTemplate.vertical].highlight))
        {
            AppendHighlight(WidgetBars[WidgetBarTemplate.vertical]);
        }
        
        WidgetBars[WidgetBarTemplate.vertical].highlight(true);
        
        //if (GlobalVars && (GlobalVars.GlobalScreen.SkipLoad == false))
        //{
        
            //** display loading message in shopping area
            $('divShoppingArea').innerHTML = GetLoadingProductsHTML();     
        
            //call load store event 
            __loadStore(widget.categoryID, null, null, widget.parentCategoryID,null,null,1);
        //}
        //else
        //{
            //GlobalVars.GlobalScreen.SkipLoad = false;
        //}
        
        //call load product filter if product filtering is turned on
        if(GlobalVars)
        {
            if(GlobalVars.GlobalScreen.ShowProductFilter == "true")
            {
                $('divProductFilterArea').innerHTML = '<span>Loading filters...</span>';
                __loadProductFilter(widget.categoryID);
            }
            else
            {
				//This will show the login box - same logic is found in __loadProductFilterComplete
		        var dlogin = $('login');
				if(dlogin)
				{
					dlogin.style.display = "inline";
				}
            }
        }
        
        //update the cross-sell new products
        __loadNewProducts(_customerKey,widget.categoryID);
        
        //** clear the search box
        var txt = $('txtSearchFor')
        
        if (txt)
            txt.value = '';
    }
    
    /*
        fired from the horizontal widget navigational arrows
    */
    function __shiftHorizontal(direction)
    {
        if (!(WidgetBars[WidgetBarTemplate.horizontal].loadWidgets))
        {
            AppendLoadWidgets(WidgetBars[WidgetBarTemplate.horizontal]);
        }
        
        if(WidgetBars[WidgetBarTemplate.horizontal].totalWidgets>WidgetBars[WidgetBarTemplate.horizontal].viewable)
            WidgetBars[WidgetBarTemplate.horizontal].loadWidgets(WidgetBarTemplate.horizontal, direction, true); 
    }
    
    /*
        fired from the vertical widget navigational arrows
    */
    function __shiftVertical(direction)
    {
        if (!(WidgetBars[WidgetBarTemplate.vertical].loadWidgets))
        {
            AppendLoadWidgets(WidgetBars[WidgetBarTemplate.vertical]);
        }
        
        if(WidgetBars[WidgetBarTemplate.vertical].totalWidgets>WidgetBars[WidgetBarTemplate.vertical].viewable)
            WidgetBars[WidgetBarTemplate.vertical].loadWidgets(WidgetBarTemplate.vertical, direction, true); 
    }
    
    /*
    
    */    
    /*
        THIS IS ONLY CALLED FROM ProductDetail.aspx when it is not being called within an iframe!
    */
    function __setQuantityValue(elementId, productId)
    {
        var personId = GetSecurityCookieKeyValue(_cookie_PersonId);
        var params = "customerKey=" + _customerKey + "&productId=" + productId + "&orderId=" + GetSecurityCookieKeyValue(_cookie_OrderId) + "&personId=" + personId;
        new Ajax.Request('Shopping.asmx/GetItemQuantity',
        {
            method:'post',
            parameters: params,
            onComplete: function(transport)
            {
                if(transport.status == 200)
                {
                    var response = ((transport.responseXML.text) ? transport.responseXML.text : transport.responseXML.lastChild.textContent);
                    __setQuantityValueComplete(response.evalJSON(),elementId);
                }
                else
                {
                     __logError('Set Quantity Value Complete Failed:'+ transport.status, '', '', _customerKey, personId, false);
                }
            },
            onFailure: function(transport) { __logError("Set Quantity Value Ajax Failed:" + transport.status, '', '', _customerKey, personId, false); }
         });    
    }
    
    function __setQuantityValueComplete(responseObj,elementId)
    {
        var element = $(elementId);
        
        if (element)
            element.value = responseObj.Response.Quantity;
    }
    
    function __loadStore(categoryId, searchType, name, parentCategoryId, productGroupId, productId, pageNumber)
    {
        //History.set('categoryId', parentCategoryId);
        //alert("Event: __loadStore");
        //alert(widgetId);
        
        productGroupId = SafeInt(productGroupId);
        productId = SafeInt(productId);
        pageNumber = SafeInt(pageNumber);
            
        var personId = GetSecurityCookieKeyValue(_cookie_PersonId);
        var params = "customerKey=" + _customerKey + "&categoryId=" + categoryId + "&searchType=" + (searchType || 0) + "&criteria=" + (name || "") 
            + "&orderId=" + GetSecurityCookieKeyValue(_cookie_OrderId) + "&personId=" + personId + "&parentCategoryId=" + parentCategoryId 
            + "&productGroupId=" + productGroupId + "&productId=" + productId + "&pageNumber=" + pageNumber;
        myService.loadStore(params);
//        new Ajax.Request('Shopping.asmx/CreateShoppingHTML',
//        {
//            method:'post',
//            parameters: params,
//            onComplete: function(transport)
//            {
//                if(transport.status == 200)
//                {
//                    var returnObj = ((transport.responseXML.text) ? transport.responseXML.text.evalJSON() : transport.responseXML.lastChild.textContent.evalJSON());
//                    __loadStoreComplete(returnObj);
//                }
//                else
//                {
//                     __logError('Load Store Complete Failed:'+ transport.status, '', '', _customerKey, personId, false);
//                }
//            },
//            onFailure: function(transport) { __logError("Load Store Ajax Failed:" + transport.status, '', '', _customerKey, personId, false); }
//         });
    }

    /*
        handles the response from the server for the __loadStore event
    */    
    function __loadStoreComplete(json)
    {
        //var store = $("divShoppingArea");
        //store.style.visibility = 'visible';     //** by default the shopping area is not visible
        //html = (!html || html=='') ? 'No products found' : html;
        //store.update(html);
        //store.innerHTML = html;
        
        var screen = json.DynamicScreen;
        var store = $("divShoppingArea");
        
        store.style.visibility = 'visible';     //** by default the shopping area is not visible
        screen.Body = (!screen.Body || screen.Body=='') ? 'No products found' : screen.Body;
        store.update(screen.Body);
        
        document.title = screen.Title;
    }
    
    /*
        handles the response from the server for the __loadStore event
    */    
    function __loadProductFilter(categoryId, searchType, name)
    {
        var personId = GetSecurityCookieKeyValue(_cookie_PersonId);
        var params = "customerKey=" + _customerKey + "&categoryId=" + categoryId + "&searchType=" + (searchType || 0) + "&criteria=" + (name || "") + "&personId=" + (personId || "0");
        new Ajax.Request('Shopping.asmx/CreateProductFilterHTML',
        {
            method:'post',
            parameters: params,
            onComplete: function(transport)
            {
                if(transport.status == 200)
                {
                    var response = ((transport.responseXML.text) ? transport.responseXML.text : transport.responseXML.lastChild.textContent);
                    __loadProductFilterComplete(response);
                }
                else
                {
                     __logError('Load __loadProductFilter Complete Failed:'+ transport.status, '', '', _customerKey, personId, false);
                }
            },
            onFailure: function(transport) { __logError('Load __loadProductFilter Ajax Failed:'+ transport.status, '', '', _customerKey, personId, false); }
         });
    }
    
    /*
        handles the response from the server for the __loadProductFilter event
    */    
    function __loadProductFilterComplete(html)
    {
        if(html == "Nothing")
            return;
            
        var divfilt = $("divProductFilterArea");
        
        divfilt.innerHTML = html;
        
        var dlogin = $('login');
        if(dlogin)
		{
			dlogin.style.display = "inline";
		}
    }


    /*
        fired from clicking on cart or from making changes within cart
    */
    function __refreshCart()
    { 
        var personId = GetSecurityCookieKeyValue(_cookie_PersonId);                                           //set this from the cookie
        //alert ("PersonId: " + personId);
        var orderId = GetSecurityCookieKeyValue(_cookie_OrderId);
        //var customerKey = GetSecurityCookieKeyValue(_cookie_CustomerKey);
        
        var params = "customerKey=" + _customerKey + "&personId=" + personId + "&orderId=" + orderId;
        new Ajax.Request('Shopping.asmx/CreateCartHTML',
        {
            method:'post',
            parameters: params,
            onComplete: function(transport)
            {
                if(transport.status == 200)
                {
                    var response = ((transport.responseXML.text) ? transport.responseXML.text : transport.responseXML.lastChild.textContent);
                    __refreshCartComplete(response);
                }
                else
                {
                     __logError('Load __refreshCart Complete Failed:'+ transport.status, '', '', _customerKey, personId, false);
                }
            },
            onFailure: function(transport) { __logError('Load __refreshCart Ajax Failed:'+ transport.status, '', '', _customerKey, personId, false);}
         });
        
    }
    function __refreshCartComplete(html)
    {
        var oIframe = document.getElementById('iframe_shoppingCart');
        var oDoc = (oIframe.contentWindow || oIframe.contentDocument);
        if (oDoc.document)
            oDoc = oDoc.document;
        //var cart = window.frames['iframe_shoppingCart'].document.getElementById("pnlDetail");
        var cart = oDoc.getElementById("pnlDetail");
        cart.innerHTML = html;
    }
    
    /*
        fired from prior orders div
    */
    function __reOrder(orderId,source)  //item is an OrderToProduct object: item.OrderToProduct.ProductId
    { 
        var personId = GetSecurityCookieKeyValue(_cookie_PersonId);                                           //set this from the cookie
        //alert ("PersonId: " + personId);
        //var customerKey = GetSecurityCookieKeyValue(_cookie_CustomerKey);
        
        var params = "personId=" + personId + "&customerKey=" + _customerKey + "&orderId=" + orderId;
        new Ajax.Request('Shopping.asmx/ReOrder',
        {
            method:'post',
            parameters: params,
            onComplete: function(transport)
            {
                if(transport.status == 200)
                {
                    var response = ((transport.responseXML.text) ? transport.responseXML.text : transport.responseXML.lastChild.textContent);
                    __reOrderComplete(response.evalJSON(), source);
                }
                else
                {
                     __logError('Load __reOrder Complete Failed:'+ transport.status, '', '', _customerKey, personId, false);
                }
            },
            onFailure: function(transport) {__logError('Load __reOrder Ajax Failed:'+ transport.status, '', '', _customerKey, personId, false); }
         });
        
    }
    
    /*
    
    */
    function __reOrderComplete(responseObj,source)
    {
        //1.  Update cart image and data (number of objects in the cart responseObj.cartCount)
        //2.  Chanage button to "update cart"
        //3.  Add image or button for "remove from cart"
        var personId = GetSecurityCookieKeyValue(_cookie_PersonId);
        var customerKey = GetSecurityCookieKeyValue(_cookie_CustomerKey);
        var expires = new Date();
        expires.setDate(expires.getDate() + 1); //add 1 day
        SetSecurityCookie(personId,customerKey,responseObj.Response.OrderId,expires);
        
        //repaint the cart
        __repaintCart();
        
        //now the fun part, reset the shopping area and the widgets
        
        if (source != _detail_source)
        {
            var id = WidgetBars[WidgetBarTemplate.horizontal].widgets[0].ID;
            __selectHorizontalWidget(id);
        }
        else
        {
            var el = $("hdnProductId");
            var productId = SafeInt(el.value);
            var elementId = "txtQTY_" + productId;
            __setQuantityValue(elementId, productId);
        }
        
        //close the div
        document.getElementById('light_priororders').style.display='none';
        document.getElementById('fade').style.display='none';
        
        if(Client.Engine.name=='ie'&&Client.Engine.version<7)
        {
            if($('selSearchBy'))
                $('selSearchBy').show();
            
            var idx = 0;
            var ctl = $('pfsel_' + idx)
            while(ctl)
            {
                ctl.show();
                idx++;
                ctl = $('pfsel_' + idx);
            }
        }
        
        //show message
        MessageBox("Your order has been successfully recreated.",0,5000,_messagebox_green);
    }
    
    /*
        fired from store or from product detail
    */
    function __redeemCode()
    {
        var personId = SafeInt(GetSecurityCookieKeyValue(_cookie_PersonId));
        var orderId = SafeInt(GetSecurityCookieKeyValue(_cookie_OrderId));
        var code = window.frames['iframe_shoppingCart'].document.getElementById("txtPromotion").value;
        
        var params = "personId=" + personId + "&customerKey=" + _customerKey + "&orderId=" + orderId + "&code=" + code;      
        
        new Ajax.Request('Shopping.asmx/RedeemPromotion',
        {
            method:'post',
            parameters: params,
            onComplete: function(transport)
            {
                if(transport.status == 200)
                {      
                    var response = ((transport.responseXML.text) ? transport.responseXML.text : transport.responseXML.lastChild.textContent);
                    __redeemCodeComplete(response.evalJSON());
                    
                }
                else
                {
                     __logError('Load __redeemCode Complete Failed:'+ transport.status, '', '', _customerKey, personId, false);
                }
            },
            onFailure: function(transport) { __logError('Load __redeemCode Ajax Failed:'+ transport.status, '', '', _customerKey, personId, false); }
         });
    }
    
    function __redeemCodeComplete(responseObj)
    {
        //alert("got here...");
        var personId = GetSecurityCookieKeyValue(_cookie_PersonId);
        
        //if no errors, refresh cart and repaint cart div.
        if (responseObj.Response.Message.length == 0)
        {
            //refresh
            __refreshCart();
            //repaint cart
            __repaintCart();
            window.frames['iframe_shoppingCart'].document.getElementById("txtPromotion").value = "";
        }
        //otherwise, display message.
        else
        {
            MessageBox(responseObj.Response.Message,0,5000,_messagebox_yellow);    
        }
    }
    
    /*
        fired from store or from product detail
    */
    function __addToCart(source,item, sourceId, removeImageId)  //item is an OrderToProduct object: item.OrderToProduct.ProductId
    { 
        //Get(item.IDs.btn).value = "Update QTY";
        //alert("got here...");
        var personId = GetSecurityCookieKeyValue(_cookie_PersonId);                                           //set this from the cookie
        //alert ("PersonId: " + personId);
        var orderId = GetSecurityCookieKeyValue(_cookie_OrderId);
        //var customerKey = GetSecurityCookieKeyValue(_cookie_CustomerKey);
        var quantity;
        
        //If this is called from within the shopping cart iframe, we have to use that quantity
        if ((source == _shopping_source) || (source == _detail_self_source))
            quantity = Get(item.IDs.qty).value;
        else if (source == _cart_source)
            quantity = window.frames['iframe_shoppingCart'].document.getElementById(item.IDs.qty).value;
        else
            quantity = window.frames['iframe_itemDetail'].document.getElementById(item.IDs.qty).value;
        
        //Validate quantity
        if (SafeInt(quantity) == 0)
            quantity = 1;
        
        var params = "personId=" + personId + "&customerKey=" + _customerKey + "&orderId=" + orderId + "&productId=" + item.OrderToProduct.ProductId + "&quantity=" + quantity + "&ud1=" + item.OrderToProduct.UD1 +
            "&ud2=" + item.OrderToProduct.UD2 + "&ud3=" + item.OrderToProduct.UD3 + "&ud4=" + item.OrderToProduct.UD4 + "&ud5=" + item.OrderToProduct.UD5 + "&colorId=" + item.OrderToProduct.ColorId;
            
            if ((isNaN(quantity)) || quantity.length > 10 || quantity.length <= 0)
            {
                MessageBox("Please enter a valid quantity.",0,0,_messagebox_yellow);
                //PreventPostBack(event);  Don't need to call this as it is not called prior to a postback event
                return;
            }
            
        new Ajax.Request('Shopping.asmx/AddUpdateCart',
        {
            method:'post',
            parameters: params,
            onComplete: function(transport)
            {
                if(transport.status == 200)
                {      
                    var response = ((transport.responseXML.text) ? transport.responseXML.text : transport.responseXML.lastChild.textContent);
                    __addToCartComplete(source,response.evalJSON(), item.IDs.btn, item.IDs.qty, item.IDs.del);
                    
                }
                else
                {
                     __logError('Load __addToCart Complete Failed:'+ transport.status, '', '', _customerKey, personId, false);
                }
            },
            onFailure: function(transport) { __logError('Load __addToCart Ajax Failed:'+ transport.status, '', '', _customerKey, personId, false); }
         });
        
        __loadRelatedProducts(item.OrderToProduct.ProductId);
    }
    
    /*
    
    */
            function __addToCartComplete(source, responseObj, add, qty, del)
    {
        //1.  Update cart image and data (number of objects in the cart responseObj.cartCount)
        //2.  Chanage button to "update cart"
        //3.  Add image or button for "remove from cart"
        //alert("got here...");
        var personId = GetSecurityCookieKeyValue(_cookie_PersonId);
        var expires = new Date();
        expires.setDate(expires.getDate() + 1); //add 1 day
        SetSecurityCookie(personId,2,responseObj.Response.OrderId,expires);
        
        //If we have to refresh, we do it before repainting the image div
        if (source == _cart_source)
            __refreshCart();
            
        //If this is called from product detail, close it
        if (source == _detail_source)
        {
            document.getElementById('light_productdetail').style.display='none';
            document.getElementById('fade').style.display='none';
            document.getElementById('selSearchBy').disabled=false;
        }
        
        var lblAddUpdateCart = Get("lbl" + add);
        var btnAddUpdateCart = Get(add);
        var txtQty = Get(qty);
        var btnDelete = Get(del);
        var lnkDelete = Get("lnk" + del);
        var pnlDelete = Get("pnl" + del);
        
        if (responseObj.Response.Quantity > 0)
        {
            if (btnAddUpdateCart)
                btnAddUpdateCart.title = "Update Qty";      //btnAddUpdateCart.value = "Update QTY";
            if (lblAddUpdateCart)
            {
                lblAddUpdateCart.innerText = "Update Quantity";
                lblAddUpdateCart.textContent = "Update Quantity";
                lblAddUpdateCart.alt = "Update Quantity";
                lblAddUpdateCart.title = "Update Quantity";
            }
            if (txtQty)
                txtQty.value = responseObj.Response.Quantity;
                
            if (pnlDelete)
                pnlDelete.className = "cart_link_panel";
            else if (btnDelete)
                btnDelete.className = "cart_img";        
        }
        else
        {
            if (btnAddUpdateCart)
                btnAddUpdateCart.title = "Add to Cart";     //btnAddUpdateCart.value = "Add to Cart";
            if (lblAddUpdateCart)
            {
                lblAddUpdateCart.innerText = "Add to Cart";
                lblAddUpdateCart.textContent = "Add to Cart";
                lblAddUpdateCart.alt = "Add to Cart";
                lblAddUpdateCart.title = "Add to Cart";
            }                                
            if (txtQty)
                txtQty.value = "0";
            if (pnlDelete)
                pnlDelete.className = "hide";
            else if (btnDelete)
                btnDelete.className = "hide";
        }
        
        __repaintCart();
        
        if (responseObj.Response.Message.length > 0)
        {
            MessageBox(responseObj.Response.Message,0,5000,_messagebox_yellow);    
        }
    }
    function __RemoveFromCart(source, item, sourceId, removeImageId)  //item is an OrderToProduct object: item.OrderToProduct.ProductId
    {      
        var personId = GetSecurityCookieKeyValue(_cookie_PersonId);                                           //set this from the cookie
        //alert ("PersonId: " + personId);
        var orderId = GetSecurityCookieKeyValue(_cookie_OrderId);
        //var customerKey = GetSecurityCookieKeyValue(_cookie_CustomerKey);
        
        var params = "personId=" + personId + "&customerKey=" + _customerKey + "&orderId=" + orderId + "&productId=" + item.OrderToProduct.ProductId;
        new Ajax.Request('Shopping.asmx/RemoveFromCart',
        {
            method:'post',
            parameters: params,
            onComplete: function(transport)
            {
                if(transport.status == 200)
                {
                    var response = ((transport.responseXML.text) ? transport.responseXML.text : transport.responseXML.lastChild.textContent);
                    __RemoveFromCartComplete(source, response.evalJSON(), item.IDs.btn, item.IDs.qty, item.IDs.del);
                }
                else
                {
                     __logError('Load __RemoveFromCart Complete Failed:'+ transport.status, '', '', _customerKey, personId, false);
                }
            },
            onFailure: function(transport) { __logError('Load __RemoveFromCart Ajax Failed:'+ transport.status, '', '', _customerKey, personId, false); }
         });
        
    }
    
    /*
    
    */
    function __RemoveFromCartComplete(source, responseObj, add, qty, del)
    {
        //1.  Update cart image and data (number of objects in the cart responseObj.cartCount)
        //2.  Chanage button to "update cart"
        //3.  Add image or button for "remove from cart"
        var personId = GetSecurityCookieKeyValue(_cookie_PersonId);
        var expires = new Date();
        expires.setDate(expires.getDate() + 1); //add 1 day
        SetSecurityCookie(personId,2,responseObj.Response.OrderId,expires);
        
        //If we have to refresh, we do it before doing anything else
        if (source == _cart_source)
            __refreshCart();
            
        //If this is called from product detail, close it
        if (source == _detail_source)
        {
            var txtQtyDetail;
            var oIframe = document.getElementById('iframe_itemDetail');
            var oDoc = (oIframe.contentWindow || oIframe.contentDocument);
            if (oDoc.document)
                oDoc = oDoc.document;
        
            if(oDoc.document = true)
                txtQtyDetail = oDoc.getElementById('txtQTY_' + responseObj.Response.ProductId);
                
            if (txtQtyDetail)
                txtQtyDetail.value = "0";
                       
            document.getElementById('light_productdetail').style.display='none';
            document.getElementById('fade').style.display='none';
            document.getElementById('selSearchBy').disabled=false;
        }
        
        var btnAddUpdateCart = Get(add);
        var lblAddUpdateCart = Get("lbl" + add);
        var txtQty = Get(qty);
        var btnDelete = Get(del);
        var lnkDelete = Get("lnk" + del);
        var pnlDelete = Get("pnl" + del);
        
        if (btnAddUpdateCart)
            btnAddUpdateCart.title = "Add to Cart";
        if (lblAddUpdateCart)
        {
            lblAddUpdateCart.innerText = "Add to Cart";
            lblAddUpdateCart.textContent = "Add to Cart";
            lblAddUpdateCart.alt = "Add to Cart";
            lblAddUpdateCart.title = "Add to Cart";
        }                  
        if (txtQty)
            txtQty.value = "0";
        if (pnlDelete)
            pnlDelete.className = "hide";
        else if (btnDelete)
            btnDelete.className = "hide";
        
        __repaintCart();
    }
    function __repaintCart(sourceId, removeImageId)
    {   
        var orderId = GetSecurityCookieKeyValue(_cookie_OrderId);
        
        var params = "orderId=" + orderId;
        new Ajax.Request('Shopping.asmx/RepaintCart',
        {
            method:'post',
            parameters: params,
            onComplete: function(transport)
            {
                if(transport.status == 200)
                {
                    var response = ((transport.responseXML.text) ? transport.responseXML.text : transport.responseXML.lastChild.textContent);
                    __RepaintCartComplete(response.evalJSON(), sourceId, removeImageId);
                }
                else
                {
                     __logError('Load __repaintCart Complete Failed:'+ transport.status, '', '', _customerKey, personId, false);
                }
            },
            onFailure: function(transport) { __logError('Load __repaintCart Ajax Failed:'+ transport.status, '', '', _customerKey, personId, false); }
         });
        
    }
    
    /*
    
    */
    function __RepaintCartComplete(responseObj, sourceId, removeImageId)
    {   
        //alert("got here!");
        //alert(responseObj.Response.ProductCount);
        //alert(responseObj.Response.TotalPrice);
        var lblShoppingCartCount = Get(_lbl_ShoppingCartCount);
        var lblShoppingCartPrice = Get(_lbl_ShoppingCartPrice);
        var imgCart = Get(_img_Cart);
        //var hrefCart = Get(_href_Cart);
        //var spanHrefCart = Get(_span_href_Cart);
        
        if (lblShoppingCartCount.innerText)
            lblShoppingCartCount.innerText = responseObj.Response.ProductCount + " Item(s)";
        else
            lblShoppingCartCount.textContent = responseObj.Response.ProductCount + " Item(s)";
            
        if (lblShoppingCartPrice.innerText)
            lblShoppingCartPrice.innerText = responseObj.Response.TotalPrice;
        else
            lblShoppingCartPrice.textContent = responseObj.Response.TotalPrice;
        
        if (parseInt(responseObj.Response.ProductCount) > 0)
            imgCart.src = _src_cart_full;
        else
           imgCart.src = _src_cart;
           
        //** update the amount saved
        __updateAmtSaved(responseObj.Response.AmountSaved);
    }
    /*
        fired from main screen
    */
    function __viewPriorOrders()
    {
        alert("Event: __viewPriorOrders");
    }
    
    function __shiftDone(type, widgetId,selectFirst)
    {
        if (selectFirst == null)
            selectFirst = false;
        //alert("__shiftDone");
        
        switch(type)
        {
            case WidgetBarTemplate.horizontal:
                __selectHorizontalWidget(widgetId);
                break;
            
            case WidgetBarTemplate.vertical:
                if (selectFirst)
                    __selectVerticalWidget(widgetId);
                break;
                
            default:
                throw("Event ShiftDone : unsupported widget type");
        }
        //select the main widget
        //WidgetBars[type].selectWidget(widgetId)
        
        //highlight accordingly
        //WidgetBars[type].highlight(true);
    }
/*=======================================================================================*/
    
    /**************************************
    * Functionality to retrieve New Products HTML and populate into the DIV
    * D.Lozano
    * 6/18/08
    **************************************/
    function __loadNewProducts(customerKey, categoryId)
    {
        var params = "customerKey=" + customerKey + "&categoryId=" + categoryId;
        new Ajax.Request('Shopping.asmx/CreateNewProductsHTML',
        {
            method:'post',
            parameters: params,
            onComplete: function(transport)
            {
                if(transport.status == 200)
                {
                    var response = ((transport.responseXML.text) ? transport.responseXML.text : transport.responseXML.lastChild.textContent);
                    __loadNewProductsComplete(response);
                }
                else
                {
                     __logError('Load __loadNewProducts Complete Failed:'+ transport.status, '', '', _customerKey, personId, false);
                }
            },
            onFailure: function(transport) { __logError('Load __loadNewProducts Ajax Failed:'+ transport.status, '', '', _customerKey, personId, false);}
         });
    }
    
    function __loadNewProductsComplete(html)
    {
        var div = $('divNewProducts');
        
        if(div && html)
            div.innerHTML = html;
    }
    
    /**************************************
    * Functionality to retrieve Top Sellers HTML and populate into the DIV
    * D.Lozano
    * 6/19/08
    **************************************/
    function __loadTopSellers(customerKey)
    {
        var params = "customerKey=" + customerKey;
        new Ajax.Request('Shopping.asmx/CreateTopSellersHTML',
        {
            method:'post',
            parameters: params,
            onComplete: function(transport)
            {
                if(transport.status == 200)
                {
                    var response = ((transport.responseXML.text) ? transport.responseXML.text : transport.responseXML.lastChild.textContent);
                    __loadTopSellersComplete(response);
                }
                else
                {
                     __logError('Load __loadTopSellers Complete Failed:'+ transport.status, '', '', _customerKey, personId, false);
                }
            },
            onFailure: function(transport) { __logError('Load __loadTopSellers Ajax Failed:'+ transport.status, '', '', _customerKey, personId, false); }
         });
    }
    
    function __loadTopSellersComplete(html)
    {
        var div = $('divTopSellers');
        
        if(div && html)
            div.innerHTML = html;
    }
    
    /**************************************
    * Functionality to retrieve Related Products HTML and populate into the DIV
    * D.Lozano
    * 6/19/08
    **************************************/
    function __loadRelatedProducts(productId)
    {
        var params = "productId=" + productId;
        new Ajax.Request('Shopping.asmx/CreateRelatedProductsHTML',
        {
            method:'post',
            parameters: params,
            onComplete: function(transport)
            {
                if(transport.status == 200)
                {
                    var response = ((transport.responseXML.text) ? transport.responseXML.text : transport.responseXML.lastChild.textContent);
                    __loadRelatedProductsComplete(response);
                }
                else
                {
                     __logError('Load __loadRelatedProducts Complete Failed:'+ transport.status, '', '', _customerKey, personId, false);
                }
            },
            onFailure: function(transport) { __logError('Load __loadRelatedProducts Ajax Failed:'+ transport.status, '', '', _customerKey, personId, false); }
         });
    }
    
    function __loadRelatedProductsComplete(html)
    {
        var div = $('divRelatedProducts');
        
        if(div && html)
            div.innerHTML = html;
    }
    
    function __updateAmtSaved(strAmt)
    {
        //alert('__updateAmtSaved');
        var lbl = $('lblTierLevelAmount');

        if(lbl && strAmt && strAmt != '')
            //lbl.innerText = strAmt;
            lbl.innerHTML = strAmt;
    }
    
    function EndRequestHandler(sender, args)
    {
        //** added to fix a bug where someone will click the cart before the postback is registered
        if(sender && sender._postBackSettings && sender._postBackSettings.sourceElement && sender._postBackSettings.sourceElement.id)
        {
           var ctrlId = sender._postBackSettings.sourceElement.id
           
           //** repaint of the cart has to come after the login panel upadate, this is for the savings amount
           if(ctrlId=='lnkLogin' || ctrlId=='lnkLogout')
             __repaintCart();   
         }
    } 
    
    function __populateEntryPointTypes(shippingActCarrierCodeTypeId, ddlId)
    {   
        var params = "shippingActCarrierCodeTypeId=" + shippingActCarrierCodeTypeId;
        new Ajax.Request('Admin.asmx/Read_ShippingActEntryPointTypes_By_ShippingActCarrierCodeTypeId',
        {
            method:'post',
            parameters: params,
            onComplete: function(transport)
            {
                if(transport.status == 200)
                {
                    var response = ((transport.responseXML.text) ? transport.responseXML.text : transport.responseXML.lastChild.textContent);
                    __populateEntryPointTypesComplete(response.evalJSON(), ddlId);
                }
                else
                {
                     __logError('Load __populateEntryPointTypes Complete Failed:'+ transport.status, '', '', _customerKey, personId, false);
                }
            },
            onFailure: function(transport) { __logError('Load __populateEntryPointTypes Ajax Failed:'+ transport.status, '', '', _customerKey, personId, false); }
         });
        
    }
    
    /*
    
    */
    function __populateEntryPointTypesComplete(responseObj, ddlId)
    {   
        var ddl = $(ddlId);
        
        if (responseObj && responseObj.ArrayOfDropdownItem && responseObj.ArrayOfDropdownItem.DropdownItem && responseObj.ArrayOfDropdownItem.DropdownItem.length && responseObj.ArrayOfDropdownItem.DropdownItem.length > 0)
        {
            for (var i = 0; i < responseObj.ArrayOfDropdownItem.DropdownItem.length; i++)
            {
                var oOption = document.createElement("OPTION");
                oOption.innerText = responseObj.ArrayOfDropdownItem.DropdownItem[i].Description;
                oOption.textContent = responseObj.ArrayOfDropdownItem.DropdownItem[i].Description;
                oOption.value = responseObj.ArrayOfDropdownItem.DropdownItem[i].Value;
                ddl.appendChild(oOption);
            }        
        }
    }    
    
    function __populateFlatRatePackagingTypes(shippingActCarrierCodeTypeId, ddlId)
    {   
        var params = "shippingActCarrierCodeTypeId=" + shippingActCarrierCodeTypeId;
        new Ajax.Request('Admin.asmx/Read_ShippingActFlatRatePackagingTypes_By_ShippingActCarrierCodeTypeId',
        {
            method:'post',
            parameters: params,
            onComplete: function(transport)
            {
                if(transport.status == 200)
                {
                    var response = ((transport.responseXML.text) ? transport.responseXML.text : transport.responseXML.lastChild.textContent);
                    __populateFlatRatePackagingTypesComplete(response.evalJSON(), ddlId);
                }
                else
                {
                     __logError('Load __populateFlatRatePackagingTypes Complete Failed:'+ transport.status, '', '', _customerKey, personId, false);
                }
            },
            onFailure: function(transport) { __logError('Load __populateFlatRatePackagingTypes Ajax Failed:'+ transport.status, '', '', _customerKey, personId, false); }
         });
        
    }
    
    /*
    
    */
    function __populateFlatRatePackagingTypesComplete(responseObj, ddlId)
    {   
        var ddl = $(ddlId);
        
        if (responseObj && responseObj.ArrayOfDropdownItem && responseObj.ArrayOfDropdownItem.DropdownItem && responseObj.ArrayOfDropdownItem.DropdownItem.length && responseObj.ArrayOfDropdownItem.DropdownItem.length > 0)
        {
            for (var i = 0; i < responseObj.ArrayOfDropdownItem.DropdownItem.length; i++)
            {
                var oOption = document.createElement("OPTION");
                oOption.innerText = responseObj.ArrayOfDropdownItem.DropdownItem[i].Description;
                oOption.textContent = responseObj.ArrayOfDropdownItem.DropdownItem[i].Description;
                oOption.value = responseObj.ArrayOfDropdownItem.DropdownItem[i].Value;
                ddl.appendChild(oOption);
            }        
        }
    }      
    
    function GetLoadingProductsHTML()
    {
        return "<div class='product_area'><img id='imgLoading' src='images/ajax-loader.gif' /></div>";
    } 