//antes que otra cosa, la onda esta de google analytics (29 Abril 2011)
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-23033694-1']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();


// funciones de la validación para los formularios ocupados en la aplicación
//Ultima modificación realizada el viernes 08 de Julio del 2005

function validaCiudadano(){
//declaracion de todas las variables que ocuparemos 
	    var ms = "\n";
		var invalid = " "; // Un espacio es un caracter invalido
		var arroba = /[@]/; // Arroba en el correo electronico
		var punto = /[.]/; // Punto en el correo electronico
		var minLength = 6; // Largo minimo
	    var letras = /[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]/; //caracteres permitidos para llenar el formulario
		//asociacion de variables con los ocjetos del formulario
		var nombre = document.formCiudadano.nombre.value;
        var Apellido_paterno = document.formCiudadano.Apellido_paterno.value;
		var Apellido_materno = document.formCiudadano.Apellido_materno.value;
		var sexo = document.formCiudadano.sexo.value;
		var dia = document.formCiudadano.dia.value		
		var mes = document.formCiudadano.mes.value;
		var agno = document.formCiudadano.agno.value;
		var ocupacion = document.formCiudadano.ocupacion.value;
		var otro = document.formCiudadano.otro.value;
		var Sector = document.formCiudadano.Sector.value;
		var telefono = document.formCiudadano.telefono.value;		
		var Delegacio_Minucipio = document.formCiudadano.Delegacio_Municipio.value;
		var CP = document.formCiudadano.CP.value;
		var Entidad = document.formCiudadano.Entidad.value;
		var Correo = document.formCiudadano.Correo.value;
		var basura = /[$\\@\\\#%\^\&\*\(\)\[\]\+\_\{\}\`\´\~\?\"\']/;


// Revisar campos obligatorios en el formulario CIUDADANO
	if (nombre == '') {
		alert(ms + 'Por favor escriba su nombre.');
		return false;
	     }
	if(nombre.search(basura) == -1) {
		}
		else {
		alert(ms + 'Por favor capture el campo nombre con caracteres alfanuméricos y sin espacios.');
		return false;
      	}
// Apellido Paterno
	if (Apellido_paterno == ''){
	   alert(ms + 'Por favor escriba su apellido paterno');
	   return false;
	   }
	if(Apellido_paterno.search(basura) == -1) {
		}
		else {
		alert(ms + 'Por favor capture el campo apellido paterno con caracteres alfanuméricos y sin espacios.');
		return false;
	   }
//Apellido Materno	   
	if (Apellido_materno == ''){
	   alert(ms + 'Por favor escriba su apellido materno');
	   return false;
	   }
	if(Apellido_materno.search(basura) == -1) {
		}
		else {
		alert(ms + 'Por favor capture el campo apellido materno con caracteres alfanuméricos y sin espacios.');
		return false;
	   }

//Telefono   
	if (telefono == ''){
	   alert(ms + 'Por favor escriba un número telefónico');
	   return false;
	   }

//Correo   
	if (Correo == ''){
	   alert(ms + 'Por favor escriba un correo electronico');
	   return false;
	   }
    if(Correo.search(arroba) == -1) {
		alert(ms + 'Por favor verifique que escribio su correo electrónico adecuadamente (Simbolo " @ ")');
		return false;
		}
		else {
		}
    if(Correo.search(punto) == -1) {
		alert(ms + 'Por favor verifique que escribio su correo electrónico adecuadamente (Simbolo " . ")');
		return false;
		}
		else {
		}		
// Ahora revisamos el resto de los campos para evitar basura del Mal
//estos campos se validan solo si se escribe en ellos, si se dejan en blanco completamente
//no hay problema, por lo tanto no son obligatoorios
//Ocupacion Oxtro

		  if(otro.search(basura) != -1) {
			  alert(ms + 'Por favor capture el campo "otra ocupación" con caracteres alfanuméricos y sin espacios.');
			  return false;
      	       }
		else {
		}	
//Delegación o municipio
		  if(Delegacio_Minucipio.search(basura) != -1) {
			  alert(ms + 'Por favor capture el campo delegación o municipio con caracteres alfanuméricos y sin espacios.');
			  return false;
      	       }
		else {
		}	
//Código Postal
		  if(CP.search(basura) != -1) {
			  alert(ms + 'Por favor capture el campo código postal con caracteres numéricos y sin espacios.');
			  return false;
      	       }
		else {
		}	
// ahora hacemos comparaciones para evitar letras en lugar de numeros en algunos campos
		if (isNaN(dia)==true) {
	    alert(ms + 'El dia de nacimiento debe ser un número.');
	 	return false;
	    }	
        if (isNaN(agno)==true) {
	    alert(ms + 'El año de nacimiento debe ser un número.');
	 	return false;
	    }	   
   	    if (isNaN(CP)==true) {
	    alert(ms + 'El Código Postal deber ser un número.');
	 	return false;
	    }  

}
		

//  THIS IS THE END -->

// Validaciones del Formulario ORGANIZACION
function validaOrg(){
//declaracion de todas las variables que ocuparemos 
	    var ms = "\n";
		var invalid = " "; // Un espacio es un caracter invalido
		var arroba = /[@]/; // Arroba en el correo electronico
		var punto = /[.]/; // Punto en el correo electronico
		var minLength = 6; // Largo minimo
	    var letras = /[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]/; //caracteres permitidos para llenar el formulario
		//asociacion de variables con los ocjetos del formulario
		var Razon = document.formOrg.Razon.value;
        var Institucion_tipo = document.formOrg.Institucion_tipo.value;
		var otros = document.formOrg.otros.value;
		var nombre_registra = document.formOrg.nombre_registra.value;
		var Cargo_registra = document.formOrg.Cargo_registra.value		
		var Correo_registra = document.formOrg.Correo_registra.value;
		var Direccion_Completa = document.formOrg.Direccion_Completa.value;
		var Entidad = document.formOrg.Entidad.value;
		var Delegacion = document.formOrg.Delegacion.value;
		var CP = document.formOrg.CP.value;
		var Acta_constitutiva = document.formOrg.Acta_constitutiva.value;		
		var sedesol = document.formOrg.sedesol.value;
		var web = document.formOrg.web.value;
		var Miembros = document.formOrg.Miembros.value;
		var Contacto1 = document.formOrg.Contacto1.value;
		var Puesto1 = document.formOrg.Puesto1.value;
		var correo1 = document.formOrg.correo1.value;
		var Contacto2 = document.formOrg.Contacto2.value;
		var Puesto2 = document.formOrg.Puesto2.value;		
		var correo2 = document.formOrg.correo2.value;
		var telefono = document.formOrg.telefono.value;
		var basura = /[$\\@\\\#%\^\&\*\(\)\[\]\+\_\{\}\`\´\~\?\"\']/;


// Revisar campos obligatorios en el formulario ORGANIZACION
//Razón Social
    if (Razon == '') {
		alert(ms + 'Por favor escriba el nombre de su razón social.');
		return false;
	     }
	if(Razon.search(basura) == -1) {
		}
		else {
		alert(ms + 'Por favor capture el nombre de su razón social con caracteres alfanuméricos y sin espacios.');
		return false;
      	}
/*Modificación  del 30 de Agosto del 2005 temporalmente solo es obligatorio el campo "Nombre de la Organización ó Razón Social" 
//Nombre de quien registra
	if (nombre_registra == ''){
	   alert(ms + 'Por favor escriba el nombre de quien registra la organización');
	   return false;
	   }
	if(nombre_registra.search(basura) == -1) {
		}
		else {
		alert(ms + 'Por favor capture el nombre de quien registra la organización con caracteres alfanuméricos y sin espacios.');
		return false;
	   }
//Correo de quien registra la organización  
	if (Correo_registra == ''){
	   alert(ms + 'Por favor escriba un correo electronico');
	   return false;
	   }
    if(Correo_registra.search(arroba) == -1) {
		alert(ms + 'Por favor verifique que escribio su correo electrónico adecuadamente (Simbolo " @ ")');
		return false;
		}
		else {
		}
    if(Correo_registra.search(punto) == -1) {
		alert(ms + 'Por favor verifique que escribio su correo electrónico adecuadamente (Simbolo " . ")');
		return false;
		}
		else {
		}	
//Telefono   
	if (telefono == ''){
	   alert(ms + 'Por favor escriba un número telefónico');
	   return false;
	   }
*/
	
// Ahora revisamos el resto de los campos para evitar basura del Mal
//estos campos se validan solo si se escribe en ellos, si se dejan en blanco completamente
//no hay problema, por lo tanto no son obligatoorios

//Ocupacion Oxtros

		  if(otros.search(basura) != -1) {
			  alert(ms + 'Por favor capture el campo "otra ocupación" con caracteres alfanuméricos y sin espacios.');
			  return false;
      	       }
		else {
		}	
//Cargo_registra
		  if(Cargo_registra.search(basura) != -1) {
			  alert(ms + 'Por favor capture el cargo de quien registra la organización con caracteres alfanuméricos y sin espacios.');
			  return false;
      	       }
		else {
		}	
//Direccion_Completa
		  if(Direccion_Completa.search(basura) != -1) {
			  alert(ms + 'Por favor capture el campo Dirección Completa con caracteres numéricos y sin espacios.');
			  return false;
      	       }
		else {
		}	
//Delegacion
		  if(Delegacion.search(basura) != -1) {
			  alert(ms + 'Por favor capture el campo delegación con caracteres numéricos y sin espacios.');
			  return false;
      	       }
		else {
		}	
//CP
		  if(CP.search(basura) != -1) {
			  alert(ms + 'Por favor capture el campo código postal con caracteres numéricos y sin espacios.');
			  return false;
      	       }
		else {
		}	
//Acta_constitutiva
		  if(Acta_constitutiva.search(basura) != -1) {
			  alert(ms + 'Por favor capture el campo acta constitutiva con caracteres alfanuméricos y sin espacios.');
			  return false;
      	       }
		else {
		}			
//sedesol
		  if(sedesol.search(basura) != -1) {
			  alert(ms + 'Por favor capture el campo registro SEDESOL con caracteres alfanuméricos y sin espacios.');
			  return false;
      	       }
		else {
		}	
		
//web
		  if(web.search(basura) != -1) {
			  alert(ms + 'Por favor capture el campo pagina Web con caracteres alfanuméricos y sin espacios.');
			  return false;
      	       }
		else {
		}	
//Miembros
		  if(Miembros.search(basura) != -1) {
			  alert(ms + 'Por favor capture el campo numero de miembros con caracteres numéricos y sin espacios.');
			  return false;
      	       }
		else {
		}	
//Contacto1
		  if(Contacto1.search(basura) != -1) {
			  alert(ms + 'Por favor capture el campo contacto 1 con caracteres alfanuméricos y sin espacios.');
			  return false;
      	       }
		else {
		}	
//Puesto1
		  if(Puesto1.search(basura) != -1) {
			  alert(ms + 'Por favor capture el campo puesto 1 con caracteres alfanuméricos y sin espacios.');
			  return false;
      	       }
		else {
		}			
//correo1 deshabilitado por causas de fuerza mayor el 18 de octubre
		 /* if(correo1.search(basura) != -1) {
			  alert(ms + 'Por favor capture el campo correo 1 con caracteres alfanuméricos y sin espacios.');
			  return false;
      	       }
		else {
		}*/
//Contacto2
		  if(Contacto2.search(basura) != -1) {
			  alert(ms + 'Por favor capture el campo contacto 2 con caracteres alfanuméricos y sin espacios.');
			  return false;
      	       }
		else {
		}
//Puesto2
		  if(Puesto2.search(basura) != -1) {
			  alert(ms + 'Por favor capture el campo puesto 2 con caracteres alfanuméricos y sin espacios.');
			  return false;
      	       }
		else {
		}
//correo2 deshabilitado por causas de fuerza mayor el 18 de octubre
		 /* if(correo2.search(basura) != -1) {
			  alert(ms + 'Por favor capture el campo correo 2 con caracteres alfanuméricos y sin espacios.');
			  return false;
      	       }
		else {
		}*/


// ahora hacemos comparaciones para evitar letras en lugar de numeros en algunos campos

		if (isNaN(Miembros)==true) {
	    alert(ms + 'El número de miembros de la organización debe ser un número.');
	 	return false;
	    }	


}
		

//  THIS IS THE END -->
function validateValue(strValue, reg_type) {
/*
* DESCRIPTION: Validates that a string a matches a valid regular expression value.
* PARAMETERS:
* strValue - String to be tested for validity
* strMatchPattern - String containing a valid
* regular expression match pattern.
* RETURNS:
* True if valid, otherwise false.
*/
var objRegExp = new RegExp(/^[\sa-zA-Z]+$/);
if  (reg_type == "ALFA") objRegExp = /^[\xD1\xF1\sa-zA-Z]+$/;
else if (reg_type == "ALFNUM") objRegExp = /^[\xD1\xF1\sa-zA-Z0-9]+$/; //Alfa numericos
else if (reg_type == "NUM") objRegExp = /^[0-9]+$/; //numeros
else if (reg_type == "AMNT") objRegExp = /(^-?\d\d*\.\d*$)|(^-?\d\d*$)|(^-?\.\d\d*$)/;  //cantidades monetarias
else if (reg_type == "COMM") objRegExp = /^[\xD1\xF1\s\/\-\.a-zA-Z0-9]+$/; //Campos de texto

 //check if string matches pattern
 return objRegExp.test(strValue);
 
}


/*indica si una cadena esta vacia o solo tiene espacios en blanco*/
function isEmpty(str_val){
	if (str_val.length != 0)
		 for(var m = 0;  m < str_val.length; ++m)
  		 if (str_val.charAt(m) != " ")	return false;
	return true;
}

//abrir ventana nueva
function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

//para el buscador
function buscaStr(){
var mform = document.form1;
var txtsearch = mform.txtsearch.value;
if (isEmpty(txtsearch)){alert("Por favor verifique que el campo de busqueda no se encuentre vacio");}
else{
mform.searchStr.value = txtsearch;
mform.action = "nosotrosBuscador.php";
mform.submit();
}

}

//para un enter submit, igual en el buscador
function submitenter(myfield,e)
{
var keycode;
var mform = document.form1;
var txtsearch = mform.txtsearch.value;

if (window.event) keycode = window.event.keyCode;
else if (e) keycode = e.which;
else return true;

if (keycode == 13)
   {
   mform.searchStr.value = txtsearch;
   mform.action = "nosotrosBuscador.php";
   myfield.form.submit();
   return false;
   }
else
   return true;
}


function validDate(strValue) {
/*
* DESCRIPTION: Valida que la fecha se defina solo
* en formato de 2 digitos para el dia, 2 para el mes,
* y 4 para el añor. El separador es /.
* Esto se hace a traves de expresiones regulares
* Ej. dd/mm/yyyy
*
* RETURNS:
* true en caso de ser una fecha valida, false en caso contrario.
*
*/
  var objRegExp = /^\d{1,2}(\/)\d{1,2}\1\d{4}$/

  //check to see if in correct format
  if(!objRegExp.test(strValue))
    return false; //el formato de la cadena no es valido
  else{
    var strSeparator = strValue.substring(2,3) //definir el separador usado
    var arrayDate = strValue.split(strSeparator); //dividir en dia, mes y año
    //create a lookup for months not equal to Feb.
    var arrayLookup = { '01' : 31,'03' : 31, '04' : 30,'05' : 31,'06' : 30,'07' : 31,
                        '08' : 31,'09' : 30,'10' : 31,'11' : 30,'12' : 31}

	  var intDay = arrayDate[0];
    //checar el mes y dia 
    if(arrayLookup[arrayDate[1]] != null) {
      if(intDay <= arrayLookup[arrayDate[1]] && intDay != 0)
        return true; //es una fecha correcta
    }

    //Febrero se maneja como un caso especial considerando años bisiestos
    var intYear = parseInt(arrayDate[2]);
    var intMonth = parseInt(arrayDate[1]);
    if( ((intYear % 4 == 0 && intDay <= 29) || (intYear % 4 != 0 && intDay <=28)) && intDay !=0 && intMonth == 2)
      return true; //Feb. had valid number of days
  }
  return false; //si no se cumplen la condiciones es una fecha incorrecta
}

// formato de numeros a moneda con javascript
// funcion tomada de http://www.tufuncion.com/funciones-javascript
// su uso es:
// var test1 = formatNumber('5123456789.25'); // devuelve 5,123,456,789.25
// var test2 = formatNumber(1234.15,'$'); // devuelve $1,234.15
// var test3 = unformatNumber('$1,234.15'); // devuelve 1234.15 
function formatNumber(num,prefix){
	prefix = prefix || '';
	num += '';
	var splitStr = num.split('.');
	var splitLeft = splitStr[0];
	var splitRight = splitStr.length > 1 ? '.' + splitStr[1] : '';
	var regx = /(\d+)(\d{3})/;
	while (regx.test(splitLeft)) {
		splitLeft = splitLeft.replace(regx, '$1' + ',' + '$2');
	}
	return prefix + splitLeft + splitRight;
}

function unformatNumber(num) {
return num.replace(/([^0-9\.\-])/g,'')*1;
} 


//otra de formateo de numeros a moneda
function formatCurrency(num) {
	num = num.toString().replace(/\$|\,/g,'');
	if(isNaN(num)) num = "0";
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	cents = num%100;
	num = Math.floor(num/100).toString();
	if(cents<10) cents = "0" + cents;
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
	num = num.substring(0,num.length-(4*i+3))+
	num.substring(num.length-(4*i+3));
			
	return (((sign)?'':'-') + num + '.' + cents);
}
