/*global define*/
/**
 * Sends a request for update docdatapay
 *
 * @class de_epages.docdatapay.ui.docdatapaystatus
 *
 * @uses jQuery
 * @uses ep
 * @uses ep.ajax
 * @uses ep.fn.busy
 * @uses ep.ui.dialog
 *
 *
 */
define('de_epages/docdatapay/ui/docdatapaystatus', [
    'jquery',
    'ep',
    '$dict!ep/dict',
    '$ready!',
    'ep/ajax',
    'ep/fn/busy',
    'ep/ui/dialog',
], function($, ep, epDict) {

    'use strict';
    var tStatusDocdataPayQuestion = epDict.translate('{StatusDocdataPayQuestion}');
    var tYes = epDict.translate('{yes}');
    var tCancel = epDict.translate('{Cancel}');    
    var tError = epDict.translate('{ErrorDuringUpdate}');

    /**
     * @param {String}  UIControlParameters                 JS Object with UI control parameters.
     */
    return function(UIControlParameters) {    	
        var currentWindow = UIControlParameters.CurrentWindow || window;
        var visible = IsVisible(UIControlParameters);

        if (visible) {        	
        	UIControlParameters.StatusLink.on('click', function(event) {
                event.preventDefault();
                var dialog = ep('<div/>')
                    .append('<div>'+ tStatusDocdataPayQuestion +'</div>')
                    .uiDialog({
                        modal: true,
                        width: 350,
                        height: 150,
                        buttons: [{
                            id: 'YesId',
                            text: tYes,
                            click: function() {
                            	handleDocdataPayStatus(ep(this), UIControlParameters.Objectid, currentWindow);
                                ep(this).busy('show');
                            }
                        }, {
                            id: 'CancelId',
                            text: tCancel,
                            click: function() {
                                ep(this).uiDialog('close');
                            }
                        }]
                    });
                dialog.uiDialog('open');
            });
        }        
    };

    function IsVisible(UIControlParameters) {
    	UIControlParameters.DisplayStatus.hide();    	
        if (UIControlParameters.PaymentTypeAlias == "DocdataPay") {
        	UIControlParameters.DisplayStatus.show();
            if (UIControlParameters.TransStatus != "STATUS_PAID") {
            	UIControlParameters.StatusLink.removeClass("Disabled");
                return true;
            } else {
            	UIControlParameters.StatusLink.addClass("Disabled");
                return false;
            }
        }
        return false;
    }    
    
    function handleDocdataPayStatus(context, objectid, currentWindow) { // handle the ajax request when cancelling or activating the invoice    	
        ep.ajax({
                data: {
                    'ObjectID': objectid,
                    'ChangeAction': 'JSONchangeOrderStatus'
                },
                cache: false,
                type: "POST",
                dataType: "json"
            })
            .done(function(jsonData) {
                var status = jsonData.status;               
                context.busy('hide');
                if (status == 'ok' ) {                	
                    context.empty();
                    context.append('<div id="Response" class="DialogMessage MessageWarning">OK</div>');
                    context.uiDialog('close');
                    currentWindow.location.reload();
                } else if (status == 'error') {                	                
                    context.empty();
                    context.append('<div id="Response" class="DialogMessage MessageWarning">ERROR</div>');
                    context.uiDialog('close');                    
                    if($("#DocDataPayActionsNotificationDiv").length>0){
                    	$("#DocDataPayActionsNotificationDiv").remove();     
                    }                    
                    $('#Notification').prepend('<div id="DocDataPayActionsNotificationDiv" class="DialogMessage MessageWarning" hidden>'+ tError +'</div>');
                    $("#DocDataPayActionsNotificationDiv").show();
                } else {                	
                    context.empty();
                    context.append('<div id="Response" class="DialogMessage MessageWarning">ERROR_DIF</div>');
                    context.uiDialog('close');
                    if($("#DocDataPayActionsNotificationDiv").length>0){
                    	$("#DocDataPayActionsNotificationDiv").remove();                    	
                    }                    
                    $('#Notification').prepend('<div id="DocDataPayActionsNotificationDiv" class="DialogMessage MessageWarning" hidden>'+ tError +'</div>');
                    $("#DocDataPayActionsNotificationDiv").show();
                }
            })
            .fail(function(jsonData) {
                context.busy('hide');
                context.empty();
                context.buttons.empty();
                context.append('<div class="DialogMessage MessageWarning">ajax error</div>');
            });
    }
    
});