//<![CDATA[

function viewProp(lnk, newwindow) {
	if(newwindow)
		 window.open (lnk, "pview","scrollbars=1,width=650,height=600");
	else {
		el("propFrame").src = lnk;
		el("propView").style.display = "block";
	}
}

function hidePropView() {
	el("propView").style.display = "none";
}

function showMap() {
	el("listing").style.display = "none";
	el("btnMap").className = "nolink";
	el("btnList").className = "link";
}
function showList() {
	el("listing").style.display = "block";
	el("btnMap").className = "link";
	el("btnList").className = "nolink";
	updateList();
}

function initdr() {
	if(!dr)
		dr = new dragger(el("mov"), idxmap.ovmov.div_, .65);
	dr.initialize(el("mov"), idxmap.ovmov.div_, .65);
}

// AJAX HANDLERS
function onloading() {
	setStatus("<span class='noresults'>Downloading data... Please wait</span>");
	el("listing").innerHTML = "Downloading data... Please wait";
}

function onloaded(txt) {
//alert(txt);
	setStatus("Processing data... Please wait");
	parseResponse(txt);
}

// XML
function parseResponse(txt) {
	var x = GXml.parse(txt);
	var p = x.firstChild;

	updatePars(p);
	updateRs(p.firstChild.childNodes);
	updateMap();
	updateList();
	if(pars.fn)
		idxmap.updateSqControl();
}

function updatePars(x) {
	pars["fn"] = x.getAttribute("fn");
	pars["count"] = x.getAttribute("count");
	pars["total"] = x.getAttribute("total");
	pars["lat1"] = x.getAttribute("lat1");
	pars["lat2"] = x.getAttribute("lat2");
	pars["lng1"] = x.getAttribute("lng1");
	pars["lng2"] = x.getAttribute("lng2");
	pars["agentID"] = agentID;

	var c = pars["count"];
	var t = pars["total"];
	var msg;
	if(c > 0) {
		msg = "Found <span class='count'>" + pars["total"] + "</span> propert";
		msg += (c > 1) ? "ies" : "y";
		if(c != t)
			msg += ". Showing <span class='count'>" + pars["count"] + "</span>";
	}
	else
		msg = "<span class='noresults'>No results found</span>";
	setStatus(msg);
}

function setStatus(msg) {
	el("statusMsg").innerHTML = msg;
}

function updateRs(x) {
	var i, j, pr, prl, tmp, tag;
	var l = x.length;
	rs = [];

	for(i=0;i<l;i++) {
		pr = x[i].childNodes;
		prl = pr.length;
		tmp = {};
		for(j=0;j<prl;j++) {
			tag = pr[j];
			tmp[tag.tagName] = xmlValue(tag);
		}
		rs.push(tmp);
	}
}

function updateMap() {
	hidePropView();
	idxmap.plot();
}

function updateList() {
	hidePropView();
	el("listing").innerHTML = "Building listing... Please wait";
	window.setTimeout(_updateList, 500);
}

function switchTotext() {
	location.href = baseUrl + "/textsearch.php";
}

function _updateList() {
	var i, cur, ID, h;
	h = "";
	var l = rs.length;

	var listing = el("listing");
	listing.innerHTML = "";

	for(i=0;i<l;i++) {
		cur = rs[i];
		ID = cur.id;
		var link = getLink(cur.mls);
		h += "<div id='listItem'>";
		h += "<a href='javascript:void(0)' onclick='viewProp(\"" + link + "\", true)'><img class='img' src='" + getThumbUrl(ID) + "' onerror='this.src=\"/images/nophoto.gif\"'/></a>";
		h += "<div class='desc'><div class='address'><a href='javascript:void(0)' onclick='viewProp(\"" + link + "\", true)'>" + cur.address + "</a></div>";
		h += "<div><span class='label'>Beds:</span><span class='value'>" + cur.beds + "</div>";
		h += "<div><span class='label'>Baths:</span><span class='value'>" + cur.baths + "</div>";
		h += "<div><span class='label'>Price:</span><span class='value'>$" + cur.price + "</div>";
		h += "<div><span class='label'>MLS:</span><span class='value'>" + cur.mls + "</div>";
		h += "</div>";
		h += "<div class='links'><a href='javascript:plotProp(" + ID + ")'>Display on map</a><a href='" + link + "' target='blank'>Full Description</a></div>";

		h += "</div>";
	}

	el("listing").innerHTML = h;
}

function plotProp(ID) {
	showMap();
	idxmap.icnClicked(idxmap.getIdxIcon(ID));
}

function onIconClick(m) {
	updmap = false;
	m.openInfoWindowHtml(getHtml(m.pid), {maxWidth:230});
	GEvent.addListener(idxmap.getInfoWindow(), "closeclick", function(){
		idxmap.gotoLastPosition();
		idxmap.activeIDXIcon = undefined;
	});
}

function getRecord(pid) {
	var i, cur;
	var o = {};
	var l = rs.length;

	for(i=0;i<l;i++) {
		cur = rs[i];
		if(cur.id == pid) {
			o = cur;
			break;
		}
	}

	return o;
}

function getThumbUrl(ID) {
	var n = ID.slice(-1);
	return baseUrl + "/images/thumbnails/" + n + "/" + ID + "_1.jpg";
}

function getLink(mls) {
	return baseUrl + "/propview.php?agentid=" + pars["agentID"] + "&view=" + mls;
}

function getHtml(pid) {
	var cur = getRecord(pid);
	var link = getLink(cur.mls);
	var h = "<div id='infowindow'>";
	h += "<div id='img'><a href='javascript:void(0)' onclick='viewProp(\"" + link + "\", true)'><img src='" + getThumbUrl(cur.id) + "' onerror='this.src=\"/images/nophoto.gif\"'/></a></div>";
	h += "<div class='address'><a href='javascript:void(0)' onclick='viewProp(\"" + link + "\", true)'>" + cur.address + "</a></div>";
	h += "<div><span class='label'>Beds:</span><span class='value'>" + cur.beds + "</div>";
	h += "<div><span class='label'>Baths:</span><span class='value'>" + cur.baths + "</div>";
	h += "<div><span class='label'>Price:</span><span class='value'>$" + cur.price + "</div>";

	h += "</div>";

	return h;
}

// URLS
function updateFilters(u, nm, val) {
	var re = new RegExp(nm + "=" + "\\d*");
	if(u.indexOf(nm + "=") > -1)
		u = u.replace(re, nm + "=" + val);
	else
		u += "&" + nm + "=" + val;

	return u;
}
function addFilters(u) {
	u = updateFilters(u, "minpr", el("minpr").value);
	u = updateFilters(u, "maxpr", el("maxpr").value);
	u = updateFilters(u, "minbe", el("minbe").value);
	u = updateFilters(u, "ptype", el("ptype").value);
	u = updateFilters(u, "minba", el("minba").value);
	u = updateFilters(u, "minba", el("minba").value);
	u = updateFilters(u, "minsq", el("minsq").value);
	u = updateFilters(u, "ordby", el("ordby").value);
	u = updateFilters(u, "ordasc", el("ordasc").value);

	return u;
}

function urlParams(obj) {
	var p;
	var par = [];
	for(p in obj)
		par.push(p + "=" + cleanValue(obj[p]));
	return par.join("&");
}

function ajaxUrl(url, o) {
	return url + "?" + urlParams(o);
}

function getUrl(u, o) {
	if(!o)
		o = {};

	o.agentID = agentID;

	onloading();
	u = ajaxUrl(u, o);
	u = addFilters(u);
//alert(u);
	GDownloadUrl(u, function(t, s){onloaded(t, s)});
}

function searchProps() {
	idxmap.resetOverlays();
	idxmap.addSqControl();
	getProps("a");
}

function getProps(fn) {
	curPos = idxmap.getCenter();
	var obj = idxmap.getBoundboxLatLngs(idxmap.getBounds());
	obj.fn = fn;
	getUrl("getProps.php", obj);
}

// gMap
function onMapChange() {
	getPropsFromBox();
}

function loadMap() {
	window.setTimeout(_loadMap, 100);
}

function _loadMap() {
	initIdxVars();
	if(!GBrowserIsCompatible()) {
		alert("Sorry, Google Map can't work with your browser");
		return;
	}

	z = new slider(el("zoomslider"), el("zoom"), 17);

	idxmap = new GMap2(document.getElementById("gmap"));
//idxmap.setCenter(new GLatLng(38.627222, -90.197778), 9);//onlymov
//return;
	idxmap.initialize();

	dr.onenddrag = function(p) {
		this.resetElem();
		var r = p.rel;
		idxmap.fitToBox(idxmap.getLatLngBox(r.width, r.height, 5, r.left, r.top), true);
	}
	dr.onclick = function(p) {
		this.resetElem();
		idxmap.centerMap(idxmap.getLatLngAt(p.rel.x, p.rel.y), idxmap.getZoom() + 3);
	}

	z.onmove = function(o) {
		idxmap.zoomTo(o.rng);
	}
	z.onmoving = function(m, l, s) {};

	GEvent.addListener(idxmap, "movestart", function() {
		setStatus("Changing map position...");
		idxmap.hideWarning();
	});
	GEvent.addListener(idxmap, "moveend", function() {
		idxmap.updateSqControl();
		setStatus("");
		if(updmap) {
			idxmap.activeIDXIcon = undefined;
			getProps();
		}
	});
	GEvent.addListener(idxmap, "zoomend", function(o, n) {
		z.moveToRange(n);
	});
	GEvent.addListener(idxmap, "infowindowopen", function() {
		updmap = false;
	});

	var panup = el("mapup");
	var pandn = el("mapdown");
	var panl = el("mapleft");
	var panr = el("mapright");

	addListener(panup, "click", function(){idxmap.panBySize(0, 350)});
	addListener(panup, "mouseover", function(){panup.className='panupover'});
	addListener(panup, "mouseout", function(){panup.className='panup'});
	addListener(pandn, "click", function(){idxmap.panBySize(0, -350)});
	addListener(pandn, "mouseover", function(){pandn.className='pandnover'});
	addListener(pandn, "mouseout", function(){pandn.className='pandn'});
	addListener(panl, "click", function(){idxmap.panBySize(500, 0)});
	addListener(panl, "mouseover", function(){panl.className='float panlover'});
	addListener(panl, "mouseout", function(){panl.className='float panl'});
	addListener(panr, "click", function(){idxmap.panBySize(-500, 0)});
	addListener(panr, "mouseover", function(){panr.className='float panrover'});
	addListener(panr, "mouseout", function(){panr.className='float panr'});

	setCSSOpacity(el("zoomslider"), .35);
}

//]]>
