var id_menu_click='-1';
var id_operativa_click='li_operativa_listado';

/* Librería JavaScript DMSLIB
 * Propiedad de DMS Consulting, S.C.P. 
 * Última modificación: 26/11/2010  
 */


var dmslib = new Object();
dmslib.version = '1.2';
dmslib.ultimaMoficacion = new Date(2010, 10, 26);
dmslib.idSubmitActual = -1;
dmslib.valueSubmitActual = -1;
dmslib.submitActual = -1;
dmslib.locale = 'es';
dmslib.cargando = 'Enviando datos...';
var urlRequest = '';
var formulario = '';
var popupActual=-1;
var idElemento=-1;
var accionBorrado='';
var identificador='';
var idInput='';
var activarTRCuenta=0;
var activarTRImporte=0;

/* Objeto Validar relacionado con la validación de formularios */
dmslib.Validar = {
		validarCampos: function(frm, callback, idSubmit){			
			formulario = dmslib.DOM.dameElemento(frm); // Cogemos el objecto formulario
			
            var ok=true;
            
            for (x=0; x<formulario.elements.length; x++){ // Buscamos campos requeridos sin informar            	
            	// Si el campo es requerido verificamos que este informado            	
            	if (formulario.elements[x].className.indexOf('Req') != -1){
            		
            		// Ponemos la clase inicial por si anteriormente se ha proceso la validacion
            		// Caso de desplegable con Minutos
                    if(formulario.elements[x].name=='minutos'){
                    	// Solo si la hora esta seleccionada ponemos en estado normal
                    	if(formulario.elements['hora'].selectedIndex != 0)
                    		dmslib.DOM.dameElemento('hora').className='tdFormularioLabel';
                    }
                    else
                    	dmslib.DOM.dameElemento(formulario.elements[x].name).className='tdFormularioLabel';
                    
            		
            		// Empezamos con input's tipo text y password
                    if (formulario.elements[x].type == 'text' || formulario.elements[x].type == 'password' || formulario.elements[x].type == 'textarea'){
                       	// Caso de text Calendario
                        if (formulario.elements[x].className.indexOf('ReqCal') != -1){
                           	if (formulario.elements[x].value.indexOf('/')==-1){
                        		dmslib.DOM.dameElemento(formulario.elements[x].name).className='tdFormularioFail';
                                ok=false;
                            }
                            else{
                            	formulario.elements[x].className = 'inputReqCal';
                            }
                        }
                        
                        // Caso text con e-mail
                        else if (formulario.elements[x].className.indexOf('ReqEmail')!=-1){
                        	if (formulario.elements[x].value == ''){
                        		dmslib.DOM.dameElemento(formulario.elements[x].name).className='tdFormularioFail';
                                ok=false;
                            }
                        else{
                        	formulario.elements[x].className = 'inputReqEmail';
                            
                        	// Verificamos que el formato de la direccon de correo sea correcto
                            var patron=/^[A-a-zZ0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/i;
                            var resultado = patron.exec(formulario.elements[x].value.trim());
                            if(resultado==null){
                            	ok=false;
                                dmslib.DOM.dameElemento(formulario.elements[x].name).className='tdFormularioFail';
                            }
                        }
                    }
                    else{
                    	if (formulario.elements[x].value == ''){
                    		if(formulario.elements[x].className.indexOf('Falta')!=-1)
                    			formulario.elements[x].className = formulario.elements[x].className.substring(0, formulario.elements[x].className.indexOf('Falta'));
                                dmslib.DOM.dameElemento(formulario.elements[x].name).className='tdFormularioFail';
                                ok=false;
                            }
                        else{
                        	if(formulario.elements[x].className.indexOf('Falta')!=-1)
                        		formulario.elements[x].className = formulario.elements[x].className.substring(0, formulario.elements[x].className.indexOf('Falta'));
                            }
                        }
                    }
                    else if (formulario.elements[x].type == 'select-one'){
                      	if(formulario.elements[x].selectedIndex == 0 || formulario.elements[x].disabled == true){
                      		// Caso de desplegable con Minutos
                    		if(formulario.elements[x].name=='minutos')
                    			dmslib.DOM.dameElemento('hora').className='tdFormularioFail';
                    		else
                    			dmslib.DOM.dameElemento(formulario.elements[x].name).className='tdFormularioFail';
                            ok=false;
                    	}
                    }                            
                }
            
            	// Verificamos si es el caso de e-mail no requerido pero informado
            	if (formulario.elements[x].className.indexOf('Email')!=-1 && formulario.elements[x].className.indexOf('Req')==-1 && formulario.elements[x].value!=''){
            		// Verificamos que el formato de la direccon de correo sea correcto
                    var patron=/^[A-a-zZ0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/i;
                    var resultado = patron.exec(formulario.elements[x].value);
                    if(resultado==null){
                    	ok=false;
                        dmslib.DOM.dameElemento(formulario.elements[x].name).className='tdFormularioFail';
                    }
            	}
            }   
            //alert("validar ok 0");
            if(ok){ // Si todos los campos requeridos están informados hacemos el request del formulario
            	//alert("validar ok");
            	dmslib.Ajax.request(formulario.action, dmslib.DOM.dameValoresForm(frm), callback);                  		
			}
		}, 

		enter: function(e){
			try{
        	        if (document.all){ // IE 
        	            // numeros
        	            if (event.keyCode==13){
        	            	dmslib.Validar.validarCampos('loginForm',cbloginForm,'inputEntrar');
        	                event.returnValue = false;
        	            }
        	        }
        	        else{ // firefox 
        	        	if (e.keyCode==13){
        	            	dmslib.Validar.validarCampos('loginForm',cbloginForm,'inputEntrar');
        	                return false;
        	            }        	            
        	        }    
        	    }catch(e){
        	    	alert('Error JavaScript: ' + e.message);
        	    	//mostra_error('Error JavaScript: ' + e.message);
        	    }            	
            },
            
            inhabilitaEnter: function(e){
        	    try{
        	    	 var key;

        	         if(window.event)
        	              key = window.event.keyCode;     //IE
        	         else
        	              key = e.which;     //firefox

        	         if(key == 13)
        	              return false;
        	         else
        	              return true;    
        	    }catch(e){
        	    	alert('Error JavaScript: ' + e.message);
        	    }            	
            },
            filtraEnteros: function(e){
            	try{
                    var disable = true;
                    if (document.all){ // IE 
                        // numeros
                        if (event.keyCode>=48 && event.keyCode<=57)
                            disable = false;
                        if (disable)
                            event.returnValue = false;
                    }
                    else{ // firefox 
                        if (e.which==8 || e.which==9)
                            disable = false;
                        // teclat numeric
                        if (e.which>=48 && e.which<=57)
                            disable = false;
                        //  flexetes
                        if (e.which==0)
                            disable = false;
                        if (disable)
                            return false;
                    }    
                }catch(e){
                    alert('Error JavaScript: ' + e.message);
                }
            },
            filtraDecimales: function(e,id){
                try{
                    var disable = true;
                    if (document.all){ // FF o IE
                        if (dmslib.DOM.dameElemento(id).value.indexOf('.')!=-1 && (event.keyCode==46) )
                            event.returnValue = false;
                        else{                
                            if (event.keyCode>=48 && event.keyCode<=57)
                                disable = false;
                            //  punt decimal
                            if (event.keyCode==46)
                                disable = false;
                            if (disable)
                                event.returnValue = false; 
                        }
                    }
                     else{
                        if (dmslib.DOM.dameElemento(id).value.indexOf('.') != -1 && (e.which==46) ){
                            e.preventDefault();
                        }
                        else{
                            // teclat numeric
                            if (e.which>=48 && e.which<=57)
                                disable = false;
                            //  flexetes
                            if (e.which==0)
                                disable = false;
                            //  punt decimal
                            if (e.which==46)
                                disable = false;
                            //  borrar
                            if (e.which==8)
                                disable = false;
                            if (disable)
                                return false; 
                        }
                     }
                }catch(e){
                    alert('Error JavaScript: ' + e.message);
                }
            }
                        

};

 

/* Objeto DOM relacionado con el acceso a elementos HTML*/

dmslib.DOM = {
            dameElemento: function(elemento){ // Devuelve un objecto dom a partir del id
                  return document.getElementById(elemento);
            },    
            dameValoresForm: function(formulario){ // Devuelve una cadena con los nombres y los valores de un formulario
                var elementos=''; 

                for(i=0; i<document.forms[formulario].elements.length; i++){ 
      
                	if(document.forms[formulario].elements[i].name!=''){
           
	                      // hacemos tratamiento para los checkbox's
	                      if (document.forms[formulario].elements[i].type=='checkbox'){
	                           if(document.forms[formulario].elements[i].checked==true)
	                                 elementos += "&" + document.forms[formulario].elements[i].name + "=1";
	                           else
	                        	     elementos += "&" + document.forms[formulario].elements[i].name + "=0";
	                      }
	                      // si es tipo 'select-one' cogemos selectedIndex
	                      else if (document.forms[formulario].elements[i].type == 'select-one')
	                    	  elementos += "&" + document.forms[formulario].elements[i].name + '=' + document.forms[formulario].elements[i].options[document.forms[formulario].elements[i].selectedIndex].value;	                      	  
	                      else if (document.forms[formulario].elements[i].type == 'select-multiple'){
	                    	  var multiple = document.forms[formulario].elements[i];
	                    	  for (var f = 0; f < multiple.options.length; f++){
	                    		  elementos += "&" + document.forms[formulario].elements[i].name + '=' + multiple.options[f].value;	                    		  
	                    	  }
	                      } // si es el tipo text incluimos el value y escapamos el caracter amperand
	                      else if (document.forms[formulario].elements[i].type != 'button')
	                           elementos += "&" + document.forms[formulario].elements[i].name + '=' + (document.forms[formulario].elements[i].value).replace('&','%26');
	                     
                	}
                }
                elementos = elementos.substring(1);            
                return elementos;
          }                 
};
 

/* Objeto Ajax relacionado request ajax asincronos */

dmslib.Ajax = {
             request: function(url, params, callback){
            	 /*alert(url);
            	 alert(params);
            	 alert(callback);*/
                  var req = new function(){
                	  
                    var activexmodes=["Msxml2.XMLHTTP", "Microsoft.XMLHTTP"]                                         
                                          
                    // Comprobamos si el navegador es IE
                    if (window.ActiveXObject){ 
                        for (var i=0; i<activexmodes.length; i++){
                             try{
                                    return new ActiveXObject(activexmodes[i]);
                             }
                             catch(e){

                             }
                        }
                    }
                    else if (window.XMLHttpRequest) // Comprobamos si el navegador es  Mozilla, Safari etc
                        return new XMLHttpRequest();
                    else
                        return false;
                  }

                  if(req){
                        req.onreadystatechange = function(){
                             if (req.readyState==4){ // si el request ha terminado
                                   if (req.status==200){ // si el request se ha completado correctamente
                                         /*var contentType = req.getResponseHeader("Content-Type");
                                         alert(contentType);
                                         
                                         alert(req.responseText);
                                         if (contentType == "text/xml") // XML
                                        	 callback(req.responseXML);
                                         else*/                                       
                                	   callback(req);
                                   }
                              }
                        }                        
                        req.open('POST', url, true);
                        req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=ISO-8859-15' );
                        req.send(params);
                  }          
             } 

			,actualiza: function(url, div){	
			    var req = new function(){ ;			
			         var activexmodes = ["Msxml2.XMLHTTP", "Microsoft.XMLHTTP"];			
			      if (window.ActiveXObject){ // Comprobamos si el navegador es IE			
			          for (var i=0; i<activexmodes.length; i++){			
			                try{			
			                      return new ActiveXObject(activexmodes[i]);			
			               }			
			               catch(e){
			
			               }			
			          }			
			      }			
			      else if (window.XMLHttpRequest) // Comprobamos si el navegador es  Mozilla, Safari etc			
			          return new XMLHttpRequest();			
			      else			
			          return false;			
			    }
			    if(req){
			         req.onreadystatechange = function(){			
			               if (req.readyState==4){ // si el request ha terminado
			                     if (req.status==200){ // si el request se ha completado correctamente
			                    	 // insertamos el resultado del request en el div	
			                    	 dmslib.DOM.dameElemento(div).innerHTML = req.responseText;		
			                     	 
				                     // si hay codigo javascript lo ejecutamos			
				                     var patron = /<script[^>]*>[^>]*<\/script>/i;
				                     var response = req.responseText;
				                     var codigoJS;
				                     var posicio = response.indexOf("</script>");
			                     
				                     // Iteramos por cada bloque <script>
				                     while(posicio!=-1){    
				                    	 codigoJS = patron.exec(response);
				                         codigoJS[0] = codigoJS[0].replace(/^<script>/i,"").replace(/<\/script>/i,"");			
				                         eval(codigoJS[0]);
				                         response = response.substring(posicio+9);
				                         posicio = response.indexOf("</script>")
				                     }
					                     
				                     // Subimos scroll de la pagina
				                     dmslib.Widget.subirScroll();
			                     }
			                }			
			         }
			         //alert(url);
			         req.open('GET', url, true);
			         req.send(null);			
			    }				
			}

      ,autocomplete: function(idInput, url){
    	  try{ 
    		  // Seteamos la url en una varaible glonal
    		  urlRequest = url;
              
    		  // Cogemos el objecto input
    		  var input = dmslib.DOM.dameElemento(idInput);  

              // Creamos un div hidden situado debajo del input
              var nuevoDiv = document.createElement('div');
              nuevoDiv.id = 'div' + idInput;
              nuevoDiv.className = 'divAutocomplete';
              
              var td = dmslib.DOM.dameElemento('td' + idInput); 
             
              td.appendChild(nuevoDiv);
              
              if(document.all){ // IE o FF
                    input.attachEvent('onkeyup', autocompletePress);
                    //input.attachEvent('onblur', autocompleteBlur);
              }else{
                    input.addEventListener('keyup', autocompletePress, false);
                    //input.addEventListener("blur", autocompleteBlur, false);
              }
            }
            catch(e){
                  alert(e.message);
            }
      }
};

 
/* Objeto Widget relacionado con efectos graficos*/
dmslib.Widget = {
			verFiltro: function(){
            	try{
            		// Con scroll
            	    if (document.documentElement.clientHeight < document.documentElement.scrollHeight){
            	    	var y = document.documentElement.scrollHeight;
            	        var x = document.documentElement.scrollWidth;
            	    }
            	    // Sin scroll
            	    else{
            	    	var y = document.documentElement.clientHeight;
            	        var x = document.documentElement.clientWidth;
            	    }
            	        
            	    dmslib.DOM.dameElemento('dgris').style.height = y + 'px';
            	    dmslib.DOM.dameElemento('dgris').style.width = x + 'px';
            	    dmslib.DOM.dameElemento('dgris').style.display = 'block';
            	}catch(e){
            		alert('Error JavaScript: ' + e.message);
            	}
            },
            escondeFiltro: function(){
            	try{
            		dmslib.DOM.dameElemento('dgris').style.display = 'none';
            	}catch(e){
            		alert('Error JavaScript: ' + e.message);
            	}
            },
            verDivCargando: function(){
            	 
            	var y = document.documentElement.clientHeight;
      	        var x = document.documentElement.clientWidth - 1;
         	    dmslib.DOM.dameElemento('divCargando').style.height = y + 'px';
         	    dmslib.DOM.dameElemento('divCargando').style.width = x + 'px';
         	    dmslib.DOM.dameElemento('divCargando').style.display = 'block';            	
            },
            escondeDivCargando: function(){
            	setTimeout(function(){dmslib.DOM.dameElemento('divCargando').style.display = 'none';}, 600);            	
           },
			verPopup: function(id,idE){
            	try{
            		// Seteamos variable global popupActual
            		popupActual=id;
            		
            		// Seteamos variable global idElemento que se desea borrar
            		idElemento=idE;
            		
            		// Aplicamos filtro
            		dmslib.Widget.verFiltro();
            		
            		// Mostramos el popup
            		dmslib.DOM.dameElemento(id).style.display='block';

                	// Cogemos dimensiones de la pantalla
                    var pantallax=document.body.clientWidth;
                    var pantallay=document.documentElement.clientHeight; 
                    
                    // agafem dimensions del popup
                    var divx=dmslib.DOM.dameElemento(id).clientWidth;
                    var divy=dmslib.DOM.dameElemento(id).clientHeight;
                    
                   
                    
                    // agafem valor de coordenada x per a centrar el popup
                    var posiciox=pantallax/2-divx/2;     
                    var ScrollTop = document.body.scrollTop;
                    
                    if (ScrollTop == 0)  {
                        if (window.pageYOffset)
                            ScrollTop = window.pageYOffset;
                        else
                            ScrollTop = (document.body.parentElement) ? document.body.parentElement.scrollTop : 0;
                    }

                    // si l'scroll s'ha mogut el contemplem
                    if (ScrollTop > 0)
                        var posicioy=pantallay/2-divy/2+ScrollTop;
                    else
                        var posicioy=pantallay/2-divy/2;        
                    
                    // situem el popup absolutament
                    dmslib.DOM.dameElemento(id).style.left = posiciox + 'px';
                    dmslib.DOM.dameElemento(id).style.top = posicioy + 'px';                   
           		
            	}catch(e){
            		alert('Error JavaScript: ' + e.message);
            	}
            },            
            escondePopup: function(id){
            	try{
            		document.getElementById(popupActual).style.display = 'none';
            	    dmslib.Widget.escondeFiltro();
            	    popup_actual=-1;
            	}catch(e){
            		alert('Error JavaScript: ' + e.message);
            	}
            },
            confirmarBorrado: function(accionBorrado, identificador, texto){
            	try{
            		// Llamamos a accion borrado
            		dmslib.Ajax.actualiza(accionBorrado+'?'+identificador+'='+idElemento,'divVentana');
            		
            		// Inicializamos variables globales
            		accionBorrado='';
            		identificador='';
            		idElemento=-1;
            		
            		// Escondemos el popup
            		dmslib.Widget.escondePopup();
            		popup_actual=-1;
            		
            		// Cogemos el div
            		var div = dmslib.DOM.dameElemento('divConfirmacionAccion');
            		
            		//Preparamos efecto confirmacion accion
            		dmslib.Widget.prepararAccionConfirmacion(texto);
            	}catch(e){
            		alert('Error JavaScript: ' + e.message);
            	}
            },
            prepararAccionConfirmacion: function(texto){
            	try{          		
            		// Cogemos el div
            		var div = dmslib.DOM.dameElemento('divConfirmacionAccion');
            		
            		// Cogemos dimensiones de la pantalla
                    var pantallax=document.body.clientWidth;
                    var pantallay=document.body.clientHeight; 
                    
                    // Mostramos el div
            	    dmslib.DOM.dameElemento('divConfirmacionAccion').style.display = 'block';
            	    
            	    // Cogemos dimensiones del div a mostrar
                    var divx=div.clientWidth;
                    var divy=div.clientHeight;
                    
                    /*alert("scroll top");
                    document.body.scrollTop=0;*/
                    
                    // Cogemos el valor de coordenada x para centrar el div a mostrar
                    var posicionx=pantallax/2-divx/2; 
                    
                    // Posicionamos el div
                    div.style.left = posicionx + 'px'; 
            		div.style.top = -60 + 'px';           		
            	                	    
            		// Introducimos el contenido del div en funcion del mensaje            		
            		if(texto.indexOf('Error')!=-1)
            			div.innerHTML = '<img class="imgConfirmacion" src="img/warning.png">'+texto;
            		else
            			div.innerHTML = '<img class="imgConfirmacion" src="img/confirmarBorrado.png">'+texto;
            	    
            		// Iniciamos el efecto de bajar y subir
            		dmslib.Widget.efectoBajarConfirmarAccion('divConfirmacionAccion');            	    
            	
            	}catch(e){
            		alert('Error JavaScript: ' + e.message);
            	}
            },
            efectoBajarConfirmarAccion: function(id){
            	try{
            		//Cargamos div de confirmacion
            		var div = dmslib.DOM.dameElemento(id);
            		
            		//Mostramos o ocultamos div en funcion de su posicion top
            		var top = div.style.top.replace('px', '');
            		if(Number(top)<0){
            			div.style.top = (Number(top)+5) + 'px';
            			setTimeout(function(){dmslib.Widget.efectoBajarConfirmarAccion(id);}, 50);
            		}else{  
            			setTimeout(function(){dmslib.Widget.efectoSubirConfirmarAccion(id);}, 3000);
            		}
            	}catch(e){
            		alert('Error JavaScript: ' + e.message);
            	}
            },
            efectoSubirConfirmarAccion: function(id){
            	try{
            		//Cargamos div de confirmacion
            		var div = dmslib.DOM.dameElemento(id);
            		
            		//Llamada recursiva para ocultar div confirmacion
            		var top = div.style.top.replace('px', '');
            		if(Number(top)>-45){
            			div.style.top = (Number(top)-5) + 'px';
            			setTimeout(function(){dmslib.Widget.efectoSubirConfirmarAccion(id);}, 50);
            		}
            	}catch(e){
            		alert('Error JavaScript: ' + e.message);
            	}
            },
            subirScroll: function(id){
            	try{
            		document.documentElement.scrollTop='0px';
            		
            		// Para Chrome i Safari
            		document.body.scrollTop='0px';
            	}catch(e){
            		alert('Error JavaScript: ' + e.message);
            	}
            } 
}

function desSeleccionarMenu(){
	try{
		// Si hay alguna opcion de menu seleccionada la deseleccionamos
		if(id_menu_click!='-1'){
			dmslib.DOM.dameElemento(id_menu_click).className='liMenu';
			id_menu_click='-1';
		}
	}
    catch(e){
        alert(e.message);
  }  
}

function autocompletePress(e){
	try{        
		// Obtenemos el id del input a traves del objeto evento
        if (document.all)  // IE o FF
        	idInput = event.srcElement.id;
        else
        	idInput = e.target.id;                
            // Cogemos el objecto input
            input = dmslib.DOM.dameElemento(idInput);  
            
            // Cogemos el div del input para mostrar los resultados            
            var divInput = dmslib.DOM.dameElemento('div' + idInput);
            
            // Hacemos request AJAX para obtener el listado   
            if(input.value.length==1){
                divInput.style.display = 'none';
                divInput.innerHTML = '';
          }
          else if (input.value.length>2){
        	  
        	  // Mostramos la imagen de cargando
        	  var imgCargando = dmslib.DOM.dameElemento('img' + idInput);
        	  imgCargando.style.visibility = 'visible';
        	  
        	  // Inicio request AJAX
        	  dmslib.Ajax.request(urlRequest,'cadena='+input.value,cbAutoComplete);
            
          }            
      }
      catch(e){
            alert(e.message);
      }   
}

function cbAutoComplete(req){
	try{
		// Cogemos el div del input para mostrar los resultados            
        var divInput = dmslib.DOM.dameElemento('div' + idInput);		
        
    	// Passamosa un array los resultados del request
        var data=req.responseText.split(';');
        
        // Limpiamos el div
        divInput.innerHTML = '';            
        
        // Inicalizamos la variable que controla si hay coincidencias a false
        var encontrados = false;        
        
        // Comprobamos si el usuario ha escrito 2 letras para hacer filtrado
        var input = dmslib.DOM.dameElemento(idInput);
             var ulElementos = document.createElement('ul');
              ulElementos.className = 'ulAutocomplete';
              for (var i=0; i<data.length; i++){
                    if(data[i].toLowerCase().indexOf(input.value.toLowerCase())==0){
                    	                    	
                    	// Creamos li para la actual coincidencia
                         var nuevaLi = document.createElement('li');
                         nuevaLi.id = 'li_' + idInput + '_' + i;
                         nuevaLi.style.zIndex = 10;
                         
                         // Creamos tag b para poner en negrita las letras coincidentes
                         var b = document.createElement('b');
                         b.id = 'b_' + idInput + '_' + i;
                         b.innerHTML = data[i].substring(0, input.value.length);                             
                        
                         // Asociadmos evento onclick al elemento b
                         if (document.all) // IE o FF
                               b.attachEvent('onclick', seleccionAutocomplete );
                          else
                                b.addEventListener('click', seleccionAutocomplete, false);                              
                         
                         // Añadimos tag b dentro de la li
                         nuevaLi.appendChild(b);
                         
                         // Añadimos el resto de la candena en la li
                         var restoCadena = document.createTextNode(data[i].substring(input.value.length));
                         nuevaLi.appendChild(restoCadena);                    

                         // Asociadmos evento onclick a la li
                         if (document.all) // IE o FF
                               nuevaLi.attachEvent('onclick', seleccionAutocomplete );
                          else
                                nuevaLi.addEventListener('click', seleccionAutocomplete, false);

                         ulElementos.appendChild(nuevaLi);
                         encontrados = true;
                    }
              }
              
              if(encontrados){
                    divInput.appendChild(ulElementos);
                    divInput.style.display = 'block';
              }
              else{
                    divInput.style.display = 'none';
                    divInput.innerHTML = '';
              }   
              
              // Escondemos la imagen de cargando
        	  var imgCargando = dmslib.DOM.dameElemento('img' + idInput);
        	  imgCargando.style.visibility = 'hidden';
	}
	catch(e){
		alert("Error funcion cbAutoComplete:" + e.message);            
	}
}

 

function seleccionAutocomplete(e){
      try{
            var idLi, idLiArray;
            if (document.all)  // IE o FF
                  idLi = event.srcElement.id;
            else
            	idLi = e.target.id;            

            // Si el click viene del elemento <b> cambiamos el id
            if(idLi.indexOf('b_')!=-1){
                  idLi = idLi.substring(2);
                  idLi = 'li_' + idLi;
            }
 
            // convertimos el id de la li en un array
            idLiArray = idLi.split('_');
            
            // Cogemos el objeto input
            var input = dmslib.DOM.dameElemento(idLiArray[1]);

            // Cogemos el objeto li seleccionado  
            var li = dmslib.DOM.dameElemento(idLi); 

            // Ponemos el valor de la seleccion en el input
            input.value = li.innerHTML.replace(/<\/b>/i,"").replace(/<b[\w\W]*>/i,"").replace("&amp;","&");

            // escondemos el div del autocomplete
            var div = dmslib.DOM.dameElemento('div' + idLiArray[1]);
            div.style.display = 'none';
            //div.innerHTML = '';         
      }
      catch(e){
            alert("Error funcion seleccionAutocomplete:" + e.message);
      }
}
 

function autocompleteBlur(e){
      try{
            var idObjecto;
            if (document.all)  // IE o FF
                  idObjecto = event.srcElement.id;
            else
            	idObjecto = e.target.id;

          
            // escondemos el div del autocomplete
            var div = dmslib.DOM.dameElemento('div' + idInput);
            div.style.display = 'none';
            div.innerHTML = '';       
      }
      catch(e){
            alert(e.message);
      }
}

//callback para el request de filtra cuentas
function cbFiltraCuentas(req){
      try{
    	  // Si ha habido algun error lo pintamos
            if(req.responseText!='ok'){
                  dmslib.DOM.dameElemento('errorloginForm').innerHTML = '<img class=\'imgAlerta\' src=\'img/alerta.png\' />' + req.responseText;
            }else{
                  dmslib.Ajax.actualiza('Login_autenticarOk', 'div_central');
            }
      }
      catch(e){
            alert(e.message);            
      }
}

//callback para el request de login
function cbloginForm(req){
      try{
            // Si ha habido algun error lo pintamos
            if(req.responseText!='ok'){
            	dmslib.DOM.dameElemento('errorloginForm').style.display = 'block';
            	dmslib.DOM.dameElemento('errorloginForm').innerHTML = req.responseText;
            }else{
				dmslib.Ajax.actualiza('Login_autenticarOk', 'divCentral');            	
            }
      }
      catch(e){
            alert(e.message);            
      }
}

// Callback para formularios de modificacion
function cbModificar(req){	
	try{	
		// Si ha habido algun error lo pintamos
		if(req.responseText!='ok'){			
			dmslib.DOM.dameElemento('divError').innerHTML = '<img class=\'imgAlerta\' src=\'img/alerta.png\' />Error: ' + req.responseText;
		}else{
			// Subimos scroll
			dmslib.Widget.subirScroll();
			
			//Preparamos div confirmacion
    		dmslib.Widget.prepararAccionConfirmacion('Datos modificados correctamente.');    		   		
		}
	}
	catch(e){
		alert(e.message);            
	}
}


//callback para el request de Fases en alta Oportunidades
function cbFases(req){
      try{
            // Sacamos la cadena 'cargando...' del submit y lo volvemos a activar
            /*dmslib.DOM.dameElemento(dmslib.idSubmitActual).value = dmslib.valueSubmitActual;
            dmslib.DOM.dameElemento(dmslib.idSubmitActual).disabled=false;
            dmslib.idSubmitActual=-1;*/            

            // Si ha habido algun error lo pintamos
            if(req.responseText=='ko'){
                //dmslib.DOM.dameElemento('errorServiciosProductos').innerHTML = '<img class=\'imgAlerta\' src=\'img/alerta.png\' />Servicio o Producto sin Fases definidas';            	
                dmslib.DOM.dameElemento('selectFases').disabled = true;
                dmslib.DOM.dameElemento('selectFases').innerHTML = "";
            }else if(req.responseText=='noproducto'){
            	//dmslib.DOM.dameElemento('errorServiciosProductos').innerHTML = '<img class=\'imgAlerta\' src=\'img/alerta.png\' />Selecciona un Servicio o Producto correcto';
            	dmslib.DOM.dameElemento('selectFases').disabled = true;
            	dmslib.DOM.dameElemento('selectFases').innerHTML = '';
            }else{
            	document.getElementById("selectFases").disabled = false;
            	
            	var fases = '<option>';
            	// Seteamos respuesta de xml
            	var xmlDoc = req.responseXML.documentElement;
            	
            	// Bucle con cada fase del producto
            	for (var x=0; x<xmlDoc.childNodes.length; x++){
            		fases+='<option value="'+xmlDoc.childNodes[x].childNodes[0].firstChild.data+'">'+xmlDoc.childNodes[x].childNodes[1].firstChild.data+'</option>';    		    		
            	}

            	dmslib.DOM.dameElemento('selectFases').innerHTML = fases; 
            	//dmslib.Ajax.actualiza('Oportunidades_dameFasesServiciosProductosOk','idFase');
            }
      }
      catch(e){
            alert(e.message);
      }
}

//callback para Altas
function cbAlta(req){
	try{ 		
		// Si ha habido algun error lo pintamos
		if(req.responseText=='repetida'){
			// Subimos scroll
			dmslib.Widget.subirScroll();
			// Preparamos div confirmacion
			dmslib.Widget.prepararAccionConfirmacion('Error: Cuenta repetida. Por favor resiva el nombre.');
		}else if(req.responseText!='ok'){
			// Subimos scroll
			dmslib.Widget.subirScroll();
			// Preparamos div confirmacion
			dmslib.Widget.prepararAccionConfirmacion('Error Alta');
		}else{			
			// Limpiamos campos del formulario
			Form.reset(formulario.id);
			
			// Subimos scroll
			dmslib.Widget.subirScroll();
			
			// Preparamos div confirmacion
			dmslib.Widget.prepararAccionConfirmacion('Alta realizada correctamente.');			
		}
	}
	catch(e){
		alert(e.message);            
	}
}

//callback para Altas especifica para oportunidades para poder borrar combo fases
function cbAltaOportunidades(req){
	try{ 		
		// Si ha habido algun error lo pintamos
		if(req.responseText!='ok'){
			dmslib.DOM.dameElemento('divError').innerHTML = '<img class=\'imgAlerta\' src=\'img/alerta.png\' />' + req.responseText;
		}else{			
			// Limpiamos campos del formulario
			Form.reset(formulario.id);
			
			// Borramos i deshabilitamos combo fases
			dmslib.DOM.dameElemento('selectFases').disabled = true;
        	dmslib.DOM.dameElemento('selectFases').innerHTML = '';
			
			// Subimos scroll
			dmslib.Widget.subirScroll();
			
			// Preparamos div confirmacion
			dmslib.Widget.prepararAccionConfirmacion('Alta realizada correctamente.');			
		}
	}
	catch(e){
		alert(e.message);            
	}
}

// callback para Altas de documentos
function cbAltaDocumento(){
	try{
		dmslib.DOM.dameElemento('divImgUploadDocumento').style.display = 'none';
		if(window.frames['upload_target'].document.body.innerHTML=='ok'){			
			dmslib.DOM.dameElemento('divUploadDocumento').style.display = "none";
			dmslib.DOM.dameElemento('divDatosDocumento').style.display = "block";
		}else{
			dmslib.DOM.dameElemento('divError2').style.display = 'block';
			dmslib.DOM.dameElemento('divError2').innerHTML = window.frames['upload_target'].document.body.innerHTML;
		}
	}catch(e){
		alert(e.message);            
	}
}

//callback para modificacion de documentos
function cbModifDocumento(req){
	try{
		//Subimos scroll
		dmslib.Widget.subirScroll();

		//Preparamos div confirmacion
		dmslib.Widget.prepararAccionConfirmacion('Documento modificado correctamente.');		
	}catch(e){
		alert(e.message);            
	}
}

//callback para descargar documento
function cbDescargarDocumento(req){
	try{
		alert(req.responseText);
		// Si ha habido algun error lo pintamos
		if(req.responseText.indexOf('Error')!=-1){
			// Subimos scroll
			dmslib.Widget.subirScroll();
			// Preparamos div confirmacion
			dmslib.Widget.prepararAccionConfirmacion(req.responseText);
		}else{
			document.location.href=req.responseText;
		}
	}catch(e){
		alert(e.message);            
	}
}


// callback para filtro de oportunidades por año
function cbFiltroOportunidadAny(req){
	try{		
		// Si ha habido algun error lo pintamos
		if(req.responseText!='ok'){
			dmslib.DOM.dameElemento('errorloginForm').innerHTML = '<img class=\'imgAlerta\' src=\'img/alerta.png\' />' + req.responseText;
		}else{
			Form.reset(formulario.id);
		}
	}
	catch(e){
		alert(e.message);            
	}
}


function posa_focus_menu(id){
    try{
    	// agafem el nom de la classe
    	var nom_classe=$(id).className.split('_'); 
    	if ($(id).className.indexOf('Seleccionat')==-1)
			$(id).className='liMenuSeleccionat'; 		
    }
    catch(e){
    	alert('Error JavaScript: ' + e.message);
    }
}

function treu_focus_menu(id){
    try{
    	// agafem el nom de la classe
    	var nom_classe=$(id).className.split('_');
    	if ($(id).className.indexOf('Seleccionat')==-1)    			
    		$(id).className='liMenu';    		
    }
    catch(e){
    	alert('Error JavaScript: ' + e.message);
    }
}
function posa_focus_menu_click(id){
    try{    	
      	if(id_menu_click!=id){      		
      		if(id_menu_click!='-1'){
      			var nom_classe=dmslib.DOM.dameElemento(id_menu_click).className.split('_');    		
      			dmslib.DOM.dameElemento(id_menu_click).className="liMenu";
      		}
      		dmslib.DOM.dameElemento(id).className="liMenuSeleccionat";
    		id_menu_click=id;
    	}
    }
    catch(e){
    	alert('Error JavaScript: ' + e.message);
    }
}

function posa_focus_operativa(id){
    try{
    	// agafem el nom de la classe
    	var nom_classe=$(id).className; 
    	if ($(id).className.indexOf('Seleccionat')==-1){
			$(id).className='liMenuSeleccionat'; 		
    	}
    }
    catch(e){
    	alert('Error JavaScript: ' + e.message);
    }
}

function treu_focus_operativa(id){
    try{
    	// agafem el nom de la classe
    	var nom_classe=$(id).className;
    	if ($(id).className.indexOf('click')==-1)    			
    		$(id).className='li_operativa';    		
    }
    catch(e){
        alert('Error JavaScript: ' + e.message);
    }
}
function posa_focus_operativa_click(id){
    try{
      	if(id_operativa_click!=id){
    		var nom_classe=$(id_menu_click).className.split('_');
    		$(id_operativa_click).className='li_operativa';
    		$(id).className='li_operativa_click';
    		id_operativa_click=id;
    	}      
    }
    catch(e){
    	alert('Error JavaScript: ' + e.message);
    }
}

function selecciona_items_rols(){
	try{		
		var i=0; 
 
		while (i<$('alta_prova1').length ) { 
			$('alta_prova1')[i].selected=true; 
			i=i+1;
		}
	}catch(e){
		alert('Error JavaScript: ' + e.message);
	}
}

function muestra_calendario(mes, ano, e, id_text, nacimiento){
	try{
    	// activem envent per amagar calendari 
    	if (document.all) // IE o FF
	  		document.attachEvent("onmousedown", amaga_calendari);
	  	else
	  		document.addEventListener('mousedown', amaga_calendari, false);
	  	
    	// forzamos onblur del input para que no aparezca el cursor en su interior
    	dmslib.DOM.dameElemento(id_text).blur();
    	
	  	// iniciem creacio calendari    	
    	var meses = new Array(12);
    	var dias = new Array(7);
    	
    	// locale español
    	if(dmslib.locale=='es'){
    		meses[1] = "Enero";
    		meses[2] = "Febrero";
    		meses[3] = "Marzo";		
    		meses[4] = "Abril";
    		meses[5] = "Mayo";
    		meses[6] = "Junio";
    		meses[7] = "Julio";
    		meses[8] = "Agosto";
    		meses[9] = "Septiembre";
    		meses[10] = "Octubre";
    		meses[11] = "Noviembre";
    		meses[12] = "Diciembre";
    		
    		dias[1] = "lun";
    		dias[2] = "mar";
    		dias[3] = "mi&eacute;";		
    		dias[4] = "jue";
    		dias[5] = "vie";
    		dias[6] = "sab";
    		dias[7] = "dom";
    	}
    	// locale catala
    	else if (dmslib.locale=='ca'){
    		meses[1] = "Gener";
    		meses[2] = "Febrer";
    		meses[3] = "Mar&ccedil;";		
    		meses[4] = "Abril";
    		meses[5] = "Maig";
    		meses[6] = "Juny";
    		meses[7] = "Juliol";
    		meses[8] = "Agost";
    		meses[9] = "Setembre";
    		meses[10] = "Octubre";
    		meses[11] = "Novembre";
    		meses[12] = "Desembre";
    		
    		dias[1] = "dil";
    		dias[2] = "dim";
    		dias[3] = "dim";		
    		dias[4] = "dij";
    		dias[5] = "div";
    		dias[6] = "dis";
    		dias[7] = "diu";
    	}
    	// locale ingles
    	else{
    		meses[1] = "January";
    		meses[2] = "February";
    		meses[3] = "March";		
    		meses[4] = "April ";
    		meses[5] = "May";
    		meses[6] = "June";
    		meses[7] = "July";
    		meses[8] = "August";
    		meses[9] = "September";
    		meses[10] = "October";
    		meses[11] = "November";
    		meses[12] = "December";
    		
    		dias[1] = "mon";
    		dias[2] = "tue";
    		dias[3] = "wed";		
    		dias[4] = "thu";
    		dias[5] = "fri";
    		dias[6] = "sat";
    		dias[7] = "sun";
    	}

    	var hoy=new Date();
    	if (mes!=-1){
    		hoy.setMonth(mes);
    		hoy.setYear(ano);
    	}
    	var foo;
    	var dia_actual=hoy.getDate();
    	var mes_actual=meses[hoy.getMonth()+1];
    	var ano_actual=hoy.getUTCFullYear();
    	var fecha_a_devolver ="";
    	hoy.setDate(1);
    	var dia_empieza_mes=hoy.getDay();
 		var mes_anterior = hoy.getMonth()-1;
 		var mes_posterior = hoy.getMonth()+1; 		
 		var ano_anterior = ano_actual;
 		var ano_posterior = ano_actual;
 		var i;
 		if (mes_anterior==-1){
 			mes_anterior=11;
 			ano_anterior=ano_anterior-1;
 		}
 	 	if (mes_posterior==12){
 			mes_posterior=0;
 			ano_posterior=ano_posterior+1;
 		}
 		var codigo = "<table id=\"element_calendari\" class='tcalendari'><tr id=\"element_calendari\"><td id=\"element_calendari\" class='td_separa_cal'></td></tr>"; 		
 		codigo += "<tr id=\"element_calendari\"><td id=\"element_calendari\" colspan='7'><span id=\"element_calendari\" class='accions_calendari' title='Ano'><select class='select_cal' onchange='muestra_calendario("+ (hoy.getMonth()) + ", this.options[this.selectedIndex].text,-1,\"" + id_text + "\","+nacimiento+")' id=\"element_calendari\">";
 		var ano_inicio_combo=2;
 		if(nacimiento==1)
 			ano_inicio_combo=70;
 		for(i=new Date().getUTCFullYear()-ano_inicio_combo; i<new Date().getUTCFullYear()+5; i++){
 			if (ano_actual==i)
 				codigo += "<option id=\"element_calendari\" selected>" +i+ "</option>";
 			else
 				codigo += "<option id=\"element_calendari\">" +i+ "</option>";
 		}
 		codigo += "</select></span></td></tr>";
 		codigo += "<tr id=\"element_calendari\"><td id=\"element_calendari\" colspan='7' class='tit_calendari'><ul id=\"element_calendari\" class=\"ul_mes_cal\"><li id=\"element_calendari\">&nbsp;&nbsp;<img class=\"accions_calendari\" id=\"element_calendari\" onclick='muestra_calendario(" + mes_anterior + "," + ano_anterior + ",-1,\"" + id_text + "\"," + nacimiento + ")' src=\"img/flecha_izquierda.png\" /><li id=\"element_calendari\" class=\"li_mes_cal_mig\">" + meses[hoy.getMonth()+1] + "</li><li id=\"element_calendari\"><img id=\"element_calendari\" onclick='muestra_calendario(" + mes_posterior + "," + ano_posterior + ",-1,\"" + id_text + "\"," + nacimiento + ")' class=\"accions_calendari\" src=\"img/flecha_derecha.png\" /></li></ul></td></tr>";
 		codigo += "<tr id=\"element_calendari\"><td id=\"element_calendari\" class='tit_dies_calendari'>" + dias[1] +"</td><td id=\"element_calendari\" class='tit_dies_calendari'>" + dias[2] +"</td><td id=\"element_calendari\" class='tit_dies_calendari'>" + dias[3] +"</td><td id=\"element_calendari\" class='tit_dies_calendari'>" + dias[4] +"</td><td id=\"element_calendari\" class='tit_dies_calendari'>" + dias[5] +"</td><td id=\"element_calendari\" class='tit_dies_calendari'>" + dias[6] +"</td><td id=\"element_calendari\" class='tit_dies_calendari'>" + dias[7] +"</td></tr>";
 		while(mes_actual==meses[hoy.getMonth()+1]){
 			foo = String(hoy.getDate());
 			if(foo.length==1)
 				foo = String('0' + foo); 			
 			fecha_a_devolver = foo;
 			foo = String(hoy.getMonth()+1);
 			if(foo.length==1)
 				foo = String('0' + foo);
 			
 			fecha_a_devolver += "/" + foo + "/" + String(hoy.getUTCFullYear()).substring(2);
 			//	hoy.getDate() + "/" + (hoy.getMonth()+1) + "/" + hoy.getUTCFullYear();
 			if(hoy.getDate()==1){
 				codigo += "<tr id=\"element_calendari\">"
 				if (hoy.getDay()==0)
 					codigo += "<td id=\"element_calendari\"></td><td id=\"element_calendari\"></td><td id=\"element_calendari\"></td><td id=\"element_calendari\"></td><td id=\"element_calendari\"></td><td id=\"element_calendari\"></td>"
 				else{
	 				for(var x=1; x<hoy.getDay();x++)
	 					codigo += "<td id=\"element_calendari\"></td>"
	 			}
 			}
	    	codigo += "<td id=\"element_calendari\" onmouseover=\"this.className='td_calendari_hover'\" onmouseout=\"this.className='td_calendari'\" onclick=\"$('dcalendari').style.display='none';$('"+ id_text + "').value='" + fecha_a_devolver + "'\" class='td_calendari'>" + hoy.getDate() + "</td>";
 			if (hoy.getDay()%7==0){
 				codigo += "</tr><tr>"
 			}
 			hoy.setDate(hoy.getDate()+1);
 		}
 		codigo += "</tr>" 		
 		codigo+="</table>";
 		dmslib.DOM.dameElemento('dcalendari').innerHTML=codigo;
        // Si el calendario esta creado no hace falta posiconarlo
        if(e!=-1){        	
	        if (document.all){   // IE = true o FF = false
	        	pos_y = event.clientY-80;
	            pos_x = event.clientX;
	        }
	        else{
	        	pos_y = e.clientY-80;
	        	pos_x = e.clientX;
	        }
	        
	        // Si el scroll se ha movido lo contemplamos para posicionar el calendario
	        if (document.documentElement.scrollTop>0 || document.body.scrollTop>0)
	        	pos_y = pos_y + document.documentElement.scrollTop+document.body.scrollTop;
	        dmslib.DOM.dameElemento('dcalendari').style.top = pos_y + 'px';
	        dmslib.DOM.dameElemento('dcalendari').style.left = pos_x + 'px';   
	        dmslib.DOM.dameElemento('dcalendari').style.display = 'block';   
        }
    }
    catch(e){
    	alert('Error JavaScript: ' + e.message);
    }
}
 
function amaga_calendari(e){
    try{
    	if (document.all){ // IE o FF
    		if(event.srcElement.id!='element_calendari'){
				document.getElementById('dcalendari').style.display='none';  
		    	document.detachEvent("onmousedown", amaga_calendari);
		    }
    	}
    	else{
    		if(e.target.id!='element_calendari'){
    			document.getElementById('dcalendari').style.display='none'; 
    			document.removeEventListener('mousedown', amaga_calendari, false);   
    		} 			
    	}
    }
    catch(e){
    	alert('Error JavaScript: ' + e.message);
    }
}

var filtros=new Array();

function focoFiltroDashboard(id,pos){
    try{
    	dmslib.DOM.dameElemento(filtros[pos]).className='aFiltroGrafica';
    	dmslib.DOM.dameElemento(id).className='aFiltroGraficaSeleccionada';
    	filtros[pos]=id;
    }
    catch(e){
    	alert('Error JavaScript: ' + e.message);
    }
}

function CBCompruevaTipoDocumento(req){
    try{
    	//Si el document incorpora import, el mostrem    	
    	if(req.responseText=="ok"){
    		dmslib.DOM.dameElemento("trImporte").style.display="table-row";
    		//dmslib.DOM.dameElemento("inputImporte").className="inputBlurReq";
    	}else{
    		dmslib.DOM.dameElemento("trImporte").style.display="none";
    		//dmslib.DOM.dameElemento("inputImporte").className="inputBlur";
    	}
    }
    catch(e){
    	alert('Error JavaScript: ' + e.message);
    }	
}


function comprovaVinculacion(id){
    try{
    	if(id=="2"){
    		dmslib.DOM.dameElemento("trCuenta").style.display="table-row";
    		dmslib.DOM.dameElemento("cuentaAC").className="inputBlurReq";
    	}else{
    		dmslib.DOM.dameElemento("trCuenta").style.display="none";
    		dmslib.DOM.dameElemento("cuentaAC").className="inputBlur";
    	}
    }
    catch(e){
    	alert('Error JavaScript: ' + e.message);
    }	
}
