﻿// © Copyright Strategy Builders Inc. 2000-2009. All rights reserved.
//   
// The entire contents of this file is protected by International and
// U.S.Copyright Laws. Unauthorized reproduction, distribution, 
// redistribution and reverse engineering of any or all portion of the code 
// contained in this file is strictly prohibited and may
// result in severe civil and criminal penalties and will be
// prosecuted to the maximum extent possible under the law.
//  
// RESTRICTIONS 
//  
// THIS SOURCE CODE AND ALL RESULTING INTERMEDIATE FILES  
// ARE CONFIDENTIAL AND PROPRIETARY TRADE  
// SECRETS OF Strategy Builders Inc. 
//  
// THE SOURCE CODE CONTAINED WITHIN THIS FILE AND ALL RELATED
// FILES OR ANY PORTION OF ITS CONTENTS SHALL AT NO TIME BE  
// COPIED, TRANSFERRED, SOLD, DISTRIBUTED, OR OTHERWISE MADE 
// AVAILABLE TO OTHER INDIVIDUALS WITHOUT EXPRESS WRITTEN CONSENT  
// AND PERMISSION FROM Strategy Builders Inc. 
//  
// CONSULT THE END USER LICENSE AGREEMENT FOR INFORMATION ON 
// ADDITIONAL RESTRICTIONS.
//  

function ShoppingCartControl(id, shoppingCartItems) {
    ContainerControl.call(this, id);

    this._shoppingRowItems = new RepeaterControl('ShoppingRowItems', 'shoppingCartItem', shoppingCartItems);
    this._cartTotalRow = new Control('CartTotalRow');

    var totalQuantity = 0;
    var totalPrice = 0;

    this._zipCode = '';

    this._state = '';

    for (var i in shoppingCartItems) {
        var shoppingCartItem = shoppingCartItems[i];

        totalQuantity += shoppingCartItem.Quantity;
        totalPrice += (shoppingCartItem.Quantity * shoppingCartItem.CatalogGoods.Price);
    }

    this._cartTotalRow.setAttribute('totalQuantity', totalQuantity);
    this._cartTotalRow.setAttribute('totalPrice', totalPrice);

    this.addControl(this._shoppingRowItems);
    this.addControl(this._cartTotalRow);
    
}

ShoppingCartControl.prototype = new ContainerControl();

ShoppingCartControl.prototype.setCartItems = function(shoppingCartItems) {
    this._shoppingRowItems.setCollection(shoppingCartItems);

    var totalQuantity = 0;
    var totalPrice = 0;

    for (var i in shoppingCartItems) {
        var shoppingCartItem = shoppingCartItems[i];

        totalQuantity += shoppingCartItem.Quantity;
        totalPrice += (shoppingCartItem.Quantity * shoppingCartItem.CatalogGoods.Price);
    }

    this._cartTotalRow.setAttribute('totalQuantity', totalQuantity);
    this._cartTotalRow.setAttribute('totalPrice', totalPrice);
}

ShoppingCartControl.prototype.getCartItems = function () {
    return this._shoppingRowItems.getCollection();
}

ShoppingCartControl.prototype.getTotalPrice = function () {
    return this._cartTotalRow.getAttribute('totalPrice');
}

ShoppingCartControl.prototype.getTotalQuantity = function () {
    return this._cartTotalRow.getAttribute('totalQuantity');
}

ShoppingCartControl.prototype.setZipCode = function (zipCode) {
    this._zipCode = zipCode;
    this.setAttribute('ZipCode', zipCode);
}

ShoppingCartControl.prototype.getZipCode = function() {
    return this._zipCode;
}

ShoppingCartControl.prototype.setState = function (state) {
    this._state = state;
    this.setAttribute('State', state);
}

ShoppingCartControl.prototype.getState = function () {
    return this._state;
}

ShoppingCartControl.prototype.DisplayShippingOptions_EventHandler = function (e) {
    var targ;
    if (!e) e = window.event;
    if (e.target) targ = e.target;
    else if (e.srcElement) targ = e.srcElement;
    if (targ.nodeType == 3) // defeat Safari bug
        targ = targ.parentNode;
    var controls = targ.id.split('_');

    var me;
    me = eval(controls[0]);

    if (targ.value != null && targ.value != '') {
        me.setZipCode(targ.value);
        me.getEventHandlers()['DisplayShippingOptions'](me);
    }

}

ShoppingCartControl.prototype.setCartItemsTemplate = function(templateText) {
    this._shoppingRowItems.setTemplate(templateText);
}

ShoppingCartControl.prototype.setCartTotalTemplate = function(templateText) {
    this._cartTotalRow.setTemplate(templateText);
}

ShoppingCartControl.prototype.RegisterEvents = function() {
    ContainerControl.prototype.RegisterEvents.call(this);

    for (var ControlEventName in this.getRegisterEventExpressions()) {
        //alert(this.getRegisterEventExpressions()[ControlEventName]);
        eval(this.getRegisterEventExpressions()[ControlEventName]);
    }
    for (var i = 0; i < this.getChildCount(); i++) {
        for (ControlEventName in this.getChild(i).getRegisterEventExpressions()) {
            //alert(ControlEventName);

            //            alert(this.getChild(i).getRegisterEventExpressions()[ControlEventName]);
            eval(this.getChild(i).getRegisterEventExpressions()[ControlEventName]);
        }
    }
}


