var map, markerMgr, bounds, $main, $list, $detail, $detailtb, $province, $city, $dealerList, $listbar;
var basePath = '/dealer/info/';
var dealerListHtml = "";
var gmarkers = [];

SWFAddress.addEventListener(SWFAddressEvent.CHANGE, handleChange);

function log(l){
	if(typeof console != 'undefined'){
		console.log(l);
	}else{
		alert(l);
	}
}

function handleChange(event) {
	$main = $("#main");$list = $("#list");$detail = $("#detail");$detailtb=$("#detailtb");
	var pathNames = event.pathNames;
	if(pathNames[0]=='list'){
		$list.show();
//		$listbar.hide();
		$("#Dealer-Scrollbar").removeClass("Scrollbar-Disabled");
//		$listbar.show();
		window.setTimeout(function(){
			if(map==undefined){
				initMap();
			}else{
				map.setZoom(map.getZoom()-1);
				map.clearOverlays();
			}
			$main.hide();
			$detail.hide();
			var p={};
			p.pname = pathNames[1];
			if(pathNames[2]!=undefined){
				p.cid = pathNames[2];
			}
			getDealers(p);			
		},100);

	}else if(pathNames[0]=='detail'){
		$list.hide();
		$main.hide();
		var listStatus = $listbar.is(":visible");
		if(listStatus){
			$.get('/dealer/detail/'+pathNames[1],function(h){
				$detailtb.replaceWith(h);
				$detail.show();
				var tmap = new GMap2($("#tinyMap")[0]);
				if(lat&&lng){
	          		var p = new GLatLng(lat,lng);
	          		tmap.setCenter(p,15);
	          		tmap.addOverlay(markerMgr.getMarker(lat,lng,17));
	          	}else{
	          		tmap.setCenter(new GLatLng(35, 107), 4);
	          	}
	          	tmap.setUIToDefault();
			});
		}else{
			getRangDealers(pathNames[1]);
		}
	}else{
		$list.hide();
		$listbar.hide();
		$main.show();
		$detail.hide();
	}
}

function initMap(){
	map = new GMap2($("#map")[0]);
	map.setCenter(new GLatLng(35, 107), 4);
	map.setUIToDefault();
	markerMgr = new MarkerManager(map,{borderPadding:37});
}

$(function() {
			$listbar = $("#listbar");
			$listbar.hide();
			$province = $("#province");
			$city = $("#city");
			$dealerList = $("#dealerList");
			
			$.getJSON(basePath + 'province', function(ps) {
						var oHtml = '';
						$.each(ps, function(i, p) {
									oHtml += '<option value="' + p.name + '">'
											+ p.name + '</option>';
								});
						$province.append(oHtml);
						$province[0].selectedIndex = 0;
						if ($province[0].refresh != undefined)
							$province[0].refresh();
					});
			var pa = {width:119,style:"width:119px;",zIndex:1};
//			var pa = {};
			$province.msDropDown(pa);
			$city.msDropDown(pa);

			$search = $("#searchButton");
			$search.click(function() {
						var pv=$province.val();
						var h = "";
						if(pv!=0&&pv!=null){
							if($("option",$city).length == 1){
								h = "/list/" + pv;
							}else{
								var cv = $city.val();
								if(cv!=0&&cv!=null){
									h = "/list/" + pv;
									h += "/" + cv;
								}else{
									alert("请选择市");
								}
							}
						}else{
							alert("请选择省");
						}
						if(h!=""){
							SWFAddress.setValue(h);
						}
						this.blur();
						return false;
					});

		});

function populateCity(pid) {
	var city = $('#city')[0];
	$(city).empty();
	var oHtml = '<option value="0">' + SELECT_TXT + '</option>';
	$.getJSON(basePath + 'getCitysByProvinceName', {
				pname : encodeURIComponent(pid)
			}, function(cs) {
				$.each(cs, function(i, c) {
							oHtml += '<option value="' + c.id + '">' + c.name
									+ '</option>'
						});
				$(city).append(oHtml);
				city.selectedIndex = 0;
				if (city.refresh != undefined)
					city.refresh();
			});
}

function getRangDealers(did){
	gmarkers = [];
	
	$.get('/dealer/detail/'+did,function(h){
		$detailtb.replaceWith(h);
		$detail.show();
		bounds = new GLatLngBounds();
		var tmap = new GMap2($("#tinyMap")[0]);
			tmap.setCenter(new GLatLng(35, 107), 4);
			tmap.setUIToDefault();
		$.getJSON(basePath+'rangeDealers',{did:did},function(ds){
			dealerListHtml = '';
			var idx = 0;
			markerMgr = new MarkerManager(tmap);
			if (ds.length) {
				$.each(ds, function(i, d) {
							createMarker(d);
							if(d.dealerId==did){
								idx = i;
							}
						});
				$dealerList.append(dealerListHtml);
				$("#listbar").show();
				markerMgr.addMarkers(gmarkers, 2);
				var p = new GLatLng(ds[idx].lat,ds[idx].lng);
		        tmap.setCenter(p,17);
				tmap.addOverlay(markerMgr.getMarker(ds[idx].lat,ds[idx].lng,17));
				initDealerScroll();
			}else{
				tmap.setCenter(new GLatLng(35, 107), 4);
			}
		});
	});
	
	
	

}

function getDealers(params) {
	gmarkers = [];
	bounds = new GLatLngBounds();
	markerMgr.clearMarkers();
	$.getJSON(basePath + 'dealer', params, function(ds) {
				$dealerList.empty();
				dealerListHtml = '';
				if (ds.length) {
					$.each(ds, function(i, d) {
								createMarker(d);
							});
					$dealerList.append(dealerListHtml);
					$("#listbar").show();
					markerMgr.addMarkers(gmarkers, 2);
					var l = map.getBoundsZoomLevel(bounds);
					map.setCenter(bounds.getCenter(),l > 17 ? 17 : l);
					initDealerScroll();
				}else{
					map.setCenter(new GLatLng(35, 107), 4);
				}

			});
}

function initDealerScroll(){
	var content = document.getElementById("Dealer-Content");
	var scrollb = document.getElementById("Dealer-Scrollbar");

	scrollbara = new Scrolling.Scrollbar (
		scrollb,
		new Scrolling.Scroller (content, 400, 323),
		new Scrolling.ScrollTween()
	);

}

function createMarker(d) {
    var letter = String.fromCharCode("A".charCodeAt(0) + (gmarkers.length));
    var letterUrl = "http://www.google.com/mapfiles/marker" + letter + ".png";
    var myIcon = new GIcon(G_DEFAULT_ICON, letterUrl);
    myIcon.printImage = "http://maps.google.com/mapfiles/marker"+letter+"ie.gif"
    myIcon.mozPrintImage = "http://maps.google.com/mapfiles/marker"+letter+"ff.gif"
	
    var html = createInfoWindow(d);
    var p = new GLatLng(d.lat,d.lng);
    bounds.extend(p);
    var marker = new GMarker(p, {icon:myIcon,title:d.dealerNameChn});
        GEvent.addListener(marker, "click", function() {
    	marker.openInfoWindowHtml(html,{maxWidth:265});
    });
    gmarkers.push(marker);
	/*dealerListHtml += '<li><div style="cursor:pointer;" onclick="clickMarker('
			+ (gmarkers.length - 1) + ')" '
			+ 'class="scroll_abc"><img src="'
			+ letterUrl
			+ '" onload="filterPNG(this)"/></div><div class="scroll_adres">'
			+ '<strong style="cursor:pointer;" onclick="clickMarker(' 
			+ (gmarkers.length - 1) + ')">'
			+ d.dealerNameChn + '</strong><p>'
			+ d.address
			+ '</p><p>'
			+ d.officePhoneNumber
			+ '</p>'
			+ '<a class="seedelias" href="#" onclick="SWFAddress.setValue(\'/detail/'
			+ d.dealerId
			+ '\');return false;">' 
			+ VIEW_DETAIL
			+ '</a></div></li>';*/
    dealerListHtml += createBarHtml(d,letterUrl);
	return marker;
  }

function createInfoWindow(d){
	var gUrl = 'http://www.google.com/maps';
	var cgUrl = 'http://ditu.google.cn/maps';
//	http://ditu.google.com/maps?q=书店 loc: 宣威
	var h = '';
	if(d.smallImg==""||d.smallImg==null){
		h += '<div class="gmapimg"><img src="'+ S_SHOP_IMG +'" width="90" height="68"/></div>';
	}else{
		h += '<div class="gmapimg"><img src="/'+d.smallImg+'" width="90" height="68"/></div>';
	}
		h += '<div><b>'+d.dealerNameChn+'</b>'
		  + '<div>'+d.address+'</div>'
		  + '<div>'+d.officePhoneNumber+'</div>'
		  + '</div>';
		h += '<div class="gmaproad">获取路线：';
		h += '<a id="dto" class="blue" target="_blank" href="'+gUrl+'?daddr='+d.address+'@'+d.lat+','+d.lng+'">前往此处</a> - ';
		h += '<a id="dfrom" class="blue" target="_blank" href="'+gUrl+'?saddr='+d.address+'@'+d.lat+','+d.lng+'">从此处出发</a> - ';
		h += '<a target="_blank" class="blue" href="'+gUrl+'?q='+d.address+'@'+d.lat+','+d.lng+'">在附近搜索</a>';
		h+= '<a href="#" class="seedelias" onclick="SWFAddress.setValue(\'/detail/'+d.dealerId+'\');return false;">'+VIEW_DETAIL+'</a>';
		h += '</div>';
	return h;
}
  
function createBarHtml(d,img){
	var h = '<li>';
		h+= '<div style="cursor:pointer;" onclick="clickMarker('+(gmarkers.length - 1)+')">';
		h+= '<div class="scroll_abc">'
		h+= '<img src="'+img+'" onload="filterPNG(this)"/>';
		h+= '</div>';
		h+= '<div class="scroll_adres">';
		h+= '<strong>'+d.dealerNameChn+'</strong>';
		h+= '<p>'+d.address+'</p>';
		h+= '<p>'+d.officePhoneNumber+'</p>';
		h+= '</div>';
		h+= '</div>';
		h+= '<a href="#" class="seedelias" onclick="SWFAddress.setValue(\'/detail/'+d.dealerId+'\');return false;">'+VIEW_DETAIL+'</a>';
	return h;
}
  
  
function clickMarker(i){
	GEvent.trigger(gmarkers[i],'click');
}