// JavaScript Document
/*
	Colección de funciones para el comportamiento del Home del sitio Web LALA.
	Elaboradas por Guillermo Cruz
	08 de Junio de 2007
*/

/*
	Función para la creación e inicialización del objeto XMLHttpRequest.
*/
function iniObj()
{
	//Variables para el objeto AJAX.
	var oajax = false;

	try 
	{
       oajax = new XMLHttpRequest();
 	} 
	catch (trymicrosoft) 
	{
       try 
	   {
        	oajax = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (othermicrosoft) 
		{
       		try
			{
             	oajax = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (failed)
			{
             	oajax = false;
			}
		}
 	}

	 if (!oajax)
	 {
       alert("¡¡ERROR AL INICIALIZAR EL OBJETO!!");
	 }
	 
	 //Regresar el objeto AJAX.
	 return oajax;
}

/*
	Función para cargar páginas de forma asíncrona, usando el metódo POST.
*/
function pPag(pag,strd,ido)
{
	//Objeto para mostrar los resultados.
	var melem = document.getElementById(ido);
	//Objeto para el comportamiento AJAX.
	var majax = iniObj();
	//Variable para el código de animación de espera.
	//var wait = "<p>Espera un momento...</p>";
	var wait = "<table border='0' cellpadding='0' cellspacing='0' width='744'>";
	wait += "<tr><td align='center' valign='top' class='Tit01'>Espere un momento...</td></tr></table>";
		
	try
	{
		//Se muestra un mensaje o una imagen de "Cargando...".
		melem.innerHTML = wait;
		//Se usa el método POST para enviar las variables.
		//Se indica que archivo realizará la labor de paginar, junto con el valor del número de página.
		majax.open( "POST", pag, true );
		//Se envian las variables para realizar la búsqueda.
		majax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		majax.send(strd);
		//Realizar la verificación si se cargo el contenido.
		majax.onreadystatechange = function() {
			//Verificar el estado.
			if( majax.readyState == 4 )
			{
				//Se muestra el contenido en el div.
				melem.innerHTML = majax.responseText;
			}
		}
	}
	catch(e)
	{
		alert( "Error: " + e );
	}
}

/*
	Función para cargar páginas de forma asíncrona, usando el método GET.
*/
function gPag(pag,ido)
{
	//Objeto para mostrar los resultados.
	var melem = document.getElementById(ido);
	//Objeto para el comportamiento AJAX.
	var majax = iniObj();
	//Variable para el código de animación de espera.
	//var wait = "<p>Espera un momento...</p>";
	var wait = "<table border='0' cellpadding='0' cellspacing='0' width='744'>";
	wait += "<tr><td align='center' valign='top' class='Tit01'>Espere un momento...</td></tr></table>";
		
	try
	{
		//Se muestra un mensaje o una imagen de "Cargando...".
		melem.innerHTML = wait;
		majax.open("GET", pag);
		majax.onreadystatechange = function() {
			window.status = (majax.readyState);
			if (majax.readyState == 4) 
			{
        		melem.innerHTML = majax.responseText;
			}
 		}
		majax.send(null);
	}
	catch(e)
	{
		alert( "Error: " + e );
	}
}

/*
	Función para mostrar el vídeo. Requiere el id del div donde se mostrará.
*/
function hVideo(iddiv,nmvid)
{
	var elm = document.getElementById(iddiv);
	var code = "";
	
	try
	{	
		//Cargar el HTML a mostrar dentro del div.
		code = "<OBJECT CLASSID='clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B' \n";
		code += "WIDTH='320' HEIGHT='250' CODEBASE='http://www.apple.com/qtactivex/qtplugin.cab'> \n";
		code += "<PARAM name='SRC' VALUE='video/" + nmvid + ".mov'> \n";
		code += "<PARAM name='AUTOPLAY' VALUE='true'> \n";
		code += "<PARAM name='CONTROLLER' VALUE='true'> \n";
		code += "<EMBED SRC='video/" + nmvid + ".mov' \n"; 
		code += "WIDTH='320' HEIGHT='250' AUTOPLAY='true' \n";
		code += "CONTROLLER='true' PLUGINSPAGE='http://www.apple.com/quicktime/download/'> \n";
		code += "</EMBED></OBJECT> \n";
		elm.innerHTML = code;
		elm.focus();
	}
	catch(e)
	{
		alert( "Error: " + e );
	}
}

/*
	Variante de la unción para mostrar el vídeo. Requiere el id del div donde se mostrará.
	Mostrará una animación swf que asu vez cargará un video en formato flv.
*/
function fVideo(iddiv,nmvid)
{
	var elm = document.getElementById(iddiv);
	var code = "";
	
	try
	{	
		//Cargar el HTML a mostrar dentro del div.
		code = "<object classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' ";
		code += "codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0' ";
		code += "width='320' height='240'>";
  		code += "<param name='movie' value='verdad.swf'>";
		code += "<param name='quality' value='high'>";
		code += "<embed src='verdad.swf' quality='high' "; 
		code += "pluginspage=1http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash' ";
		code += "type='application/x-shockwave-flash' width='320' height='240'></embed></object>";
		elm.innerHTML = code;
		elm.focus();
	}
	catch(e)
	{
		alert( "Error: " + e );
	}
}

/*
	Variante de la función para mostrar el vídeo. Requiere el id del div donde se mostrará,
	junto con la ruta.
*/
function rVideo(idiv,rtvid)
{
	var elm = document.getElementById(idiv);
	var code = "";
	
	try
	{	
		//Cargar el HTML a mostrar dentro del div.
		code = "<OBJECT CLASSID='clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B' \n";
		code += "WIDTH='320' HEIGHT='240' CODEBASE='http://www.apple.com/qtactivex/qtplugin.cab'> \n";
		code += "<PARAM name='SRC' VALUE='" + rtvid + ".mov'> \n";
		code += "<PARAM name='AUTOPLAY' VALUE='true'> \n";
		code += "<PARAM name='CONTROLLER' VALUE='true'> \n";
		code += "<EMBED SRC='" + rtvid + ".mov' \n"; 
		code += "WIDTH='320' HEIGHT='240' AUTOPLAY='true' \n";
		code += "CONTROLLER='true' PLUGINSPAGE='http://www.apple.com/quicktime/download/'> \n";
		code += "</EMBED></OBJECT> \n";
		elm.innerHTML = code;
		elm.focus();
	}
	catch(e)
	{
		alert( "Error: " + e );
	}
}

/*
	Función para la validación de los formularios de contáctanos y recomiendanos.
	Recibe como parámetros:
		- idf: id del formulario.
		- sel: si se trata del formulario de contactanos o el de recomiendanos.
		- elm: arreglo con los id de los elementos a validar.
*/
function valInfo(idf,sel,elm)
{
	//Creación del arreglo para contener los valores almacenados.
	var vArr = new Array();
	var ret = false;
	
	try
	{
		//Verificar de que formulario se trata.
		if( sel == "cont" )
		{
			if(verTxt(elm[0],"nombre"))
			{
				if(verTxt(elm[1],"apellidos"))
				{
					if(verTxt(elm[2],"edad"))
					{
						if(verTxt(elm[7],"teléfono"))
						{
							if(verTxt(elm[8],"correo electrónico"))
							{
								ret = true;
							}
						}
					}
				}
			}
		}
		else if( sel == "reco" )
		{
			if(verTxt(elm[0],"tu nombre"))
			{
				if(verTxt(elm[1],"tu email"))
				{
					if(verTxt(elm[2],"nombre de tu amigo"))
					{
						if(verTxt(elm[3],"email de tu amigo"))
						{
							ret = true;
						}
					}
				}
			}
		}
		else if( sel == "cons" )
		{
			if(verTxt(elm[0],"tu nombre"))
			{
				if(verTxt(elm[1],"tu edad"))
				{
					if(verTxt(elm[3],"tu email"))
					{
						if(verTxt(elm[4],"tu comentario"))
						{
							ret = true;
						}
					}
				}
			}
		}
		else
		{
			alert("No se pudo determinar el formulario.");
			ret = false;
		}
		return ret;
	}
	catch (e)
	{
		alert(e);
		return false;
	}
}

/*
	Función para verificar si un cuadro de texto esta vacío.
	El parámetro que recibe es el id del objeto.
*/
function verTxt(idt,campo)
{
	try
	{
		if(document.getElementById(idt).value==''||document.getElementById(idt).value==' ')
		{
			alert("Por favor escribe: " + campo);
			document.getElementById(idt).focus();
			return false;
		}
		else
		{
			return true;
		}
	}
	catch(e)
	{
		alert( "Error: " + e );
		return false;
	}
}

/*
	Función que verifica si un radio button esta seleccionado.
	Los parámetros que recibe son:
		- nmr: nombre del radio button.
		- campo: texto correspondiente al campo.
*/
function verRad(nmr,campo)
{
	try
	{
		//Obtener el elemento.
		var nodo = document.getElementsByName(nmr);
		var c = 0;
		var ret;
		
		//Verificar si se tienen radio buttons.
		if(nodo.length > 1)
		{
			for(c=0;c<nodo.length;c++)
			{
				if(nodo[c].checked)
				{
					ret = true;
				}
			}
		}
		else
			ret = false;
	}
	catch(e)
	{
		alert( "Error: " + e );
		return false;
	}
}

/*
	Función que se encarga de componer una cadena para enviar por el método "POST",
	a una página para enviar un email.
	Los parámetros que recibe son:
		- org: origen de la petición.
		- idf: id del formulario donde se tomarán los datos.
		- ido: id del objeto donde se mostrarán los datos.
		- rpg: ruta de la página a enviar los datos.
*/
function sMail(org,idf,ido,rpg)
{
	//Objeto para mostrar los resultados.
	var smelem = document.getElementById(ido);
	//Objeto para el comportamiento AJAX.
	var smajax = iniObj();
	
	var elm = new Array();
	var etq = new Array();
	var cad = "";
	var i = 0;
	
	try
	{
		//Obtener los valores.
		elm = bFrm(idf);
		//Obtener los id de los objetos.
		etq = eFrm(idf);
		//Validar que no se tengan campos vacíos.
		if( valInfo(idf,org,etq))
		{
			//Componer la cadena.
			cad = "org=" + org;
			for(i=0;i<=elm.length;i++)
			{
				cad += "&" + etq[i] + "=" + elm[i];
			}
			//Llamar a la página php para realizar el envío del correo.
			//Se muestra un mensaje o una imagen de "Cargando...".
			smelem.innerHTML = "<center><span class='Tit01'>Espera un momento...</span></center>";
			//Se usa el método POST para enviar las variables.
			//Se indica que archivo realizará la labor de paginar, junto con el valro del número de página.
			//smajax.open( "POST", "./php/sMail.php", true );
			smajax.open( "POST", rpg, true );
			//Se envian las variables para realizar la búsqueda.
			smajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
			smajax.send(cad);
			//Realizar la verificación si se cargo el contenido.
			smajax.onreadystatechange = function() {
				//Verificar el estado.
				if( smajax.readyState == 4 )
				{
					//Se muestra el contenido en el div.
					smelem.innerHTML = smajax.responseText;
				}
			}
		}
	}
	catch(e)
	{
		alert( "Error: " + e );
	}
}

/*
	Esta función recorre los elementos de un formulario dado, y los almacena en un arreglo
	y compone una cadena para enviar valores por medio de "POST".
*/
function bFrm(idFrm)
{
	var vElm = new Array();
	var frm = document.getElementById(idFrm);
	var i =0;
	var limite = frm.elements.length-2;
	var act = "";
	
	try
	{
		for(i=0;i<=limite;i++)
		{
			act = frm.elements[i].value;
			vElm.push(act);
		}
		return vElm;
	}
	catch(e)
	{
		alert( "Error: " + e );
		return "";
	}
}

/*
	Esta función recorre los elementos de un formulario dado, y los almacena en un arreglo
	y compone una cadena para enviar valores por medio de "POST".
*/
function eFrm(idFrm)
{
	var eElm = new Array();
	var frm = document.getElementById(idFrm);
	var i =0;
	var limite = frm.elements.length-2;
	var act = "";
	
	try
	{
		for(i=0;i<=limite;i++)
		{
			act = frm.elements[i].id;
			eElm.push(act);
		}
		return eElm;
	}
	catch(e)
	{
		alert( "Error: " + e );
		return "";
	}
}

/*
	Función que se encarga de componer una cadena para enviar por medio del método "POST",
	lo cual permite cargar una página php para calcular y mostrar los resultados de las
	calculadoras de la sección de vida saludable.
	Los parámetros que recibe son:
		- elmf: arreglo con los id del formulario de datos.
		- calc: calculadora a la que pertenecen los datos (IMC - Calorías).
		- npag: página a donde se enviarán los datos.
		- idel: id del elemento donde se mostrarán los resultados.
*/
function calc(elmf,calc,npag,idel)
{
	var vstr = "";				//Variable para la cadena a enviar con los datos.
	var arr_Elm = new Array();	//Arreglo para contener los valores a procesar.
	var i = 0;
	var c = 0;
	var nodo = new Array();
	
	try
	{
		//Leer los datos que se recibieron.
		for(i=0;i<elmf.length;i++)
		{
			nodo = document.getElementsByName(elmf[i]);
			//Verificar si se tienen radio buttons.
			if(nodo.length > 1)
			{
				for(c=0;c<nodo.length;c++)
				{
					if(nodo[c].type == "radio" && nodo[c].checked)
					{
						arr_Elm.push(nodo[c].value);
					}
				}
			}
			else
			{
				arr_Elm.push(nodo[0].value);
			}
		}
		//Identificar a que calculadora pertenecen los datos.
		if ( calc == 'imc' )
		{
			//Es la calculadora de índice de masa corporal.
			//Se envían sólo dos datos: peso(kg) - estatura(cm).
			vstr = "&peso=" + arr_Elm[0] + "&esta=" + arr_Elm[1] + "&";
		}
		else if ( calc == 'cal' )
		{
			//Es la calculadora de calorías.
			//Se envían los datos de: sexo, rango de edad, peso y nivel de actividad.
			vstr = "&sexo=" + arr_Elm[0] + "&edad=" + arr_Elm[1] + "&peso=" + arr_Elm[2] + "&acti=" + arr_Elm[3] + "&";
		}
		else
		{
			vstr = "&fin=&";
		}
		
		//Llamar a la función para llamar a la página para calcular y mostrar los resultados.
		pPag(npag,vstr,idel);
		return false;
	}
	catch(e)
	{
		alert( "Error: " + e );
		return true;
	}
}

/*
	Función para desplegar un video dentro un "div" oculto, que se hará visible al activar
	el enlace.
	Los parámetros que recibe son:
		- ido: id del objeto donde se mostrará el video.
		- idl: id del layer a volver visible.
		- nvideo: nombre del video a mostrar.
*/
function lyVideo(ido,idl,nvideo)
{	
	try
	{
		//Cambiar la visiblidad del objeto.
		swVis(idl);
		//Cargar el video.
		rVideo(ido,nvideo);
	}
	catch(e)
	{
		alert( "Error: " + e );
		return true;
	}
}

/* 
	Función para desplegar una imagen en un layer, el cual se encuentra oculto 
	y al activarse el evento se mostrara junto con el botón de cerrar.
	Los parámetros que recibe son:
		- ido: id del objeto contenedor a mostrarse.
		- idi: id del objeto donde se mostrará la imagen.
		- rimg: ruta de la imagen a mostrar.
*/
function lyImg(ido,idi,rimg)
{
	var code = "";
	var elm = document.getElementById(idi);
	
	try
	{
		//Cambiar la visiblidad del objeto.
		swVis(ido);
		//Crear el código par mostrar la imagen.
		code = "<img alt='cartelera' border='0' src='" + rimg + "' />";
		//Mostrar la imagen.
		elm.innerHTML = code;
		elm.focus();
		
	}
	catch(e)
	{
		alert( "Error: " + e );
		return true;
	}
}


/*
	Función para cambiar la visibilidad de un objeto.
	Recibe cómo parámetro el id del objeto a cambiar su visibilidad.
*/
function swVis(idv){
	var lvideo = document.getElementById(idv);		//Layer contenedor del objeto.
	
	try
	{
		//Cambiar la visiblidad del objeto.
		if( lvideo.style.visibility == 'hidden' && lvideo.style.display == 'none' )
		{
			lvideo.style.visibility = 'visible';
			lvideo.style.display = 'block';
		}
		else
		{
			lvideo.style.visibility = 'hidden';
			lvideo.style.display = 'none'
		}
	}
	catch(e)
	{
		alert( "Error: " + e );
		return true;
	}
}

function cRec()
{
	var ccon;
	var crec;
	var loc = new String();
	var res;
	
	try
	{
		ccon = document.getElementById('contenido');
		loc = window.document.location.toString();
		res = loc.split("?");
		//alert(res[0] + ", " + res[1] + ", " + res[2]);
		gPag(res[1],'contenido');
		crec = document.getElementById('receta');
		alert(ccon.id + ", " + crec.id);
		//gPag(res[2],'receta');
	}
	catch(e)
	{
		crec = e;
		alert( "Error: " + e.message );
	}
}

/*
	Función para abrir una nueva ventana. Usada para los videos emergentes.
	Los parámetros que recibe son:
		- dir: dirección de la página a cargar.
		- tit: título de la ventana.
*/
function popVideo(dir,tit)
{
	try
	{
		var win = window.open("", tit,'width=400,height=300,scrollbars=NO');
		win.location.href = dir;
		void(0);
		//alert(dir + ', ' + tit);
		//window.open(dir,tit,'width=400,height=300,scrollbars=NO');
	}
	catch(e)
	{
		alert( "Error: " + e.message );
	}
}