	gaFiltro = Array();
	function filtroDescargas( cIdCategoria, cIdBarrio, cIdAtractivos )
	{
		oCategoria = document.getElementById( cIdCategoria );
		oBarrio  = document.getElementById( cIdBarrio );
		oAtractivos  = document.getElementById( cIdAtractivos );
		ncCategoria= oCategoria.selectedIndex > 0 ? oCategoria.options[oCategoria.selectedIndex].value: false;
		ncBarrio = oBarrio.selectedIndex > 0 ? oBarrio.options[oBarrio.selectedIndex].value: false;
		bFiltro = false;

		// Saca del Array de Filtro los que no van mas ahi
		for ( nIndexArray = 0 ; nIndexArray < gaFiltro.length;  )
		{
			oItem = gaFiltro[nIndexArray];
			aValues = oItem[0].split('|');
			bFiltro  = ((aValues[1] == ncCategoria || ncCategoria == false) && (aValues[0] == ncBarrio || ncBarrio == false)) ? true: false;
			if ( bFiltro )
			{
				// Busca al Group en el destino
					cGroupLabel = oItem[2]; oGroup = null;
					for( nIndex = 0; nIndex < oAtractivos.childNodes.length && oGroup == undefined; nIndex++ )
					{
						if ( oAtractivos.childNodes[nIndex].label == cGroupLabel )
							oGroup = oAtractivos.childNodes[nIndex];
					}
				// Si no encuentra el Group en el Destino => lo agrega
					if ( oGroup == undefined )
					{
						oGroup = document.createElement('optgroup');
						oGroup.label = cGroupLabel;
						oAtractivos.appendChild(oGroup);
					}
				// El item nuevo lo agrega al destino
					oOption = new Option( oItem[1], oItem[0]);
					try {
						oAtractivos.add(oOption, null ); // standards compliant; doesn't work in IE
					} catch(ex) {
						oAtractivos.add(oOption, oAtractivos.selectedIndex); // IE only
					}
					oGroup.appendChild(oOption);
				// Lo quita del array
					gaFiltro.shift( );
			} else nIndexArray++
		}
		// Mueve del Select al Array de Filtro
		for ( nIndex = 0 ; nIndex < oAtractivos.length; )
		{
			oItem = oAtractivos[nIndex];
			aValues = oItem.value.split('|');
			bFiltro  = ((aValues[1] == ncCategoria || ncCategoria == false) && (aValues[0] == ncBarrio || ncBarrio == false)) ? false: true;
			if ( bFiltro )
			{
				oGroupParent = oItem.parentNode;
				// Lo agrega al array
				gaFiltro.push(  Array( oItem.value, oItem.text, oGroupParent.label ) );
				oGroupParent.removeChild(oItem);
			} else nIndex++;
		}
		//Quita los groups sin items
		for( nIndex = 0; nIndex <  oAtractivos.childNodes.length; )
		{
			if ( oAtractivos.childNodes[nIndex].childNodes.length == 0 )
				oAtractivos.removeChild( oAtractivos.childNodes[nIndex] );
			else nIndex++;
		}
	}
