// Following structures support the grouping of Layers.  This should be located
// in the ArcIMSparams.js, but becuase the header loads earlier, it is all located 
// in the script that supports only the group layering.

//group layers (for one set only) list the layers to group together, each being
//a list in the array. groupName is the name to give the group the TOC.

// A reworking of the standard grouplayers implementation to support multiple
// groups of layers (as opposed to a single group).  Simple an array of arrays.
// A little more difficult to work with, but gives greater flexibility.  CAT.
// Structure - there is a top level array, groupManager that has as many entries
//    as there are groups.
//    Then there is a groupLayerInfo array for each of the Groups, including the name, whether it is visible, and what its layers are
//    Finally there is a groupLayers array for each of the layers in a Group.

  // The first 'group' in the array is simply 'default' which lists all the standard layers
  // as outlined in the site AXL file.
  
  var groupManager = new Array(5);    // let's give the system a clue and dimension an array with an exact number of layers.
  var activeGroup = "";

  // The default group 
  var groupVisible = true;
  var groupName = "Default Map";
  var groupLayers = new Array();
  var groupLayerInfo = new Array();
  groupLayers[0] = "Plat1";
  groupLayers[1] = "Plat2";
  groupLayers[2] = "Plat3";
  groupLayers[3] = "Dimensions";    
  groupLayers[4] = "Lot Number";
  groupLayers[5] = "Plat Boundary"; 
  groupLayers[6] = "Roads";
  groupLayers[7] = "Quarter Sections";
  groupLayers[8] = "Lot Hooks";
  groupLayers[9] = "Right of Way";
  groupLayers[10] = "Section Hooks";
  groupLayers[11] = "Streams";
  groupLayers[12] = "Lakes";
  groupLayers[13] = "Lot Original";
  groupLayers[14] = "Parcels";
  groupLayers[15] = "Jurisdictions";
  groupLayers[16] = "Sections";
  groupLayers[17] = "Section Numbers";
  groupLayers[18] = "PLT1";
  groupLayers[19] = "PLT2";
  groupLayers[20] = "PLT3";
  groupLayers[21] = "PLT4";
  groupLayers[22] = "PLT5";
  groupLayers[23] = "AT1";
  groupLayers[24] = "AT2";
  groupLayers[25] = "AT3";
  groupLayers[26] = "AT4";
  groupLayers[27] = "AT5";
  groupLayers[28] = "Block Number";
  groupLayers[29] = "Acreage Text";
  groupLayers[30] = "Parcel Label Text";
  groupLayers[31] = "Plat Text";
  groupLayers[32] = "PIN1";
  groupLayers[33] = "PIN2";
  groupLayers[34] = "PIN3";
  groupLayers[35] = "PIN4";
  groupLayers[36] = "Parcel Number";
  groupLayers[37] = "Dimensions, 6 pt.";
  groupLayers[38] = "Dimensions, 8 pt.";
  groupLayers[39] = "Dimensions, 12 pt.";
  groupLayers[40] = "Dimensions, 18 pt.";
  groupLayerInfo[0] = groupVisible;
  groupLayerInfo[1] = groupName;
  groupLayerInfo[2] = groupLayers;
  groupManager[0] = groupLayerInfo;


groupVisible = false;
  groupName = "2007 Aerial Photo Map";
  groupLayers = new Array();
  groupLayerInfo = new Array();
  groupLayers[0] = "Parcels for Aerials";
  groupLayers[1] = "Block Number";
  groupLayers[2] = "2007 Aerial Photos";
  groupLayers[3] = "Roads";    
  groupLayers[4] = "Sections";
  groupLayers[5] = "Plat Boundary";
  groupLayers[6] = "Dims for Aerial";
  groupLayers[7] = "Lot Hooks for Aerial";
  groupLayers[8] = "Right of Way";
  groupLayers[9] = "Plat1";
  groupLayers[10] = "Plat2";
  groupLayers[11] = "Plat3";
  groupLayers[12] = "Section Numbers";
  groupLayers[13] = "Section Hooks";
  groupLayers[14] = "Streams";
  groupLayers[15] = "Lakes";
  groupLayers[16] = "Lot Original";
  groupLayers[17] = "Quarter Sections";
  groupLayers[18] = "Aerial_PLT1";
  groupLayers[19] = "Aerial_PLT2";
  groupLayers[20] = "Aerial_PLT3";
  groupLayers[21] = "Aerial_PLT4";
  groupLayers[22] = "Aerial_PLT5";
  groupLayers[23] = "AFA1";
  groupLayers[24] = "AFA2";
  groupLayers[25] = "AFA3";
  groupLayers[26] = "AFA4";
  groupLayers[27] = "AFA5";
  groupLayers[28] = "Acreage for Aerial"; 
  groupLayers[29] = "Parcel Label for Aerial";
  groupLayers[30] = "Plat Text";
  groupLayers[31] = "Lot Num for Aerial";
  groupLayers[32] = "Jurisdictions";
  groupLayers[33] = "PINA1";
  groupLayers[34] = "PINA2";
  groupLayers[35] = "PINA3";
  groupLayers[36] = "PINA4";
  groupLayers[37] = "PIN for Aerial";
  groupLayers[38] = "DimensionsA, 6 pt.";
  groupLayers[39] = "DimensionsA, 8 pt.";
  groupLayers[40] = "DimensionsA, 12 pt.";
  groupLayers[41] = "DimensionsA, 18 pt.";
  groupLayerInfo[0] = groupVisible;
  groupLayerInfo[1] = groupName;
  groupLayerInfo[2] = groupLayers;
  groupManager[1] = groupLayerInfo;  




  groupVisible = false;
  groupName = "2005 Aerial Photo Map";
  groupLayers = new Array();
  groupLayerInfo = new Array();
  groupLayers[0] = "Parcels for Aerials";
  groupLayers[1] = "Block Number";
  groupLayers[2] = "2005 Aerial Photos";
  groupLayers[3] = "Roads";    
  groupLayers[4] = "Sections";
  groupLayers[5] = "Plat Boundary";
  groupLayers[6] = "Dims for Aerial";
  groupLayers[7] = "Lot Hooks for Aerial";
  groupLayers[8] = "Right of Way";
  groupLayers[9] = "Plat1";
  groupLayers[10] = "Plat2";
  groupLayers[11] = "Plat3";
  groupLayers[12] = "Section Numbers";
  groupLayers[13] = "Section Hooks";
  groupLayers[14] = "Streams";
  groupLayers[15] = "Lakes";
  groupLayers[16] = "Lot Original";
  groupLayers[17] = "Quarter Sections";
  groupLayers[18] = "Aerial_PLT1";
  groupLayers[19] = "Aerial_PLT2";
  groupLayers[20] = "Aerial_PLT3";
  groupLayers[21] = "Aerial_PLT4";
  groupLayers[22] = "Aerial_PLT5";
  groupLayers[23] = "AFA1";
  groupLayers[24] = "AFA2";
  groupLayers[25] = "AFA3";
  groupLayers[26] = "AFA4";
  groupLayers[27] = "AFA5";
  groupLayers[28] = "Acreage for Aerial"; 
  groupLayers[29] = "Parcel Label for Aerial";
  groupLayers[30] = "Plat Text";
  groupLayers[31] = "Lot Num for Aerial";
  groupLayers[32] = "Jurisdictions";
  groupLayers[33] = "PINA1";
  groupLayers[34] = "PINA2";
  groupLayers[35] = "PINA3";
  groupLayers[36] = "PINA4";
  groupLayers[37] = "PIN for Aerial";
  groupLayers[38] = "DimensionsA, 6 pt.";
  groupLayers[39] = "DimensionsA, 8 pt.";
  groupLayers[40] = "DimensionsA, 12 pt.";
  groupLayers[41] = "DimensionsA, 18 pt.";
  groupLayerInfo[0] = groupVisible;
  groupLayerInfo[1] = groupName;
  groupLayerInfo[2] = groupLayers;
  groupManager[2] = groupLayerInfo;  


  

  groupVisible = false;
  groupName = "2002 Aerial Photo Map";
  groupLayers = new Array();
  groupLayerInfo = new Array();
  groupLayers[0] = "Parcels for Aerials";
  groupLayers[1] = "Block Number";
  groupLayers[2] = "2002 Aerial Photos";
  groupLayers[3] = "Roads";    
  groupLayers[4] = "Sections";
  groupLayers[5] = "Plat Boundary";
  groupLayers[6] = "Dims for Aerial";
  groupLayers[7] = "Lot Hooks for Aerial";
  groupLayers[8] = "Right of Way";
  groupLayers[9] = "Plat1";
  groupLayers[10] = "Plat2";
  groupLayers[11] = "Plat3";
  groupLayers[12] = "Section Numbers";
  groupLayers[13] = "Section Hooks";
  groupLayers[14] = "Streams";
  groupLayers[15] = "Lakes";
  groupLayers[16] = "Lot Original";
  groupLayers[17] = "Quarter Sections";
  groupLayers[18] = "Aerial_PLT1";
  groupLayers[19] = "Aerial_PLT2";
  groupLayers[20] = "Aerial_PLT3";
  groupLayers[21] = "Aerial_PLT4";
  groupLayers[22] = "Aerial_PLT5";
  groupLayers[23] = "AFA1";
  groupLayers[24] = "AFA2";
  groupLayers[25] = "AFA3";
  groupLayers[26] = "AFA4";
  groupLayers[27] = "AFA5";
  groupLayers[28] = "Acreage for Aerial"; 
  groupLayers[29] = "Parcel Label for Aerial";
  groupLayers[30] = "Plat Text";
  groupLayers[31] = "Lot Num for Aerial";
  groupLayers[32] = "Jurisdictions";
  groupLayers[33] = "PINA1";
  groupLayers[34] = "PINA2";
  groupLayers[35] = "PINA3";
  groupLayers[36] = "PINA4";
  groupLayers[37] = "PIN for Aerial";
  groupLayers[38] = "DimensionsA, 6 pt.";
  groupLayers[39] = "DimensionsA, 8 pt.";
  groupLayers[40] = "DimensionsA, 12 pt.";
  groupLayers[41] = "DimensionsA, 18 pt.";
  groupLayerInfo[0] = groupVisible;
  groupLayerInfo[1] = groupName;
  groupLayerInfo[2] = groupLayers;
  groupManager[3] = groupLayerInfo;  

  groupVisible = false;
  groupName = "Parcel Line Map";
  groupLayers = new Array();
  groupLayerInfo = new Array();
  groupLayers[0] = "Plat1";
  groupLayers[1] = "Plat2";
  groupLayers[2] = "Plat3";
  groupLayers[3] = "Dimensions";    
  groupLayers[4] = "Lot Number";
  groupLayers[5] = "Plat Boundary"; 
  groupLayers[6] = "Roads";
  groupLayers[7] = "Quarter Sections";
  groupLayers[8] = "Lot Hooks";
  groupLayers[9] = "Right of Way";
  groupLayers[10] = "Section Hooks";
  groupLayers[11] = "Streams";
  groupLayers[12] = "Lakes";
  groupLayers[13] = "Lot Original";
  groupLayers[14] = "Parcels";
  groupLayers[15] = "Jurisdictions";
  groupLayers[16] = "Sections";
  groupLayers[17] = "Section Numbers";
  groupLayers[18] = "PLT1";
  groupLayers[19] = "PLT2";
  groupLayers[20] = "PLT3";
  groupLayers[21] = "PLT4";
  groupLayers[22] = "PLT5";
  groupLayers[23] = "AT1";
  groupLayers[24] = "AT2";
  groupLayers[25] = "AT3";
  groupLayers[26] = "AT4";
  groupLayers[27] = "AT5";
  groupLayers[28] = "Block Number";
  groupLayers[29] = "Acreage Text";
  groupLayers[30] = "Parcel Label Text";
  groupLayers[31] = "Plat Text";
  groupLayers[32] = "PIN1";
  groupLayers[33] = "PIN2";
  groupLayers[34] = "PIN3";
  groupLayers[35] = "PIN4";
  groupLayers[36] = "Parcel Number";
  groupLayers[37] = "Dimensions, 6 pt.";
  groupLayers[38] = "Dimensions, 8 pt.";
  groupLayers[39] = "Dimensions, 12 pt.";
  groupLayers[40] = "Dimensions, 18 pt.";
  groupLayerInfo[0] = groupVisible;
  groupLayerInfo[1] = groupName;
  groupLayerInfo[2] = groupLayers;
  groupManager[4] = groupLayerInfo;

groupVisible = false;
  groupName = "1998 Aerial Photo Map";
  groupLayers = new Array();
  groupLayerInfo = new Array();
  groupLayers[0] = "Parcels for Aerials";
  groupLayers[1] = "Block Number";
  groupLayers[2] = "1998 Aerial Photos";
  groupLayers[3] = "Roads";    
  groupLayers[4] = "Sections";
  groupLayers[5] = "Plat Boundary";
  groupLayers[6] = "Dims for Aerial";
  groupLayers[7] = "Lot Hooks for Aerial";
  groupLayers[8] = "Right of Way";
  groupLayers[9] = "Plat1";
  groupLayers[10] = "Plat2";
  groupLayers[11] = "Plat3";
  groupLayers[12] = "Section Numbers";
  groupLayers[13] = "Section Hooks";
  groupLayers[14] = "Streams";
  groupLayers[15] = "Lakes";
  groupLayers[16] = "Lot Original";
  groupLayers[17] = "Quarter sections";
  groupLayers[18] = "Aerial_PLT1";
  groupLayers[19] = "Aerial_PLT2";
  groupLayers[20] = "Aerial_PLT3";
  groupLayers[21] = "Aerial_PLT4";
  groupLayers[22] = "Aerial_PLT5";
  groupLayers[23] = "AFA1";
  groupLayers[24] = "AFA2";
  groupLayers[25] = "AFA3";
  groupLayers[26] = "AFA4";
  groupLayers[27] = "AFA5"; 
  groupLayers[28] = "Acreage for Aerial"; 
  groupLayers[29] = "Parcel Label for Aerial";
  groupLayers[30] = "Plat Text";
  groupLayers[31] = "Lot Num for Aerial";
  groupLayers[32] = "Jurisdictions";
  groupLayers[33] = "PINA1";
  groupLayers[34] = "PINA2";
  groupLayers[35] = "PINA3";
  groupLayers[36] = "PINA4";
  groupLayers[37] = "PIN for Aerial";
  groupLayers[37] = "DimensionsA, 6 pt.";
  groupLayers[38] = "DimensionsA, 8 pt.";
  groupLayers[39] = "DimensionsA, 12 pt.";
  groupLayers[40] = "DimensionsA, 18 pt.";
  groupLayerInfo[0] = groupVisible;
  groupLayerInfo[1] = groupName;
  groupLayerInfo[2] = groupLayers;
  groupManager[5] = groupLayerInfo;

/*groupVisible = false;
  groupName = "Natural Features Map";
  groupLayers = new Array();
  groupLayerInfo = new Array();
  groupLayers[0] = "Plat1";
  groupLayers[1] = "Plat2";
  groupLayers[2] = "Plat3";
  groupLayers[3] = "Dimensions";    
  groupLayers[4] = "Lot Number";
  groupLayers[5] = "Plat Boundary"; 
  groupLayers[6] = "ROW Text";
  groupLayers[7] = "Quarter Sections";
  groupLayers[8] = "Lot Hooks";
  groupLayers[9] = "Right of Way";
  groupLayers[10] = "Section Hooks";
  groupLayers[11] = "Streams";
  groupLayers[12] = "Lakes";
  groupLayers[13] = "Lot Original";
  groupLayers[14] = "Parcels";
  groupLayers[15] = "Jurisdictions";
  groupLayers[16] = "Sections";
  groupLayers[17] = "Section Numbers";
  groupLayers[18] = "Block Number";
  groupLayers[19] = "Soils";
  groupLayers[20] = "County Drains";
  groupLayers[21] = "County Drain Right-of-Way";
  groupLayers[22] = "Woodlands";
  groupLayers[23] = "Plat Text";
  groupLayerInfo[0] = groupVisible;
  groupLayerInfo[1] = groupName;
  groupLayerInfo[2] = groupLayers;
  groupManager[4] = groupLayerInfo; 
*/

/* groupVisible = false;
  groupName = "Soil Perk Map";
  groupLayers = new Array();
  groupLayerInfo = new Array();
  groupLayers[0] = "Acreage";
  groupLayers[1] = "Block Number";
  groupLayers[2] = "Dimensions";
  groupLayers[3] = "Lot Text";    
  groupLayers[4] = "Lot Number";
  groupLayers[5] = "Soil Perk"; 
  groupLayers[6] = "ROW Text";
  groupLayers[7] = "Leader Lines";
  groupLayers[8] = "Lot Hooks";
  groupLayers[9] = "Right of Way";
  groupLayers[10] = "Section Hooks";
  groupLayers[11] = "County Streams";
  groupLayers[12] = "";
  groupLayers[13] = "Lot Orignial";
  groupLayers[14] = "Parcels";
  groupLayers[15] = "Jurisdictions";
  groupLayers[16] = "Sections";
  groupLayers[17] = "Section Numbers";
  groupLayers[18] = "Quarter sections";
  groupLayerInfo[0] = groupVisible;
  groupLayerInfo[1] = groupName;
  groupLayerInfo[2] = groupLayers;
  groupManager[5] = groupLayerInfo;
*/


  
  /*
  groupVisible = false;
  groupName = "Land Trust Map";
  groupLayers = new Array();
  groupLayerInfo = new Array();
  groupLayers[0] = "Parcels";
  groupLayers[1] = "Building Outlines";
  groupLayers[2] = "Property Buffers";
  groupLayers[3] = "Railroad ";    
  groupLayers[4] = "Paved Surfaces";
  groupLayers[5] = "Hydrology Linear Features"; 
  groupLayers[6] = "Hydrology Water Bodies";
  groupLayers[7] = "Street Names";
  groupLayers[8] = "Clanno400";
  groupLayers[9] = "Clanno800";
  groupLayers[10] = "Clanno1200";
  groupLayers[11] = "Contour Annotation";
  groupLayers[12] = "Contanbigger"; 
  groupLayers[13] = " ";
  groupLayerInfo[0] = groupVisible;
  groupLayerInfo[1] = groupName;
  groupLayerInfo[2] = groupLayers;
  groupManager[1] = groupLayerInfo;
  groupVisible = false;
  
  groupVisible = false;
  groupName = "Neighborhood Map";
  groupLayers = new Array();
  groupLayerInfo = new Array();
  groupLayers[0] = "Parcels";
  groupLayers[1] = "Building Outlines";
  groupLayers[2] = "Property Buffers";
  groupLayers[3] = "Railroad ";    
  groupLayers[4] = "Paved Surfaces";
  groupLayers[5] = "Hydrology Linear Features"; 
  groupLayers[6] = "Hydrology Water Bodies";
  groupLayers[7] = "Street Names";
  groupLayers[8] = "Clanno400";
  groupLayers[9] = "Clanno800";
  groupLayers[10] = "Clanno1200";
  groupLayers[11] = "Contour Annotation";
  groupLayers[12] = "Contanbigger";
  groupLayers[13] = " ";
  groupLayerInfo[0] = groupVisible;
  groupLayerInfo[1] = groupName;
  groupLayerInfo[2] = groupLayers;
  groupManager[2] = groupLayerInfo;
*/
/*
  Function uses the services of the getGroup to determine if the
  named layer belongs to a group.
  Modified from original sample version to support multiple layers.
  
  @param glayerName The name of a layer in the layer list.
  @return True if the layer in question is a group layer.
  @see #getGroup
  @author Cord Thomas
  */
function checkLayer(glayerName) {
   var gName=getGroup(glayerName);
   if (gName.length==0)
      return false;
   else
      return true;
}

/*
  Function returns the group a specified layer belongs to.
  
  @param glayerName The name of a layer in question.
  @return The name of the group the layer belongs to.
  @author Cord Thomas
  */
function getGroup(glayerName) {
  var glInfo=null;
  var gLayers=null;
  var gName="";
  for (var gm=0;gm<groupManager.length;gm++) {
     glInfo = groupManager[gm];
     gLayers = glInfo[2];
     gName = glInfo[1];
     for (var gl=0;gl<gLayers.length;gl++) {
        if (glayerName == gLayers[gl]) {
           return gName;
           break
	}
     }
   }
   return "";   // This should be blank.
}

/* Returns whether a named layer is in a group. 
   @param layerName The name of hte layer in question.
   @param groupName The name of the group to search in.
*/ 
function layerInGroup(layerName, groupName) {
   var glInfo=null;
   var gLayers=null;
   var gName="";
   for (var gm=0;gm<groupManager.length;gm++) {
      glInfo = groupManager[gm];
      gName = glInfo[1];
      // If the group name is the same as the groupName then we are in the right group.
      if (gName == groupName) {
         gLayers = glInfo[2];
         for (var gl=0;gl<gLayers.length;gl++) {
            if (layerName == gLayers[gl]) {
               return true;
               break
            }
         }
      }
   }
  return false;   // This should be blank.
}

function setGroup(theVal) {
 var theName;
  if (theVal == 1) { 
    groupVisible = true
  } else { 
    groupVisible = false 
  }
  for(var ii=0;ii<layerCount;ii++) {
    theName = LayerName[ii];
    if (checkLayer(theName) == true) {
      LayerVisible[ii] = theVal;     
    }
  }
}

/* Loop through all the layers in the map, if the layer is in the
   currently active group, then it is set to visible, otherwise it is not. */
function updateGroupLayers() {
  var j = 0;
  var groupFromLayer="";
  var scaleF = (t.xDistance / t.iWidth);
  //alert(scaleF);
  for (var i=0;i<t.layerCount;i++) {
    if (layerInGroup(t.LayerName[i], activeGroup)) {
	  if ((t.LayerName[i].indexOf("Aerial Photos") > -1) && !((scaleF>=t.LayerMinScale[i])&& (scaleF<=t.LayerMaxScale[i]))){
			alert("You will need to zoom in futher to see the " + t.LayerName[i] + " Layer");
	  }
      t.LayerVisible[i] = 1;
    } else {
      t.LayerVisible[i] = 0;
    }
  }
  t.sendMapXML();
}

//*  MB:  This function is used if the setLayers was called from an autogenerated 
//        combobox
 function setLayers (formListName) {
     activeGroup = eval("document." + formListName + ".value");
	// alert (activeGroup);
     if (activeGroup!="Default") {
        updateGroupLayers();
     }
 }

//*  MB:  This function is used if the setLayers was called from an image link button
// function setLayers (layerName) {
//     
//     // alert (layerName)
//	 activeGroup = (layerName);
//	 
//	 // alert (activeGroup)
//	 	 
//     if (activeGroup!="Default") {
//        updateGroupLayers();
//     }
// }
