/***********************************************************/
/**
/** IDENTIFICADOR ÚNICO
/**
/** Utilizado para que todos los elementos de una pantalla
/** tengan identificadores únicos.
/**
/***********************************************************/
var vSurrogateSeq=0;


/***********************************************************/
/**
/** TRIM
/**
/** Elimina los espacios en blanco.
/**
/***********************************************************/
String.prototype.trim = function() 
{
  return this.replace(/(^\s*)|(\s*$)/g, "");
}


/***********************************************************/
/**
/** CURSOR
/**
/** Define el tipo de cursor sobre las imágenes según la versión
/** del explorador.
/**
/***********************************************************/
var gCursor;   
try 
{ 
  var vImg=document.createElement("img");
  vImg.style.cursor="pointer";
  gCursor="pointer";
} 
catch(e) 
{ 
  gCursor="hand";
}


/***********************************************************/
/**
/** GETPARAMETER
/**
/** Obtiene el valor del parametro de la URL.
/**
/***********************************************************/
function getParameter(name)
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return results[1];
}


/***********************************************************/
/**
/** GETATTRIBUTE
/**
/** Obtiene el valor del atributo.
/**
/***********************************************************/
function getAttribute(p_name) 
{
  try {
    var value=this[p_name];
    return value;
  } catch(e) {
    alert("getAttribute:"+((e.description)?e.description:e));
  }
}


/***********************************************************/
/**
/** SETATTRIBUTE
/**
/** Inicializa el valor del atributo.
/**
/***********************************************************/
function setAttribute(p_name,p_value) 
{
  try 
  {
    if (this[p_name] == undefined)
      throw "invalid attribute " + p_name;
    var v_value = p_value;
    // main purpose of this method
    this[p_name] = v_value;
 }
 catch(e) 
 {
  alert("setAttribute:" + ((e.description)?e.description:e));
 }
}


/***********************************************************/
/**
/** GETTARGET
/**
/** Obtiene el elemento del evento.
/**
/***********************************************************/
function getTarget(e) 
{
  var targ;
  if (!e) var e = window.event;
  if (e.target) targ = e.target;
  else if (e.srcElement) targ = e.srcElement;
  while (targ.nodeType == 3) targ = targ.parentNode;
  return targ;
}


/***********************************************************/
/**
/** GETABSTOP
/**
/** Obtiene la distancia superior del elemento.
/**
/***********************************************************/
function getAbsTop (pObject) 
{
  var absTop;
  var oParent;

  absTop=pObject.offsetTop;
  oParent=pObject.offsetParent;
  try {
    while (typeof(oParent)=="object" && oParent!=document.body) {
      absTop=absTop+oParent.offsetTop;
      oParent=oParent.offsetParent;
    }
  } catch(e) {}
  return absTop;
}


/***********************************************************/
/**
/** GETABSLEFT
/**
/** Obtiene la distancia izquierda del elemento
/**
/***********************************************************/
function getAbsLeft (pObject) {
  var absLeft;
  var oParent;

  absLeft=pObject.offsetLeft;
  oParent=pObject.offsetParent;
  try {
    while (oParent!=document.body) {
      absLeft=absLeft+oParent.offsetLeft;
      oParent=oParent.offsetParent;
    }
  } catch(e) {}
  return absLeft;
}


/***********************************************************/
/**
/** KEYENTERHANDLER
/**
/** Si se pulsa enter o espacio, es como hacer click.
/**
/***********************************************************/
function keyEnterHandler (e) 
{
  if (!e) var e=window.event;
  var vCode=e.charCode||e.keyCode;
  if (vCode==13||vCode==32) { // enter key or space key
    var target=getTarget(e);
    target.onclick(e);
    return noPropagateEvent(e);
/*    e.returnValue=false;
    if (e.stopPropagation) e.stopPropagation();
    if (e.preventDefault) e.preventDefault();
    return false;
*/  }
  return true;
}


/***********************************************************/
/**
/** NOPROPAGATEEVENT
/**
/** Para no propagar los eventos.
/**
/***********************************************************/
function noPropagateEvent(e)
{
  if (!e) var e = window.event;
  e.returnValue = false;
  if (e.stopPropagation) e.stopPropagation();
  if (e.preventDefault) e.preventDefault();
  return false;
}


/***********************************************************/
/**
/** CALLBACKERROR
/**
/** Muestra el error en el div de mensajes.
/**
/***********************************************************/
function callbackError(req)
{
  //document.body.appendChild(document.createTextNode(req.responseText)); 
  showMessage(MSG_ERROR, "" + req.responseText, true);
}


/***********************************************************/
/**
/** CALLBACKOK
/**
/** Evalua la respuesta.
/**
/***********************************************************/
function callbackOk(req)
{
 
  eval(req.responseText);
}


/***********************************************************/
/**
/** ISALFANUMERIC
/**
/** Evalua si es un caracter alfanumerico.
/**
/***********************************************************/
function isAlphaNumeric(pCode) {
  if((pCode>=97 && pCode<=122) || (pCode>=65 && pCode<=90) ||(pCode>=48 && pCode<=57) || pCode==8 || pCode==32 || pCode > 127)
		return true;
 else
		return false;
}


/***********************************************************/
/**
/** ISNUMERIC
/**
/** Evalua si es un caracter numerico.
/**
/***********************************************************/
function isNumeric(pValor)
{
  var log = pValor.length;   
  for (x=0; x<log; x++)
  { 
    v1 = pValor.substr(x,1);
    v2 = parseInt(v1);
    
    //Compruebo si es un valor numérico
    if (isNaN(v2))     
      return false;    
  }
  
  return true;
} 


/***********************************************************/
/**
/** ISNUMERIC
/**
/** Evalua si es un caracter numerico.
/**
/***********************************************************/

function LoginError(pCode)
{
  switch (pCode)
  {
    case '1':      
      showMessage(MSG_WARNING, "Error al validar la cookie. Vuelva a <a href='../login.jsp'>identificarse</a>.");      
      break;
    case '2':
      showMessage(MSG_INFO, "Antes de acceder a la aplicación ha de <a href='../login.jsp'>identificarse</a>.");
      break;
    default:
  }
}
