﻿/// <reference path="scripts.htm" />

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Copyright (c) 2008-2009 OrderBot Software, Inc. All rights reserved.
// orderbot.cart.payment.js
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Object.createNamespace('orderbot.cart.payment');

Object.extend(orderbot.cart.payment, {
    hasStates: false,
    div: null,
    ns: 'orderbot.cart.payment',

    init: function() {
        this.div = $('divPayment');

        var btn = this.div.down('input[id$=btnSubmit]');
        btn.observe('click', function(e) {
            $('orderbot-msg').show();
            if (Page_ClientValidate()) { orderbot.toogleAjaxButton(e.element(), true) };
        });

        orderbot.goToNext('txtPhone1', 'txtPhone2', 3, this.div);
        orderbot.goToNext('txtPhone2', 'txtPhone3', 3, this.div);
        orderbot.goToNext('txtPhone3', 'txtPhoneExt', 4, this.div);
    },

    applyCouponCode: function(event) {
        Event.stop(event);

        var div = $('summary');

        //alert(div.down('input[id$=txtCouponCode]').value);

        var text = div.down('input[id$=txtCouponCode]').value;

        var args = { couponCode: text };

        if (text.empty()) return;
        //alert("come in");


        var btn = div.down('input[id$=btnApplyCouponCode]');
        orderbot.toogleAjaxButton(btn, true);
        var context = this;
        ShoppingCartHandler.ApplyCouponCode_Payment(args, function(response) {
            if (response.error) {
                orderbot.toogleAjaxButton(btn);
                $('orderbot-msg').hide();
                alert(response.error.Message); return;
            }
            var data = orderbot.parseJSON(response.value);
            var rec = data.Recipients[0];

            orderbot.toogleAjaxButton(btn);

            var text = (rec.CouponIsValid) ? div.down('input[id$=txtCouponCode]').value + ' is a VALID Code' : div.down('input[id$=txtCouponCode]').value + ' is an INVALID Code';


            div.down('span#cInfo').update(text);

            context.updateOrderTotal(data);
            $('orderbot-msg').hide();


        });
    },

    updateOrderTotal: function(data) {

        //alert("update");
        var div = $('summary');
        //            var lbl = div.down('span[id$=lblOrderSubTotal]');
        //            lbl.update(data.SubTotal.numberFormat('$###,###,##0.00'));
        //            lbl = div.down('span[id$=lblOrderTax]');
        //            lbl.update(data.TaxTotal.numberFormat('$###,###,##0.00'));
        //            lbl = div.down('span[id$=lblOrderShippingTotal]');
        //            lbl.update(data.ShippingTotal.numberFormat('$###,###,##0.00'));
        //            lbl = div.down('span[id$=lblCouponByProductTotal]');
        //            lbl.update(data.ItemsCouponDiscountTotal.numberFormat('$###,###,##0.00'));
        lbl = div.down('span[id$=lblOrderTotal]');
        lbl.update(data.Total.numberFormat('$###,###,##0.00'));
        lbl = div.down('span[id$=lblCouponByProductTotal]');
        lbl.update(data.CouponDiscountTotal.numberFormat('$###,###,##0.00'));

    }

    //    togglePhoneState: function(withValidations) {
    //        var vals = $('validators');
    //        vals.down('[id$=rfvP1]').enabled = withValidations;
    //        vals.down('[id$=rfvp2]').enabled = withValidations;
    //        vals.down('[id$=rfvp3]').enabled = withValidations;
    //        vals.down('[id$=rfvZip]').enabled = withValidations;

    //        if (!withValidations) {
    //            this.div.down('div[id=state-dd]').hide();
    //            this.div.down('div[id=state-txt]').show();
    //            this.div.down('div[id=phoneWithValidation]').hide();
    //            this.div.down('div[id=phoneFree]').show();
    //        }
    //        else {
    //            this.div.down('div[id=state-txt]').hide();
    //            this.div.down('div[id=state-dd]').show();
    //            this.div.down('div[id$=phoneFree]').hide();
    //            this.div.down('div[id$=phoneWithValidation]').show();
    //            this.populateStates();
    //        }
    //    },

    //    populateStates: function(countryId) {
    //        if (!countryId) {
    //            countryId = $F(this.div.down('SELECT[id$=ddlCountries]'));
    //        }
    //        StatesHandler.GetStatesByCountry(countryId, this.populateStatesResponse.bind(this));
    //    },
    //    populateStatesResponse: function(response) {
    //        if (response.error) { alert(response.error.Message); return; }

    //        var ddl = this.div.down('SELECT[id$=ddlStates]');

    //        var length = ddl.options.length;
    //        for (var i = 0; i < length; i++) { ddl.remove(0); }
    //        var result = eval(response.value);

    //        $(result).each(function(state) {
    //            var opt = $.OPTION({ text: state.Name, value: state.StateId });
    //            try {
    //                ddl.add(opt, null); // standards compliant; doesn't work in IE
    //            }
    //            catch (ex) {
    //                ddl.add(opt); // IE only
    //            }
    //        } .bind(this));
    //    }

});
