/**

 xyiLib version 0.0.1a

 few lame procedures for use with Annexis CMS

*/

 // ***********************
 // **** xyiCountChars ****
 // ***********************
 //
 // Counts the length of the string value of the "element"
 // and displays this number as an inner HTML of "cnt" element
 // Useful for counting length of the input-text and textarea
 // elements. 
 //
  function xyiCountChars(el_id, cnt_id)
  {
    
    element = document.getElementById(el_id);
    counter = document.getElementById(cnt_id);
    
    if (null != counter && null != element) {
      counter.innerHTML = element.value.length;
    }

  }


 // ***********************
 // **** xyiSwitchHelp ****
 // ***********************
 //
 // Shows or hides specified element, using its "display" property.
 // Useful for displaying help or additional info that would garbage
 // the looks of the screen if always displayed. Just place it inside
 // a span or div and then use this function to show it when needed :)
 //
  function xyiSwitchHelp(el_id)
  {
   
    element = document.getElementById(el_id);

    if (null != element) {
      
      if (element.style.display == "none") {
        element.style.display = "";
      } else { 
        element.style.display = "none";
      } 
    
    }

  }

 //
 // Copied from richtext.js 
 //
  function showConfirm(url, msg)
  {
    if (confirm(msg)) self.location=url;
  }


 //
 // Collapses and expands nodes of standard rubric tree
 //
  function toggleNode($node_id) {
    $node_row  = document.getElementById("nfo"+$node_id);
    $node_img  = document.getElementById("nim"+$node_id);
    if ($node_row) {
      if ("none" == $node_row.style.display) {
        collapseAllNodes();
        $node_row.style.display = "";
        if ($node_img) {
          $node_img.alt   = "-";
          $node_img.title = "Collapse node";
          $node_img.src   = $node_img.src.replace("plus", "minus");
        }
      } else {
        $node_row.style.display = "none";
        if ($node_img) {
          $node_img.alt   = "+";
          $node_img.title = "Expand node";
          $node_img.src   = $node_img.src.replace("minus", "plus");
        }
      }
    }
  }

 //
 // Collapses all nodes of the catalogue rubrics tree
 //
  function collapseAllNodes()
  {
    if (document.all) { // IE must die, <tr>'s are not returned by getElementsByName
      var $nodes = document.getElementsByTagName("tr");
      for ($i=0; $i<$nodes.length; $i++) {
        if ("nfo_node" == $nodes[$i].name) {
          var $node_id        = $nodes[$i].id;
          var $node_img_id    = $node_id.replace("nfo", "nim");
          var $node_img       = document.getElementById($node_img_id);
          $node_img.alt   = "+";
          $node_img.title = "Expand node";
          $node_img.src   = $node_img.src.replace("minus", "plus");
          $nodes[$i].style.display = "none";
        }
      }
    } else { // Gecko forever :)
      var $nodes = document.getElementsByName("nfo_node");
      for ($i=0; $i<$nodes.length; $i++) {
        var $node_id        = $nodes[$i].id;
        var $node_img_id    = $node_id.replace("nfo", "nim");
        var $node_img       = document.getElementById($node_img_id);
        $node_img.alt   = "+";
        $node_img.title = "Expand node";
        $node_img.src   = $node_img.src.replace("minus", "plus");
        $nodes[$i].style.display = "none";
      }
    }
  }

 //
 // Collapses and expands nodes of extended admin rubric list
 // (when editing rubrics)
 //
  function toggleNode2($node_id) {
    $node_row  = document.getElementById("nfo"+$node_id);
    $node_img  = document.getElementById("nim"+$node_id);
    if ($node_row) {
      if ("none" == $node_row.style.display) {
        $node_row.style.display = "";
        if ($node_img) {
          $node_img.alt = "-";
          $node_img.src = $node_img.src.replace("close", "open");
        }
      } else { 
        $node_row.style.display = "none";
        if ($node_img) {
          $node_img.alt = "+";
          $node_img.src = $node_img.src.replace("open", "close");
        }
      }
    }
  }

 // Toggles admin menu item node
  function toggleINode2($node_id) {
    $node_row  = document.getElementById("info"+$node_id);
    $node_img  = document.getElementById("inim"+$node_id);
    if ($node_row) {
      if ("none" == $node_row.style.display) {
        $node_row.style.display = "";
        if ($node_img) {
          $node_img.alt = "-";
          $node_img.src = $node_img.src.replace("close", "open");
        }
      } else { 
        $node_row.style.display = "none";
        if ($node_img) {
          $node_img.alt = "+";
          $node_img.src = $node_img.src.replace("open", "close");
        }
      }
    }
  }

 //
 // To be used with forms submitting parameters needed for shifting
 // elements of CMS DOM (documents, units, components) to another
 // place (using `sort_order` field)
 //
  function moveElement(form_id, shift_dir) {
    da_form = document.forms["moveform"+form_id];
   // copying shift size value from editor to hidden control
    da_form.elements.shift_size.value = da_form.elements.da_shift_size.value;
    da_form.elements.shift_dir.value = shift_dir;
    da_form.submit();
  }

 //
 // Differs from `moveElement()` only by the name of the form it submits
 //
  function moveItem(form_id, shift_dir) {
    da_form = document.forms["moveform_i"+form_id];
    da_form.elements.shift_size.value = da_form.elements.da_shift_size.value;
    da_form.elements.shift_dir.value = shift_dir;
    da_form.submit();
  }

