// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults
var agt=navigator.userAgent.toLowerCase();
var appVer = navigator.appVersion.toLowerCase();

var is_minor = parseFloat(appVer);
var is_major = parseInt(is_minor);
var is_opera = (agt.indexOf("opera") != -1);

var is_mac = (agt.indexOf("mac")!=-1);
var iePos  = appVer.indexOf('msie');
if (iePos !=-1) {
   if(is_mac) {
       var iePos = agt.indexOf('msie');
       is_minor = parseFloat(agt.substring(iePos+5,agt.indexOf(';',iePos)));
   }
   else is_minor = parseFloat(appVer.substring(iePos+5,appVer.indexOf(';',iePos)));
   is_major = parseInt(is_minor);
}

var is_konq = false;
var kqPos   = agt.indexOf('konqueror');
if (kqPos !=-1) {                 
   is_konq  = true;
   is_minor = parseFloat(agt.substring(kqPos+10,agt.indexOf(';',kqPos)));
   is_major = parseInt(is_minor);
}                                 

var is_safari = ((agt.indexOf('safari')!=-1)&&(agt.indexOf('mac')!=-1))?true:false;
var is_khtml  = (is_safari || is_konq);

var is_gecko = ((!is_khtml)&&(navigator.product)&&(navigator.product.toLowerCase()=="gecko"))?true:false;
var is_gver  = 0;
if (is_gecko) is_gver=navigator.productSub;


var is_ie   = ((iePos!=-1) && (!is_opera) && (!is_khtml));

function autofocus()
{
  var arr_tags = document.getElementsByTagName('input');

  if (arr_tags.length == 0)
    return;

  for (var i = 0, max = arr_tags.length; i < max; i ++)
  {
    if (arr_tags[i].type.toLowerCase() == 'text')
    {
      try {
        arr_tags[i].focus();
      }
      catch(i)
      {
      }
      return;
    }
  }

}

function setpref(prefname, prefval)
{
  document.cookie = prefname + 'pref='+prefval+'; expires=Thu, 2 Aug 2010 20:47:11 UTC; path=/';
  document.location = '/';
}

function check_comments_controls(user_is_mod, user_id)
{
  // NO calcular tiempo unix_now por el cliente, es una caja de pandora
  for (key in comments)
  {
    if (document.getElementById('comment'+key+'editlink'))
    {
    // if (comments[key][0] > user_last_visited_on && comments[key][1] != user_id)
    //   document.getElementById('comment'+key).className += ' new';

    // if (((user_is_mod && comments[key][0] > unix_now - 86400 * 90) || (comments[key][1] == user_id && comments[key][0] > unix_now - 60 * 15)))
    // {

      if (user_is_mod)
      {
        document.getElementById('comment'+key+'editlink').className = '';
        document.getElementById('comment'+key+'dellink').className = '';
      }
    // }
    }
  }
}

function hide_el(name)
{
  document.getElementById(name).style.visibility = 'hidden';
  document.getElementById(name).style.display    = 'none';
}


function show_el(name)
{
  document.getElementById(name).style.visibility = 'visible';
  if (arguments[1])
    document.getElementById(name).style.display    = arguments[1];
  else
    document.getElementById(name).style.display    = 'block';
}

function checkbox_switch_group(sourceEl)
{
  var el = sourceEl;

  if (typeof(sourceEl.parentNode) != 'object' ||
      typeof(sourceEl.parentNode.parentNode) != 'object' ||
      typeof(sourceEl.parentNode.parentNode.parentNode) != 'object')
    return;

  var table     = sourceEl.parentNode.parentNode.parentNode;
  var new_state = (sourceEl.checked == true) ? true : false;

  for (var i = 1, max = table.childNodes.length; i < max; i ++)
  {
    var tr = table.childNodes[i];

    if (tr.nodeName.toLowerCase() != 'tr')
      continue;

    var index = (tr.childNodes[0].nodeName.toLowerCase() == 'td') ? 0 : 1;

    if (tr.childNodes[index].nodeName.toLowerCase() != 'td')
      continue;

    if (tr.childNodes[index].childNodes[0].nodeName.toLowerCase() == 'input' && 
        tr.childNodes[index].childNodes[0].type.toLowerCase() == 'checkbox')
    {
      if (tr.childNodes[index].childNodes[0].disabled)
        continue;

      if (tr.childNodes[index].childNodes[0].checked == new_state)
        continue;

      tr.childNodes[index].childNodes[0].click();
    }
  }
}

function hilit_row(node, className)
{
  // check status
  var checked = node.checked;

  var parent = node.parentNode;

  while (!(parent.nodeType == 1 && parent.nodeName == 'TR'))
  {
    parent = parent.parentNode;
  }

  var re = new RegExp(' '+className);

  if (checked) // must select
  {
    if (!re.test(parent.className))
      parent.className = parent.className + ' '+className;
  }
  else // must deselect
  {
    while (re.test(parent.className))
      parent.className = parent.className.replace(re, '');
  }
}

function hilit_row_by_radio(node, className)
{
  /* cuando seleccionamos un radio siempre se queda seleccionado, así que hay
   * que quitar el estilo a todas las filas y luego ponérselo a la fila actual */

  // check status
  var checked = node.checked;

  var parent = node.parentNode;
  var greatparent = parent.parentNode;

  // cogemos la fila actual
  while (!(parent.nodeType == 1 && parent.nodeName == 'TR'))
    parent = parent.parentNode;

  var re = new RegExp(' '+className);
  var re2 = new RegExp('^'+className);

  // quitamos clase a todas las filas
  var ar_group_nodes = document.getElementsByName(node.name);

  for (var i = 0, max = ar_group_nodes.length; i < max; i ++)
  {
    var node2 = ar_group_nodes[i];
    var parent2 = node2.parentNode;

    while (!(parent2.nodeType == 1 && parent2.nodeName == 'TR'))
      parent2 = parent2.parentNode;

    while (re.test(parent2.className))
      parent2.className = parent2.className.replace(re, '');

    while (re2.test(parent2.className))
      parent2.className = parent2.className.replace(re2, '');
  }

  parent.className = parent.className + ' '+className;
}


function form_sim_action(form_id, initial_str, new_str)
{
  if (!document.getElementById(form_id))
  {
    alert(form_id+' not fuond');
    return;
  }

  var f = document.getElementById(form_id);
  f.action = f.action.replace(initial_str, new_str);
  f.submit();
}


function trimString (str) {
  str = this != window? this : str;
  return str.replace(/^\s+/g, '').replace(/\s+$/g, '');
}

String.prototype.trim = trimString;
