// JScript File for default.aspx
var map = null;
var pinID = 0;
var results = new Array();
var pageResults = 1;
var resultsPerPage = 10;
var resultsOnPage = 0;
var pins = new Array(null,null);
var divAlternator = 0;


//initial call to create map
function GetMap()
{
	hideRows(50);
  var default_lat = document.theSearch.start_lat.value;
  var default_lon = document.theSearch.start_lon.value;
  map = new VEMap('MapDiv');
  map.SetDashboardSize(VEDashboardSize.Small);
  map.LoadMap(new VELatLong(default_lat, default_lon), zoomLevel ,'r' ,false);
  map.AttachEvent("onchangeview", DoAjaxQuery);
  //map.AttachEvent('onclick', myEventTester);
  VEPushpin.ShowDetailOnMouseOver = false;
    map.AttachEvent("onclick", clickMap);

  VEPushpin.OnMouseOverCallback = function(x, y, title, details)
            {
               //alert('your mouse is at : ' + x + ', ' + y + 
               //' and you can display the details from title: ' + unescape(title) + 
               //' and details: ' + unescape(details));
               //testFunc();

                  //AddMyControl(x,y,title,details);
				
            }

  DoAjaxQuery();

}   

function clickMap()
{
	map_isClicked = true;
	
	RemoveMyControl();
	
	var ID = event.srcElement.parentNode.id;
    //alert("ID=" + ID);
    pin = pins[ID];
    var thisMLSID = pins[ID,2];
    // alert(thisMLSID);
    //alert(pin.LatLong);
    //var center = map.LatLongToPixel(pin.LatLong);
    //alert(center.x + "/" + center.y);
    
    var posx = 0;
	var posy = 0;
	if (!e) var e = window.event;
	if (e.pageX || e.pageY) 	{
		posx = e.pageX;
		posy = e.pageY;
	}
	else if (e.clientX || e.clientY) 	{
		posx = e.clientX + document.body.scrollLeft
			+ document.documentElement.scrollLeft;
		posy = e.clientY + document.body.scrollTop
			+ document.documentElement.scrollTop;
	}
    
    if (ID != "")
    {
    	popUpDiv(window.event, ID);
    }
    
    //alert (posx + " " + posy);
    //alert("Title=" + pin.Details);
    //AddMyControl(posx,posy,pin.Title,pin.Details);
    //homeImg = pins[ID,1];
    //homeImg2 = document.getElementById("popimg").src;
    //alert(homeImg + ' = ' + homeImg2);
    
    //testImage = document.getElementById("testImg");
    //testImage.src = homeImg;
    //preloadPic(homeImg2);
    //alert(homeImg2);
    

}

function preloadPic(IMAGEFILENAME){ 
	//alert(IMAGEFILENAME);
var img = new Image(); 
     img.src = IMAGEFILENAME; 
    img.onload = loadPic; 



} 


 function loadPic(){ 
document.images["popimg"].src = this.src; 


} 


  function AddMyControl(x,y,title,details)
         {
         	RemoveMyControl();
            var el = document.createElement("div"); 
            el.id = "myControl";
            //el.style.top ="300px"; 
            //el.style.left = "100px"; 
            //var ypix = y - 88;
            //var xpix = x + 204;
            var ypix = y - 335;
            var xpix = x - 5;
            el.style.top = ypix + "px";
            el.style.left = xpix + "px";
            el.style.border = "none";
			el.style.height = "268px";
			el.style.width = "230px";
			el.style.background = "url(/images/Map-Balloon-Graphic2.gif) bottom left no-repeat";
            //el.innerHTML = "my control";  
            el.innerHTML = unescape(title) + ' ' + unescape(details);

            map.AddControl(el);
            //addShim(el);
         }


function RemoveMyControl()
         {
            //var mycontrol = document.getElementById("myControl");
            //if (mycontrol!=null) mycontrol.parentNode.removeChild(mycontrol);
            //mycontrol = null;
            //var myShim = document.getElementById("myShim");
            //if (myShim!=null) myShim.parentNode.removeChild(myShim);
            //myShim = null;
            window.popFrame.location.href = "/blank.asp";
            window.altFrame.location.href = "/blank.asp";
            window.clusterPropFrame.location.href = "/blank.asp";
            hideDiv('popProp');
            hideDiv('altProp');
            hideDiv('clusterProp');
         }




//show a loading label
function ShowLoading()
{
  var el = document.createElement("div"); 
  el.setAttribute('id',"VELoading");
  //Now we should know the width and height of the VE map or else go and get it.
  var curr_width = 800;
  var curr_height = 600;
  //el.style.top = ((curr_height - 25) / 2) + "px";
  //el.style.left = ((curr_width - 105) / 2) + "px";
  el.style.top = "325px";
  el.style.left = "500px";
  el.style.border = "1px solid gray";
  el.style.font = "12px arial";
  el.style.background = "White";
  el.style.padding = "0";
  el.style.verticalAlign = "middle";
  el.innerHTML = "<img src='/images/loading2.gif' /> Please Wait. Loading data....";  
  map.AddControl(el);
}

//remove loading label
function HideLoading()
{
  var el = document.getElementById("VELoading");
  el.parentNode.removeChild(el);
}

//helper function for AJAX
function GetXmlHttp()
{
  var x = null;
  try
  {
    x = new ActiveXObject("Msxml2.XMLHTTP");
  }
  catch (e)
  {
    try
    {
      x = new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch (e)
    {
      x = null;
    }      
  }
  if (!x && typeof XMLHttpRequest != "undefined")
  {
    x = new XMLHttpRequest();      
  }
  return x;
}

//call the AJAX query.
function DoAjaxQuery()
{
	

	var url = "mapAjax.asp?1=1";	
	
	var mapStyle = map.GetMapStyle();
	if(mapStyle == "o")
	{
		url += "&view=o";
		RemoveMyControl();
		return;
	}

	var pixel  = new VEPixel(0, 0);
	
  //Build the url to call the server
  url += "&tl=" + map.PixelToLatLong(pixel);
  
    //Now we should know the width and height of the VE map or else go and get it.
   var curr_width = 778;
   var curr_height = 400;
   var zip = document.theSearch.zip.value;
   var minPrice = document.theSearch.minPrice.value;
   var maxPrice = document.theSearch.maxPrice.value;
   var bed = document.theSearch.bed.value;
   var bath = document.theSearch.bath.value;
   var sqft = document.theSearch.sqft.value;
   var levelNo = document.theSearch.levelNo.value;
   var age = document.theSearch.age.value;
   var market = document.theSearch.market.value;
   var propType = document.theSearch.propType.value;
   var orderBy = document.theSearch.orderBy.value;
   var sid = document.theSearch.sid.value;
   var address = encode(document.theSearch.address.value);
   var city = encode(document.theSearch.city.value);
   var subdivision = encode(document.theSearch.subdivision.value);
   var state = encode(document.theSearch.state.value);
   var exact = document.theSearch.exact.value;
   var acreage = document.theSearch.acreage.value;

// SEND SEARCH VARS

	url += "&minPrice=" + minPrice;
	url += "&maxPrice=" + maxPrice;
	url += "&bed=" + bed;
	url += "&bath=" + bath;
	url += "&sqft=" + sqft;
	url += "&age=" + age;
	url += "&market=" + market;
	url += "&propType=" + propType;
	url += "&levelNo=" + levelNo;
	url += "&sid=" + sid;
	url += "&orderBy=" + orderBy;
	url += "&zip=" + zip;
	url += "&address=" + address;
	url += "&city=" + city;
	url += "&state=" + state;
	url += "&exact=" + exact;
	url += "&acreage=" + acreage;
	
// MAP HEIGHT WIDTH AND LAT LONG
  url += "&w=" + curr_width;
  url += "&h=" + curr_height;
  
  var br_pixel  = new VEPixel(curr_width, curr_height);
	
   
  url += "&br=" + map.PixelToLatLong(br_pixel);
  url += "&z=" + map.GetZoomLevel();
  
  //alert(url);
    //put up a loading label
  ShowLoading();
  
  // hide any controls
  RemoveMyControl();

  //Start by getting the appropriate XMLHTTP object for the browser
  var xmlhttp = GetXmlHttp();

  //If we have a valid xmlhttp object
  if (xmlhttp)
  {

    xmlhttp.open("GET", url, true); // varAsync = true;
    
    //Set the callback.  This function is called when we 
    xmlhttp.onreadystatechange = function()
    {
      if (xmlhttp.readyState == 4)  //4 is a success
      {
        //Server code creates javascript "on the fly" for us to
        //execute using eval()
        var result = xmlhttp.responseText;
        //alert(result);
        eval(result);
      }
    }
    xmlhttp.send(null);
  }


}

      function myEventTester(e)
        {
           var events = "mapstyle: " + e.view.mapStyle;
           events +="<br/>latlong: " + e.view.latlong.latitude + ", " + e.view.latlong.longitude;
           events +="<br/>LatLong: " + e.view.LatLong;
           events +="<br/>zoomLevel: " + e.view.zoomLevel;
           events +="<br/>sceneID: " + e.view.sceneId;
           events +="<br/>sceneOrientation: " + e.view.sceneOrientation;        
           
           document.getElementById('events').innerHTML = events;
        }


function encode(str) {
	var result = "";
	
	for (i = 0; i < str.length; i++) {
		if (str.charAt(i) == " ") result += "+";
		else result += str.charAt(i);
	}
	
	return escape(result);
}


function fillResults(fResults, fStart)
{
	//alert("FILLRES");
fPageSize = resultsPerPage;
fStart = (fStart - 1) * fPageSize + 1;
fEnd = fStart + fPageSize;
var counter = 0;
for (x = fStart; x <fEnd; x++)
{
	counter++;
	tableElements = new Array("propertyPhoto", "propertyAddress", "propertyBedBath", "propertyPrice", "propertyFunctions")
	var y = 0;
	for (y=0; y < tableElements.length; y++)
	{
		divid = tableElements[y];
		//alert(divid + counter);
		if (x< fResults.length)
		{
			document.getElementById(divid + counter).innerHTML = fResults[x][y];
		} else {
			document.getElementById(divid + counter).innerHTML = "";
		}
		
	}
		
	
	
	
}

}

function pageResultsUp()
{
	
	fillResults(results,pageResults,10);
	pageResults++;
	if(pageResults>=10)
	{
		pageResults = 1;
	}
	
		
	
}

function hideRows(fNumber)
{

	for(i=1; i<=fNumber; i++)
	{
		document.getElementById('row' + i).style.display='none';	
	}
}

function showRows(fNumber)
{

	for(i=1; i<=fNumber; i++)
	{
		document.getElementById('row' + i).style.display='inline';	
	}
}

function changeResultsPerPage(nNumber)
{
	
	resultsPerPage = nNumber;	
	fillPageResNav();
	hideRows(50);
	showRows(nNumber);
	fillResults(results, pageResults);
	
	
	
}

function fillPageResNav()
{
	var theList = "";
	var areResults = false;
	numberOfPages = resultsOnPage/resultsPerPage;
	if(numberOfPages > Math.round(numberOfPages))
	{
		numberOfPages++;
	}
	//alert(numberOfPages);
	for(i=1; i<=numberOfPages;i++)
	{
		areResults = true;
		//theList += i + " - ";
		theList += "<A HREF=\"javascript:fillResults(results," + i + ")\;\">" + i + "</A> &nbsp\;";
	}
	if(areResults)
	{
		theList += "<A HREF=\"javascript:pageResultsUp()\;\" class=\"navigate\"><img src=\"/images/rght.gif\" style=\"border: 0\;\"></a>";
	}
	document.getElementById('pageResNav').innerHTML = theList;
	
	
	
}

//document.getElementById('results2').style.display="block";
//alert("val=" + document.getElementById("results2").style.display);

function modifySearch(sField, sValue)
{
	sField = "s_" + sField;

	var elem = document.getElementById(sField);
	elem.value = sValue;
	
	DoAjaxQuery();
	
	
	
}

function resultsPopUp(fID)
{
	
	pin = pins[fID];
   	var center = map.LatLongToPixel(pin.LatLong);
   	var posx = center.x + 213;
   	var posy = center.y + 225;


	var theDiv = document.getElementById("popProp");
    
	var ypix = posy - 275;
    var xpix = posx - 208;
  	
    theDiv.style.top = ypix + "px";
    theDiv.style.left = xpix + "px";
    theDiv.style.zIndex = 102;
            
	window.popFrame.location.href = "/propertySearch/propRoll.asp?top=" + ypix + "&left=" + xpix + "&ID=" + fID;
	setTimeout("showDiv('popProp')",250);
	   	
    	
}






function popUpDiv(theEvent, theMLSID)
{
	
	var posx = 0;
	var posy = 0;
	if (!e) var e = theEvent;
	if (e.pageX || e.pageY) 	{
		posx = e.pageX;
		posy = e.pageY;
	}
	else if (e.clientX || e.clientY) 	{
		posx = e.clientX + document.body.scrollLeft
			+ document.documentElement.scrollLeft;
		posy = e.clientY + document.body.scrollTop
			+ document.documentElement.scrollTop;
	}
    
    //Alternate between two DIVs to keep iframe fresh and blank
	if (divAlternator == 0)
	{
		divAlternator = 1;
		theFrame = popFrame;
		theDivName = "popProp";
		var ypix = posy - 275;
	    var xpix = posx - 208;
  	
	} else {
		divAlternator = 0;
		theFrame = altFrame;
		theDivName = "altProp";
		var ypix = posy - 117;
	    var xpix = posx - 2;
  	
	}
	
	var theDiv = document.getElementById(theDivName);
    
	
    theDiv.style.top = ypix + "px";
    theDiv.style.left = xpix + "px";
    theDiv.style.zIndex = 102;

		
   window.theFrame.location.href = "/propertySearch/propRoll.asp?top=" + ypix + "&left=" + xpix + "&ID=" + theMLSID;
	showDiv(theDivName);
	
	
	
	
	
}




function popUpSubDiv(theID, theTop, theLeft)
{
	var thisDiv = document.getElementById("clusterProp");
    thisDiv.style.position = "absolute";
    
    if (divAlternator == 0)
	{
		var ypix = theTop - 0;
    	var xpix = theLeft - 0;
		
	} else {
   		var ypix = theTop - -158;
    	var xpix = theLeft - -207;
    }
  
    
	thisDiv.style.top = ypix + "px";
    thisDiv.style.left = xpix + "px";
    thisDiv.style.zIndex = 35100;
            
	window.clusterPropFrame.location.href = "/blank.asp";
	setTimeout("showDiv('clusterProp')",250);
	window.clusterPropFrame.location.href = "/propertySearch/propRoll.asp?cluster=1&top=" + theTop + "&left=" + theLeft + "&ID=" + theID;
	//showDiv("clusterProp");	
	
}






















































































































































































































