// Array con las opciones basica de pantalla
var arpantalla						= new Array();

function setparametros(parametros){

	// Comprobamos si hay que refrescar 
	if (typeof(parametros['phpp_rfsc']) != "undefined"){
		if (parametros['phpp_rfsc'] == 1){
			// Reseteamos los parametros generales y de objeto
			for (var parametro in arparametros) {
				switch (parametro.substr(0,4)){
					case "phpg" :	/* Parámetro general */
						arparametros[parametro]		= '';
						break;
					case "phpo" :	/* Parámetro de objeto */
						arparametros[parametro]		= '';
						break;
					case "phpp" :	/* Parámetro de programación */
						arparametros[parametro]		= '';
						break;
				}
			}
		}
	}else{
		// Comprobamos si se produce cambio de aplicacion
		if (typeof(parametros['phpg_idap']) != "undefined"){
			if (parametros['phpg_idap'] != arpantalla['phpg_idap']){
				// Reseteamos los parametros generales y de objeto
				for (var parametro in arparametros) {
					switch (parametro.substr(0,4)){
						case "phpg" :	/* Parámetro general */
							arparametros[parametro]		= '';
							break;
						case "phpo" :	/* Parámetro de objeto */
							arparametros[parametro]		= '';
							break;
						case "phpp" :	/* Parámetro de programación */
							arparametros[parametro]		= '';
							break;
					}
				}
			}
		}else{
			// Comprobamos si se produce cambio de pantalla
			if (typeof(parametros['phpg_ctp']) != "undefined"){
				if (parametros['phpg_ctp'] != arpantalla['phpg_ctp']){
					// Reseteamos los parametros de objeto
					for (var parametro in arparametros) {
						switch (parametro.substr(0,4)){
							case "phpo" :	/* Parámetro de objeto */
								arparametros[parametro]		= '';
								break;
							case "phpp" :	/* Parámetro de programación */
								arparametros[parametro]		= '';
								break;
						}
					}
				}
			}
		}
	}
	
	// Actualizamos los parametros de pantalla recibidos
	for (var parametro in parametros) {
		//alert ('parametro : '+ parametro +'=' + parametros[parametro]);
		switch (parametro.substr(0,4)){
			case "phpo" :	/* Parámetro de objeto */
				arparametros[parametro]		= parametros[parametro];
				break;
			case "phpg" :	/* Parámetro general */
				arparametros[parametro]		= parametros[parametro];
				break;
			case "phps" :	/* Parámetro de sesión */
				arparametros[parametro]		= parametros[parametro];
				break;
		}
	}
	return;
}
	
function geturl(parametros){
	var url				= '';
	
	// Recorremos el array de parametros
	var i				= 0;
	for (var parametro in parametros) {
		if (parametros[parametro] != ''){
			if (i == 0){
				url		= url + parametro + '=' + parametros[parametro];
			}else{
				url		= url + '&' + parametro + '=' + parametros[parametro] ;
			}
			i++;
		}
	}
	url					= urlbase + '?' + url;
	return url;
}
	
function codificarparametros(){
	var parametros								= new Array();
	var parametro									= new Array();
	
	// Almacenamos el valor de los parametros principales de pantalla
	arpantalla['phpg_idap']				= arparametros['phpg_idap'];
	arpantalla['phpg_ctp']				= arparametros['phpg_ctp'];
	// Recorremos el array de nuevos parametros recibidos y transferimos su valor
	for (var i=0; i < arguments.length; ++i){
		parametro						= arguments[i].split('=');
		if (parametro.length == 2){
			parametros[parametro[0]]	= parametro[1];
		}else{
			var textoparam				= ''
			for (var j=1; j < parametro.length; ++j){
				if (j<(parametro.length-1)){
					textoparam			= textoparam + parametro[j] + '=';
				}else{
					textoparam			= textoparam + parametro[j];
				}
				
			}
			parametros[parametro[0]]	= textoparam;
		}
	}
	return parametros;
}
	
function abrirpantalla(parametros,origen){
	
	// Actualizamos el array de parametros de la pantalla actual
	setparametros(parametros);
	
	// Llamamos a la función que genera la nueva url
	var url			= geturl(arparametros);
	//alert('url=' +url);

  /* ?????????????????? */
  //url = url+ "&zzz=" + idacceso;
  /* ?????????????????? */

	switch (origen){
		case 0:
			eval('this.location.href=\'' + url + '\';');
			break;
		case 1:
			eval('window.opener.location.href=\'' + url + '\';');
			this.close();
			break;
		default:
			eval('this.location.href=\'' + url + '\';');
			break;
	}
	return;
}
	
function abrirventana(parametros,ventana,opciones,ocultar){
	
	// Llamamos a la función que genera la nueva url
	var url			= geturl(parametros);
	
	// Abrimos la nueva ventana
	if (ocultar == 2){
		//url	= url + '&xr='+screen.width+ '&yr='+screen.height;
    url	= url + '&xr='+screen.availWidth+ '&yr='+screen.availHeight;
    //alert('url=' + url);
	}
	sventana = window.open(url,ventana,opciones);
	return;
}
	
function abrirurl(url,ventana,opciones){
	if (ventana == ""){
		this.location.href		= url;
	}else{
		sventana				= window.open(url,ventana,opciones);
	}
	return;
}
	
function cerrarpantalla(refrescar){
	if (refrescar == 1){
		window.opener.location.reload(1);
	}
	this.close();
	return;
}
	
function vermensajes(mensajes){
	var mensaje			= '';
	for (var i=0; i < mensajes.length; ++i){
		if (i > 0){
			mensaje		= mensaje + '\r\n' + mensajes[i];
		}else{
			mensaje		= mensajes[i];
		}
	}
	alert (mensaje);
	return;
}
	
function ctrllista_actualizarfamilia(control,idfamilia){
	var controlObj									= this.cbeGetElementById(control);
	eval('var aropciones		= aropciones_' + control +';');
	var numopciones									= controlObj.options.length;
	do{
		controlObj.options[0]		= null;
	}while(controlObj.options.length > 0);
	var i														= 0;
	var cont												= 1;
	for (var idopcion in aropciones){
		if (idfamilia != aropciones[idopcion][2]){
			continue;
		}else{
			if (cont == 1){
				if (typeof(aropciones[0][0]) != "undefined"){
					controlObj.options.length			= i+1;
					controlObj.options[i].value		= aropciones[0][0];
					controlObj.options[i].text		= aropciones[0][1];
				}
			}
		}
		cont++;
		i															= controlObj.options.length;
		controlObj.options.length			= i+1;
		controlObj.options[i].value		= aropciones[idopcion][0];
		controlObj.options[i].text		= aropciones[idopcion][1];
	}
	
	if (controlObj.options.length == 0){
		controlObj.className="controlinactivo";
	}else{
		controlObj.className="control";
	}
	return;
}
	
function ctrlcheck_click(checkobj){
	if (checkobj.checked){
		checkobj.value=1;
	}else{
		checkobj.value=0;
	}
	return;
}
	
function cambiarfecha(parametro,ctrldia,ctrlmes,ctrlano){
	var dia							= this.cbeGetElementById(ctrldia).value;
	var mes							= this.cbeGetElementById(ctrlmes).value;
	var ano							= this.cbeGetElementById(ctrlano).value;
	eval('abrirpantalla(codificarparametros(\''+parametro +'='+dia+'/'+mes+'/'+ano+'\'))');
	return;
}
	
function valorcontrol(control,tipocontrol){
	var controlObj			= this.cbeGetElementById(control);
	var valor				= '';
	if (controlObj) {
		switch(tipocontrol){
			default:
				valor		= controlObj.value;
				break;
			case "ctllista":
				valor		= controlObj.selectedIndex;
				break;

		}
	}
	return valor;
}
	
function enviarformulario(formulario,parametros){
	var mensajes							= new Array();
	mensajes									= validarformulario(formulario);
	if (mensajes.length == 0){
		setparametros(parametros);
		var url								= geturl(arparametros);
		document.forms[formulario].action	= url;
		document.forms[formulario].submit();
	}else{
		vermensajes(mensajes);
	}
	return;
}
	
function validarformulario(formulario){
	var mensajes	= new Array();
	var variable	= formulario + '_validaciones';
	var mensajes	= new Array();
	if (typeof(window[variable]) != "undefined"){
		eval('var validaciones = ' + variable);
		var validacion = new Array();
		var mensaje = '';
		var idmsg = 0;
		for (var control in validaciones) {
			validacion = validaciones[control];
			mensaje = validarcontrol(formulario,control,validacion);
			if (mensaje != ''){
				mensajes[idmsg] = mensaje;
				idmsg = idmsg + 1;
			}
		}
	}
	return mensajes;
}
	
function editarcontrol(ventana,formulario,control,tipocontrol,valor,valortxt,cerrar){
	if (ventana != ""){
		ventana								= window.opener;
	}else{
		ventana								= this;
	}
	var controlObj							= ventana.cbeGetElementById(control);
	
	if (controlObj) {
		//alert ('tipocontrol : ' +tipocontrol);
		switch(tipocontrol){
			case "ctrllineab":
				controlObj.value			= valor;
				var controltxtObj			= ventana.cbeGetElementById(control+'_texto');
				controltxtObj.value			= valortxt;
				break;
			case "ctrllista":
				controlObj.selectedIndex	= valor;
				controlObj.text				= valortxt;
				break;
			default:
				controlObj.value			= valor;
				break;
		}
		if (cerrar==1){
			this.close();
		}
	}
	return;
}
	
function resetearcontrol(formulario,control,tipocontrol){
	var controlObj			= cbeGetElementById(control);
	if (controlObj) {
		var valor			= controlObj.value;
		switch(tipocontrol){
			case "ctrllineab":
				controlObj.value	= '';
				var controltxtObj	= cbeGetElementById(control+'_texto');
				controltxtObj.value	= '';
				break;
			case "ctrloculto":
				controlObj.value	= '';
				break;
		}
	}
	return;
}
	
function esentero(valor){
	var expresion				= new RegExp("^[0-9]+$");
	if (expresion.test(valor)){
		return true;
	}else{
		return false;
	}
}
	
function esdecimal(valor){
	var valorentero				= "";
	var valordecimal			= "";
	var concoma						= false;
	var resultado					= new Array();
	for (j=0; j<valor.length; j++) {
		if (valor.charAt(j)==","){
			valordecimal			= valor.substring(j+1,valor.length);
			concoma						= true;
			break;
		}else{
			valorentero+=valor.charAt(j);
		}
	}
	if (!concoma){
		if (!esentero(valor)){
			return false;
		}
	}else{
		if ((!esentero(valorentero)) || (!esentero(valordecimal))){
			return false;
		}
	}
	//alert('valorentero : '+valorentero +' => resultado : '+ esentero(valorentero));
	//alert('valordecimal : '+valordecimal +' => resultado : '+ esentero(valordecimal));
	resultado['entero']			= valorentero;
	resultado['decimal']		= valordecimal;
	return resultado;
}
	
function decimal2js(valorentero,valordecimal){
	if (esentero(valorentero)){
		if (esentero(valordecimal)){
			valordecimal				= valordecimal/(Math.pow(10,valordecimal.length));
			return parseInt(valorentero) + parseFloat(valordecimal);
		}
	}
	return false;
}
	
function validarcontrol(formulario,control,validacion){
	//alert ('validando control ' + control);
	var mensaje = '';
	var controlObj = this.cbeGetElementById(control);
	if (controlObj){
		var valor		= controlObj.value;
		var oblig		= validacion['obligatorio'];
		var max			= validacion['max'];
		var min			= validacion['min'];
		var tipocontrol = validacion['tipocontrol'];
		switch(validacion['tipodato']){
			case "email":
				//var emailexp = /^[a-z][a-z_0-9\-\.]+@[a-z_0-9\.\-]+\.[a-z]{2,3}$/i;
				var expresion		= new RegExp("^[^@]+@[^\\.]+(\\.[^\\.]+)+$");
				if(!expresion.test(valor)){
					mensaje				= mensajevalidacion(formulario,'0008',validacion);
					return mensaje;
				}
				break;
			case "texto":
				if (oblig == ''){
					if (valor == ''){
						mensaje			= '';
						return mensaje;
					}
				}else{
					if (valor == ''){
						mensaje			= mensajevalidacion(formulario,'0001',validacion);
						return mensaje;
					}
				}
				if (max != ''){
					if (valor.length > max){
						mensaje			= mensajevalidacion(formulario,'0002',validacion);
						return mensaje;
					}
				}
				if (min != ''){
					if (valor.length < min){
						mensaje			= mensajevalidacion(formulario,'0002',validacion);
						return mensaje;
					}
				}
				break;
			case "entero":
				if (oblig == ''){
					if (valor == ''){
						mensaje			= '';
						return mensaje;
					}
				}else{
					switch(tipocontrol){
						case "ctrllineab":
							if (valor < 1){
								mensaje			= mensajevalidacion(formulario,'0007',validacion);
								return mensaje;
							}
							break;
						default:
							if (valor == ''){
								mensaje			= mensajevalidacion(formulario,'0001',validacion);
								return mensaje;
							}
							break;
					}
				}
				if (!esentero(valor)){
					mensaje						= mensajevalidacion(formulario,'0003',validacion);
					return mensaje;
				}
				if (!isNaN(valor)) {
					var charpos			= valor.search("[^0-9]"); 
					if(valor.length > 0 &&  charpos >= 0){ 
						mensaje = mensajevalidacion(formulario,'0003',validacion);
						return mensaje;
					}else{
						if (min != ''){
							if (valor < min){
								mensaje = mensajevalidacion(formulario,'0004',validacion);
								return mensaje;
							}
						}
						if (max != ''){
							if (valor > max){
								mensaje = mensajevalidacion(formulario,'0004',validacion);
								return mensaje;
							}
						}
						mensaje = '';
						return mensaje;
					}
				}else{
					mensaje = mensajevalidacion(formulario,'0003',validacion);
					return mensaje;
				}
				break;
			case "decimal":
				if (oblig == ''){
					if (valor == ''){
						mensaje				= '';
						break;
					}
				}else{
					if (valor == ''){
						mensaje						= mensajevalidacion(formulario,'0001',validacion);
						return mensaje;
					}
				}
				//alert('validando ' + valor);
				var resultado					= esdecimal(valor);
				if (!resultado){
					mensaje							= mensajevalidacion(formulario,'0003',validacion);
					return mensaje;
				}
				
				var valorjs						= decimal2js(resultado['entero'],resultado['decimal']);
				//alert ('valorentero = ' + resultado['entero'] + ' => valordecimal = ' +  resultado['decimal']);
				//alert ('valorjs ' + valorjs + ' => max ' + max + ' => min ' +  min);
				if (min != ''){
					if (valorjs < min){
						mensaje						= mensajevalidacion(formulario,'0004',validacion);
						return mensaje;
					}
				}
				if (max != ''){
					if (valorjs > max){
						mensaje						= mensajevalidacion(formulario,'0004',validacion);
						return mensaje;
					}
				}
				mensaje								= '';
				break;
		}
	}
	return mensaje;
}
	
function confirmarformulario(formulario,msg,parametros){
	var x = window.confirm(msg);
	if (x){
		enviarformulario(formulario,parametros);
	}
	return;
}
	
function resetearformulario(formulario){
	document.forms[formulario].reset();
}
	
function mensajevalidacion(formulario,codmsg,validacion){
	eval('var mensaje = ' +formulario +'_msgval[\"'+codmsg+'\"];');
	var max = validacion['max'];
	if (max == ''){
		max = "*";
	}

	var min = validacion['min'];
	if (min == ''){
		min = "*";
	}

	var campo = validacion['campodb'];
	mensaje = mensaje.replace("<campo>",campo);
	mensaje = mensaje.replace("<max>",max);
	mensaje = mensaje.replace("<min>",min);
	//cbeSetImage(control+'_marc',formulario+'_imgerrval');
	return mensaje;
}
