/**
 * Created by Alex on 25/11/2016.
 */

function SplitPaymentManager( element ) {
    if( typeof element == "string" ) {
        element = $( element );
    }

    var self = this;
    self.checkedItem = "[name='split_selected']";
    self.$elements = element.find( ".box" );
    self.activeEl = 0;

    self.setRate = function( value ) {
        self.rate = parseFloat( value ? value : 0 );
    };

    self.getRate = function() {
        return self.rate;
    };

    self.setActiveElement = function( option ) {
        self.$elements.each(
            function( index, value ) {
                if( $( value ).data( "option" ) == element.data( "selectedOption" ) ) {
                    self.activeEl = $( value ).data( "option" );
                    if( CheckoutPageManager ) {
                        $( CheckoutPageManager ).triggerHandler( "checkout:paymentchanged", { option: self.activeEl } );
                    }
                }
            }
        );
    };

    self.init = function() {
        self.setRate( 1 );
        self.setActiveElement( $( element ).data( "selectedOption" ) );

        self.activate();
        self.checkItem();

        if ($( self.$elements ).length) {
            $( self.$elements ).on( "click", self.click.bind( this ) );
        } else {
            // checkout widget
            $( 'select[name="split_selected"]' ).on( "change", self.change.bind( this ) );
        }

        $( self ).on( "payment:update", self.updatePayment );
        self.sentWithIframe();
    };

    self.updatePayment = function( e, data ) {
        if( data && data.rate ) {
            self.setRate( data.rate );
        }
    };

    self.getCurrentElement = function() {
        return $( self.$elements[ self.activeEl ] );
    };

    self.setCurrentElement = function( e ) {
        return $( self.$elements ).index( e );
    };

    self.getCurrentCheckedItem = function() {
        var activeTab = self.getCurrentElement();
        return activeTab.find( self.checkedItem );
    };

    self.getCurrentCheckedItemValue = function() {
        return self.getCurrentCheckedItem().val();
    };

    self.activate = function() {
        self.getCurrentElement().addClass( "active" );
        self.checkItem();
    };

    self.deactivate = function() {
        self.unCheckItem();
        self.getCurrentElement().removeClass( "active" );
    };

    self.checkItem = function() {
        var checkBox = self.getCurrentCheckedItem();
        $( checkBox ).prop( "checked", true );
    };

    self.unCheckItem = function() {
        var checkBox = self.getCurrentCheckedItem();
        $( checkBox ).prop( "checked", false );
    };

    self.click = function( e ) {
        self.deactivate();
        self.activeEl = self.setCurrentElement( e.currentTarget );
        self.activate();

        if( CheckoutPageManager ) {
            $( CheckoutPageManager ).triggerHandler( "checkout:paymentchanged", { option: self.activeEl } );
        }

        $( "#frmOrder" ).trigger( 'data:capture' );

        self.sentWithIframe();
    };

    self.change = function( e ) {
        self.activeEl = $(e.currentTarget).val();

        if( CheckoutPageManager ) {
            $( CheckoutPageManager ).triggerHandler( "checkout:paymentchanged", { option: self.activeEl } );
        }

        $( "#frmOrder" ).trigger( 'data:capture' );
    };

    self.sentWithIframe = function (e) {
        $('.paymentChoice input').attr('skip-iframe', true);
        self.getCurrentElement().find('input').removeAttr('skip-iframe');
    };

    self.init();
}
