var okToSend = true;
var mindiff = .005;
var order_by = 'lp_Listing_Price';
var up_down = "ASC";

// tile stuff
var resolution;
var container;
var mapContainer;
var ds = 'ms_search_carru';
var max_results = "100";
var rows = 256;
var cols = 256;
var max_scale = 9;
var cache = "carru";
var cache_origin_x = "-82.50732";
var cache_origin_y = "41.29730";

function toggleView(str) {
        if (str == 'sat') {
                document.getElementById('map_button').src = 'images/map_deselected.png';
                document.getElementById('sat_button').src = 'images/sat_selected.png';
                cache = 'carru_sats';
        } else {
                document.getElementById('map_button').src = 'images/map_selected.png';
                document.getElementById('sat_button').src = 'images/sat_deselected.png';
                cache = 'carru';
        }
        getMap("");
}

function setEnvelope(ix, iy, ax, ay) 
{
	minx = ix;
	miny = iy;
	maxx = ax;
	maxy = ay;

	scale = 4;

        cd_MLS_sum = "";

	getMap("");

}

function setCoreValues()
{
        saved_minx = minx;
        saved_miny = miny;
        saved_maxx = maxx;
        saved_maxy = maxy;

}

function getInitialMap(){


	container = document.getElementById('mapArea');
        
        mapContainer = getElmById('mapContainer');

	getMap("");

}

function write_debug(str)
{
	if (document.getElementById('ta_debug') != null)
	{
		document.getElementById('ta_debug').value += str + '\n';
	}
}


function parseLayers(){
  if (http.readyState == 4) {
  
   if (http.status == 200) {

      var result = http.responseText;
      getLayers(result); 
      getInitialMap();
   } else alert("Error retreiving data");
          
  }  
  
 }

function fixedZoomIn(){
        if (parseInt(scale) < max_scale) {
                scale = parseInt(scale) + 1;
                fixedzoom = "true";
                getMap("");
        } else {
                alert("Currently at min zoom");
        }
}

function fixedZoomOut(){
        if (parseInt(scale) > 0) {
                scale = parseInt(scale) - 1;
                fixedzoom = "true";
                getMap("");
        } else {
                alert ("Currently at max zoom");
        }
}

function zoom(left, bottom, right, top){
     	if (getExtentForZoomIn(left, bottom, right, top)) {
     		getMap("");	
	}
}
     
function dragObjects(dx, dy)
{         
        for (var i = 0; i < container.childNodes.length;i++) {
                var node = container.childNodes[i];
                var cur_left = node.style.left;
                var cur_top = node.style.top;
                var l = parseInt(cur_left.substring(0, cur_left.length));
                var t = parseInt(cur_top.substring(0, cur_top.length));
                
                node.style.left = parseInt(l +  dx) + "px";
                node.style.top = parseInt(t + dy) + "px";
        } 
                
        for (var i = 0; i < mapContainer.childNodes.length; i++) {
                var node = mapContainer.childNodes[i];
                var cur_left = node.style.left;
                var cur_top = node.style.top; 
                var l = parseInt(cur_left.substring(0, cur_left.length));
                var t = parseInt(cur_top.substring(0, cur_top.length));

                node.style.left = parseInt(l +  dx) + "px";
                node.style.top = parseInt(t + dy) + "px"; 
                
        }

}


function pan(ix, iy){
	var dx = (maxx - minx)/mwidth;
	var mx = dx*ix;
	var my = dx*iy;
	minx += mx;
	maxx += mx;
	miny += my;
	maxy += my;
	var env = '<ENVELOPE minx="' + minx + '" miny="' + miny +'" maxx="' + maxx +'" maxy="' + maxy + '" />';
     	getMap(env);
}
function panDirection(dir){
	shift(dir);
	var env = '<ENVELOPE minx="' + minx + '" miny="' + miny +'" maxx="' + maxx +'" maxy="' + maxy + '" />';
     	getMap(env);
}

function shift(dir){
	var dx = maxx - minx;
	var dy = maxy - miny;
		
	switch(dir) {
		//NORTH
		case "north":
			miny += 0.3*dy;
			maxy += 0.3*dy;
		break;
		//south
		case "south":
			miny -= 0.3*dy;
			maxy -= 0.3*dy;
		break;
		//east
		case "east":
			minx += 0.3*dx;
			maxx += 0.3*dx;
		break;
		//west
		case "west":
			minx -= 0.3*dx;
			maxx -= 0.3*dx;
		break;
		//northeast
		case "ne":
			miny += 0.3*dy;
			maxy += 0.3*dy;
			minx += 0.3*dx;
			maxx += 0.3*dx;
		break;
		//northwest
		case "nw":
			miny += 0.3*dy;
			maxy += 0.3*dy;
			minx -= 0.3*dx;
			maxx -= 0.3*dx;
		break;
		//southeast
		case "se":
			miny -= 0.3*dy;
			maxy -= 0.3*dy;
			minx += 0.3*dx;
			maxx += 0.3*dx;
		break;
		//southwest
		case "sw":
			miny -= 0.3*dy;
			maxy -= 0.3*dy;
			minx -= 0.3*dx;
			maxx -= 0.3*dx;
		break
		
	}
}

function getExtentForZoomIn(left, bottom, right, top){

	var LLPoint = getMapXY(left, bottom);
	var URPoint = getMapXY(right, top);
 
	var xdiff = URPoint[0] - LLPoint[0];
        var ydiff = URPoint[1] - LLPoint[1];

        if (xdiff < mindiff || ydiff < mindiff) {
		alert ("Please select a larger area to zoom.");
        	return false;
	}
	
	minx = LLPoint[0];
	miny = LLPoint[1];
	maxx = URPoint[0];
	maxy = URPoint[1];

	return true;

}

function getExtentForZoomOut(left, bottom, right, top){
		var xDiff= maxx-minx;
		var yDiff= maxy-miny;

		var pwidth = right-left;
		var pheight = top-bottom;
		var xRatio = mwidth / pwidth;
		var yRatio = mheight / pheight;
		var xAdd = xRatio * xDiff / 2;
		var yAdd = yRatio * yDiff / 2;
		minx =  minx - xAdd;
		maxx = maxx + xAdd;
		miny = miny - yAdd;
		maxy = maxy + yAdd;
		

}

function dump_vals()
{	
	alert ('minx / ' + minx + ' miny / ' + miny + ' maxx / ' + maxx + ' maxy / ' + maxy + ' scale / ' + scale);
}

function getMapXY(xIn,yIn) {

	var newValues = new Array();

	var mouseX = xIn;
	var pixelX = (maxx-minx) / mwidth;

	var newX = (pixelX * mouseX) + minx;

	var mouseY = mheight - yIn;
	var pixelY = (maxy-miny) / mheight;
	var newY = (pixelY * mouseY) + miny;

	newValues[0] = newX;

	newValues[1] = newY;
	return newValues; 
}

function growEnvelope(value){
	var dx = maxx - minx;
	var dy = maxy - miny;

	var cx = (maxx + minx)/2.0;
	var cy = (maxy + miny)/2.0;

	var dx1 = 0.5 * value * dx;
	var dy1 = 0.5 * value * dy;

	minx = cx - dx1;
	miny = cy - dy1;
	maxx = cx + dx1;
	maxy = cy + dy1;
}

function getMapWithSort(sort) {
if (sort == order_by) {
	if (up_down == "ASC") {
		up_down = "DESC";
	} else {
		up_down = "ASC";
	}
}
order_by = sort;
getMap("");
}

function getMapWithCurrentExtent(){

	getMap("");
}



function getMap(envelope) {

	if (okToSend) {
  	http = getHTTPObject();

  	if ((http != null) ) {
	okToSend = false;
    	var axl = getMapRequest(envelope);
   	 
    	http.open("POST", url, true);
    	http.onreadystatechange = printResponse;
    	http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    	showLayer('loading');
    	http.send(axl);
	}
	} else {
		alert ("Waiting for previous response");
	}
}

function createQueryString()
{
        var retVal = "minx=" + minx + "&miny=" + miny + "&maxx=" + maxx + "&maxy=" + maxy;

        var myvars = new Array('lp_low', 'lp_high', 'beds_low', 'half_baths_low', 'full_baths_low', 'p_type', 'b_type');

        for (var i = 0; i < myvars.length; i++) {
                retVal = retVal + "&" + myvars[i] + "=" + getElmById(myvars[i]).value;
        }

	
        if (cd_MLS_sum.length > 0) {
                retVal = "cd_MLS_sum=" + cd_MLS_sum + "&delay_map=y";
        }

        retVal += "&zoom=true&scale=" + scale;

        if (document.getElementById('wv').checked) {
                retVal += "&wv=true";
        }
        if (document.getElementById('wf').checked) {
                retVal += "&wf=true";
        }
        if (document.getElementById('g').checked) {
                retVal += "&g=true";
        }
        if (document.getElementById('oh').checked) {
                retVal += "&oh=true";
        }
        return retVal;
}

function getMapRequest(env)
{
        var lp_low = document.getElementById('lp_low').value;
        var lp_high = document.getElementById('lp_high').value;
        var beds_low = document.getElementById('beds_low').value;
        var full_baths_low = document.getElementById('full_baths_low').value;
        var half_baths_low = document.getElementById('half_baths_low').value;
        var p_type = document.getElementById('p_type').value;
        var b_type = document.getElementById('b_type').value;
        var wf = document.getElementById('wf').checked ? "true" : "";
        var wv = document.getElementById('wv').checked ? "true" : "";
        var g = document.getElementById('g').checked ? "true" : "";
        var oh = document.getElementById('oh').checked ? "true" : "";

       	var w = ' AND lp_Listing_Price >= ' + lp_low + ' AND lp_Listing_Price <= ' + lp_high + ' AND lp_No_Bedrooms >= ' + beds_low + '  AND lp_d1i48nt >= ' + full_baths_low + ' AND lp_d1i49nt >= ' + half_baths_low;

        if (p_type.length > 0) {
                w += " AND lp_tp_Improvement = '" + escape(p_type) + "'";
        }
	if (b_type.length > 0) {
		w += " AND lp_tp_Building = '" + escape(b_type) + "'";
	}
        if (wf.length > 0) {
                w += " AND lp_d1i57nt = 1";
        }
        if (wv.length > 0) {
                w += " AND lp_d1i56nt = 1";
        }
	if (g.length > 0) {
		w += " AND lp_Ind_Garage > 0";
	}
        if (oh.length > 0) {
                w += " AND lp_ind_OpenHouse = 'Y'";
        }

	if (cd_MLS_sum.length > 0) {
		w += " AND cd_MLS IN (" + cd_MLS_sum + ")";
	}

        w += " ORDER BY " + order_by + " " + up_down;

        var fl = "cd_MLS,lp_MLS_Number,FORMAT(lp_Listing_Price, 0) as lp_Listing_Price_Display,FLOOR(lp_Listing_Price) AS lp_Listing_Price,lp_ListingCity,lp_ListingAddr1,lp_ListingCity,lp_ListingState,lp_ListingZip,lp_No_Bedrooms,lp_No_Bathrooms,lp_res_Lat,lp_res_Long,lp_Photo_URL,lp_PhotoDesc_1,lp_ind_OpenHouse,cd_Company,lp_d1i48nt,lp_d1i49nt";

        var axl = 'SITE=' + site + '&INC_OFFICES=&minx=' + minx + '&maxy=' + maxy + '&maxx=' + maxx + '&miny=' + miny + '&cache=' + cache + '&width=' + width + '&height=' + height + '&INC_LISTINGS=y&DS=' + ds + '&MAX_RESULTS=' + max_results + '&FL=' + fl + "&scale=" + scale + '&zoom=' + fixedzoom + "&CACHE_ORIGIN_X=" + cache_origin_x + "&CACHE_ORIGIN_Y=" + cache_origin_y + "&SRCH_WHERE=" + w + '&DELAY_MAP=' + delay_map;

        return axl;
}

if(!isIE){

	Document.prototype.loadXML = function (s) {

	// parse the string to a new doc   
	   	var doc2 = (new DOMParser()).parseFromString(s, "text/xml");
      
	   	// remove all initial children
	   	while (this.hasChildNodes())
	   	   this.removeChild(this.lastChild);
         
	   	// insert and import nodes
	   	for (var i = 0; i < doc2.childNodes.length; i++) {
	   	   this.appendChild(this.importNode(doc2.childNodes[i], true));
	   	}
       };
}



function printResponse(){

if (http.readyState == 4) {
    if (http.status == 200) {

      isWorking = false;
      
      	var result = http.responseText;

	var xmlDoc;
	
      	if(document.implementation && document.implementation.createDocument) { 
      		// MOZILLA 
       	 	xmlDoc = document.implementation.createDocument("", "", null);
      	 	xmlDoc.async="false";
         	xmlDoc.loadXML(result);
      	} else if (window.ActiveXObject){
      	 	//IE
      	  	xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
	  	xmlDoc.async="false";
	  	xmlDoc.loadXML(result);
       	}
	
      var tiles = xmlDoc.getElementsByTagName("TILES")[0].getElementsByTagName("TILE");
        scale = xmlDoc.getElementsByTagName("TILES").item(0).getAttribute("scale");

        resolution = xmlDoc.getElementsByTagName("TILES").item(0).getAttribute("resolution");

	positionSlider();

        var env = xmlDoc.getElementsByTagName("ENVELOPE").item(0);

        minx = parseFloat(env.getAttribute("minx"));
        miny = parseFloat(env.getAttribute("miny"));
        maxx = parseFloat(env.getAttribute("maxx"));
        maxy = parseFloat(env.getAttribute("maxy"));
	document.getElementById('minx').value=minx;
        document.getElementById('miny').value=miny;
        document.getElementById('maxx').value=maxx;
        document.getElementById('maxy').value=maxy;
        document.getElementById('scale').value=scale;

        clearImageMap();

        placeTiles(tiles);

        fixedzoom = "";

        document.getElementById('propcount').innerHTML = 'Property Count: ' + xmlDoc.getElementsByTagName("PROPERTIES").item(0).getAttribute("count");

        var props = xmlDoc.getElementsByTagName("RESPONSE")[0].getElementsByTagName("PROPERTY");
        var offices = xmlDoc.getElementsByTagName("RESPONSE")[0].getElementsByTagName("OFFICE");


        processPropertyRecs(props, xmlDoc.getElementsByTagName("PROPERTIES").item(0).getAttribute("count"));
        processOfficeRecs(offices);

	var saveSearch = getElmById('saveSearch');

        if (props.length > 0) {
		display_stats(props);
        	createSummary(props);
		saveSearch.innerHTML = createSaveLink();
		saveSearch.style.visibility = 'visible';
     	} else {
		clearStats();	
        	clearSummary();
		saveSearch.style.visibility = 'hidden';
        }

        if (delay_map.length > 0) {
		setCoreValues();
        	delay_map = "";
        }


	hideLayer('loading');
    }else alert("Error retreiving data");
 
   okToSend = true;
  } 
}

function positionSlider() {
  document.getElementById('sliderImg').style.top = (165 - (parseInt(scale) * 10)) + 'px';
}

function jumpTo(i) {
        if (okToSend) {
                scale = i;
                fixedzoom = "true";
                getMap("");
        }
}


function clearImageMap ()
{
        while (mapContainer.childNodes.length > 0) {
	        mapContainer.removeChild(mapContainer.lastChild);
	}

	while (container.childNodes.length > 0) {
		container.removeChild(container.lastChild);
	}
	
}							

function outputComma(number) {
    number = '' + number
    if (number.length > 3) {
        var mod = number.length%3;
        var output = (mod > 0 ? (number.substring(0,mod)) : '');
        for (i=0 ; i < Math.floor(number.length/3) ; i++) {
            if ((mod ==0) && (i ==0))
                output+= number.substring(mod+3*i,mod+3*i+3);
            else
                output+= ',' + number.substring(mod+3*i,mod+3*i+3);
        }
        return (output);
    }
    else return number;
}

function clearStats()
{
	document.getElementById('av_p').style.visibility = 'hidden';
	document.getElementById('min_p').style.visibility = 'hidden';
	document.getElementById('max_p').style.visibility = 'hidden';
}

function display_stats(props)
{
     	var av_p = average(props);
	var min_p = min(props);
        var max_p = max(props);

	document.getElementById('av_p').innerHTML = 'Average Price: $' + outputComma(av_p.toFixed(0));
	document.getElementById('min_p').innerHTML = 'Minimum Price: $' + outputComma(min_p.toFixed(0));
	document.getElementById('max_p').innerHTML = 'Maximum Price: $' + outputComma(max_p.toFixed(0));
	document.getElementById('av_p').style.visibility = 'visible';
	document.getElementById('min_p').style.visibility = 'visible';
	document.getElementById('max_p').style.visibility = 'visible';

}

function average(props)
{
   var items = props.length;
   var sum = 0;

   for (i = 0; i < items;i++)
   {
      sum += parseInt(cleanNum(props[i].getAttribute('lp_Listing_Price')));
   }

   return (sum/items);
}

function min(props)
{
var min_val = parseInt(cleanNum(props[0].getAttribute('lp_Listing_Price')));
for (i = 0; i < props.length; i++) 
{
	var price = parseInt(cleanNum(props[0].getAttribute('lp_Listing_Price')));

	if (price < min_val) 
	{
		min_val = price;
	}
}
return min_val;
}

function max(props) 
{
var max_val = parseInt(cleanNum(props[0].getAttribute('lp_Listing_Price')));
for (i = 0; i < props.length; i++) 
{
	var price = parseInt(cleanNum(props[i].getAttribute('lp_Listing_Price')));

	if (price > max_val)
	{
		max_val = price;
	}
}
return max_val;
}

function cleanNum(num)
{
num = unescape(num);
return num.replace(',', '');
}

function cleanString(str) 
{
	if (str == null) {
		return '';
	}

	return unescape(str.replace(new RegExp(/\+/g), ' '));
}

function getElmById(theID) {
	var rv = null;

	if (isIE) {
		rv = document.all[theID];
	} else {
		rv = document.getElementById(theID);
	}
	return rv;
}

function placeTiles(tiles) {
        
        for (var i = 0; i < tiles.length; i++) {
                var url = tiles[i].getAttribute("url");
                        
                        var x = parseFloat(tiles[i].getAttribute("x"));
                        var y = parseFloat(tiles[i].getAttribute("y"));
                        var row = parseInt(tiles[i].getAttribute("row"));
                        var col = parseInt(tiles[i].getAttribute("col"));
                        var x_pos = parseInt((x - minx)/resolution);
                        var y_pos = parseInt((maxy - y)/resolution);
                        
                        var img = document.createElement('img');
                        
                        img.src = url;
                        img.style.position = 'absolute';
                        img.style.top = y_pos + 'px';
                        img.style.left = x_pos + 'px';
                        img.onload = null;
                        
                        container.appendChild(img);
        }

}

function processOfficeRecs(offices)
{


	var icon_w = 206;
	var icon_h = 237;

        var queryString = escape(createQueryString());

	for (var i = 0; i < offices.length; i++) 
	{
		var x = parseInt(offices[i].getAttribute('x'));
		var y = parseInt(offices[i].getAttribute('y'));
  	
		var x1 = x;
                var y1 = y;

		var icon_type = "";

                if (x > (width / 2)) {
                	if (y > (height / 2)) {
				icon_type = "BR";
				x = x - icon_w;
				y = y - icon_h; 
			} else {
				icon_type = "TR";
				x = x - icon_w + 6;
				y = y + 4;
			}				
		} else {
                	if (y > (height / 2)) {
				icon_type = "BL";
				y = y - icon_h;
				x = x + 5;
			} else {
				icon_type = "TL";
				x = x + 5;
				y = y + 3;
			}
                }

                var myDiv = document.createElement('DIV');
                myDiv.id = "myOffice" + i;
                myDiv.style.position='absolute';
                myDiv.style.visibility='hidden';
                myDiv.style.left =x + 'px';
                myDiv.style.top = y + 'px';
                myDiv.style.width = '160px';
                myDiv.style.height= '220px';
                myDiv.style.zIndex=2;

                var photo_string = "";

                if (offices[i].getAttribute('O_DFLT_PHOTO_URL').length > 0) {
                        photo_string = '<a href="' + root_url + cleanString(offices[i].getAttribute('O_WWWSITE')) + '" target="_parent"><img src="' + root_url + cleanString(offices[i].getAttribute('O_DFLT_PHOTO_URL')) + '" width="150" height="117" border="0"></a>';

                } 

		var balloon = '<div class="balloon_' + icon_type + '">';
		balloon += '<div class="inner_balloon">';
		balloon += '<div class="close_icon"><a href="#" onClick="document.getElementById(\'myOffice' + i + '\').style.visibility=\'hidden\';"><img border="0" src="images/close_icon.gif" style="width:17px;"></a></div>';
		balloon += photo_string;
		balloon += '<div class="address">' + cleanString(offices[i].getAttribute('O_NM_OFFICE')) + '</div>';
		balloon += cleanString(offices[i].getAttribute('O_ADDRESS_01')) + '<br />';
		balloon += '<a href="' + root_url + cleanString(offices[i].getAttribute('O_WWWSITE')) + '&mapvars=' + queryString + '%26s_layer%3DmyOffice' + i + '" target="_parent">More Details</a>';
		balloon += '</div>';
		balloon += '</div>';
		balloon += '</div>';

		if (offices[i].getAttribute("O_WWWSITE").length > 0) {

			myDiv.innerHTML = balloon;

                	mapContainer.appendChild(myDiv);
                        
	                var area = document.createElement('DIV');
        	        area.id = i;
                	area.innerHTML = '<img src="http://www.starkhomes.com/icon-office.gif" width="16" height="16" border="0">';
	                area.style.left=x1 + 'px';
        	        area.style.top=y1 + 'px';
                	area.style.position='absolute';
	                area.style.zIndex=1;
        	        area.onmouseover = function() {
				hideAll();
				document.getElementById('myOffice' + this.id).style.visibility = 'visible';
                	}
                
                mapContainer.appendChild(area); 
		
		}
                
        }       
}
	
function processPropertyRecs(props, numProps)
{

	var props_list = "";

	var queryString = escape(createQueryString());
	
	var icon_w = 206;
	var icon_h = 237;

	for (var i = 0; i < props.length; i++) {
		var x = parseInt(props[i].getAttribute('x'));
		var y = parseInt(props[i].getAttribute('y'));
	
		if (props_list.length == 0) {
			props_list = props[i].getAttribute("cd_MLS");
		} else {
			props_list = props_list +  "," + props[i].getAttribute("cd_MLS");
		}
	
		var x1 = x - 8;
		var y1 = y - 8;

                var icon_type = "";

                if (x > (width / 2)) {
                        if (y > (height / 2)) {
                                icon_type = "BR";
                                x = x - icon_w;
                                y = y - icon_h;
                        } else {
                                icon_type = "TR";
                                x = x - icon_w + 6;
                                y = y + 4;
                        }
                } else {
                        if (y > (height / 2)) {
                                icon_type = "BL";
                                y = y - icon_h;
                                x = x + 5;
                        } else {
                                icon_type = "TL";
                                x = x + 5;
                                y = y + 3;
                        }
                }

		var myDiv = document.createElement('DIV');
		myDiv.id = "myLayer" + i;
		myDiv.style.position='absolute';
		myDiv.style.visibility='hidden';
		if (s_layer == props[i].getAttribute('cd_MLS')) {
			myDiv.style.visibility = 'visible';
			s_layer = '';
		}

		myDiv.style.left =x + 'px';
		myDiv.style.top = y + 'px';
		myDiv.style.width = '160px';
		myDiv.style.height= '220px';
		myDiv.style.zIndex=2;

		var photo_string = "";

                if (props[i].getAttribute('lp_Photo_URL').length > 0) {
                        if (pres_agent.length > 0) {
                                photo_string = '<a href="' + root_url + '/vp/ListingServlet?cd_MLS=' + props[i].getAttribute('cd_MLS') + '&SITE=' + site + '&ScreenID=AGENT_LISTING_DETAIL&pres_agent=' + pres_agent + '&mapvars=' + queryString + '%26s_layer%3D' + props[i].getAttribute('cd_MLS') +'" target="_parent"><img src="http://' + cleanString(props[i].getAttribute('lp_Photo_URL')) + props[i].getAttribute('lp_MLS_Number') + 'at.jpg" width="150" height="117" border="0"></a>'; 
                        } else {
                                photo_string = '<a href="' + root_url + '/vp/ListingServlet?cd_MLS=' + props[i].getAttribute('cd_MLS') + '&SITE=' + site + '&ScreenID=LISTING_DETAIL_P&mapvars=' + queryString + '%26s_layer%3D' + props[i].getAttribute('cd_MLS') +'" target="_parent"><img src="http://' + cleanString(props[i].getAttribute('lp_Photo_URL')) + props[i].getAttribute('lp_MLS_Number') + 'at.jpg" width="150" height="117" border="0"></a>';
                        }
                }
                
                var balloon = '<div class="balloon_' + icon_type + '">';
                balloon += '<div class="inner_balloon">';
                if (props[i].getAttribute('lp_ind_OpenHouse') == 'Y') {
			if (pres_agent.length > 0) {
                		balloon += '<div style="font-size:9px;font-face:Arial"><a href="' + root_url + '/vp/ListingServlet?cd_MLS=' + props[i].getAttribute('cd_MLS') + '&SITE=' + site + '&ScreenID=AGENT_LISTING_DETAIL&pres_agent=' + pres_agent + '&mapvars=' + queryString + '%26s_layer%3D' + props[i].getAttribute('cd_MLS')  + '" target="_parent">Open House! Click For details</a></div>';
			} else { 
                		balloon += '<div style="font-size:9px;font-face:Arial"><a href="' + root_url + '/vp/ListingServlet?cd_MLS=' + props[i].getAttribute('cd_MLS') + '&SITE=' + site + '&ScreenID=LISTING_DETAIL_P&mapvars=' + queryString + '%26s_layer%3D' + props[i].getAttribute('cd_MLS')  + '" target="_parent">Open House! Click For details</a></div>';
			} 
                }       
                
                balloon += '<div class="close_icon"><a href="#" onClick="document.getElementById(\'myLayer' + i + '\').style.visibility=\'hidden\';"><img border="0" src="images/close_icon.gif" style="width:17px;"></a></div>';
                
                balloon += photo_string;
                balloon += '<div class="address">' + cleanString(props[i].getAttribute('lp_ListingAddr1')) + '</div>';
                balloon += '$' + cleanString(props[i].getAttribute('lp_Listing_Price_Display')) + '<br />';  
		if (props[i].getAttribute('lp_cd_Source') == 'ARIS') {
	                balloon += props[i].getAttribute('lp_No_Bedrooms') + ' Beds ' + props[i].getAttribute('lp_No_Bathrooms') + ' Baths<br>';
		} else {
	                balloon += props[i].getAttribute('lp_No_Bedrooms') + ' Beds ' + props[i].getAttribute('lp_d1i48nt') + '.' + props[i].getAttribute('lp_d1i49nt') + ' Baths<br>';
		}
		if (pres_agent.length > 0) {
                		balloon += '<div style="font-size:9px;font-face:Arial"><a href="' + root_url + '/vp/ListingServlet?cd_MLS=' + props[i].getAttribute('cd_MLS') + '&SITE=' + site + '&ScreenID=AGENT_LISTING_DETAIL&pres_agent=' + pres_agent + '&mapvars=' + queryString + '%26s_layer%3D' + props[i].getAttribute('cd_MLS')  + '" target="_parent">More Details</a></div>';
		} else {
	                balloon += '<a href="' + root_url + '/vp/ListingServlet?cd_MLS=' + props[i].getAttribute('cd_MLS') + '&SITE=' + site + '&ScreenID=LISTING_DETAIL_P&mapvars=' + queryString + '%26s_layer%3D' + props[i].getAttribute('cd_MLS') + '" target="_parent">More Details</a>';
			
		}
 
		balloon += '</div>';
		balloon += '</div>';
                balloon += '</div>';

                myDiv.innerHTML = balloon;

		mapContainer.appendChild(myDiv);
	
		var area = document.createElement('DIV');
		area.id = i;
	
  		area.innerHTML = '<img src="images/mapgif_house.gif" border="0">';

		area.style.left=x1 + 'px';
		area.style.top=y1 + 'px';
		area.style.position='absolute';
		area.style.zIndex=1;
		area.onmouseover = function() {
			hideAll();
			document.getElementById('myLayer' + this.id).style.visibility = 'visible'; 
		}

		mapContainer.appendChild(area);
	
	}

         var theform = getElmById("theForm");

        if (props.length > 0)
        {

                var cd_MLS_sum = getElmById("c_sum");
                var numPages = getElmById("numPages");
                var numFound = getElmById("numFound");
                theform.style.visibility = 'visible';
                cd_MLS_sum.value = props_list;
                numFound.value = props.length;
                numPages.value = Math.ceil(parseFloat(props.length / 10));

        } else {
                theform.style.visibility = 'hidden';
        }

}

function getCheckedValue(radioObj) {
	if(!radioObj)
		return "";
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return "";
}

function postSaveSearch()
{

        if (okToSend) {
                http = getHTTPObject();

                if ((http != null) ) {
                        okToSend = false;
                        var dat = getSaveData();

                        http.open("POST", save_url, true);
                        http.onreadystatechange = saveResponse;
                        http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
                        showLayer('loading');
                        http.send(dat);
                        hideLayer('loading');
                }
        } else {
                alert ("Waiting for previous response");
        }

        okToSend = true;
}

function saveResponse() {

        if (http.readyState == 4) {
                if (http.status == 200) {
                        isWorking = false;

                                var result = http.responseText;
                                var xmlDoc;
                                if(document.implementation && document.implementation.createDocument) {
                                        xmlDoc = document.implementation.createDocument("", "", null);
                                        xmlDoc.async="false";
                                        xmlDoc.loadXML(result);
                                } else if (window.ActiveXObject){
                                        xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
                                        xmlDoc.async="false";
                                        xmlDoc.loadXML(result);
                                }

                        var retVal = xmlDoc.getElementsByTagName("RESPONSE").item(0).getAttribute("returnCode");

                        var ss = getElmById("saveSearch");
                        if (retVal == 'true') {
                                ss.innerHTML = '<font color="red">Search Successfully Saved</font>';
                        } else {
                                ss.innerHTML = '<font color="red">There was a problem saving your search</font>';
                        }
                }
        }
}

function getSaveData()
{
        var dat = 'MS_NM_SEARCH=' + document.getElementById('nm_Search').value + '&SEARCH_NAME=MAP_SEARCH&SITE=' + site + '&cd_Contact=' + cookieid + '&sql=';

        var sql = "SELECT Listing.cd_MLS FROM ListingPublic,Listing WHERE ListingPublic.cd_MLS = Listing.cd_MLS " + buildWhere()  + ' AND lp_res_Lat > ' + miny + ' AND lp_res_Lat < ' + maxy + ' AND lp_res_Long > ' + minx + ' AND lp_res_Long < ' + maxx;

        dat += sql + '&criteria=' + buildCriteria() + '&MS_FG_1=Y&cd_SearchID=' + edit_cd_SearchID + '&';

	dat += createQueryString();

        return dat;    
}

function buildWhere()
{

        var lp_low = document.getElementById('lp_low').value;
        var lp_high = document.getElementById('lp_high').value;
        var beds_low = document.getElementById('beds_low').value;
        var full_baths_low = document.getElementById('full_baths_low').value;
        var half_baths_low = document.getElementById('half_baths_low').value;
        var p_type = document.getElementById('p_type').value;
	var b_type = document.getElementById('b_type').value;
        var wf = document.getElementById('wf').checked ? "true" : "";
        var wv = document.getElementById('wv').checked ? "true" : "";
        var g = document.getElementById('g').checked ? "true" : "";
        var oh = document.getElementById('oh').checked ? "true" : "";

        var w = ' AND lp_Listing_Price >= ' + lp_low + ' AND lp_Listing_Price <= ' + lp_high + ' AND lp_No_Bedrooms >= ' + beds_low + '  AND lp_d1i48nt >= ' + full_baths_low + ' AND lp_d1i49nt >= ' + half_baths_low;

        if (p_type.length > 0) {
                w += " AND lp_tp_Improvement = '" + escape(p_type) + "'";
        }
	if (b_type.length > 0) {
                w += " AND lp_tp_Building = '" + escape(b_type) + "'";
        }
        if (wf.length > 0) {
                w += " AND lp_d1i57nt = 1";
        }
        if (wv.length > 0) {
                w += " AND lp_d1i56nt = 1";
        }
        if (g.length > 0) {
                w += " AND lp_Ind_Garage > 0";
        }
        if (oh.length > 0) {
                w += " AND lp_ind_OpenHouse = 'Y'";
        }

        return w;
}

function buildCriteria()
{
        var lp_low = document.getElementById('lp_low').value;
        var lp_high = document.getElementById('lp_high').value;
        var beds_low = document.getElementById('beds_low').value;
        var full_baths_low = document.getElementById('full_baths_low').value;
        var half_baths_low = document.getElementById('half_baths_low').value;
        var p_type = document.getElementById('p_type').value;
 	var b_type = document.getElementById('b_type').value;
        var wf = document.getElementById('wf').checked ? "true" : "";
        var wv = document.getElementById('wv').checked ? "true" : "";
        var g = document.getElementById('g').checked ? "true" : "";
        var oh = document.getElementById('oh').checked ? "true" : "";

        var c = "Latitude greater than " + miny + " Latitude less than " + maxy + "<br>";

        c += "AND Longitude greater than " + minx + " Longitude less than " + maxx + "<br>";

        if (lp_low.length > 0) {
                c += "Listing Price greater than " + lp_low + "<BR>";
        }

        if (lp_high.length > 0) {
                c += "Listing Price less than " + lp_high + "<BR>";
        }

        if (beds_low.length > 0) {
                c += "Bedrooms greater than " + beds_low + "<BR>";
        }

        if (full_baths_low.length > 0) {
                c += "Full Baths greater than " + full_baths_low + "<BR>";
        }
	if (half_baths_low.length > 0) {
		c += "Half Baths greater than " + half_baths_low + "<br>";
	}
        if (p_type.length > 0) {
                c += "Property Type equals " + p_type + "<BR>";
        }

        if (document.getElementById('wf').checked) {
                c += "Water frontage/access equals true<BR>";
        }
	
	if (document.getElementById('wv').checked) {
		c += "Water view equals true<br>";
	}
	if (g.length > 0) {
		c += "Has garage equals true<br>";
	}
	if (document.getElementById('oh').checked) {
		c += "Open House equals true<br>";
	}

        return c;
}

function createSaveLink()
{

        var link = "";

        if (cookieid.length > 0)
        {
                link = '<b>Name Your Search: </b><input type="text" name="nm_Search" id="nm_Search" value=""> <a href="javascript:postSaveSearch()">Save This Search</a>';
        }
        else
        {
		if (pres_agent.length > 0) {
			link = '<a href="' + root_url + '/vp/LoginServlet?SITE=' + site + '&ScreenID=AGENT_NW&pres_agent=' + pres_agent + '&context=AGENT_PAGE_SEARCH&DFLT_PAGE=VOW_HOME_AGENT" target="_parent">Login To Save Searches</a>';
		} else {
                	link = '<a href="' + root_url + '/vp/LoginServlet?ListiingSearch=TRUE&ScreenID=MY247_INFO&SITE=' + site + '&DFLT_PAGE=VOW_HOME&next_url=/vp/jsps/' + site + '/MAPSEARCH_PROXY.jsp?' + escape(createQueryString()) + '" target="_parent">Login To Save Searches</a>';
		}
        }

        return link;

}

function hideAll()
{
        var els = document.getElementsByTagName('DIV');

        for (var j = 0; j < els.length; j++) {
                var elm = els[j];
                if (elm != null) {
                        if (elm.id.indexOf('myLayer') > -1 || elm.id.indexOf('myOffice') > -1)
                                elm.style.visibility = 'hidden';
                } else {
                        break;
                }
        }
}


