function fn_EspaciosAGuiones (cadena)
{
	// También se eliminan los acentos.
	var resultado = "";
	var i;
	
	if (cadena.length > 0)
	{
		for (i = 0; i < cadena.length; i++)
		{
			if (cadena.substr (i, 1) == " ")
				resultado = resultado + "-";
			else if (cadena.substr (i, 1) == "á")
				resultado = resultado + "a";
			else if (cadena.substr (i, 1) == "é")
				resultado = resultado + "e";
			else if (cadena.substr (i, 1) == "í")
				resultado = resultado + "i";
			else if (cadena.substr (i, 1) == "ó")
				resultado = resultado + "o";
			else if (cadena.substr (i, 1) == "ú")
				resultado = resultado + "u";
			else if (cadena.substr (i, 1) == "Á")
				resultado = resultado + "A";
			else if (cadena.substr (i, 1) == "É")
				resultado = resultado + "E";
			else if (cadena.substr (i, 1) == "Í")
				resultado = resultado + "I";
			else if (cadena.substr (i, 1) == "Ó")
				resultado = resultado + "O";
			else if (cadena.substr (i, 1) == "Ú")
				resultado = resultado + "U";
			else if (cadena.substr (i, 1) == String.fromCharCode (34))
				resultado = resultado + "";
			else if (cadena.substr (i, 1) == "'")
				resultado = resultado + "";
			else
				resultado = resultado + cadena.substr (i, 1);
		}
	}
	
	return resultado;
}

function trim (cadena)
{
	var i;
	var cadena2 = cadena;
	var cadena3;
	
	if (cadena.length == 0) return cadena;
	
	for (i = 0; i < cadena.length; i++)
	{
		if (cadena.substr (i, 1) == ' ')
			cadena2 = cadena.substr (i + 1);
		else
			break;
	}

	if (cadena2.length == 0) return cadena2;
	
	cadena3 = cadena2;
	
	for (i = cadena2.length - 1; i >= 0; i--)
	{
		if (cadena2.substr (i, 1) == ' ')
			cadena3 = cadena2.substr (0, i);
		else
			break;
	}

	return cadena3;
}

function fn_QuitarBasuraExtremos (pvstr_Texto)
{
	var lvstr_Cadena = pvstr_Texto;
	var lvstr_Limpia = pvstr_Texto;
		
	if (lvstr_Cadena.length > 0)
	{
		for (i = 0; i < lvstr_Cadena.length; i++)
		{
			if (lvstr_Cadena.substr (i, 1) == " " || lvstr_Cadena.charCodeAt (i) == 10 || lvstr_Cadena.charCodeAt (i) == 13)
				lvstr_Limpia = lvstr_Cadena.substr (i + 1);
			else
				break;
		}
	
		lvstr_Cadena = lvstr_Limpia;
	
		for (i = lvstr_Cadena.length - 1; i >= 0; i--)
		{
			if (lvstr_Cadena.substr (i, 1) == " " || lvstr_Cadena.charCodeAt (i) == 10 || lvstr_Cadena.charCodeAt (i) == 13)
				lvstr_Limpia = lvstr_Cadena.substr (0, i);
			else
				break;
		}
	}
	
	return lvstr_Limpia;
}

function fn_ValidarUnEmailValido (pvStr_Cadena)
{
	var arroba = pvStr_Cadena.indexOf ("@");
	var i;
	
	if (arroba == -1)
		return false;
		
	var arroba2 = pvStr_Cadena.indexOf ("@", arroba + 1);
	
	if (arroba2 != -1)
		return false;
	
	if (arroba == 0)
		return false;
	
	if (arroba == pvStr_Cadena.length - 1)
		return false;
	
	for (i = 0; i < pvStr_Cadena.length; i++)
	{
		if (pvStr_Cadena.substr (i, 1) == " " || pvStr_Cadena.substr (i, 1) == ";" || pvStr_Cadena.substr (i, 1) == "," || pvStr_Cadena.substr (i, 1) == String.fromCharCode (34))
			return false;
	}

	return true;
}

function fn_ValidarEmailValido (pvStr_Cadena, pvBol_Varios)
{
	var cadenaAcum = "";
	var i;
	
	if (trim (pvStr_Cadena) != "")
	{
		if (pvBol_Varios == false)
			return fn_ValidarUnEmailValido (trim (pvStr_Cadena));
		else
		{		
			for (i = 0; i < pvStr_Cadena.length; i++)
			{
				if (pvStr_Cadena.substr (i, 1) == ";")
				{					
					if (cadenaAcum == "")
						return false;
					
					if (fn_ValidarUnEmailValido (trim (cadenaAcum)) == false)
						return false;
						
					cadenaAcum = "";
				}
				else
					cadenaAcum = cadenaAcum + pvStr_Cadena.substr (i, 1);
			}
			
			if (cadenaAcum != "")
				return fn_ValidarUnEmailValido (trim (cadenaAcum));			
		}	
	}

	return true;
}

// Validamos que el string recibido como parámetro no contenga ninguna barra invertida.
function fn_ValidarBarraInvertida (strTexto)
{
	var i;
	var caracter;

	for (i = 0; i < strTexto.length; i++)
	{
		caracter = strTexto.substr (i, 1);
		
		if (caracter == "\\")
			return false;
	}
	
	return true;
}

// Validamos que el string recibido como parámetro sólo contenga letras y números.
function fn_ValidarSoloLetrasNumeros (strTexto)
{
	var i;
	var caracter;

	for (i = 0; i < strTexto.length; i++)
	{
		codigo = strTexto.charCodeAt (i);
		
		// Rangos válidos: 48-57, 65-90 y 97-122.
		
		if ((codigo < 48 || codigo > 57) && (codigo < 65 || codigo > 90) && (codigo < 97 || codigo > 122))
			return false;
	}
	
	return true;
}

function fn_InvocarAjax_Post (archivo, parametros)
{
	try
	{
		// Firefox, Opera 8.0+, Safari
		xmlHttp = new XMLHttpRequest ();
	}
	catch (e)
	{
		// Internet Explorer
		try
		{
			xmlHttp = new ActiveXObject ("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			try
			{
				xmlHttp = new ActiveXObject ("Microsoft.XMLHTTP");
			}
			catch (e)
			{
				alert ("Su navegador no soporta AJAX.");
				return false;
			}
		}
	}
	
	xmlHttp.open ("POST", archivo, true);	
	xmlHttp.onreadystatechange = fn_ProcesarRespuestaAjax;
	xmlHttp.setRequestHeader ("Content-type", "application/x-www-form-urlencoded");
	xmlHttp.setRequestHeader ("Content-length", parametros.length);
	xmlHttp.setRequestHeader ("Connection", "close");
	xmlHttp.send (parametros);
}
	
function fn_ProcesarRespuestaAjax ()
{
	var resultado;
	
	if (xmlHttp.readyState == 4)
	{
		resultado = fn_QuitarBasuraExtremos (xmlHttp.responseText);
		eval (resultado);
	}
}

function fn_Escape (cadena)
{
	var resultado = escape (cadena);
	
	while (resultado.indexOf ("+") >= 0)
		resultado = resultado.replace ("+", "%2B");

	return resultado;
}

function fn_ColocarSaltosDeLineaHTML (cadena)
{
	var i = 0;
	var resultado = "";
	var caracter;
	
	if (cadena != "")
	{	
		do
		{
			caracter = cadena.substr (i, 1);
			
			if (caracter == String.fromCharCode (10))
				resultado = resultado + "<br>";
			else if (caracter != String.fromCharCode (13))
				resultado = resultado + caracter;
				
			i = i + 1;
		}
		while (i < cadena.length);
	}
	
	return resultado;
}

function fn_ReemplazarComillasJavascript (cadena)
{
	var resultado = "";

	if (cadena.length > 0)
	{
		for (i = 0; i < cadena.length; i++)
		{
			if (cadena.substr (i, 1) == String.fromCharCode (34))
				resultado = resultado + String.fromCharCode (34) + " + String.fromCharCode (34) + " + String.fromCharCode (34);
			else if (cadena.substr (i, 1) == String.fromCharCode (39))
				resultado = resultado + String.fromCharCode (34) + " + String.fromCharCode (39) + " + String.fromCharCode (34);
			else if (cadena.substr (i, 1) == String.fromCharCode (92))
				resultado = resultado + String.fromCharCode (34) + " + String.fromCharCode (92) + " + String.fromCharCode (34);
			else
				resultado = resultado + cadena.substr (i, 1);
		}
	}
	
	return resultado;
}