//::: Funci?n Validar - Controla los datos ingresados en un formulario ::::::::::::::::::.

function LTrim(str){if(str==null){return null;}for(var i=0;str.charAt(i)==" ";i++);return str.substring(i,str.length);}
function RTrim(str){if(str==null){return null;}for(var i=str.length-1;str.charAt(i)==" ";i--);return str.substring(0,i+1);}
function Trim(str){return LTrim(RTrim(str));}

function validar(){		//v2.1
	// se agreg? el soporte a elementos tipo array, (elemento[])

	var idForm=validar.arguments[0];
	var llave=0;	//llave Obligatoria
	var llave2=0;	//llave Pregunta
	var cadena="Ud. no ha completado o corregido los siguientes campos:\n\n";
	var campos=validar.arguments.length;
	
	for(i=1;i<campos;i+=4){
		idInput=validar.arguments[i];  //el nombre del elemento dentro del formulario
		elemento_array=document.forms[idForm].elements[idInput];
		if(elemento_array){
			idInput=elemento_array;
			}

		inputN=validar.arguments[i+1];	//el t?tulo del elemento
		inputT=validar.arguments[i+2];	//el tipo de datos a validar 0-vac?o, 1-num?rico, 2-fecha
		inputO=validar.arguments[i+3];	//Pregunta  0-obligatorio, 1-pregunta
		
		inputV=idInput.value;			//el valor de cada elemento
		
		switch(inputT){
			case 0:		//no puede quedar vac?o
				if(Trim(inputV)==""||!inputV){
					llave+=(inputO==0)?1:0;
					llave2+=(inputO==1)?1:0;
					idFoco=i;
					carRelleno="";
					cadena+="\t- "+inputN+"\n";
					}
				break;
			case 1:		//debe ser num?rico
				if(isNaN(inputV)){
					llave+=(inputO==0)?1:0;
					llave2+=(inputO==1)?1:0;
					idFoco=i;
					carRelleno="0";
					cadena+="\t- "+inputN+" (debe ser num?rico)\n";
					}
				break;
			case 2:		//arma la fecha en un hidden
				idHidden=inputN;
				anhio=document.forms[idForm].elements["anhio"+idHidden].value
				mes=document.forms[idForm].elements["mes"+idHidden].value
				dia=document.forms[idForm].elements["dia"+idHidden].value
				if((dia==31)&(mes==2|mes==4|mes==6|mes==9|mes==11)|(dia==30&mes==2)){
					llave+=(inputO==0)?1:0;
					llave2+=(inputO==1)?1:0;
					idFoco=0;
					carRelleno="";
					cadena+="\t- "+inputN+" (debe ser una fecha válida)\n";
					}
				validar.arguments[i].value= anhio+"-"+mes+"-"+dia;
			}
		}
		if(llave>0){
			cadena+="\t\tGracias."
			alert(cadena)
			if(validar.arguments[idFoco].type=="text"){
				validar.arguments[idFoco].select();
				}
			return false;
			}
		else{
			if(llave2>0){
				cadena+="\n\tDesea Ud. continuar?."
				if(confirm(cadena)){
					document.forms[idForm].submit()
					}
				else{	
					if(validar.arguments[idFoco].type=="text"){
						validar.arguments[idFoco].focus();
						}
					return false;
					}
				}
			else{
				document.forms[idForm].submit();
				}
			}
}
//::: Fin de Funci?n Validar :::::::::::::::::::::::::::::::::::::::::


// Cambio de im?genes
elQue=''
elQueSrc=''
function cambia(que){
	if(que!=''){
		origen=document.images[que].src
		elQue=que;
		elQueSrc=origen;
		if(origen.indexOf('_en')>0){
			empieza=origen.substring(0,origen.lastIndexOf('_'))
			}
		else{
			empieza=origen.substring(0,origen.lastIndexOf('.'))
			}
		medio="_sobre"
		resto=origen.substring(origen.lastIndexOf('.'),origen.length)
		document.images[que].src=empieza+medio+resto
		}
	else{
		document.images[elQue].src=elQueSrc
		}
}
// /Cambio de im?genes

// Carga las imagenes de roolovers
function imagenes_cargar() {
  if(document.images){
  	if(!document.img_tmp){
  		document.img_tmp=new Array();
  		}
   var i,j
   j=document.img_tmp.length,a=imagenes_cargar.arguments;
   for(i=0; i<a.length; i++){
   	if(a[i].indexOf("#")!=0){
   		document.img_tmp[j]=new Image;
   		document.img_tmp[j++].src=a[i];
   		}
   	}
   }
}
// /Carga las imagenes de roolovers

// Agrega la p?gina a favoritos
function favoritos(dire,titulo){
	if(document.all) {
		window.external.AddFavorite(dire,titulo)
		}
	else{
		alert("AGREGAR A FAVORITOS\n\nPresione las teclas Ctrl + D\npara agregar a favoritos.");
		}
}
// /Agrega la p?gina a favoritos

// comprime o expande un div
function expandir(id_elemento){
	elemento=document.getElementById("cont0"+id_elemento);
	clase=elemento.className;
	if(clase=="oculto"){
		cambia_clase("cont0"+id_elemento,"visible");
		}
	else{
		cambia_clase("cont0"+id_elemento,"oculto");
		}
	}
// /comprime o expande un div

function cambia_clase(aQuien,clase){
	if(!document.layers){	//No es NN
		elemento=document.getElementById(aQuien)
		elemento.className=clase
		}
	}

// en la p?gina buscar.php, chequea si el elemento se cheque?
function buscar_chequear(formulario,elemento1,index1,elemento2,index2){
	

	elemento_1=document.forms[formulario].elements[elemento1][index1];
	elemento_2=document.forms[formulario].elements[elemento2][index2];
	
	if(elemento_1.checked==false)
		elemento_1.checked=true;

		}
		

// Coloca el campo en may?sculas
function may(formu,campo){
	texto=document.forms[formu].elements[campo].value	
	reg=/[^A-ZÑ0-9 ]/gi;
	texto=texto.replace(reg,"");
	document.forms[formu].elements[campo].value=texto.toUpperCase();
	}

// Deja colocar s?lo numeros
function num(formu,campo){
	texto=document.forms[formu].elements[campo].value	
	reg=/[^0-9]/gi;
	texto=texto.replace(reg,"");
	document.forms[formu].elements[campo].value=texto;
	}

	
//Duplica uno o varios elementos html
function crear(recipiente,tipo){
	
	// control
	if(!recipiente||!tipo){
		alert("Faltan argumentos.");
		return;
		}
		
	// variables
	arg=crear.arguments;
	inicio=document.getElementById(recipiente);
	
	// seg?n el tipo, lo que se hace
	switch(tipo){
		case "input":
			for(i=2;i<arg.length;i+=3){	// se evita el primero y segundo,  y se recorre en pares
				// se leen los argumentos
				tipo_input=arg[i];
				nombre=arg[i+1];
				tamanho=arg[i+2];
				// se crea el objeto
				campo=document.createElement("input");
				campo.name=nombre;
				campo.type=tipo;
				campo.size=tamanho;
				// se dibuja
				inicio.parentNode.insertBefore(campo,inicio);
				}
			break;
		case "img":
			for(i=2;i<arg.length;i+=2){	// se evita el primero y segundo,  y se recorre en pares
				// se leen los argumentos
				nombre=arg[i];
				camino=arg[i+1];
				// se crea el objeto
				campo=document.createElement("img");
				campo.name=nombre;
				campo.src=camino;
				// se dibuja
				inicio.parentNode.insertBefore(campo,inicio);
				}
			break;
		case "elemento":
			for(i=2;i<arg.length;i+=3){	// se evita el primero y segundo,  y se recorre en pares
				// se leen los argumentos
				elemento=arg[i];
				id=arg[i+1];
				clase=arg[i+2];
				// se crea el objeto
				campo=document.createElement(elemento);
				campo.id=id;
				campo.className=clase;
				// se dibuja
				inicio.parentNode.insertBefore(campo,inicio);
				}
			break;
		}
	

	}

// curso_seleccion.php - seg?n la selecci?n muestra otros valores
function curso_seleccion(valor){
	// control
	if(!valor&&valor!="")return false;
	
	// se oculta el combo
	if(valor==""){
		combo=document.getElementById("divGrupo");
		boton=document.getElementById("divBoton");
		aviso=document.getElementById("divAviso");
		combo.className="oculto";
		boton.className="oculto";
		aviso.className="oculto";
		return false;
		}

	
	sendRequest("_ajax.php?idA=1&idC="+valor);
	window.setTimeout("curso_seleccion_ajax();",500);
	
	}
// es llamada despu?s de un tiempo
function curso_seleccion_ajax(){

	// control
	if(valor_load=="undefined")return false;
	
	// se muestra el combo
	combo=document.getElementById("divGrupo");
	boton=document.getElementById("divBoton");
	aviso=document.getElementById("divAviso");
	combo.className="visible";
	boton.className="visible";
	aviso.className="notif";
	
	// se vac?a el combo
	select_vaciar("frm_curso_seleccion","idGrupo");
	
	// se carga el combo
	mtx=valor_load.split("\n");
	largo=mtx.length;
	contador=0;
	for(i=0;i<largo;i++){
		mtx2=mtx[i].split("|");
		if(mtx2[0]!=0){
			// reemplaza los tildes
			cadena=mtx2[1].replace(/mi[^a-z]rcoles/gi,"miercoles");
			select_agregar("frm_curso_seleccion","idGrupo",mtx2[0],cadena);
			contador++;
			}
		}
	
	if(contador==0){	// no hay horarios disponibles ?
		select_agregar("frm_curso_seleccion","idGrupo","0","No hay horarios definidos");
		}
	
	}

// curso_horarios.php - recibe una fecha y arma el listado de horarios
function fecha_seleccion(fecha, idC, idC2){
	
	// control
	if(!fecha)return false;

	location.href = "curso_horarios.php?idC="+idC+"&idC2="+idC2+"&fecha="+fecha;

	}

function fecha_seleccion_bak(fecha){
	
	if(!fecha)return false;

	// se oculta el combo
	if(fecha==""){
		combo=document.getElementById("divFecha");
		boton=document.getElementById("divBoton");
		aviso=document.getElementById("divAviso");
		combo.className="oculto";
		boton.className="oculto";
		aviso.className="oculto";
		return false;
		}

	// datos del formulario
	formu=document.forms["frm_curso_horarios"];
	idCurso=formu.elements["idCurso"].value;
	
	
	// se muestra un aviso
	select_agregar("frm_curso_horarios","idHorario","0","cargando horarios...");
	
	// se llama a ajax
	valor_load=null;
	sendRequest("_ajax.php?idA=2&idC="+fecha+"&idC2="+idCurso);
	ajaxTime=window.setTimeout("fecha_seleccion_ajax(0);",400);
	
	}	
// contin?a con la selecci?n de horarios
function fecha_seleccion_ajax(vez){
	
	// control
	if(vez>40){
		alert("Ha ocurrido un error, vuelva a intentarlo");
		select_vaciar("frm_curso_horarios","idHorario");
		window.clearTimeout(ajaxTime);
		}
	
	if(valor_load=="undefined"||valor_load==null){
		vez2=vez+1;
		ajaxTime=window.setTimeout("fecha_seleccion_ajax(vez2);",200);
		}
	
	// se muestra el combo
	combo=document.getElementById("divFecha");
	boton=document.getElementById("divBoton");
	aviso=document.getElementById("divAviso");
	combo.className="visible";
	boton.className="visible";
	aviso.className="notif";
	
	// se vac?a el combo
	select_vaciar("frm_curso_horarios","idHorario");
	
	// se carga el combo
	mtx=valor_load.split("\n");
	largo=mtx.length;
	contador=0;
	for(i=0;i<largo;i++){
		mtx2=mtx[i].split("|");
		if(mtx2[0]!=0&&mtx2[1]){
			// reemplaza los tildes
			cadena=mtx2[1].replace(/mi[^a-z]rcoles/gi,"miercoles");
			select_agregar("frm_curso_horarios","idHorario",mtx2[0],cadena);
			contador++;
			}
		}
	
	if(contador==0){	// no hay horarios disponibles ?
		select_agregar("frm_curso_horarios","idHorario","0","No hay horarios definidos");
		}
	
	
	}
	
/**
 * Controla que el valor no 
 * contenga la expresión dada
 * 
 * @param regExp expr
 * @param string formu
 * @param string campo 
 */
function control_car(expr, formu, campo, mensaje){
	
	// control
	if(!expr || !formu || !campo)return;
	
	// variables
	formu = document.forms[formu];
	campo = formu.elements[campo]; 
	reg = new RegExp(expr, 'gi');
	
	if(reg.exec(campo.value)){
		// si hay mensaje, se avisa
		if(mensaje){
			alert(mensaje);
			}
		// y se quita lo que no se quiere
		campo.value = campo.value.replace(reg, "");
		}
		
	if(campo.value.length > 7){
		alert('Ha colocado más de 7 números,\nverifique los datos ingresados.\n\n(si su cédula es 1.234.567-8, escriba 1234567)');
		}	
	}


/**
 * Realiza funcione al elegir
 * un tipo de inscripción
 * 
 * @param string valor
 * @return void
 */
function capacLoginTipo(valor){

	// variables
	var formu = document.forms['frm_login_inscripcion'];
	var tipo_empresa = formu.elements['TIPO_EMPRESA'];
	var tipo_otro = formu.elements['TIPO_OTRO'];
	var empresa = formu.elements['e_Nombre'].value;

	// reseteo de campos
	tipo_empresa.style.display = 'none';
	tipo_otro.style.display = 'none';
	tipo_empresa.value = '';
	tipo_otro.value = '';

	if(valor == 'empresa:'){
		tipo_empresa.style.display = 'inline';
		tipo_empresa.value = empresa;
		return true;
	}
	if(valor == 'otro:'){
		tipo_otro.style.display = 'inline';
		return true;
	}	
}

/**
 * Realiza el control de los
 * elementos al hacer submit
 * 
 * @return void
 */
function capacLoginSubmit(){
	
	var mensaje = '';
	
	// variables para el tipo
	var formu = document.forms['frm_login_inscripcion'];
	var tipo = formu.elements['TIPO'].value;
	var tipo_empresa = formu.elements['TIPO_EMPRESA'].value;
	var tipo_otro = formu.elements['TIPO_OTRO'].value;

	// demás campos
	var grupo = formu.elements['GRUPO2'].value;
	var cedula = formu.elements['Cedula'].value;
	var nombres = formu.elements['Nombres'].value;
	var apellidos = formu.elements['Apellidos'].value;
	var fecha = formu.elements['Fecha_Nacimiento'].value;
	var direccion = formu.elements['Direccion'].value;
	var localidad = formu.elements['Localidad'].value;
	var telefono = formu.elements['Telefono01'].value;
	
	// control de grupo
	if(grupo == ''){
		mensaje += '- Debe seleccionar una fecha para la inscripción.\n';
	}

	// controles de tipo
	if(tipo == ''){
		mensaje += '- Debe colocar el seleccionar la forma en que abonará el curso.\n';
	}
	if(tipo == 'empresa:' && tipo_empresa == ''){
		mensaje += '- Debe colocar el nombre de la empresa que abonará el curso.\n';
	}
	if(tipo == 'otro:' && tipo_otro == ''){
		mensaje += '- Debe detallar el tipo de inscripción.\n';
	}
	
	// control de otros campos
	if(cedula == '' || nombres == '' || apellidos == '' || fecha == '' || direccion == '' || localidad == '' || telefono == ''){
		mensaje += '- Debe completar los campos marcados\n';
	}
	
	if(mensaje != ''){
		mensaje = 'Para continuar debe corregir los siguientes campos:\n\n'+ mensaje;
		alert(mensaje);
	}
	else{
		formu.submit();
	}	
	
}

