// JavaScript Document
//AJAX - HTML HANDLED - VERSION 1.3
onload=function() 
{
	//donde se mostrará el formulario con los datos
	divContainer  = document.getElementById("container");
	divMensaje    = document.getElementById("mensaje");
	divFormulario = document.getElementById("formulario");
	//divResultado  = document.getElementById("resultado");
	//document.getElementsByName('resolution')[0].value = screen.width +"x"+ screen.height;
}

function objetoAjax()
{
	var xmlhttp=false;
	try {
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
		try {
		   xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (E) {
			xmlhttp = false;
  		}
	}

	if (!xmlhttp && typeof XMLHttpRequest!='undefined') 
	{
		xmlhttp = new XMLHttpRequest();
	}
	return xmlhttp;
}

function ajaxCorreo(url,vector,action)
{
	//Convoco a la función de ajaxDatos con el vector de datos en el caso que se use.
	if(ajaxDatos(vector) == false) return false;
	var texto='<br><br><br><center><img src="Imagenes/loading.gif" alt="Enviando"><p style="font-family:Verdana;font-size:12px;color:#183A44;font-weight:bold;">Enviando. Por favor espere...</p></center>';
	muestraMensaje(texto);
	//instanciamos el objetoAjax.
	ajax=objetoAjax();
	//uso del medotod POST.
	ajax.open("POST",url);
	ajax.onreadystatechange=function() {
		if (ajax.readyState==4) 
		{
			var respuesta=ajax.responseText;
				if(respuesta=='CORRECTO')
				{
					var texto='<br><br><br><center><img src="Imagenes/ok_.png" alt="Ok"><p style="font-family:Verdana;font-size:12px;color:#183A44;font-weight:bold;">¡Se ha registrado satisfactoriamente al sorteo!</p><button onClick="ocultaMensaje(\'quit\')" type="button" class="boton">Aceptar</button></center>';
					for (i=0; i<document.forms['consulta'].elements.length - 1; i++) 
					{
						if (document.forms['consulta'].elements[i].type=="text") 
							document.forms['consulta'].elements[i].value = '';
					}
					muestraMensaje(texto);
				} else if(respuesta=='REGISTRADO') {
					var texto='<br><br><br><center><img src="Imagenes/atencion_.png" alt="No"><p style="font-family:Verdana;font-size:12px;color:#183A44;font-weight:bold;">El email ingresado ya se encuentra participando en el sorteo</p><button onClick="ocultaMensaje(\'quit\')" type="button" class="boton">Aceptar</button></center>';
					for (i=0; i<document.forms['consulta'].elements.length - 1; i++) 
					{
						if (document.forms['consulta'].elements[i].type=="text") 
							document.forms['consulta'].elements[i].value = '';
					}
					muestraMensaje(texto);
				} else {
					var texto='<br><br><br><center><img src="Imagenes/error_.png" alt="No"><p style="font-family:Verdana;font-size:12px;color:#183A44;font-weight:bold;">Hubo un problema temporal. Intente nuevamente más tarde</p><button onClick="ocultaMensaje(\'quit\')" type="button" class="boton">Aceptar</button></center>';
					for (i=0; i<document.forms['consulta'].elements.length - 1; i++) 
					{
						if (document.forms['consulta'].elements[i].type=="text") 
							document.forms['consulta'].elements[i].value = '';
					}
					muestraMensaje(texto);
				}
		}
				
	}
	//como hacemos uso del metodo POST.
	ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	//enviando el string de ajax en el caso que haya uno.
	ajax.send(ajax_str);
}

function isArray(testObject) 
{
    return testObject && !(testObject.propertyIsEnumerable('length')) && typeof testObject === 'object' && typeof testObject.length === 'number';
}

function ajaxDatos(vector)
{
	if(isArray(vector))
	{
		var checkboxes = [];
		for(i in vector)
		{
			var x = vector[i];

			if(x[2] == 'required' && x[1].replace(/ /g, '') == '')
			{
				alert('El campo '+x[3]+' no puede estar vacio');
				if(x[0]!='det_largo')document.getElementsByName(x[0])[0].focus();
				return false;
			} else if((x[0] == 'email' || x[0] == 'email_ref1' || x[0] == 'email_ref2') && x[1].replace(/ /g, '') != '') {
				var s = x[1];
				var filter=/^[A-Za-z][A-Za-z0-9._-]*@[A-Za-z0-9_-]+\.[A-Za-z0-9_.]+[A-za-z]$/;
				if (!filter.test(s))
				{
					alert('Debe ingresar un '+x[3]+' valido');
					document.getElementsByName(x[0])[0].focus();
					return false;
				} else checkboxes.push(x[0] + "=" + x[1]);
			} else if(x[4] == 'textarea' && x[1].length > x[5]) {
				alert('El campo '+x[3]+' tiene demasiados caracteres');
				document.getElementsByName(x[0])[0].focus();
				return false;
			} else
				checkboxes.push(x[0] + "=" + x[1]);

		}
		ajax_str = checkboxes.join('&');
		//alert(ajax_str); //-> control del string armado
	} else ajax_str = null;
}

function init(url)
{
  //Esta función se puede estar ejecutando desde la llamada al iniciarse esta función debajo o
  //en el caso de ser un richtext, desde la pantalla desde donde se adjunto este archivo.
  onUploadButtonClick = function(e){
	//alert(vector); //-> control del mensaje de error en el vector
    var uploadHandler = {
      upload: function(o) {
	  	alert(o.responseText); //-> control del mensaje de error que devuelve en posible error
		//Evaluo el string que me devuelve con la función 'eval'
		var r = eval('(' + o.responseText + ')');
		//Si contiene un vector con el valor 'hasError'
		if(r.hasError)
		{
			var errorString = '';
			for(var i=0; i < r.errors.length; i++){
				errorString += r.errors[i];
			}
			var texto='<br><br><br><center><img src="Imagenes/error_.png"><p style="font-family:Verdana;font-size:12px;color:#183A44;font-weight:bold;"><u>Error</u>: '+errorString+'.<p><button class="boton" onClick="ocultaMensaje(\'quit\');" type="button">Aceptar</button></center>';
			//Muestro el mensaje HTML con el error
			muestraMensaje(texto);
		} else {

				var texto='<br><br><br><center><img src="Imagenes/ok_.png"><p style="font-family:Verdana;font-size:12px;color:#183A44;font-weight:bold;">Se ha enviado el CV. Muchas Gracias!<p><button class="boton" onClick="ocultaMensaje(\'quit\');" type="button">Aceptar</button></center>';
			//Muestro el mensaje HTML con el error (acá debería tener especial cuidado que cuando es una actualización, debería
			//estar llamando a 'muestraMensaje' con la acción de 'act' para actualizar el 'divResultado' que es donde estoy mostrando
			//la información. Actualmente no lo estoy haciendo y es mi error.
			/*for (i=0; i<document.forms[0].elements.length - 1; i++) 
			{
				if (document.forms[0].elements[i].type=="text" || document.forms[0].elements[i].type=="textarea") 
				{
					document.forms[0].elements[i].value = '';
				}
			}*/
			document.forms[0].reset();
			muestraMensaje(texto);
		}
      }
    };
	//Armo el vector con los datos en formato AJAX para poder enviarlos.
	 if(ajaxDatos(vector) == false) return false;
	 //Hago la conexión al formulario desde donde voy a hacer el submit, se llama 'imageForm'.
	 YAHOO.util.Connect.setForm('imageForm', true);
	 //Ejecuto el evento de conexión llamando a la pantalla dentro de 'url' llamo a la función 'uploadHandler' que es la
	 //que esta más arriba y le paso el 'ajax_str' que es lo que me devolvio el proceso del vector.
 	 YAHOO.util.Connect.asyncRequest('POST', url, uploadHandler, ajax_str);
	 //Armo un HTML que representa la imagen de cargando
	 var texto='<br><br><br><center><img src="Imagenes/loading.gif" alt="Actualizando"><p style="font-family:Verdana;font-size:12px;color:#183A44;font-weight:bold;">Enviando. Por favor espere...</p></center>';
	 //Muestro el HTML con la función 'muestraMensaje' sin pasar nada como parametro
	 muestraMensaje(texto);
  };
}

//Esta función sirve en mayor medida para mostrar la información en código HTML
//que le fue provista desde la función desde donde se la llamó, normalmente 'ajaxAction'.
function muestraMensaje(mensaje,action,richtext)
{
	var valor;
	//En caso que la accion sea 'act'
	if(action == 'act')
	{
		var valor = "none";
		//Voy a mostrar el valor del HTML recibido en el parametro de 'mensaje' en
		//el div llamado 'divResultado' que será el que usaré siempre para mostrar los
		//resultado en un listado.
		divResultado.innerHTML=mensaje;
	//En caso que la accion sea 'ret'.
	} else if(action == 'ret') {
		//Voy a mostrar el valor del HTML recibido en el parametro de 'mensaje' en
		//el div que contiene habitualmente el formulario.
		var valor = "block";
		//Oculto el div 'divMensaje' de mensaje por las dudas que haya quedado abierto anteriormente.
		divMensaje.style.display='none';
		//Habilito el div 'divFormulario' con el valor de la variable seteada un poquito mas arriba (lo muestro).
		divFormulario.style.display=valor;
		//Muestro el contenido del HTML dentro del div 'divFormulario'.
		divFormulario.innerHTML=mensaje;
		//Si el parametro 'richtext' tiene 'true', entonces voy a correr la función que se encuentra aqui mismo.
		if(richtext==true)
			enableRichText();
		else if(richtext==false)
  			YAHOO.util.Event.on('uploadButton', 'click', onUploadButtonClick);
	} else if(action == 'env') {
		//Voy a mostrar el valor del HTML recibido en el parametro de 'mensaje' en
		//el div que contiene habitualmente el formulario.
		var valor = "block";
		//Oculto el div 'divMensaje' de mensaje por las dudas que haya quedado abierto anteriormente.
		divMensaje.style.display='none';
		//Habilito el div 'divFormulario' con el valor de la variable seteada un poquito mas arriba (lo muestro).
		divFormulario.style.display=valor;
		//Muestro el contenido del HTML dentro del div 'divFormulario'.
		divFormulario.innerHTML=mensaje;
	} else {
		//Valor que guardo para el div llamado divContainer que contiene 2 div dentro de si mismo.
		var valor = "block";
		//Muestro en el div 'divMensaje' de mensaje por las dudas que haya quedado cerrado anteriormente.
		divMensaje.style.display='block';
		//Muestro en el div 'divMensaje'.
		divMensaje.innerHTML=mensaje;
	}
	divContainer.style.display=valor;
}

function ocultaMensaje(action)
{
	if(action == 'quit')
		divContainer.style.display='none';
	else
		divMensaje.style.display='none';
}

//Funcion que habilita el richtext en el caso que el id dentro del formulario (obligatorio)
//tenga el valor de 'disabled'. Una vez que lo mostró, le cambia el valor a enabled' y no lo
//vuelve a mostrar
function enableRichText()
{
	//En caso que el campo de texto con id 'richtext' tenga el valor 'disabled'
	if(document.getElementById('richtext').value == 'disabled')
	{
		//Ejecuto la función 'richtext' que se encuentra el la misma pantalla desde donde
		//se adjunto este archivo. No se agregó aqui porque es un código que cambia cada vez.
		richtext();
		//Le asigno el valor de 'enabled' a la caja de texto para que no vuelva a habilitar
		//el richtext.
		document.getElementById('richtext').value = 'enabled';
	}	
}

function setVector(valor)
{
	vector = valor;
}

function addOption(selectId, txt, val)
{
	var objOption = new Option(txt,val);
	document.getElementsByName(selectId)[0].options.add(objOption);
}
