// JavaScript Document
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function getObject( name ) {

	var obj = document.getElementsByName( name );

	if( !obj[0] ) {
		
		alert('No se encuentra el objeto \'' + name + '\' \n\n function getObject( \'' + name + '\' ) ');
		
		return false;
	
	} else {

		return obj[0];
	
	}

}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function getNombreMostrar( name, _pref ) {

    var name_mostrar = name.replace( _pref, '' );
		name_mostrar = name_mostrar.split( '_' );

	for( var i = 0; i < name_mostrar.length; i++)
		name_mostrar[ i ] = name_mostrar[ i ].replace( name_mostrar[ i ].charAt(0), name_mostrar[ i ].charAt(0).toUpperCase() );

	return name_mostrar.join(' ')

}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function vConfirmacion( name0, name1, _pref ) {

	var obj0          = getObject( name0 );
	var obj1          = getObject( name1 );

	var name_mostrar  = getNombreMostrar( name0, _pref );

	if( obj0.value != obj1.value ) {

		alert('No coincide la confirmacion del campo \'' + name_mostrar + '\'');
		return false;

	} else
		return true;

}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function vRadio( name, _pref ) {

	var obj          = document.getElementsByName( name );
	var name_mostrar = getNombreMostrar( name, _pref ) ;

	for( var i = 0; i < obj.length; i++ )
		if( obj[ i ].checked )
			return true;

	alert('Debe seleccionar una opción de \'' + name_mostrar  + '\'');

	return false;
	
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function vEmail( name, obligado, _pref) {

	var obj          = getObject( name );
	var name_mostrar = getNombreMostrar( name, _pref );
	
	flag = true;
	caracteres = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-.0123456789@';
	
	if(obligado != 'no' || obj.value != '') {

		for(var i = 0; i < obj.value.length; i++ ) {

			ubicacion = obj.value.substring(i, i + 1);

			if(caracteres.indexOf(ubicacion) == -1) {

				alert("No se acepta el caracter '" + ubicacion + "' en el '"+name_mostrar+"''!!!");	
				obj.focus();
				flag = false;

				return false;

				break;

			}
	}
	
	//Para formato xx@xxx.xx xxx....

	if(flag == true)
		if(obj.value.length < 10) {

			alert("El '"+name_mostrar+"' es demasiado corto para ser correcto!!!");
			obj.focus();
			flag = false;

			return false;
		}
		
	// Checa q exista solo 1 @
	if(flag == true) {

		for(var i = 0, cont = 0; i < obj.value.length; i++ ) {

			caracter = obj.value.substring(i, i + 1);

			if(caracter == '@')
				cont++;
		
		}

		if(cont != 1) {

			if(cont > 1)
				alert("Solo debe de existir una '@' en el campo '"+name_mostrar+"'!!!");
			else
				alert("Debe de existir '@' en el campo '"+name_mostrar+"'!!!");

			flag = false;
			obj.focus();

			return false

		}

	}
	
	// Checa que la arroba este antes de 3 caracteres: xxx@
	if(flag == true)
		if(obj.value.indexOf('@') < 3) {

			alert("Al parecer el campo '"+name_mostrar+"' es incorrecto, debido a que deben ir 3 caracteres antes del '@'!!!");
			flag = false;
			obj.focus();

			return false;

		}
		
	if(flag == true)
		if(obj.value.indexOf('@') < 3) {

			alert("Al parecer el campo '"+name_mostrar+"' es incorrecto, debido a que deben ir al menos tres caracteres antes del '@'!!!");
			flag = false;
			obj.focus();

			return false;

		}

	pos_arroba = obj.value.indexOf('@');
	dominio = obj.value.substring(pos_arroba+1, obj.value.length);
	arreglo_extenciones = new Array('.co','.com','.net','.org','.info','.biz','.tv','.us','.cc','.name','.bz','.uk','.de','.be','.nz','.at','.ws');


	if(flag == true) {

		for(i=0,cont=0; i < arreglo_extenciones.length; i++) {

			if(dominio.indexOf(arreglo_extenciones[i]) != -1) {

				cont++;
				extencion = arreglo_extenciones[i];

			}

		}

		if(cont == 0) {

			alert("Al parecer el campo '"+name_mostrar+"' es incorrecto, debido a que debe llevar una extención válida (.com, .net, etc.)!!!");
			flag = false;
			obj.focus();

			return false;

		}

	}

	if(flag == true) 
		if(dominio.indexOf(extencion) < 3) {

			alert("Al parecer el campo '"+name_mostrar+"' es incorrecto, debido a que deben ir tres caracteres entre el '@' y la extención '"+extencion+"'!!!");
			flag = false;
			obj.focus();

			return false;

	}

	return true;

  } else
  	return true;

}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function vSelect( name, cadena_comparacion, _pref) {

	var obj = getObject( name );
	var name_mostrar = getNombreMostrar( name, _pref );

	if( obj.options[ obj.selectedIndex ].value == cadena_comparacion ) {
	   alert( "Debe seleccionar una opción de la lista '" + name_mostrar + "'!!!" );
	   obj.focus();

	   return false;

	} else 
		return true;

}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function vTxt( name, Min, Max, modo_n, modo_ce, obligado, _pref ) {

	var obj = getObject( name );
	var name_mostrar = getNombreMostrar( name, _pref );

	flag = true;

	/* Verifica si el minimo/maximo es 1 para el alert */
	text_final1 = (Min == 1) ? ' caracter!!!' : ' caracteres!!!';
	text_final2 = (Max == 1) ? ' caracter!!!' : ' caracteres!!!';

	if(obligado != 'no' || obj.value != '') {
		/* Verifica el minimo de caracteres */
		if(obj.value.length < Min) {
			alert("El campo '"+name_mostrar+"' debe contener al menos " + Min + text_final1);
			obj.focus();
			flag = false;
			return false;
		}
		/* Verifica el maximo (*si es 0 no tiene limite de caracteres) */
		if(flag == true)
			if(Max != 0)
				if(obj.value.length > Max) {
					alert("El campo '"+name_mostrar+"' debe contener máximo " + Max + text_final2);
					obj.focus();
					flag = false;
					return false;
				}
		/* Verifica que no contenga números */
		if(flag == true)
		if(modo_n == 'sinN')
			if(!isNaN(obj.value) && obj.value != '') {
				alert("El campo '" + name_mostrar + "' no debe contener números!!!");
				obj.focus();
				flag = false;
				return false;
			}
		/* Verifica que solo contenga los siguientes caracteres */
			/* Verifica que si puede tener números puede llevar . y los 10 digitos */
		if(modo_n == 'sinN')
		caracteres = "abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ áéíóúÁÉÍÓÚ";
		else
		caracteres = "abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ áéíóúÁÉÍÓÚ.0123456789-";
		
		if(flag == true)
		if(modo_ce == 'sinCE')
			for(i=0; i < obj.value.length; i++) {

				ubicacion = obj.value.substring(i, i + 1);

				if(caracteres.indexOf(ubicacion) == -1) {

					alert("No se acepta el caracter '" + ubicacion + "' en el campo '" + name_mostrar + "'!!!");	
					obj.focus();
					//obj.select();
					flag = false;
					return false;
					break;

				}

			}
			
		return true;

	} else
		return true;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function vNum( name, Min, Max, modo_num, obligado, _pref ) {

	var obj = getObject( name );
	var name_mostrar = getNombreMostrar( name, _pref );

	flag = true;

	/* Verifica si el minimo/maximo es 1 para el alert */
	text_final1 = (Min == 1) ? ' dígito!!!' : ' dígitos!!!';
	text_final2 = (Max == 1) ? ' dígito!!!' : ' dígitos!!!';

	if(obligado != 'no' || obj.value != '') {
		/* Verifica el minimo de digitos */
		if(obj.value.length < Min) {
			alert("El campo '"+name_mostrar+"' debe ser un número que contenga al menos " + Min + text_final1);
			obj.focus();
			flag = false;
			return false;
		}
		/* Verifica mayor a 0 */
		/*if(obj.value <= 0) {
			alert("El campo '"+name_mostrar+"' debe ser mayor a cero!!!");
			obj.focus();
			flag = false;
			return false;
		}*/
		/* Verifica el maximo (*si es 0 no tiene limite de caracteres) */
		if(flag == true)
			if(Max != 0)
				if(obj.value.length > Max) { 
					alert("El campo '"+name_mostrar+"' debe ser un número que contenga máximo " + Max + text_final2);
					obj.focus();
					flag = false;
					return false;
				}
		
		/* Verifica que sea numero entero o decimal */
		if(flag == true)
			if(isNaN(obj.value)) {
				alert("El campo '"+name_mostrar+"' debe ser numérico!!!");
				obj.focus();
				flag = false;
				return false;
			}
		
		/* Verifica que sea numero entero*/
		caracteres = '.';
		if(flag == true) {
			
			if(modo_num == 'int') {
			
				for(i=0; i < obj.value.length; i++) {
				
					var ubicacion = obj.value.substring(i, i + 1);
					
					if(caracteres.indexOf(ubicacion) != -1) {
						alert("No se aceptan números decimales en el campo '" + name_mostrar + "'!!!");
						obj.focus();
						return false;
						break;
					}

				}

			}
				
		}
		
		return true;
	} else return true;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function vFechas( name0, name1, _pref ) {

	var obj0 = getObject( name0 );
	var obj1 = getObject( name1 );

	var name_mostrar0 = getNombreMostrar( name0, _pref );
	var name_mostrar1 = getNombreMostrar( name1, _pref );

	if(obj0.value != '' && obj1.value != ''){
		
		fecha_separada1 = obj0.value.split('-');
		fecha_separada2 = obj1.value.split('-');

		switch( fecha_separada1[1] ) {
			
			case 'Ene' : fecha_separada1[1] = '01'; break;
			case 'Feb' : fecha_separada1[1] = '02'; break;
			case 'Mar' : fecha_separada1[1] = '03'; break;
			case 'Abr' : fecha_separada1[1] = '04'; break;
			case 'May' : fecha_separada1[1] = '05'; break;
			case 'Jun' : fecha_separada1[1] = '06'; break;
			case 'Jul' : fecha_separada1[1] = '07'; break;
			case 'Ago' : fecha_separada1[1] = '08'; break;
			case 'Sep' : fecha_separada1[1] = '09'; break;
			case 'Oct' : fecha_separada1[1] = '10'; break;
			case 'Nov' : fecha_separada1[1] = '11'; break;
			case 'Dic' : fecha_separada1[1] = '12'; break;
			
		}

		switch( fecha_separada2[1] ) {
			
			case 'Ene' : fecha_separada2[1] = '01'; break;
			case 'Feb' : fecha_separada2[1] = '02'; break;
			case 'Mar' : fecha_separada2[1] = '03'; break;
			case 'Abr' : fecha_separada2[1] = '04'; break;
			case 'May' : fecha_separada2[1] = '05'; break;
			case 'Jun' : fecha_separada2[1] = '06'; break;
			case 'Jul' : fecha_separada2[1] = '07'; break;
			case 'Ago' : fecha_separada2[1] = '08'; break;
			case 'Sep' : fecha_separada2[1] = '09'; break;
			case 'Oct' : fecha_separada2[1] = '10'; break;
			case 'Nov' : fecha_separada2[1] = '11'; break;
			case 'Dic' : fecha_separada2[1] = '12'; break;
			
		}

			if( parseInt( fecha_separada1[ 2 ] + fecha_separada1[ 1 ] + fecha_separada1[ 0 ] ) >= parseInt( fecha_separada2[ 2 ] + fecha_separada2[ 1 ] + fecha_separada2[ 0 ] ) ) {

					alert( "La fecha del campo '" + name_mostrar1 + "' debe ser mayor a '" + name_mostrar0 + "' !!!");
					return false;

			} else
				return true;

		} else if( obj0.value == '' && obj1.value != '' ) {

			alert ("Debe seleccionar una fecha en el campo '" + name_mostrar0 + "' !!!" );
			return false;

		} else if(obj0.value != '' && obj1.value == '') {

			alert ("Debe seleccionar una fecha en el campo '" + name_mostrar1 + "' !!!" );
			return false;
		
		} else{
			
			alert ("Debe seleccionar una fecha en el campo '" + name_mostrar0 + "' y '" + name_mostrar1 + "'!!!" );
			return false;
		
		}

}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function convierteFechaInt( fecha ) {

	fecha_separada = fecha.split('-');

		switch( fecha_separada[ 1 ] ) {
			
			case 'Ene' : fecha_separada[ 1 ] = '01'; break;
			case 'Feb' : fecha_separada[ 1 ] = '02'; break;
			case 'Mar' : fecha_separada[ 1 ] = '03'; break;
			case 'Abr' : fecha_separada[ 1 ] = '04'; break;
			case 'May' : fecha_separada[ 1 ] = '05'; break;
			case 'Jun' : fecha_separada[ 1 ] = '06'; break;
			case 'Jul' : fecha_separada[ 1 ] = '07'; break;
			case 'Ago' : fecha_separada[ 1 ] = '08'; break;
			case 'Sep' : fecha_separada[ 1 ] = '09'; break;
			case 'Oct' : fecha_separada[ 1 ] = '10'; break;
			case 'Nov' : fecha_separada[ 1 ] = '11'; break;
			case 'Dic' : fecha_separada[ 1 ] = '12'; break;

		}
	
	return fecha_separada[ 2 ] + fecha_separada[ 1 ] + fecha_separada[ 0 ];

}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function vArchivo( name, mimes, obligado ) {
	
	var obj = getObject( name );

	var flag = true;
	
	if( obligado != 'no' || obj.value != '' ) {
		
		if( obj.value == '' ) {
			
			alert('Debe de ingresar la ruta del archivo!!!');
			obj.focus();
			flag = false;
			return false;

		}
		//C:\x.jpg
		
		if(flag == true)
			if(obj.value.length < 8) {
				alert('El nombre del archivo es demasiado corto pasa ser correcto!!!');
				obj.focus();
				flag = false;
				return false;
			}
		if(flag == true)
			if(obj.value.indexOf('.') == -1) {

				alert('Al parecer el nombre del archivo no contiene una extencion!!!');
				obj.focus();
				flag = false;
				return false;

			}
		
		if(flag == true) {

			ver = obj.value.substr(obj.value.length-5,obj.value.length).toLowerCase();
			ver = ver.split('.');
			
		switch( mimes ) {

				case 'formato_pago' :
				case 'lunamielero'  :
				case 'banner'       :
				case 'imagen'       : tipo_mime = mimes;
								      mimes = new Array('jpg');

								for(cont = 0,cont_flag = 0,mensaje_mimes = ''; cont < mimes.length; cont++)
									if(ver[1] != mimes[cont]) {
										
										mensaje_mimes += '*.'+mimes[cont]+'\n';
										cont_flag++;
										
									}
									
								if(cont_flag == mimes.length) {
									
									alert('Los tipos de archivos validos para ' + tipo_mime + ' son:\n\n'+mensaje_mimes);
									obj.focus();
									return false;
									
								} else
									return true;
				
							break;

				default		  : if(ver[1].length < 2 ) {
					
									alert('La extencion del nombre del archivo es menos de 2 caracteres y parece ser no correcta!!!');
									obj.focus();
									return false;

								} else								
								if(ver[1].length > 3 ) {
									
									alert('La extencion del nombre del archivo es de mas de 3 caracteres y parece ser no correcta!!!');
									obj.focus();
									return false;
									
								} else
									return true;
				
							break;
				
			}
	
		}
		
	} else return true;
	
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////