function Status(){
	this.crimeStats = false;
	this.welcome = false;
	this.res = false;
	this.addressLoaded = false;
	this.streetDialog = false;		
	this.helpFlag = false;
	this.specsFlag = false;
	this.paramDisplay = "none";
	var paramWelcome = decodeURI(getRequestParameter('welcome'));
	if(paramWelcome){
		 this.welcome = true;
	}
}

function StatusPrototype(){	
	Status.prototype.checkStatus = function(item){
			if (this.crimeStats == true){
  				//This code will be executed on initial load 
  				if(this.paramDisplay == "none"){
					YAHOO.loading.container.wait.hide();
					var screenPoint = crimeMap.map.toScreen(selectedAddress.crimeGraphic.graphic.geometry);
					crimeMap.map.infoWindow.setTitle(selectedAddress.crimeGraphic.graphic.getTitle());
					crimeMap.map.infoWindow.setContent(selectedAddress.crimeGraphic.graphic.getContent());	
					crimeMap.map.infoWindow.show(screenPoint,crimeMap.map.getInfoWindowAnchor(screenPoint));	
					setCursors();
  					if(!loadStatus.welcome){
  						checkConfig();	
  					}	
  				}
  				//This code will be executed on subsequent loads			
  				else if(this.paramDisplay == "cleared"){
					var screenPoint = crimeMap.map.toScreen(selectedAddress.crimeGraphic.graphic.geometry);
					crimeMap.map.infoWindow.setTitle(selectedAddress.crimeGraphic.graphic.getTitle());
					crimeMap.map.infoWindow.setContent(selectedAddress.crimeGraphic.graphic.getContent());	
					crimeMap.map.infoWindow.show(screenPoint,crimeMap.map.getInfoWindowAnchor(screenPoint));	
  				}
  				setCursors();
  				YAHOO.loading.container.wait.hide();		  					
  			}			
		}
	
	Status.prototype.clear = function(){
		this.crimeStats = false;
		this.paramDisplay = "cleared";
		this.annapolis = false;
		this.streetName = "";
		this.aaid = "";
		this.latitude = "";
		this.longitude = "";
	}
}

function checkConfig(){
	//Resolution Detection Code 
	if (loadStatus.res){
		javascript:YAHOO.ui.container.resDialog.show();
	}
	else{
		javascript:YAHOO.ui.container.welcomeDialog.show();
	}
}

function checkBrowser(){
	//initialize browser dialog
	
	YAHOO.namespace("ui.browser");
	
	var browserContinue = function() {
		YAHOO.ui.browser.browserDialog.hide();
	}	
			
	document.getElementById("browserDialog").style.display="block";
	YAHOO.ui.browser.browserDialog = new YAHOO.widget.Dialog("browserDialog", 
								{ width : "500px",
								  fixedcenter : true,
								  visible : false, 
								  close: true,
								  zindex:99,
								  modal:true,
								  draggable:true,
								  effect:{effect:YAHOO.widget.ContainerEffect.FADE,duration:0.15},
								  constraintoviewport : true,
								  buttons : [ { text:"Continue to Application", handler:browserContinue }]
								});
		YAHOO.ui.browser.browserDialog.hideEvent.subscribe(function(){
			dojo.addOnLoad(loadingInit);
			dojo.addOnLoad(mapInit);
			dojo.addOnLoad(uiInit);
			dojo.addOnLoad(queryInit);
			//YAHOO.ui.container.welcomeDialog.show();			 
		});  
		
		// Render the Dialog
		YAHOO.ui.browser.browserDialog.render();
		YAHOO.ui.browser.browserDialog.hide();	
	
	
	//Browser Detection Code
	if (BrowserDetect.browser == 'Internet Explorer' && BrowserDetect.version >= 7){
		return true;
	}
	else if (BrowserDetect.browser == 'Firefox' && BrowserDetect.version >= 3){
		return true;
	}
	else{
		javascript:YAHOO.ui.browser.browserDialog.show();
		return false;
	}
}

function setCursors(){
	dojo.byId("crimeMapDiv_layers").style.cursor = "url('/MyAA/images/Hand.cur'),default";
	dojo.byId("crimeMapDiv_infowindow").style.cursor = 'default';
	   
    dojo.connect(crimeMap.map, "onMouseDown", function(evt) {
        if(document.getElementById('crimeNavPan').className == 'navbarSelected'){
        	dojo.byId("crimeMapDiv_layers").style.cursor = "url('/MyAA/images/MoveHand.cur'),default";
        }	
    });
    
    dojo.connect(crimeMap.map, "onMouseUp", function(evt) {
    	if(document.getElementById('crimeNavPan').className == 'navbarSelected'){ 	
        	dojo.byId("crimeMapDiv_layers").style.cursor = "url('/MyAA/images/Hand.cur'),default";
        }	
    });
    
    dojo.connect(crimeMap.map.graphics, "onMouseOver", function(evt) {
	   	if(document.getElementById('crimeNavPan').className == 'navbarSelected'){
	  		dojo.byId("crimeMapDiv_layers").style.cursor = 'pointer';
	   	    
	  		dojo.connect(crimeMap.map, "onMouseDown", function(evt) {
	   	    	if(document.getElementById('crimeNavPan').className == 'navbarSelected'){	
	   	    		dojo.byId("crimeMapDiv_layers").style.cursor = 'pointer';
	   	    	}	
	   	    });
	   	    
	  		dojo.connect(crimeMap.map, "onMouseUp", function(evt) {
	   	    	if(document.getElementById('crimeNavPan').className == 'navbarSelected'){
	   	    		dojo.byId("crimeMapDiv_layers").style.cursor = 'pointer';
	   	    	}	
	   	    });   
	   	}
	});
    
    
    dojo.connect(crimeMap.map.graphics, "onMouseOut", function(evt) {
    	if(document.getElementById('crimeNavPan').className == 'navbarSelected'){
    		dojo.byId("crimeMapDiv_layers").style.cursor = "url('/MyAA/images/Hand.cur'),default";
    		
    		dojo.connect(crimeMap.map, "onMouseDown", function(evt) {
    			if(document.getElementById('crimeNavPan').className == 'navbarSelected'){
    				dojo.byId("crimeMapDiv_layers").style.cursor = "url('/MyAA/images/MoveHand.cur'),default";
    			}	
    		});
    		dojo.connect(crimeMap.map, "onMouseUp", function(evt) {
    			if(document.getElementById('crimeNavPan').className == 'navbarSelected'){
    				dojo.byId("crimeMapDiv_layers").style.cursor = "url('/MyAA/images/Hand.cur'),default";
    			}	
    		}); 
    	}
    }); 
    
    dojo.connect(crimeMap.communityGraphicsLayer, "onMouseOver", function(evt) {
	   	if(document.getElementById('crimeNavPan').className == 'navbarSelected'){
	  		dojo.byId("crimeMapDiv_layers").style.cursor = 'pointer';
	   	    
	  		dojo.connect(crimeMap.map, "onMouseDown", function(evt) {
	   	    	if(document.getElementById('crimeNavPan').className == 'navbarSelected'){	
	   	    		dojo.byId("crimeMapDiv_layers").style.cursor = 'pointer';
	   	    	}	
	   	    });
	   	    
	  		dojo.connect(crimeMap.map, "onMouseUp", function(evt) {
	   	    	if(document.getElementById('crimeNavPan').className == 'navbarSelected'){
	   	    		dojo.byId("crimeMapDiv_layers").style.cursor = 'pointer';
	   	    	}	
	   	    });   
	   	}
	});
    
    
    dojo.connect(crimeMap.communityGraphicsLayer, "onMouseOut", function(evt) {
    	if(document.getElementById('crimeNavPan').className == 'navbarSelected'){
    		dojo.byId("crimeMapDiv_layers").style.cursor = "url('/MyAA/images/Hand.cur'),default";
    		
    		dojo.connect(crimeMap.map, "onMouseDown", function(evt) {
    			if(document.getElementById('crimeNavPan').className == 'navbarSelected'){
    				dojo.byId("crimeMapDiv_layers").style.cursor = "url('/MyAA/images/MoveHand.cur'),default";
    			}	
    		});
    		dojo.connect(crimeMap.map, "onMouseUp", function(evt) {
    			if(document.getElementById('crimeNavPan').className == 'navbarSelected'){
    				dojo.byId("crimeMapDiv_layers").style.cursor = "url('/MyAA/images/Hand.cur'),default";
    			}	
    		}); 
    	}
    }); 
}

function SelectedAddress(address, city, zip, x, y, type){
	this.address = address;
	this.city = city;
	this.zip = zip; 
	this.x = x;
	this.y = y;
	this.point = new esri.geometry.Point(x,y, new esri.SpatialReference({ wkid: 2248 }));
	this.type = type;
	this.annapolis = false;
}

function loadingInit() {
	loadStatus = new Status();
    YAHOO.namespace("loading.container");
    if (!YAHOO.loading.container.wait) {
        YAHOO.loading.container.wait = 
                new YAHOO.widget.Panel("wait",  
                                                { width: "240px", 
                                                  fixedcenter: true, 
                                                  close: false, 
                                                  draggable: false, 
                                                  zindex:110,
                                                  modal: true,
                                                  visible: false
                                                } 
                                            );

        YAHOO.loading.container.wait.setHeader("Content Loading, Please Wait...");
        YAHOO.loading.container.wait.setBody("<img src='/MyAA/images/loading.gif'>");
        YAHOO.loading.container.wait.render(document.body);
        YAHOO.loading.container.wait.show();

    }  
}


function setMapSize(){
	var dataWidth;
	var mapWidth;
	var screenWidth = screen.width;
	var screenHeight = screen.height;
	
	//alert("screen.width:" + screen.width);
	
	if (screenWidth < 1024 && screenHeight < 768){
		loadStatus.res = true;
	}
	
	if (screenWidth > 1200){
		dataWidth = (screenWidth * .30) + 'px';
		mapWidth = (screenWidth * .70) + 'px';
	}
	else if (screenWidth > 1000){
		dataWidth = (screenWidth * .35) + 'px';
		mapWidth = (screenWidth * .65) + 'px';
	}
	else{
		dataWidth = (screenWidth * .45) + 'px';
		mapWidth = (screenWidth * .55) + 'px';
	}

	var contentHeight = (screenHeight * .70) + 'px';
	//alert(document.body.offsetWidth + "x" + screen.height + ":" + dataWidth + ":" + mapWidth);	

	document.getElementById('crimeData').style.width = dataWidth;
	document.getElementById('crimeData').style.height = contentHeight;
	document.getElementById('crimeMapDiv').style.width = mapWidth;
	document.getElementById('crimeMapDiv').style.height = contentHeight;	
}	

function mapInit() {
//alert("browser detect:" + BrowserDetect.browser + ", " + BrowserDetect.version);
//Set up proxy
	esriConfig.defaults.io.proxyUrl = esriProxyURL;
	esriConfig.defaults.io.alwaysUseProxy = false;
		
//Set Map Size
	setMapSize();
	
//Show the divs	
	document.getElementById('crimeDiv').style.display = 'inline';

//Load Prototypes
	MapPrototype();
	DynamicLayerPrototype();
	TiledLayerPrototype();
	DrawbarPrototype();
	NavbarPrototype();
	QueryPrototype();
	GraphicPrototype();
	StatusPrototype();

		
//Load Map
	crimeMap = new Map("crimeMapDiv","crimeMap");	

//Load BaseMap Layer
   	crimeBase = new TiledLayer(crimeMap.map,basemapURL,{displayLevels:[9,8,7,6,5,4,3,2,1,0]});  		   
   	
//Load MyAA Layer
	var visibleCrimeLayers = 'none';
	crimeMyaa = new DynamicLayer(crimeMap.map,"crimeMyaa",myaaURL,"",visibleCrimeLayers);
	
  	dojo.connect(crimeMyaa.layer, "onUpdate", hideLoading);
	dojo.connect(crimeMap.map, "onZoomStart", showLoading);
               
    dojo.connect(crimeMap.map, "onPanStart", showLoading);      
	
	//connect to window's resize event
	dojo.connect(window, "onresize", function() { 	
	//clear any existing resize timer
	clearTimeout(timer); 
	//create new resize timer with delay of 500 milliseconds
		timer = setTimeout(function() {	 		
			crimeMap.map.resize(); 
			crimeMap.map.reposition();
			}, 500);
 	 });
}

function uiInit(){
	//Load Navbar 	
	themesInit();
	crimeNavbar = new Navbar(crimeMap.map);
	crimeNavbar.pan;


	//menuDiaolog init
	YAHOO.namespace("ui.container");
	
			
	document.getElementById("menuDialog").style.display="block";
	YAHOO.ui.container.menuDialog = new YAHOO.widget.Dialog("menuDialog", 
								{ width : "250px",
								  fixedcenter : false,
								  visible : false, 
								  close: true,
								  zindex:99,
								  draggable:false,
								  context:["menuTD","tl","bl",["beforeShow", "windowResize"]],
								  effect:{effect:YAHOO.widget.ContainerEffect.FADE,duration:0.15},
								  constraintoviewport : true
								});
		YAHOO.ui.container.menuDialog.hideEvent.subscribe(function(){						
			document.getElementById('menuTD').style.backgroundColor = "#D9DABB";
			document.getElementById('menuTag').style.color ="#4C4545";
			document.getElementById('menuIcon').src = "/MyAA/images/arrowBrown.gif";
		});  
		
		// Render the Dialog
		YAHOO.ui.container.menuDialog.render();
		YAHOO.ui.container.menuDialog.hide();	
	
	var welcomeContinue = function() {
		YAHOO.ui.container.welcomeDialog.hide();
		this.submit();
	}	
	
	document.getElementById("welcomeDialog").style.display="block";
	YAHOO.ui.container.welcomeDialog = new YAHOO.widget.Dialog("welcomeDialog", 
								{ width : "500px",
								  fixedcenter : true,
								  visible : false, 
								  close: true,
								  zindex:99,
								  modal:true,
								  draggable:true,
								  effect:{effect:YAHOO.widget.ContainerEffect.FADE,duration:0.15},
								  constraintoviewport : true,
								  buttons : [ { text:"Continue to Application", handler:welcomeContinue }]
								});
		
	
	YAHOO.ui.container.welcomeDialog.hideEvent.subscribe(function(){
		if (loadStatus.helpFlag){
			YAHOO.ui.container.helpDialog.show();
		}
		else if (loadStatus.specsFlag){
			YAHOO.ui.container.helpDialog.show();
			toggleHelp('specs');
		}
		else{
			if(document.getElementById('crimeAddressBanner').innerHTML == "None"){
				YAHOO.structAddr.container.structAddrDialog.show();
			}			
	 	}
	});  
		
		// Render the Dialog
		YAHOO.ui.container.welcomeDialog.render();
		YAHOO.ui.container.welcomeDialog.hide();			
		
		
		var resContinue = function() {
			YAHOO.ui.container.resDialog.hide();
		}	
	
		
		document.getElementById("resDialog").style.display="block";
		YAHOO.ui.container.resDialog = new YAHOO.widget.Dialog("resDialog", 
									{ width : "400px",
									  fixedcenter : true,
									  visible : false, 
									  close: true,
									  zindex:99,
									  modal:true,
									  draggable:true,
									  effect:{effect:YAHOO.widget.ContainerEffect.FADE,duration:0.15},
									  constraintoviewport : true,
									  buttons : [ { text:"Continue to Application", handler:resContinue }]
									});
			YAHOO.ui.container.resDialog.hideEvent.subscribe(function(){
				YAHOO.ui.container.welcomeDialog.show();			 
			});  
			
			// Render the Dialog
			YAHOO.ui.container.resDialog.render();
			YAHOO.ui.container.resDialog.hide();	
	
			
	document.getElementById("helpDialog").style.display="block";
	YAHOO.ui.container.helpDialog = new YAHOO.widget.Dialog("helpDialog", 
								{ width : "600px",
								  height: "500px",
								  fixedcenter : true,
								  visible : false, 
								  close: true,
								  zindex:99,
								  modal:true,
								  draggable:true,
								  effect:{effect:YAHOO.widget.ContainerEffect.FADE,duration:0.15},
								  constraintoviewport : true
								});
		YAHOO.ui.container.helpDialog.hideEvent.subscribe(function(){
			closeAllHelp();												
			if(document.getElementById('crimeAddressBanner').innerHTML == "None"){
				YAHOO.structAddr.container.structAddrDialog.show();
			}			
		});  
		
		// Render the Dialog
		YAHOO.ui.container.helpDialog.render();
		YAHOO.ui.container.helpDialog.hide();	
	
	var handleFeedbackSubmit = function() {
		var data = this.getData();
		if (isEmpty(data.emailName) || isEmpty(data.emailSearch) || isEmpty(data.emailSubject)){
			alert("Please enter a value for all required fields"); 
		} 
		else if (data.emailName == data.emailSearch && data.emailName == data.emailEmail){				
			alert("Please enter valid feedback before submitting.");
		}
		else {	
			this.submit();			
			alert("An email has been submitted.  Thanks for your feedback.");
		}
	};
	var handleFeedbackCancel = function() {	this.cancel(); };
	
	var handleFeedbackSuccess = function(o) {
		document.emailForm.emailName.value = "";
		document.emailForm.emailSearch.value = "";
		document.emailForm.emailSubject.value = "";
		document.emailForm.emailEmail.value = "";
		document.emailForm.emailPhone.value = "";
		document.emailForm.emailComments.value = "";
	};
	var handleFeedbackFailure = function(o) { alert("Submission failed: " + o.status); };
		
	document.getElementById("feedbackDialog").style.display="block";
	YAHOO.ui.container.feedbackDialog = new YAHOO.widget.Dialog("feedbackDialog", 
								{ width : "500px",
								  fixedcenter : true,
								  visible : false, 
								  close: true,
								  modal:true,
								  zindex:99,
								  draggable:true,
								  effect:{effect:YAHOO.widget.ContainerEffect.FADE,duration:0.15},
								  constraintoviewport : true,
								  buttons : [ { text:"Submit", handler:handleFeedbackSubmit },
							      { text:"Cancel", handler:handleFeedbackCancel } ]
								});

	YAHOO.ui.container.feedbackDialog.callback = { success: handleFeedbackSuccess, failure: handleFeedbackFailure };
	// Render the Dialog
	YAHOO.ui.container.feedbackDialog.render();
	YAHOO.ui.container.feedbackDialog.hide();	
}	
			
	

function updateSelectedAddress(type){
	if(type == "structureAddress"){
		selectedAddress = new SelectedAddress(structureAddressMapped.address, structureAddressMapped.city, structureAddressMapped.zip, structureAddressMapped.x, structureAddressMapped.y,"structureAddress");
		document.getElementById('crimeAddressBanner').innerHTML = "<a  style='font-size:10pt;font-weight:bold;color:#52B2D2; title='Zoom Here' href ='javascript:crimeMap.changeExtentByXY(" + selectedAddress.x  + "," + selectedAddress.y + ",1000);showCrimeInfoWindowOnZoom(\"selectedAddress.crimeGraphic\");'>" + selectedAddress.address + "</a>";
		document.getElementById('crimeZoom').href  = 'javascript:crimeMap.changeExtentByXY(selectedAddress.x ,selectedAddress.y,1000);showCrimeInfoWindowOnZoom("selectedAddress.crimeGraphic");';		
		document.getElementById('crimeAddressBanner2').innerHTML = "<span style='font-size:8pt;color:#4C4545'>" + selectedAddress.city +   ", MD " + selectedAddress.zip + "</span>";		
		
		//Clear out street data on Theme form
		document.getElementById('genThemeStreetName').value = "";
		document.getElementById('genThemeStreetNumber').value = "";
		document.getElementById('crimeThemeStreetName').value = "";
		document.getElementById('crimeThemeStreetNumber').value = "";
		
		//Update address on Theme form 
		document.getElementById('genThemeAddr').value = selectedAddress.address;
		document.getElementById('genThemeCity').value = selectedAddress.city;
		document.getElementById('genThemeZip').value = selectedAddress.zip;
		document.getElementById('genThemeX').value = selectedAddress.x;
		document.getElementById('genThemeY').value = selectedAddress.y;
		document.getElementById('crimeThemeAddr').value = selectedAddress.address;
		document.getElementById('crimeThemeCity').value = selectedAddress.city;
		document.getElementById('crimeThemeZip').value = selectedAddress.zip;
		document.getElementById('crimeThemeX').value = selectedAddress.x;
		document.getElementById('crimeThemeY').value = selectedAddress.y;
	}
	else{
		var streetAddress = "[" + streetCenterlineMapped.from + "-" + streetCenterlineMapped.to + "] " + streetCenterlineMapped.streetName;
		selectedAddress = new SelectedAddress(streetAddress, "", streetCenterlineMapped.zip,streetCenterlineMapped.x,streetCenterlineMapped.y, "streetCenterline");
		selectedAddress.streetName = streetCenterlineMapped.streetName;
		document.getElementById('crimeAddressBanner').innerHTML = "<a  style='font-size:10pt;font-weight:bold;color:#52B2D2;' title='Zoom Here' title='Zoom Here' href ='javascript:crimeMap.changeExtentByXY(" + selectedAddress.x  + "," + selectedAddress.y + ",1000);showCrimeInfoWindowOnZoom(\"selectedAddress.crimeGraphic\");'>" + selectedAddress.address + "</a>";
		document.getElementById('crimeZoom').href  = 'javascript:crimeMap.changeExtentByXY(selectedAddress.x ,selectedAddress.y,1000);showCrimeInfoWindowOnZoom("selectedAddress.crimeGraphic");';		
		document.getElementById('crimeAddressBanner2').innerHTML = "<span style='font-size:8pt;color:#4C4545'>Zip Code: " + selectedAddress.zip + "</span>";		
		
		//Clear address data on Theme form 
		document.getElementById('genThemeAddr').value = "";
		document.getElementById('genThemeCity').value = "";
		document.getElementById('genThemeZip').value = "";
		document.getElementById('genThemeX').value = "";
		document.getElementById('genThemeY').value = "";
		document.getElementById('crimeThemeAddr').value = "";
		document.getElementById('crimeThemeCity').value = "";
		document.getElementById('crimeThemeZip').value = "";
		document.getElementById('crimeThemeX').value = "";
		document.getElementById('crimeThemeY').value = "";
		
		//Update street name and # on Theme form 
		document.getElementById('genThemeStreetName').value = streetCenterlineMapped.streetName;
		document.getElementById('genThemeStreetNumber').value = streetCenterlineMapped.streetNumber;
		document.getElementById('crimeThemeStreetName').value = streetCenterlineMapped.streetName;
		document.getElementById('crimeThemeStreetNumber').value = streetCenterlineMapped.streetNumber;
	}
	loadStatus.addressLoaded = true;
}	

function showLoading() {
    esri.show(document.getElementById('crimeLoadingImg'));
}

 function hideLoading() {
    esri.hide(document.getElementById('crimeLoadingImg'));
 }


function queryInit() {
    structAddrDialogInit(processStructureAddress);
	streetDialogInit(streetCenterLineQueryExec);	
	
	YAHOO.structAddr.container.structAddrDialog.hideEvent.subscribe(function(){						
		if (!loadStatus.addressLoaded && document.getElementById('structAddr').value == "" && loadStatus.streetDialog == false){
			alert("An address must be entered to proceed.");
			YAHOO.structAddr.container.structAddrDialog.show();		
		}

	});  

	YAHOO.street.container.streetDialog.showEvent.subscribe(function(){
		loadStatus.streetDialog = true;
	});  


	YAHOO.street.container.streetDialog.hideEvent.subscribe(function(){
		loadStatus.streetDialog = false;
		if (!loadStatus.addressLoaded && document.getElementById('streetName').value == ""){
			alert("An address must be entered to proceed.");	
			YAHOO.structAddr.container.structAddrDialog.show();
		}
	});  
	
	YAHOO.streetResults.container.streetResultsDialog.hideEvent.subscribe(function(){
		if (!loadStatus.addressLoaded){
			alert("An address must be entered to proceed.");	
			YAHOO.structAddr.container.structAddrDialog.show();
		}
	});  
	
	var paramAddress = decodeURI(getRequestParameter('address'));
	if (paramAddress != ""){
		var paramZip = getRequestParameter('zip');
		var paramCity = decodeURI(getRequestParameter('city'));
		var paramX = getRequestParameter('x');
		var paramY = decodeURI(getRequestParameter('y'));		
		document.getElementById('addr').value = paramAddress;
		document.getElementById('zip').value = paramZip;
		document.getElementById('city').value = paramCity;
		document.getElementById('x').value = paramX;
		document.getElementById('y').value = paramY;
		dojo.connect(crimeMap.map, "onLoad", processStructureAddress);
	}
	else{
		var paramStreetName = decodeURI(getRequestParameter('streetName'));		
		if (paramStreetName != ""){
			//alert("got here:" + paramStreetName);
			var paramStreetNum = getRequestParameter('streetNum');
			document.getElementById('streetName').value = paramStreetName;
			document.getElementById('streetNum').value = paramStreetNum;
			dojo.connect(crimeMap.map, "onLoad", streetCenterLineQueryExec);
		}
		else{	
			YAHOO.loading.container.wait.hide();
			javascript:YAHOO.ui.container.welcomeDialog.show();
			loadStatus.welcome = true;
			//javascript:YAHOO.structAddr.container.structAddrDialog.show();
		} 
	}
}

function processStructureAddress() { 
	structureAddressMapped = new StructureAddress(document.getElementById('addr').value,document.getElementById('city').value,document.getElementById('zip').value,Math.round(document.getElementById('x').value),Math.round(document.getElementById('y').value));
	if(document.getElementById('crimeAddressBanner').innerHTML  != "None"){
		clearGraphics();
		loadStatus.clear();
	}
	YAHOO.structAddr.container.structAddrDialog.hide();
	YAHOO.structAddrResults.container.structAddrResultsDialog.hide();
	document.getElementById('structAddr').value = "";
	document.getElementById('addr').value = "";
	document.getElementById('city').value = "";
	document.getElementById('zip').value = ""; 
	document.getElementById('x').value = "";
	document.getElementById('y').value = "";
	updateSelectedAddress('structureAddress');
	getCrimeCommunity();
}

function streetCenterLineQueryExec() {
	//alert("got to streetCenterLineExec" + document.getElementById('streetName').value);
	if(document.getElementById('crimeAddressBanner').innerHTML  != "None"){
		clearGraphics();
		loadStatus.clear();
	}
	YAHOO.street.container.streetDialog.hide();
	streetCenterlineQuery(processSelectedStreet,"processSelectedStreet");
}

function clearGraphics(){
 	crimeMap.map.graphics.clear();
	crimeMap.communityGraphicsLayer.clear();
}

function processSelectedStreet() { 
	YAHOO.streetResults.container.streetResultsDialog.hide();
	document.getElementById('streetNum').value = "";
	document.getElementById('streetName').value = "";
	updateSelectedAddress('streetCenterline');
	getCrimeCommunity();
}
	

function getRequestParameter(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 loadPrintLayout(){
	printMap(crimeMap.map,"crime");
}

function getCrimeCommunity(selectedCode){	
	selectedCommunityQuery = new Query(crimeQueryURL, ["POLICE_ARE","NOUN"]);
	if(selectedCode){	
		crimeMap.communityGraphicsLayer.clear();
		selectedCommunityQuery.query.where = "POLICE_ARE = '" + selectedCode + "'";
		YAHOO.loading.container.wait.show();
		crimeMap.map.infoWindow.hide();
	}
	else{
		//alert("xy" + selectedAddress.x + ":" + selectedAddress.y); 
		crimeMap.changeExtentByXY(selectedAddress.x,selectedAddress.y,20000);
		crimeMap.communityGraphicsLayer = new esri.layers.GraphicsLayer();
		crimeMap.map.addLayer(crimeMap.communityGraphicsLayer);
		selectedCommunityQuery.query.geometry = selectedAddress.point;
		selectedCommunityQuery.query.spatialRelationship = esri.tasks.Query.SPATIAL_REL_INTERSECTS;
		var crimeAddrSymbol = new esri.symbol.PictureMarkerSymbol("/MyAA/images/green-dot.png", 20, 20);
		if(selectedAddress.type == "structureAddress"){
				var crimeAddrTemplate = new esri.InfoTemplate("<a  title='Zoom Here' title='Zoom Here' href ='javascript:crimeMap.changeExtentByXY(" + selectedAddress.x  + "," + selectedAddress.y + ",1000);crimeMap.map.infoWindow.hide();'><b>" + selectedAddress.address + "</b></a>" ,"<table><tr><td width='25%'><b>City:</b></td><td width='75%'>" + selectedAddress.city + "</td></tr></td><tr><td width='25%'><b>Zip:</b></td><td width='75%'>" + selectedAddress.zip + "</td></tr></table>");
		}
		else{
				var crimeAddrTemplate = new esri.InfoTemplate("<a  title='Zoom Here' title='Zoom Here' href ='javascript:crimeMap.changeExtentByXY(" + selectedAddress.x  + "," + selectedAddress.y + ",1000);crimeMap.map.infoWindow.hide();'><b>" + selectedAddress.address + "</b></a>" ,"<table><tr><td width='25%'><b>Zip:</b></td><td width='75%'>" + selectedAddress.zip + "</td></tr></table>");
		}
		crimePoint = new esri.geometry.Point(selectedAddress.x,selectedAddress.y, new esri.SpatialReference({ wkid: 2248 }));
		var crimeAddrGraphic = new esri.Graphic(crimePoint,crimeAddrSymbol);
		selectedAddress.crimeGraphic = new Graphic(crimeAddrGraphic,crimeMap.map.graphics,true,crimeAddrSymbol,crimeAddrTemplate);
	}
	dojo.connect(selectedCommunityQuery.queryTask, "onComplete", function(fset) {
		//alert("got here:" + selectedCode + fset.features.length);
		var featureAttributes = fset.features[0].attributes;
		var code = "";
		var name = "";
		for (att in featureAttributes) {
			if(att == "POLICE_ARE"){
				code = featureAttributes[att];
				//alert("code:" + code);
			}
			else if(att == "NOUN"){
				name = featureAttributes[att];
				//alert("name:" + name);
			}
		}			
		//document.getElementById('communityName').innerHTML = name;
		if(!selectedCode){	
			document.getElementById('communityCode').innerHTML = code;
		}
		document.getElementById('selectedCommunityCode').innerHTML = code;
		var tableWidth = document.getElementById('crimeData').style.width.substring(0,3) - (document.getElementById('crimeData').style.width.substring(0,3) * .1);
		if(code == '350000'){
			document.getElementById('crimeResults').innerHTML = "<TABLE STYLE='BORDER:0;WIDTH:100%;'><TR><TD STYLE='BORDER:0;'>&nbsp;</TD><TD STYLE='BORDER:0;'>&nbsp;</TD></TR><TR><TD STYLE='BORDER:0;WIDTH:4%;'>&nbsp;</td><TD  STYLE='width:96%;border:0;font-size:8pt;'>Crime Statistics for the selected community are maintained by the City of Annapolis and can be obtained from the <a href='http://www.ci.annapolis.md.us/info.asp?page=12647' target='_blank'>City of Annapolis Crime Statistics Site</a>.<br><br></td></tr></table>";			
		}
		else{
			loadCrimeStats(crimeMap,code,'crimeResults',tableWidth);
		}
		var selectedCommunitySymbol = new esri.symbol.SimpleFillSymbol(esri.symbol.SimpleFillSymbol.STYLE_SOLID, new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleFillSymbol.STYLE_SOLID, new dojo.Color([0,0,0]), 1), new dojo.Color([255,0,0,0.75]));
        //var selectedCommunityTemplate = new esri.InfoTemplate("Community Name:<br/> ${NOUN}" ,"Community Code: ${POLICE_ARE}");
		var selectedCommunityTemplate = new esri.InfoTemplate("Community Code: ${POLICE_ARE}", "Crime Statistics for this community are displayed to the left." );
		selectedCommunityGraphic = new Graphic(fset.features[0],crimeMap.communityGraphicsLayer,true,selectedCommunitySymbol,selectedCommunityTemplate);
		getAdjCrimeCommunities(code);
	});
	selectedCommunityQuery.executeQuery();	
}


function getAdjCrimeCommunities(selectedCode){ 
	crimeGeometryService = new esri.tasks.GeometryService(geometryServiceURL);
	params = new esri.tasks.BufferParameters();
    params.features = [selectedAddress.crimeGraphic.graphic];
    params.distances = [5280];
    params.unit = esri.tasks.BufferParameters.UNIT_FEET;
    
	dojo.connect(crimeGeometryService, "onBufferComplete", function(graphics) {
        var bufferSymbol = new esri.symbol.SimpleFillSymbol("none", new esri.symbol.SimpleLineSymbol("dashdot", new dojo.Color([255,0,0]), 2), new dojo.Color([255,255,0,0.25]));
        var bufferGraphic = new esri.Graphic(graphics[0].geometry,bufferSymbol);
		adjCommunityQuery = new Query(crimeQueryURL, ["POLICE_ARE","NOUN"]);
		adjCommunityQuery.query.geometry = graphics[0].geometry;	
		adjCommunityQuery.query.spatialRelationship = esri.tasks.Query.SPATIAL_REL_INTERSECTS;
		
		dojo.connect(adjCommunityQuery.queryTask, "onComplete", function(fset) {
			var adjCommunitySymbol = new esri.symbol.SimpleFillSymbol(esri.symbol.SimpleFillSymbol.STYLE_SOLID, new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleFillSymbol.STYLE_SOLID, new dojo.Color([0,0,0]), 1), new dojo.Color([255,255,0,0.40])); 
			//var adjCommunityTemplate = new esri.InfoTemplate("Community Name:<br/> ${NOUN}" ,"Community Code: ${POLICE_ARE}<br/><br/><a href='javascript:getCrimeCommunity(\"${POLICE_ARE}\")'>View Crime Stats for this Community</a>");
			var adjCommunityTemplate = new esri.InfoTemplate("Community Code: ${POLICE_ARE}","<a href='javascript:getCrimeCommunity(\"${POLICE_ARE}\")'>View Crime Stats for this Community</a>");
			for (var i=0, il=fset.features.length; i<il; i++) {
				var code = "";  
				var featureAttributes = fset.features[i].attributes;
				
				for (att in featureAttributes) {
					if(att == "POLICE_ARE"){
						code = featureAttributes[att];
						//alert("code:" + code);
					}
				}		
				if (code != selectedCode){
					//alert("adding graphic: " +  + ":" + crimeMap.communityGraphicsLayer.graphics.length);
					fset.features[i].setInfoTemplate(adjCommunityTemplate);
					fset.features[i].setSymbol(adjCommunitySymbol);
					crimeMap.communityGraphicsLayer.add(fset.features[i]);
				}	
			}
			if (loadStatus.crimeStats == false){
				loadStatus.crimeStats = true;
				loadStatus.checkStatus("crimeStats");
			}
			else{
				YAHOO.loading.container.wait.hide();
			}
		});
		
		adjCommunityQuery.executeQuery();	
	});	
	crimeGeometryService.buffer(params);	
}

function viewSexOffenders(){
	url = "http://www.dpscs.state.md.us/sorSearch/search.do?searchType=byZip&anchor=offlist&zip=" + selectedAddress.zip + "&category=ALL";
	window.open(url);
}

