var newResults = false;


function buildResultsTable(arrTable){



			var numItem = 15;
 
		   var headers=new Array();
		   headers[0] = "<img src = 'images/spacer.gif' />";
		   headers[1] = "Parcel ID";
		   headers[2] = "Address";
		   headers[3] = "Sale Date";
		   headers[4] = "Price";
		   headers[5] = "Value";
		   headers[6] = "Lot Size";
	
		   
		   var colSize = new Array();
		   colSize[0] = 20;
		   colSize[1] = 90;
		   colSize[2] = 170;
		   colSize[3] = 70;
		   colSize[4] = 90;
		   colSize[5] = 90;
		   colSize[6] = 88;
		   
		   var colType = new Array();
		   colType[0] = "link";
		   colType[1] = "Value";
		   colType[2] = "Value";
		   colType[3] = "Value";
		   colType[4] = "Currency";
		   colType[5] = "Currency";
		   colType[6] = "Value";
		   	   
		   

		  
		aTable = new elem.Table(arrTable,numItem,'spnResults',headers,colSize,colType,"aTable","lTable","headerrow","firstrow","itemrow","altrow");
		aTable.buildTable(1);
		document.getElementById("Results").style.display="block";

		document.getElementById('numResults').value = numItem;

	
}

	 
	
//function to create new request map items and place them on the map.  Function is called when new requests are recieved and wen paning and zooming------------
function setPoints(){
 clearPoints();
 
	 if (parcelArray.length>0)
	 {
	   //proceed with the if statements
	
	     //map the points automaticaly if there's less than 200 
	     if (parcelArray.length<1000)
	     {
	           drawPoints=true;
			   createPoints();
		 }
			 //if there are more than 200 records, then ask the user if they want to proceed...
		if (parcelArray.length>1000 && zoomQueryResults == false)
		     {
					var answer = confirm ("There are more than 1000 records which may be slow to return. Would you like to proceed?")
						if (answer)
						 {
							//proceed with mapping 200+ results
							drawPoints=true;
							createPoints();
						//1	zoomQueryResults = true;
						} 
				}
	
	     }

}


function createPoints()	{

if(drawPoints == true)
 {			
	//display the loading image while the points are created....
//	top.mapframe.showLoading();
	
    var img = document.getElementById('mapImage');
	var chk = true;
	
	//check to see we should check the extents or zoom to the request results
	if(newResults)
	{ 
	 //check to see if the current extents will show all of the requests - bool, true false
	 chk = checkExtents()
		  { 
		  	//if false or if we need to zoom anyway then calc the new map extents
			  if(!chk)
			  	{ 
				calcExtents()
				return false;
				}
	  	}
	}
	
	//iterate through the response collection and set all the points
    for(i=0;i<parcelArray.length;i++)
	{
        //create a new request object
       
		var rqst = new qry.MapPin(parcelArray[i]);
		
        rqst.showCall(vMap);
		
		    if(rqst.pinBlock)
			{
               
			    img.parentNode.appendChild(rqst.pinBlock);
	        }
       
    }
		
   
   
	//once the points have been set, we need to set newresults to false to keep from recalculating the extents every time the user zooms or pans
	  newResults=false; 
	  }
	  else if(singlePoint != null && drawPoints == false)
	  {
	   var img = document.getElementById('mapImage');
	  for(i=0;i<parcelArray.length;i++)
	      {
	         if(parcelArray[i].parcelID ==singlePoint)
	            {
	                 var rqst = new qry.MapPin(parcelArray[i]);
		
                     rqst.showCall(vMap);
		
		            if(rqst.pinBlock)
		               	{
			            img.parentNode.appendChild(rqst.pinBlock);
	                    }
	            }
	        }
	  }
	  
	 correctPNG(); 
	}




function selectInt()
{
initmode = 0;
reqLocX= vMap.xMin + ((this.x-10)*vMap.xFact);
reqLocY= vMap.yMax -((this.y-50)*vMap.yFact);
var reparray = new Array(1);
var resp = new Object();
resp.X = reqLocX;
resp.Y = reqLocY;
reparray[0] = resp;
setPoints(reparray,false,false,reqInit, initmode)
}



//function to clear request pins from the map.---------------------------------------------------------------------------------
function clearPoints()
{
    //if(top.dataframe.document.title=="Parcel Search")
    //{
	//top.dataframe.document.getElementById('btnclearmapped').style.display = "none";
	//}
	//drawPoints = false;
	var img = top.mapframe.document.getElementById('img')
	var ims = img.getElementsByTagName('div')
	
	for(i=ims.length-1;i>=0;i--){
		
		if(ims[i].name =="pin")
		{
			ims[i].parentNode.removeChild(ims[i]);
		}
	}
	
	var sms = img.getElementsByTagName("span")
	for(i=sms.length-1;i>=0;i--){
		
		if(sms[i].name =="pin")
		{
			sms[i].parentNode.removeChild(sms[i]);
		}
	}

}


//function to check if current batch of requests are contained by the current map extents---------------------
function checkExtents()
{
	
	var chkFlag=true;
	for(i=0;i<parcelArray.length;i++)
		{
			 if(parcelArray[i].x<vMap.wXMin ||parcelArray[i].x>vMap.wXMax||parcelArray[i].y>vMap.wYMax||parcelArray[i].y<vMap.wYMin)
				{
					chkFlag=false;
				}

		}
	
	return chkFlag;
}

//function to calculate new map extents to include all of the requests-----------------------------------------
function calcExtents(singlePt)
{  
	if(singlePt==null)
	{
	var vXmax = parcelArray[0].x;
	var vXmin = parcelArray[0].x;
	var vYmax = parcelArray[0].y;
	var vYmin = parcelArray[0].y;
	
	//alert(vXmax+","+vXmin+","+vYmax+","+vYmin)
	//calculate the extents of the requests.
	for(i=1;i<parcelArray.length;i++)
		{
			if(parcelArray[i].x > vXmax)
			{
				vXmax = parcelArray[i].x;
			}
			if(parcelArray[i].x < vXmin)
			{
				vXmin = parcelArray[i].x;
			}
			if(parcelArray[i].y > vYmax)
			{
				vYmax = parcelArray[i].y;
			}
			if(parcelArray[i].y < vYmin)
			{
				vYmin = parcelArray[i].y;
			}
	
	    }
	    
	    
	
	if(parcelArray.length==1)  //check if it is a single respons
		{// if so then calc the extents to generate a 100 scale image
		var width = (vMap.mapWidth/96)*100;
		var height = (vMap.mapHeight/96)*100;
		
			vXmax = (parseFloat(parcelArray[0].X) + parseFloat(width))
			vXmin = (parseFloat(parcelArray[0].X) - parseFloat(width))
			vYmax = (parseFloat(parcelArray[0].Y) + parseFloat(height))
			vYmin = (parseFloat(parcelArray[0].Y) - parseFloat(height))
		//	alert(vXmax+","+vXmin+","+vYmax+","+vYmin)	
		}
		else
		{// else add a little buffer to make sure there is a bit of a margin around the requests
			vXmax = parseFloat(vXmax) +parseFloat(500);
			vXmin = parseFloat(vXmin)-parseFloat(500);
			vYmax = parseFloat(vYmax)+parseFloat(500);
			vYmin = parseFloat(vYmin)-parseFloat(500);
			
			
		}
	}
		
	else
	{	
		
		//if(parcelArray.length==1)  //check if it is a single respons
		//{// if so then calc the extents to generate a 100 scale image
		var width = (vMap.mapWidth/96)*50;
		var height = (vMap.mapHeight/96)*50;
		
			vXmax = (parseFloat(singlePt.X) + parseFloat(width))
			vXmin = (parseFloat(singlePt.X) - parseFloat(width))
			vYmax = (parseFloat(singlePt.Y) + parseFloat(height))
			vYmin = (parseFloat(singlePt.Y) - parseFloat(height))
		//	alert(vXmax+","+vXmin+","+vYmax+","+vYmin)	
		//}
		
	}	
		
		
		
      newResults=false; 
	//load the new extents into the postback form and request a new image
	top.postbackframe.document.getElementById('txtMapCoordEnv').value = vXmax+","+vXmin+","+vYmax+","+vYmin;
	top.postbackframe.document.getElementById('btnZoomCoords').click();
		
}
 
