var ShoppingCart;
window.addEvent('domready', function(){
    ShoppingCart = new zxShoppingCart();
});

//////////////////////////////////////////////////////////////////////////////////////////////////
// class - no editing below this line
//////////////////////////////////////////////////////////////////////////////////////////////////
var zxShoppingCart = new Class({

    options : {
        cartId : 'CartForm',
        quantityClass:'.InputQuantity',
        checkoutButton:'idcheck_out',
        updateButton:'idupdate_cart',
        chekoutDisabled : {
        'color':'#FFFFFF'
        },
        billingFields: '#BillingAddressFormDiv input, #BillingAddressFormDiv select',
        shippingPrefix: 'shipping_',
        copyCheckbox: 'same_as_billing'
    },

    initialize:function(options){
        this.setOptions(options);
        if ( $(this.options.cartId) ) {
            this.bindQuantity();
        }

        if ( $(this.options.copyCheckbox) ){
            $(this.options.copyCheckbox).addEvent('click',function(){
                if ($(this.options.copyCheckbox).checked){
                    this.copyAddres();
                }
            }.bind(this));
        }else{
            this.copyFields();
        }

        if ( $('hidebtns') ){
            $('ShoppingButtons').setStyle('display','none');
        }
    },

    setOptions:function(options){
        this.options = Object.extend(this.options, options || {} );
    },

    bindQuantity:function(){
        $$(this.options.quantityClass).each(function(el){
            el.addEvent('blur',function(){
                if ( isNaN(el.value.toInt()) ) el.value=el.defaultValue;
                if (el.value != el.defaultValue){
                    $(this.options.checkoutButton).addEvent('click',function(e){
                        new Event(e).stop();
                    }.bind(this));
                    $(this.options.checkoutButton).setProperty('disabled',true);
                }
            }.bind(this));
        }.bind(this));
    },

    copyAddres: function(){
        $$(this.options.billingFields).each(function(el){
            if ( $(this.options.shippingPrefix + el.id) ){
                if ( $(this.options.shippingPrefix + el.id).value == '' || el.tagName == 'SELECT' ){
                    $(this.options.shippingPrefix + el.id).value = el.value;
                    if( el.tagName == 'SELECT' ) {
                        $(this.options.shippingPrefix + el.id).fireEvent('change');
                        if ( el.id == 'InputProvince' ){
                            ( function(){ $(this.options.shippingPrefix + el.id).value = el.value; }.bind(this) ).delay(500);
                        }
                    }
                }
            }
        }.bind(this));
    },

    copyFields: function(){
        $$(this.options.billingFields).each(function(el){
            if ( $(this.options.shippingPrefix + el.id) ){
                el.addEvent('blur',function(){
                    if ( $(this.options.shippingPrefix + el.id).value == '' || el.tagName == 'SELECT' ){
                        $(this.options.shippingPrefix + el.id).value = el.value;
                        if( el.tagName == 'SELECT' ) {
                            $(this.options.shippingPrefix + el.id).fireEvent('change');
                        }
                    }
                }.bind(this));
                if ( $(this.options.shippingPrefix + el.id) && $(this.options.shippingPrefix + el.id).value == '' ){
                    el.fireEvent('blur');
                }
            }
        }.bind(this));
    }
});
