/*
=============================================
 Author:		UANL - INM
 Create date:	ju.08.oct.09
 Description:	Solicita ejecución de consulta para llenado de combos en fomulario.
				Valida los datos del formulario para su inserción.
				Solicita ejecución de store procedure de inserción.
 Version:		1.0.1.0
=============================================
JavaScript Document
*/

$(document).ready(function(){

$('#idNarrativa').html('<textarea id="narrativa" name="narrativa" rows="4" class="field valid-field" onkeyup="contadorDeCaracteres(event,\'narrativa\',8000,\'contador1\')"></textarea> <input type="text" name="contador1" disabled="disabled" id="contador1" value ="8000"/>');
	
});

function enviar(){
	var camposFaltantes = new Array();
	var obligatorios = new Array('papellido','nombre','mail','narrativa');
	document.getElementById("bEnviar").value = "Enviando...";
	document.getElementById("bEnviar").disabled = true;
	for(i=0;i<obligatorios.length;i++){
		var campo = trim(document.getElementById( obligatorios[i] ).value);
		var msn = 'e'+ obligatorios[i];
		if(campo == ''){
			document.getElementById(msn).style.display = "";
			camposFaltantes.push(obligatorios[i]);
		}else{
			document.getElementById(msn).style.display = "none";
		}
	}
	/*
	var combosObligatorios = new Array('tconsulta');
	for(i=0;i<combosObligatorios.length;i++){
		var valor = trim(document.getElementById( combosObligatorios[i] ).value);
		var id2 = 'e'+ combosObligatorios[i];
		if(valor == 0){
			document.getElementById(id2).style.display = "";
			camposFaltantes.push(combosObligatorios[i]);
		}else{
			document.getElementById(id2).style.display = "none";
		}
	}
	*/
	if(camposFaltantes.length == 0){
		var resultados = new Array();
		var preguntaId = new Array('papellido','sapellido','nombre','edad','nacionalidad','calle','colonia','cp','estado','municipio','telefono','mail','narrativa');//,'tconsulta'
		for(i=0;i<preguntaId.length;i++){
			var res = trim(document.getElementById(preguntaId[i]).value);
			resultados.push(res);
		}
		if ((validarNumerosEnteros('edad',"5","120") == true) && (validarNumerosEnteros('cp',"0","99999") == true) && (validarEmail('mail') == true))
			insertaRow(resultados[0],resultados[1],resultados[2],resultados[3],resultados[4],resultados[5],resultados[6],resultados[7],resultados[8],resultados[9],resultados[10],resultados[11],resultados[12]);//,resultados[13]			
	}else{
		alert("No se ha procesado la consulta. Introduzca los datos marcados como obligatorios.");
		document.getElementById(camposFaltantes[0]).focus(); 
		document.getElementById("bEnviar").value = "Enviar";
		document.getElementById("bEnviar").disabled = false;
	}
}
			
function insertaRow(c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13){//,c14
	url = "formasphp/insconsu.php";
	if (window.XMLHttpRequest){
   		req = new XMLHttpRequest();
	}else if(window.ActiveXObject){
		req = new ActiveXObject("Microsoft.XMLHTTP");
	}
	req.onreadystatechange = processRequest;
	req.open("POST",url,true);
	req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	req.send("act=insertar&c1="+c1+"&c2="+c2+"&c3="+c3+"&c4="+c4+"&c5="+c5+"&c6="+c6+"&c7="+c7+"&c8="+c8+"&c9="+c9+"&c10="+c10+"&c11="+c11+"&c12="+c12+"&c13="+c13);//+"&c14="+c14	
}

function processRequest(){
    if (req.readyState == 4){
        if (req.status == 200){
			resp = req.responseText.split("|");
			if(resp[1]=='ok'){
				mostrarOcultar('consulta');
				mostrarOcultar('mensajefinal');
			}else{
				alert('Ocurrio un error en el servidor, por favor intentelo mas tarde.');
				document.getElementById("bEnviar").value = "Enviar";
				document.getElementById("bEnviar").disabled = false;
			}
        }else{
			alert ('Not able to retrieve description.');
			document.getElementById("bEnviar").value = "Enviar";
			document.getElementById("bEnviar").disabled = false;
        }
    } 
}

function trim(str){
	s = str.replace(/^(\s)*/, '');
	s = s.replace(/(\s)*$/, '');
	return s;
}

function mostrarOcultar( id ){
	if( document.getElementById(id).style.display == "none" ){
		document.getElementById(id).style.display = "";
	}else{
		document.getElementById(id).style.display = "none";
	}
}

function validarNumerosEnteros(id,dm,DM){
	var checkNUM = "0123456789"; 
	var checkStr = document.getElementById(id).value; 
	var Valido = true; 
	var allNum = ""; 
	for (i = 0; i < checkStr.length; i++) { 
		ch = checkStr.charAt(i); 
		for (j = 0; j < checkNUM.length; j++) 
			if (ch == checkNUM.charAt(j))
				break; 
		if (j == checkNUM.length) { 
			Valido = false; 
			break; 
		} 
		allNum += ch; 
	} 
	if (!Valido) { 
		alert("Valor incorrecto. Escriba unicamente n\u00FAmeros. Verifique por favor.");
		document.getElementById(id).focus();
		document.getElementById("bEnviar").value = "Enviar";
		document.getElementById("bEnviar").disabled = false;
		return(false);		
	} 
	var chkVal = allNum; 
	var prsVal = parseInt(allNum); 
	if (chkVal != "" && !(prsVal >= dm && prsVal <= DM)) { 
		alert("Valor incorrecto. Escriba un valor mayor o igual que "+dm+" y menor o igual que "+DM+". Verifique por favor."); 
		document.getElementById(id).focus();
		document.getElementById("bEnviar").value = "Enviar";
		document.getElementById("bEnviar").disabled = false;
		return(false);		
	}
	return(true);
}

function contadorDeCaracteres(e, ControlAValidar, maxLongitud, ControlSalida){
	var contadorCadena = maxLongitud - document.getElementById(ControlAValidar).value.length;
	if (!e.which)
		keyCode = event.keyCode; // ie5+ op5+
	else
		keyCode = e.which; // nn6+
	if (contadorCadena < 0){
		document.getElementById(ControlAValidar).value = document.getElementById(ControlAValidar).value.substring(0,maxLongitud);
	}else{
		document.getElementById(ControlSalida).value = contadorCadena;
	}
}

function validarEmail(id){
    if (trim(document.getElementById(id).value) != ""){
		re=/^[a-zA-Z]+([_\.-]?[a-zA-Z0-9]+)*@[a-zA-Z0-9]+([\.-]?[a-zA-Z0-9]+)*(\.[a-zA-Z]{2,4})+$/ 
		if(!re.exec(document.getElementById(id).value)){
			alert("Dato incorrecto. Escriba un correo electr\u00f3nico v\u00e1lido. Verifique por favor.");
			document.getElementById(id).focus();
			document.getElementById("bEnviar").value = "Enviar";
			document.getElementById("bEnviar").disabled = false;
			return false;			
		}else{
			return true;
		}
	}else{
		return true;
	}
}

function addOpt(oCntrl, iPos, sTxt, sVal){  
	var selOpcion=new Option(sTxt, sVal);
	eval(oCntrl.options[iPos]=selOpcion);  
}  

function llenarCombos(id){
	oCntrl=document.getElementById(id);
	if (oCntrl.length == 1){
		traerConsulta(id);
	}
}

function traerConsulta(id){
	url = "formasphp/combos.php";
	if (window.XMLHttpRequest){
   		req = new XMLHttpRequest();
	}else if(window.ActiveXObject){
		req = new ActiveXObject("Microsoft.XMLHTTP");
	}
	req.onreadystatechange = processRequest2;
	req.open("POST",url,true);
	req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	req.send("act=consultar&id="+id);
}

function processRequest2(){
    if (req.readyState == 4){
        if (req.status == 200){
			resp = req.responseText.split("|");
			if(resp[1] == 'ok'){
				oCntrl = document.getElementById(resp[2]);
				for (i = 1;i <= resp[3];i++){
					addOpt(oCntrl,i,resp[(2*i)+2],resp[(2*i)+3]);
				}
			}else{
				alert('Ocurrio un error en el servidor, por favor intentelo mas tarde.');				
			}
        }else{
  		alert ('Not able to retrieve description.');
        }
    } 
}
