<!--
// :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
// :::::::::::::::::::::::::: COMPORTAMIENTO PARA "VALIDAR FORMULARIOS" ::::::::::::::::::::::::::
// :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

// Función encargada de chequear los diferentes campos y elementos de un formulario en un documento.
function checkForm() {
	var args = checkForm.arguments;
	var myDot = true;
	var myV = '';
	var myErr = '';
	var addErr = false;
	var myReq;
	
	for (var i = 1; i < args.length; i = i + 4) {
		if (args[i + 1].charAt(0) == '#') {
		  myReq = true;
		  args[i + 1] = args[ i + 1].substring(1);
		}
		else {
			myReq = false;
	}
	  
	var myObj = MM_findObj(args[i].replace(/\[\d+\]/ig,""));
    myV = myObj.value;
	
    if (myObj.type == 'text' || myObj.type == 'password' || myObj.type == 'hidden') {
		if (myReq && myObj.value.length == 0) {
			addErr = true;
		}
      if ((myV.length > 0) && (args[i + 2] == 1)) {
		  var myMa = args[i + 1].split('_');
		  if(isNaN(myV) || myV < myMa[0] / 1 || myV > myMa[1] / 1) {
			  addErr = true;
		  }
      }
	  else if ((myV.length > 0) && (args[i + 2] == 2)) {
		  var rx = new RegExp("^[\\w\.=-]+@[\\w\\.-]+\\.[a-z]{2,4}$");
		  if (!rx.test(myV)) addErr = true;
	  }
	  else if ((myV.length > 0) && (args[i + 2] == 3)) {
		  var myMa = args[i + 1].split("#");
		  var myAt = myV.match(myMa[0]);
		  if (myAt) {
			  var myD = (myAt[myMa[1]])?myAt[myMa[1]]:1;
			  var myM = myAt[myMa[2]] - 1;
			  var myY = myAt[myMa[3]];
			  var myDate = new Date(myY,myM,myD);
			  if(myDate.getFullYear() != myY || myDate.getDate() != myD || myDate.getMonth() != myM) {
				  addErr = true};
			  }
			  else {
				  addErr = true;
			  }
		  }
		  else if ((myV.length > 0) && (args[i + 2] == 4)) {
			  var myMa = args[i + 1].split("#");
			  var myAt = myV.match(myMa[0]);
			  if (!myAt) {
				  addErr = true;
			  }
		  }
		  else if (myV.length > 0 && args[i + 2] == 5) {
			  var myObj1 = MM_findObj(args[i + 1].replace(/\[\d+\]/ig,""));
			  if (myObj1.length)myObj1 = myObj1[args[i + 1].replace(/(.*\[)|(\].*)/ig,"")];
			  if (!myObj1.checked) {
				  addErr = true;
			  }
		  }
		  else if (myV.length > 0 && args[i + 2] == 6) {
			  var myObj1 = MM_findObj(args[i + 1]);
			  if (myV != myObj1.value) {
				  addErr = true;
			  }
		  }
	  }
	  else if (!myObj.type && myObj.length > 0 && myObj[0].type == 'radio') {
		  var myTest = args[i].match(/(.*)\[(\d+)\].*/i);
		  var myObj1 = (myObj.length > 1)?myObj[myTest[2]]:myObj;
		  if (args[i + 2] == 1 && myObj1 && myObj1.checked && MM_findObj(args[i + 1]).value.length / 1 == 0) {
			  addErr = true;
		  }
		  
	  if (args[i + 2] == 2) {
		  var myDot=false;
		  for (var j = 0; j < myObj.length; j ++){myDot = myDot || myObj[j].checked;
	  }
	  
	  if (!myDot) {
		  myErr += '* ' + args[i + 3] + '\n';
	  }
    }
	}
	else if (myObj.type == 'checkbox') {
		if (args[i + 2] == 1 && myObj.checked == false) {
			addErr = true;
		}
      if (args[i + 2] == 2 && myObj.checked && MM_findObj(args[i + 1]).value.length / 1 == 0) {
		  addErr = true;
      }
    }
	else if (myObj.type == 'select-one' || myObj.type == 'select-multiple') {
		if (args[i + 2] == 1 && myObj.selectedIndex / 1 == 0) {
			addErr = true;
		}
    }
	else if (myObj.type == 'textarea') {
		if (myV.length < args[i + 1]) {
			addErr = true;
		}
    }
    if (addErr) {
		myErr += '* ' + args[i + 3] + '\n';
		addErr = false;
    }
  }
  if (myErr != '') {
	  alert('La informacion solicitada esta incompleta o contiene errores: \n\n' + myErr);
  }
  document.MM_returnValue = (myErr == '');
}

// :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
// :::::::::::::::::::::::::::::::::::: FUNCIONES MACROMEDIA :::::::::::::::::::::::::::::::::::::
// :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

// Función que comprueba la versión del navegador del visitante para redirigirle a una página o a otra en función de dicha versión. (En este Sitio Web, el visitante debe tener instalado como mínimo Microsoft Internet Explorer 5.5 o superior y/o Netscape Navigator 6.0 o superior).
function MM_checkBrowser(NSvers,NSpass,NSnoPass,IEvers,IEpass,IEnoPass,OBpass,URL,altURL) {
	var newURL = '';
	var userAgent = navigator.userAgent
	var version = 0;
	
	if (userAgent.indexOf('Netscape') != -1) {
		version = parseFloat(userAgent.substring(userAgent.indexOf('Netscape') + 9,userAgent.length));
		if (version >= NSvers) {
			if (NSpass > 0) newURL = (NSpass == 1)?URL:altURL;
		}
		else {
			if (NSnoPass > 0) newURL = (NSnoPass == 1)?URL:altURL;
		}
		} else if (userAgent.indexOf('MSIE') != -1) {
			version = parseFloat(userAgent.substring(userAgent.indexOf('MSIE') + 4,userAgent.length));
			if (version >= IEvers) {
				if (IEpass > 0) newURL = (IEpass == 1)?URL:altURL;
			}
			else {
				if (IEnoPass > 0) newURL = (IEnoPass == 1)?URL:altURL;
			}
			} else if (OBpass > 0) newURL = (OBpass == 1)?URL:altURL;
			if (newURL) {
				window.location = unescape(newURL);
				document.MM_returnValue = false;
			}
		return document.MM_returnValue;
}

// Función que realiza la precarga de imágenes.
function MM_preloadImages() {
	var d = document;
	
	if (d.images) {
		if (!d.MM_p) d.MM_p = new Array();
		var i;
		var j = d.MM_p.length;
		var 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];
		}
	}
}

// Función que realiza un intercambio de imágenes cuando se produce un evento con el puntero del ratón (onMouseOver, onMouseOut, on Click, etc.).
function MM_swapImage() {
	var i;
	var j = 0;
	var x;
	var 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];
	}
}

// Función que restablece el intercambio de imágenes producido por la función "MM_swapImage()"
function MM_swapImgRestore() {
  var i;
  var x;
  var a = document.MM_sr;
  
  for (i = 0;a && i < a.length && (x = a[i]) && x.oSrc; i++) x.src=x.oSrc;
}

// Función encargada de "navegar" a la URL especificada en los parámetros enviados a esta función.
function MM_goToURL() {
  var i;
  var args = MM_goToURL.arguments;
  document.MM_returnValue = false;
  
  for (i = 0; i < (args.length - 1); i += 2) eval(args[i] + ".location='" + args[i + 1] + "'");
}

// Función encargada de buscar un objeto dentro de la página, en función de los parámetros enviados a la función al llamarla. (Esta función la utilizan los comportamientos "VALIDAR FORMULARIOS" y "MENÚS DE NAVEGACIÓN").
function MM_findObj(n, d) {
	var p;
	var i;
	var 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;
}

// Función que utilizamos para el funcionamiento de los "Menús de Salto" de los formularios HTML.
function MM_jumpMenu(targ,selObj,restore) {
  eval(targ + ".location='" + selObj.options[selObj.selectedIndex].value + "'");
  if (restore) selObj.selectedIndex = 0;
}

// :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
// :::::::::::::::::::::::::::::::::::::: FUNCIONES VARIAS :::::::::::::::::::::::::::::::::::::::
// :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

// Función que limita el número de caracteres que permitimos introducir a los usuarios en un elemento de formulario de tipo TextArea (Área de texto) o de tipo TextField (Campo de texto). Mientras el usuario va escribiendo dentro del área de texto mostramos también, en un elemento de formulario de tipo TextField, el número máximo de caracteres que le quedan por introducir a medida que se van restando.
function textCounter(textField, counterField, maxLimit) {
	// Si el tamaño del campo de texto que queremos controlar ("textField") supera el límite máximo de caracteres que permitimos escribir ("maxLimit"),...
	if (textField.value.length > maxLimit) {
		// ...entonces, bloqueamos la posibilidad de escribir más a través del método "substring(start, end)", ya que nos devuelve como valor una nueva cadena de texto (string) que a su vez contiene la "subcadena" de texto que se encuentra entre la posición del caracter que le pasamos como parámetro "start" (comienzo) y la posición del caracter que le pasamos como parámetro "end" (final). En este caso, asignamos y devolvemos SIEMPRE como valor del campo de texto en el que escribe el usuario ("textField"), la subcadena comprendida entre el caracter 0 y el límite máximo de caracteres que queremos permitir escribir en dicho campo ("maxLimit").
		textField.value = textField.value.substring(0, maxLimit);
	} else {
		// Si por el contrario, aun no se ha superado el límite máximo de caracteres que permitimos introducir ("maxLimit") en el campo que queremos controlar ("textField"), no bloqueamos dicho campo y mostramos el valor restante de caracteres en el campo de texto que empleamos como controlador o contador ("counterField").
		counterField.value = maxLimit - textField.value.length;
	}
}

// Función que "Lanza Ventanas" en el centro de la pantalla del usuario y que toman foco cada vez que se abren.
function launchWindow(theURL,winName,winWidth,winHeight,winFeatures) {
	// Averiguamos la resolución de pantalla del monitor del usuario y se la asignamos a cada variable.
	var winX = screen.availWidth - 10;
	var winY = screen.availHeight - 29;
	// Realizamos las operaciones necesarias para que la nueva ventana que se abrirá, quede centrada en la pantalla del usuario.
	var positionX = winX / 2 - winWidth / 2;
	var positionY = winY / 2 - winHeight / 2;
	// Creamos la cadena que contendrá todas las propiedades de la nueva ventana que se deberá abrir.
	var winProps = "top=" + positionY + ",left=" + positionX + ",width=" + winWidth + ",height=" + winHeight + "," + winFeatures + "";
	// Abrimos la nueva ventana con todos los parámetros anteriormente creados.
	var newWindow = window.open(theURL,winName,winProps);
	// Hacemos que la nueva ventna que se ha abierto, tome foco y se situe en primer plano.
	newWindow.focus();
}
//-->
