Limb.Class('Translate_Direction_Switcher', {
  __construct: function(content_block_id, result_block_id, lang_options, result_arr)
  {
    this.content_block = jQuery('#' + content_block_id);
    this.result_block = jQuery('#' + result_block_id);
    this.lang_options = lang_options;
    //alert(lang_options[input_lang_id].title);
    this.result_arr = result_arr;

    // add level button click
    var self_instance = this; // jQ hack
    jQuery('#addTranslation').click(function() {
      self_instance.addButtonClick();
      return false;
    });
    jQuery("form#add_project_form").submit(function() {
      var action = 'submit';
      self_instance.addButtonClick(action);
      //return false;
    });

    this.displayResult();
  },

  addButtonClick: function(action)
  {
    var current_input_lang_id = this.content_block.find('#input_lang_id').attr('value');
    var current_output_lang_id = this.content_block.find('#output_lang_id').attr('value');
    if(this.content_block.find('#both_direction').attr('checked'))
      var is_both_direction = 1;
    else
      var is_both_direction = 0;
    
    if(current_input_lang_id == 0 || current_output_lang_id == 0)
    {
      if(action != 'submit')
      {
        alert("Select languages");
        return false;
      }
      else
        return false;
    }

    // check for existing values
    var translate_raw = null;
    for(i = 0; i < this.result_arr.length; i++)
    {
      if(this.result_arr[i].input_lang_id == current_input_lang_id && this.result_arr[i].output_lang_id == current_output_lang_id)
       translate_raw = this.result_arr[i]; 
    }
    if(!translate_raw)
      this.result_arr.push( {input_lang_id: current_input_lang_id, output_lang_id: current_output_lang_id, both_direction: is_both_direction} );
    else return false;

    this.displayResult();
  },

  displayResult: function()
  {
    jQuery('.trans').remove();

    if(this.result_arr.length == 0)
      return;

    var html = '';
    for(i = 0; i < this.result_arr.length; i++)
    {
      var input_lang_id = this.result_arr[i].input_lang_id;
      var output_lang_id = this.result_arr[i].output_lang_id;
      var input_lang_title = jQuery('div#input_lang_id_fake').find('span[name='+input_lang_id+']').text();
      var output_lang_title = jQuery('div#output_lang_id_fake').find('span[name='+output_lang_id+']').text();
      var both_direction = this.result_arr[i].both_direction;
      if(both_direction == 1)
        var arrow_class_name = 'both';
      else
        var arrow_class_name = 'forw';

       html = '<div class="placeprojectLang">' +
               //'<div class="placeprojectTT"><span class="onedir">' + this.lang_options[input_lang_id].title + '</span>' + this.lang_options[output_lang_id].title + '</div>' + 
               '<div class="placeprojectTT"><span class="onedir">' + input_lang_title + '</span>' + output_lang_title + '</div>' + 
               '<div class="placeprojectEdDel"><a href="#" title="save" class="save save_changes" id="save_' + i + '" style="display:none;" typebut="click" action="customjq"></a><a href="#" title="edit" class="edit" id="delete_' + i + '" typebut="click" action="customjq"></a><a href="#" title="delete" action="customjq" class="delete" typebut="click"></a></div>' +
               '<input type="hidden" class="l_input" name="directions[' + i + '][input_lang_id]" value="' + input_lang_id + '">' +
               '<input type="hidden" class="l_output" name="directions[' + i + '][output_lang_id]" value="' + output_lang_id + '">' +
               '<input type="hidden" name="directions[' + i + '][both_direction]" value="' + both_direction + '">'; 
        // категории
        html += '<ul>';
        jQuery('#catblock input[@type=checkbox][@checked]').each( function(){
              html += '<li>'+jQuery('[for="'+this.id+'"]').text()+'<input type="hidden" name="directions[' + i +'][' + this.name + ']" value="1"></li>';
        });
        html += '</ul></div>';

    }
    // после добавления языка значения в полях должны сбрасываться
    jQuery('#catblock input[@type=checkbox][@checked]').each( function(){
      jQuery(this).removeAttr('checked');
    });
    this.content_block.find('#input_lang_id').attr('value','0');
    default_title = jQuery('div#input_lang_id_fake span:first-child').text();
    this.content_block.find('#vinput_lang_id').attr('value',default_title);
    this.content_block.find('#output_lang_id').attr('value','0');
    default_title = jQuery('div#output_lang_id_fake span:first-child').text();
    this.content_block.find('#voutput_lang_id').attr('value',default_title);
    // --- //

    this.result_block.append(html);

    // объем
    var val = jQuery("#size").attr("value");
    var val_title = '';
    if (jQuery(":radio[name=value_dim]").filter(":checked").val() == 1) val_title = 'A4 pages';
    if (jQuery(":radio[name=value_dim]").filter(":checked").val() == 2) val_title = 'symbols';
    jQuery("#value_result").html(val + ' ' + val_title);

    this.initButtons();
  },

  initButtons: function()
  {
    var self_instance = this; // jQ hack

    this.result_block.find('.delete_but').click(function()
    {
      var raw_index = getIndexFromId(this.id);
      self_instance.deleteRaw(raw_index);
      return false;
    });
    this.result_block.find('.delete').click(function()
    {
       var current_input_lang_id = jQuery(this).parent().nextAll('input.l_input').val();
       var current_output_lang_id = jQuery(this).parent().nextAll('input.l_output').val();
       jQuery(this).parent().parent().remove();
       for(i = 0; i < self_instance.result_arr.length; i++)
       {
         if(self_instance.result_arr[i].input_lang_id == current_input_lang_id && self_instance.result_arr[i].output_lang_id == current_output_lang_id)
         self_instance.result_arr.splice(i, 1);
       }
         //print_r(self_instance.result_arr);
         return false;
    });
    this.result_block.find('.edit').click(function()
    {
      if(jQuery(this).attr('disabled') != 'disabled')
      {
        var cat_change = jQuery('div#catblock').html();
        var cat_num;
        jQuery(this).parent().after('<div class="clubpageChCont" id="edit_cat_block">'+cat_change+'</div>');
        jQuery(this).parent().find('.save_changes').attr("style","display:block;");
        jQuery(this).attr("style","display:none;");
        jQuery(this).parent().parent().children('ul').children('li').each(function() {
          cat_num = jQuery(this).children('input').attr("name").substr(-2,1);     
          jQuery(this).parent().parent().find('div#edit_cat_block div#c_'+cat_num+' input#ch'+cat_num).attr('checked','checked');
        });
        jQuery(this).parent().parent().children('ul').attr("style", "display:none;");
        jQuery(this).attr('disabled','disabled');
        return false;
      }
      else return false;
    });
    this.result_block.find('.save_changes').click(function()
    {
        if(jQuery(this).parent().find('.edit').attr('disabled') == 'disabled')
      {
        var j = jQuery(this).parent().find('.edit').attr('id').split("_")[1];
        var html = '';
        // категории
        html += '<ul>';
        jQuery(this).parent().parent().find('#edit_cat_block input[@type=checkbox][@checked]').each( function(){
              //alert(jQuery(this).next('[for="'+this.id+'"]').text());
              html += '<li>'+jQuery(this).next('[for="'+this.id+'"]').text()+'<input type="hidden" name="directions[' + j +'][' + this.name + ']" value="1"></li>';
        });
        html += '</ul>';
        //alert (html);
        jQuery(this).parent().parent().children('ul').remove();
        jQuery(this).parent().parent().append(html);
        jQuery(this).parent().parent().children('div#edit_cat_block').remove();
        jQuery(this).attr("style", "display:none;");
        jQuery(this).parent().find('.edit').removeAttr('disabled');
        jQuery(this).parent().find('.edit').attr('style','display:block;');
        return false;
        }
        else return false;
    });
  },

  deleteRaw: function(index)
  {
    var new_arr = new Array();
    for(i = 0; i < this.result_arr.length; i++)
    {
      if(i != index)
        new_arr.push(this.result_arr[i]);
    }
    this.result_arr = new_arr;

    this.displayResult();
  }
});

