var tempaa;
(function($) {
    var reportlab = {};
    reportlab.abstract_section = function (el) {

        var match = /set-([0-9]+)-/.exec(el.id);
        if (match) {
            var start = $('#id_section_set-' + match[1] + '-start'),
            end = $('#id_section_set-' + match[1] + '-end');

            if (start.attr('value') == '') {
                start.attr('value', 0);
            }
            if (end.attr('value') == '') {
                end.attr('value', 0);
            }

            if ($(el).attr('checked')) {
                $(start).removeClass(
                    'page_range', 'page_range_warning', 'page_range_error').addClass(
                        'page_range_disabled'
                    );
                $(end).removeClass(
                    'page_range', 'page_range_warning', 'page_range_error').addClass(
                        'page_range_disabled'
                    );
            } else { 
                $(start).addClass('page_range').removeClass(
                    'page_range_disabled');
                $(end).addClass('page_range').removeClass(
                    'page_range_disabled');
            }
            reportlab.check_ranges();
        }
    };

    reportlab.check_ranges = function () {
        var inputs = $('input[type=text].page_range'),
            regex = /-(start|end)$/;

        inputs.each(function(index, el){
            $(el).removeClass('page_range_error page_range_warning');

            if (el.id.search('__prefix__') < 0){
                var match = regex.exec(el.id),
                    diff, prev;
                if (index > 0 && match) {
                    prev = inputs[index - 1];
                    diff = el.value - prev.value;

                    switch(match[1]){
                        case 'start':
                            if (diff > 1) {
                                // gap
                                $(el).addClass('page_range_warning');
                                $(prev).addClass('page_range_warning');
                            } else if (diff < 0) {
                                // overlap
                                $(el).addClass('page_range_error');
                                $(prev).addClass('page_range_error');
                            }
                        case 'end':
                            if (isNaN(diff)) {
                                // start|end is not number
                                $(el).addClass('page_range_error');
                                $(prev).addClass('page_range_error');
                            } else if (diff < 0) {
                                // end > start
                                $(el).addClass('page_range_error');
                                $(prev).addClass('page_range_error');
                            } else if (diff == 0) {
                                // start == end
                                $(el).addClass('page_range_warning');
                                $(prev).addClass('page_range_warning');
                            }
                        }
                    }
            }
        });
    };

     reportlab.reorder = function(el) {
         var regex = /__prefix__/,
             inputs = $('td.order input');
         
         if (el) {
             var rows = $('tr', $(el).parent().parent().parent());
             if (parseInt(el.value) < inputs.length ) {
                 
                 $(rows[parseInt(el.value) - 1]).before($(el).parent().parent());
                 // console.log($(el).parent().parent());
             }
         }
         $('td.order input').each(function(index, el){
             var match = regex.exec(el.id);
                             
             if (!match) {
                 el.value = index + 1;
                 // console.log('row' + ((index + 2) % 2 + 1));
                 $(el).parent().parent().removeClass('row1').removeClass('row2').addClass(
                     'row' + ((index + 2) % 2 + 1)
                 );
             }
         });
         reportlab.check_ranges();
     };

     $(document).ready(function(){
         var regex = /-(start|end)$/;
         $('input[type=text].page_range').each(function(index, el){
             var match = regex.exec(el.id);

             if (match) {
                 $(el).change(function (event) {
                     reportlab.check_ranges();
                 });
             }
         });

         $('input[type=checkbox].abstract_section').each(function(index, el){
             $(el).change(function(event) {
                 reportlab.abstract_section(this);
             });
             reportlab.abstract_section(this);
         });
         
         $('td.order input').each(function(index, el){
             $(el).change(function (event) {
                 reportlab.reorder(this);
             });
         });
         reportlab.reorder();
     });
     
})(django.jQuery);