function setVisibleFeature(nGroupIndex, nFeatureIndex, bVisible)
{
	gFeatureGroups[nGroupIndex].aryFeatures[nFeatureIndex].bVisible = bVisible;
}

function setVisibleFeatureGroup(nGroupIndex, bVisible)
{	
	gFeatureGroups[nGroupIndex].bVisible = bVisible;
	for (var i = 0; i < gFeatureGroups[nGroupIndex].aryFeatures.length; i++)
		setVisibleFeature(nGroupIndex, i, bVisible);
}

function UpdateLayerStatusStrings()
{
	var strInvisibleLayers = "";
	var strInactiveLayers = "";
	var strAreaLayers = "";
	for (var i = 0; i < gFeatureGroups.length; i++)
	{
		for (var j = 0; j < gFeatureGroups[i].aryFeatures.length; j++)
		{
			var fea = gFeatureGroups[i].aryFeatures[j];
			if (!fea.bVisible)
				strInvisibleLayers += fea.strFeatureID + ",";
			
			if (!fea.bActive)
				strInactiveLayers += fea.strFeatureID + ",";
				
			if (fea.strFeatureType == "area")
				strAreaLayers += fea.strFeatureID + ",";
		}
	}
/*
	var bHasImage = false;	
	var group = FindGroupByName(IMAGE_GROUP_NAME);
	if (group)
	{
		for (var fi = 0; fi < group.aryFeatures.length; fi++)
		{
			if (group.aryFeatures[fi].strFeatureID == GEO_TIFF_LAYER_ID)
			{
				if (g_strImageID && group.aryFeatures[fi].bVisible)
				{
					bHasImage = true;	
					break;
				}
			}
			else
			{
				if (group.aryFeatures[fi].bVisible)
				{
					bHasImage = true;	
					break;
				}
			}
		}
	}
	
	g_bFill = !bHasImage;
*/	
	// re order the layer ids
	var ilayers = strInvisibleLayers.split(',');
	var areaLayers = strAreaLayers.split(',');
	var orderLayers = gLayersOrder.split(',');
	g_strVisibleLayers = "";
	gLayerParams = "";
	for (var i = 0; i < orderLayers.length; i++) {
		var match = false;
		for (var j = 0; !match && j < ilayers.length; j++)
		{
			if (orderLayers[i] == ilayers[j])
				match = true;
		}
		if (match) continue;
		 
		g_strVisibleLayers += orderLayers[i] + ",";
		
		var found = false;
		for (var j = 0; j < areaLayers.length; j++) {
			if (orderLayers[i] == areaLayers[j]) {
				found = true;
				break;
			}
		}
		if (found) { // area feature
			if (g_bFill)
				gLayerParams += "fill:true,";
			else
				gLayerParams += "fill:false,";
		}
		else {
			if (orderLayers[i] == "countyap")
				gLayerParams += "opacity="+g_strPhotoOpacity;
			else if (orderLayers[i] == GEO_TIFF_LAYER_ID)
			{
				var group = FindGroupByName(IMAGE_GROUP_NAME);
				if (group)
				{
					var feature = null;
					for (var fi = 0; fi < group.aryFeatures.length; fi++)
					{
						if (group.aryFeatures[fi].strFeatureID == GEO_TIFF_LAYER_ID)
						{
							feature = group.aryFeatures[fi];
							break;
						}
					}

					if (g_strImageID && feature && feature.bVisible)
						gLayerParams += "opacity:"+g_strGeotiffOpacity+";name:"+g_strImageID;
					else
						gLayerParams += "opacity:"+g_strGeotiffOpacity;
				}
			}
			gLayerParams += ",";
		}		
	}
	g_strInactiveLayers = strInactiveLayers;
	return g_strVisibleLayers;
}
