/* - Traduce cadenas en URL listas para enviar a scripts de servidor:
	val -- Cadena a traducir.
- */
function traduce(val){
	var i,v='',j=0,r=/\x20/g
	i=val.indexOf("\r")
	while(i>-1){
		v+=val.substring(j,i)
		val=val.substring(i+1)
		i=val.indexOf("\r")
	}
	v+=val
	v=v.replace(r,'+')
	return escape(v);
}
/* - Traduce fechas de formato cadena "dd/mm/aaaa", con hora opcional, a objetos fecha/hora:
	val -- Cadena a traducir.
- */
function TxtAFecha(val){
	if(val){
		val=val.replace(/^\s+/,'').replace(/\s+$/,'')
		var d,m,a,h,mm,s,z
		var p=val.indexOf('/'),q=val.lastIndexOf('/'),r=val.indexOf(' ')
		if(p>-1&&q>-1){
			d=val.substring(0,p)
			m=val.substring(p+1,q)
			if(r>-1){
				a=val.substring(q+1,r)
				z=val.substring(r+1)
				if(z){
					p=z.indexOf(':'),q=z.lastIndexOf(':')
					if(p>-1&&q>-1){
						h=z.substring(0,p)
						if(p==q){
							s=0
							mm=z.substring(p+1)
						}else{
							mm=z.substring(p+1,q)
							s=z.substring(q+1)
						}
					}
				}
			}else{
				a=val.substring(q+1)
				h=mm=s=0
			}
			if(debug)alert("Día, mes, año, hora, minuto, segundo = "+d+", "+m+", "+a+", "+h+", "+mm+", "+s)
			return new Date(a,m-1,d,h,mm,s)
		}
	}
	return null
}
/* - Empaqueta parámetros con tipo para PHP:
	0=numérico
	1=cadena (añade comillas simples para facilitar procesamiento en bases de datos)
	2=fecha/hora (empaqueta como año-mes-dia hora:min:seg)
	3=multi (empaqueta select múltiples en una cadena separada por comas)
- */
function EmpaquetaParam(){
	var pack='',tipo,ar=arguments,i,j,e,v,a,p
	for(i=0;i<ar.length;i++){
		switch(ar[i].t){
			case 0: // numérico
				if(!ar[i].v)ar[i].v=0 // forzar a valor x defecto
				a=ar[i].v+'' // forzar a cadena
				p=a.indexOf(',')
				if(p<0)p=a.indexOf('.')
				if(p>-1)a=a.substring(0,p)+'.'+a.substring(p+1)
				pack+=ar[i].n+'='+a+'|'
				break
			case 1: // cadena
				pack+=ar[i].n+"='"+ar[i].v+"'|"
				break
			case 2: // fecha
				if(!ar[i].v)ar[i].v='' // fecha nula
				var d=TxtAFecha(ar[i].v)
				if(d)pack+=ar[i].n+"='"+d.getFullYear()+'-'+(d.getMonth()+1)+'-'+d.getDate()+" "+d.getHours()+":"+d.getMinutes()+":"+d.getSeconds()+"'|"
				break
			case 3: // multi (cadena)
				e=ar[i].v.options
				v=ar[i].n+"='"
				for(j=0;j<e.length;j++)v+=e[j].selected?e[j].value+',':''
				pack+=v.substring(0,v.length-1)+"'|"
				break
		}
	}
	if(debug)alert("Pack="+pack)
	return pack
}
/* - Imprime un mensaje de confirmación y devuelve true si se acepta y false en caso
 contrario:
 	mens -- Mensaje a imprimir.
- */
function SiONo(mens){
	return confirm(mens+"?")?true:false
}
