function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}


var _actualizar_pagina = false;

/*
*	Nombre: Miscelanea.js
*	Descripción: Funciones genericas y basicas para la Validacion de los Formularios
*	Autor: Jhoan Alejandro García Trujillo
*	E-mail: jhoalejandro@gmail.com
*	Fecha de Creación: 14-08-2006
*	Fecha de Última Modificación: 31-08-2006
*/


/*	********************	VALIDAR NULO	************************	*/

/*
*	Utilidad:
*		Se encarga de validar si el texto ingresado por el Usuario es vacío o nulo
*	Párametros:
*		email -> Texto digitado por el Usuario
*	Valores de retorno:
*		true, si el texto no es vacío o nulo
*		false, de lo contrario
*/

function validarNulo(valor)
{
	if(valor==null || valor=='' || valor=='null')
	{
		return false;
	}
	return true;
}	


/*	********************	VALIDAR MAIL	************************	*/

/*
*	Utilidad:
*		Se encarga de validar si el texto ingresado representa una Dirección de Correo Electrónico
*	Párametros:
*		email -> Texto que representa la Dirección de Correo Electrónico digitada por el Usuario
*	Valores de retorno:
*		true, si el texto digitado por el Usuario representa una Dirección de Correo Electrónico
*		false, de lo contrario
*/

function validarMail(email) 
{	
	var token = /^[a-z-0-9][a-z-_0-9\.]+@[a-z-_=>0-9\.]+\.[a-z]{2,3}$/
    return token.test(email);
}


/*	********************	VALIDAR NÚMERO	************************	*/

/*
*	Utilidad:
*		Se encarga de validar si el texto ingresado representa un Número
*	Párametros:
*		valor -> Texto que representa el Número digitado por el Usuario
*	Valores de retorno:
*		true, si el texto digitado por el Usuario representa un Número
*		false, de lo contrario
*/

function validarNumero(valor)
{
	if(isNaN(valor))
	{
		return false;
	}
	else
	{
		return true;
	}
}


/*	********************	VALIDAR NÚMERO ENTERO	************************	*/

/*
*	Utilidad:
*		Se encarga de validar si el texto ingresado representa un Número Entero
*	Párametros:
*		valor -> Texto que representa el Número Entero digitado por el Usuario
*	Valores de retorno:
*		true, si el texto digitado por el Usuario representa un Número Entero
*		false, de lo contrario
*/

function validarNumeroEntero(valor)
{
	var token = /^\d+$/;
	return token.test(valor);
}


/*	*************************	VALIDAR TAMAÑO	*********************************	*/

/*
*	Utilidad:
*		Se encarga de validar que la entrada tenga cierto tamaño definido
*	Párametros:
*		valor -> Valor de la Variable a la cual se le quiere verificar su Tamaño
*		num_caracteres_minimo -> Número mínimo de caracteres que debe contener la Variable
*		num_caracteres_maximo -> Número máximo de caracteres que debe contener la Variable
*	Valores de retorno:
*		true, Si el valor de la Variable cumple con el Tamaño especificado
*		false, de lo contrario
*/

function validarTamanho(valor, num_caracteres_minimo, num_caracteres_maximo)
{
	var tamanho= valor.length;
	if(tamanho>=num_caracteres_minimo && (num_caracteres_maximo==null || tamanho<=num_caracteres_maximo))
	{
		return true;
	}
	return false;
}//Fin validarTamanho()	


/*	********************	VALIDAR FECHA	************************	*/

/*
*	Utilidad:
*		Se encarga de validar si el texto ingresado representa una Fecha en el formato YYYY-MM-DD
*	Párametros:
*		fecha -> Texto que representa la Fecha digitada por el Usuario
*	Valores de retorno:
*		true, si el texto digitado por el Usuario representa una Fecha en el formato YYYY-MM-DD
*		false, de lo contrario
*/

function validarFecha(fecha)
{
	var token = /^\d{4}(-\d{1,2}){1,2}$/;
	return token.test(fecha);
}

/*	*****************************	VALIDAR FECHA ACTUAL	***********************************	*/
/*
*	Utilidad:
*		Se encarga de validar si la fecha ingresada (aaaa-dd-mm)
*	Párametros:
*		fecha -> string con la fecha a validar
*	Valores de retorno:
*		true, la fecha ingresada es mayor a la actual
*		false, de lo contrario
*/

function validarFechaActual(fecha)
{
	var fecha_actual = new Date();
	var fecha_actual_conversion =fecha_actual.getFullYear()+"-"+fecha_actual.getDate()+"-"+(fecha_actual.getMonth() + 1);
	return validarRangoFechas(fecha, fecha_actual_conversion);
	
}//!validarFechaActual(fecha)

/*	********************	VALIDAR TIPO ARCHIVO	************************	*/

/*
*	Utilidad:
*		Se encarga de validar si el Archivo seleccionado es del Tipo de Archivo esperado
*	Párametros:
*		archivo -> Texto que representa la ruta del Archivo seleccionado
*		tipo_archivo -> Extensión del Tipo de Archivo esperado
*	Valores de retorno:
*		true, si el Archivo seleccionado es del Tipo de Archivo esperado
*		false, de lo contrario
*/

function validarTipoArchivo(archivo, tipo_archivo)
{
	var partes_nombre_archivo = archivo.split(".");
	var extension_archivo = partes_nombre_archivo[partes_nombre_archivo.length-1].toLowerCase();
	if(extension_archivo == tipo_archivo)
	{
		return true;
	}
	else
	{
		return false;
	}
}


/*	********************	VALIDAR IMAGEN	************************	*/

/*
*	Utilidad:
*		Se encarga de validar si el Archivo seleccionado es una Imagen GIF, PNG, JPG o JPEG
*	Párametros:
*		archivo -> Texto que representa la ruta del Archivo seleccionado
*	Valores de retorno:
*		true, si el Archivo seleccionado es una Imagen GIF, PNG, JPG o JPEG
*		false, de lo contrario
*/

function validarImagen(archivo)
{
	if(validarTipoArchivo(archivo, "gif") || validarTipoArchivo(archivo, "png") || validarTipoArchivo(archivo, "jpg") || validarTipoArchivo(archivo, "jpeg"))
	{
		return true;
	}
	else
	{
		return false;
	}
}



/*	********************	VALIDAR RANGO FECHAS	************************	*/

/*
*	Utilidad:
*		Se encarga de validar el rango entre dos Fechas dadas
*	Párametros:
*		fecha_inicial -> Límite Inferior del Rango
*		fecha_final -> Límite Superior del Rango
*	Valores de retorno:
*		true, si el Límite Superior del Rango es mayor o igual al Límite Inferior
*		false, de lo contrario
*/

function validarRangoFechas(fecha_inicial, fecha_final)
{
	fecha_inicial_ansi = parseInt(formatoANSIFechas(fecha_inicial));
	fecha_final_ansi = parseInt(formatoANSIFechas(fecha_final));
	return fecha_inicial_ansi <= fecha_final_ansi;
}

function formatoANSIFechas(fecha_amd)
{
	var array_fecha = fecha_amd.split("-");
	
	if(parseInt(array_fecha[1]) < 10)
	{
		array_fecha[1] = '0' + parseInt(array_fecha[1],10);
	}
	if(parseInt(array_fecha[2]) < 10)
	{
		array_fecha[2] = '0' + parseInt(array_fecha[2],10);
	}
	return array_fecha[0] + array_fecha[1] + array_fecha[2];
}


/*	*******************	DESPLEGAR RESULTADO VALIDACIÓN	************************	*/

/*
*	Utilidad:
*		Se encarga de desplegar un alert al usuario con el valor del string error
*	Párametros:
*		error -> Texto con el mensaje construido con los errores que se presentaron en un Formulario determinado
*	Valores de retorno:
*		true, si no se presentó ningún error
*		false, de lo contrario. Además presentará en pantalla los errores que se presentaron
*/


function desplegarResultadoValidacion(error)
{
	if (error != "")
	{
		alert(error);
		return false;
	}
	else
	{
		return true;
	}
}


/*	******************************	CONFIRMAR ELIMINAR	*********************************	*/

/*
*	Utilidad:
*		Despliega una ventana de confirmación para una acción de eliminación
*	Párametros:
*	Valores de retorno:
*		true, si el Usuario elige la opción SI o YES
*		false, si el Usuario elige la opción NO
*/

function confirmarEliminar()
{
	respuesta = confirm ("¿ Desea eliminar el registro seleccionado ?");
	if (respuesta)
	{
		return true;
	}
	else
	{
		return false;
	}
}


function abrirPopUp (url, nombre, ancho, alto, x, y)
{
	var caracteristicas_ventana = "";
	caracteristicas_ventana += "dependent";
	caracteristicas_ventana += ",directories=no";
	caracteristicas_ventana += ",height="+alto;
	caracteristicas_ventana += ",hotkeys=no";
	//caracteristicas_ventana += ",innerHeight";
	//caracteristicas_ventana += ",innerWidth";
	caracteristicas_ventana += ",location=no";
	caracteristicas_ventana += ",menubar=no";
	//caracteristicas_ventana += ",outerHeight";
	caracteristicas_ventana += ",personalbar=no";
	caracteristicas_ventana += ",resizable=yes";
	caracteristicas_ventana += ",screenX=0";
	caracteristicas_ventana += ",screenY=0";
	caracteristicas_ventana += ",scrollbars=yes";
	caracteristicas_ventana += ",status=no";
	caracteristicas_ventana += ",titlebar=no";
	caracteristicas_ventana += ",toolbar=no";
	caracteristicas_ventana += ",width="+ancho;
	caracteristicas_ventana += ",z-lock=yes";
	caracteristicas_ventana += ",left="+x;
	caracteristicas_ventana += ",top="+y;
	window.open(url,nombre,caracteristicas_ventana);
	
	// return ventana;
}//Fin abrirPopUp()


function transformarFecha($fecha)
{
	$arreglo_fecha=fecha.split('-');
	/*if($arreglo_fecha[1].length==1)
	{
		$arreglo_fecha[1]='0'+$arreglo_fecha[1];
	}
	if($arreglo_fecha[2].length==1)
	{
		$arreglo_fecha[2]='0'+$arreglo_fecha[2];
	}*/
	return new Date($arreglo_fecha[0],$arreglo_fecha[2]-1,$arreglo_fecha[1]);

}//Fin transformarFecha()

