//*************** /gdr/js/sf_global.js **********************************
//* Funciones globales JavaScript 
//* Espera que esté definida la variable SGS_IDIOMA con el código de idioma a utilizar
//********************************************************************
//* Variables dependientes del entorno
//********************************************************************
var sls_loc=location+" "; //Para convertir a String
var SGC_RAIZ;
sls_loc.toLowerCase();
if (sls_loc.substring(0,22)=="https://86.109.98.188/"){
	SGC_RAIZ="https://www.gestionderesidencias.es/gdr/";
}
else if (sls_loc.substring(0,17)=="http://localhost/"){
	SGC_RAIZ="http://localhost/gdr/";
}
else if (sls_loc.substring(0,22)=="https://86.109.98.187/"){
	SGC_RAIZ="https://www.gestionderesidencias.es/gdr/";
}
else if (sls_loc.substring(0,25)=="http://dsvgdr.hiterp.com/"){
	SGC_RAIZ="http://dsvgdr.hiterp.com/gdr/";
}
else if (sls_loc.substring(0,26)=="http://gdr.hiterp.com/gdr/"){
	SGC_RAIZ="https://www.gestionderesidencias.es/gdr/";
}
else if (sls_loc.substring(0,27)=="https://gdr.hiterp.com/gdr/"){
	SGC_RAIZ="https://www.gestionderesidencias.es/gdr/";
}
else if (sls_loc.substring(0,35)=="http://www.gestionderesidencias.es/"){
	SGC_RAIZ="https://www.gestionderesidencias.es/gdr/";
}
else{
	SGC_RAIZ="https://www.gestionderesidencias.es/gdr/";
}
//********************************************************************
//* Variables Globales Generales. 
//********************************************************************
var SGS_PANTCON; //pantalla de conexion
var SGB_MODIF=false;	//Para control de cambios en formularios
var SGB_CONTROL=true; //Para controlar el campo del formulario
var SGB_CONTROLSALVA=true; //para controlar que el boton salvar no funcione si hay un campo no validado
var SGB_CARGADO=false;		//Para control de si se ha cargado la pantalla o no
var SGN_CAMPO; // Para guardar el campo obligatorio no rellenado
var SGB_RELOAD=false; //Flag para indicarle al vigilacambios que no debe actuar.
var SGN_TMSALVA=800; //Numero de milisegundos que se muestra el texto guardado en la pantalla de gestión
var SGN_SW=screen.width;
var SGN_SH=screen.height;
var SGN_SAW=screen.availWidth;
var SGN_SAH=screen.availHeight;
var SGS_ModalProps="dialogHeight:482px;dialogWidth:408px;edge:raised;center:Yes;help:no;resizable:no;status:no;scrollbars:no;";
var WSC=60; //Anchura  barra de scroll
var SGN_SELINDICE=0; //Para saber que número de select tenemos que crear
var SGO_CARGATIME=""; //Para asginar timeout a la hora de cargar
var SGN_TMRECARGA=60000; //Para asginar timeout a la hora de cargar
var SGN_TMRENOVARPES=700; //Para recargar pestañas
//************************************************************************
//* Definición de COLORES
//************************************************************************
//Existentes
var SGS_COLACTUAL="#FFF"; //Color actual de campos
var SGS_COLOBLIG="#EBCFCF"; //Color actual de campos
var SGS_COLNORMAL="#DDF0E3"; //Color actual de campos
var SGS_COLENABLE="#305B3F"; //Color del botón habilitado
var SGS_COLDISABLE="#70C18B"; //Color del botón deshabilitado
//Estandares
var SGS_CNORMAL="#71C18B" // Color botones normales
var SGS_CRESAL="#305B3F" //Color botones resaltados
var SGS_CDESAC="#B8E0C5" //Color Botones desactivados
var SGS_CFONFOR="#DDF0E3" //Color Fondo Formularios
var SGS_CFONFORO="#EBCFCF" //Color fondo formulario Obligatorio
var SGS_CRNORMAL="#DEADAD" //Color Rosa Normal
var SGS_CRRESAL="#CC8080" //Color Rosa Resaltado
var SGS_CAUSEN="#806666" //Color Residentes Ausentes
var SGS_CROJO="#BB0000" //Color cosas resaltadas
var SGS_CBLANCO="#FFF" //Color Blanco
var SGS_CNEGRO="#000" // Color negro
//*************************************************************************
//* Ventanas
//*************************************************************************
var SGW_AYUDA; //Para la ventana de ayuda
var SGW_PRINCIPAL; //Para la Ventana Principal
var SGW_PEQUENA; //Para la Ventana pequeña
var SGW_MEDIANA; //Para la Ventana mediana
var SGW_MEDIANAN; //Para la Ventana mediana
var SGW_GRANDE; //Para la ventana grande
var SGW_TACTIL; //Para la ventana de la tactil
var SGS_ORDCAMPO; // Para guardar el campo de ordenación
var SGS_ORDSENTIDO; //Para guardar el sentido de la ordenación
var SGN_NUMFILA; //Item de una selección en pantalla
var SGN_NUMMAX; //Maximo de númeos en la pantalla
var SGS_PESTANA; //Pestaña en curso
var SGS_SUBPESTANA; //Subpestaña en curso
var SGS_GRUPO; //Grupo de pestañas
var SGS_SUBGRUPO; //SubGrupo de pestañas
var SGS_AYUDA; //Para guardar la página de ayuda
var SGS_EDITORFOCO="";
var SGB_EDITORSOLOLEE=false; //Flag para que el editor solo lea y no permita escribir.
var SGN_EDITORCONTROL=0;// para saber la instancia de editor que es
var SGA_EDITORNOMBRE=new Array();//para guardar los nombres de instancia
var SGA_EDITORFOCO=new Array();// Para guardar si esa instancia debe tener foco
var SGA_EDITORCARGADO=new Array();//Para saber si el editor está cargado
var SGA_EDITORSOLOLEE=new Array();//Para saber si el editor debe bloquearse
var SGN_HEDITOR; //altura para editor cuando es pantalla completa (dentro iframe FrameCentro)
var SGN_LENALEOBS; //Longitud alergias observaciones
if (SGN_SW>=1280){
	SGN_HEDITOR=600; 
} 
else if (SGN_SW>=1024){
	SGN_HEDITOR=400;
}
else{
	SGN_HEDITOR=300;
}
//********************************************************************
//* Variables para la apertura de ventanas (OJO, revisar si se usa????????????????????????????????????????)
//********************************************************************
//Ventana de Ayuda
//********************************************************************
var sln_ancho, sln_alto, sln_top, sln_left
if (SGN_SW>=1280){
	sln_ancho=1250
	sln_alto=1000
	SGN_LENALEOBS=160;
}
else if (SGN_SW>=1024){
	sln_ancho=1000
	sln_alto=750
	SGN_LENALEOBS=80;
}
else{
	sln_ancho=780
	sln_alto=580
	SGN_LENALEOBS=100;
}
sln_top=(SGN_SH-sln_alto)/2
sln_left=(SGN_SW-sln_ancho)/2
SGW_PARAMAYUDA="top="+sln_top+",left="+sln_left+",width="+sln_ancho+",height="+sln_alto+",directories=0,location=0,menubar=0,resizable=0,status=0,toolbar=0,scrollbars=1"
//********************************************************************
//* Ventana pequeña
//********************************************************************
sln_ancho=400
sln_alto=400
sln_top=(SGN_SH-sln_alto)/2
sln_left=(SGN_SW-sln_ancho)/2
SGW_PARAMPEQUENA="top="+sln_top+",left="+sln_left+",width="+sln_ancho+",height="+sln_alto+",directories=0,location=0,menubar=0,resizable=0,status=0,toolbar=0,scrollbars=1"
//********************************************************************
//* Ventana mediana
//********************************************************************
if (SGN_SW>=1280){
	sln_ancho=800;
	sln_alto=780;
}
else if (SGN_SW>=1024){
	sln_ancho=770;
	sln_alto=600;
}
else{
	sln_ancho=600;
	sln_alto=500;
}
sln_top=(SGN_SH-sln_alto)/2
sln_left=(SGN_SW-sln_ancho)/2
SGW_PARAMMEDIANA="top="+sln_top+",left="+sln_left+",width="+sln_ancho+",height="+sln_alto+",directories=0,location=0,menubar=0,resizable=0,status=0,toolbar=0,scrollbars=0"
//********************************************************************
//* Ventana grande
//********************************************************************
if (SGN_SW>=1280){
	sln_ancho=1205;
	sln_alto=1000;
}
else if (SGN_SW>=1024){
	sln_ancho=964;
	sln_alto=690;
}
else{
	sln_ancho=784;
	sln_alto=580;
}
sln_top=10;
sln_left=(SGN_SW-sln_ancho)/2;
SGW_PARAMGRANDE="top="+sln_top+",left="+sln_left+",width="+sln_ancho+",height="+sln_alto+",directories=0,location=0,menubar=0,resizable=0,status=0,toolbar=0,scrollbars=0"
//********************************************************************
//* Ventana Principal 
//********************************************************************
if (SGN_SW>=1280){
	sln_ancho=1280
	sln_alto=1024
}
else if (SGN_SW>=1024){
	sln_ancho=1024
	sln_alto=768
}
else{
	sln_ancho=800
	sln_alto=600
}
sln_top=(SGN_SH-sln_alto)/2
sln_left=(SGN_SW-sln_ancho)/2
SGW_PARAMPRINCIPAL="top="+sln_top+",left="+sln_left+",width="+sln_ancho+",height="+sln_alto+"directories=0,location=0,menubar=0,resizable=0,status=0,toolbar=0,scrollbars=0"
//********************************************************************
//* Variables de ubicacion equivalentes a las de ASP
//********************************************************************
var SGC_WEB=SGC_RAIZ;
var SGC_AYUDA=SGC_RAIZ+"manual/";
var SGC_BLANCO=SGC_RAIZ+"blanco.html";
var SGC_SALVA=SGC_RAIZ+"salva/";
var SGC_IMPRIMIR=SGC_RAIZ+"listados/";
var SGC_IMAGENES=SGC_RAIZ+"img/";
var SGC_ICONOS=SGC_RAIZ+"ico/";
var SGC_SCRIPTS=SGC_RAIZ+"js/";
var SGC_TACTIL=SGC_RAIZ+"tactil/";
var SGC_FCK=SGC_RAIZ+"fckeditor/";
var SLB_COOKIEHABILITADA=(navigator.cookieEnabled)?true:false;
if (typeof navigator.cookieEnabled=="undefined" && !SLB_COOKIEHABILITADA){
	document.cookie="testcookie";
	SLB_COOKIEHABILITADA=(document.cookie.indexOf("testcookie")!=-1)?true:false
}
var SGC_NAV; //Tendra el navegador
function sf_navegador(){
	var d,dom,ie,ie4,ie5x,moz,mac,win,lin,old,ie5mac,ie5xwin,op,chrome;
	d=document;
	n=navigator;
	na=n.appVersion;
	nua=n.userAgent;
	win=(na.indexOf('Win') != -1 );
	mac=(na.indexOf('Mac') != -1 );
	lin=(nua.indexOf('Linux') != -1 );
	dom=(d.getElementById);
	op=(nua.indexOf('Opera')!=-1);
	konq=(nua.indexOf('Konqueror')!=-1);
	saf=(nua.indexOf('Safari')!=-1);
	moz=(nua.indexOf('Gecko')!=-1&&!saf&&!konq);
	ie=(d.all&&!op);
	ie4=(ie&&!dom);
	ie5x=(d.all&&dom);
	ie5mac=(mac&&ie5x);
	ie5xwin=(win&&ie5x);
	nav="No Permitido";
	if (moz){
		nav="ff";
	}
	else if (ie5xwin){
		nav="ie";
	}
	return nav;
}
SGC_NAV=sf_navegador();
//********************************************************************
//* Tratamiento de números
//********************************************************************
//********************************************************************
//* Función sf_esNumero
//* Devuelve si un valor es numérico
//********************************************************************
function sf_esNumero(sls_ara){
	return (!isNaN(sls_ara));
}
//********************************************************************
//* Función sf_esPar
//* Devuelve si un valor  numérico es par
//********************************************************************
function sf_esPar(sls_num){
	return (!(sls_num % 2));
}
//***************************************************************************************
//Función   sf_formateaNum
//									Campo								Obligatorio S/N		Valor por defecto
//									========================	===============		===============
//Parámetros de entrada: 	Cadena numérica a formatear			S						Ninguno
//									Tipo de puntuación					N							1
//										1-'.' como separador de miles y ',' de decimales
//										2-',' como separador de miles y '.' de decimales
//										3-no usar sepador de miles y ',' como separador de decimales
//										4-no usar sepador de miles y '.' como separador de decimales
//										5-' 'como sepador de miles y '.' como separador de decimales
//									Tratamiento signo						N							1
//										1-Sólo si negativo delante
//										2-Només si negatiu darrere
//										3-Negatiu i positiu devant
//										4-Negatiu i positiu darrere
//										5-Només negatiu entre parèntesi
//										6-Negatiu entre parèntesi i positiu devant
//										7-Negatiu entre parèntesi i positiu darrera
//								Moneda									N							Cap	
//								Num dec Visualització				N							2
//Salida:						True o false
//										True si la expressión es correcta
//										False si no lo es
//***************************************************************************************
function sf_formateaNum(sls_entrada,sln_puntuacio,sln_signe,sls_moneda,sln_decVisu){
	var sln_nArg=arguments.length; //Recoger numero de parametros recibidos
	if (sls_entrada==""){
		return sls_entrada;
	}	
	var sls_carTemp=sls_entrada.charAt(0);
	var sln_entrada=parseFloat(sf_tr(sls_entrada,",","."));
	var slb_positiu=true; //indicador de positivo (true) o negativo (false)
	var sln_posDec; //para guardar la posición de la coma decimal
	var sls_enter; // parte entera del numero
	var sls_enterF; //parte entera formateada
	var sls_lonEnter; //longitud del entero
	var sln_k; //contador bucle y temporal
	var sls_dec; // parte decimal
	var sls_decF; //parte decimal formateada
	var sls_londec; //longitud de la parte decimal
	var sls_sortida; //Resultado final
	var sls_punMil="."; //separador Miles
	var sls_punDec=","; //Separador decimales
	if (sln_nArg==1){
		var sln_puntuacio=1;
		var sln_signe=1;
		var sls_moneda="";
		var sln_decVisu=2;
	}
	else if (sln_nArg==2){
		var sln_signe=1;
		var sls_moneda="";
		var sln_decVisu=2;
	}
	else if (sln_nArg==3){
		var sls_moneda="";
		var sln_decVisu=2;
	}
	else if (sln_nArg==4){
		var sln_decVisu=2;
	}
//Assignem caracters de separcio de milers i decimals
	if (sln_puntuacio==2){
		sls_punMil=",";
		sls_punDec=".";
	}
	else if(sln_puntuacio==3){
		sls_punMil="";
		sls_punDec=",";
	}
	else if(sln_puntuacio==4){
		sls_punMil="";
		sls_punDec=".";
	}
	else if(sln_puntuacio==5){
		sls_punMil=" ";
		sls_punDec=".";
	}
//Redondeamos el número
	sln_k=Math.pow(10,sln_decVisu);
	sln_entrada=sln_entrada*sln_k;
	sln_entrada=Math.round(sln_entrada);
	sln_entrada=sln_entrada/sln_k;
	sls_entrada=sf_tr(sln_entrada.toString(),".",",");
//Guardamos el signo y quitamos el caracter
	if (sls_carTemp=="-"){
		slb_positiu=false;
		sls_entrada=sls_entrada.substr(1);
	}
//Separamos la parte entera y la decimal
	sln_posDec=sls_entrada.indexOf(",");
	if (sln_posDec==-1){ //no hi ha  coma
		sls_enter=sls_entrada;
		sls_dec="";
	}
	else{
		sls_enter=sls_entrada.substr(0,sln_posDec);
		sls_dec=sls_entrada.substr(sln_posDec+1);
	}
//Formateamos la parte entera
	sln_lonEnter=sls_enter.length;
	if (sln_lonEnter<=3){
		sls_enterF=sls_enter;
	}
	else{
		sln_k=(sln_lonEnter%3);
		if (sln_k==0){sln_k=3}
		sls_enterF=sls_enter.substr(0,sln_k);
		for (;sln_k<sln_lonEnter;sln_k=sln_k+3){
			sls_enterF=sls_enterF+sls_punMil+sls_enter.substr(sln_k,3);
		}
	}
//Formateamos la parte decimal
	sln_lonDec=sls_dec.length;
	if (sln_lonDec==sln_decVisu){
		sls_decF=sls_dec;
	}
	else {
		sls_decF=sls_dec+"000000000000000000000000000000";
		sls_decF=sls_decF.substr(0,sln_decVisu);
	}
//Juntamos parte entera y decimal
	sls_sortida=sls_enterF;
	if (sln_decVisu>0){sls_sortida=sls_sortida+sls_punDec+sls_decF}
	sls_sortida=sls_sortida+sls_moneda;
//Formateamos el signo
	if (sln_signe==1){
		if (!slb_positiu){sls_sortida="-"+sls_sortida}
	}
	else if(sln_signe==2){
		if (!slb_positiu){sls_sortida=sls_sortida+"-"}
	}
	else if(sln_signe==3){
		if (slb_positiu){sls_sortida="+"+sls_sortida}
		else{sls_sortida="-"+sls_sortida}
	}
	else if(sln_signe==4){
		if (slb_positiu){sls_sortida=sls_sortida+"+"}
		else{sls_sortida=sls_sortida+"-"}
	}
	else if(sln_signe==5){
		if (!slb_positiu){sls_sortida="("+sls_sortida+")"}
	}
	else if(sln_signe==6){
		if (!slb_positiu){sls_sortida="("+sls_sortida+")"}
		else{sls_sortida="+"+sls_sortida}
	}
	else {
		if (!slb_positiu){sls_sortida="("+sls_sortida+")"}
		else{sls_sortida=sls_sortida+"+"}
	}
	return sls_sortida;
}
//********************************************************************
//*  sf_formatPor(numero) formatea un número como porcentage
//********************************************************************
function sf_formatPor(sln_num){
	return ((sln_num)+" %")
}
//********************************************************************
//*  Tratamiento de strings
//********************************************************************
//********************************************************************
//*  Metodo string.expandir() 
//* Expande la cadena con la subcadena de relleno entre cada caracter
//* Si encuentra un caracterer especial HTML lo sabe tratar correctamente
//********************************************************************
String.prototype.expandir=function sf_stringExpandir(sls_relleno){
	var sln_longitud=this.length-1;
	var slb_saltar=false; //para controlar cuando haya un caracter especial &amp;
	if (!sls_relleno){
		sls_relleno=" "; //Si no hay caracter de relleno usa un espacio
	}
	var sls_salida=this.charAt(0)+sls_relleno;
	for (k=1;k<sln_longitud;k++){
		if (this.charAt(k)=="&"){
			slb_saltar=true;
			sls_salida=sls_salida+this.charAt(k);
			continue
		}
		if (slb_saltar){
			sls_salida=sls_salida+this.charAt(k);
			if (this.charAt(k)==";"){
				sls_salida=sls_salida+sls_relleno;
				slb_saltar=false;
			}
			continue
		}
		sls_salida=sls_salida+this.charAt(k)+sls_relleno;
	}
	sls_salida=sls_salida+this.charAt(sln_longitud);
	return sls_salida;
}
//********************************************************************
//* Método derecha(numero caracteres) 
//* Extrae los caracteres indicados de la cadena por la derecha
//********************************************************************
String.prototype.derecha=function sf_stringDerecha(sln_num){
return this.substr(this.length-sln_num);
}
//********************************************************************
//* Método izquierda(numero caracteres) 
//* Extrae los caracteres indicados de la cadena por la izquierda
//********************************************************************
String.prototype.izquierda=function sf_stringIzquierda(sln_num){
return this.substr(0,sln_num);
}
//********************************************************************
//* Medoto string.capitaliza() 
//* Convierte el 1er caracter en mayúsculas
//********************************************************************
String.prototype.capitaliza=function sf_stringCapitaliza(){
	var sls_str=this.trim();
	return (sls_str.charAt(0).toUpperCase()+sls_str.substring(1).toLowerCase());
}
//********************************************************************
//* Medoto string.capitalizaAll() 
//* Convierte el 1er caracter de cada palabra en mayúsculas
//* Considera como separadores de palabras espacios, Guiones, subrayados.
//* Además hace un trim inicial y final
//* Y un trim intermedio, no dejando 2 espacios seguidos.
//* Cada vez que encuentra caracteres separadores, pone mayúsculas.
//********************************************************************
String.prototype.capitalizaAll=function sf_stringCapitalizaAll(){
	var sls_str=this.trim();
	var sln_k;
	var sls_ara;
	var sls_sep="-_";
	var sls_res=sls_str.charAt(0).toUpperCase();
	var slb_test=false;
	var slb_mayus=false;
	for (sln_k=1;sln_k<sls_str.length;sln_k++){
		sls_ara=sls_str.charAt(sln_k);
		if(sls_ara==" "){
			if(!slb_test){
				sls_res+=sls_ara
			}
			slb_test=true;
			slb_mayus=true;
		}
		else if(sls_sep.indexOf(sls_ara)>=0){
			slb_mayus=true;
			sls_res+=sls_ara;
		}
		else{
			if (slb_mayus){
				slb_test=false;
				slb_mayus=false;
				sls_res+=sls_ara.toUpperCase();
			}
			else{
				sls_res+=sls_ara.toLowerCase();
			}
		}
	}
	return sls_res;
}
//********************************************************************
//* Metodo string.change() . 
//* Cambia todas las apariciones de la cadena sls_c1 por sls_c2
//********************************************************************
String.prototype.change=function sf_stringChange(sls_c1,sls_c2){
	return this.split(sls_c1).join(sls_c2);
}
//********************************************************************
//* Metodo string.lTrim(). 
//* Quita espacios iniciales
//********************************************************************
String.prototype.lTrim=function sf_stringLTrim(){
	var sls_str=this;
	while(sls_str.charAt(0)==" "){
		sls_str=sls_str.substring(1);
	}
	return sls_str.toString();
}
//********************************************************************
//* Metodo string.rTrim(). 
//* Quita espacios finales
//********************************************************************
String.prototype.rTrim=function sf_stringRTrim(){
	var sls_str=this;
	while(sls_str.charAt(sls_str.length-1)==" "){
		sls_str=sls_str.substring(0,sls_str.length-1);
	}
	return sls_str.toString();
}
//********************************************************************
//* Metodo string.trim(). 
//* Quita espacios iniciales y finales
//********************************************************************
String.prototype.trim=function sf_stringTrim(){
	return this.rTrim().lTrim();
}
//********************************************************************
//* Metodo string.allTrim(). 
//* Quita espaciosiniciales y finales. Además deja solo un espacio en el interior de la cadena.
//********************************************************************
String.prototype.allTrim=function sf_stringAllTrim(){
	var sls_str=this.trim();
	var sln_k;
	var sls_ara;
	var sls_res=sls_str.charAt(0);
	var slb_test=false;
	for (sln_k=1;sln_k<sls_str.length;sln_k++){
		sls_ara=sls_str.charAt(sln_k);
		if (sls_ara==" "){
			if (!slb_test){
				sls_res+=sls_ara;
			}
			slb_test=true;
		}
		else{
			sls_res+=sls_ara;
			if (slb_test){
				slb_test=false;
			}
		}
	}
	return sls_res;
}
//********************************************************************
//* Metodo string.html2Text(). 
//* Sustituye los caracteres especiales HTML
//********************************************************************
String.prototype.html2Text=function sf_stringHtml2Text(){
	var sls_str=this;
	sls_str.change("&aacute;","á");
	sls_str.change("&eacute;","é");
	sls_str.change("&iacute;","í");
	sls_str.change("&oacute;","ó");
	sls_str.change("&uacute;","ú");
	sls_str.change("&Aacute;","Á");
	sls_str.change("&Eacute;","É");
	sls_str.change("&Iacute;","Í");
	sls_str.change("&Oacute;","Ó");
	sls_str.change("&Uacute;","Ú");
	sls_str.change("&agrave;","à");
	sls_str.change("&egrave;","è");
	sls_str.change("&igrave;","ì");
	sls_str.change("&ograve;","ò");
	sls_str.change("&ugrave;","ù");
	sls_str.change("&Agrave;","À");
	sls_str.change("&Egrave;","È");
	sls_str.change("&Igrave;","Ì");
	sls_str.change("&Ograve;","Ò");
	sls_str.change("&Ugrave;","Ù");
	sls_str.change("&auml;","ä");
	sls_str.change("&euml;","ë");
	sls_str.change("&iuml;","ï");
	sls_str.change("&ouml;","ö");
	sls_str.change("&uuml;","ü");
	sls_str.change("&Auml;","Ä");
	sls_str.change("&Euml;","Ë");
	sls_str.change("&Iuml;","Ï");
	sls_str.change("&Ouml;","Ö");
	sls_str.change("&Uuml;","Ü");
	sls_str.change("&acirc;","â");
	sls_str.change("&ecirc;","ê");
	sls_str.change("&icirc;","î");
	sls_str.change("&ocirc;","ô");
	sls_str.change("&ucirc;","û");
	sls_str.change("&Acirc;","Â");
	sls_str.change("&Ecirc;","Ê");
	sls_str.change("&Icirc;","Î");
	sls_str.change("&Ocirc;","Ô");
	sls_str.change("&Ucirc;","Û");
	sls_str.change("&ntilde;","ñ");
	sls_str.change("&Ntilde;","Ñ");
	sls_str.change("&ccedil;","ç");
	sls_str.change("&Ccedil;","Ç");
	sls_str.change("&middot;","·");
	sls_str.change("&nbsp;"," ");
	sls_str.change("&amp;","&");
	sls_str.change("&lt;","<");
	sls_str.change("&gt;",">");
	sls_str.change("&iquest;","¿");
	sls_str.change("&ldquo;",'"');
	sls_str.change("&rdquo;",'"');
	return sls_str;
}
//********************************************************************
//* Metodo string.text2Html(). 
//* Sustituye los caracteres especiales HTML
//********************************************************************
String.prototype.text2Html=function sf_stringText2Html(){
	var sls_str=this;
	sls_str.change("á","&aacute;");
	sls_str.change("é","&eacute;");
	sls_str.change("í","&iacute;");
	sls_str.change("ó","&oacute;");
	sls_str.change("ú","&uacute;");
	sls_str.change("Á","&Aacute;");
	sls_str.change("É","&Eacute;");
	sls_str.change("Í","&Iacute;");
	sls_str.change("Ó","&Oacute;");
	sls_str.change("Ú","&Uacute;");
	sls_str.change("à","&agrave;");
	sls_str.change("è","&egrave;");
	sls_str.change("ì","&igrave;");
	sls_str.change("ò","&ograve;");
	sls_str.change("ù","&ugrave;");
	sls_str.change("À","&Agrave;");
	sls_str.change("È","&Egrave;");
	sls_str.change("Ì","&Igrave;");
	sls_str.change("Ò","&Ograve;");
	sls_str.change("Ù","&Ugrave;");
	sls_str.change("ä","&auml;");
	sls_str.change("ë","&euml;");
	sls_str.change("ï","&iuml;");
	sls_str.change("ö","&ouml;");
	sls_str.change("ü","&uuml;");
	sls_str.change("Ä","&Auml;");
	sls_str.change("Ë","&Euml;");
	sls_str.change("Ï","&Iuml;");
	sls_str.change("Ö","&Ouml;");
	sls_str.change("Ü","&Uuml;");
	sls_str.change("â","&acirc;");
	sls_str.change("ê","&ecirc;");
	sls_str.change("î","&icirc;");
	sls_str.change("ô","&ocirc;");
	sls_str.change("û","&ucirc;");
	sls_str.change("Â","&Acirc;");
	sls_str.change("Ê","&Ecirc;");
	sls_str.change("Î","&Icirc;");
	sls_str.change("Ô","&Ocirc;");
	sls_str.change("Û","&Ucirc;");
	sls_str.change("ñ","&ntilde;");
	sls_str.change("Ñ","&Ntilde;");
	sls_str.change("ç","&ccedil;");
	sls_str.change("Ç","&Ccedil;");
	sls_str.change("·","&middot;");
	sls_str.change(" ","&nbsp;");
	sls_str.change("&","&amp;");
	sls_str.change("<","&lt;");
	sls_str.change(">","&gt;");
	sls_str.change("¿","&iquest;");
	sls_str.change('"',"&ldquo;");
	sls_str.change('"',"&rdquo;");
	return sls_str;
}
//********************************************************************
//*  Metodo string.cortarLimpio() 
//* Limpia la cadena de tags HTML, y la corta al valor pasado.
//* Si encuentra un caracterer especial HTML lo sabe tratar correctamente
//********************************************************************
String.prototype.cortarLimpio=function sf_stringCortarLimpio(sln_largo){
	var sln_longitud=this.length-1;
	var slb_saltar=false; //para controlar cuando haya un caracter especial &amp;
	var sls_salida="";
	var sls_salida2="";
	//En este bucle quitamos los tags
	for (k=0;k<sln_longitud;k++){
		if (this.charAt(k)=="<"){
			for (k=k+1;k<sln_longitud;k++){
				if (this.charAt(k)==">"){
					break;
				}
			}
		}
		else{
			sls_salida=sls_salida+this.charAt(k)
		}
	}
//En este bucle, cortamos a la distancia que toca
	sln_longitud=sls_salida.length-1;
	for (k=0;k<sln_longitud;k++){
		if (sls_salida.charAt(k)=="&"){
			for (j=k+1;j<sln_longitud;j++){
				if (sls_salida.charAt(j)==";"){
					sls_salida2=sls_salida2+sls_salida.substring(k,j+1);
					k=j+1;
					break;
				}
			}
		}
		else{
			sls_salida2=sls_salida2+sls_salida.charAt(k)
		}
		if (sln_largo){
			if (k>=(sln_largo-1)){
				break;
			}
		}
	}
	return sls_salida2;
}
//******************************************************************************************
//Función    sf_tr
//Objectivo:	Sustituir en la cadena a tratar, cada aparición de cada caracter de la cadena a sustituir 
//        			con el correspondiente caracter de la cadena a poner. Coincide con el _Traslate de MUMPS
//									Campo								Obligatorio S/N		Valor por defecto
//									========================					===============		===============
//Parámetros de entrada: 					Cadena a tratar								S				Ninguno
//									Caracteres a sustituir							S				Ninguno
//									Caracteres para sustituir						N				Ninguno
//Salida:
//        La cadena tratada habiendo sustituido todas las apariciones de los caracteres de la cadena1 
//		por los correspondientes caracteres de la cadena2
//Comentarios:
//        Si la cadena 1 es más larga que la cadena 2, los caracteres de cadena1, sin caracter en cadena 2 se eliminan
//        Si la cadena 2 es más larga que la cadena 1, no hace nada con los caracteres que sobran
//        Si un caracter de la cadena 1 no se encuentra en la cadena, no se hace la sustitución
//Ejemplos:
//        sf_tr("di.me.anyo","anyomedi","20041118") -> "18.11.2004"
//        sf_tr("la-vida-bonica","-"," ")-> "la vida bonica"
//********************************************************************
function sf_tr(sls_cad,sls_vells,sls_nous){
	var sln_lcad=sls_cad.length;
	var sln_lvells=sls_vells.length;
	var sln_lnous=sls_nous.length;
	var sla_vell=new Array(sln_lvells);
	var sla_nou=new Array(sln_lvells);
	var sln_car;
	var sln_k1,sln_k2;
	if((sln_lvells==0)||(sln_lcad==0)){
		return sls_cad;
	}
	for(sln_k1=0;sln_k1<sln_lvells;sln_k1++){
		sla_vell[sln_k1]=sls_vells.charAt(sln_k1);
		if(sln_k1<sln_lnous){
			sla_nou[sln_k1]=sls_nous.charAt(sln_k1);
		}
		else{
			sla_nou[sln_k1]="";
		}
	}
	for(sln_k1=0;sln_k1<sln_lcad;sln_k1++){
		sls_car=sls_cad.charAt(sln_k1);
		for(sln_k2=0;sln_k2<sln_lvells;sln_k2++){
			if (sls_car==sla_vell[sln_k2]){
				sls_cad=sls_cad.substring(0,sln_k1)+sla_nou[sln_k2]+sls_cad.substring(sln_k1+1);
				if (sla_nou[sln_k2]==""){
					sln_k1--;
					sln_lcad--;
				}  
				break;
			}
		}
	}
	return sls_cad;
}
//********************************************************************
//* Tratamiento de Arrays
//********************************************************************
//********************************************************************
// Metodo array.indexOf(). Metodo indexOf para buscar en un array. Devuelve el número del primer elemento del array coincidente.
//********************************************************************
Array.prototype.indexOf =function sf_arrayIndexOf(t){
	for(var i=0;i<this.length;i++){
		if(this[i]==t){
			return i;
		}
	}
	return -1;
}
//********************************************************************
//* Dialogos Modales
//********************************************************************
//********************************************************************
//* Función sf_msg(Texto,Titulo)
//* Utiliza una ventana modal si existe el objeto, sino utiliza un window.alert
//* Devuelve siempre true 
//********************************************************************
function sf_msg(sls_text,sls_titulo){
	if (sls_titulo==""||(sls_titulo==undefined)){
		sls_titulo=IDIOMA_Alerta;
	}
	if (false && window.showModalDialog){
		window.showModalDialog(SGC_RAIZ+"form/msg.asp?tit="+sls_titulo+"&txt="+sls_text,"",SGS_ModalProps);
		return true;
	}
	else{
		window.alert(sls_text);
		return true;
	}
}
//********************************************************************
//* Función sf_cfm(sls_text,sls_titulo)
//* Utiliza una ventana modal si existe el objeto, sino utiliza un window.alert
//* Devuelve true si se pulsa en aceptar, y false si pulsa en cancelar
//********************************************************************
function sf_cfm(sls_text,sls_titulo){
	var slb_retorno;
	if (sls_titulo==""||(sls_titulo==undefined)){
		sls_titulo=IDIOMA_Alerta;
	}
	if (false && window.showModalDialog){
		slb_retorno=window.showModalDialog(SGC_RAIZ+"form/cfm.asp?tit="+sls_titulo+"&txt="+sls_text,"",SGS_ModalProps);
		return slb_retorno;
	}
	else{
		slb_retorno=window.confirm(sls_text);
		return slb_retorno;
	}
}
//********************************************************************
//* Tratamiento de ventanas y elementos en pantalla
//********************************************************************
//********************************************************************
// Función para esconder el reloj cuando termina de cargar
//********************************************************************
function sf_cargado(){
	var slo_ara=document.getElementById('trabajando');
	if (slo_ara){
		slo_ara.style.visibility="hidden";
	}
	var slo_ara=parent.document.getElementById('trabajando');
	if (slo_ara){
		slo_ara.style.visibility="hidden";
	}
	var slo_ara=parent.parent.document.getElementById('trabajando');
	if (slo_ara){
		slo_ara.style.visibility="hidden";
	}
	SGB_CARGADO=true;
}
//********************************************************************
// Función para esconder el reloj cuando termina de cargar
//********************************************************************
function sf_padreCargado(){
	var slo_ara=document.getElementById('trabajando');
	if (slo_ara){
		slo_ara.style.visibility="hidden";
	}
	var slo_ara=parent.document.getElementById('trabajando');
	if (slo_ara){
		slo_ara.style.visibility="hidden";
	}
	var slo_ara=parent.parent.document.getElementById('trabajando');
	if (slo_ara){
		slo_ara.style.visibility="hidden";
	}
	SGB_CARGADO=true;
}
//********************************************************************
//* Función para mostrar el reloj conforme está cargando
//********************************************************************
function sf_trabajando(sls_texto){
	SGB_CARGADO=false;
	var slo_ara=document.getElementById('textoTrabajando');
	slo_ara.innerHTML=sls_texto.expandir('&nbsp;&nbsp;&nbsp;');
	slo_ara=document.getElementById('trabajando');
	slo_ara.style.visibility="visible";
}
//********************************************************************
// Función para esconder el reloj cuando termina de cargar
//********************************************************************
function sf_cargadoTac(){
	var slo_ara=document.getElementById('trabajando');
	if (slo_ara){
		slo_ara.style.visibility="hidden";
	}
	SGB_CARGADO=true;
	clearTimeout(SGO_CARGATIME);
	SGO_CARGATIME="";
}
//********************************************************************
//* Función para mostrar el reloj conforme está cargando
//********************************************************************
function sf_trabajandoTac(sls_texto){
	SGB_CARGADO=false;
	var slo_ara=document.getElementById('textoTrabajando');
	slo_ara.innerHTML=sls_texto.expandir('&nbsp;&nbsp;&nbsp;');
	slo_ara=document.getElementById('trabajando');
	slo_ara.style.visibility="visible";
	if (SGO_CARGATIME==""){
		SGO_CARGATIME=setTimeout("document.location='"+SGC_RAIZ+"tactil/tactil.asp';",SGN_TMRECARGA);
	}
}
//********************************************************************
//* Función para mostrar el reloj conforme está cargando en la ventana padre
//********************************************************************
function sf_padreTrabajando(sls_texto){
	parent.SGB_CARGADO=false;
	var slo_ara=parent.document.getElementById('textoTrabajando');
	slo_ara.innerHTML=sls_texto.expandir('&nbsp;&nbsp;&nbsp;');
	slo_ara=parent.document.getElementById('trabajando');
	slo_ara.style.visibility="visible";
}
//********************************************************************
//* Función para comprobar si se han entrado todos los campos obligatorios
//********************************************************************
function sf_valOblig(slo_form){
	var sln_len; //Número de campos
	var sln_k; //Contador bucle
	sln_len=slo_form.elements.length;
	for (sln_k=0;sln_k<sln_len;sln_k++){
		if ((slo_form.elements[sln_k].value=="")&&(slo_form.elements[sln_k].valorOblig)){
			SGN_CAMPO=sln_k;
			return false;
		}
	}
	return true;
}
//********************************************************************
//* Función para desactivar los campos de un formulario
//********************************************************************
function sf_formDes(slo_form){
	var sln_len; //Número de campos
	var sln_k; //Contador bucle
	sln_len=slo_form.elements.length;
	for (sln_k=0;sln_k<sln_len;sln_k++){
		slo_form.elements[sln_k].disabled=true
	}
}
function sf_cargarPagError(sls_url){
	if (url.indexOf("tactil")>=0){
		parent.document.location=SGC_RAIZ+"gestioError.asp?r=2&ini=1";
	}else{
		parent.document.location=SGC_RAIZ+"gestioError.asp?r=2";
	}
}
//********************************************************************
//* Función para activar los campos de un formulario
//********************************************************************
function sf_formAct(slo_form){
	var sln_len; //Número de campos
	var sln_k; //Contador bucle
	sln_len=slo_form.elements.length;
	for (sln_k=0;sln_k<sln_len;sln_k++){
		if (!slo_form.elements[sln_k].valorDisabled){
			slo_form.elements[sln_k].disabled=false
		}
		if ((slo_form.elements[sln_k].valorOblig)&&(slo_form.elements[sln_k].value=="")){
			slo_form.elements[sln_k].style.backgroundColor=SGS_COLOBLIG;
		}
		else{
			slo_form.elements[sln_k].style.backgroundColor=SGS_COLNORMAL;
		}
	}
}
//********************************************************************
//* Función para cambiar el estado entre visible y oculto de un elemento
//********************************************************************
function sf_ocultarMostrar(sls_id){
	var slo_id=document.getElementById(sls_id);
	var sls_vis;
	if (slo_id){
		sls_vis=slo_id.style.visibility;
		if (sls_vis=="visible"){
			slo_id.style.visibility="hidden";
		}
		else{
			slo_id.style.visibility="visible";
		}	
	}
}
//********************************************************************
//* Función para ver los frames salva y salvapost
//********************************************************************
function sf_frameSalva(){
	var slo_salvaP=document.getElementById("salvarPost");
	var slo_salva=document.getElementById("salvar");
	var sls_vis;
	if (slo_salva){
		sls_vis=slo_salva.style.visibility;
		if (sls_vis=="visible"){
			slo_salva.style.visibility="hidden";
			if (slo_salvaP){
				slo_salvaP.style.visibility="visible";
			}
		}
		else{
			if (slo_salvaP){
				sls_vis=slo_salvaP.style.visibility;
				if (sls_vis=="visible"){
					slo_salvaP.style.visibility="hidden";			
				}
				else{
					slo_salva.style.visibility="visible";
				}
			}
			else{
				slo_salva.style.visibility="visible";
			}
		}
	}
	else
	if (slo_salvaP){
		sls_vis=slo_salvaP.style.visibility;
		if (sls_vis=="visible"){
			slo_salvaP.style.visibility="hidden";
		}
		else{
			slo_salvaP.style.visibility="visible";
		}
	}
}
//********************************************************************
//* Función para abrir una URL en la página actual
//********************************************************************
function sf_abrirUrl(sls_url){
	window.location=sls_url;
	}
//********************************************************************
//* Función para poner un div a display block
//* Espera el id del div, y pone el display a block
//********************************************************************
function sf_DisplayBlock(sls_id){
	var slo_ara=document.getElementById(sls_id)
	if (slo_ara){
		slo_ara.style.display="block";
	}
}
//********************************************************************
//* Función para poner un div a display none
//* Espera el id del div, y pone el display a none
//********************************************************************
function sf_DisplayNone(sls_id){
	var slo_ara=document.getElementById(sls_id)
	if (slo_ara){
		slo_ara.style.display="none";
	}
}
//********************************************************************
//Función que cambia la altura del elemento recibido
//********************************************************************
function sf_camAltura(sls_id,sls_y){
	var slo_ara=document.getElementById(sls_id)
	if ((slo_ara)&&(sls_y)){
		slo_ara.style.height=sls_y;
	}
}
//********************************************************************
//* Función para devolver la posición X en la página de un objeto
//* Espera el objeto
//********************************************************************
function sf_posx(slo_obj){
	var sln_left=0;
	if(slo_obj.offsetParent){
		while(1){
			sln_left+=slo_obj.offsetLeft;
			if(!slo_obj.offsetParent){
				break;
			}
			slo_obj=slo_obj.offsetParent;
		}
	}
	else if(slo_obj.x){
		sln_left+=slo_obj.x;
	}
	return sln_left;
}
//********************************************************************
//* Función para devolver la posición Y en la página de un objeto
//* Espera el objeto
//********************************************************************
function sf_posy(slo_obj){
	var sln_top=0;
	if(slo_obj.offsetParent){
		while(1){
			sln_top+=slo_obj.offsetTop;
			if(!slo_obj.offsetParent){
				break;
			}
			slo_obj=slo_obj.offsetParent;
		}
	}
	else if(slo_obj.y){
		sln_Top+=slo_obj.y;
	}
	return sln_top;
}
//********************************************************************
//* Funciones generales de las pantallas
//********************************************************************
function vigilaCambios(){
	if (SGB_RELOAD){
		return false;
	}
  if (typeof checkEditor=='function'){
		checkEditor();
	}
	return SGB_MODIF;
}
function botCancelar(sls_form){
	if (arguments.length>0){
		if (typeof checkEditor=='function'){
			checkEditor();
		}
		if (SGB_MODIF){
			slo_ara=document.getElementById(sls_form);
			if (slo_ara){
				slo_ara.reset();
				SGB_MODIF=false;
				SGB_RELOAD=true; //Para evitar el onbeforeunload
				location.reload();
			}
		}
	}
}
function botCerrar(){
	self.close();
}
//Funciones replicadas de la tactil
function sf_enviarFrame(sls_url){
	document.getElementById("salvar").src=sls_url;
}
//************************************************************************************
//Funcion para ocultar la ventana de alerta en la tactil
//************************************************************************************
function alertaOcultar(){
	var slo_ara=document.getElementById("alertaPagina");
	if (slo_ara){
		slo_ara.style.visibility="hidden";
	}
}
//************************************************************************************
//Funcion para mostrar la ventana de alerta en la tactil
//Espera el texto a mostrar y el color de la fuente
//************************************************************************************
function alertaMostrar(sls_txt,sls_color){
	var slo_ara=document.getElementById("alertaIzq");
	slo_ara.scrollTop=0; //Movemos el div al principio
	slo_ara.innerHTML=sls_txt+'<br/>&nbsp;';
	slo_ara=document.getElementById("alertaScrollMove");
	slo_ara.style.top="0px"; //Ponemos la imagen del cursor al inicio
	slo_ara=document.getElementById("alertaPagina");
	if (slo_ara){
		slo_ara.style.visibility="visible";
	}
}
//*******************************************************************************************
/*Función para la paginación en la táctil
scrollTop --> Posición de inicio visualizada
scrollHeight --> Altura total del elemento
offsetHeight --> zona visible
offsetTop --> posición absoluta respecto al body
Función sf_desplazar(id_Div_Desplazar, id_Div_Scroll,id_Img_Cerrar,id_Img_Up,id_Img_Down,id_Img_Move,Mover_UP_or_DOWN)
Espera:
	el id del objeto div sobre el que tenemos que realizar el deslazamiento
	el id del objeto en el que está el scroll
	el id de la imagen que sirve para el desplazamiento vertical arriba
	el id de la imagen que sirve para el desplazamiento vertical abajo
	el id de la imagen que marca la posición relativa
	el tipo de movimiento + -->Down, o - -->Up
	Un parametro booleano para ocultar o no todos los selects. En los scrolls de selects debe ser 1
	Ponemos que se desplace el 90% de la altura del elemento. Quizas debemos pasarlo como parametro????
*/
//*******************************************************************************************
function sf_desplazar(sls_div,sls_divScroll,sls_imgCerrar,sls_imgUp,sls_imgDown,sls_imgMove,sls_sen,slb_select){
	slo_div=document.getElementById(sls_div);//Objeto div a desplazar
	sln_div=slo_div.offsetHeight; //Altura de la zona visible. Desplazamos exactamente esa cantidad *0.9
	sln_divScrollH=document.getElementById(sls_divScroll).offsetHeight; //Altura del scroll para calcular el posi relativo
	var slo_ara=document.getElementById(sls_imgCerrar) // imagen Cerrar
	if (slo_ara){
		sln_imgCerrarH=slo_ara.height; //Altura de la imagen Cerrar
	}
	else{
		sln_imgCerrarH=0;
	}
	sln_imgUpH=document.getElementById(sls_imgUp).height; //Altura de la imagen Up
	sln_imgDownH=document.getElementById(sls_imgDown).height; //Altura de la imagen Down
	slo_imgMove=document.getElementById(sls_imgMove); //Obheto de la imagen Move, que moveremos según el desplazamiento del div
	sln_imgMoveH=slo_imgMove.height; //Altura de la imagen Move
	if (sls_sen=="+"){
		slo_div.scrollTop+=parseInt(sln_div*0.9); //Bajamos
	}
	else{
		slo_div.scrollTop-=parseInt(sln_div*0.9); // Subimos
	}
	sln_ara=sln_divScrollH-sln_imgCerrarH-sln_imgUpH-sln_imgDownH-sln_imgMoveH;
	if (SGC_NAV=="ie"){
		sln_ara=sln_ara+10;
	}
	sln_move=parseInt(slo_div.scrollTop*sln_ara/(slo_div.scrollHeight-sln_div));
	if (sln_move>0){
		slo_imgMove.style.top=sln_move+"px";
	}else{
		slo_imgMove.style.top="0px";
	}
	if (!slb_select){
		sf_selLimpiar();
	}
}
function sf_getRadioValue(sls_form,sls_campo){
	slo_campo=eval("document."+sls_form+"."+sls_campo);
	for (var i=0; i < slo_campo.length; i++){
		if (slo_campo[i].checked){
			return slo_campo[i].value;
		}
	}
}
//********************************************************************
//* sf_checkIniFin(campoFecIni,campoFecFin,campoFoco) 
//* Devuelve 1 si la fecha inicio<=fechaFin
//* Espera:  id del campo fecha inicio e id del campo fecha fin
//********************************************************************
function sf_checkIniFin(sls_ini,sls_fin,sls_foco){
	if (SGB_CONTROL==false){
		return true;
	}
	SGB_CONTROL=false;
	SGB_CONTROLSALVA=true;
	var slo_ara,sls_fecI,sls_fecF;
	var sln_diaI,sln_mesI,sln_anyoI;
	var sln_diaF,sln_mesF,sln_anyoF;
	slo_ara=document.getElementById(sls_ini);
	sls_fecI=slo_ara.value;
	if (sls_fecI==""){
		slo_ara.valorSalida="";
		slo_ara.valorInterno="";
		slo_ara.style.backgroundColor=slo_ara.valorOblig?SGS_COLOBLIG:SGS_COLNORMAL;
		SGB_CONTROL=true;
		SGB_CONTROLSALVA=true;
		return true;
	}
	slo_ara=document.getElementById(sls_fin);
	sls_fecF=slo_ara.value;
	if ((sls_fecI!="")&&(sls_fecF!="")){
		var sln_diaI,sln_mesI,sln_anyoI;
		var sln_diaF,sln_mesF,sln_anyoF;
		var sld_ini=new Date();
		var sld_fin=new Date();
		sln_diaI=parseFloat(sls_fecI.substr(0,2));
		sln_mesI=parseFloat(sls_fecI.substr(3,2))-1;
		sln_anyoI=parseFloat(sls_fecI.substr(6,4));
		sln_diaF=parseFloat(sls_fecF.substr(0,2));
		sln_mesF=parseFloat(sls_fecF.substr(3,2))-1;
		sln_anyoF=parseFloat(sls_fecF.substr(6,4));
		sld_ini.setFullYear(sln_anyoI);
		sld_ini.setMonth(sln_mesI);
		sld_ini.setDate(sln_diaI);
		sld_fin.setFullYear(sln_anyoF);
		sld_fin.setMonth(sln_mesF);
		sld_fin.setDate(sln_diaF);
		if (sld_ini>sld_fin){
			slo_ara=document.getElementById(sls_foco);
			slo_ara.value="";
			sf_msg(Calendar._MsgFinIni);
			setTimeout("document.getElementById('"+sls_foco+"').focus();",1);
			setTimeout("SGB_CONTROL=true;",100);
			return false;
		}
	}
	SGB_CONTROL=true;
	SGB_CONTROLSALVA=true;
	return true;					
}
//********************************************************************
//* sf_checkSemana(campoFecIni) 
//* Devuelvetrue si la fecha inicio<=fechaFin
//* Espera:  id del campo fecha inicio e id del campo fecha fin, y el id del campo al que debe devolver el foco
//********************************************************************
function sf_checkSemana(sls_ini){
	if (SGB_CONTROL==false){
		return true;
	}
	SGB_CONTROL=false;
	SGB_CONTROLSALVA=true;
	var sls_fin;
	var slo_ara,sls_fecI;
	var sln_diaI,sln_mesI,sln_anyoI;
	slo_ara=document.getElementById(sls_ini);
	sls_fecI=slo_ara.value;
	sls_fin=sls_ini.split("_")[0]+'_fin';
	if (sls_fecI==""){
		slo_ara.valorSalida="";
		slo_ara.valorInterno="";
		slo_ara.style.backgroundColor=slo_ara.valorOblig?SGS_COLOBLIG:SGS_COLNORMAL;
		slo_ara=document.getElementById(sls_fin);
		slo_ara.value="";
		slo_ara.valorSalida="";
		slo_ara.valorInterno="";
		slo_ara.style.backgroundColor=slo_ara.valorOblig?SGS_COLOBLIG:SGS_COLNORMAL;
		SGB_CONTROL=true;
		SGB_CONTROLSALVA=true;
		return true;
	}
	var sld_ini=new Date();
	var sld_fin=new Date();
	sln_diaI=parseFloat(sls_fecI.substr(0,2));
	sln_mesI=parseFloat(sls_fecI.substr(3,2))-1;
	sln_anyoI=parseFloat(sls_fecI.substr(6,4));
	sld_ini.setFullYear(sln_anyoI);
	sld_ini.setMonth(sln_mesI);
	sld_ini.setDate(sln_diaI);
	sln_ara=sld_ini.getDay()+1;// devuelve 1-domingo a 7-sábado
	sln_lunes=sln_ara-2;
	if (sln_lunes==-1){
		sln_lunes=6
	}
	sld_ini.setDate(sld_ini.getDate()-sln_lunes);
	sld_fin.setTime(sld_ini.valueOf());
	sld_fin.setDate(sld_fin.getDate()+6);
	slo_ara.value=sld_ini.print("");
	slo_ara=document.getElementById(sls_fin);
	slo_ara.value=sld_fin.print("");
	slo_ara.style.backgroundColor=SGS_COLNORMAL;
	SGB_CONTROL=true;
	SGB_CONTROLSALVA=true;
	return true;					
}
//********************************************************************************************************
//* Funciones de tratamiento de los selects en la Tactil
//* Función para la selección de un valor
//********************************************************************************************************
function sf_SelArray(sls_id,sls_value,sls_nombre,sln_sel,slb_oblig,sls_onChange){
	if (SGA_SELVALANT[sln_sel]!=sls_id){
		SGB_MODIF=true;
	}
	var slo_ara=document.getElementById(SGA_SELVALANT[sln_sel]);
	if(slo_ara){
		slo_ara.style.background=SGS_CNORMAL;
	}
	document.getElementById("campoTexto"+sls_nombre).value=sf_restaura(sls_value);
	if (sls_id==("seleccion"+sls_nombre)){
		document.getElementById(sls_nombre).value="";
	}
	else{
		document.getElementById(sls_nombre).value=sls_id;
	}
	document.getElementById("imagenDes"+sls_nombre).src=SGC_IMAGENES+"tactil/abajo.gif";
	document.getElementById(sls_id).style.background=SGS_CRNORMAL;
	SGA_SELVALANT[sln_sel]=sls_id;
	slo_ara=document.getElementById("campoTexto"+sls_nombre);
	if (slo_ara){
		if ((slb_oblig)&&(sls_id==("seleccion"+sls_nombre))){
			slo_ara.style.background=SGS_CFONFORO;
		}
		else{
			slo_ara.style.background=SGS_CFONFOR;
		}
	}
	sf_selOcultarMostrar(sls_nombre);
	if ((sls_onChange!="")&&(sls_id!=("seleccion"+sls_nombre))){
		eval(sls_onChange)
	}
}
//********************************************************************************************************
//Funcion para desplegar un select de tactil
//Espera el nombre del div,la posición Y del elemento,  el nombre del elemento, la altura minima para desplegar el div y un control para restarle la posicion inicial del div a la altura inicial del div desplegado
//********************************************************************************************************
function sf_selDesplegar(sls_div,sls_posicion,sls_nombre,sln_alto,slb_offset){
	posX=sf_posx(document.getElementById("campoTexto"+sls_nombre));
	slo_ara=document.getElementById(sls_div);
	if((SGN_SH-sls_posicion-WSC)>sln_alto){
		posY=sf_posy(document.getElementById("campoTexto"+sls_nombre))+WSC;
	}
	else{
		posY=sf_posy(document.getElementById("campoTexto"+sls_nombre))-sln_alto;
	}
	if (slb_offset){
		posY-=slo_ara.offsetTop;
	}
	if (slo_ara){
		posX-=slo_ara.scrollLeft;
		posY-=slo_ara.scrollTop;
	}
	var slo_id=document.getElementById("mostrar"+sls_nombre);
	if (slo_id){
		slo_ara=document.getElementById("mostrar"+sls_nombre);
		slo_ara.style.top=posY+"px";
		slo_ara.style.left=posX+"px";
	}
	sf_selOcultarMostrar(sls_nombre);
}
//********************************************************************************************************
//Función para cambiar el estado de visibilidad de un select tactil
//********************************************************************************************************
function sf_selOcultarMostrar(sls_nombre){
	var slo_id=document.getElementById("mostrar"+sls_nombre);
	var sls_vis;
	if (slo_id){
		sls_vis=slo_id.style.visibility;
		if (sls_vis=="visible"){
			document.getElementById("imagenDes"+sls_nombre).src=SGC_IMAGENES+"tactil/abajo.gif";
			slo_id.style.visibility="hidden";
		}
		else{
			sf_selLimpiar();
			document.getElementById("imagenDes"+sls_nombre).src=SGC_IMAGENES+"tactil/arriba.gif";
			slo_id.style.visibility="visible";
		}	
	}
}
//********************************************************************************************************
//Función para ocultar todos los selects tactil
//********************************************************************************************************
function sf_selLimpiar(){
	for(i=0;i<SGN_SELINDICE;i++){
		var sls_id="mostrar"+SGA_SELECTS[i];
		var sls_img="imagenDes"+SGA_SELECTS[i];
		document.getElementById(sls_id).style.visibility="hidden";
		document.getElementById(sls_img).src=SGC_IMAGENES+"tactil/abajo.gif";
	}
}
//********************************************************************************************************
//Funcion para mostrar pantalla mantenimiento de tablas generales aplicacion
//********************************************************************************************************
function sf_modifTG(sls_tabla,sls_tipo){
	var sls_url="";
	if (sls_tipo=="TGA"){
		var sls_url=SGC_RAIZ+"detallesApl/tablasGeneralesDetalleApl.asp?";
		sls_url=sls_url+"codigoInt="+sls_tabla;
	}else{
		var sls_url=SGC_RAIZ+"tablasGeneralesDetalleEmp.asp?";
		sls_url=sls_url+"codigoInt="+sls_tabla;
	}
	var slw_f=window.open(sls_url,"tablasGeneralesDetalle",SGW_PARAMGRANDE);
	slw_f.focus();
}
//********************************************************************
//Función  sf_intro --> Comprueba si se ha pulsado intro y llama a la función botAceptar();
//Parámetros de entrada:		Ninguno
//Comentarios:	Llama a la función botAceptar();
//********************************************************************
function sf_intro(slo_form,slo_ctrl){
	var sln_len=slo_form.elements.length;
	var sln_k,sln_k2;
	var sln_act=-1; //campo actual
	var sln_sig=-1; //Campo siguiente
	var sln_pri=-1; //primer campo activo y visible
	var slo_ara;
	for(sln_k=0;sln_k<sln_len;sln_k++){
		slo_ara=slo_form.elements[sln_k]
//Si el campo es visible, se ve en pantalla y no esta deshabilitado, y ya ha aparecido el actual Actualizamos el siguiente
		if ((slo_ara.type!="hidden")&&(slo_ara.type!="button")&&(!slo_ara.disabled)&&(slo_ara.style.visibility!="hidden")){
			if ((sln_act>-1)&&(sln_sig==-1)){
				sln_sig=sln_k
			}
		}
// Actualizamos el elemento actual
		if (sln_act==-1){
			if (slo_ara==slo_ctrl){
				sln_act=sln_k;
			}
		}
//Si el campo es visible, se ve en pantalla y no esta deshabilitado, Actualizamos el primero
		if ((slo_ara.type!="hidden")&&(slo_ara.type!="button")&&(!slo_ara.disabled)&&(slo_ara.style.visibility!="hidden")){
			if (sln_pri==-1){
				sln_pri=sln_k
			}
		}
	}
//Si estamos en el último campo, enviamos el formulario
	if (sln_sig==-1){
		slo_form.elements[sln_act].blur(); // Para forzar evento on blur del campo antes del submit
		if (typeof botAceptar=='function'){
			setTimeout('if (SGB_CONTROLSALVA){botAceptar()}',300);
		}
		else{
			return false;
		}
	}
	else{
		slo_form.elements[sln_sig].focus();
	}
	return;
}
//********************************************************************************************************
//Funciones para realizar un reload de la página actualizando uno o varios parámetros
//Reload de la propia página
//sf_reload("param1=valor1","param2=valor2",...,"paramN=valorN")
//********************************************************************************************************
function sf_reload(sls_loc){
	var sln_nArg=arguments.length; //Recoger numero de parametros recibidos
	if (sln_nArg==0){ //Si no pasamos parámetros, simplemente recarga la pagina
		location.reload();
		return;
	}
	if (sln_nArg==1){ //Si solo pasamos un parámetro, recargamos la pagina correspondiente 
		switch (sls_loc){
			case "PL": 
				parent.location.reload();
			break;
			case "POL": 
				parent.opener.location.reload();
			break;
			case "OL": 
				opener.location.reload();
			break;
			case "OPL": 
				opener.parent.location.reload();
			break;
			case "OPOL": 
				opener.parent.opener.location.reload();
			break;
			default:
				location.reload();
			break;
		}
		return;
	}
	if (sln_nArg>1){
		switch (sls_loc){
			case "PL": 
				sls_locF="parent.location";
			break;
			case "POL": 
				sls_locF="parent.opener.location";
			break;
			case "OL": 
				sls_locF="opener.location";
			break;
			case "OPL": 
				sls_locF="opener.parent.location";
			break;
			case "OPOL": 
				sls_locF="opener.parent.opener.location";
			break;
			default:
				sls_locF="location";
			break;
		}
	}
	var sls_search=eval(sls_locF+".search");//location.search;
	var sls_arg,sls_param,sls_value,sla_ara,sln_i,sln_k,sln_k2;
	for (sln_i=1;sln_i<arguments.length;sln_i++){ //Para cada argumento de la función
		sls_arg=arguments[sln_i];
		sla_ara=sls_arg.split("=");
		sls_param=sla_ara[0];
		sls_value=sla_ara[1];
		if (sls_param!=""){ //Si el parametro es distinto de nulos
			if (sls_search==""){ //Si no hay ningun parámetro lo añadimos
				sls_search="?"+sls_arg;
			}
			else{
				sln_k=sls_search.indexOf("?"+sls_param); //Buscamos primer param
				if (sln_k==-1){ //Si el parametro no esta lo añadimos al final
					sln_k=sls_search.indexOf("&"+sls_param); //Buscamos siguientes param
					if (sln_k==-1){ //Si el parametro no esta lo añadimos al final
						sls_search+="&"+sls_arg;
					}
					else{ //Si el parámetro ya está, cambiamos el valor
						sln_k+=sls_param.length+2;
						sln_k2=sls_search.indexOf("&",sln_k);
						if (sln_k2==-1){ // Es el último parámetro
							sls_search=sls_search.substr(0,sln_k)+sls_value;
						}
						else{
							sls_search=sls_search.substr(0,sln_k)+sls_value+sls_search.substr(sln_k2);
						}
					}
				}
				else{ //Si el parámetro ya está, cambiamos el valor
					sln_k+=sls_param.length+2;
					sln_k2=sls_search.indexOf("&",sln_k);
					if (sln_k2==-1){ // Es el último parámetro
						sls_search=sls_search.substr(0,sln_k)+sls_value;
					}
					else{
						sls_search=sls_search.substr(0,sln_k)+sls_value+sls_search.substr(sln_k2);
					}
				}
			}
		}
	}	
	switch (sls_loc){
		case "PL": 
			parent.location.search=sls_search;
		break;
		case "POL": 
			parent.opener.location.search=sls_search;
		break;
		case "OL": 
			opener.location.search=sls_search;
		break;
		case "OPL": 
			opener.parent.location.search=sls_search;
		break;
		case "OPOL": 
			opener.parent.opener.location.search=sls_search;
		break;
		default:
			location.search=sls_search;
		break;
	}
	return;
	//location.search=sls_search;
	//return;
}
//********************************************************************************************************
//Reload de la página que nos ha abierto
//sf_openerReload("param1=valor1","param2=valor2",...,"paramN=valorN")
//********************************************************************************************************
function sf_openerReload(){
	var sln_nArg=arguments.length; //Recoger numero de parametros recibidos
	if (sln_nArg==0){ //Si no pasamos parámetros, simplemente recarga la pagina 
		opener.location.reload();
		return;
	}
	var sls_search=opener.location.search;
	var sls_arg,sls_param,sls_value,sla_ara,sln_i,sln_k,sln_k2;
	for (sln_i=0;sln_i<arguments.length;sln_i++){ //Para cada argumento de la función
		sls_arg=arguments[sln_i];
		sla_ara=sls_arg.split("=");
		sls_param=sla_ara[0];
		sls_value=sla_ara[1];
		if (sls_param!=""){ //Si el parametro es distinto de nulos
			if (sls_search==""){ //Si no hay ningun parámetro lo añadimos
				sls_search="?"+sls_arg;
			}
			else{
				sln_k=sls_search.indexOf(sls_param);
				if (sln_k==-1){ //Si el parametro no esta lo añadimos al final
					sls_search+="&"+sls_arg;
				}
				else{ //Si el parámetro ya está, cambiamos el valor
					sln_k+=sls_param.length+1;
					sln_k2=sls_search.indexOf("&",sln_k);
					if (sln_k2==-1){ // Es el último parámetro
						sls_search=sls_search.substr(0,sln_k)+sls_value;
					}
					else{
						sls_search=sls_search.substr(0,sln_k)+sls_value+sls_search.substr(sln_k2);
					}
				}
			}
		}
	}
	opener.location.search=sls_search;
	return;
}
//********************************************************************************************************
//Formato de saltos de linea para teclados en pantallas tactiles
//sf_formatSaltos(sls_doc,slb_accion)
//Espera: 	sls_doc: Texto a formatear
//			slb_accion: Accion de lectura de BBDD o escritura en BBDD
//********************************************************************************************************
function sf_formatSaltos(sls_doc,slb_accion){
	if (slb_accion=="W"){
		sls_doc=sls_doc.allTrim()
		sls_doc=sls_doc.replace(/\r/g,"");
		sls_doc=sls_doc.replace(/\n/g,"<br/>");
	}else if (slb_accion=="R"){
		sls_doc=sls_doc.allTrim()
		sls_doc=sls_doc.replace(/<br\/>/g,'\n');
	}
	return sls_doc;
}
//********************************************************************************************************
//Funcion que crea ventana dhtml 
//sf_dw(sls_nombre,sls_loc,sls_tit,sls_opc)
//Espera: 	sls_nombre: nombre ventana
//			sls_loc: localizacion a cargar
//			sls_tit: titulo ventana
//			sls_opc: opciones ventana
//********************************************************************************************************
function sf_dw(sls_nombre,sls_loc,sls_tit,sls_opc){
	if (SGC_NAV=="ie"){
		if (sls_opc=="") {sls_opc="width=410px,height=445px,resize=1,scrolling=1,center=1"}
	}else if (SGC_NAV=="ff"){
		if (sls_opc=="") {sls_opc="width=415px,height=460px,resize=1,scrolling=0,center=1"}		
	}else{
		if (sls_opc=="") {sls_opc="width=410px,height=445px,resize=1,scrolling=1,center=1"}		
	}
	var dw=dhtmlwindow.open(sls_nombre,"iframe",sls_loc,sf_restaura(sls_tit),sls_opc,"")
	//dw.onclose=function(){return window.confirm("Cerrar ventana?")}
}
//********************************************************************************************************
//Funcion que asigna foco a la ventana e imprime (Importante para IE)
//sf_wPrint()
//********************************************************************************************************
function sf_wPrint(){
	window.focus();
	window.print();	
}
