/**
 * @author Michael Jenkins
 */
	  dojo.require("esri.map");
      dojo.require("esri.tasks.identify");
      dojo.require("dijit.form.Button");
      var locatorURL;
      var map, identifyParams, symbol, timer;
      var tiledGenericBase, tiledHybridBase, tiledHybridBaseOverlay, tiledNone;
      var tiledGenericBaseURL, tiledHybridBaseURL, tiledHybridBaseOverlayURL;	
	  var aarMap;  
      var mapLoad;
      tiledGenericBaseURL = "http://gismaps.kingcounty.gov/ArcGIS10/rest/services/BaseMaps/KingCo_GenericBase/MapServer";
      tiledHybridBaseURL = "http://gismaps.kingcounty.gov/ArcGIS10/rest/services/BaseMaps/KingCo_Aerial_2009/MapServer";
      tiledHybridBaseOverlayURL = "http://gismaps.kingcounty.gov/ArcGIS10/rest/services/BaseMaps/KingCo_Aerial_Overlay/MapServer"; 
      locatorURL = "http://gismaps.kingcounty.gov/ArcGIS10/rest/services/Address/TNET_Streets/GeocodeServer";	
  
	  var aarMapURL = "http://gismaps.kingcounty.gov/ArcGIS10/rest/services/Roads/KingCo_Adopt_A_Road/MapServer";   
      // setup test for IE6
	  // setup test for IE6
		var isIE6 = false;
		if (dojo.isIE==6) {
		  isIE6 = true;
        }
      dojo.addOnLoad(init);

      function init() {
      
        var basemap = getURLParam('basemap');
      // check for extents passed through the URL
        var xmin = (parseFloat(getURLParam('xmin')));
        var ymin = (parseFloat(getURLParam('ymin')));
        var xmax = (parseFloat(getURLParam('xmax')));
        var ymax = (parseFloat(getURLParam('ymax')));
        
      if ((isNaN(xmin) == false) && (isNaN(ymin) == false) && (isNaN(xmax) == false) && (isNaN(ymax) == false)){
            var startExtent = new esri.geometry.Extent(xmin, ymin, xmax, ymax, new esri.SpatialReference({wkid:102100}));
        }else{
            // if no extents were passed in the URL, then use the full county extent
            var startExtent = new esri.geometry.Extent(-13659182.299015194, 5979420.302405863, -13468395.476415321, 6071144.73634811, new esri.SpatialReference({wkid:102100}));
	   }
 
        map = new esri.Map("map", {extent:startExtent, logo:false});
         // NOTE:  Seems that if you connect to the onLoad AFTER you add map layers, it won't fire the map.onLoad even
         // in IE after you leave and return via the back button.
        maponload_handler = dojo.connect(map, "onLoad", initFunctionality);
         
        //set up and add the map services. ID's match the button names for base maps
        tiledGenericBase = new esri.layers.ArcGISTiledMapServiceLayer(tiledGenericBaseURL, {id:"Map"} );
        map.addLayer(tiledGenericBase);
        
        tiledHybridBase = new esri.layers.ArcGISTiledMapServiceLayer(tiledHybridBaseURL, {id:"Aerial"});
        map.addLayer(tiledHybridBase);
        
        tiledHybridBaseOverlay = new esri.layers.ArcGISTiledMapServiceLayer(tiledHybridBaseOverlayURL, {id:"Hybrid"});
        tiledHybridBaseOverlay.hide();
        map.addLayer(tiledHybridBaseOverlay); 
        
		aarMap = new esri.layers.ArcGISDynamicMapServiceLayer(aarMapURL, {id:"aarMap"});
		//aarMap = new esri.layers.ArcGISTiledMapServiceLayer(aarMapURL, {id:"aarMap"});
        map.addLayer(aarMap);
        //honor URL parameters if present, else go to default
        if (basemap !== "") {
            changeBaseMap(basemap);
        }else{    
            changeBaseMap(tiledGenericBase);
        }
			
      }

      function initFunctionality(map) {
	  //		initIdentify();
     }

      function changeBaseMap(baselayer){
	  	map.infoWindow.hide();
        switch(baselayer){
            case tiledGenericBase: case "Map": case "map": default:
                tiledHybridBase.hide();
				tiledHybridBaseOverlay.hide();
                tiledGenericBase.show();
                setActiveButton("btnGenericBase");
                 break;
            case tiledHybridBase: case "Aerial": case "aerial":
                tiledHybridBase.show();
                tiledHybridBaseOverlay.hide();
                tiledGenericBase.hide();
                setActiveButton("btnAerial");
                break; 
            case tiledHybridBaseOverlay: case "Hybrid": case "hybrid":
                if (isIE6) {
                    tiledHybridBase.show();
                    tiledGenericBase.hide();
					tiledHybridBaseOverlay.hide();
                    setActiveButton("btnAerial"); //change to aerial                   
                }else{
                    tiledHybridBase.show();
					tiledHybridBaseOverlay.show();
                    tiledGenericBase.hide();					
                    setActiveButton("btnHybridBase");
                }            
                break;    				
        }    
    }
    
    function setActiveButton(buttonName){
        // set up an array of your base map button IDs.
        if (isIE6) {
            var btnArray = ["btnGenericBase","btnAerial"];
        }else{
            var btnArray = ["btnGenericBase","btnAerial","btnHybridBase"];
        }        
        dojo.forEach(btnArray, function(buttonName){dojo.removeClass(buttonName,"baseMapButtonActive")});
        dojo.addClass(buttonName,"baseMapButtonActive");
        map.infoWindow.hide(); //to avoid unnecessary popping up
    }

    //function to get parameters passed in the URL
    function getURLParam( name ) {
      name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
      var regexS = "[\\?&]"+name+"=([^&#]*)";
      var regex = new RegExp( regexS );
      var results = regex.exec( window.location.href );
      if( results == null )
        return "";
      else
        return results[1];
    }
    
    function createURLForCurrentExtent() {
        var baseURL= document.location.host + document.location.pathname;
        var params = "?xmin=" + map.extent.xmin + "&ymin=" + map.extent.ymin + "&xmax=" + map.extent.xmax + "&ymax=" + map.extent.ymax;
        if (tiledGenericBase.visible===true){
            params += "&basemap=Map"
        }else if (tiledHybridBase.visible===true){
            params += "&basemap=Hybrid"
        }else if (tiledHybridBaseOverlay.visible===true){
            params += "&basemap=Aerial"        
        }
	//	 params += "&photoset=" + selectedPhotoSet;        
        //return extentURL;
        var extentURL = "http://" + baseURL + params;
        dojo.byId("txtLink").value = extentURL;
        dojo.byId("linkDiv").style.display = "block";
        return extentURL;
    }

    function toggle(id) {
		var state = dojo.byId(id).style.display;
			if (state == 'block') {
				dojo.byId(id).style.display = 'none';
				dojo.byId('btnLink').value = 'Create URL';
			} else {
				dojo.byId(id).style.display = 'block';
				dojo.byId('btnLink').value = 'Hide URL';
			}
	}
function closeLinkDiv() {
    dojo.byId("linkDiv").style.display = "none";
}

function SelectAll(id){
    dojo.byId(id).focus();
    dojo.byId(id).select();
}

windowResize_handler = dojo.connect(window, "onresize", function() {
            clearTimeout(timer);
            timer = setTimeout(function() { map.resize(); map.reposition(); }, 500);}); 


