//***************************************************************************************
// stGeneral.js
// Versión: 2.0
// Fecha de realización: 25/05/2005
// Programador Realizó: Francisco Javier Martínez Magos
// Fecha de Modificación:
// Programador Modificó:
// Comentarios: Funciones y procedimientos comunes en la aplicacion
//**************************************************************************************

var activeButton = '';
var activeOption = '';

var strAux = '\xC1\xC9\xCD\xD3\xDA\xE1\xE9\xED\xF3\xFA"\xD1\xF1\xDA\xFA\xBF';
var strAux2 = '\xD1\xF1';

var reNameVal = new RegExp("^[\\w-_" + strAux + " .:~'\.]*[\\w-_" + strAux + " .:~'\.]$");
var reTextVal = new RegExp("^[\\w-_@" + strAux + " ',;/.\.]*[\\w-_@" + strAux + " ',;/.\.]$");
var reTextVal_2 = new RegExp("^[\\w-_@()?!" + strAux + " ',:+*=%;/.\.]*[\\w-_@()?!" + strAux + " ',:+*=%;/.\.]$");
var reTextValEsp = new RegExp("^[\\w-_@\n\r!¡#$%&/()=?¿+*{}:,;" + strAux + " '.\.]*[\\w-_@\n\r!¡#$%&/()=?¿+*{}:,;" + strAux + " '.\.]$");
var reAddressVal = new RegExp("^[\\w-_#" + strAux + " ',;:().\.]*[\\w-_#" + strAux + " ',;:().\.]$");
var reUserVal = new RegExp("^[\\w_" + strAux2 + "\.]*[\\w_" + strAux2 + "\.]$");
var rePasswordVal = new RegExp("^[\\w\.]*[\\w\.]$");

var reDecimalPositives = new RegExp("^[\\d]*.?[\\d]*$")
var reDecimal = new RegExp("^[-+]?[\\d]*.?[\\d]*$")
var reIntegerPositives = new RegExp("^[\\d]*[\\d]$")
var reIntegers = new RegExp("^[-+]?[\\d]*[\\d]$")
var reReals = new RegExp("^(?:\\+|-)?\\d+\\.\\d*$");


function fnCheckNoValid(objControl)
  {
   objControl.value = objControl.value.replace(/&#/g, '').replace(/#&/g, '').replace(/</g, '').replace(/&lt;/g, '').replace(/&gt;/, '').replace(/>/, '');
   
   ending = false;
   while (!ending)
   {
        objControl.value = objControl.value.replace(/&#/g, '')
        if (objControl.value.indexOf('&#') == -1)
        {
            ending = true;
        }
   }
   
   ending = false;
   while (!ending)
   {
        objControl.value = objControl.value.replace("\\\'", '\'')
        if (objControl.value.indexOf("\\\'") == -1)
        {
            ending = true;
        }
   }
  } 
  
function checkURL(p_sCadena)
{
    var arrCadenas;
    var arrAux;
    var reURL = new RegExp("^[\\w-_?&=;\.]*[\\w-_?&=;\.]$");
    
    if ((p_sCadena.toUpperCase().indexOf('HTTP://') == -1) && (p_sCadena.toUpperCase().indexOf('HTTPS://') == -1) && (p_sCadena.toUpperCase().indexOf('FTP://') == -1) && (p_sCadena.toUpperCase().indexOf('FTPS://') == -1))
        return false;

    p_sCadena = p_sCadena.toUpperCase().replace('HTTP://', '').replace('HTTPS://', '').replace('FTP://', '').replace('FTPS://', '');

    if (p_sCadena.length < 2)
        return false;

    arrCadenas = p_sCadena.split('/');        
    for (i = 0; i < arrCadenas.length; i++)
    {
        arrAux = arrCadenas[i].split('.');
        
        if (i == 0)
        {
            if (arrAux.length < 1)
                return false;
        }
        
        for (j = 0; j < arrAux.length; j++)
        {       
            if (arrAux[j].length == 0) 
                return false;
                
            if (!reURL.test(arrAux[j]))
                 return false;
        }
    }
   
   return true;
}

function checkEmail(p_sCadena)
{
   var arrCadenas;
   var arrAux;
   var reEmails = new RegExp("^[\\w-_\.]*[\\w-_\.]$");
   
   if (p_sCadena.length < 5)
     return false; 
     
   p_sCadena = p_sCadena.replace('-', '');    
     
   arrCadenas = p_sCadena.split('@')
   
   if (arrCadenas.length != 2)
     return false
     
   if (arrCadenas[0].length < 1)
     return false     
     
   if (arrCadenas[1].length < 3)
     return false
     
   arrAux = arrCadenas[1].split('.')

   if ((arrAux.length < 2) || (arrAux.length > 3))
     return false
     
   if ((arrAux[arrAux.length - 1].length < 2) || (arrAux[arrAux.length - 1].length > 3))
     return false
     
   for (i = 0; i < arrAux.length; i++)
      {
       if (!reEmails.test(arrAux[i]))
         return false;
      }
      
   arrAux = arrCadenas[0].split('.')
   
   for (i = 0; i < arrAux.length; i++)
      {
       if (!reEmails.test(arrAux[i]))
         return false;
      }   
   
   return true
}

function fnCheckFileType(pString, pAllowedTypes)
{
    var asFileParts = pString.split('.');
    
    if (asFileParts.length < 2)
    {
        return false;
    }
    
    if (pAllowedTypes.toLowerCase().indexOf('|' + asFileParts[asFileParts.length - 1].toLowerCase() + '|') == -1)
    {
        return false;
    }
    
    return true;
}

function Ucase(p_oObjeto)
  {//Funcion que convierte a mayusculas una cadena
   var strAux = strTrim(p_oObjeto.value);
   p_oObjeto.value = strAux.toUpperCase();
  }    
		
function strTrim(p_sCadena)
  {//Funcion que quita espacios a una cadena
   var Len = p_sCadena.length;
         
   while (p_sCadena.charAt(0)==" ")
     {
      p_sCadena = p_sCadena.substring(1);
     }

   Len = p_sCadena.length;
   while (p_sCadena.charAt(Len-1)==" ")
     {
      p_sCadena = p_sCadena.substring(0,Len-1);
      Len = p_sCadena.length;
     }
           
   return p_sCadena;
  }
  
function ISNumber(p_sValor)
  {// Verifica si el parametro indicado es un Número 
   var sAux = strTrim(p_sValor)
   		   					
   if (sAux.length <= 0)
     return false;
     
   if (isNaN(sAux) == true)
     return false;			
   else
     {
      if (eval(sAux) < 0)
        return false;
     }
   return true;		
  }
  
function checkDate(p_sFecha)
  {
   p_sFecha = strTrim(p_sFecha)
   switch (p_sFecha.length)
     {
      case 0:
          {    
               return true;
               break;
          }      
      case 10:
          {    
               return checkFullDate(p_sFecha);
               break;
          }
      case 7:
          {  
               return checkMonthYear(p_sFecha);
               break;
          }
      case 4:
          {  
               return checkYear(p_sFecha);
               break;
          }
      default :
          {    
               return false;
               break;
          }
     }
  }
  
function checkYear(p_sFecha)
  { 
   if (!ISNumber(p_sFecha))
     {
      return false;
     }
   
   if (p_sFecha < 1920)
     {
      return false;
     }

   return true; 
  }  
  
function checkMonthYear(p_sFecha)
  { 
   bits = p_sFecha.split("/");
      
   if (!ISNumber(bits[1]))
     {
      return false;
     }
   

   month = bits[0]; 
   year=Number(bits[1]); 

   if (checkMonth(month))
     {
      if (year < 1920)
        {
         return false;
        }
     }
   else
     return false; 

   return true; 
  }   
  
function checkFullDate(p_sFecha)
{      
    bits = p_sFecha.split("/");
    
    if (bits.length != 3)   
    {
        return false;
    }
    
    if (!ISNumber(bits[0]))
    {
        return false;
    }
         
    if (!ISNumber(bits[2]))
    {
        return false;
    }      
    
   days = Number(bits[0]); 
   month = bits[1];
   year = Number(bits[2]);
  
   if ((month.toUpperCase() == '02'))
     {
      if ((year % 4) == 0)
        {
         if (days > 29)
           return false;         
        }
      else
        {
         if (days > 28)
           return false;          
        }
     }
     
   if ((month.toUpperCase() == '04') || (month.toUpperCase() == '06') || (month.toUpperCase() == '09') || (month.toUpperCase() == '11'))
     {
      if (days > 30)
        return false;
     }
     
   if ((month.toUpperCase() == '01') || (month.toUpperCase() == '03') || (month.toUpperCase() == '05') || (month.toUpperCase() == '07') || (month.toUpperCase() == '08') || (month.toUpperCase() == '10') || (month.toUpperCase() == '12'))
     {
      if (days > 31)
        return false;
     }     

     
   if (checkMonth(month))
     {
      if (year < 1920)
         return false;
     }
   else
     return false;


   return true; 
  }
  
function checkMonth(pMes)
	{
	 var strMes = '01,02,03,04,05,06,07,08,09,10,11,12';
	 var aMes = strMes.split(',');
	 var cadena = ''

     for (i = 0; i < 12; i++)
       {
        cadena = aMes[i];
     
        if (pMes.toUpperCase() == cadena.toUpperCase())
          return true;
       }
       
     return false;
    }    
  
function checkWordMonth(pNumeroMes)
	{
     var strResultado = '';
     
	 switch (Number(pNumeroMes))
		{
		case 1:
			{
             strResultado = '01';
             break;
			}
		case 2:
			{
             strResultado = '02';
             break;
			}
		case 3:
			{
             strResultado = '03';
             break;
			}
		case 4:
			{
             strResultado = '04';
             break;
			}
		case 5:
			{
             strResultado = '05';
             break;
			}
		case 6:
			{
             strResultado = '06';
             break;
			}
		case 7:
			{
             strResultado = '07';
             break;
			}
		case 8:
			{
             strResultado = '08';
             break;
			}
		case 9:
			{
             strResultado = '09';
             break;
			}
		case 10:
			{
             strResultado = '10';
             break;
			}
		case 11:
			{
             strResultado = '11';
             break;
			}
		case 12:
			{
             strResultado = '12';
             break;
			}			
		}
 return strResultado;
}

function getCurrentDatelYYYYMMDD()
  {
   day = new Date();
   dia = day.getDate();
   mes = day.getMonth() + 1;
   ano = day.getFullYear();
           
   if (dia < 10)
     {
      dia = '0' + dia.toString();
     }
             
   if (mes < 10)
     {
      mes = '0' + mes.toString();
     }
     
   return ano + '' + mes + '' + dia;
  }

function checkNumberkey()
  {//valida que una tecla presionada sea numerica, en caso contrario no la procesa
   if ((event.keyCode < 48) || (event.keyCode > 57))
     {
      if ((event.keyCode != 8) && (event.keyCode != 13) && (event.keyCode != 46)) //ademas de los numeros se aceptar el entre y el backspace
        {
         event.keyCode = 0
        }
     }
  }    
  
function checkkey()
  {
   if ((event.keyCode != 8) && (event.keyCode != 13))
     {
            event.keyCode = 0
     }
  }


function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function fnMenuOver(pOption)
{
    if (sCurrentOption != pOption)
    {
        var tr_Item = document.getElementById('tr_' + pOption);
        var A_Item = document.getElementById('A_' + pOption);
        
        tr_Item.bgColor = 'B4D6ED';
        MM_swapImage('img_' + pOption, '', 'images/int_bullet02.gif', 1);
        A_Item.className = 'Subtema02';
    }
}

function fnMenuOut(pOption)
{
    if (sCurrentOption != pOption)
    {
        var tr_Item = document.getElementById('tr_' + pOption);
        var A_Item = document.getElementById('A_' + pOption);
        
        tr_Item.bgColor = 'FFFFFF';
        MM_swapImage('img_' + pOption, '', 'images/int_bullet01.gif', 1);
        A_Item.className = 'Subtema01';
    }
}

function fnMenuSelect(pOption)
{
    var sLastOption = sCurrentOption;
    sCurrentOption = pOption;
    
    if (sLastOption != '')
    {
        fnMenuOut(sLastOption);
    }
}

function transferAllItemsList(oSource, oTo)
{
	for (ite = 0; ite <= oSource.options.length; ite++)
	{
		if (eval(oSource.options[ite]))
		{
			newOption = document.createElement("OPTION");
			oTo.options.add(newOption);
			newOption.innerText = oSource.options(ite).innerText;
			newOption.value = oSource.options(ite).value;				
		}
	}
	
	var totalLength = oSource.options.length;
	for (ite = 0; ite <= totalLength; ite++)
	{
		if (eval(oSource.options[0]))
		{
			oSource.remove(0);
		}
	}	
}

function transferSelectedItemsList(oSource, oTo, errMsg)
{
	var sAux = '';
	for (ite = 0; ite <= oSource.options.length; ite++)
	{
		if (eval(oSource.options[ite]))
		{
			if (oSource.options[ite].selected)
			{
				newOption = document.createElement("OPTION");
				oTo.options.add(newOption);
				newOption.innerText = oSource.options(ite).innerText;
				newOption.value = oSource.options(ite).value;
				
				sAux = ite + "," + sAux;
			}
		}
	}
	
	if (sAux.length == 0)
	{
		alert(errMsg);
		return
	}
	else
	{	
		var aAux = sAux.split(',');			
		for (ite = 0; ite < aAux.length; ite++)
		{
			if (aAux[ite] != '')
			{
				oSource.remove(Number(aAux[ite]));
			}
		}
	}
}

function fnSelectMultiple(pObj)
{
    if (pObj.length > 0)
    {
        for (ite = 0; ite < pObj.length; ite++)
        {
            pObj.options[ite].selected = true;
        }
    }
}

function setAllChkBox(oChk)
{
    var objList = document.getElementsByTagName('input');

	for(ite = 0; ite < objList.length; ite++)
    {
        if (objList[ite].name.indexOf('chkH_') == 0)
        {
		    objList[ite].checked = oChk.checked;
		}
	}
}

function fnClickButton(pBtnName)
{
    activeButton = pBtnName;
    document.getElementById(pBtnName).click();
}

function fnOClick(pObj) 
{
    document.getElementById(pObj).click();
}

function fnOClick2(pSub) 
{
    if (document.getElementById('td' + activeOption) != null)
    {
        document.getElementById('td' + activeOption).className = 'menuOptions';
        document.getElementById('l' + activeOption).className = 'menuOptions';        
    }

    document.getElementById('td' + pSub).className = 'menuOptions2';
    document.getElementById('l' + pSub).className = 'menuOptions2';
    document.getElementById('l' + pSub).click();

    activeOption = pSub;
}

function fnOMouse(pSub, ind)
{
     if (activeOption != pSub)
     {
        document.getElementById('td' + pSub).className = 'menuOptions' + ind;
        document.getElementById('l' + pSub).className = 'menuOptions' + ind;     
     }
}

function downEnter(pDefaultButton)
{
    if (event.keyCode == 13)
    {
        activeButton = pDefaultButton;

        if (document.getElementById(pDefaultButton))
        {
            document.getElementById(pDefaultButton).click();
        }
    }
}

function changeImg(id, dest)
{
    document.getElementById(dest).src =  document.getElementById(id).src;
}

