function CrimeStats(crimeArray,year_1, year_2, year_3, current_Year){
	this.crimeArray = crimeArray;
	this.year_1 = year_1;
	this.year_2 = year_2;
	this.year_3 = year_3;
	this.current_Year = current_Year;
}

function loadCrimeStats(map, code, div, width){	
	var yearUrl = "/AACOUtils/getCrimeStats.do?code=000000";
	var crimeUrl = "/AACOUtils/getCrimeStats.do?code=" + code;
	var meth = "GET";
	var crimeArray = [];
	var year1;
	var year2;
	var year3;
	var currentYear;
	
	var yearSuccessFunc = function (req) { 
		//alert("got here:" + code + ":" + div);
		var response = req.responseText;
		if (window.DOMParser){
			  parser=new DOMParser();
			  var doc=parser.parseFromString(response,"text/xml");
		}
		else{ // Internet Explorer
			  var doc=new ActiveXObject("Microsoft.XMLDOM");
			  doc.async="false";
			  doc.loadXML(response); 
		}  
		var z=doc.getElementsByTagName('item');	
		year1 = z[0].childNodes[2].childNodes[0].nodeValue;
		year2 = z[0].childNodes[3].childNodes[0].nodeValue;
		year3 = z[0].childNodes[4].childNodes[0].nodeValue;
		currentYear = z[0].childNodes[5].childNodes[0].nodeValue;
		
		var crimeAjax = new AJAXRequest(crimeUrl, meth);
		crimeAjax.makeRequest(crimeSuccessFunc, crimeErrorFunc);
		
	};
	
	var yearErrorFunc = function (status) { 
		alert("AJAX error: " + status); 
	};
	
	var crimeSuccessFunc = function (req) { 
		var response = req.responseText; 
		if (window.DOMParser){
		  parser=new DOMParser();
		  var doc=parser.parseFromString(response,"text/xml");
		}
		else{ // Internet Explorer
		  var doc=new ActiveXObject("Microsoft.XMLDOM");
		  doc.async="false";
		  doc.loadXML(response); 
		}  

		var z=doc.getElementsByTagName('item');	
		for (i=0;i<z.length;i++) {
			var crimeData= {crimeDesc: z[i].childNodes[1].childNodes[0].nodeValue, year1:z[i].childNodes[2].childNodes[0].nodeValue, year2:z[i].childNodes[3].childNodes[0].nodeValue, year3:z[i].childNodes[4].childNodes[0].nodeValue, currentYear:z[i].childNodes[5].childNodes[0].nodeValue};
			crimeArray.push(crimeData);
		}
		crimeStats = new CrimeStats(crimeArray,year1,year2,year3,currentYear);
		displayCrimeStats(map, crimeArray, div, year1, year2, year3, currentYear, width);
	};
	
	var crimeErrorFunc = function (status) { 
		alert("AJAX error: " + status); 
		return false;
	};
	
	var yearAjax = new AJAXRequest(yearUrl, meth);
	yearAjax.makeRequest(yearSuccessFunc, yearErrorFunc);
}

function sortCrimes(a,b) {
	if(a.crimeDesc > b.crimeDesc){
		return 1;
	}
	else if(a.crimeDesc < b.crimeDesc){
		return -1;
	}
	else{
		return 0;
	}
}

function displayCrimeStats(map, crimeArray, div, year_1, year_2, year_3, current_Year,width){
	document.getElementById('crimeDiv').style.display = 'inline';
	var crimeDescWidth = width * .4;
	var yearWidth = width * .07;
			
	var crimeColumnDefs = [   
			 {key:"crimeDesc", label:"Type of Incident",parser:"string",sortable:true, resizeable:false,width:crimeDescWidth}, 
			 {key:"year1", label:year_1,parser:"number", sortable:false,resizeable:false,width:yearWidth},
			 {key:"year2", label:year_2,parser:"number",sortable:false, resizeable:false,width:yearWidth},
		     {key:"year3", label:year_3,parser:"number",sortable:false, resizeable:false,width:yearWidth},
		     {key:"currentYear", label:current_Year,parser:"number",sortable:false, resizeable:false,width:yearWidth}
		 ];   
   
		 var crimeDataSource = new YAHOO.util.DataSource(crimeArray);   
		 crimeDataSource.responseType = YAHOO.util.DataSource.TYPE_JSARRAY;   
		 crimeDataSource.responseSchema = {    fields: ["crimeDesc","year1","year2","year3","currentYear"]   };    
	     crimeDataSource.doBeforeCallback = function (oRequest, oFullResponse, oParsedResponse, oCallback) {
              oParsedResponse.results.sort(sortCrimes);
              return oParsedResponse;
         };
		 var crimeDataTable = new YAHOO.widget.ScrollingDataTable(div,   crimeColumnDefs, crimeDataSource, {height:"15em",sortedBy:{key:"crimeDesc", dir:YAHOO.widget.DataTable.CLASS_ASC}});   
		 
		 return {  oDS: crimeDataSource,   oDT: crimeDataTable  };
}
