if( typeof(IMVU.Store) == 'undefined' ) {
    IMVU.Store = {};
}

IMVU.Store.confirmationSpinner = new function() {    
    var self = this;
    
    this.showProcessingDialog = function() {
        self.dialog.show();
        
        IMVU.Store.confirmationSpinner.showing = true;
    };   
    
    YAHOO.util.Event.onContentReady(
        'confirmationSpinner_box',
        function() {
            YAHOO.util.Dom.get('confirmationSpinner_box').style.display = 'block';
            self.dialog = new YAHOO.widget.Dialog(
                'confirmationSpinner_box', 
                {
                    underlay:'shadow',
                    draggable:false,
                    modal:true,
                    visible:false,
                    width:'350px',
                    constraintoviewport:true,
                    close:false
                } 
            );
            self.dialog.render(document.body);
            YAHOO.util.Dom.addClass("confirmationSpinner_box_c", "yui-skin-sam");
            self.dialog.center();
            
            self.dialog.setHeader('Processing Payment');
            self.dialog.setBody('<div style="text-align: center;"><img src="/common/img/bigrotation.gif"></div>');
            self.dialog.render();

            IMVU.Store.confirmationSpinner.loaded = true;
        }
    );
};   

IMVU.Store.OneClickPayment = new function() {    
    var self = this;
    
    var _getProduct = function(pid) {            
        var objData = IMVU.Store.productData;
        for(var i = 0, obj; obj = objData[i]; ++i) {
            if(pid == obj.pid) {
                return obj;
            }
        }
    };
    
    this.customerId = IMVU.data.customerID;
    this.conn = null;
    this.dialog = null;
    this.selectedProductObj = 0;    
    this.showConfirmation = 1;
    this.timeout = 10000;

    this.confirmationRedirect = {
        success : function(o) {
            var obj = eval("(" + o.responseText + ")");
            if(obj.status == 1){
                var bodyHTML = [
                    '<p>Your Buy Now purchase of <b>' + self.selectedProductObj.amount + '</b> is complete.</p>',
                    '<div class="sd-button"><span id="sd_close">Close</span></div>'
                ].join('');
                self.dialog.setHeader('Thank You');
            }else{
                var bodyHTML = [
                    '<p>'+obj.message+'</p>',
                    '<div class="sd-button"><span id="sd_manage">Manage Buy Now</span> <span id="sd_close">Close</span></div>'
                ].join('');
                self.dialog.setHeader('Buy Now Alert');
            }
            self.dialog.setBody(bodyHTML);
            self.dialog.render();
            self.dialog.show();
            YAHOO.util.Event.on('sd_close', 'click', self.onClickClose);
            YAHOO.util.Event.on('sd_manage', 'click', self.onClickManageOneClickBuy);
        },
        failure : function(o) {},
        timeout : self.timeout
    }; 

    this.asyncRequest = function() {
        var postData =
            'cid=' + this.customerId +
            '&products_id=' + this.selectedProductObj.pid;
        this.conn = YAHOO.util.Connect.asyncRequest(
            'POST',
            '/api/service/gateway/svc_one_click_payment.php', 
            this.confirmationRedirect,
            postData
        );
    }

    this.showConfirmationDialog = function() {        
        YAHOO.util.Dom.get("f_cid").value = this.customerId;
        YAHOO.util.Dom.get("f_pid").value = this.selectedProductObj.pid;
        YAHOO.util.Dom.get("f_pname").innerHTML = this.selectedProductObj.amount;
        YAHOO.util.Dom.get("f_pprice").innerHTML = this.selectedProductObj.price;
        if (typeof tracker != 'undefined') tracker._trackEvent('Credits Store', 'One-Click Payment', 'Show Dialog');
        this.dialog.center();
        this.dialog.show();
    }
    
    this.showProcessingDialog = function() {
        this.dialog.setHeader('Processing Payment');
        this.dialog.setBody('<img src="/common/img/bigrotation.gif">');
        this.dialog.render();
        this.dialog.show();        
        this.asyncRequest();
    };   

    this.onClickProcessTransaction = function() {
        self.showProcessingDialog();
    };
    
    this.onClickCancelTransaction = function() {
        self.dialog.hide();
    };

    this.onClickClose = function() {
        self.dialog.hide();
        window.location.reload(true);
    };

    this.onClickAddToCart = function() {
        self.dialog.hide();
        window.location = '/store/cart.php?action=add_to_cart&products_id='+self.selectedProductObj.pid;
    };

    this.onClickManageOneClickBuy = function() {
        self.dialog.hide();
        window.location = '/catalog/web_manage_one_click_payment.php';
    };

    this.onClick = function() {
        var pid = '';
        var nodeName = this.nodeName.toLowerCase();
        if(nodeName == 'input') {
            var select = document.getElementById('credit_amount');
            var optionId = select.options[select.selectedIndex].id;
            pid = optionId.replace(/ocb_s_/, '');
        } else if(nodeName == 'a') {
            pid = this.id.replace(/ocb_b_/, '');
        }
        self.selectedProductObj = _getProduct(pid);
        if(!self.showConfirmation) {
            self.showProcessingDialog();
        } else {
            self.showConfirmationDialog();     
        }
    };
    
    YAHOO.util.Event.onDOMReady(
        function() {
            YAHOO.util.Event.onContentReady(
                'sd',
                function() {
                    YAHOO.util.Dom.get('sd').style.display = 'block';
                    self.dialog = new YAHOO.widget.Dialog(
                        'sd', 
                        {
                            underlay:'shadow',
                            draggable:false,
                            modal:true,
                            visible:false,
                            width:'350px',
                            constraintoviewport:true,
                            close:false
                        } 
                    );
                    self.dialog.setHeader('Buy Now');
                    self.dialog.callback = {
                        success : function(o) {}
                    };
                    self.dialog.render(document.body);
                    YAHOO.util.Dom.addClass("sd_c", "yui-skin-sam");
                    self.dialog.center();
                    
                    YAHOO.util.Event.on('process_transaction', 'click', self.onClickProcessTransaction);
                    YAHOO.util.Event.on('cancel_transaction', 'click', self.onClickCancelTransaction); 

                    var ocpEls = YAHOO.util.Dom.getElementsByClassName('one-click-payment', '', 'select_credit_amount');
                    YAHOO.util.Dom.batch(
                        ocpEls,
                        function(el) {
                            YAHOO.util.Event.on(el, 'click', self.onClick);
                            if(el.href) {
                                el.removeAttribute('href');        
                            }
                        }
                    );
                    IMVU.OneClickBuyJSLoaded = true;
                }
            );
        }
    );
};
