if (LINE == null) {
  var LINE = {};
}

LINE.forms = {
  setup: function() {
    var dependentSelects = jQuery('select.dependentSelect');
    var pattern = /([a-z]*_?)sub([a-z]+_id)/i;
    for (var i=0; i < dependentSelects.length; i++) {
      // console.log(dependentSelects[i].id.replace(pattern,'$1$2'));
      var parent_select;
      if (dependentSelects[i].id.match(pattern)) {
        parent_select = document.getElementById(dependentSelects[i].id.replace(pattern,'$1$2'));
        // console.log(parent_select.id);
      }
      if (parent_select == null) {
        var pattern2 = /_dependent$/i
        if (dependentSelects[i].id.match(pattern2)) {
          parent_select = document.getElementById(dependentSelects[i].id.replace(pattern2,''));
          // console.log(parent_select.id);
        }
      }
      if (null != parent_select) {
        parent_select.onchange = LINE.forms.dependentSelect.change;
        parent_select.dependentSelect = dependentSelects[i];
        parent_select.allOptions = [];
        var selectedValue = $(dependentSelects[i]).val();
        var optionGroups = dependentSelects[i].getElementsByTagName('optgroup');
        for (var j=0; j < optionGroups.length; j++) {
          var groupOptions = optionGroups[j].getElementsByTagName('option');
          var clonedGroupOptions = [];
          var option = document.createElement('option');
          option.label = '--';
          option.value = '';
          option.innerHTML = '--';
          clonedGroupOptions.push(option);
          for (var k=0; k < groupOptions.length; k++) {
            if (groupOptions[k].value) {
              var option = document.createElement('option');
              option.label = groupOptions[k].label;
              option.value = groupOptions[k].value;
              option.innerHTML = groupOptions[k].innerHTML;
              clonedGroupOptions.push(option);
            }
          }
          if (optionGroups[j].id) {
            parent_select.allOptions[optionGroups[j].id] = clonedGroupOptions;
          }
          parent_select.allOptions[optionGroups[j].label] = clonedGroupOptions;
        }
        for (var j=optionGroups.length-1; j >= 0; j--) {
          optionGroups[j].parentNode.removeChild(optionGroups[j]);
        }
        parent_select.onchange();
        $(dependentSelects[i]).val(selectedValue);
      }
    }

    $("input#LINE_FORM_DELETE").click(function(){
       return confirm("Are you sure you want to delete this item? This action cannot be undone");
    });

    $("#cc_checkboxes input[type='checkbox']").each(function() {
      if (this.id != 'option_dont_accept_ccards') {
        this.onclick = function() {
          if (this.checked) {
            document.getElementById('option_dont_accept_ccards').checked = false;
          }
        }
      }
    });

    $("#option_dont_accept_ccards").each(function() {
      this.onclick = function() {
        var clicked_id = this.id;
        if (this.checked) {
          $("#cc_checkboxes input[type='checkbox']").each(function() {
            if (this.id != clicked_id) {
              this.checked = false;
            }
          });
        }
      }
    });

    $('.limited').each(function() {
      var row = this;
      
      $('textarea',this).each(function(index){
        if (this.counter = document.getElementById(this.id+"_counter")) {
          this.warning = $(".warning",row).get(0);
          this.limit = parseInt(this.counter.innerHTML);
          this.count = function() {
            this.counter.innerHTML = (this.limit - this.value.length);
            if (this.limit - this.value.length < 0) {
              this.warning.innerHTML = " Text will be truncated";
            } else {
              this.warning.innerHTML = "";
            }
          }
          $(this).change(this.count);
          $(this).keyup(this.count);
          $(this).blur(this.count);
          this.count();
        }
      });
    });

    if (typeof($('.ui_tabs').tabs) == 'function') {
      $('.ui_tabs').tabs();
    }

    // Check / Uncheck all boxes
    jQuery('th.checkall').each(function() {
      var checkbox = document.createElement('input');
      checkbox.type = 'checkbox';
      this.appendChild(checkbox);
      checkbox.onchange = function() {
         $("input[type='checkbox']").line_checkbox(this.checked);
      }
    });
  },
  dependentSelect: {
    change: function() {
      this.dependentSelect.options.length = 0;
      if (false !== this.selectedIndex) {
        var options = false;
        // console.log(this.options[this.selectedIndex].id+"_options");
        if (null != this.allOptions[this.options[this.selectedIndex].label]) {
          options = this.allOptions[this.options[this.selectedIndex].label];
        } else if (this.options[this.selectedIndex].id && null != this.allOptions[this.options[this.selectedIndex].id+"_options"]) {
          options = this.allOptions[this.options[this.selectedIndex].id+"_options"];
        }
        
        if (options) {
          this.dependentSelect.options.length = options.length;
          for (var i=0; i < options.length; i++) {

            // console.log(options[i].cloneNode(true));
            //clonedOption = options[i].cloneNode(true);
            this.dependentSelect.options[i] = new Option(options[i].label, options[i].value);


          };
        }
      }
      if (this.dependentSelect.options.length > 0) {
        this.dependentSelect.disabled = false;
      } else {
        this.dependentSelect.disabled = true
      }
    }
  }
}

jQuery.fn.line_checkbox = function(checked) {
 // if mode is undefined, use 'on' as default
 return this.each(function() {
   this.checked = checked;
 });
};

function makeSublist(parent,child,isSubselectOptional,childVal)
{
	$("body").append("<select style='display:none' id='"+parent+child+"'></select>");
	$('#'+parent+child).html($("#"+child+" option"));

		var parentValue = $('#'+parent).attr('value');
		$('#'+child).html($("#"+parent+child+" .sub_"+parentValue).clone());

	childVal = (typeof childVal == "undefined")? "" : childVal ;
	$("#"+child+' option[value="'+ childVal +'"]').attr('selected','selected');

	$('#'+parent).change(
		function()
		{
			var parentValue = $('#'+parent).attr('value');
			$('#'+child).html($("#"+parent+child+" .sub_"+parentValue).clone());
			if(isSubselectOptional) $('#'+child).prepend("<option value='none'> -- Select -- </option>");
			$('#'+child).trigger("change");
            $('#'+child).focus();
		}
	);
}





jQuery(function() {
	/*jQuery.noConflict();*/
	jQuery('body').addClass('dynamic');
	LINE.forms.setup();


  $('span.priority a').click(function() {
        priority_div = ($(this)).parent().parent();
        
        priority_div.children('.priority').toggle();
        priority_div.children('.priority_selector').toggle();

        return false;
  });

  $('.cssdropdown ul a').click(function() {
        headlink = ($(this)).parent().parent().parent().children('h3').children('a');
        
        url = ($(this)).attr('href');
        // CHANGE PRIORITY AND DESC
        $.post(url, function (data) {
            headlink.html(data);
        });

        return false;
  });

  $('li.headlink').hover(
			function() { $('ul', this).css('display', 'block'); },
			function() { $('ul', this).css('display', 'none'); }
  );

  $('textarea#translated_text').each(function(){
      updateCharacterCounts($(this));
  });

  $('textarea#translated_text').keyup(function(){
     updateCharacterCounts($(this));
  });

  function updateCharacterCounts(textarea)
  {
    var allowed = $('span.allowed_characters span').html();
    var actual = textarea.val().length;

    $('span#translated_text_count').html(actual + ' characters');

    if(allowed && actual > allowed) {
      $('span.actual_characters').css('background-color', 'red');
    } else {
      $('span.actual_characters').css('background-color', 'white');
    }
  }
});


jQuery(function() {
  $('a.toggle_help').click(function() {
    var id = $(this).attr('rel');

    $('div.help_' + id).toggle();
    return false;
  });
});
