
_package("bjmap.main");
bjmap.main.bus=function(){
	var outmaxlength="注意！输入字符过长，应小于100";//超出限制后提示的文本
	var specialchar="注意！包含特殊字符将无法进行查询";
	//绑定公交搜索
	var btnBusSearch=DCI.get("btnBusSearch");
	DCI.event.bindDom(btnBusSearch,"click",processBusSearch,this);
	var isNull=function(e){
		var isnull=true;		//默认是传递进来的是空值
		var value=e.value;
		var tip=e.title;
		if(value){
			if(value!=tip&&value!=outmaxlength&&value!=specialchar){
				isnull=false;
			}
		}
		return isnull;
	}
	function processBusSearch(){
		var params="request=bussearch";
		var bustype=module.currentBusModule.getAttribute("id");		
		params+="&type"+bustype;
		map.clearOverlays();
		if(bustype=="buschange"){
			var startname=DCI.get("busstartname");
			var endname=DCI.get("busendname");	
			if(isNull(startname)){
				return;	
			}
			if(isNull(endname)){
				return;
			}
			nav.poi(2,startname.value,endname.value);
		}else if(bustype=="busname"){
			var buslinename=DCI.get("buslinename");			
			if(isNull(buslinename)){
				return;	
			}
			this.line(buslinename.value);
		}else if(bustype=="busstation"){
			var busstationname=DCI.get("busstationname");	
			if(isNull(busstationname)){
				return;	
			}
			this.station(busstationname.value);
		}else{
			return;
		}	
	}
	
	var transferTags=["startName","endName","busName","footLength","driverLength"];
	var busTags=["name","length","key_name","line_id","start_time","end_time","terminal_name","stationdes","company","xys"];
	var routeTypes=["默认","最经济","最少换乘","最小步行","最舒适"];
	/**
	 * @type 线路查询
	 * @see 查询线路名称
	 * @param {string} ln(lineName) 线路名称，例如836 
	 */
	this.line=function(ln){
		if(!ln)return;		
		//设置模块变动
		module.changeModule("bus");
		module.changeBusType("line");
		var bln=DCI.get("buslinename");	bln.setAttribute("value",ln);bln.style.color="#000";
		//查询
		var query=new DCI.Service.Bus();
		query.getByName({
			busName:ln
			},
		processBus,busTags);
	}
	
	/**
	 * @type 站点查询
	 * @see 查询线路名称
	 * @param {string} sn(stationName) 站点名称，例如"清河"
	 */
	this.station=function(sn){		
		if(!sn)return;
		//设置模块变动
		module.changeModule("bus");
		module.changeBusType("station");
		var bsn=DCI.get("busstationname");bsn.setAttribute("value",sn);bsn.style.color="#000";
		//查询
	  	var query=new DCI.Service.Bus();	  				
	  	query.getByStation({
	  			stationName:sn
	  		},processBus,busTags);
	}
   		
	/**
	 * @type 公交换乘
	 * @see 计算两个poi点之间的换乘细节
	 * @param {DCI.Service.POI} sp(startPOI) 起始的POI点对象，必须包含x,y,name属性，否则查询失败
	 * 		  {DCI.Service.POI} ep(endPOI) 	 终点的POI点对象，同上
	 * 		  {number}	rt(routeType) 换乘模式，0 默认, 1 最经济, 2 最少换乘, 3 最小步行, 4 最舒适
	 */
   this.transfer=function(sp,ep,rt){   	
		if(!ep||!sp)
			return;		 
		rt=rt||0;
		
		//设置切换模块的文本
		var bs=DCI.get("busstartname");	bs.setAttribute("value",sp.name);bs.style.color="#000";
		var be=DCI.get("busendname");be.setAttribute("value",ep.name);be.style.color="#000";	
		module.changeModule("bus");		
		
		//清空结果列表内容
		var rl=DCI.get("result_list");rl.innerHTML="";
		var sc=DCI.get("result_title");sc.innerHTML = "<div class='result_title_querytext'>查询结果</div>";
		var rp=DCI.get("result_page");rp.style.display="none";			
		
		//出行方式
		var trip_mode = document.createElement("div");trip_mode.className="trip_mode";
		trip_mode.innerHTML="<span class='trip_mode_title'>出行方式:</span>";
		var b_c=true?"trip_mode_y":"trip_mode_n";		//根据标示给出样式显示
		var n_c=false?"trip_mode_y":"trip_mode_n";
		var span_bus=document.createElement("span");span_bus.id="span_bus";span_bus.className=b_c;span_bus.innerHTML="公交换乘";
		var span_bn_split=document.createElement("span");span_bn_split.className="trip_mode_split";span_bn_split.innerHTML="|";
		var span_nav=document.createElement("span");span_nav.id="span_nav";span_nav.className=n_c;span_nav.innerHTML="驾车导航";
		trip_mode.appendChild(span_bus);
		trip_mode.appendChild(span_bn_split);
		trip_mode.appendChild(span_nav);
		rl.appendChild(trip_mode);	//添加到结果列表中
		DCI.event.bindDom(span_nav,"click",function(){		//绑定点击事件，切换样式,trip_mode_y被选中样式,trip_mode_n未被选中样式，在bus.css当中
			nav.navigation(sp,ep,0);
		});		
		
		
		//起点终点
		var start=document.createElement("div");start.id="bus_s";
		start.innerHTML = "<span class='bus_se_title'>起点：</span><span class='bus_se_name'>"+ sp.name+"</span>";
		var end=document.createElement("div");end.id="bus_e";
		end.innerHTML = "<span class='bus_se_title'>终点：</span><span class='bus_se_name'>"+ ep.name+"</span>";
		rl.appendChild(start);
		rl.appendChild(end);
		var $this=this;
		
		//换乘模式
		var t_m=document.createElement("div");t_m.id="bus_transfer_mode";
		var temp_input;
		DCI.each(routeTypes,function(text,value){	//循环
			var t_m_input=document.createElement("input");t_m_input.type="radio";t_m_input.name="bus_transfer_mode_radios";t_m_input.value=value;	
			var t_m_span=document.createElement("span");
			t_m_span.innerHTML=text;
			t_m.appendChild(t_m_input);
			t_m.appendChild(t_m_span);
			rl.appendChild(t_m);
			if(value==rt){		//必须是这个顺序，否则设置checked将被重置
				temp_input=t_m_input;
			}
			DCI.event.bindDom(t_m_input,"click",function(){
				$this.transfer(sp,ep,value);		//调用公交换乘		
			})
		});
		if(temp_input)temp_input.setAttribute("checked","true");	//设置被选中的radio,此举只为兼容ie7、6，因为radio组有新成员加入时，所有成员的checked都会变成false
		
		
		//线路数和查询返程
		var count_back=document.createElement("div");count_back.id="bus_count_back";
		rl.appendChild(count_back);
	  	function count_back_append(count){		//由于线路数要稍后查询才得知，故需要回调添加  		
  			//线路数
  			var c=document.createElement("span");c.className="bus_cb_count";
  			c.innerHTML="共"+count+"条线路";
	  		count_back.appendChild(c); 
	  		//查询返程
  			var b=document.createElement("span");b.className="bus_cb_back";b.innerHTML="查询返程路线";
	  		count_back.appendChild(b);
		 	DCI.event.bindDom(b,"click",
				function(event){
					$this.transfer(ep,sp,rt);
				}
			);
	  	}
	  	
	  	//公交线路方案列表
	 	var br_div = document.createElement("div");br_div.id="bus_routes";
	  	br_div.innerHTML = "";
	  	result_list.appendChild(br_div);
	  	
	    var query=new DCI.Service.Bus();
	  	query.getBusRoutes({
	  		x1:sp.x,y1:sp.y,
	  		x2:ep.x,y2:ep.y,
	  		routeType:rt
	  		},
	  		function(bus,data){
	  			count_back_append(bus.length);
	  			if(bus.length>0){
					for(var i=0;i<bus.length;i++){					
						createHTMLByBus(sp,ep,bus[i],i);
					}
				}else{
					var no_result=$("<div id='poi_null_result'><div class='nearNowfounddiv'>未找到相关搜索结果！</div><div class='poi_null_descriptioin'>" +
					"<div class='pnd_icon'></div><div><b>建议:</b></br>1．请确保所有字词拼写正确。</br>2．请确保输入起点和终点正确。</br>3．尝试更宽泛的关键字。" +
					"</div><div class='pnd_keywords'></div></div></div>");
					$(br_div).append(no_result);
				}
	  		}
	  	,transferTags);
	}
	
	/**
	 * @type 私有方法
	 * @param 根据每个方案建立，详细列表
	 */
	function createHTMLByBus(sp,ep,bus,number){
  		var br_div = DCI.get('bus_routes');
  		/**
  		 * 包含这个方案的线、图标、泡泡
  		 */
		var polylines=new Array();	//地图的标题DPolyline
		var icons=new Array();	//地图的站点图标DIcon
		var pops=new Array();	//地图的泡泡Dpopup
  		
  		
  		/**
  		 * 生成方案列表的HTML
  		 */
		//生成头部
		var busNames=bus.getBusOfNames();
		var rh_class=number==0?"route_header_first":"route_header";
		var route_header = document.createElement("div");route_header.className=rh_class;
		var rh_n=document.createElement("span");rh_n.className="bus_route_header_nunber";rh_n.innerHTML=(number+1)+".";
		var rh_s=document.createElement("span");rh_s.className="bus_route_header_summy";rh_s.innerHTML=busNames.join("<span class='bus_route_hs_z'>转</span>");
		var rh_l=document.createElement("span");rh_l.className="bus_route_header_length";rh_l.innerHTML="约"+bus.getTotalLength("k")+"公里";		//k代表公里数，m代表米
		route_header.appendChild(rh_n);
		route_header.appendChild(rh_s);
		route_header.appendChild(rh_l);
		//身体部分
		var route_body=document.createElement("div");route_body.className="bus_route_body";
		br_div.appendChild(route_header);
		br_div.appendChild(route_body);
		
		/**生成详细内容列表**/
		var rb_start=document.createElement("div");rb_start.className="bus_route_start";	//起点
		var rbs_icon=document.createElement("span");rbs_icon.className="bus_route_start_icon";
		var rbs_text=document.createElement("span");rbs_text.innerHTML="<span class='bus_route_start_text_des'>起点</span>"+sp.name;
		rb_start.appendChild(rbs_icon);
		rb_start.appendChild(rbs_text);
		route_body.appendChild(rb_start);
		$(rb_start).hover(
			function(){$(this).addClass("bus_route_bus_bus_hover");},
			function(){$(this).removeClass("bus_route_bus_bus_hover");}
		);
		//<!--遍历换乘细节 segementList(DCI.Pojo.Bussegment)
		
		//绘制路线
//		var coords_list=bus.getCoordinateOfList();
//		var coord_str="";
//		for(var i =0;i<coords_list.length;i++){
//			var coord_object=coords_list[i];
//			var color=coord_object.isWalk?"#000":"#CB0804";
//			var line_style=coord_object.isWalk?"shortdot":"solid";
//			var opcity=coord_object.isWalk?0.7:0.8;
//			var coordinate=coord_object.coordinate;
//			coord_str+=","+coordinate;
//			var dpolyline=new DPolyline(coordinate,{color:color,weight:3,opacity:opcity,dashstyle:line_style});
//			map.addOverlay(dpolyline);
//		}
//		coord_str=coord_str.substr(1);
//		
//		
//		//缩放矩形
//		var c = DLonLatBounds.minBox(coord_str);
//		var level = map.getBoundsZoomLevel(c);
//		map.setCenter(c.getCenter(),level);
		var pre_last=void(0);
		var pre_pop=void(0);
//				
//		//显示起止点
//		var dicon_s=new DIcon(dll_s,DCI.extend(icon_config,{image:"images/main/nav_start.png"}));
//		map.addOverlay(dicon_s);
//		window.bus.current_dicon_s=dicon_s;
//		
//		
//		var dicon_e=new DIcon(dll_e,DCI.extend(icon_config,{image:"images/main/nav_end.png"}));
//		map.addOverlay(dicon_e);
//		window.bus.current_dicon_e=dicon_e;
		
		DCI.each(bus.segmentList,function(segment,i){	
			
			/**
			 * @see 针对这个方案的一些私有变量，作用域在这个路段内
			 */
			var isFirst=i==0;	//true 第一个路段
			var isLast=i==bus.segmentList.length-1;		//true 最后一个路段
			var hasWalk=segment.footLength>0;	//true 需要步行  false 不需要步行
			var pop_config={color:"green",titleType:"html",flash:true,height:85,width:250};//泡泡配置
			var icon_config={left:-10,top:-28,width:20,height:30};	//图标配置
	 		var polyline_config={color:"#000",weight:4,opacity:0.7,dashstyle:"solid"};//线段配置
			var lonlats=segment.getCoordinateListOfLonLats();	//整个路程经过的的点	
			if(!lonlats.length>0){
				//保证程序健壮性,如果返回false则继续逊换下一个，这个这个路段则不进行添加，且添加一个文本
				$(route_body).append($("<div>此路段出现异常。</div>"));
				return false;
			}
			var firstLonLat=lonlats[0];
			var lastLonLat=lonlats[lonlats.length-1];
			
			/**
			 * @see 生成html内容
			 */
			var walk_icon_class=isFirst?"bus_route_bus_walk_start":"bus_route_bus_walk_change";	//确定是换乘图标、或者是步行图标
			//步行距离详情
			var rb_walk=document.createElement("div");rb_walk.className="bus_route_bus_walk";
			rb_walk.innerHTML="<div class='"+walk_icon_class+"'></div><span class='bus_route_bus_walk_text'>步行"+segment.footLength+"米到"+segment.startName+"</span>";
			//公交换乘详情
			var rb_bus=document.createElement("div");rb_bus.className="bus_route_bus_bus";rb_bus.innerHTML="<div class='bus_route_bus_bus_icon'></div>";
			var rbb_seat=document.createElement("div");rbb_seat.className="bus_route_bus_bus_seat";
			var rbb_busname=document.createElement("span");rbb_busname.className="bus_route_bus_busName";rbb_busname.innerHTML=segment.busName;rbb_busname.title=segment.busName;
			var rbb_station_count=document.createElement("span");rbb_station_count.innerHTML="<span class='bus_route_bus_station_count'>间隔"+segment.passDepotCount+"站</span>";
			var rbb_start=document.createElement("div");rbb_start.className="bus_route_bus_station_start";rbb_start.innerHTML="<span class='bus_route_font_gray'>在</span>"+segment.startName+"<span  class='bus_route_font_gray'>上车</span>";
			var rbb_end=document.createElement("div");rbb_end.className="bus_route_bus_station_end";rbb_end.innerHTML="<span  class='bus_route_font_gray'>在</span>"+segment.endName+"<span  class='bus_route_font_gray'>下车</span>";
			var rbb_stations=$("<div class='rbb_stations'></div>");
			rbb_seat.appendChild(rbb_busname);		//公交车线路名
			rbb_seat.appendChild(rbb_station_count);	//乘坐的站数
			//站点列表生成
			var stationNames=segment.getPassStation();
			$.each(stationNames,function(i,station){
				//stationDOM 站点的html元素
				var sd=$("<div class='rrbs_station'>"+(i+1)+"、"+station+"</div>");
				rbb_stations.append(sd);				
			});
			//关闭站点列表图标
			var rbbs_close=$("<div class='rrbs_close' title='关闭'></div>");
			rbb_stations.append(rbbs_close);			
			rb_bus.appendChild(rbb_seat);			//乘坐公交车			
			rb_bus.appendChild(rbb_start);			//起点站名
			$(rb_bus).append(rbb_stations);			//站点列表
			rb_bus.appendChild(rbb_end);			//终点站名
			//添加到详情列表中
			route_body.appendChild(rb_walk);
			route_body.appendChild(rb_bus);			
			//显示途径站点 
			$(rbb_station_count).bind("click",function(event){
				if(stationNames.length>0){
					rbb_stations.addClass("rbb_stations_display");
				}		
				event.stopPropagation();		
			});
			$(rbb_station_count).hover(
				function(){$(this).addClass("bus_route_bus_station_count_hover");},
				function(){$(this).removeClass("bus_route_bus_station_count_hover");}
			);
			$(rb_bus).hover(
				function(){$(this).addClass("bus_route_bus_bus_hover");},
				function(){$(this).removeClass("bus_route_bus_bus_hover");}
			);
			$(rb_walk).hover(
				function(){$(this).addClass("bus_route_bus_bus_hover");},
				function(){$(this).removeClass("bus_route_bus_bus_hover");}
			);
			
			//关闭途径站点
			rbbs_close.bind("click",function(event){
				rbb_stations.removeClass("rbb_stations_display");
   				event.stopPropagation();		//组织冒泡
			});
			//查询公交车信息
			$(rbb_busname).hover(
				function(){$(this).addClass("bus_route_bus_busName_hover");},
				function(){$(this).removeClass("bus_route_bus_busName_hover");}
			);
			$(rbb_busname).bind("click",function(event){
				var key_name=busNames[i];
				window.open(params.line(key_name));
   				event.stopPropagation();
			});
			
			
			/**
			 * @deprecated 步行
			 * @see 生成步行 图标、气泡、线段
			 */
			 if(hasWalk){
			 	var walk_pop_config=$.extend({},pop_config,{});
			 	var walk_icon_config=$.extend({},icon_config,{left:-5,top:-5,width:10,height:10,image:"images/main/station.png"});
			 	var pre_class='wpcs_pre';
			 	var title_text="步行至"+segment.startName;
				var icon_lonlat=isFirst?new DLonLat(sp.x,sp.y):pre_last.clone();	//true：第一个路段的起点在POI的起点，false:上一次路段的最后一个点	
				var polyline_lonlats=icon_lonlat+","+firstLonLat;	//1.步行起点到乘坐公交的起点
				
				if(isFirst){
					//只有第一次时，泡泡的上一步才是灰色的
					pre_class+=" wpc_step_disabled";
					title_text="从起点"+sp.name+"出发";
					$.extend(walk_icon_config,{left:-10,top:-28,width:20,height:30,image:"images/main/nav_start.png"});
					//带图标的偏移y轴25个像素
					walk_pop_config.offsety=-25;
				}
				
				//生成图标
				var walk_icon=new DIcon(icon_lonlat,walk_icon_config);
				icons.push(walk_icon);
				//生成气泡
				//---泡泡标题
				var wp_title="<div class='bus_route_pp_title'><div class='bus_route_wp_title_icon'></div>"+title_text+"</div>";
//				walk_pop_config.title=wp_title;
				//---泡泡内容
				var wp_content=$("<div class='bus_route_pp_content'>" +
						"<div class='bus_route_pp_description'>" +
						"<div class='wpc_walk'>步行"+segment.footLength+"米</div>" +
						"<div class='wpc_bus'>到达<span class='wpcd_busName'>"+segment.busName+"</span>的<span class='wpcd_station'>"+segment.startName+"</span></div>" +
						"</div>" +
						"<div class='wpc_step'><a href='#' class='"+pre_class+"'><<上一步</a><a href='#' class='wpcs_zoom'>定位放大</a> <a href='#' class='wpcs_zoomout'>定位缩小</a> <a href='#' class='wpcs_next'>下一步>></a></div></div>");
				var walk_pop=new DPopup(icon_lonlat,wp_title,wp_content[0],walk_pop_config);
				pops.push(walk_pop);
				
				//生成线段
				var walk_polyline=new DPolyline(polyline_lonlats,polyline_config);
				polylines.push(walk_polyline);
								
				
				if(isFirst){
					$(rb_start).bind("click",popup);
				}
				//绑定hmlt点击
				var icon_el=walk_icon.getElement();
				$(icon_el).bind("click",popup);
				$(rb_walk).bind("click",popup);		
				//显示泡泡
				function popup(){
					//泡泡显隐控制
					if(pre_pop&&pre_pop!=walk_pop)
						pre_pop.hide();
					if(walk_pop.isShow)walk_pop.hide();
					else walk_pop.show();
					pre_pop=walk_pop;
				}
			 }
			
			
			/**
			 * @deprecated 公交
			 * @see 生成公交 图标、气泡、线段
			 */
			//生成图标
			var bus_icon_config=$.extend({},icon_config,{left:-5,top:-5,width:10,height:10,image:"images/main/station.png"});
			var bus_icon=new DIcon(firstLonLat,bus_icon_config);
			icons.push(bus_icon);
			
			//生成气泡
			var bp_title="<div class='bus_route_pp_title'><div class='bus_route_bp_title_icon'></div>乘坐"+busNames[i]+"</div>";
			var bp_content=$("<div class='bus_route_pp_content'>" +
					"<div class='bus_route_pp_description'>" +
					"<div class='bpc_line'><span>路线：</span><span>"+segment.busName+"</span></div>" +
					"<div class='bpc_start'><span>出发：</span><span>"+segment.startName+"</span></div>" +
					"<div class='bpc_end'><span>到达：</span><span>"+segment.endName+"</span></div>" +
					"</div>"+
					"<div class='wpc_step'><a href='#' class='wpcs_pre'><<上一步</a><a href='#' class='wpcs_zoom'>定位放大</a><a href='#' class='wpcs_zoomout'>定位缩小</a><a href='#' class='wpcs_next'>下一步>></a></div></div>");
			var bus_pop=new DPopup(firstLonLat,bp_title,bp_content[0],$.extend({},pop_config,{color:"green"}));
			pops.push(bus_pop);
			//生成线段
			var bus_polyline=new DPolyline(segment.coordinateList,$.extend({},polyline_config,{color:"#CB0804"}));
			polylines.push(bus_polyline);
			
			
			var bus_icon_el=bus_icon.getElement();
			$(bus_icon_el).bind("click",bus_popup);	
			$(rb_bus).bind("click",bus_popup);
			
		
			//显示泡泡
			function bus_popup(){
				//泡泡显隐控制
				if(pre_pop&&pre_pop!=bus_pop)
					pre_pop.hide();
				if(bus_pop.isShow)bus_pop.hide();
				else bus_pop.show();
				pre_pop=bus_pop;
			}
			
			/**
			 * @see 生成结束后，更新这个路段的最后一个点
			 * 		放在终点数据加载泡泡和HTML内容之前，因为终点要依据pre_last
			 */
			pre_last=lastLonLat;	
			
			/**
			 * @see 最后一个路段时的特殊操作
			 */
			 if(isLast){
			 	/**
			 	 * 生成HTML,终点的样式
			 	 */
				var rbe_walk=document.createElement("div");rbe_walk.className="bus_route_bus_end_walk";//到终点步行距离
				rbe_walk.innerHTML="<div class='bus_route_bus_walk_end'></div><span class='bus_route_bus_walk_text'>步行"+bus.footEndLength+"米到终点</span>";route_body.appendChild(rbe_walk);
				var rb_end=document.createElement("div");rb_end.className="bus_route_end";		//终点
				var rbe_icon=document.createElement("span");rbe_icon.className="bus_route_end_icon";
				var rbe_text=document.createElement("span");rbe_text.innerHTML="<span class='bus_route_end_text_des'>终点</span>"+ep.name;
				rb_end.appendChild(rbe_icon);
				rb_end.appendChild(rbe_text);
				route_body.appendChild(rb_end);
				$(rb_end).hover(
					function(){$(this).addClass("bus_route_bus_bus_hover");},
					function(){$(this).removeClass("bus_route_bus_bus_hover");}
				);
				$(rbe_walk).hover(
					function(){$(this).addClass("bus_route_bus_bus_hover");},
					function(){$(this).removeClass("bus_route_bus_bus_hover");}
				);
			 	
			 	/**
			 	 * 生成最终步行的线段、图标、气泡
			 	 */
			 	var last_walk_icon_lonlat=new DLonLat(ep.x,ep.y);	//1.终点位置，应该是POI点的位置，及用户选择的终点	
				var last_walk_polyline_lonlats=pre_last+","+last_walk_icon_lonlat;	//1.步行起点到乘坐公交的起点
				//生成图标
				var last_walk_icon=new DIcon(pre_last,$.extend({},icon_config,{left:-5,top:-5,width:10,height:10,image:"images/main/station.png"}));
				icons.push(last_walk_icon);
				//生成气泡
				//---泡泡标题
				var last_walk_wp_title="<div class='bus_route_pp_title'><div class='bus_route_wp_title_icon'></div>从"+segment.endName+"步行至终点</div>";
				//---泡泡内容
				var last_walk_wp_content=$("<div class='bus_route_pp_content'>" +
						"<div class='bus_route_pp_description'>" +
						"<div class='wpc_bus'>到达<span class='wpcd_busName'>"+segment.busName+"</span>的<span class='wpcd_station'>"+segment.endName+"</span>之后</div>" +
						"<div class='wpc_walk'>步行"+bus.footEndLength+"米到达终点</div>" +
						"</div>" +
						"<div class='wpc_step'><a href='#' class='wpcs_pre'><<上一步</a><a href='#' class='wpcs_zoom'>定位放大</a><a href='#' class='wpcs_zoomout'>定位缩小</a><a href='#' class='wpcs_next'>下一步>></a></div></div>");
				var last_walk_pop=new DPopup(pre_last,last_walk_wp_title,last_walk_wp_content[0],pop_config);
				pops.push(last_walk_pop);
				//生成线段
				var last_walk_polyline=new DPolyline(last_walk_polyline_lonlats,polyline_config);
				polylines.push(last_walk_polyline);
				
				//绑定泡泡显示
				var last_walk_icon_el=last_walk_icon.getElement();
				$(last_walk_icon_el).bind("click",last_walk_popup);	
				
				$(rbe_walk).bind("click",last_walk_popup);	
				//显示泡泡
				function last_walk_popup(){
					//泡泡显隐控制
					if(pre_pop&&pre_pop!=last_walk_pop)
						pre_pop.hide();
					if(last_walk_pop.isShow)last_walk_pop.hide();
					else last_walk_pop.show();
					pre_pop=last_walk_pop;
				}
				
			 	 
			 	 /**
			 	  * 生成终点的泡泡、图标
			 	  */
				//生成图标
				var last_icon=new DIcon(last_walk_icon_lonlat,$.extend({},icon_config,{image:"images/main/nav_end.png"}));
				icons.push(last_icon);
				//生成气泡
				//---泡泡标题
				var last_wp_title="<div class='bus_route_pp_title'><div class='bus_route_wp_title_icon'></div>抵达终点</div>";
				//---泡泡内容
				var last_wp_content=$("<div class='bus_route_pp_content'>" +
						"<div class='bus_route_pp_description'>" +
						"<div class='wpc_walk'>抵达终点<span>"+ep.name+"</span></div>" +
						"</div>" +
						"<div class='wpc_step'><a href='#' class='wpcs_pre'><<上一步</a><a href='#' class='wpcs_zoom'>定位放大</a><a href='#' class='wpcs_zoomout'>定位缩小</a><a href='#' class='wpcs_next wpc_step_disabled'>下一步>></a></div></div>");
				var last_pop=new DPopup(last_walk_icon_lonlat,last_wp_title,last_wp_content[0],$.extend({},pop_config,{offsety:-25}));
				pops.push(last_pop);
				//绑定图标点击事件
				var last_icon_el=last_icon.getElement();
				$(last_icon_el).bind("click",last_pop_popup);	
				$(rb_end).bind("click",last_pop_popup);
				//显示泡泡
				function last_pop_popup(){
					//泡泡显隐控制
					if(pre_pop&&pre_pop!=last_pop)
						pre_pop.hide();
					if(last_pop.isShow)last_pop.hide();
					else last_pop.show();
					pre_pop=last_pop;
				}
			 }
		})
		//遍历换乘细节--!>
		
		
		var isBind=false;
		
		/**
		 * 声明事件响应的方法
		 */
		function headerOver(){
			DCI.addClass(route_header,rh_class+"_hover");
		 } 
		function headerOut(){
			DCI.removeClass(route_header,rh_class+"_hover");
		 }
		function headerClick(){
			//清空地图
			map.clearOverlays();
			pre_current_class("current_route",route_body,"bus_route_body_display");
			var isopen=DCI.hasClass(route_body,"bus_route_body_display");
			if(isopen){				
				$.each(polylines,overlay);
				$.each(pops,overlay);
				$.each(icons,overlay);
				function overlay(i,oly){
					map.addOverlay(oly);
				}
				if(!isBind){
					isBind=true;
					//<!--遍历气泡集合Pops，绑定上下步骤，因为之前无法确定下一个和上一个气泡，所以只能到全部生成在进行绑定事件
					$.each(pops,function(i,pop){
						var pop_el=pop.getElement();
						var jel=$(pop_el);
						var pre=jel.find(".wpcs_pre");
						var next=jel.find(".wpcs_next");
						var zoom=jel.find(".wpcs_zoom");
						var zoomout=jel.find(".wpcs_zoomout");
						var level=0;		//定位到几级
						var levelout=6;
						zoom.bind("click",function(){
								map.setCenter(pop.getDLonLat(),level,true);
						})
						zoomout.bind("click",function(){
								if(map.getZoomLevel()>=levelout){
									return;
								}
								map.setCenter(pop.getDLonLat(),levelout,true);
						})
						if(i==0){
							next.bind("click",function(){
								pop.hide();
								pops[i+1].show();
								pre_pop=pops[i+1];
							});
						}else if(i==pops.length-1){
							pre.bind("click",function(){
								pop.hide();
								pops[i-1].show();
								pre_pop=pops[i-1];
							});
						}else{
							next.bind("click",function(){
								pop.hide();
								pops[i+1].show();
								pre_pop=pops[i+1];
							});
							pre.bind("click",function(){
								pop.hide();
								pops[i-1].show();
								pre_pop=pops[i-1];
							});
						}				
					});	
					//遍历泡泡集合结束-->
				}	
			}				
		}
		
		/**
		 * 绑定事件
		 */
		DCI.event.bindDom(route_header,"mouseover",headerOver);
		DCI.event.bindDom(route_header,"mouseout",headerOut);
		DCI.event.bindDom(route_header,"click",headerClick);
		
		
		//默认打开第一个方案
		if(number==0){
			DCI.event.fire(route_header,"click");
		}
	};
	
	/**
	 * @type 处理公交车数据
	 * @param {Array(DCI.Pojo.Bus)}bus 集合，存储了解析的BusRoute对象的集合
	 */
	function processBus(buses,data){
		//清空结果列表
		var rp=DCI.get("result_page");rp.style.display="none";
		var rl=DCI.get("result_list");rl.innerHTML = "";
		var sc=DCI.get("result_title");sc.innerHTML = "<div class='result_title_querytext'>查询结果</div>";
		
		//添加数量提示
		$(rl).append("<div class='result_list_bus_count'></div>");
		
		/**
		 * 
		 */
		var pre=new Array();		//保存上一个打开的公交方案
		
		//遍历公交乘车方案
		if(buses.length>0){
			DCI.each(buses,function(bus,i){
				/**
				 * 这里代表了每个方案似有的属性，每个循环互不相干
				 */	
				var loaded=false;	//是否加载过方案
				var isopen=false;	//代表表头是否被打开,默认是没打开的
				var titles=new Array();	//地图的标题DTitle
				var icons=new Array();	//地图的站点图标DIcon
				var pops=new Array();	//地图的泡泡Dpopup
				var stations=void(0);//站点的集合,DCI.Pojo.Station
				var query = new DCI.Service.Bus();	//公交车查询对象
				var thePolyline=void(0);
				var theBus=void(0);
				var pre_pop=void(0);
				var isAllDiaplay=false;		//全部显示
				
				/**
				 * 组织HTML,除去站点html的信息
				 */
				//生成头部
				var bh_className=i!=0?"bus_header":"bus_header_first";
				var bus_header = document.createElement("div");bus_header.className=bh_className;
				var bh_icon=document.createElement("span");bh_icon.className="bus_header_icon";
				var bh_busName=document.createElement("span");bh_busName.className="bus_header_busName";bh_busName.innerHTML=bus.name;
				var bh_length=document.createElement("span");bh_length.className="bus_header_length";bh_length.innerHTML="约"+Number(bus.length).toFixed(2)+"公里";
				bus_header.appendChild(bh_icon);
				bus_header.appendChild(bh_busName);
				bus_header.appendChild(bh_length);
				
				//生成详细信息
				var bus_body=document.createElement("div");bus_body.className="bus_body";
				var bb_time=document.createElement("div");bb_time.className="bus_body_time";bb_time.innerHTML="<span class='bus_body_title'>首末时间:</span><span>"+bus.getTime()+"</span>";
				var bb_compny=document.createElement("div");bb_compny.className="bus_body_compny";bb_compny.innerHTML="<span class='bus_body_title'>所属公司:</span><span class='bus_body_compny_name'>"+bus.company+"</span>";
				var bb_display=$("<div class='bus_body_stations'><input type='checkbox' class='bus_body_stations_fn'>显示所有站点名称</input></div>");
	//			var bbc_bug=document.createElement("span");bbc_bug.className="bus_body_compny_bug";bbc_bug.innerHTML="纠错";
				var bb_station=document.createElement("div");bb_station.className="bus_body_station";bb_station.innerHTML="<div class='loading'></div>";
	//			bb_compny.appendChild(bbc_bug);
				var bb_stations=document.createElement("div");
				bus_body.appendChild(bb_time);
				bus_body.appendChild(bb_compny);		
				$(bus_body).append(bb_display);
				bus_body.appendChild(bb_station);	
				
				//显示所有站点
				bb_display.find(".bus_body_stations_fn").bind("click",function(){
					if(loaded){
						isAllDiaplay=this.checked;
						$.each(titles,function(i,title){
							if(isAllDiaplay){
								title.show();
							}else{
								title.hide();							
							}
						})
					}
				});
				/**
				 * 公交方案方法定义区
				 */
				//头部划过事件
				function headerOver(){
					DCI.addClass(bus_header,bh_className+"_hover");
				}
				//头部划出事件
				function headerOut(){
					DCI.removeClass(bus_header,bh_className+"_hover");
				}
				//公交车头部点击事件
				function headerClick(){
					/**
					 * 
					 */
					//清除地图覆盖物
					map.clearOverlays();	
					//样式控制--控制查询结果框内的详细信息显示和图标切换
					pre_current_class("current_bus",bus_body,"bus_body_display");	//html详情
					pre_current_class("current_bus_icon",bh_icon,"bus_header_icon_seleted");	//图标切换
					
					//标示是否是需要打开
					var isOpen=DCI.hasClass(bus_body,"bus_body_display");
					
					/**
					 * 首先检测是否进行过加载，如果没有进行查询
					 */
					if(!loaded){
						query.getById({ids:bus.line_id},
							function(id_bus,data){						
									stations=id_bus.getStation(["NAME","XY_COORDS","STATION_NUM"]);//获取站点信息		
									theBus=id_bus;	//公交对象
									loaded=true;//表示已经加载过
									bb_station.innerHTML="";//清空HTML
									//绘制公交路线	
									thePolyline=new DPolyline(id_bus.xys,{color:"#205AA7",weight:4,opacity:0.5});
									map.addOverlay(thePolyline);								
									/**
									 * 遍历站点添加HTML和图标、标题、泡泡
									 */
									 //<!---遍历站点开始
									DCI.each(stations,function(station,i){
										/**
										 * 针对每个站点的作用域私有变量
										 */
										 var loaded=false;
										
										//创建html对象
										var bbs_dd=document.createElement("dd");bbs_dd.className="bus_body_station_dd";
										var bbsdd_num=document.createElement("span");bbsdd_num.className="bus_body_station_num";bbsdd_num.innerHTML=station.STATION_NUM+".";
										var bbsdd_name=document.createElement("span");bbsdd_name.className="bus_body_station_name";bbsdd_name.innerHTML=station.NAME;
										bbs_dd.appendChild(bbsdd_num);
										bbs_dd.appendChild(bbsdd_name);
										bb_station.appendChild(bbs_dd);									
										//根据站点的序列规定其图标的样式
										var icon_config={left:-10,top:-28,width:20,height:30};	//图标配置
										var title_config={style:{zIndex:2},show:false,fontPosition:8,offsety:-31,fontColor:"red",borderColor:"red"};//标题配置
										var pop_config={color:"red",titleType:"html",flash:true,height:100,width:270};//泡泡配置
										if(i==0){	//起点站点
											$.extend(icon_config,{style:{zIndex:3},image:"images/main/nav_start.png"});	
											$.extend(pop_config,{offsety:-28});
										}else if(i==stations.length-1){//终点站点
											$.extend(icon_config,{image:"images/main/nav_end.png"});	
											$.extend(pop_config,{offsety:-28});	
										}else{	//普通站点
											$.extend(icon_config,{image:"images/main/station.png",left:-5,top:-5,width:10,height:10});
											$.extend(title_config,{offsety:-5});		
										}
										//叠加图标（站点图标）
										var xys=station.XY_COORDS.replace(";",",");	
										var dicon_e=new DIcon(new DLonLat(xys),icon_config);
										map.addOverlay(dicon_e);
										icons.push(dicon_e);
										//叠加标题(站点名称)
										var dtitle_e=new DTitle(new DLonLat(xys),station.STATION_NUM+"、"+station.NAME,title_config);
										map.addOverlay(dtitle_e);dtitle_e.hide();
										titles.push(dtitle_e);
										//叠加泡泡(站点信息)
										//----标题
										var pp_title="<div class='bus_pp_title_name'>"+station.NAME+"</div>";
	//									pop_config.title=pp_title;	//设置标题
										//----内容
										var pp_content=$("<div class='bus_pp_content'></div>");
										var bpc_num=$("<div class='bpc_num'><span class='bus_pop_content_title'>站点序号：</span><span class='bpc_num_num'>第"+station.STATION_NUM+"站</span></div>");
										var bpc_buses=$("<div class='bpc_buses'><div class='bus_pop_content_title'>途径此站：</div><div class='bpc_buses_content'><div class='loading'></div></div></div>");
										var bpc_fun=$("<div class='bpc_fn'><span class='bus_pop_content_title'>周边搜索：</span><input type='text' class='npcf_keyword'/><span class='npcf_btn'>查询</span></div>");
										pp_content.append(bpc_num);
										pp_content.append(bpc_buses);
										pp_content.append(bpc_fun);
										//----泡泡本身
										var dp=new DPopup(new DLonLat(xys),pp_title,pp_content[0],pop_config);
										map.addOverlay(dp);
										pops.push(dp);
										
										//显示标题
										function showTitle(){
											if(!dp.isShow){
												dtitle_e.show();
											}								
										}
										//隐藏标题
										function hideTitle(){
											if(!isAllDiaplay){
												dtitle_e.hide();	
											}							
										}
										//显示泡泡
										function popup(){
											//泡泡显隐控制
											if(pre_pop&&pre_pop!=dp)
												pre_pop.hide();
											if(dp.isShow)dp.hide();
											else dp.show();
											pre_pop=dp;
											hideTitle();
											//第一次加载，之后不进行加载
											if(!loaded){												
												  	query.getByStation({
												  			stationName:station.NAME,
												  			number:1000
												  		},function(buses,data){
												  			//加载
												  			loaded=true;
												  			//获取经过车辆的dom元素,bus_content_dom
												  			var bcd=bpc_buses.find(".bpc_buses_content");
												  			bcd.empty()
												  			if(buses.length>0){
												  				//去除重复
																var newArray=new Array();
																DCI.each(buses,function(obj,i){
																	var key_name=obj.key_name;
																	var has=true;
																	for(var i=0;i<newArray.length;i++){
																		if(newArray[i].key_name==key_name){
																			has=false;
																			break;
																		}																	
																	}
																	if(has)
																		newArray.push(obj);
																});		
												  				
													  			//遍历公交车结果集
													  			$.each(newArray,function(i,bus){
													  				var name=bus.name;
													  				var se_name=name.substring(name.indexOf('(')+1,name.indexOf(')'));
													  				var bus_span=$("<span class='bbc_bus' title='"+se_name+"'>"+bus.key_name+"</span>");
													  				bcd.append(bus_span);
													  				//划过效果
													  				bus_span.hover(
																		function(){//划入
																			$(this).addClass("bbc_bus_hover")
																		},
																		function(){//划出
																			$(this).removeClass("bbc_bus_hover")
																		}
																	);
																	bus_span.bind("click",function(){
																		window.open(params.line(bus.key_name));
																	});
													  			});
												  			}else{
												  				bcd.append($("<span class='bbc_bus_null'>暂无数据</span>"));
												  			}
												  		},
												  	["name","key_name"]);
											}							
										}
										
										//地图站点划过			
										DCI.event.bindDom(dicon_e.getElement(),"mouseover",showTitle);	
										DCI.event.bindDom(dicon_e.getElement(),"mouseout",hideTitle);
										DCI.event.bindDom(dicon_e.getElement(),"click",popup);		
										//搜索结果站点划过
										DCI.event.bindDom(bbs_dd,"mouseover",showTitle);	
										DCI.event.bindDom(bbs_dd,"mouseout",hideTitle);
										DCI.event.bindDom(bbs_dd,"click",popup);
										//周边搜索绑定事件
										bpc_fun.find(".npcf_btn").bind("click",function(){
											var keyword=bpc_fun.find(".npcf_keyword").attr("value");
											if(!keyword){
												return;
											}
											poi.nearByPoint(xys,keyword,"1000");
										});
									});
									
									//遍历站点结束---!>	
									centerByBusLine(id_bus.xys);	//最小矩形	
								}//回调方法结束---!>
				  		,["xys","stationdes"]);
					}else{					
						if(isOpen){
							centerByBusLine(theBus.xys);	//最小矩形
							//叠加线路
							map.addOverlay(thePolyline);
							//叠加站点、标题、气泡
							DCI.each(pops,overlay);
							DCI.each(titles,overlay);
							DCI.each(icons,overlay);						
							function overlay(ovl){
								map.addOverlay(ovl);
								if(ovl instanceof DTitle){
									ovl.hide();
								}			
							}
						}
					}
					
					function centerByBusLine(linstrs){
						var c = DLonLatBounds.minBox(linstrs);
						var level = map.getBoundsZoomLevel(c);
						map.setCenter(c.getCenter(),level);	
					}
				}
				
				//事件绑定
				DCI.event.bindDom(bus_header,"mouseover",headerOver);
				DCI.event.bindDom(bus_header,"mouseout",headerOut);
				DCI.event.bindDom(bus_header,"click",headerClick);
	
				//添加到结果列表
				rl.appendChild(bus_header);
				rl.appendChild(bus_body);
				
				//默认打开第一个
				if(i==0){
					DCI.event.fire(bus_header,"click");
				}
				
			});
		}else{
			var no_result=$("<div id='poi_null_result'><div class='nearNowfounddiv'>未找到相关搜索结果！</div><div class='poi_null_descriptioin'>" +
			"<div class='pnd_icon'></div><div><b>建议:</b></br>1．请确保所有字词拼写正确。</br>2．请确保输入线路或站点正确。</br>3．尝试更宽泛的关键字。" +
			"</div><div class='pnd_keywords'></div></div></div>");
			$(rl).append(no_result);
		}
	}
	
	
	/**
	 * @type 私有方法,注意此方法不能非常灵活支持显示和隐藏，如果使用请慎重。
	 * @param {string} pre 之前正在显示的DOM元素(注，这里是通过字符串索引的方式寻找到window.bus当中存储的DOM对象的方式，熟悉JS脚本的人应该很清楚这样的试用)，
	 * 						并且在这次将设置nonen_className样式表给与DOM元素。如果样式表包含了display：none，则pre将隐藏。
	 * 		  {DOM} current 将要进行显示的的DOM元素.
	 * 		  {string} none_className 将要设置设置给pre的隐藏样式，并且从current元素中移除这一隐藏样式。
	 * @author zrj
	 */
	function pre_current_class(pre,current,none_className){
		var currentOpen=true;
		if(window.bus[pre]!=current){	
			if(window.bus[pre]){
				DCI.removeClass(window.bus[pre],none_className);
			}
			DCI.addClass(current,none_className);
			window.bus[pre]=current;
		}else{	
			var has=DCI.hasClass(current,none_className);
			if(has){
				currentOpen=false;
				DCI.removeClass(window.bus[pre],none_className);
			}else{
				DCI.addClass(window.bus[pre],none_className);	
				window.bus[pre]=current;					
			}
		}
		
		return currentOpen;
	}
};
