var deals = (function() {
    // - add event listeners to .open-deal
    // - functions that open modal popup for deals
    // - Send SMS
    // - 
   
    var _addEventListeners = function() {
        var spinner_opts = {
          lines: 12, // The number of lines to draw
          length: 7, // The length of each line
          width: 4, // The line thickness
          radius: 10, // The radius of the inner circle
          color: '#000', // #rgb or #rrggbb
          speed: 1, // Rounds per second
          trail: 60, // Afterglow percentage
          shadow: false // Whether to render a shadow
        };
                
        $(".open-deal").live("click", function(event) {
            var dealId = $(this).attr('data-id'),
                locationId = $(this).attr('location-id'),
                contentUrl = Alces.settings.context_path + '/tarjoukset/' + dealId, 
                dealsPopupContent,
                loading,
                spinnerTarget,
                modalPickDeal;

            if (locationId !== undefined) {
                 contentUrl += '?locationId=' + parseInt(locationId, 10);
            }

            _c.log(contentUrl);
            $('body').append('<div id="deals-loading"></div>');
            spinnerTarget = document.getElementById('deals-loading');
            var spinner = new Spinner(spinner_opts).spin(spinnerTarget);
            $(spinnerTarget).show();    
            
            // start spinner
            
            dealsPopupContent = $.ajax({
                url: contentUrl,
                data: dealsPopupContent,
                dataType: 'html',
                success: function () {
                    _c.log(dealsPopupContent);
                    modalPickDeal = new Modal({
                        content:            dealsPopupContent.responseText,
                        contentContainer:   jQuery('<div class="content"></div>'),
                        dimmerClass:        'deal-dimmer',
                        modalBox:           jQuery('<div id="deal-popup"></div>'),
                        modalClass:         'dealsPopup'
                    });
                    // stop spinner
                    spinner.stop();
                    $(spinnerTarget).remove();
                    modalPickDeal.show();
                },
                error: function () {
                    spinner.stop();
                    $(spinnerTarget).remove();
                    // error fetching deal details 
                } 
            });
            event.preventDefault();
        });

        $('#deal-send-sms .button').live('click', function(event) {
            var dealId = $("#deal-popup-send-sms").attr("data-id"),
                $dealPopup = $("#deal-popup"),
                $form = $(this).parent('form'),
                phone = $dealPopup.find("#deal-user-phone").val()
                    .replace(/^\+358/, '0')
                    .replace(/[^0-9]/g, '');

            var target = document.getElementById('deal-send-sms');
            var spinner = new Spinner(spinner_opts).spin(target);    
            
            $dealPopup.find('#deal-send-sms').find('.button').attr('disabled', 'disabled').addClass('disabled');
            
            if (!!phone) {
                $.post(Alces.settings.api_path + '/dealium/request/'+dealId + '?phoneNumber='+phone)
                .success(function(response) {
                    spinner.stop();
                    
                    if (response && response.status && response.status.toLowerCase() !== "error") {
                        $('#submit-feedback').addClass('success').text(response.message);
                    } else {
                        $('#submit-feedback').addClass('error').text(response.message);
                    }
                    $dealPopup.find('#deal-send-sms').find('.button').removeAttr('disabled').removeClass('disabled');
                })
                .error(function(response) {
                    spinner.stop();
                    $('#submit-feedback').addClass('error').text('Tarjouksen lähetys epäonnistui, pahoittelemme häiriötä. Voit yrittää lähetystä myöhemmin uudelleen.');
                    $dealPopup.find('#deal-send-sms').find('.button').removeAttr('disabled').removeClass('disabled');
                });
            } else {                    
                spinner.stop();
                // Not a valid phone number 
                $('#submit-feedback').addClass('validation-error').text('Tarkista puhelinnumero.');
                $dealPopup.find('#deal-send-sms').find('.button').removeAttr('disabled').removeClass('disabled');
            }
            
            event.preventDefault();
        });
        
        $(document).ready(function() {
            if ($('#deals-all').length > 0) {
                $('#select-municipality').change(function(event) {
                    var municipality = $(this).val() ? $(this).val() : "Helsinki",
                        newUrl = Alces.settings.context_path + '/tarjoukset/' + encodeURIComponent(municipality) + '/1/';
                    
                    window.location = newUrl;
                });
            }
        });
        
    };
    
    this.init = function () {
        _addEventListeners();

    }();
    
    return this;
})();


