function ventana( url,ancho,alto) {
//*************************************************
//Funcion que realiza un new window, recibiendo
//como parametro el url
//*************************************************
	var parametros = 'toolbar=no,status=0,scrollbars=0,resizable=0,location=0,menubar=0,status=0';
	var cuadro;
	parametros += ',left=0,top=0,height=' + alto + ',width=' + ancho;
	cuadro = window.open("","exterior",parametros);
	cuadro.location.href = url;
	return true;
}

function ventana1( url,ancho,alto,res) {
//*************************************************
//Funcion que realiza un new window, recibiendo
//como parametro el url
//*************************************************
	var parametros = 'toolbar=no,status=0,scrollbars=0,resizable='+res+',location=0,menubar=0,status=0';
	var cuadro;
	parametros += ',left=0,top=0,height=' + alto + ',width=' + ancho;
	cuadro = window.open("","exterior",parametros);
	cuadro.location.href = url;
	return true;
}

function ventana_centro( url,ancho,alto,izq,tope) {
//*************************************************
//Funcion que realiza un new window, recibiendo
//como parametro el url, alto, ancho y para centrar
//*************************************************
	var parametros = 'toolbar=no,status=0,scrollbars=0,resizable=0,location=0,menubar=0,status=0';
	var cuadro;
	parametros += ',left=' + izq + ',top=' + tope + ',height=' + alto + ',width=' + ancho;
	cuadro = window.open(url,"exterior",parametros);
	return true;
}

function Trim( field ) {
//*************************************************
//Elimina los espacios en blanco
//*************************************************	
	field = field.value
	return field.replace( /^\s+/g,'').replace(/\s+$/g,'')
}

function Empty( field ) {
//*************************************************
//Verifica si un campo está vacío
//*************************************************	
	field = Trim(field)
	if (field.length == 0 || field == null) 
		return true;
	else
		return false;
}

function validar_extension(element,extensiones) {
//*************************************************
//Verifica la extension de un campo Type="file",
//recibe como parametro el campo y un arreglo con
//las extensiones permitidas.
//*************************************************	
	if ( !(Empty(element)) ) {
		var extension = element.value.split(".");
		var num = extension.length-1;
		var valido = false;
		var ext = extension[num].toLowerCase();
		for (i=0; i<extensiones.length; i++) {
			if ( extensiones[i] == ext ) {
				valido = true;
				break;
			}
		}
		if( !valido ) {
			alert("El archivo posee una extensión no válida.\nLas extensiones permitidas son: "+extensiones);
			element.select();
			element.createTextRange().execCommand('delete');
			element.focus();
			return false;
		}
		return true;
	}
}

function Multiple(forma,elem) {
	if ( forma[elem].options[0].selected ) {
		for (i=1; i<forma[elem].length; i++){
			forma[elem].options[i].selected=false;
		}	
	}
	else {
		if ( forma[elem].options[forma[elem].length-1].selected ) {
			for (i=1; i<(forma[elem].length-1); i++){
				forma[elem].options[i].selected=true;
			}
			forma[elem].options[forma[elem].length-1].selected=false;	
		}
	}
}

function validaemail(valor, elem, forma) {
//*********************************************
// Permite validar el email. Recibe como parametros el valor 
// el nombre del input que contiene el valor, y el nombre del formulario
//*********************************************
	//expresion regular
	var b=/^[^@\s]+@[^@\.\s]+(\.[^@\.\s]+)+$/     
	if ( (valor!= '') && !(b.test(valor)) ){
		alert("El Email no es válido.");
		forma[elem].value='';
		forma[elem].focus();
		forma[elem].select();
		return false;
	}
}

function valida_long_pass(password,long_min_pass) {
//*********************************************
// Impide que el usuario introduzca un password
// de longitud menor que long_min_pass 
//*********************************************
	if ( password.length < long_min_pass) {
		alert("La longitud del password debe ser mayor que "+(long_min_pass-1));
		return false;
	}
	else 
		return true;
}

function enviar( formulario ) {
//***************************************************************************************
//	Verifica si los campos obligatorios de un formulario están vacíos. Si todo esta bien*
//	envia el formulario. Recibe como parametro la forma.								*
//***************************************************************************************
	if ( validarvacios(formulario) ) {
		formulario.submit();
	} 
	else {
		return false;
	}
}

function validarvacios( formValidar ) {
//***********************************************************************************	
//	Verifica si los campos obligatorios de un formulario están vacíos. Los campos 	*
//	obligatorios son aquellos que tienen como nombre de variable 					*
//  lo siguiente name="r_nombre".													*
//***********************************************************************************	
	var cadena, nombre, longitud, num, genera;
	num=0;
	for (i=0;i<=formValidar.length-1;i++) {
		cadena = formValidar.elements[i].name.substring(0,2);
		if (cadena=='r_') {
			switch(formValidar.elements[i].type) {
			case 'text':
				if(isempty(formValidar.elements[i])) {
					longitud = formValidar.elements[i].name.length;
					nombre = 'img_' + formValidar.elements[i].name.substring(2,longitud);
					formValidar[nombre].src='../img/check.gif';
					num++;
				}
				else {
					longitud = formValidar.elements[i].name.length;
					nombre = 'img_' + formValidar.elements[i].name.substring(2,longitud);
					formValidar[nombre].src='../img/empty.gif';
				}
			break;
			case 'file':
				if(isempty(formValidar.elements[i])) {
					longitud = formValidar.elements[i].name.length;
					nombre = 'img_' + formValidar.elements[i].name.substring(2,longitud);
					formValidar[nombre].src='../img/check.gif';
					num++;
				}
				else {
					longitud = formValidar.elements[i].name.length;
					nombre = 'img_' + formValidar.elements[i].name.substring(2,longitud);
					formValidar[nombre].src='../img/empty.gif';
				}
			break;
			case 'password':
				if(isempty(formValidar.elements[i])) {
					longitud = formValidar.elements[i].name.length;
					nombre = 'img_' + formValidar.elements[i].name.substring(2,longitud);
					formValidar[nombre].src='../img/check.gif';
					num++;
				}
				else {
					longitud = formValidar.elements[i].name.length;
					nombre = 'img_' + formValidar.elements[i].name.substring(2,longitud);
					formValidar[nombre].src='../img/empty.gif';
				}
			break;
			case 'textarea':
				if(isempty(formValidar.elements[i]))	{
					longitud = formValidar.elements[i].name.length;
					nombre = 'img_' + formValidar.elements[i].name.substring(2,longitud);
					formValidar[nombre].src='../img/check.gif';
					num++;
				}
				else {
					longitud = formValidar.elements[i].name.length;
					nombre = 'img_' + formValidar.elements[i].name.substring(2,longitud);
					formValidar[nombre].src='../img/empty.gif';
				}
			break;
			case 'select-one':
				if(formValidar.elements[i].selectedIndex==0 || formValidar.elements[i].length==0) {
					longitud = formValidar.elements[i].name.length;
					nombre = 'img_' + formValidar.elements[i].name.substring(2,longitud);
					formValidar[nombre].src='../img/check.gif';
					num++;
				}
				else {
					longitud = formValidar.elements[i].name.length;
					nombre = 'img_' + formValidar.elements[i].name.substring(2,longitud);
					formValidar[nombre].src='../img/empty.gif';
				}
			break;
			case 'select-multiple':
				if(formValidar.elements[i].selectedIndex==-1) {
					longitud = formValidar.elements[i].name.length;
					nombre = 'img_' + formValidar.elements[i].name.substring(2,longitud);
					formValidar[nombre].src='../img/check.gif';
					num++;
				}
				else {
					longitud = formValidar.elements[i].name.length;
					nombre = 'img_' + formValidar.elements[i].name.substring(2,longitud);
					formValidar[nombre].src='../img/empty.gif';
				}
			break;
			case 'radio': //Revisar Funcion para validar radiob vacios
				longitud = formValidar[formValidar.elements[i].name].length;
				campo = false;
				for (j=i; j<(longitud + i); j++) {
       				if (formValidar.elements[j].checked) {
          				campo = true;
          				break;
      				}
    			}
    			i = i + (longitud-1);
    			if (!campo) {
					longitud = formValidar.elements[i].name.length;
					nombre = 'img_' + formValidar.elements[i].name.substring(2,longitud);
					formValidar[nombre].src='../img/check.gif';
					alert(nombre);
					alert(formValidar[nombre].src);
					num++;
				}
				else {
					longitud = formValidar.elements[i].name.length;
					nombre = 'img_' + formValidar.elements[i].name.substring(2,longitud);
					formValidar[nombre].src='../img/empty.gif';
				}
			break;
			}
		}
	}
	if ( num == 0 ) {
		return true;
	}
	else {
		alert ('Los campos marcados no pueden estar vacíos.');
		return false;
	}	
}
function FechaHora() {
	
	var dayarray=new Array("Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado")
	var montharray=new Array("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre")

	var mydate=new Date()
	var year=mydate.getYear()
	if (year < 1000)
		year+=1900
	var day=mydate.getDay()
	var month=mydate.getMonth()
	var daym=mydate.getDate()
	if (daym<10)
		daym="0"+daym 
	var hours=mydate.getHours()
	var minutes=mydate.getMinutes()
	if (minutes<=9) 
		minutes="0"+minutes
	//Cambiar formato de presentacion AQUI
	var cdate="<font size='1' color='#000000' face='Verdana'>&nbsp;"+dayarray[day]+", "+daym+" de "+montharray[month]+" de "+year+" - "+hours+":"+minutes+"</font>"
	if (document.all)
		document.all.clock.innerHTML=cdate
	else
		document.write(cdate)
}

function FechaHoraActualizada() {
	if (document.all)
		setInterval("FechaHora()",1000)
	else
		FechaHora()
}

function isempty( field ) {
//*************************************************
//	Verifica si un campo está vacío
//*************************************************
	if (field.value.length == 0 || field == null) 
		return true;
	else
		return false;
}

function isemail( v ) {
//***************************************************
//	Verifica si un campo email está bienm conformado
//***************************************************
	var reg  = /(^[a-z]([a-z_\.]*)@([a-z_\.]*)([.][a-z]{3})$)|(^[a-z]([a-z_\.]*)@([a-z_\.]*)(\.[a-z]{3})(\.[a-z]{2})*$)/i;
	return reg.test( v );
}

function isselected( field ) {
	if( field.selectedIndex == 0 ) {
		field.focus();
		return false;
	}
	return true;
}

function Entrar( url ) {
//*************************************************
//Funcion que realiza un new window, recibiendo
//como parametro el url
//*************************************************
		var parametros = 'scrollbars=0,resizable=0,location=0,menubar=0,status=0';
		parametros += ',left=0,top=0,width='+screen.width+',height='+screen.height;
		window.open(url,'',parametros);
		window.opener='';
		window.close();
}

function pass_iguales( forma ) {
//*************************************************
//Funcion que realiza una comparación entre 2 campos y devuelve
//true si son iguales, recibiendo como parametro los 2 campos a comparar
//*************************************************
	if (valida_long_pass(forma['r_PSW_CLI'].value,6)) {
		
		if ( forma['r_PSW_CLI'].value == forma['r_CPSW_CLI'].value ) 
			enviar(forma);
		else {
			alert('El password no es igual al confirmar password');
			forma['r_PSW_CLI'].value = '';
			forma['r_CPSW_CLI'].value = '';
			forma['r_PSW_CLI'].focus();
		}
	}
}

function agrega_item(forma,text,lista,elem) {
//*************************************************
//permite agregar un value de un input a una lista
//le paso la forma(forma), y el nombre
//del input(text), y el de la lista que recibe(lista).
//Elem es un input hidden el cual me indica cuales
//son los items que realmente voy a insertar en BD
//*************************************************
	if(!Empty(forma[text]))
	{
		//Verifico que el valor ya no exista en la lista
		for (i=0; i < forma[lista].length; i++) {
			//Busco separar los valores que tengan *_ o (id de la fecha)_
			//pero no todos tienen ese separador
			var tmp = forma[lista].options[i].value.split("_");
			//Verifico que el nuevo valor no exista en la lista.
			if ( (tmp[1] == forma[text].value) || (tmp[0] == forma[text].value) ) {
				alert("El item ya está seleccionado.");
				return false;
			}
				
		}
		forma[lista].options[forma[lista].options.length]=new Option(forma[text].value,forma[text].value);
		if ( Empty(forma[elem]) )
			forma[elem].value = forma[text].value;
		else
			forma[elem].value = forma[elem].value+","+forma[text].value;
		forma[text].value=""; 
	}
}

function eliminar_item(forma,lista,elem,elem2) {
//*************************************************
//Permite eliminar un item de una lista,
//le paso la forma(forma) y la lista(lista).
//Elem es el input hidden que me dice que elementos
//voy a insertar en la BD y Elem2 es un input hidden
//que me dice cuales elementos voy a eliminar de la BD.
//*************************************************
	if ( forma[lista].selectedIndex >= 0 ) {
		var tmp = forma[lista].options[forma[lista].selectedIndex].value.split("_");
		forma[lista].options[forma[lista].selectedIndex] = null;
		if ( tmp.length > 1 ) {
			if ( Empty(forma[elem]) ) 
				forma[elem].value = tmp[0];
			else
				forma[elem].value = forma[elem].value+","+tmp[0]; 
		}
		else{
			items_a_enviar(forma,lista,elem2);
		}
	}
}

function items_a_enviar(forma,lista,elem){
	forma[elem].value="";	
	for (i=0; i < forma[lista].length; i++) {
		var tmp = forma[lista].options[i].value.split("_");
		if ( tmp.length == 1 ) {
			if ( Empty(forma[elem]) )
				forma[elem].value = tmp[0];
			else
				forma[elem].value = forma[elem].value+","+tmp[0]; 
		}
	}	
}

function verifica_fecha(forma,elem,fecha,mod) { 
//*************************************************
//Esta funcion controla que la fecha insertada sea 
//menor o mayor a la actual, segun el valor que le pasemos
//en mod. Ademas recibe la forma y el campo de la fecha
//*************************************************
	hoy=new Date();
	var meses = new Array("Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Nov","Dic");
	var array_fecha = fecha.split("/");
	var ano;
	var anoA;
    ano = parseInt(array_fecha[2],10); 
	anoA = parseInt(hoy.getYear(),10); 
    var mes;
    var mesA;
    for (i=0; i<12; i++)
    	if ( meses[i]==array_fecha[0] )
    		break;
    mes = i+1;
	mesA = parseInt(hoy.getMonth(),10) + 1;
    var dia;
	var diaA;
    dia = parseInt(array_fecha[1],10);
	diaA = parseInt(hoy.getDate(),10);
	var valido = false;
	switch( mod ){
	case 0: //Para validar que una fecha dada no sea mayor a la actual
		if(ano > anoA)
			valido = true;
		else
			if(ano == anoA) {
				if(mes > mesA)
					valido = true;
				else
					if(mes == mesA)
						if(dia > diaA)
							valido = true;
			}
	break;
	case 1: //Para validar que una fecha dada no sea menor a la actual
		if(ano < anoA)
			valido = true;
		else
			if(ano == anoA) {
				if(mes < mesA)
					valido = true;
				else
					if(mes == mesA)
						if(dia < diaA)
							valido = true;
			}
	break;
	}
	
	if ( valido ) {
		if ( mod==0 )
			alert("La fecha debe ser menor o igual a la actual");
		else
			alert("La fecha debe ser mayor o igual a la actual");
		forma[elem].value="";
		return false;
	}
	return true;
}

function agrega_tr(forma,elem,accion) {
	forma[elem].value = parseInt(forma[elem].value) + 1;
	forma.action = accion;
	forma.submit();
}

function eliminar_tr(forma,elem,arch) {
	forma[elem].value = parseInt(forma[elem].value) - 1;
	forma.action = arch;
	forma.submit();
}

function justnumber(forma, cadena) {
//*************************************************
//Sólo permite la entrada de datos numéricos
//le paso el nombre de la forma(forma), y el nombre
//del textbox(cadena)
//*************************************************
	if(!Empty(forma[cadena])) {
		if(forma[cadena].value==0) {
			alert('Introduzca un número diferente de cero en este campo.');
			forma[cadena].value='';
			forma[cadena].focus();
			forma[cadena].select();
			return(false);
		}
		if (((forma[cadena].value / forma[cadena].value) != 1)) {
			alert('Introduzca sólo números en este campo.');
			forma[cadena].value='';
			forma[cadena].focus();
			forma[cadena].select(); 	 
			return(false);
		}
		else {
			return(true);
		}
	}
	else {
		return(true);
	}
}

function showWOTD(val) {
//*************************************************
//Función que permite mostrar un layer
//*************************************************
        
	eval("divWOTD"+val+".style.visibility = 'visible'");
	eval("divtit"+val+".style.visibility = 'hidden'");
}

function hideWOTD(val) {
//*************************************************
//Función que permite ocultar un layer
//*************************************************
        	
	eval("divWOTD"+val+".style.visibility = 'hidden'");
	eval("divtit"+val+".style.visibility = 'visible'");
}

//*************************************************
// Funcion el color que hay que aplicar
// a la fila de una tabla
//*************************************************
function def_color_fila(cont) {
	r =  cont % 2;
	if (r==0) {
		color= "fila1";
	}
	if (r==1) {
		color="fila2";
	}
	return color;
 
}	
/******************************************/	
function verifica_fecha2(forma,elem,fecha,mod,fecha2) {
//*************************************************
//Esta funcion controla que la primera fecha insertada sea 
//menor o mayor a la segunda fecha insertada, 
//segun el valor que le pasemos en mod. 
//Ademas recibe la forma y el campo de la fecha
//*************************************************
	var meses = new Array("Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Nov","Dic");
	var array_fecha = fecha.split("/");
	var array_fecha2 = fecha2.split("/");
	var ano;
	var anoA;
    ano = parseInt(array_fecha[2],10); 
	anoA = parseInt(array_fecha2[2],10); 
    var mes;
    var mesA;
    for (i=0; i<12; i++)
    	if ( meses[i]==array_fecha[0] )
    		break;
    mes = i+1;
     for (i=0; i<12; i++)
    	if ( meses[i]==array_fecha2[0] )
    		break;
    mesA = i+1;
	//mesA = parseInt(array_fecha2[0],10) + 1;
	var dia;
	var diaA;
    dia = parseInt(array_fecha[1],10);
	diaA = parseInt(array_fecha2[1],10);
	var valido = false;
	switch( mod ){
	case 0: //Para validar que una fecha dada no sea mayor a la actual
	if(ano > anoA)
			valido = true;
		else
			if(ano == anoA) {
				if(mes > mesA)
					valido = true;
				else
					if(mes == mesA)
						if(dia > diaA)
							valido = true;
			}
	break;
	case 1: //Para validar que una fecha dada no sea menor a la actual
		if(ano < anoA)
			valido = true;
		else
			if(ano == anoA) {
				if(mes < mesA)
					valido = true;
				else
					if(mes == mesA)
						if(dia < diaA)
							valido = true;
			}
	break;
	}
	 
	if ( valido ) {
		if ( mod==0 )
			alert("La fecha debe ser mayor o igual a la actual");
		else
			alert("La fecha debe ser mayor o igual a "+fecha2);
		forma[elem].value="";
		return false;
	}
	return true;
}

function windows( url ) {
//*************************************************
//Funcion que realiza un new window, recibiendo
//como parametro el url
//*************************************************
	var parametros = 'scrollbars=0,resizable=0,location=0,menubar=0,status=0';
	parametros += ',left=0,top=0';
	window.open(url,'',parametros);
}

function set_tit_bot() {
/****************************************
Funcion que genra el titulo y la botonera
según las variables definidas en cada script
que lo llama
************************************/
	parent.frames['ifram_botonera'].location.href="../includes/botonera.php";
	parent.frames['ifram_titulo'].location.href="../includes/titulo.php";										
}
	
function agrega_items(idt) {
	if ( cant.value == "" ) //Si la cantidad es vacio le asigno por default 1
		cant.value = 1;
	if (idt==-1) {
		idt=0;
	}
	if ( parseInt(cant.value) > 0 ) {
		if ( tipo.value=="C" )
			var aux = modalidad.value.split("_");
		else
			var aux = descri.value.split("_");
		location.href="br_det_fac.php?modpf=1&id_spe="+aux[0]+"&can="+cant.value+"&cat="+tipo.value+"&id_temp="+idt+"&arrimp="+parent.timp_cat;
	}
}
	
function asignar(obj,obj2) {
    if (obj.selectedIndex==-1) return;
    valor=obj.value;
    txt=obj.options[obj.selectedIndex].text;
    obj.options[obj.selectedIndex]=null;
    opc = new Option(txt,valor);
    eval(obj2.options[obj2.options.length]=opc);
}
	
function windowsPDF( url ) {
//*************************************************
//Funcion que realiza un new window, recibiendo
//como parametro el url del presupuesto o factura
//*************************************************
	var parametros = 'scrollbars=0,resizable=1,location=0,menubar=0,status=0';
	parametros += ',left=0,top=0,width=700,height=500';
	window.open(url,'',parametros);
}

function redirto(url) {
//***********************************************************
// Recarga la lista reordenandola por el 
// campo especificado en parametro del URL
	document.location = url
} 

function remove( url ) {
	if(	window.confirm("Desea eliminar este registro?") && 
		window.confirm("ATENCIÓN :\nLos datos serán eliminados permanentemente.\nDesea continuar ?")
	)
	{
		document.body.style.cursor = 'wait';
		document.location = url;
	}
}

function elimina_espacios(forma, cadena) {
	// Elimino espacios y ceros a la izquierda
	for (var i=0; i < forma[cadena].value.length; i++) {
		if ((forma[cadena].value.charAt(i)!=' ') && (forma[cadena].value.charAt(i)!='0')) {
			a=i;
			break;
		}
	}
	forma[cadena].value=forma[cadena].value.substring(a,forma[cadena].value.length);
	
	// Elimino espacios al final
	while(''+forma[cadena].value.charAt(forma[cadena].value.length-1)==' ')
		forma[cadena].value=forma[cadena].value.substring(0,forma[cadena].value.length-1);
	
	justnumber(forma, cadena);
}

// JS de Funciones que son incluidas separadamente
document.write('<script src="../js/rclickoff.js" language="JavaScript" type="text/javascript"></script>');