<!--
var gXmlHttpInstance;

function ajFormSendRequest(url, readyStateFunction)
{
	//alert("ajFormSendRequest 5");
    // N6+ ó FF
    if(window.XMLHttpRequest) {
		//alert("ENTRE PARA FIREFOX");
        gXmlHttpInstance = new XMLHttpRequest();
		
		//alert("HEADER " + gXmlHttpInstance.getResponseHeader('Content-Length')); 

        gXmlHttpInstance.onreadystatechange = readyStateFunction;
        try {
            // true significa asincrono
            gXmlHttpInstance.open("GET", url, true);
        } catch(e) {
            showWarning(e);
        }
		//alert("ANTES DE HEADER");
		//gXmlHttpInstance.setRequestHeader('Content-Length', '0'); 
		//gXmlHttpInstance.setRequestHeader('Content-Type', 'application/xml'); 
		//alert("DESPUES DE HEADER");
        gXmlHttpInstance.send(null);
    } else {
        // Si es IE5+
		//alert("ENTRE PARA IE");
        if(window.ActiveXObject) {
            gXmlHttpInstance = new ActiveXObject("Microsoft.XMLHTTP");
            if(gXmlHttpInstance) {
                gXmlHttpInstance.onreadystatechange = readyStateFunction;
                gXmlHttpInstance.open("POST", url, true);
                gXmlHttpInstance.send();
            }
        }
    }
}

function showImage(width, height, title, path)
{
   var html = "<html><head><title>" + title + "</title><link href=\"styles/style_dialog.css\" rel=\"stylesheet\" type=\"text/css\" /></head><body bgcolor=\"#FFFFFF\"><img src=\"" + path + "\"/><br/><br/><center><a href=\"#\" onmouseover=\"javascript: return void(0);\" onclick=\"window.print()\"><img align=\"absmiddle\" src=\"images/fileprint.png\" border=\"0\" /></a> &nbsp;&nbsp;<a href=\"#\" onmouseover=\"javascript: return void(0);\" onclick=\"window.print()\">IMPRIMIR</a></center></body></html>";
   var x, y;
   x = y = 0;
   // Agregar un espacio vertical para el link de Imprimir
   height += 40;
   if(window.screen) {
      x = ((screen.width - width) >> 1);
      y = ((screen.height - height) >> 1);
   }
   w = window.open("", "my_win", "directories=no, location=no, menubar=no, alwaysRaised=yes, status=no, scrollbars=no, toolbar=no, width=" + width + ", height=" + height + ", left=" + x + ", top=" + y + ", screenx=" + x + ", screeny=" + y + ", dependent=yes, resizable=no");
   if(w) {
      w.document.write(html);
      w.focus();
   } else {
      // Sino se puede mostrar la ventana, entonces mostrar el dialogo a la antigua
      msg = msg.replace("<strong>", "");
      msg = msg.replace("</strong>", "");      
      alert(msg);
   }
}

function onComboChange(control, spanCotainerId)
{
    var spanCotainer = document.getElementById(spanCotainerId);

    if(control.value == -1 || control.value == "-1") {
        spanCotainer.innerHTML = "<a href=\"#\" onclick=\"javascript:void(0)\"><img src=\"images/button_delete_disabled.png\" alt=\"Agregar Sello Disquero\" width=\"78\" height=\"21\" border=\"0\" align=\"absmiddle\" /></a>";
    } else {
        spanCotainer.innerHTML = "<a href=\"#\" onclick=\"javascript:deleteMusicRecord()\" onmouseout=\"MM_swapImgRestore()\" onmouseover=\"MM_swapImage('botonEliminar','','images/button_delete_hot.png',1)\"><img src=\"images/button_delete.png\" align=\"absmiddle\" alt=\"Eliminar\" name=\"botonEliminar\" width=\"78\" height=\"21\" border=\"0\" id=\"botonEliminar\" /></a>";
    }
}

function Left(elem)
{
    var x = 0;
    var oElem = elem;
    while(elem) {
       if((elem.currentStyle) && (!isNaN(parseInt(elem.currentStyle.borderLeftWidth))) && (x != 0))
          x += parseInt(elem.currentStyle.borderLeftWidth);
       x += elem.offsetLeft;
       elem = elem.offsetParent;
    }
    return x;
}

function Top(elem) 
{
    var x = 0;
    var oElem = elem;
    while(elem) {
       if((elem.currentStyle) && (!isNaN(parseInt(elem.currentStyle.borderTopWidth))) && (x != 0))
          x += parseInt(elem.currentStyle.borderTopWidth); 
       x += elem.offsetTop;
       elem = elem.offsetParent;
    } 
    return x;
}

function showAJForm(event, control, ajFormId)
{
    var div = document.getElementById(ajFormId);
    div.style.left = Left(control) + "px";
    div.style.top = Top(control) + "px";
    div.style.visibility = "visible";    
}

function closeAJForm(ajFormId)
{
    var div = document.getElementById(ajFormId);
    div.style.visibility = "hidden";
    div.style.left = "0px";
    div.style.top = "0px";    
}

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 resalt(input)
{
    input.style.borderColor = "#00f";
}

function unresalt(input)
{
    input.style.borderColor = "#000066";
}

function forceNumber(event, control)
{
	var key = document.all ? event.keyCode : event.charCode;

	// Si es un punto
	if(key == 46) {
		// Ver si el control ya contenia un punto, de ser asi, bloquearlo
		// NO permitirle al usuario ingresar mas de un punto
		if(control.value.indexOf('.') >= 0) {
			if(document.all) 
				event.returnValue = false;
			else
				event.preventDefault();
		} 
		// Dejar escribir el punto o cancelarlo, pero no validar el digito como tal
		return;
	}
	// De lo contrario ver solo si es un digito
    if(key != 0 && (key > 57 || key < 48) && key != 8 && key != 9) {
		if(document.all) 
			event.returnValue = false;
		else
			event.preventDefault();
    }
}

function forceInteger(event, control)
{
    var key = document.all ? event.keyCode : event.charCode;
    if(key != 0 && (key > 57 || key < 48)) {
        if(document.all) 
            event.returnValue = false;
        else
            event.preventDefault();
    }
}

function cleanServerAccents(s)
{
    var str = s;

    while( str != (s = s.replace("__a", "á")) ) str = s;
    while( str != (s = s.replace("__e", "é")) ) str = s;
    while( str != (s = s.replace("__i", "í")) ) str = s;
    while( str != (s = s.replace("__o", "ó")) ) str = s;
    while( str != (s = s.replace("__u", "ú")) ) str = s;
    while( str != (s = s.replace("__n", "ñ")) ) str = s;    

    while( str != (s = s.replace("__A", "Á")) ) str = s;
    while( str != (s = s.replace("__E", "É")) ) str = s;
    while( str != (s = s.replace("__I", "Í")) ) str = s;
    while( str != (s = s.replace("__O", "Ó")) ) str = s;
    while( str != (s = s.replace("__U", "Ú")) ) str = s;
    while( str != (s = s.replace("__N", "Ñ")) ) str = s;

    return str;
}

function showWarning(msg)
{
   msg = cleanServerAccents(msg);
   var html = "<html><head><title>Advertencia</title><link href=\"styles/style_dialog.css\" rel=\"stylesheet\" type=\"text/css\" /></head><body bgcolor=\"#FFFFFF\"><table id=\"Tabla_01\" width=\"348\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr><td colspan=\"7\"><img id=\"dialog_error_01\" src=\"images/dialog_error_01.jpg\" width=\"348\" height=\"17\" alt=\"\" /></td></tr><tr><td colspan=\"2\" rowspan=\"2\"><img id=\"dialog_error_02\" src=\"images/dialog_error_02.jpg\" width=\"70\" height=\"45\" alt=\"\" /></td><td colspan=\"3\"><img id=\"dialog_error_03\" src=\"images/dialog_error_03.gif\" width=\"193\" height=\"33\" alt=\"\" /></td><td colspan=\"2\" rowspan=\"2\"><img id=\"dialog_error_04\" src=\"images/dialog_error_04.jpg\" width=\"85\" height=\"45\" alt=\"\" /></td></tr><tr><td colspan=\"3\"><img id=\"dialog_error_05\" src=\"images/dialog_error_05.jpg\" width=\"193\" height=\"12\" alt=\"\" /></td></tr><tr><td rowspan=\"4\"><img id=\"dialog_error_06\" src=\"images/dialog_error_06.jpg\" width=\"12\" height=\"107\" alt=\"\" /></td><td width=\"323\" height=\"73\" colspan=\"5\" align=\"center\" valign=\"middle\">" + msg + "</td><td rowspan=\"4\"><img id=\"dialog_error_08\" src=\"images/dialog_error_08.jpg\" width=\"13\" height=\"107\" alt=\"\" /></td></tr><tr><td colspan=\"5\"><img id=\"dialog_error_09\" src=\"images/dialog_error_09.jpg\" width=\"323\" height=\"4\" alt=\"\" /></td></tr><tr><td colspan=\"2\" rowspan=\"2\"><img id=\"dialog_error_10\" src=\"images/dialog_error_10.jpg\" width=\"106\" height=\"30\" alt=\"\" /></td><td><img id=\"dialog_error_11\" onclick=\"window.close()\" onmouseover=\"this.src='images/dialog_error2_11.jpg'\" onmouseout=\"this.src='images/dialog_error_11.jpg'\"  src=\"images/dialog_error_11.jpg\" width=\"106\" height=\"21\" alt=\"Presione para continuar\" /></td><td colspan=\"2\" rowspan=\"2\"><img id=\"dialog_error_12\" src=\"images/dialog_error_12.jpg\" width=\"111\" height=\"30\" alt=\"\" /></td></tr><tr><td><img id=\"dialog_error_13\" src=\"images/dialog_error_13.jpg\" width=\"106\" height=\"9\" alt=\"\" /></td></tr><tr><td><img src=\"images/espacio.gif\" width=\"12\" height=\"1\" alt=\"\" /></td><td><img src=\"images/espacio.gif\" width=\"58\" height=\"1\" alt=\"\" /></td><td><img src=\"images/espacio.gif\" width=\"48\" height=\"1\" alt=\"\" /></td><td><img src=\"images/espacio.gif\" width=\"106\" height=\"1\" alt=\"\" /></td><td><img src=\"images/espacio.gif\" width=\"39\" height=\"1\" alt=\"\" /></td><td><img src=\"images/espacio.gif\" width=\"72\" height=\"1\" alt=\"\" /></td><td><img src=\"images/espacio.gif\" width=\"13\" height=\"1\" alt=\"\" /></td></tr></table></body></html>";
   var x, y;
   x = y = 0;
   wnd_w = 350;
   wnd_h = 170;
   if(window.screen) {
      x = ((screen.width - 350) >> 1);
      y = ((screen.height - 170) >> 1);
   }
   w = window.open("", "my_win", "directories=no, location=no, menubar=no, alwaysRaised=yes, status=no, scrollbars=no, toolbar=no, width=" + wnd_w + ", height=" + wnd_h + ", left=" + x + ", top=" + y + ", screenx=" + x + ", screeny=" + y + ", dependent=yes, resizable=no");
   if(w) {
      w.document.write(html);
      w.focus();
   } else {
      // Sino se puede mostrar la ventana, entonces mostrar el dialogo a la antigua
      msg = msg.replace("<strong>", "");
      msg = msg.replace("</strong>", "");
      alert(msg);
   }
}

function showMessage(msg)
{
   msg = cleanServerAccents(msg);
   var html = "<html><head><title>SAI - Aviso</title><link href=\"styles/style_dialog.css\" rel=\"stylesheet\" type=\"text/css\" /></head><body bgcolor=\"#FFFFFF\"><table id=\"Tabla_01\" width=\"348\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr><td colspan=\"7\"><img id=\"dialog_error_01\" src=\"images/dialog_error_01.jpg\" width=\"348\" height=\"17\" alt=\"\" /></td></tr><tr><td colspan=\"2\" rowspan=\"2\"><img id=\"dialog_cool\" src=\"images/dialog_cool.jpg\" width=\"70\" height=\"45\" alt=\"\" /></td><td colspan=\"3\"><img id=\"dialog_error_03\" src=\"images/dialog_error_03.gif\" width=\"193\" height=\"33\" alt=\"\" /></td><td colspan=\"2\" rowspan=\"2\"><img id=\"dialog_error_04\" src=\"images/dialog_error_04.jpg\" width=\"85\" height=\"45\" alt=\"\" /></td></tr><tr><td colspan=\"3\"><img id=\"dialog_error_05\" src=\"images/dialog_error_05.jpg\" width=\"193\" height=\"12\" alt=\"\" /></td></tr><tr><td rowspan=\"4\"><img id=\"dialog_error_06\" src=\"images/dialog_error_06.jpg\" width=\"12\" height=\"107\" alt=\"\" /></td><td width=\"323\" height=\"73\" colspan=\"5\" align=\"center\" valign=\"middle\">" + msg + "</td><td rowspan=\"4\"><img id=\"dialog_error_08\" src=\"images/dialog_error_08.jpg\" width=\"13\" height=\"107\" alt=\"\" /></td></tr><tr><td colspan=\"5\"><img id=\"dialog_error_09\" src=\"images/dialog_error_09.jpg\" width=\"323\" height=\"4\" alt=\"\" /></td></tr><tr><td colspan=\"2\" rowspan=\"2\"><img id=\"dialog_error_10\" src=\"images/dialog_error_10.jpg\" width=\"106\" height=\"30\" alt=\"\" /></td><td><img id=\"dialog_error_11\" onclick=\"window.close()\" onmouseover=\"this.src='images/dialog_error2_11.jpg'\" onmouseout=\"this.src='images/dialog_error_11.jpg'\"  src=\"images/dialog_error_11.jpg\" width=\"106\" height=\"21\" alt=\"Presione para continuar\" /></td><td colspan=\"2\" rowspan=\"2\"><img id=\"dialog_error_12\" src=\"images/dialog_error_12.jpg\" width=\"111\" height=\"30\" alt=\"\" /></td></tr><tr><td><img id=\"dialog_error_13\" src=\"images/dialog_error_13.jpg\" width=\"106\" height=\"9\" alt=\"\" /></td></tr><tr><td><img src=\"images/espacio.gif\" width=\"12\" height=\"1\" alt=\"\" /></td><td><img src=\"images/espacio.gif\" width=\"58\" height=\"1\" alt=\"\" /></td><td><img src=\"images/espacio.gif\" width=\"48\" height=\"1\" alt=\"\" /></td><td><img src=\"images/espacio.gif\" width=\"106\" height=\"1\" alt=\"\" /></td><td><img src=\"images/espacio.gif\" width=\"39\" height=\"1\" alt=\"\" /></td><td><img src=\"images/espacio.gif\" width=\"72\" height=\"1\" alt=\"\" /></td><td><img src=\"images/espacio.gif\" width=\"13\" height=\"1\" alt=\"\" /></td></tr></table></body></html>";
   var x, y;
   x = y = 0;
   wnd_w = 350;
   wnd_h = 170;
   if(window.screen) {
      x = ((screen.width - 350) >> 1);
      y = ((screen.height - 170) >> 1);
   }
   w = window.open("", "my_win", "directories=no, location=no, menubar=no, alwaysRaised=yes, status=no, scrollbars=no, toolbar=no, width=" + wnd_w + ", height=" + wnd_h + ", left=" + x + ", top=" + y + ", screenx=" + x + ", screeny=" + y + ", dependent=yes, resizable=no");
   if(w) {
      w.document.write(html);
      w.focus();
   } else {
      // Sino se puede mostrar la ventana, entonces mostrar el dialogo a la antigua
      msg = msg.replace("<strong>", "");
      msg = msg.replace("</strong>", "");      
      alert(msg);
   }
}

function getFieldProperName(name) 
{
    var prefix = name.substring(0, 3); 
    var new_name;
    // Si se trata de un file-upload
    if(prefix == "fil" || prefix == "fio")
        // Retirar la lista de extensiones del nombre
        new_name = name.substring(name.indexOf("}") + 1);
    else 
        new_name = name.substring(3);
    var len = new_name.length;
    var f_name = new_name.charAt(0);
    var c;
    // Se supone que el primer caracter es Upper
    for(i = 1; i < len; i++) {
       c = new_name.charAt(i);
       f_name += (c < 'a' && c != '_') ? (" " + c) : c;
    }
    var s = f_name;
    var str;
    str = s;

    while( str != (s = s.replace("&ntilde;", "ñ")) ) str = s;
    while( str != (s = s.replace("&aacute;", "á")) ) str = s;
    while( str != (s = s.replace("&eacute;", "é")) ) str = s;
    while( str != (s = s.replace("&iacute;", "í")) ) str = s;
    while( str != (s = s.replace("&oacute;", "ó")) ) str = s;
    while( str != (s = s.replace("&uacute;", "ú")) ) str = s;

    return s;
}

function isMail(field, field_name, empty) 
{
    var positionOfAt;
    var s = field.value;
    if(isEmpty(s)) {
        if(empty) {
	        return true;
	    } else {
   	        showWarning("Debe ingresar alg&uacute;n texto para el campo '" + field_name + "'");
	        field.focus();
	        return false;
	    }
    }
    positionOfAt = s.indexOf('@', 1);
    if((positionOfAt == -1) || (positionOfAt == (s.length - 1))) {
	    showWarning("La direcci&oacute;n del correo electr&oacute;nico del campo '" + field_name  + "' est&aacute; en un formato incorrecto");
	    field.focus();
	    return false;
    }
    return true;
}

function isNumeric(field, p_name, empty) 
{
   var num = /^\d{1,10}$/;
   var s = field.value;
   if(isEmpty(s)) {
       if(empty) {
	       return true;
	   } else {
	       field.focus();
	       showWarning("Debe ingresar un n&uacute;mero para el campo '" + p_name + "'");
	       return false;	     
	   }
   }
   if(!num.test(s)) {
       field.focus();
       showWarning("Debe ingresar un n&uacute;mero valido para el campo '" + p_name + "' el cual no puede contener ni puntos (.) ni comas (,) ");
       return false;
   }
   return true;   
}

function isTelephone(field, p_name, empty) 
{
   var s = field.value;
   if(isEmpty(s)) {
     if(empty) {
	     return true;
	  } else {
	     field.focus();
	     showWarning("Debe ingresar un n&uacute;mero para el campo '" + p_name + "'");
	     return false;	     
	  }
   }
   len = s.length;   
   for(i = 0; i < len; i++) {
       if(s.charAt(i) > '9' || s.charAt(i) < '0') {  
 	       field.focus();
	       showWarning("Debe ingresar un n&uacute;mero entero para el campo '" + p_name + "' el cual no puede contener ni puntos (.) ni comas (,) ");
	       return false;
       }
   }

   return true;   
}

function isFloat(field, p_name, can_be_empty) 
{
    var s = field.value;
    if(isEmpty(s)) {
        if(can_be_empty) {
            // El campo puede ser vacio y esta VACIO!, su validez es correcta
            return true;
        } else {
            field.focus();
            showWarning("Debe ingresar un n&uacute;mero para el campo '" + p_name + "'");
            return false;
        }
    }

	if(isNaN(s)) {
       field.focus();
       showWarning("Debe ingresar un n&uacute;mero v&aacute;lido para el campo '" + p_name + "' ");
       return false;
	}
	return true;
}

function hasValidFile(field, p_name, can_be_empty, extension_list)
{
    var s = field.value;
    if(isEmpty(s)) {
        if(can_be_empty) {
            // El campo puede ser vacio y esta VACIO!, su validez es correcta
            return true;
        } else {
            field.focus();
            showWarning("Debe indicar la ruta de un archivo valido para el campo '" + p_name + "'");
            return false;
        }
    }

    // Contiene una ruta de archivo
    // 
    // Obtener las ultimas 4 letras y ver que la primera de ellas sea un punto '.'
    suffix = s.substring(s.length - 4);
    var valid_ext = false;
    if(suffix.charAt(0) == '.') {
        suffix = suffix.substring(1);
        for(i = 0; i < extension_list.length; i++) {
            if(suffix.toLowerCase() == extension_list[i].toLowerCase()) {
                valid_ext = true;
                break;
            }
        }
    }
    if(!valid_ext) {
        field.focus();
        msg = "El archivo seleccionado no contiene una extensión\naceptada para el campo '" + p_name + "', solo se admiten archivos del tipo:\n ";
        for(i = 0; i < extension_list.length; i++)
            msg += ("*." + extension_list[i].toLocaleLowerCase() + ",  ");
        showWarning(msg);
        return false;         
    }
    return true;
}

function getExtensionsList(control_id)
{
    index1 = control_id.indexOf("{");
    index2 = control_id.indexOf("}");
    
    if(index1 == -1 || index2 == -1)
        return null;

    ext = control_id.substring(index1 + 1, index2);

    return ext.split(";");
}

function isAge(field, p_name) 
{
   var num = /^\d{1,2}$/;
   var s = field.value;

   if(isEmpty(s)) {
	  field.focus();
	  showWarning("Debe ingresar un n&uacute;mero para el campo '" + p_name + "'");
	  return false;
   }
   if(!num.test(s)) {
	  field.focus();
	  showWarning("Debe ingreasar una edad valida para el campo '" + p_name + "', la cual no puede contener ni puntos (.) ni comas (,)");
	  return false;
   }
   return true;
}

var whiteSpace = " \t\n\r";
function isEmpty(s) 
{
	var i;
	if((s == null) || (s.length == 0)) {
	   return true; 
	} else {
	   var c;
	   var len = s.length;
	   for(i = 0; i < len; i++) {
		  c = s.charAt(i);
		  if(whiteSpace.indexOf(c) == -1) {
			 return false;
		  } 
	   }
	}
	return true; // Todos los caracteres son espacios
}

function isAttack(s) 
{
   // Se supone que la cadena no es vacia
   if(s.charAt(0) == ' ' || s.charAt(0) == '\t') return true;
   s_len = s.length;
   for(i = 0; i < s_len; i++) {
	  c = s.charAt(i);
	  // ¿Que hace un usuario metiendo caracteres como estos en un nombre?
	  // Respuesta: Atacando, intentando atacar o leyendo un tutorial de como atacar una página web
	  if(c == '<' || c == '=' || c == '+' || c == '>' || c == '#' || c == '\\') {
		 return true;
	  }
   }
   return false; // Parece ser inofensivo
}

function validateTXTElement(elem, nombreCampo, canBeEmpty) 
{
   var c = elem;
   try { 
       if(!canBeEmpty) {
    	   if(isEmpty(c.value)) {
    		  c.focus();
    		  showWarning("Debe ingresar alg&uacute;n texto para el campo '" + nombreCampo + "'");
    		  return false;
    	   }
       } 
	   if(isAttack(c.value)) {
		  c.focus();
		  showWarning("Por razones de seguridad, no se permite el uso de las siguientes letras:<br/> <strong> < > + = # </strong><br/> en el campo '" + nombreCampo + "'");
		  return false;
	   }
   } catch(e) {
      alert(e);
      return false;
   }
   return true;
}

function validateForm(form) 
{
   var len;
   var elem;
   var elements = form.elements;
   var prefix, nextPrefix;
   var f_name;
   var i, j;

   len = elements.length;
   for(i = 0; i < len; i++) {
      if(elements[i].disabled) 
          continue;
      prefix = elements[i].id.substring(0, 3);
      f_name = getFieldProperName(elements[i].id);

      if(!prefix || prefix.lenght < 3)
          continue;

      switch(prefix) {
          case "txt":
          case "tx2":
              if( !validateTXTElement( elements[i], f_name, false ) ) {
                  return false;
              }
          break;
          
          case "txw":
             // No puede ser vacio pero puede contener caracteres especiales (<,>, ', etc)
             // El servidor le dara un trato especial a esos caracteres
             if( isEmpty(elements[i].value) ) {
                elements[i].focus();
                showWarning("El campo '" + f_name + "' no puede estar vacio"); 
                return false;
             }
          break;
          
          case "fil":
              extList = getExtensionsList(elements[i].id);
              if(!hasValidFile(elements[i], f_name, false, extList))
                  return false; 
          break;
          
          case "fio":
              extList = getExtensionsList(elements[i].id);
              if(!hasValidFile(elements[i], f_name, true, extList))
                  return false;  
          break;
          
          case "txe":
              if( !validateTXTElement( elements[i], f_name, true ) ) 
                  return false;
          break;
          
          case "num":
              if( !isNumeric( elements[i], f_name, false ) ) 
                  return false; 
          break;
          
          case "nuo":
              if( !isNumeric( elements[i], f_name, true ) ) 
                  return false; 
          break;
          
          case "tel":
              if( !isTelephone( elements[i], f_name, false ) ) 
                  return false;          
          break;
          
          case "teo":
              if( !isTelephone( elements[i], f_name, true ) ) 
                  return false; 
          break;
          
          case "ema":
              if( !isMail( elements[i], f_name, false ) ) 
                  return false;           
          break;
          
          case "em2":
              if( !isMail( elements[i], f_name, true ) ) 
                  return false; 
          break;
          
          case "flt":
              if( !isFloat( elements[i], f_name, false ) ) 
                  return false;
          break;                  
          
          case "flo":
              if( !isFloat( elements[i], f_name, true ) ) 
                  return false; 
          break;
          
          case "age":
              if( !isAge( elements[i], f_name ) )
                  return false;
          break;
          
          case "cmb":
              if( elements[i].value == -1 ) {
                  elements[i].focus();
                  showWarning("Debe seleccionar un elemento de la lista '" + f_name + "'");   
                  return false;
              }          
          break;
          
          case "pwd":
              if( !validateTXTElement( elements[i], f_name, false ) ) 
                  return false;
              if(elements[i].value.length < 6) { 
                  elements[i].focus();
                  showWarning("El password debe contener al menos 6 caracteres");
                  return false;
              }
              nextPrefix = "";
              j = i;
              while(nextPrefix != "pwr") {
                  j++;
                  nextSufix = elements[j].id.substring(0, 3);
              }
              if( !validateTXTElement( elements[j], getFieldProperName(elements[j].id), false ) ) return false;
              if( elements[i].value != elements[j].value ) {
                  elements[j].focus();
                  showWarning("La contraseña a reingresar debe ser igual a la ingresada");
                  return false;
              }
          break;
      }


   }
   return true;
}