/**
 * Utilidades.
 */

//-------------------------------------------------------------

// Función para la generación de select dinámicos. Con el ultimo parametro indicamos el nombre de la lista dinámica.

function loadSubFamilias(combo,idFamilia,subCombo,idSubFamilia,nombreLista) {
					
	if (idFamilia != '') {
		if (typeof(nombreLista) != "undefined") {
			eval("var listaSubFamiliasSel = "+nombreLista+"[idFamilia];");		
			eval("var listaSubFamiliasIdSel = "+nombreLista+"Id[idFamilia];");	
		} else {
			var listaSubFamiliasSel = listaSubFamilias[idFamilia];		
			var listaSubFamiliasIdSel = listaSubFamiliasId[idFamilia];		
		}
	} else {
		var listaSubFamiliasSel = false;
	}
	var isNS = (navigator.appName == 'Netscape');
	
	var formulario = combo.form;
	var comboSubFamilias = document.getElementById(subCombo);		
	
	clear(comboSubFamilias);
	
	if(listaSubFamiliasSel) {
		var arraySubFamilias = listaSubFamiliasSel.split(",");
		var arraySubFamiliasId = listaSubFamiliasIdSel.split(",");
		var siguienteSel = false;
		for (var lSubFamilias=0;lSubFamilias<arraySubFamilias.length;lSubFamilias++) {
		
			optSubFamilia = new Option(arraySubFamilias[lSubFamilias], arraySubFamiliasId[lSubFamilias]);

			if ((siguienteSel) && (!isNS))
				optSubFamilia.selected=true;
							
			siguienteSel = false
			if (arraySubFamiliasId[lSubFamilias]==idSubFamilia) {
				if (isNS) {
					optSubFamilia.selected=true;
				} else {
					siguienteSel = true;
				}
			}				    	
			comboSubFamilias.options[comboSubFamilias.length] = optSubFamilia;
		}
		if ((siguienteSel) && (!isNS)) {
			comboSubFamilias.options[comboSubFamilias.length-1].selected=true;	
		}	
		
		if(arraySubFamilias.ubound<=1) {
			optSubFamilia.options[1].selected = true;
		}
		comboSubFamilias.disabled=false;
	} else {
		comboSubFamilias.disabled=true;	
	}	
}

// Borrado de las opciones del select.
function clear(combo){

  for(var c=combo.length;c>0;c--){
        combo.options[c] = null;
    }
    combo.options[0].selected = true;
}


function Formatear(valor,dec,miles)
//valor: número que deseamos formatear y redondear
//dec: número de decimales a presentar haciendo el correspondiente redondeo
//mile: valor true o false para indicar si deseamos separadores de miles o no.
{
 
	 var num = valor;
	 var signo=3;
	 var expr;
	 var cad = ""+valor;
	 var ceros = "";
	 var pos;
	 var pdec;
	 var i;
 

		for (i=0; i < dec; i++)
		  ceros += '0';
		 
		pos = cad.indexOf('.');
		  
		if (pos < 0)
		  cad = cad+"."+ceros;
		
		else
		{
		 pdec = cad.length - pos -1;
		 if (pdec <= dec) 
		  {
		    for (i=0; i< (dec-pdec); i++)
		      cad += '0';
		  }
		 else
		  {
		   num = num*Math.pow(10, dec);
		   num = Math.round(num);
		   num = num/Math.pow(10, dec);
		   cad = new String(num);
		  }
		}
		
		pos = cad.indexOf('.');

		if (pos < 0) 
		  pos = cad.lentgh;
		
		if (cad.substr(0,1)=='-' || cad.substr(0,1) == '+') 
		  signo = 4;
		
		if (miles && pos > signo)
		 do
		  {
		    expr = /([+-]?\d)(\d{3}[\.\,]\d*)/;
		    cad.match(expr);
		    cad=cad.replace(expr, RegExp.$1+','+RegExp.$2);
		  }
		 while (cad.indexOf(',') > signo)
		
		if (dec<0) 
		 cad = cad.replace(/\./,'');
  
		/* ESTA FUNCION NOS SUMINISTRA EL FORMATO 999,999,999.999
		   HACEMOS LOS CAMBIOS OPORTUNOAS PARA QUE SE DEVUELVA 999.999.999,999
		*/
		  cad = cad.replace(/\./,'&');
		  cad = cad.replace(/\,/g,'.');
		  cad = cad.replace(/\&/,',');
		  
		return cad;

}
