//var loadimg = function(){
//	var imgs = YAHOO.util.Dom.getElementsByClassName("hasphoto","img");
//	if (imgs.length >0){
//	for(var i=0;i<imgs.length;i++){
//		var img = imgs[i];
//		var org = img.getAttribute("org");
//		img.src = org;
//	}
//	}
//}

function setPriceCustomizedRange(){
	if (isEmpty($('priceFrom').value) && isEmpty($('priceTo').value)) return;
	var onComplete = function(res) {
		RSMap.closeOption();
	}
	MyAjax.get("/controlpanel/mylistings/mls.ajax?ac=24&priceFrom="+$('priceFrom').value+"&priceTo="+$('priceTo').value,onComplete);	
}

function setSortBy(frm){
	var pars = "";
	var ele = frm.elements;
	for(var i=0;i<ele.length;i++){
		if (ele[i].type != "radio" || ele[i].checked != true) continue;
		if (ele[i].name == "sortby") 	pars = pars + "&sortby="+ele[i].value;
		else if (ele[i].name == "sortby_direction"){pars = pars + "&sortby_direction=" +ele[i].value;}
	}

	var onComplete = function(res) {
		oOptionWin.close();
		RSSearchResult.research();
	}
	MyAjax.get("/controlpanel/mylistings/mls.ajax?ac=49"+pars,onComplete);	
}

function setQueryValue(field,value){
	try{
		var tab =parent.window.idxTabs.getCurTab();
		if (tab == "S"){	//search tab
				$(field).value = value;
				RSMap.closeOption();
		}else if (tab == "R"){
			var onComplete = function(res) {
				oOptionWin.close();	
				RSMap.closeInfoWin();
				RSSearchResult.research();
			}
			MyAjax.get("/controlpanel/mylistings/mls.ajax?ac=6&f="+field+"&v="+value,onComplete);	
		}
	}catch(err){
			var onComplete = function(res) {
		 		research();
			}
			MyAjax.get("/controlpanel/mylistings/mls.ajax?ac=6&f="+field+"&v="+value,onComplete);	
	}
}

var oOptionWin = function(){
	var win;
	var lastObj;
	var status=0;

	return {
		init:function(){
//			win = new YAHOO.widget.Overlay("oOptionWin", {visible:false});
//			win.render(document.win);
			win = $('oOptionWin');
		},
		show:function(obj,data,map){
			//close alert info win
			if ($('table_message_info')) $('table_message_info').style.display = "none";
			
			if (lastObj == obj){
				if (status == 1) {this.close();return;}
//				else if (status == 0) {win.show();status = 1; return;}
			}
			win.style.display = "block";
			var width = (obj.getAttribute('type')==1)?230:150;
			win.style.width = width+"px";

//			var url = parseUrl(top.window.location.href);
			var attr = obj.getAttribute("name");
			if (attr == "search_email")
				loadFile(obj.getAttribute("name")+".php?listingID="+data+"&domain="+parent.window.TOP_DOMAIN+"&search="+obj.getAttribute("search"),win);
			else if (attr == "detail_contact")
				loadFile(obj.getAttribute("name")+".php?agentID="+data,win);
			else if (attr == "search_email_alert"){
				var reg = parent.window.idxTabs.getRegStatus();
				if (reg != 2) {
					parent.window.idxTabs.reg();
					return;
				}
				win.style.left = "0px";
				win.style.top = "0px";
				loadPage("email_alert.php?ac=1&fromlisting=1",win,{width:290,height:195,scroll:1});
			}else if (attr == "search_save_query"){
				var reg = parent.window.idxTabs.getRegStatus();
				if (reg != 2) {
					parent.window.idxTabs.reg();
					return;
				}
				loadFile(obj.getAttribute("name")+".php",win);
			}
			else{
				obj.style.width="16px";
				obj.src = "/tpl/rsft/images/loading.gif";
				var onComplete = function(res){
					obj.style.width="12px";
					obj.src = obj.getAttribute("org");
					win.innerHTML = res;
				}
				MyAjax.get(obj.getAttribute("name")+".php",onComplete);
			}
			if (map ==1){
				win.style.left = "80px";
				win.style.top = (YAHOO.util.Dom.getY(obj)-win.offsetHeight+50)+"px";
			}else{

				var objX = YAHOO.util.Dom.getX(obj);
				var objY = YAHOO.util.Dom.getY(obj);
				var vptX = YAHOO.util.Dom.getViewportWidth();
				var vptY = YAHOO.util.Dom.getViewportHeight();
				
	//			var test = [objX,width,vptX,objX + width,objX + width - vptX];
							
				if (objX + width > vptX) {
					var winX = objX + obj.offsetWidth - width;
					if (obj.getAttribute('type')==2)  winX += 80;
				}
				else
					var winX = objX;
				
//				if (objY + win.offsetHeight > vptY)
//					var winY = objY - win.offsetHeight;
//				else
					var winY = objY + obj.offsetHeight;
				

				win.style.left = winX + "px";
				win.style.top = winY + "px";
			}
//			win.cfg.setProperty("xy",[x,y]);
//			YAHOO.util.Dom.setXY(win,[80,100]);
//			win.show();
			lastObj = obj;
			status = 1;
		},
		close:function(){
//			win.hide();
			win.style.display = "none";
			status = 0;
		}
	}
}();
YAHOO.util.Event.addListener(window, "load", oOptionWin.init);

//var listingsSlides = function() {
//	var $D = YAHOO.util.Dom;
//	var $A = YAHOO.util.Anim;
//	var slideshowTimeOut = 5;
//	var currentSlide = 0;
//	var currentZindex  = 900;
//	var slideshowTimer = null;
//	var slide_holder = null;
//	var slideshowBox = null;
//	var slideshowEffect =  { opacity: { from: 1, to: 1 }, width: { from: 0, to: 300 }, height: { from: 0, to: 200 } };
//	var slides=[];
//	var status = 0;
//
//	return {
//		loadNextSlide : function() {
//			var nextSlide = currentSlide + 1;
//			if (!slides[nextSlide]) {nextSlide = 0;}
//			$('slideshow_'+currentSlide).style.display = "none";
//			$('slideshow_'+nextSlide).style.display = "block";
//			listingsSlides.loadSlide(nextSlide);
//			currentSlide = nextSlide;
//		},
//
//		loadSlide : function(i) {
//			if (slides) {
//				var div = $('slideshow_' + i);
//				$D.setStyle(div, 'width', 0);
//				$D.setStyle(div, 'z-index', currentZindex);
//				var animSlide = new $A(div, slideshowEffect, 1, YAHOO.util.Easing.easeOut);
//				animSlide.animate();
//				currentZindex++;
//				slideshowTimer = setTimeout('listingsSlides.loadNextSlide()', (slideshowTimeOut * 1000));
//			}
//		},
//		
//		loadImages : function() {
//			for (var i = slides.length; i > -1; i-- ) {
//				if (!$('slideshow_' + i)) {
//					if (slides[i]) {
//						var div = $C('div');
//						div.id = 'slideshow_' + i;
//						div.style.display = "none";
//						slide_holder.appendChild(div);
//						div.innerHTML = "<img src='"+slides[i]+"' width=300 height=200>";
//					}
//				}
//			}
//		},
//
//		init : function() {
////			slideshowBox = new YAHOO.widget.Overlay("slideshow");
////			slideshowBox.cfg.setProperty("visible", true);
//			slideshowBox = $("slideshow");
//			slide_holder = $('slide_holder');
//		},
//
//		close : function() {
//		   if (status ==0) return;
//		   slide_holder.parentNode.style.display = "none";
//		   slide_holder.style.display = "none";
//		   unLoadPage(slide_holder);		
//		   if (slideshowTimer){clearTimeout(slideshowTimer);}
//		   status = 0;
//		},
//
//		show: function(obj) {
//				if (status == 1) return;
//				slides = [];
//				var imgs = YAHOO.util.Dom.getElementsByClassName("thumb","img","thumbnailphotos");
//				for(var i=0;i<imgs.length;i++){	slides.push(imgs[i].src);}	
//				if (slides.length ==0) return;
//				listingsSlides.loadImages();
////				slideshowBox.cfg.setProperty("xy",[50,$D.getY(obj)-105]);
//				YAHOO.util.Dom.setXY(slideshowBox,[50,$D.getY(obj)-105]);			
//				slide_holder.style.display = "block";
//				slide_holder.parentNode.style.display = "block";
//				currentSlide = 0;
//				$('slideshow_'+currentSlide).style.display = "block";
//				listingsSlides.loadSlide(currentSlide);
//				status = 1;
//			}
//		}
//}();


function resetAlertMessagePos(obj,para){
		YAHOO.util.Dom.setXY('alertMessage',[(Math.floor(YAHOO.util.Dom.getX(obj)+(para["adjustX"]||0))),(Math.floor(YAHOO.util.Dom.getY(obj)-$('alertMessage').offsetHeight+obj.offsetHeight/2+(para["adjustY"]||0)))]);
};

//function validateEmailSearchResult(obj) {
//	var adjustPos = (isIE)?-250:0;
//	if(isEmpty(obj.value) || obj.value == $("emailValue").innerHTML) {
//		alertMessage.show({msg:"Please input email"},obj);
//		resetAlertMessagePos(obj,{adjustX:adjustPos});  
//		obj.focus();
//		return;
//	}else if(!isEmail(obj.value)) {
//		alertMessage.show({msg:"Please input correct email"},obj);
//		resetAlertMessagePos(obj,{adjustX:adjustPos});
//		obj.focus();
//		return;
//	}
//
//
//	$('btn_close').style.display = "none";
//	$('btn_submit').style.display = "none";
//	$('btn_loading').style.display = "block";
////	var i			= Math.round(10000*Math.random());
//	var url			= '/controlpanel/mylistings/search_email.php';
//	var pars		= "domain="+$('email_domain').value+"&email="+obj.value+"&listingID="+$('email_listingID').value+"&search="+$('email_search').value;
//	var onComplete  = function(responseText) {
//		$('btn_close').style.display = "block";
//		$('btn_submit').style.display = "block";
//		$('btn_loading').style.display = "none";
//		oOptionWin.close();
//	}
//	MyAjax.get(url+"?"+pars,onComplete);
//}



//object RSMarker
function RSMarker(point,id,content) { this.point = point; this.id = id;this.content = content; }
RSMarker.prototype = new GOverlay();
RSMarker.prototype.initialize = function(map) { var div = document.createElement("div"); 	  div.setAttribute("id",this.id);div.style.position = "absolute"; map.getPane(G_MAP_MARKER_PANE).appendChild(div); this.map_ = map; this.div_ = div;this.div_.innerHTML = this.content;	}
RSMarker.prototype.remove = function() { this.div_.parentNode.removeChild(this.div_); }
RSMarker.prototype.copy = function() {}
RSMarker.prototype.redraw = function(force) { if (!force) return; var c1 = this.map_.fromLatLngToDivPixel(this.point); this.div_.style.left = (c1.x-this.div_.offsetWidth/2) + "px"; this.div_.style.top = (c1.y-this.div_.offsetHeight) + "px"; }
GMap2.prototype.removeRSMarker=function(id){var b=document.getElementById(id);if (b){this.getPane(G_MAP_MARKER_PANE).removeChild(b);delete(b);}}
//object mapInfoWin
function mapInfoWin(point) {this.point = point;}
mapInfoWin.prototype = new GOverlay();
mapInfoWin.prototype.initialize = function(map) {var div = document.createElement("div"); div.setAttribute("id","mapInfoWin"); YAHOO.util.Dom.addClass(div,'infoWin'); map.getPane(G_MAP_FLOAT_PANE).appendChild(div); this.map_ = map; this.div_ = div;}
mapInfoWin.prototype.remove = function() {}
mapInfoWin.prototype.copy = function() {}
mapInfoWin.prototype.redraw = function(force) {if (!force) return; var p = this.map_.fromLatLngToDivPixel(this.point); this.div_.style.left = (p.x) + "px"; this.div_.style.top = (p.y) + "px"; this.div_.style.display = "none"; }
mapInfoWin.prototype.show=function(point,cityID){
  RSMap.closeOption();
  this.div_.style.display = "block";
  this.point = point;
  var p = this.map_.fromLatLngToDivPixel(point);
  var bounds = this.map_.getBounds();
  var southWest = this.map_.fromLatLngToDivPixel(bounds.getSouthWest());
  var northEast = this.map_.fromLatLngToDivPixel(bounds.getNorthEast());	
  var arrow = "se";
  var onLoading = function(){mapLoading(1);};
  var map = this.map_;
  var div = this.div_;
 
  var onComplete = function(res) {
	var content = res.split("~");
	if(!$('noParnetWin')) { 
		var tab =parent.window.idxTabs.getCurTab();
		if (tab == "S"){
			$('searchArea').style.color="black";
			$('searchArea').value = content[0];
		}
	}
//
//	if ($('map_tip').style.display != 'none')
//		$('map_tip').style.display = 'none';
	mapLoading(0);
	div.innerHTML = content[1];			
	var top = p.y - div.offsetHeight - 10;
	div.style.top = top + "px";
	var left = p.x - div.offsetWidth+7;	
	div.style.left = left + "px";
	map.panBy(new GSize(southWest.x-left,northEast.y-top));

	if ($('by_city')){
		var types = ['by_city','by_zip','by_address','by_mlsnumber']; 
		for(var i=0;i<types.length;i++){if (types[i] == 'by_city') {
			$(types[i]).style.backgroundColor = "#CACACA";
			search = i + 1;	
			MyAjax.get("mls.ajax?ac=50&searchBy="+search);
		} else {$(types[i]).style.backgroundColor = "#A4A4A4"}}

		setSearchPropertyStatus(1);
	}
  }
 
if($('noParnetWin'))    MyAjax.get("/php/controlpanel/mylistings/mls.ajax?flag=1&ac=10&cityID="+cityID+"&arrow="+arrow,onComplete,onLoading);
 else MyAjax.get("/php/controlpanel/mylistings/mls.ajax?ac=10&cityID="+cityID+"&arrow="+arrow,onComplete,onLoading);
}

mapInfoWin.prototype.showListing=function(point,listingID,tab){
//	listingsSlides.init();
	this.div_.style.display = "block";
	this.point = point;
	var p = this.map_.fromLatLngToDivPixel(point);
	var bounds = this.map_.getBounds();
	var southWest = this.map_.fromLatLngToDivPixel(bounds.getSouthWest());
	var northEast = this.map_.fromLatLngToDivPixel(bounds.getNorthEast());	
	var arrow = "se";
	var div = this.div_;var map = this.map_;
	var onComplete = function(res){
	  mapLoading(0);
	  div.innerHTML = res;			
	  var top = p.y - div.offsetHeight - 14;
	  var left = p.x - 232;//p.x - div.offsetWidth - 2;	//-2
	  div.style.top = top + "px";
	  div.style.left = left + "px";
	  map.panBy(new GSize(southWest.x-left,northEast.y-top));
	};
	 var res = MyAjax.get("mls.ajax?ac=5&listingID="+listingID+"&tab="+tab+"&arrow="+arrow,onComplete,function(){mapLoading(1);});
}
mapInfoWin.prototype.hide = function(){	this.div_.style.display = "none";}

//objet OptionWin
function OptionWin() {this.winPos = { search_price_range:[-205,-94], search_property_type:[-130,-94], search_property_style:[-54,-94], search_bedroom:[-205,-77], search_bathroom:[-130,-77], search_property_size:[-55,-77],search_specialty:[-205,-102],search_language:[-85,-102],search_broker_specialty:[-205,-102],search_broker_language:[-85,-102],search_gender:[-205,-85],search_broker_agents:[-205,-85]}; this.lastObj = null; this.status = 0; 	}
OptionWin.prototype = new GOverlay();
OptionWin.prototype.initialize = function(map) { var div = document.createElement("div"); div.setAttribute("id","OptionWin"); YAHOO.util.Dom.addClass(div,'OptionWin'); map.getPane(G_MAP_FLOAT_PANE).appendChild(div); this.map_ = map; this.div_ = div; }
OptionWin.prototype.remove = function() {}
OptionWin.prototype.copy = function() {}
OptionWin.prototype.redraw = function(force) { if (!force) return; this.div_.style.display = "none"; }
OptionWin.prototype.show=function(point,obj,cityID){
	  if (this.lastObj == obj) {if (this.status == 1) {this.close();return;}}
	  var search_type = obj.getAttribute("name");
	  this.div_.style.display = "block";
	  $('OptionWin').innerHTML = MyAjax.get("/controlpanel/mylistings/"+search_type+".php?map=1&cityID="+cityID);
	  var p = this.map_.fromLatLngToDivPixel(point);
	  this.div_.style.top = (p.y + this.winPos[search_type][1]) + "px";
	  this.div_.style.left = (p.x+ this.winPos[search_type][0]) + "px";
	  this.lastObj = obj;
	  this.status = 1;
}
OptionWin.prototype.close = function(){ this.div_.style.display = "none"; this.status = 0; }

var mapLoading = function(i){if (i==1) {showDiv('map_loading');hideDiv('mapZoom');hideDiv('mapview');}else {hideDiv('map_loading');showDiv('mapZoom');showDiv('mapview');}}

function validateEmailSearchResult(obj) {
	if(isEmpty(obj.value) || obj.value == $("emailValue").innerHTML) {
		alertMessage.show({msg:"Please input email"},obj);
		resetAlertMessagePos(obj,{adjustX:0});
		obj.focus();
		return false;
	}else if(!isEmail(obj.value)) {
		alertMessage.show({msg:"Please input correct email"},obj);
		resetAlertMessagePos(obj,{adjustX:0});
		obj.focus();
		return false;
	}

	$('btn_close').style.display = "none";
	$('btn_submit').style.display = "none";
	$('btn_loading').style.display = "block";

//	var i			= Math.round(10000*Math.random());
	var url			= '/controlpanel/mylistings/search_email.php';
	var pars		= "email="+obj.value+"&listingID="+$('email_listingID').value+"&search="+$('email_search').value+"&domain="+$('email_domain').value;
	var onComplete  = function(responseText) {
		$('btn_close').style.display = "block";
		$('btn_submit').style.display = "block";
		$('btn_loading').style.display = "none";
		oOptionWin.close();
	}
	MyAjax.get(url+"?"+pars,onComplete);
}

function validateEmailAlert() {
	var f = document.emailAlertForm;
	var obj = f.email;
	if(isEmpty(obj.value) || obj.value == $("emailValue").innerHTML) {
		alertMessage.show({msg:"Please input email"},obj);
		resetAlertMessagePos(obj,{adjustX:0});
		obj.focus();
		return false;
	}else if(!isEmail(obj.value)) {
		alertMessage.show({msg:"Please input correct email"},obj);
		resetAlertMessagePos(obj,{adjustX:0});
		obj.focus();
		return false;
	}

	var i			= Math.round(10000*Math.random());
	var url			= '/controlpanel/mylistings/search_email_alert.php';
	var pars		= "email="+f.email.value+"&term="+f.term.value+"&i="+i;
	var onComplete  = function(responseText) {
		oOptionWin.close();
	}
	MyAjax.post(url,pars,onComplete);
}

function validateSaveQuery(obj) {
	if(isEmpty(obj.value) || obj.value == $("queryNameValue").innerHTML) {
		alertMessage.show({msg:"Query name is required."},obj);
		resetAlertMessagePos(obj,{adjustX:0});
		obj.focus();
		return false;
	}
	
	var i			= Math.round(10000*Math.random());
	var url			= '/controlpanel/mylistings/search_save_query.php';
	var pars		= "queryName="+obj.value+"&i="+i;
	var onComplete  = function(responseText) {
		oOptionWin.close();
	}
	MyAjax.post(url,pars,onComplete);
}

var RSMap = function(){
	var map = null;
	var mapZoom = {"on":{},"out":{},"over":{},"org":{}};
//	var area = {/literal}{$AREA}{literal};
//	var counties = {/literal}{$COUNTIES}{literal};
	var lastCountyBoundary;
	var lastCounty;
	var lastCityMarkers=[];
	var lastCountyMarkers=[];
	var lastStateMarkers=[];
	var lastListingsMarkers=[];
	var infoWin,tipWin,mapOptionWin;
	var cities={};
	var counties={};
	var states={};
	var listings={};
	var mapsearcher=null;

	var currentCounty = 0;
	var currentState = 0;
	var currentListing;
	var countyBoundary = [];
	var countyBoundaryTemp = null;
	var initFlags = function(){	for(var k1 in flags) for(var k2 in flags[k1]) {var img = new Image; img.src=flags[k1][k2];};};
	
	
	function drawBoundary(boundaryData,temp){
		var pts =[];
		for(var i = 0; i<boundaryData.length;i++){ 
			pts.push(new GLatLng(boundaryData[i][0],boundaryData[i][1]));
		}
		if (temp ==1) {var boundaryColor="#33B3CC"} else  {var boundaryColor="#aaaaff";}
		var polygon = new GPolygon(pts, null, 1, 0.5, boundaryColor, 0.5);
		return polygon;
	}

	function getMapLevel(){
		var level = map.getZoom();
		if (level <= 4) return 1;//state view
//		else if (level == 5) return 1.5; //county & city
		else if (level >=5 && level <= 7) return 2;//county view
//		else if (level == 8) return 2.5; //county & city
		else if (level >=8 && level <= 10) return 3;//city view
		else return 4; //listing view
	};

	function createStates(){
////		eval(MyAjax.get("/controlpanel/mylistings/search_listings.ajax?ac=22"));	
//		for(var stateID in states){
//			if (stateID == currentState) {
//				alert("current state:"+stateID);
//			}else{
//				if (inArray(sharingArea[1],stateID)>-1)
//					var content="<div onclick='RSMap.dispState("+stateID+")'><img org='"+flags["state"]["area"]+"' src='"+flags["state"]["area"]+"' id='state_icon_"+stateID+"' onmouseover='RSMap.changeIcon(this,1)' onmouseout='RSMap.changeIcon(this,0)' style='cursor:pointer' type=0 alt='"+states[stateID][0]+"' class='pngTBFI'></div>";
//				else
//					var content="<div onclick='RSMap.dispState("+stateID+")'><img org='"+flags["state"]["out"]+"'  src='"+flags["state"]["out"]+"' id='state_icon_"+stateID+"' onmouseover='RSMap.changeIcon(this,1)' onmouseout='RSMap.changeIcon(this,0)' style='cursor:pointer' type=0 alt='"+states[stateID][0]+"' class='pngTBFI'></div>";
//				var point = new GLatLng(states[stateID][1],states[stateID][2]);
//				var state = new RSMarker(point,'state_'+stateID,content);
//				map.addOverlay(state);
//				lastStateMarkers.push('state_'+stateID);
//			}
//		}
	};

	function createCounties() {
//		
//		//remove last county boundary
//
//		for(var countyID in counties){
//			if (countyID == currentCounty && countyBoundary.length >0){ //current county
//				//draw boundary
//				var polygon = drawBoundary(countyBoundary);
//				lastCountyBoundary = polygon;
//				map.addOverlay(polygon);
//				//calculate center boundary	
////				map.panTo(new GLatLng(centerX/(countyBoundary.length),centerY/(countyBoundary.length)));
//			}else{	//other county
//				if (inArray(sharingArea[2],countyID)>-1){
//					var content="<div onclick='RSMap.dispCounty("+countyID+")'><img org='"+flags["county"]["area"]+"' src='"+flags["county"]["area"]+"' id='countyicon_"+countyID+"' onmouseover='RSMap.changeIcon(this,1)' onmouseout='RSMap.changeIcon(this,0)' style='cursor:pointer;' type='1' alt='"+counties[countyID][0]+"' class='pngTBFI'></div>";
//				}else{
//					var content="<div onclick='RSMap.dispCounty("+countyID+")'><img org='"+flags["county"]["out"]+"'  src='"+flags["county"]["out"]+"' id='countyicon_"+countyID+"'  onmouseover='RSMap.changeIcon(this,1)' onmouseout='RSMap.changeIcon(this,0)' style='cursor:pointer'  type=0 alt='"+counties[countyID][0]+"' class='pngTBFI'></div>";
//				}
//				var county = new RSMarker(new GLatLng(counties[countyID][1],counties[countyID][2]),'county_'+countyID,content);
//				map.addOverlay(county);
//				lastCountyMarkers.push('county_'+countyID);
//			}
//		}
	};
	
	function createCities() {
		//sharing area
		var sharingCities = [];
		for(var cityID in sharingArea[3]){
			sharingCities.push(cityID);
		}
		
		for(var cityID in cities){
			if (!(inArray(sharingCities,cityID)<0)) continue;
				var content="<div onclick='RSMap.cityInfo("+cityID+")'><img org='"+flags["city"]["on"]+"' src='"+flags["city"]["on"]+"' onmouseover='RSMap.changeIcon(this,1)' onmouseout='RSMap.changeIcon(this,0)' style='cursor:pointer' alt='"+cities[cityID][0]+"' class='pngTBFI'></div>";
			var city = new RSMarker(new GLatLng(cities[cityID][1],cities[cityID][2]),'city_'+cityID,content);
			map.addOverlay(city);
			lastCityMarkers.push('city_'+cityID);
		}

		for(var cityID in sharingArea[3]){
			var content="<div onclick='RSMap.cityInfo("+cityID+","+sharingArea[3][cityID][1]+","+sharingArea[3][cityID][2]+")'><img org='"+flags["area"]["on"]+"'  src='"+flags["area"]["on"]+"' onmouseover='RSMap.changeIcon(this,1)' onmouseout='RSMap.changeIcon(this,0)' style='cursor:pointer' alt='"+sharingArea[3][cityID][0]+"' class='pngTBFI'></div>";

			var city = new RSMarker(new GLatLng(sharingArea[3][cityID][1],sharingArea[3][cityID][2]),'city_'+cityID,content);
			map.addOverlay(city);
			lastCityMarkers.push('city_'+cityID);
		}
	};

	function createListings() {
		for(var listingID in listings){
			var content="<div onclick=\"RSMap.listingDetail('"+listingID+"')\"><img org='"+flags[listings[listingID][2]]["on"]+"'  src='"+((listingID==currentListing)?flags[listings[listingID][2]]["out"]:flags[listings[listingID][2]]["on"])+"' onmouseover='RSMap.changeIcon(this,1)' onmouseout='RSMap.changeIcon(this,0)' style='cursor:pointer' class='pngTBFI' name='"+listingID+"' id='listingicon_"+listingID+"'></div>";
			var listing = new RSMarker(new GLatLng(listings[listingID][0],listings[listingID][1]),listingID,content);
			map.addOverlay(listing);
			lastCityMarkers.push(listingID);
		}
	};
	
	function createBizObjs(bizObjs){
		for(var i = 0;i<bizObjs.length;i++){
			var t = bizObjs[i]["type"];delete(bizObjs[i]["type"]);
			createBizMapObject(t,bizObjs[i]);
		}
	};

	function createBizMapObject(t,data){
//		for(var b in data){
//			var bizobjID = "biz_"+t+"_"+b;
//			var content="<div onclick=\"RSMap.bizDetail('"+bizobjID+"',"+data[b][1]+","+data[b][2]+")\"><img  src='"+bizicon[t]+"' style='cursor:pointer' class='' alt='"+data[b][0]+"'></div>";
//			var bizObj = new RSMarker(new GLatLng(data[b][1],data[b][2]),bizobjID,content);
//			map.addOverlay(bizObj);
//			if (!bizs) bizs = {};
//			if (!bizs[t]){bizs[t] = []};
//			bizs[t].push(bizobjID);
//		}
	};

	function clearBizMapObject(t){
//		if (!bizs||!bizs[t]){return;};
//		for(var z=0;z<bizs[t].length;z++){
//			map.removeRSMarker(bizs[t][z]);
//		}
//		delete(bizs[t]);
	};

	function clearMap(){
//		for(var i=0;i<lastStateMarkers.length;i++) 		{map.removeRSMarker(lastStateMarkers[i]);};lastStateMarkers=[];states=null;
//		for(var i=0;i<lastCountyMarkers.length;i++) 	{map.removeRSMarker(lastCountyMarkers[i]);};lastCountyMarkers=[];counties=null;	
		for(var i=0;i<lastCityMarkers.length;i++) 		{map.removeRSMarker(lastCityMarkers[i]);};lastCityMarkers=[];cities=null;	
		for(var i=0;i<lastListingsMarkers.length;i++) 		{map.removeRSMarker(lastListingsMarkers[i]);};lastListingsMarkers=[];listings=null;	
//		if (lastCountyBoundary) map.removeOverlay(lastCountyBoundary);countyBoundary=[];
//		if (countyBoundaryTemp) map.removeOverlay(countyBoundaryTemp); countyBoundaryTemp =null;
//		for(var b in bizs){
//			for(var z=0;z<bizs[b].length;z++){
//				map.removeRSMarker(bizs[b][z]);
//			}
//		}
//		bizs = null;
	};


//	function removeCountiesAndCities(){
//		if (lastCounty) {
//			map.removeOverlay(lastCountyBoundary);
//			for(var i=0;i<lastCityMarkers.length;i++)
//				map.removeRSMarker(lastCityMarkers[i]);	
//			lastCityMarkers = [];
//		};
//		
//		for(var countyID in counties) {
//			map.removeRSMarker('county_'+countyID);
//		}		
//	};

	return {
		closeInfoWin:function(){infoWin.hide();},
		closeTipWin:function(){tipWin.hide();},
		cityInfo:function(cityID,lat,lng){
			if (cities[cityID]){
				infoWin.show(new GLatLng(cities[cityID][1],cities[cityID][2]),cityID);
			}else
				infoWin.show(new GLatLng(lat,lng),cityID);
		},

		setCenter: function(latlng){map.setCenter(new GLatLng(latlng[0],latlng[1]),map.getZoom());},
		setMapLevel:function(level){RSMap.setZoom(level*3)},
		
		openOption:function(cityID,obj){
			if (!cities[cityID]){return;};
			var point = new GLatLng(cities[cityID][1],cities[cityID][2]);
			mapOptionWin.show(point,obj,cityID);
		},

		getCurrentMapLevel:function(){return getMapLevel();},
		
		closeOption:function(){	mapOptionWin.close(); },

		createBizObjects:function(biz){
//			var t = biz["type"];delete(biz["type"]);
//			createBizMapObject(t,biz);
		},

		clearBizObjects:function(t){
//			clearBizMapObject(t);
		},

		localSearchByBiz:function(b){
		  mapsearcher.searchForm.input.value = b;
		  mapsearcher.searchForm.execute();
		},

		listingDetail:function(listingID,tab,point){
			if (typeof tab == "undefined"){tab =1};

			if (tab == 1){
				if (point)
				infoWin.showListing(point,listingID,tab);
				else
				infoWin.showListing(new GLatLng(listings[listingID][0],listings[listingID][1]),listingID,tab);
			}else if (tab == 4){
				mapOptionWin.close();
				parent.window.idxTabs.detail('L',listingID);
			}else if (tab == 2 ) {
			//	if (tab == 2) {listingsSlides.init();}else{listingsSlides.close();}
				infoWin.showListing(new GLatLng(listings[listingID][0],listings[listingID][1]),listingID,tab);
			}else if (tab ==3) {
				infoWin.showListing(new GLatLng(listings[listingID][0],listings[listingID][1]),listingID,tab);
			}
		},

		bizDetail:function(objID,lat,lng){
//			infoWin.showListing(new GLatLng(lat,lng),objID,10);
		},

		slidesshow:function(listingID,num){
			var onComplete = function(res){
				if (isEmpty(res)) return;
				eval(res);
				var slides = [];
				for(var i in imgs){
					var img = imgs[i][3]||imgs[i][2]||imgs[i][1];
					var tmp = [img,imgs[i][0]]; 
					slides.push(tmp);
				}
				Lightbox.open(slides,(num)?num:0);
			};

			MyAjax.get("/controlpanel/mylistings/mls.ajax?ac=43&listingID="+listingID,onComplete);
		},

		displayPhoto:function(obj){
			if (obj == 0) {
				unLoadPage('slide_holder2');
				$('slide_holder2').style.display = "none";
				$('slide_holder2').parentNode.style.display = "none";
			}else{
				var src = obj.getAttribute("org");
				if (isEmpty(src)) return;
				
				var room = $("slideshow2");
				room.style.display = "block";
				YAHOO.util.Dom.setXY(room,[YAHOO.util.Dom.getX(obj)+25,YAHOO.util.Dom.getY(obj)+20]);
				obj.style.visibility = "hidden";
				$('slide_holder2').style.display = "block";
				$('slide_holder2').parentNode.style.display = "block";
				$('slide_holder2').innerHTML = '<img src="/tpl/rsft/images/loading.gif">';
				
				var preload = new Image;
				preload.onload = function(){
					YAHOO.util.Dom.setXY(room,[YAHOO.util.Dom.getX(obj),YAHOO.util.Dom.getY(obj)]);
					$('slide_holder2').innerHTML = '<img src='+src+' border=1 width=300 height=200 onmouseout="RSMap.displayPhoto(0)" onclick=RSMap.slidesshow("'+obj.id+'")>';
					obj.style.visibility = "visible";
				}
				preload.src = src;

			}
		},

		mapEmail:function(obj,listingID){oOptionWin.show(obj,listingID,1);},
		mapEmailAgent:function(obj,UserID){oOptionWin.show(obj,UserID,1);	},


		mapit:function(listingDivID,lat,lng){
			currentListing = listingDivID.substr(7);
//				infoWin.hide();
			var point = new GLatLng(lat,lng);
			map.setCenter(point);
			RSMap.listingDetail(currentListing,1,point);
			RSMap.addOnDemandData();
		},

		
		getPageListings:function(page){
			var onComplete = function(res){
				var contents = res.split("~");
				$('listingsPagesNav').innerHTML = contents[0];
				$('listingsPagesNav2').innerHTML = contents[0];
				$('searchResultListings').innerHTML = contents[1];
				loadimg();
			};

			MyAjax.get("/controlpanel/mylistings/mls.ajax?ac=1&page="+page,onComplete);
		},

//		dispCounties:function(stateID){
//			var onComplete = function(res){
//				mapLoading(0);
//
//				//remove all states
//				for(var stateID in states) {
//					map.removeRSMarker('state_'+stateID);
//				}		
//				
//				eval(res);
//				
//				var lat = [];
//				var lng = [];
//				for(var i in counties) {
//					createCounty(new GLatLng(counties[i][1],counties[i][2]),i);
//					lat.push(counties[i][1]);lng.push(counties[i][2]);
//				}
//			
////			map.setZoom(6);
////			map.setCenter(new GLatLng(lat.avg(),lng.avg()));
//			map.setCenter(new GLatLng(arrayAvg(lat),arrayAvg(lng)));
//			RSMap.setZoom(6);
//
//			states = {};
//			};
//
//			MyAjax.get("search_listings.ajax?ac=23&stateID="+stateID,onComplete,function(){mapLoading(1);});
//		},
		dispState:function(stateID){
			currentState = stateID;
			map.setCenter(new GLatLng(states[stateID][1],states[stateID][2]));
			if (getMapLevel() != 2)	{RSMap.setZoom(5);}
			else {RSMap.addOnDemandData();}
		},
		
		dispCounty:function(countyID){
			currentCounty = countyID;
			map.setCenter(new GLatLng(counties[countyID][1],counties[countyID][2]));
			if (getMapLevel() != 3)	{RSMap.setZoom(8);}
			else {RSMap.addOnDemandData();}
//			if (countyID <> currentCounty){
//			addOnDemandData();
//			}
//			var onComplete = function(res) {
//
//				mapLoading(0);
//				if (lastCounty) {
//					map.removeOverlay(lastCountyBoundary);
//					$('county_'+lastCounty).style.display = "block";	
//					for(var i=0;i<lastCityMarkers.length;i++)
//						map.removeRSMarker(lastCityMarkers[i]);	
//					lastCityMarkers = [];
//				};
//	
//				$('county_'+countyID).style.display = "none";	
//			
//				var data = res.split('~');eval(data[3]);
//				RSMap.setZoom(9);
//				var cmd = "map.panTo(new GLatLng("+data[0]+"));";
//				eval(cmd);
//
//				//draw boundary
//				eval(data[1]);
//				var pts =[];
//				for(var i = 0; i<boundary.length;i++) 
//					pts.push(new GLatLng(boundary[i][0],boundary[i][1]));
//				
//				var polygon = new GPolygon(pts, null, 1, 0.5, "#aaaaff", 0.5);
//				lastCountyBoundary = polygon;
//				map.addOverlay(polygon);
//				lastCounty = countyID;
//				eval(data[2]);
//				lastCityMarkers = [];
//				for(var i in cities) 
//					createCity(i);
//
//			}
//
//			MyAjax.get("search_listings.ajax?ac=9&countyID="+countyID,onComplete,function(){mapLoading(1);});
		},
		
//		listingInfo:function(listingID,tab){
//			if (typeof tab == "undefined") tab=1;
////			if (tab == 2) {listingsSlides.init();}else{listingsSlides.close();}
//			infoWin.showListing(new GLatLng(listings[listingID][0],listings[listingID][1]),listingID,tab);
//		},

		changeIcon:function(img,event){
			if (event == 0){img.src = img.getAttribute("org");}
			else{img.src = img.src.replace(/on/,"of");}

			//county boundary
			if (img.src.indexOf('county')>-1 && event ==1){
				var countyID = img.id.substr(img.id.lastIndexOf('_')+1);
				var onComplete = function(res){
					eval(res);
					if (countyBoundaryTemp) map.removeOverlay(countyBoundaryTemp); countyBoundaryTemp =null;
					var polygon = drawBoundary(boundaryData,1);
					countyBoundaryTemp = polygon;
					map.addOverlay(polygon);
				}
				MyAjax.get("/controlpanel/mylistings/mls.ajax?ac=41&countyID="+countyID,onComplete);
			}else if (img.src.indexOf('county')>-1 && event ==0){
				if (countyBoundaryTemp) map.removeOverlay(countyBoundaryTemp); countyBoundaryTemp =null;
			}else  if (img.src.indexOf('com')>-1 || img.src.indexOf('res')>-1 || img.src.indexOf('lnd')>-1){
				var listingID = img.getAttribute("name");
				if ($("listing"+listingID)){
					$("listing"+listingID).style.borderColor=(event==1)?"red":"#EDEFF2";
				}
			}
		
		},
		
		iconSwap:function(el,which){
			el.src = (which == "over") ?mapZoom['over'][parseInt(el.id.substr(el.id.indexOf('_')+1))] :el.getAttribute("origsrc");
		},

		setZoom:function(z) {
			if (z != map.getZoom()) {
			map.setZoom(z);}
			if (z % 2 == 0) z--;
			for(var i=17;i>z; i=i-2) {
				var el = $("zoom_"+i);
				el.src= mapZoom["out"][i];
				el.setAttribute("origsrc",el.src);
			}

			for(var i=z;i>=3;i = i-2) {
				var el = $("zoom_"+i);
				el.src=mapZoom["on"][i];
				el.setAttribute("origsrc",el.src);
			}
			
		},

		mapZoomControl:function (z) {
			if (z == 'in')
				map.zoomIn();
			else {
				if (map.getZoom()>=3)
				map.zoomOut();
			}
			if (map.getZoom() % 2)
				this.setZoom(map.getZoom());
		},

		changeMapType:function (t) {
			var types = document.getElementById('mapview').getElementsByTagName("img");
			for (var i=1;i<types.length;i++){
					if (types[i].src.indexOf(t) > -1) {
						types[i].src = types[i].src.replace(/_off/,"_on");
					}
					else{
						if (types[i].src.indexOf('_on') > -1) {
						types[i].src = types[i].src.replace(/_on/,"_off");
						}
					}
				}
			if (t == "g_map_type")
				map.setMapType(G_NORMAL_MAP);
			else if (t == "g_satellite_type")
				map.setMapType(G_SATELLITE_MAP);
			else
				map.setMapType(G_HYBRID_MAP);
		},
		
		search:	function(city){
			parent.window.idxTabs.setrfirst();
			var tab =parent.window.idxTabs.getCurTab();
			if (tab == "S"){ check();}
			else if (tab == "R") {
				var onComplete = function(res){
					setQueryValue("searchArea","CityID="+city);
				}
				MyAjax.get("/controlpanel/mylistings/mls.ajax?ac=44",onComplete);
			}
		},

		getMapBoundaries:function(){
			var bounds = map.getBounds();
			var southWest = bounds.getSouthWest();
			var northEast = bounds.getNorthEast();

			var boundaries = [];
			boundaries.push(southWest.lat());
			boundaries.push(southWest.lng());
			boundaries.push(northEast.lat());
			boundaries.push(northEast.lng());
			return boundaries.join(",");
		},

		addOnDemandData:function(){
			mapLoading(1);
			var level = getMapLevel();	
//			alert("currentCounty"+currentCounty);	
			var onComplete = function(res){
				clearMap();
				eval(res);
//				if (level == 1)	createStates();
//				else if (level == 1.5)	{createStates();createCounties();}
//				else if (level == 2)	{createStates();createCounties();}
//				else if (level == 3)	{createCounties();createCities();}
//				else if (level == 3)	createCities();
//				else if (level == 4)	{createListings();createCities();};
				if (level <4)	{createCities(); }
				else if (level == 4)		{
					createListings();createCities();
					if (typeof bizObjs != "undefined") {if (bizObjs.length >0) createBizObjs(bizObjs);}
				}
				mapLoading(0);
			}
			MyAjax.get("/controlpanel/mylistings/mls.ajax?ac=40&boundaries="+RSMap.getMapBoundaries()+"&level="+level+"&countyID="+currentCounty+"&stateID="+currentState,onComplete);
		},

		
		init:function() {
			hideDiv('map_loading');
			map = new GMap2(document.getElementById("map"));
			if(!$('hideControl') && window.location.href.indexOf("widget")<0) {
				var ovcontrol = new GOverviewMapControl(new GSize(98,100)); 
				map.addControl(ovcontrol);
			}
			map.setCenter(new GLatLng(mapInitCenterX,mapInitCenterY), mapInitZoom);

			//local search
			if (local_search){
				  var options = {
					resultList : $("local_search_results"),
					suppressZoomToBounds : true,
				    suppressInitialResultSelection : true,
					onSearchCompleteCallback : function(searcher){
							$('local_search_results').style.display = "block";
//							resizeDiv();
					}

					};

				  mapsearcher = new google.maps.LocalSearch(options);
				  map.addControl(mapsearcher);
				  mapsearcher.searchFormDiv.style.visibility = "hidden";
				  mapsearcher.searchFormDiv.parentNode.style.visibility = "hidden";
			}

			initFlags();

			for(var i=3;i<=17;i = i+2) {
				mapZoom["on"][i] = "/tpl/rsft/images/icons/zoom_"+i+"_on.gif";
				mapZoom["out"][i] = "/tpl/rsft/images/icons/zoom_"+i+"_out.gif";
				mapZoom["over"][i] = "/tpl/rsft/images/icons/zoom_"+i+"_over.gif";
			}

			//zoom
			var icons = document.getElementById('mapZoom').getElementsByTagName("img");
			for (var i=0;i<icons.length;i++){
				var j = icons[i].id.substr(icons[i].id.indexOf('_')+1);
				if (j>0) {
					icons[i].outsrc_img = new Image();
					icons[i].outsrc_img.src=mapZoom["out"][j];

					icons[i].oversrc_img = new Image();
					icons[i].oversrc_img.src=mapZoom["over"][j];

					icons[i].onsrc_img = new Image();
					icons[i].onsrc_img.src=mapZoom["on"][j];

					icons[i].setAttribute("origsrc",icons[i].src);
					YAHOO.util.Event.addListener(icons[i], "mouseover",function(){RSMap.iconSwap(this,'over')});
					YAHOO.util.Event.addListener(icons[i], "mouseout",function(){RSMap.iconSwap(this)});
					YAHOO.util.Event.addListener(icons[i], "click",function(){RSMap.setZoom(parseInt(this.id.substr(this.id.indexOf('_')+1)));});
				}
			}

		
		

			//add county
//			for(var i in counties) {
//				 createCounty(new GLatLng(counties[i][1],counties[i][2]),i);
//			}

			//info window
			infoWin = new mapInfoWin(new GLatLng(32.861132,-83.540039));
			map.addOverlay(infoWin);
			
			mapOptionWin = new OptionWin();
			map.addOverlay(mapOptionWin);
			YAHOO.util.Dom.setXY('map_tip',[YAHOO.util.Dom.getX('map')+10,YAHOO.util.Dom.getY('map')+10]);	
	
			GEvent.addListener(map,"dragstart",function(){mapLoading(1);});
			GEvent.addListener(map,"dragend",RSMap.addOnDemandData);
			GEvent.addListener(map,"zoomend",RSMap.addOnDemandData);

			RSMap.addOnDemandData();
			RSMap.setZoom(mapInitZoom);
//			var tipChangeContent = function(){
//			
//			  if (map.getZoom() <=3) { //delete county icons
//				removeCountiesAndCities();
//				createStates();
//			  };
//
//			  if ($('map_tip').style.display == 'none') return;
//			  
//			  if ($('map_tip_content')){
//			  if (map.getZoom() >=9)
//				$('map_tip_content').innerHTML = "Click icon to select city.";
//			  else
//				$('map_tip_content').innerHTML = "Click icon to select county.";
//			}
//			}
//			GEvent.addListener(map,"zoomend",tipChangeContent);
//			parent.window.winPop.setTitle("SEARCH");
		
			//set search field default value
//			if (search ==4)				defaultValue = "Search by Name, City, State or Zip";
//			else if (search ==3)		defaultValue = "Search by Name, City, State or Zip";
		}
	}
}();