var ADMIN_SEPARADOR = "<#>";

function fComprobarCamp(pCamp, compareValue, pText, pTipus)
{
 var vValor;

 if (pTipus) vValor = pCamp.options[pCamp.selectedIndex].value;
 else vValor = pCamp.value;

 if (vValor == compareValue)
 {
  alert(pText);
  if (pCamp.type != "hidden") pCamp.focus();
  return(false);
 }

 return (true);
}

function fComprobarEmail(pEmail,pText)
{
 if ( (pEmail.value.indexOf("@")==-1) || (pEmail.value.indexOf(".")==-1) )
 {
  alert(pText);
  if (pEmail.type != "hidden") pEmail.focus();
  return false;
 }

 return (true);
}

function fComprobarNumero(pCamp,pTexto,pTipus)
{
 var vValor;

 if (pTipus != null) vValor = pCamp.options[pCamp.selectedIndex].value;
 else vValor = pCamp.value;

 if (!isNumber(vValor))
 {
  alert(pTexto);
  if (pCamp.type != "hidden") pCamp.focus();
  return(false);
 }

 return (true);
}

function formatNumber(pNum,pDec)
{
 var vchSigne;
 
 if (pNum < 0) 
 {
  vchSigne = "-";
  pNum = -pNum;
 }
 else vchSigne = "";
 
 var vchEntero = formatEntero(String(Math.floor(pNum)));
 var vchNumber = vchEntero;
 var vchNum    = String(pNum);
 var i, n;
  
 if (pDec == 0) return (vchNumber);
 else vchNumber += ".";

 var nPos = vchNum.indexOf(".");
 if (nPos == -1) n = pDec;
 else
 {
  vchNumber += vchNum.substr(nPos + 1);
  n = pDec - vchNum.substr(nPos + 1).length;
 }
  
 for (i = 0; i < n; i++) vchNumber += "0";
 
 return (vchSigne + vchNumber);
}

function isNumber(pValor)
{
 return (!isNaN(fConvertElem(pValor)));
}

function toNumber(pValor)
{
 if (!isNumber(pValor)) return (null);
 
 return (parseFloat(fConvertElem(pValor)));
}

function fConvertElem(pValor)
{
 return (pValor.replace(",","."));
}

function fRound(pNum,pDec)
{ 
 var m = Math.pow(10,pDec);

 return (Math.round(pNum * m) / m);
}

function fComprobarFloat(pCamp,pTexto,pTipus)
{
 var vValor;
 var vValorIni;
 var vValorFi;

 if (pTipus != null) vValorIni = pCamp.options[pCamp.selectedIndex].value;
 else vValorIni = pCamp.value;

 vValor = parseFloat(vValorIni);
 vValorFi = vValor + '';

 if (isNaN(vValor))
 {
  alert(pTexto);
  pCamp.focus();
  return(false);
 }

 return (true);
}

function validarEntero(pCamp, pMsg)
{
 if (!fComprobarCamp(pCamp, "", pMsg)) return false;
 if (!isNumber(pCamp.value))
 {
  alert(pMsg);
  pCamp.focus();
  return false;
 }

 if (parseInt(pCamp.value) <= 0)
 {
  alert(pMsg);
  pCamp.focus();
  return false;
 }
  
 return true;
}
 
function fDataValida(pData)
{
 var dateavui=  new Date();
 var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;
 var matchArray = pData.match(datePat);
 var vAny = dateavui.getFullYear();

 if (matchArray == null) return false;

 var day = matchArray[1];
 var month = matchArray[3];
 var year = matchArray[4];

 if (year.length==2) year = String(vAny).substr(0,2) + year;

 if (month < 1 || month > 12) return false;
 if (day < 1 || day > 31) return false;
 if ((month==4 || month==6 || month==9 || month==11) && day==31) return false;
 if (month == 2)
 {
  var g = parseInt(year / 4);

  if (day > 29 || (day == 29 && (year / 4) != g)) return false;
 }

 return true;
}

function fHoraValida(pHora)
{
 var horaPat = /^(\d{1,2})(:)(\d{1,2})$/;
 var matchArray = pHora.match(horaPat);

 if (matchArray == null) return false;

 var hora  = matchArray[1];
 var minut = matchArray[3];

 if (hora < 0 || hora > 23) return false;
 if (minut < 0 || minut > 59) return false;

 return true;
}


/**********************************************/
/*******  Si pD1 < pD2 --> retorna (-1) *******/
/*******  Si pD1 = pD2 --> retorna (0) ********/
/*******  Si pD1 > pD2 --> retorna (1) ********/
/**********************************************/
function DataMesGran(pD1,pD2)
{
 var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;
 var matchArray1 = pD1.match(datePat);
 var matchArray2 = pD2.match(datePat);

 if ( (matchArray1 == null) || (matchArray2 == null) ) return -1;

 var d1 = parseFloat(matchArray1[1]);
 var m1 = parseFloat(matchArray1[3]);
 var a1 = parseFloat(matchArray1[4]);

 var d2 = parseFloat(matchArray2[1]);
 var m2 = parseFloat(matchArray2[3]);
 var a2 = parseFloat(matchArray2[4]);

 if ( (a1 == a2) && (m1 == m2) && (d1 == d2) ) return 0;
 else if (a1  > a2) return 1;
 else if ( (a1 == a2) && (m1 > m2) ) return 1;
 else if ( (a1 == a2) && (m1 == m2) && (d1 > d2) ) return 1;

 return -1;
}


/**********************************************/
/*******  Si pH1 < pH2 --> retorna (-1) *******/
/*******  Si pH1 = pH2 --> retorna (0) ********/
/*******  Si pH1 > pH2 --> retorna (1) ********/
/**********************************************/
function HoraMesGran(pH1,pH2)
{
 var horaPat = /^(\d{1,2})(:)(\d{1,2})$/;
 var matchArray1 = pH1.match(horaPat);
 var matchArray2 = pH2.match(horaPat);

 if ( (matchArray1 == null) || (matchArray2 == null) ) return -1;

 var h1 = parseInt(matchArray1[1]);
 var m1 = parseInt(matchArray1[3]);

 var h2 = parseInt(matchArray2[1]);
 var m2 = parseInt(matchArray2[3]);

 if ( (h1 == h2) && (m1 == m2) ) return 0;
 else if (h1  > h2) return 1;
 else if ( (h1 == h2) && (m1 > m2) ) return 1;

 return -1;
}

function fParam (pVariable)
{
 var wCadena = location.search + '&';

 if (wCadena.indexOf(pVariable) == -1) return (null);
 
 var wInici = wCadena.indexOf(pVariable) + pVariable.length + 1;
 var wFin = wCadena.indexOf('&',wInici);

 return (wCadena.substr(wInici,wFin-wInici));
}


function fOpenWindow (pUrl, pTarget, pAtributos)
{
 window.open(pUrl, pTarget, pAtributos);
}


function getUrl()
{
 return (window.location.href);
}

function fComprobarIP(pIP,pText)
{
 var vValor;

 vValor = pIP.value;
 partes = vValor.split('.');
 
 if (partes.length != 4)
 {
  alert(pText);
  pIP.focus();
  return (false);
 }
 for (i = 0; i < 4; i++)
 {
  num = partes[i];
  if (num > 255 || num < 0 || num.length == 0 || isNaN(num) )
  {
   alert(pText);
   pIP.focus();
   return (false);
  }
 }

 return (true);
}

/* Funci?n que elimina los ceros a la izquierda de una direcci?n IP */
function simplificarIP(pIP)
{
 var vValor;
 var simplificada = "";
 var num = "";

 vValor = pIP.value;
 partes = vValor.split('.');
 
 for (i = 0; i < 4; i++)
 {
   num = partes[i];
   while ( (num.length > 1) && (num.indexOf("0") == 0) ) num = num.substr(1, num.length - 1);

   simplificada += num;
   if (i < 3) simplificada += '.';
 }

 return (simplificada);
}

function disableField(field)
{
 var strType = field.type;
 
 if ( (strType == "text") || (strType == "textarea") || (strType = "password") ) field.value = "";
 else if (strType.indexOf("select") != -1) field.options.selectedIndex = 0;
 
 field.disabled = true;
 field.style.background='#ECE9D8';
}

function enableField(field)
{
 field.disabled = false;
 field.style.background='#FFFFFF';
}

function disableButton(button)
{
 button.disabled = true;
 button.style.background='#FF9966';
}

function enableButton(button)
{
 button.disabled = false;
 button.style.background='#FF3300';
}

  // Funcion que valida que un campo cumpla un patron.
 function fValidarCamp(campo, regularExpresion, msg) {
   var re = new RegExp(regularExpresion);
   for (i = 0; i < campo.value.length; i++) {
     if (!re.test(campo.value[i])) {
       alert(msg);
       return false;
     }
   }
   return true;
 }