// alimentacion de combos en la pagina de domicilio
// funcion ajax 
var READY_STATE_UNINITIALIZED=0; 
var READY_STATE_LOADING=1; 
var READY_STATE_LOADED=2;
var READY_STATE_INTERACTIVE=3; 
var READY_STATE_COMPLETE=4;
  
 function inicializa_xhr(){
	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 devuelveContenido(peticion_http, caja, div, adicion) {
  if(peticion_http.readyState == READY_STATE_COMPLETE) {
    if(peticion_http.status == 200) {
		
		textodevuelto = peticion_http.responseText;
		presenta(textodevuelto, caja, div, adicion);
    }
  }
}

 
function cargaContenido(url, metodo, funcion, caja, div, adicion) {

  //document.getElementById("ms").innerHTML = "Cargando contenido...";
  peticion_http = inicializa_xhr();

  if(peticion_http) {
    
    peticion_http.open(metodo, url, true);
	//peticion_http.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	peticion_http.onreadystatechange = function(){ devuelveContenido(peticion_http, caja, div, adicion)};
	peticion_http.send(null);

	}
}
 

 
function invocarAjax(url, caja, div, adicion){
 	textodevuelto = "";
	cargaContenido(url, "GET", devuelveContenido,caja, div, adicion);
	
	esperaCombos(caja, div);
	
	
	
 }

 
function presenta(textodevuelto, caja, div, adicion){
		if (navigator.appName =="Microsoft Internet Explorer"){
			var para = document.getElementById(div);
				if (caja == div){ // por si no es un combo
					para.innerHTML = textodevuelto;}
				else{
					para.innerHTML = '<select style= "width:200px; font-size:12px" id="'+caja+'" name="'+caja+'" ' + adicion + '>'+textodevuelto+'</select>';
				}
			}
		else{ 
			var para = document.getElementById(caja);
			para.innerHTML = textodevuelto;
		}
			
	}

function limpiaCombos(caja, div){
	// limpia combos
		if (navigator.appName =="Microsoft Internet Explorer"){
		var para = document.getElementById(div);
		para.innerHTML = '<select id="'+caja+'" name="'+caja+'" ><option selected>-seleccione-</option></select>';}
		else{var para = document.getElementById(caja);
		para.innerHTML = '<option selected>-seleccione-</option>';}
		}
function esperaCombos(caja, div){
		// pone en espera al combo
		if (navigator.appName =="Microsoft Internet Explorer"){
		var para = document.getElementById(div);
		para.innerHTML = '<select id="'+caja+'" name="'+caja+'" ><option selected>Cargando espere..</option></select>';}
		else{var para = document.getElementById(caja);
		para.innerHTML = '<option selected>Cargando espere..</option>';}
	}

// Ajax 2 para text	asigna valor

function llamaContenido(peticion_http, caja) {
  if(peticion_http.readyState == READY_STATE_COMPLETE) {
    if(peticion_http.status == 200) {
		
		textodevuelto = peticion_http.responseText;
			var para = document.getElementById(caja);
			para.value = textodevuelto;

    }
  }
}


function llamarAjax(url, caja){
	 
	 var metodo = "GET";
	
	 peticion_http = inicializa_xhr();

	if(peticion_http) {
    
    peticion_http.open(metodo, url, true);
	
	peticion_http.onreadystatechange = function(){ llamaContenido(peticion_http, caja) }
	peticion_http.send(null);

	}
	
	var para = document.getElementById(caja);
	para.value = "Cargando espere..";	
	
 }	
	

//  busca valor checado en radiobuttons
function radbotonval(obj){
	var num = obj.length;
	for(i=0; i<num; i++){
		if(obj[i].checked ){
			break;
		}
	}
	if(i >= num){
		valorx="";
	}
	else{
		valorx = obj[i].value;
	}

	return valorx;
}


// funcion de validacion de entradas
// funcion de validacion  parametros valor = cadena, valida = opcin de validacion, requerido= 1(requerido) 0(no requerido), long= longitud de cadena
	function validar(valor,valida,requerido,largo){
		var patron="", msg="";
		//echo valor,"<br>",valida,"<br>",mensaje,"<br>",requerido;
		if (requerido==1){ 
			if(valor==""){
				msg = "Falta escribir o seleccionar<br>";
				return msg; 
				exit;
			}
		}
		else { 
			if(valor==""){
				msg = "";
				return msg; 
				exit;
			}
		}

		switch (valida) { 
			case "email": 
				//patron = "^[A-Za-z0-9._\-]{3,20}[@]{1}[A-Za-z0-9._\-]{3,20}$";
				//patron = "^[A-Za-z0-9._\-]{3,20}[@]{1,1}[A-Za-z0-9._\-]{3,20}$";
			   patron = "^([a-zA-Z0-9_.-]{1,50})+@(([a-zA-Z0-9-._]{1,50})+.)+([a-zA-Z0-9]{2,4})$";
			//	 patron = "^([a-zA-Z0-9_.-]{1,30})+@(([a-zA-Z0-9-]{1,30})+.)+([a-zA-Z0-9]{2,4})+([a-zA-Z0-9]{2,4})$";
				//patron = "^[A-Za-z0-9]{2,20}[._\-]{0,1}[A-Za-z0-9]{3,20}[@]{1,1}[A-Za-z0-9]{3,20}[._\-]{0,1}[A-Za-z0-9]{3,20}[._\-]{0,1}[A-Za-z0-9]{0,2}$";
				msg = "---clave de correo invalida---. ";
				break;

			case "rfc":
				patron = "^[A-Z\u0022\u0022]{3,4}[0-9]{6}[A-Z0-9\u0022]{0,3}$";
				msg = "No es un RFC valido ";
				break;
			case "num":
				patron = "^[0-9]{1,"+largo+"}$";
				msg = "Solo se aceptan numeros ";
				break;
			case "numD":
				//$patron = "^[0-9]{1,7}.?[0-9]{0,2}$";
				patron = "^[0-9]{1,7}.?[0-9]{0,2}$";
				msg = "Solo se aceptan numeros y 2 decimales";
				break;
			case "numR":
				patron = "^[0-9]{"+largo+","+largo+"}$";
				msg = "Solo se aceptan "+largo+" numero(s) ";
				break;
				
			case "alfaM" :
				patron = "^[A-Z\u0022\u0022,.\ ]{1,"+largo+"}$";
				msg = "Solo se aceptan letras mayusculas ";
				break;
			case "alfam" :
				patron = "^[a-z\u00F1\u0022áéíóú,.\ ]{1,"+largo+"}$";
				msg = "Solo se aceptan letras minusculas ";
				break;
			case "alfa" :
				patron = "^[A-Za-z\u0022\u00F1\u0022áéíóú,.\ ]{1,"+largo+"}$";
				msg = "Solo se aceptan letras ";
				break;
			case "alfaN" :
				patron = "^[A-Z\u0022a-z\u00F1\u0022áéíóú,.0-9\ /-]{1,"+largo+"}$";
				msg = "Solo se aceptan letras y numeros ";
				break;
			case "pws" :
				patron = "^[A-Za-z0-9]{3,"+largo+"}$";
				msg = "Solo se aceptan de 3 a "+largo+" letras o numeros ";
				break;
	
			case "fecha" :
				patron = "^[0-3]{1}[0-9]{1}[/]{1}[0-1]{1}[0-9]{1}[/]{1}(19|20){1}[0-9]{2}$";
				var elpatron = new RegExp(patron,"g");
				resultado = elpatron.test(valor);
				
				if (!resultado) {
				msg = "Fecha invalida debe ser dd/mm/aaaa  ";
				return msg;
				exit;
				break;
				}
				// validamos fechas 
				msg = fechas(valor);
				if (msg!="") {
				return msg;
				break;
				}
				break;
				
			default:
				patron = "^[A-Z\u0022]{1,"+largo+"}$";
				msg = "Solo se aceptan de 1 a "+largo+" letras mayusculas predeterminado";
				break;
		}
		
		var elpatron = new RegExp(patron,"g");
		resultado = elpatron.test(valor);
		if (!resultado) {
			msg += " -verifique<br>";
			return msg;
			}
		else {
			msg = "";
			return msg;
		}
		return msg;
	}

// la expresion regular de la funcion anterior validar no es capas de validar los rangos en dias mayores a 31 o en meses mayores a 12
// es por eso que se deve validar con esta funcion complementaria.

	function fechas(caja){ 

	borrar = "";
	dma = caja.split("/");
	a = dma[2];
	m = dma[1];
	d = dma[0];
	hoy = new Date();
	hoy.getDate();
	maxanio = hoy.getYear();
	if((a < 1900) || (a > 2020) || (m < 1) || (m > 12) || (d < 1) || (d > 31))
	     borrar = "Fecha rango invalido ("+maxanio+")";
		else
		   {
		    if((a%4 != 0) && (m == 2) && (d > 28))	   
				borrar = "El dia es mayor a 28 de febrero"; // Año no viciesto y es febrero y el dia es mayor a 28
				else	
				{
					if ((((m == 4) || (m == 6) || (m == 9) || (m==11)) && (d>30)) || ((m==2) && (d>29)))
					borrar = "Fecha rango dias invalido";
			   }  // else
		    } // fin else
	return borrar;
	}

