// Listas de caracteres
var digits 			 = "0123456789";
var lowercaseLetters = "abcdefghijklmnopqrstuvwxyzáéíóúñü"
var uppercaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZÁÉÍÓÚÑ"
var whitespace       = " \t\n\r";
function pantallaCompleta(pagina) {
	window.open(pagina, '', 'fullscreen=yes, scrollbars=auto');
}
/**
 * Abre una ventana Centrada con Parámetros
 */
function launchCenterWindow(url, name, opener, height, width, parameters) 
{
  var str = "height=" + height + ",innerHeight=" + height;
  
  str += ",width=" + width + ",innerWidth=" + width;
  
  if (window.screen) 
  {
     var ah = screen.availHeight - 30;
     var aw = screen.availWidth - 10;

     var xc = (aw - width) / 2;
     var yc = (ah - height) / 2;

     str += ",left=" + xc + ",screenX=" + xc;
     str += ",top=" + yc + ",screenY=" + yc + ",";
  }

  if (parameters == null)
     parameters = "status=no,resizable=yes,dependent=yes,scrollbars=yes,location=no,menubar=no,alwaysRaised=true";  
	
  // Resto de argumentos
  str += parameters;

  // Instanciamos
  var w = window.open(url, name, str);
  
  // Asignamos a la venta que nos abrió
  w.opener = opener;
  
  // Abrimos
  w.focus();
}
/**
 * Abre una ventana Centrada con Parámetros
 */
function openPopUp(url, name, width, height){

	str= "scrollbars=yes, width="+width+",height="+height+",status=no,resizable=no,dependent=yes,location=no,menubar=no";//
	
	if (window.screen) 
  {
     var ah = screen.availHeight - 30;
     var aw = screen.availWidth - 10;

     var xc = (aw - width) / 2;
     var yc = (ah - height) / 2;

     str += ",left=" + xc + ",screenX=" + xc;
     str += ",top=" + yc + ",screenY=" + yc + ",";
  }
	
	var w = window.open(url, name, str);
	// Abrimos
  w.focus();
} 
/**
 *
 */
function openWindow(url, name, args)
{
  // Instanciamos
  var w = window.open(url, name, args);
    
  // Abrimos
  w.focus();
}

/**
 * Abre una ventana oculta
 */
function downloadWindow(url, name) 
{
  // argumentos
  var str = "height=1,width=1,status=0,resizable=0,dependent=0,scrollbars=0,location=0,menubar=0,alwaysLowered=1,alwaysRaised=0";

  // Instanciamos
  window.open(url, name, str);
}
   
// Restaura el valor original del los combos de la página
function restoreDefault() 
{
   for (var j = 0; j < document.forms.length; j++) 
   {
	   var frm = document.forms[j];	  
	   for (var i = 0; i < frm.elements.length; i++) 
	   {   
		   if (frm.elements[i].type == 'select-one')
		   {
			  var e = frm.elements[i];
			  for (var z = 0; z < e.options.length; z++) 			 
			  {
			  	  if (e.options[z].defaultSelected == true)
					 e.options[z].selected = true;
			  }		
		   } 	
		}
	}
}

/**
 * Marca/Desmarca una lista de checkboxes
 * (el argumento form indicará el nombre del formulario)
 *
 *  26/Agosto/2003 se alteró el código para contemplar listas de un
 *                 único elemento en las que obj es un objeto simple
 */
function checkAll(form, fldName, checked)
{
	var obj = eval("form." + fldName);
	if (obj != null)
	{
	   if (obj.length == null)
	      obj.checked = checked;	   
	   else
	   {	   	   
	   	  for (i = 0; i < obj.length; i++) 
	   	     obj[i].checked = checked;
	   }
	}
}
     
function openPage()  
{            
	var popup = window.open('','popUp','scrollbars=no,resizable=no,height=480,width=440');        
}   
             
function myCloseItFunc()        
{            
	popup.close()        
} 

/**
 * Muestra el mensaje en la línea de estado
 */
function setStatusMessage(msg) 
{
   window.status = msg
   return true;
}

/**
 * Deshabilita una serie de campos dependiento del tipo (button, hidden, file, textarea, etc...)
 */
function disableFieldsTypes(fieldsTypeList)
{
   var thisForm = window.document.forms[0];
   for (var i = 0; i < thisForm.elements.length; i++) 
   {
       var field = thisForm.elements[i];
	   if (fieldsTypeList.indexOf(field.type) > -1)
	      field.disabled = true;
   }		  	
}
/********************************************************* Utilidades ****************************************************/

// s es vacio
function isEmpty(s)
{   
   return ((s == null) || (s.length == 0))
}

// s es vacio o solo caracteres de espacio
function isWhitespace(s)
{  
   if (! isEmpty(s)) 
   {
      for (var i = 0; i < s.length; i++)
      {   
         var c = s.charAt(i);
         // si el caracter en que estoy no aparece en whitespace,
         // entonces retornar falso
         if (whitespace.indexOf(c) == -1) 
	        return false;
	  }
   }
   return true;
}

// La rutina siguiente es para cubrir un bug en Netscape
// 2.0.2 - seria mejor usar indexOf
function charInString (c, s)
{   
   for (var i = 0; i < s.length; i++)
   {   
	   if (s.charAt(i) == c) 
		  return true;
   }
   return false
}

// c es una letra del alfabeto espanol
function isLetter(c)
{
    return ((uppercaseLetters.indexOf(c) != -1) || (lowercaseLetters.indexOf(c) != -1));
}

// c es un digito
function isDigit (c)
{   
    return ((c >= "0") && (c <= "9"));
}

// c es letra o digito
function isLetterOrDigit (c)
{   
    return (isLetter(c) || isDigit(c))
}

// s es un numero entero (con o sin signo)
function isInteger(s)
{   
    if (isEmpty(s)) 
	   return false;
	   
    for (var i = 0; i < s.length; i++)
    {   
        var c = s.charAt(i);
        if (i == 0) 
		{
           if (! isDigit(c) && ((c != '-') || (c == '+'))) 
		      return false;
        }
		else
		{		
           if (! isDigit(c)) 
			  return false;
        } 
    }
    return true;
}

// s es un numero (entero o flotante, con o sin signo)
function isNumber(s)
{   
    if (isEmpty(s)) 
	   return false;
	   
    var dotAppeared = false;    
    for (var i = 0; i < s.length; i++)
    {   
        var c = s.charAt(i);
        if (i == 0) 
		{ 
            if (c == ".") 
			{
               if (dotAppeared)
			      return false; 
				  
               dotAppeared = true;
            } 
			else  
			{   
               if (! isDigit(c) && ((c != '-') || (c == '+'))) 
				  return false;
		    }
        }
	    else		
		{
           if (c == ".") 
		   {
              if (dotAppeared)
			     return false
				 
              dotAppeared = true;
            } 
			else
			{  
               if (! isDigit(c)) 
				  return false;
		    }
        } 
    }
    return true;
}

function errorMessage(message)
{
   alert(message);
   return false;
}
		 	     
/**
 * Controla que los valores de los campos de porcentajes sean correctos
 */
function checkIntegerFields(fieldsNames, fromRange, toRange)
{
   var thisForm = window.document.forms[0];
   for (var i = 0; i < thisForm.elements.length; i++) 
   {    
	  var field = thisForm.elements[i];
      if (field.type == "text")
      {
      	 if (fieldsNames.indexOf(field.name) != -1)
       	 {
       		if (! isInteger(field.value))
       		{
       		   field.focus();
       		   field.select();
       		   return errorMessage("El valor del campo debe ser un número entero positivo.");       			   
       		}
       			      
       		// Parseamos
       		var value = parseInt(field.value);
       		if (value < fromRange || value > toRange)
       		{
       		   field.focus();
       		   field.select();
       		   return errorMessage("El valor del campo está fuera del rango " + fromRange + " a " + toRange);
       		}
       	 }
      } 
   }
   return true;
}

 /**
  * Comprueba que la fecha sea válida
  *
  * 0 = ok
  * 1 = error en día
  * 2 = error en mes
  * 3 = error en año
  */
 function checkDate(day, month, year) 
 {
    var date = new Date(year, month, day);
	
	if (day != date.getDate())
	   return 1;
	   
	if (month != date.getMonth())
	   return 2;
	   
	if (year != date.getFullYear())
	   return 3;
	         
	return 0;
}


function ventana2(destino){
	window.open(destino,"","scrollbars=yes,menubar=no,toolbar=no,location=no,resizable=yes,status=no,directories=no,width=680,height=390, hspace= 50, vspace = 50");
}

function ventana3(destino){
	window.open(destino,"","scrollbars=yes,menubar=yes,toolbar=yes,location=no,resizable=yes,status=no,directories=no,width=680,height=390, hspace= 50, vspace = 50");
}

function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);



function MM_goToURL() { //v3.0
  var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
  for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}



function iSubmitEnter(oEvento, oFormulario){ 
    var iAscii; 
     
    if (oEvento.keyCode) 
        iAscii = oEvento.keyCode; 
    else if (oEvento.which) 
        iAscii = oEvento.which; 
    else 
        return false; 
         
    if (iAscii == 13) oFormulario.submit(); 

    return true; 
} 

function getAscii(oEvento){
	var iAscii2; 
     
    if (oEvento.keyCode) 
        iAscii2 = oEvento.keyCode; 
    else if (oEvento.which) 
        iAscii2 = oEvento.which; 
    else 
        return null; 
         
	return iAscii2;
}
