
var Klarna = Class.create({
    initialize: function() {
        this.element_id = false;
        this.merchant_id = false;
        this.fee = false;
        this.country = false;
        this.url = false;
    },

    setMerchantId: function(merchant_id) {
        this.merchant_id = merchant_id;
    },

    setElementId: function(element_id) {
        this.element_id = element_id;
    },

    setFee: function(fee) {
        this.fee = fee;
    },

    setCountry: function(country) {
        this.country = country;
    },

    setUrl: function(url) {
        this.url = url;
    },

    loadExternal: function() {
        var script = new Element('script', {
            src: 'http://integration.klarna.com/js/klarnainvoice.js'
        });
        $$('head').first().insert(script);
        var scriptpp = new Element('script', {
            src: 'http://integration.klarna.com/js/klarnapart.js'
        });
        $$('head').first().insert(scriptpp);
   },

    showTerms: function() {
        var manager = this;
        InitKlarnaInvoiceElements(manager.element_id, manager.merchant_id, manager.country, manager.fee);
        ShowKlarnaInvoicePopup();
    },

    showPPTerms: function() {
        var managerpp = this;
        InitKlarnaPartPaymentElements(managerpp.element_id, managerpp.merchant_id, managerpp.country, managerpp.fee);
        ShowKlarnaPartPaymentPopup();
    },

    getAddresses: function(pno) {
        var elemt = this.element_id;
        Element.show('loadingmask-' + elemt);
        var reloadurl = this.url;
        new Ajax.Updater('output-div-' + elemt, reloadurl + '?cache' + parseInt(Math.random() * 99999999) + '&type=' + elemt, {
            parameters: 'pno=' + pno,
            onComplete: function(response) {
                Element.hide('loadingmask-' + elemt);

                // Start: Fix to be able to pay by Klarna as company
                var klarna_company_container = $('klarna_company_extra_fields_container');
                if(klarna_company_container) {
                    var activate_klarna_inputs = false;
                    var klarna_element = $('onestepcheckout-form')["payment[kreditor_invoice_shippingaddress]"];
                    if(klarna_element) {
                        var klarna_address = klarna_element.value;
                        if(klarna_address) {
                            if(klarna_address.length) {
                                // If address starts with a "|", it's a company address
                                if(klarna_address[0] == "|") {
                                    activate_klarna_inputs = true;
                                } else if(klarna_address[0] == "0") {
                                    // Address field is select-list, check last element to se if it's a company address
                                    var selector_length = klarna_element.length;
                                    if(selector_length > 1) {
                                       klarna_address = klarna_element[selector_length-1].value;
                                        if(klarna_address) {
                                            if(klarna_address.length) {
                                                if(klarna_address[0] == "|") {
                                                    activate_klarna_inputs = true;
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                    if(activate_klarna_inputs) {
                        klarna_company_container.show();
                    } else {
                        klarna_company_container.hide();
                    }
                }
                // End: Fix to be able to pay by Klarna as company
            }
        });
    }
});

var klarna = new Klarna();
var klarnapp = new Klarna();

document.observe('dom:loaded', function() {
    klarna.loadExternal();
});


