var ds = 'ms_search_hasson';
var max_results = "250";
var open_div = "";

function setBend()
{
  	scale = "10";
        fixedzoom = "true";
        saved_minx = -121.438229016015;
        saved_miny = 43.9664007800175;
        saved_maxx = -121.193751515097;
        saved_maxy = 44.12938578063;
}

function setRegion(region) {

	if (region == 'bend') {
	        scale = "10";
        	fixedzoom = "true";
	        minx = -121.438229016015;
        	miny = 43.9664007800175;
        	maxx = -121.193751515097;
        	maxy = 44.12938578063;
	} else if (region == 'portland') {
       		scale = "10";
        	fixedzoom = "true";
        	minx = -122.979275617908;
        	miny = 45.3057355821424;
        	maxx = -122.31327569819;
        	maxy = 45.7497355286215;
	}

	getMapWithCurrentExtent();

}

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', 'baths_low', 'size_min', 'size_max', 'p_type');

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

	retVal += "&main=true&&zoom=true&scale=" + scale;
	
	if (search_type == 'OH') {
		retVal += "&search_type=OH";
	}

	if (search_type == 'NL') { 
		retVal += "&search_type=NL";
	}

	return escape(retVal);
}

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 baths_low = document.getElementById('baths_low').value;
        var size_min = document.getElementById('size_min').value;
        var size_max = document.getElementById('size_max').value;
        var p_type = document.getElementById('p_type').value;

	var c = "Map Coords Saved<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 (baths_low.length > 0) {
                c += "Bathrooms greater than " + baths_low + "<BR>";
        }

        if (p_type.length > 0) {
                c += "Property Type equals " + p_type + "<BR>";
        }
	if (size_min.length > 0) {
		c += "Size greater than " + size_min + "<BR>";
	}
	if (size_max.length > 0) {
		c += "Size less than " + size_max + "<BR>";
	}
	return c;
}

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 baths_low = document.getElementById('baths_low').value;
        var size_min = document.getElementById('size_min').value;
        var size_max = document.getElementById('size_max').value;
        var p_type = document.getElementById('p_type').value;

        var w = ' AND lp_Listing_Price >= ' + lp_low + ' AND lp_Listing_Price <= ' + lp_high + ' AND lp_No_Bedrooms >= ' + beds_low + '  AND lp_No_Bathrooms >= ' + baths_low;

        if (p_type.length > 0) {
                w += " AND lp_tp_Improvement = '" + p_type + "'";
        }

        if (size_min.length > 0) {
                w += " AND lp_amt_Struct_SqFt_Act > " + size_min;
        }
        if (size_max.length > 0) {
                w += " AND lp_amt_Struct_SqFt_Act < " + size_max;
        }

	return w;
}

function getMapRequest(env)
{

	var w = buildWhere();

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

	var fl = "TO_DAYS(NOW()) - TO_DAYS(lp_Listing_Date) AS DOM, cd_MLS,lp_MLS_Number,FORMAT(lp_Listing_Price, 0) as lp_Listing_Price_Display,lp_Listing_Price,lp_ListingCity,lp_ListingState,lp_ListingZip,lp_ListingAddr1,lp_No_Bedrooms,lp_No_Bathrooms,lp_res_Lat,lp_res_Long,lp_Photo_URL,lp_PhotoDesc_1,lp_ind_OpenHouse,lp_ds_OpenHouseTime,cd_Company,lp_amt_Struct_SqFt_Act,Comments,Panorama_URL,PhotoDesc_2,lc1_v9c,lp_cd_Source";

	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 + '&US_TILES=true';
	
	return axl;
}
	
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");

	positionSlider();

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

	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;

        clearImageMap();

        placeTiles(tiles);
  
        fixedzoom = "";

	 var count = xmlDoc.getElementsByTagName("PROPERTIES").item(0).getAttribute("count");

	if (parseInt(count) > parseInt(min_count)) { 
	document.getElementById('properties_found').innerHTML = '<img src="images/map_pfound_tleft.gif" /><p>Properties Found: ' + xmlDoc.getElementsByTagName("PROPERTIES").item(0).getAttribute("count") + '. Please refine your search.</p><img src="images/map_pfound_tright.gif" />';
	} else {
	document.getElementById('properties_found').innerHTML = '<img src="images/map_pfound_tleft.gif" /><p>Properties Found: ' + xmlDoc.getElementsByTagName("PROPERTIES").item(0).getAttribute("count") + '.<a href="javascript:document.summary_form.submit()">Click here</a> to see all results.</p><img src="images/map_pfound_tright.gif" />';
	}

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

	var save = getElmById('saveSearch');

	if (props.length > 0) {
		if (cookieid.length > 0) {
			createSaveLink();	
		} else {
			createLoginLink();
		}
		createSummary(props);
	} else {
		if (cookieid.length > 0) {
                        createInfoSaveLink();
                } else {
                        createLoginLink();
                }

		clearSummary();
	}

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

function createLoginLink() {
        var el = document.getElementById('saveSearch');

        el.innerHTML = 'Please <a href="' + root_url + '/vp/LoginServlet2?SITE=HASSON&ScreenID=AGENT_VOW_LOGIN&pres_agent=' + pres_agent + '&DFLT_PAGE=AGENT_VOW_HOME&next_url=%2fvp%2fSearchServlet%3fListingSearch%3dTRUE%26SITE%3dHASSON%26ScreenID%3dAGENT_SEARCH_LISTING_MAP%26cd_Agent%3d' + pres_agent + '%26pres_agent%3d' + pres_agent + '%26' + createQueryString() + '" target="_parent">Login</a> to save searches.';
}

function createSaveLink() {
        var el = document.getElementById('saveSearch');

        el.innerHTML = '<a href="javascript:postSaveSearch()">Save This Search</a>';
}

function createInfoSaveLink() {
        var el = document.getElementById('saveSearch');

        el.innerHTML = 'You must have properties on the map to save a search.';
}


function processPropertyRecs(props, numProps)
{

	var props_list = "";

	var queryString = createQueryString();
	
	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;
		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 = "LISTING_" + 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 = icon_w + 'px';
		myDiv.style.height= icon_h + 'px';
		myDiv.style.zIndex=2;

		var photo_string = "";

		if (props[i].getAttribute('lp_Photo_URL').length > 0) {
			if (pres_agent.length > 0) { 
	    			photo_string = '<div class="instruction"><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></div>';
			} else {
	    			photo_string = '<div class="instruction"><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></div>';

			}
		}	

                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 class="instruction"><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:' + cleanString(props[i].getAttribute('lp_ds_OpenHouseDay')) + ' ' + cleanString(props[i].getAttribute('lp_ds_OpenHouseTime')) + '</a></div>';
			} else {
		                balloon += '<div class="instruction"><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:' + cleanString(props[i].getAttribute('lp_ds_OpenHouseDay')) + ' ' + cleanString(props[i].getAttribute('lp_ds_OpenHouseTime')) + '</a></div>';
			}
			
		}	

        	balloon += '<div class="close_icon"><a href="javascript:hideAll();"><img border="0" src="images/close_icon.gif" style="width:17px;"></a></div>';
 
		balloon += photo_string;
               	if (props[i].getAttribute('cd_Company') != 'HASSON') {
		balloon += '<div class="address">' + cleanString(props[i].getAttribute('lp_ListingCity')) + ' ' + cleanString(props[i].getAttribute('lp_ListingState')) + ' ' + cleanString(props[i].getAttribute('lp_ListingZip')) + '</div>';

	} else { 
		balloon += '<div class="address">' + (props[i].getAttribute('lc1_v9c') == 'Y' ? cleanString(props[i].getAttribute('lp_ListingAddr1')) : cleanString(props[i].getAttribute('lp_ListingCity')) + ' ' + cleanString(props[i].getAttribute('lp_ListingState')) + ' ' + cleanString(props[i].getAttribute('lp_ListingZip'))) + '</div>';
}

                balloon += '<div class="instruction">$' + cleanString(props[i].getAttribute('lp_Listing_Price_Display')) + '</div>';
		balloon += '<div class="instruction">' +( props[i].getAttribute('lp_No_Bedrooms') == '0' ? "" : props[i].getAttribute('lp_No_Bedrooms') + ' Beds ') + (props[i].getAttribute('lp_No_Bathrooms') == '0.0' ? "" : props[i].getAttribute('lp_No_Bathrooms') + ' Baths') + '</div>';
		if (pres_agent.length > 0) {
			balloon += '<div class="instruction"><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 += '<div class="instruction"><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></div>';
		}

                balloon += '</div>';
                balloon += '</div>';
                balloon += '</div>';

		// Don't display COAR listings on map (if not a hasson listing)
		if (props[i].getAttribute('lp_cd_Source') == 'COAR' && props[i].getAttribute('cd_Company') != 'HASSON') {
			// for now do not add innerHTML		
		} else {
                	myDiv.innerHTML = balloon;
		}

		mapContainer.appendChild(myDiv);
	
		var area = document.createElement('DIV');
		area.id = i;
		if (props.length < 100) {
			if (props[i].getAttribute("cd_Company") == 'HASSON') {
				if (props[i].getAttribute('lp_ind_OpenHouse') == 'Y') {
                	        	area.innerHTML = '<img src="http://mapping.redata.com/mapping_v2006/jsps/HASSON/view/images/house_icons/map-icon2.gif" border="0">';
				} else {
					area.innerHTML = '<img src="http://mapping.redata.com/mapping_v2006/jsps/HASSON/view/images/house_icons/map-icon1.gif" border="0">';
				}
			} else if (props[i].getAttribute('lp_ind_OpenHouse') == 'Y') {
				area.innerHTML = '<img src="http://mapping.redata.com/mapping_v2006/jsps/HASSON/view/images/house_icons/map-icon5.gif" border="0">';
			} else if (parseInt(props[i].getAttribute('DOM')) < 15) {
				area.innerHTML = '<img src="http://mapping.redata.com/mapping_v2006/jsps/HASSON/view/images/house_icons/map-icon3.gif" border="0">';
			} else {
				area.innerHTML = '<img src="http://mapping.redata.com/mapping_v2006/jsps/HASSON/view/images/house_icons/map-icon4.gif" border="0">';
			}
		} else {
			if (props[i].getAttribute("cd_Company") == 'HASSON') {
				if (props[i].getAttribute('lp_ind_OpenHouse') == 'Y') {
                	        	area.innerHTML = '<img src="http://mapping.redata.com/mapping_v2006/jsps/HASSON/view/images/house_icons/map-icon2.gif" border="0" width="14">';
				} else {
					area.innerHTML = '<img src="http://mapping.redata.com/mapping_v2006/jsps/HASSON/view/images/house_icons/map-icon1.gif" border="0" width="14">';
				}
			} else if (props[i].getAttribute('lp_ind_OpenHouse') == 'Y') {
				area.innerHTML = '<img src="http://mapping.redata.com/mapping_v2006/jsps/HASSON/view/images/house_icons/map-icon55555.gif" border="0" width="14">';
			} else if (parseInt(props[i].getAttribute('DOM')) < 15) {
				area.innerHTML = '<img src="http://mapping.redata.com/mapping_v2006/jsps/HASSON/view/images/house_icons/map-icon3.gif" border="0" width="14">';
			} else {
				area.innerHTML = '<img src="http://mapping.redata.com/mapping_v2006/jsps/HASSON/view/images/house_icons/map-icon4.gif" border="0" width="14">';
			}
		}

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

		if (props[i].getAttribute('lp_cd_Source') == 'COAR' && props[i].getAttribute('cd_Company') != 'HASSON') {
			// For now do not add the area div
		} else {
			mapContainer.appendChild(area);
		}
	
	}

	if (props_list.length > 0) {
		var c = getElmById('cd_MLS_sum');
		var numPages = getElmById('numPages');
		var numFound = getElmById('numFound');

		c.value = props_list;
		numFound.value = props.length;
		numPages.value = Math.ceil(parseFloat(props.length / 10));
	}
}

function saveResponse() {

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

                        if (!isSafari)
                        {
                                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);
                                }
                        } else {
                                var xmlDoc = http.responseXML;
                        }

                        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 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 getSaveData()
{
        var dat = '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() + '&fg_1=Y';

        return dat;
}


